<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>140584</bug_id>
          
          <creation_ts>2015-01-17 16:07:24 -0800</creation_ts>
          <short_desc>Add initial experimental user content filtering API</short_desc>
          <delta_ts>2015-01-18 13:54:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>japhet</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1062137</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-01-17 16:07:24 -0800</bug_when>
    <thetext>Add initial experimental user content filtering API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062138</commentid>
    <comment_count>1</comment_count>
      <attachid>244844</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-01-17 16:20:23 -0800</bug_when>
    <thetext>Created attachment 244844
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062140</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-01-17 16:25:21 -0800</bug_when>
    <thetext>The one big thing I think this API is missing, and that will need to be addressed, is dealing with a compilation phase of the rule list. This is largely due to the fact that I am not sure what we want our model to be. Should all loads be deferred when we are compiling the rule list? Should the client of the API have to explicitly ask for the rule list to be compiled and then pass the compiled list to WKUserContentController?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062170</commentid>
    <comment_count>3</comment_count>
      <attachid>244852</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-01-17 21:11:05 -0800</bug_when>
    <thetext>Created attachment 244852
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062217</commentid>
    <comment_count>4</comment_count>
      <attachid>244852</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-01-18 12:44:59 -0800</bug_when>
    <thetext>Comment on attachment 244852
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=244852&amp;action=review

Thanks a lot for building the APIs!

General comments:
-IMHO, rulelist is a poor name for the JSON string.
-You really like making interfaces :)

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKUserContentControllerPrivate.h:35
&gt; +- (void)_removeAllUserContentFilters;

I am curious why you added remove-all but not remove-one.

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKUserContentFilter.h:31
&gt; +@interface _WKUserContentFilter : NSObject

I am not a fan of the name ContentFilter. Hopefully we will do more than filtering content :)

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKUserContentFilter.h:33
&gt; +- (instancetype)_initWithName:(NSString *)name ruleList:(NSString *)ruleList;

Isn&apos;t it a little weird to call the argument ruleList since it is a string?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062221</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-01-18 13:42:21 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 244852 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=244852&amp;action=review
&gt; 
&gt; Thanks a lot for building the APIs!
&gt; 
&gt; General comments:
&gt; -IMHO, rulelist is a poor name for the JSON string.

I&apos;ll use serializedRules as you did.

&gt; -You really like making interfaces :)

:)

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKUserContentControllerPrivate.h:35
&gt; &gt; +- (void)_removeAllUserContentFilters;
&gt; 
&gt; I am curious why you added remove-all but not remove-one.

Just to match UserScripts, and no other good reason.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/_WKUserContentFilter.h:31
&gt; &gt; +@interface _WKUserContentFilter : NSObject
&gt; 
&gt; I am not a fan of the name ContentFilter. Hopefully we will do more than
&gt; filtering content :)

Fair enough.  I thought ContentExtension was too broad :). We will have to find something in the middle.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/_WKUserContentFilter.h:33
&gt; &gt; +- (instancetype)_initWithName:(NSString *)name ruleList:(NSString *)ruleList;
&gt; 
&gt; Isn&apos;t it a little weird to call the argument ruleList since it is a string?

I&apos;ll change it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062222</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-01-18 13:54:08 -0800</bug_when>
    <thetext>Committed r178634: &lt;http://trac.webkit.org/changeset/178634&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244844</attachid>
            <date>2015-01-17 16:20:23 -0800</date>
            <delta_ts>2015-01-17 21:11:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140584-20150117162030.patch</filename>
            <type>text/plain</type>
            <size>74632</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3ODYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE1LTAxLTE3ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGluaXRpYWwgZXhwZXJpbWVudGFs
IHVzZXIgY29udGVudCBmaWx0ZXJpbmcgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDA1ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgY29udGVudCBleHRlbnNpb25zIHRvIGJlIG1hbmFn
ZWQgdGhyb3VnaCB0aGUgVXNlckNvbnRlbnRDb250cm9sbGVyLgorCisgICAgICAgICogV2ViQ29y
ZS5leHAuaW46CisgICAgICAgIFVwZGF0ZSBleHBvcnRzLgorCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBVcGRhdGUgZm9yIHJlbW92ZWQgZmls
ZXMuCisKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRl
bnNpb25zQmFja2VuZDo6cmVtb3ZlQWxsUnVsZUxpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnNoYXJlZEluc3RhbmNl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQuaDoKKyAgICAgICAgUmVtb3ZlIGNvbmNlcHQgb2YgYSBzaGFyZWQgaW5zdGFuY2Ug
YW5kIGFkZCBhIHJlbW92ZUFsbFJ1bGVMaXN0cygpIGZ1bmN0aW9uLgorICAgICAgICAKKyAgICAg
ICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0ludGVyZmFjZS5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNJbnRl
cmZhY2UuaDogUmVtb3ZlZC4KKyAgICAgICAgU2luY2UgdGhlcmUgaXMgbm8gc2hhcmVkIGluc3Rh
bmNlIGFueW1vcmUsIGNoZWNraW5nIGlmIGEgVVJMIHNob3VsZCBiZSBibG9ja2VkCisgICAgICAg
IG5vdyBoYXMgdG8gZ28gZGlyZWN0bHkgdG8gdGhlIGJhY2tlbmQuCisgICAgICAgIAorICAgICAg
ICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6RXh0ZW5zaW9uc01hbmFnZXI6OmNyZWF0
ZVJ1bGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpFeHRlbnNp
b25zTWFuYWdlcjo6bG9hZEV4dGVuc2lvbik6IERlbGV0ZWQuCisgICAgICAgICogY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNNYW5hZ2VyLmg6CisgICAgICAgIFVwZGF0ZSBpbnRl
cmZhY2UgdG8gYWNjb21tb2RhdGUgdGhlIGxhY2sgb2YgYSBzaGFyZWQgaW5zdGFuY2UuIE5vdywg
YWxsIHRoaXMKKyAgICAgICAgZmlsZSBkb2VzIGlzIHRha2UgYSBzZXJpYWxpemVkIHJ1bGUgbGlz
dCBhbmQgb3V0cHV0cyB0aGUgVmVjdG9yIG9mIENvbnRlbnRFeHRlbnNpb25SdWxlcworCisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgorICAgICAgICBD
aGVjayB3aXRoIHRoZSBVc2VyQ29udGVudENvbnRyb2xsZXIgdG8gc2VlIGlmIHRoZSBVUkwgc2hv
dWxkIGJlIGJsb2NrZWQuCisKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJDb250
ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVt
b3ZlQWxsVXNlckNvbnRlbnRGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJDb250ZW50
Q29udHJvbGxlcjo6Y29udGVudEZpbHRlckJsb2Nrc1VSTCk6CisgICAgICAgICogcGFnZS9Vc2Vy
Q29udGVudENvbnRyb2xsZXIuaDoKKyAgICAgICAgQWRkIHNpbmdsZSBwb2ludCBvZiBpbnRlcmFj
dGlvbiBmb3IgYm90aCB0aGUgV2ViS2l0IGxldmVsIHRvIGFkZCBhbmQgcmVtb3ZlCisgICAgICAg
IGNvbnRlbnQgZmlsdGVycyBhbmQgV2ViQ29yZSB0byBjaGVjayB0byBzZWUgaWYgVVJMcyBzaG91
bGQgYmUgYmxvY2tlZC4KKwogMjAxNS0wMS0xNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4Zmll
bGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtTVkcgLT4gT1RGIENvbnZlcnRlcl0gQ3Jhc2hlcyB3
aGVuIFNWRyBmb250IGlzIGludmFsaWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lv
biAxNzg2MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5
KQpAQCAtMzAxMSw3ICszMDExLDggQEAgX19aTjdXZWJDb3JlMzdzeW50aGVzaXplUmVkaXJlY3RS
ZXNwb25zZQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotX19aTjdX
ZWJDb3JlMTdDb250ZW50RXh0ZW5zaW9uczE3RXh0ZW5zaW9uc01hbmFnZXIxM2xvYWRFeHRlbnNp
b25FUktOM1dURjZTdHJpbmdFUzVfCitfX1pON1dlYkNvcmUyMVVzZXJDb250ZW50Q29udHJvbGxl
cjIwYWRkVXNlckNvbnRlbnRGaWx0ZXJFUktOM1dURjZTdHJpbmdFUzRfCitfX1pON1dlYkNvcmUy
MVVzZXJDb250ZW50Q29udHJvbGxlcjI3cmVtb3ZlQWxsVXNlckNvbnRlbnRGaWx0ZXJzRXYKICNl
bmRpZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTc4
NjE3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDQ1LDggKzEwNDUsNiBAQAogCQkyNkMxN0EzRTE0OTFEMkQ0
MDBEMTJCQTIgLyogRmlsZVN5c3RlbUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMjZDMTdBM0MxNDkxRDJENDAwRDEyQkEyIC8qIEZpbGVTeXN0ZW1J
T1MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQky
NkMxN0EzRjE0OTFEMkQ0MDBEMTJCQTIgLyogRmlsZVN5c3RlbUlPUy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2QzE3QTNEMTQ5MUQyRDQwMEQxMkJB
MiAvKiBGaWxlU3lzdGVtSU9TLm1tICovOyB9OwogCQkyNkU5OEExMDEzMEE5RkNBMDA4RUI3QjIg
LyogVGV4dENvZGVjQVNDSUlGYXN0UGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMjZFOThBMEYxMzBBOUZDQTAwOEVCN0IyIC8qIFRleHRDb2RlY0FT
Q0lJRmFzdFBhdGguaCAqLzsgfTsKLQkJMjZGMEM4OTIxQTJENzlDQjAwMjc5NEY4IC8qIENvbnRl
bnRFeHRlbnNpb25zSW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyNkYwQzg5MTFBMkQ3OUNCMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lv
bnNJbnRlcmZhY2UuaCAqLzsgfTsKLQkJMjZGMEM4OTQxQTJEN0E3NjAwMjc5NEY4IC8qIENvbnRl
bnRFeHRlbnNpb25zSW50ZXJmYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDI2RjBDODkzMUEyRDdBNzYwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5z
aW9uc0ludGVyZmFjZS5jcHAgKi87IH07CiAJCTI2RjBDODk3MUEyRTcyNEIwMDI3OTRGOCAvKiBD
b250ZW50RXh0ZW5zaW9uc01hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMjZGMEM4OTUxQTJFNzI0QjAwMjc5NEY4IC8qIENvbnRlbnRFeHRl
bnNpb25zTWFuYWdlci5jcHAgKi87IH07CiAJCTI2RjBDODk4MUEyRTcyNEIwMDI3OTRGOCAvKiBD
b250ZW50RXh0ZW5zaW9uc01hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDI2RjBDODk2MUEyRTcyNEIwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5z
aW9uc01hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkyNkYwQzg5QjFBMkVDMTEwMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lvblJ1bGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGMEM4
OTkxQTJFQzExMDAwMjc5NEY4IC8qIENvbnRlbnRFeHRlbnNpb25SdWxlLmNwcCAqLzsgfTsKQEAg
LTgwNDksOCArODA0Nyw2IEBACiAJCTI2QzE3QTNDMTQ5MUQyRDQwMEQxMkJBMiAvKiBGaWxlU3lz
dGVtSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbGVTeXN0ZW1JT1Mu
aDsgcGF0aCA9IGlvcy9GaWxlU3lzdGVtSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTI2QzE3QTNEMTQ5MUQyRDQwMEQxMkJBMiAvKiBGaWxlU3lzdGVtSU9TLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRmlsZVN5c3RlbUlPUy5tbTsgcGF0aCA9
IGlvcy9GaWxlU3lzdGVtSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNkU5
OEEwRjEzMEE5RkNBMDA4RUI3QjIgLyogVGV4dENvZGVjQVNDSUlGYXN0UGF0aC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0Q29kZWNBU0NJSUZhc3RQYXRoLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTI2RjBDODkxMUEyRDc5Q0IwMDI3OTRGOCAvKiBDb250
ZW50RXh0ZW5zaW9uc0ludGVyZmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb250ZW50RXh0ZW5zaW9uc0ludGVyZmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkyNkYwQzg5MzFBMkQ3QTc2MDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lvbnNJbnRlcmZh
Y2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVudEV4dGVu
c2lvbnNJbnRlcmZhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNkYwQzg5
NTFBMkU3MjRCMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lvbnNNYW5hZ2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb25zTWFuYWdlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2RjBDODk2MUEyRTcyNEIwMDI3OTRG
OCAvKiBDb250ZW50RXh0ZW5zaW9uc01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29udGVudEV4dGVuc2lvbnNNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTI2RjBDODk5MUEyRUMxMTAwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uUnVs
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50RXh0ZW5z
aW9uUnVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NzIwLDggKzk3MTYs
OCBAQAogCQk4MzlBQUZFQTFBMEMwQzhEMDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTFdCUkVsZW1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzlBQUZFQjFBMEMwQzhEMDA2MDVGOTkgLyog
SFRNTFdCUkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTFdC
UkVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCOTY4NzkxOUY4QUI4
MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZlcnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJODNDMDVBNTgxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9y
dGhhbmRGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IG5hbWUgPSBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmNwcDsgcGF0
aCA9IFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk4M0MwNUE1OTFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZEZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IG5hbWUgPSBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmg7IHBhdGgg
PSBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTgzQzA1QTU4MUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRo
YW5kRnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0
eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk4M0MwNUE1OTFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0eVNob3J0aGFu
ZEZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZVByb3Bl
cnR5U2hvcnRoYW5kRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgz
QzFENDEzMTc4RDVBQjQwMDE0MUU2OCAvKiBTVkdQYXRoU2VnQXJjQWJzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1BhdGhTZWdBcmNBYnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODNDMUQ0MTQxNzhENUFCNDAwMTQxRTY4IC8qIFNWR1BhdGhTZWdBcmNS
ZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUGF0aFNlZ0FyY1JlbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0MxRDQxNTE3OEQ1QUI0MDAxNDFFNjgg
LyogU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNTMyOCw4ICsxNTMyNCw2IEBACiAJCQkJMjZGMEM4OUQxQTJFQzNCRTAwMjc5
NEY4IC8qIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAgKi8sCiAJCQkJMjZGMEM4OUUxQTJF
QzNCRTAwMjc5NEY4IC8qIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oICovLAogCQkJCTI2MjM5
MTM1MUE2NDhDRUUwMDcyNTFBMyAvKiBDb250ZW50RXh0ZW5zaW9uc0RlYnVnZ2luZy5oICovLAot
CQkJCTI2RjBDODkzMUEyRDdBNzYwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uc0ludGVyZmFj
ZS5jcHAgKi8sCi0JCQkJMjZGMEM4OTExQTJENzlDQjAwMjc5NEY4IC8qIENvbnRlbnRFeHRlbnNp
b25zSW50ZXJmYWNlLmggKi8sCiAJCQkJMjZGMEM4OTUxQTJFNzI0QjAwMjc5NEY4IC8qIENvbnRl
bnRFeHRlbnNpb25zTWFuYWdlci5jcHAgKi8sCiAJCQkJMjZGMEM4OTYxQTJFNzI0QjAwMjc5NEY4
IC8qIENvbnRlbnRFeHRlbnNpb25zTWFuYWdlci5oICovLAogCQkJCTI2NzcyNUY2MUE1QjNBRDkw
MDNDMjRERCAvKiBERkEuY3BwICovLApAQCAtMjYyODMsNyArMjYyNzcsNiBAQAogCQkJCTg0MTlE
MkFEMTIwRDkyRkMwMDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODQ3NkM5RUMxMURGNkEyOTAwNTU1QjAyIC8qIFNWR1BhdGhDb25zdW1lci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNzE1MzdBMDExNDZCRDlENzAwOEJENjE1IC8qIFNWR1BhdGhE
YXRhLmggaW4gSGVhZGVycyAqLywKLQkJCQkyNkYwQzg5MjFBMkQ3OUNCMDAyNzk0RjggLyogQ29u
dGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTU5MEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3
NkM5RjAxMURGNkE1ODAwNTU1QjAyIC8qIFNWR1BhdGhQYXJzZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyMjI3QTVCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoU2VnLmggaW4gSGVhZGVycyAq
LywKQEAgLTI3NDcxLDcgKzI3NDY0LDYgQEAKIAkJCQk5MzMwOURERTA5OUU2NDkyMDA1NkU1ODEg
LyogRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMw
OURFMDA5OUU2NDkyMDA1NkU1ODEgLyogRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBN0M5QUJGODEzNTdBM0JGMDBGNTUwM0YgLyogRGV0YWlsc01hcmtlckNv
bnRyb2wuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMjZGMEM4OTQxQTJEN0E3NjAwMjc5NEY4IC8q
IENvbnRlbnRFeHRlbnNpb25zSW50ZXJmYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNDQzJC
NTE1MTVGNjEzMDYwMDQ4Q0RENiAvKiBEZXZpY2VDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTMxRUFGOTdGMTIxNDM1QTQwMEU3QzFCRiAvKiBEZXZpY2VNb3Rpb25DbGllbnRJT1Mu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkzMUZCMUE1ODEyMEE1RDA2MDBEQzAyQTAgLyogRGV2aWNl
TW90aW9uQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNC
YWNrZW5kLmNwcAkocmV2aXNpb24gMTc4NjE3KQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDIsMTIgKzQyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgQ29udGVudEV4
dGVuc2lvbnMgewogCi1Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQmIENvbnRlbnRFeHRlbnNpb25z
QmFja2VuZDo6c2hhcmVkSW5zdGFuY2UoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxD
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ+IGluc3RhbmNlOwotICAgIHJldHVybiBpbnN0YW5jZTsK
LX0KLQogdm9pZCBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnNldFJ1bGVMaXN0KGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllciwgY29uc3QgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiYgcnVs
ZUxpc3QpCiB7CiAgICAgQVNTRVJUKCFpZGVudGlmaWVyLmlzRW1wdHkoKSk7CkBAIC0xMTIsNiAr
MTA2LDExIEBAIHZvaWQgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpyZW1vdmVSdWwKICAgICBt
X3J1bGVMaXN0cy5yZW1vdmUoaWRlbnRpZmllcik7CiB9CiAKK3ZvaWQgQ29udGVudEV4dGVuc2lv
bnNCYWNrZW5kOjpyZW1vdmVBbGxSdWxlTGlzdHMoKQoreworICAgIG1fcnVsZUxpc3RzLmNsZWFy
KCk7Cit9CisKIGJvb2wgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpzaG91bGRCbG9ja1VSTChj
b25zdCBVUkwmIHVybCkKIHsKICAgICBjb25zdCBTdHJpbmcmIHVybFN0cmluZyA9IHVybC5zdHJp
bmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25zQmFja2VuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oCShyZXZpc2lvbiAxNzg2MTcpCisrKyBT
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTUgKzQ3LDEzIEBAIG5hbWVzcGFjZSBDb250ZW50RXh0
ZW5zaW9ucyB7CiAvLyAyKSBJdCBwcm92aWRlcyBBUElzIGZvciB0aGUgV2ViQ29yZSBpbnRlcmZh
Y2VzIHRvIHVzZSB0aG9zZSBydWxlcyBlZmZpY2llbnRseS4KIGNsYXNzIENvbnRlbnRFeHRlbnNp
b25zQmFja2VuZCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIENvbnRlbnRFeHRlbnNpb25zQmFja2Vu
ZCYgc2hhcmVkSW5zdGFuY2UoKTsKLQogICAgIC8vIC0gUnVsZSBtYW5hZ2VtZW50IGludGVyZmFj
ZS4gVGhpcyBjYW4gYmUgdXNlZCBieSB1cHBlciBsYXllci4KIAogICAgIC8vIFNldCBhIGxpc3Qg
b2YgcnVsZXMgZm9yIGEgZ2l2ZW4gbmFtZS4gSWYgdGhlcmUgd2VyZSBleGlzdGluZyBydWxlcyBm
b3IgdGhlIG5hbWUsIHRoZXkgYXJlIG92ZXJyaWRlbi4KICAgICAvLyBUaGUgaWRlbnRpZmllciBj
YW5ub3QgYmUgZW1wdHkuCiAgICAgdm9pZCBzZXRSdWxlTGlzdChjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIGNvbnN0IFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUnVsZT4mKTsKLQogICAgIHZvaWQg
cmVtb3ZlUnVsZUxpc3QoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbW92
ZUFsbFJ1bGVMaXN0cygpOwogCiAgICAgLy8gLSBJbnRlcm5hbCBXZWJDb3JlIEludGVyZmFjZS4K
ICAgICBib29sIHNob3VsZEJsb2NrVVJMKGNvbnN0IFVSTCYpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25zSW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMTc4NjE3KQorKysgU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiQ29udGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuaCIKLQotI2lmIEVOQUJMRShDT05U
RU5UX0VYVEVOU0lPTlMpCi0KLSNpbmNsdWRlICJDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKLQot
Ym9vbCBzaG91bGRCbG9ja1VSTChjb25zdCBVUkwmIHVybCkKLXsKLSAgICByZXR1cm4gQ29udGVu
dEV4dGVuc2lvbnNCYWNrZW5kOjpzaGFyZWRJbnN0YW5jZSgpLnNob3VsZEJsb2NrVVJMKHVybCk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpJbmRleDogU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNJbnRlcmZhY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uc0ludGVyZmFjZS5oCShyZXZpc2lvbiAxNzg2MTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0ludGVyZmFjZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENvbnRl
bnRFeHRlbnNpb25zSW50ZXJmYWNlX2gKLSNkZWZpbmUgQ29udGVudEV4dGVuc2lvbnNJbnRlcmZh
Y2VfaAotCi0jaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBVUkw7Ci0KLS8vIFRoaXMgZGVmaW5lcyB0aGUgaW50ZXJmYWNlIGJ5IHdo
aWNoIFdlYkNvcmUgaW50ZXJhY3Qgd2l0aCBDb250ZW50IEV4dGVuc2lvbnMuCi1uYW1lc3BhY2Ug
Q29udGVudEV4dGVuc2lvbnMgewotYm9vbCBzaG91bGRCbG9ja1VSTChjb25zdCBVUkwmKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRVhU
RU5TSU9OUykKLQotI2VuZGlmIC8vIENvbnRlbnRFeHRlbnNpb25zSW50ZXJmYWNlX2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zTWFuYWdl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbnNNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTc4NjE3KQorKysgU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNNYW5hZ2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTU4LDcgKzE1OCw3IEBAIHN0YXRpYyBWZWN0b3I8Q29udGVudEV4dGVu
c2lvblJ1bGU+IGxvYWQKICAgICByZXR1cm4gVmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPigp
OwogfQogCi12b2lkIGxvYWRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHJ1bGVzKQorVmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiBjcmVhdGVSdWxl
TGlzdChjb25zdCBTdHJpbmcmIHJ1bGVzKQogewogI2lmIENPTlRFTlRfRVhURU5TSU9OU19QRVJG
T1JNQU5DRV9SRVBPUlRJTkcKICAgICBkb3VibGUgbG9hZEV4dGVuc2lvblN0YXJ0VGltZSA9IG1v
bm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwpAQCAtMTczLDE3ICsxNzMsMTUgQEAgdm9pZCBs
b2FkRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgaWRlbnRpZgogCiAgICAgdm0uY2xlYXIoKTsKIAot
ICAgIGlmIChydWxlTGlzdC5pc0VtcHR5KCkpIHsKKyAgICBpZiAocnVsZUxpc3QuaXNFbXB0eSgp
KQogICAgICAgICBXVEZMb2dBbHdheXMoIkVtcHR5IGV4dGVuc2lvbi4iKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KIAogI2lmIENPTlRFTlRfRVhURU5TSU9OU19QRVJGT1JNQU5DRV9SRVBPUlRJ
TkcKICAgICBkb3VibGUgbG9hZEV4dGVuc2lvbkVuZFRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWUoKTsKICAgICBkYXRhTG9nRigiVGltZSBzcGVudCBsb2FkaW5nIGV4dGVuc2lvbiAl
czogJWZcbiIsIGlkZW50aWZpZXIudXRmOCgpLmRhdGEoKSwgKGxvYWRFeHRlbnNpb25FbmRUaW1l
IC0gbG9hZEV4dGVuc2lvblN0YXJ0VGltZSkpOwogI2VuZGlmCiAKLSAgICBDb250ZW50RXh0ZW5z
aW9uc0JhY2tlbmQ6OnNoYXJlZEluc3RhbmNlKCkuc2V0UnVsZUxpc3QoaWRlbnRpZmllciwgcnVs
ZUxpc3QpOworICAgIHJldHVybiBydWxlTGlzdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgRXh0ZW5z
aW9uc01hbmFnZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25zTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zTWFuYWdlci5oCShyZXZpc2lvbiAxNzg2MTcp
CisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc01h
bmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTUgKzI5LDE4IEBACiAjaWYgRU5BQkxFKENP
TlRFTlRfRVhURU5TSU9OUykKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBDb250ZW50
RXh0ZW5zaW9ucyB7CiAKK2NsYXNzIENvbnRlbnRFeHRlbnNpb25SdWxlOworCiAvLyBUaGUgRXh0
ZW5zaW9uc01hbmFnZXIgbG9hZHMgc2VyaWFsaXplZCBjb250ZW50IGV4dGVuc2lvbiBydWxlcyBk
aXJlY3RseSBpbnRvIFdlYkNvcmUuCiBuYW1lc3BhY2UgRXh0ZW5zaW9uc01hbmFnZXIgewogCi12
b2lkIGxvYWRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHJ1bGVzKTsKK1ZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUnVsZT4gY3JlYXRlUnVsZUxpc3QoY29u
c3QgU3RyaW5nJiBydWxlcyk7CiAKIH0gLy8gbmFtZXNwYWNlIEV4dGVuc2lvbnNNYW5hZ2VyCiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTc4NjE3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsMTMg
KzYwLDEwIEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXNzaW9u
SUQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCi0jaW5jbHVk
ZSAiQ29udGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQogI2luY2x1ZGUgIkNhY2hlZFRleHRUcmFjay5oIgogI2VuZGlmCkBAIC00NTgs
NyArNDU1LDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhYwogICAg
ICAgICByZXR1cm4gMDsKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCi0gICAgaWYg
KENvbnRlbnRFeHRlbnNpb25zOjpzaG91bGRCbG9ja1VSTCh1cmwpKQorICAgIGlmIChmcmFtZSgp
ICYmIGZyYW1lKCktPnBhZ2UoKSAmJiBmcmFtZSgpLT5wYWdlKCktPnVzZXJDb250ZW50Q29udHJv
bGxlcigpICYmIGZyYW1lKCktPnBhZ2UoKS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCktPmNvbnRl
bnRGaWx0ZXJCbG9ja3NVUkwodXJsKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYK
IApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmNw
cAkocmV2aXNpb24gMTc4NjE3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNywxMSBAQAogI2luY2x1ZGUg
IlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKENP
TlRFTlRfRVhURU5TSU9OUykKKyNpbmNsdWRlICJDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaCIK
KyNpbmNsdWRlICJDb250ZW50RXh0ZW5zaW9uc01hbmFnZXIuaCIKKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFJlZlB0cjxVc2VyQ29udGVudENvbnRyb2xsZXI+IFVzZXJDb250ZW50
Q29udHJvbGxlcjo6Y3JlYXRlKCkKQEAgLTE3Myw2ICsxNzgsMzMgQEAgdm9pZCBVc2VyQ29udGVu
dENvbnRyb2xsZXI6OnJlbW92ZVVzZXJNZQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQordm9pZCBVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJDb250ZW50
RmlsdGVyKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBydWxlTGlzdCkKK3sKKyAg
ICBpZiAoIW1fY29udGVudEV4dGVuc2lvbkJhY2tlbmQpCisgICAgICAgIG1fY29udGVudEV4dGVu
c2lvbkJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQ+KCk7CisgICAgCisgICAgbV9jb250ZW50RXh0ZW5zaW9uQmFja2Vu
ZC0+c2V0UnVsZUxpc3QobmFtZSwgQ29udGVudEV4dGVuc2lvbnM6OkV4dGVuc2lvbnNNYW5hZ2Vy
OjpjcmVhdGVSdWxlTGlzdChydWxlTGlzdCkpOworfQorCit2b2lkIFVzZXJDb250ZW50Q29udHJv
bGxlcjo6cmVtb3ZlQWxsVXNlckNvbnRlbnRGaWx0ZXJzKCkKK3sKKyAgICBpZiAoIW1fY29udGVu
dEV4dGVuc2lvbkJhY2tlbmQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29udGVudEV4dGVu
c2lvbkJhY2tlbmQtPnJlbW92ZUFsbFJ1bGVMaXN0cygpOworfQorCitib29sIFVzZXJDb250ZW50
Q29udHJvbGxlcjo6Y29udGVudEZpbHRlckJsb2Nrc1VSTChjb25zdCBVUkwmIHVybCkKK3sKKyAg
ICBpZiAoIW1fY29udGVudEV4dGVuc2lvbkJhY2tlbmQpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiBtX2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kLT5zaG91bGRCbG9ja1VSTCh1
cmwpOworfQorCisjZW5kaWYKKwogdm9pZCBVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZUFs
bFVzZXJDb250ZW50KCkKIHsKICAgICBtX3VzZXJTY3JpcHRzID0gbnVsbHB0cjsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuaAkocmV2aXNpb24gMTc4
NjE3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNDUsNiArNDUsMTAgQEAgY2xhc3MgVXNlclNjcmlwdDsKIGNsYXNzIFVz
ZXJTdHlsZVNoZWV0OwogY2xhc3MgVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcjsKIAorbmFt
ZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKK2NsYXNzIENvbnRlbnRFeHRlbnNpb25zQmFja2Vu
ZDsKK30KKwogY2xhc3MgVXNlckNvbnRlbnRDb250cm9sbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8
VXNlckNvbnRlbnRDb250cm9sbGVyPiB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxVc2VyQ29udGVudENvbnRyb2xsZXI+IGNyZWF0ZSgpOwpAQCAtNzQsNiArNzgs
MTUgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlVXNlck1lc3NhZ2VI
YW5kbGVyRGVzY3JpcHRvcihVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yJik7CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIHJlYWxseSB0YWtlIGEgcG9pbnRlciB0byBhIGNvbXBpbGVkIFVzZXJDb250ZW50RmlsdGVy
LgorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkVXNlckNvbnRlbnRGaWx0ZXIoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHJ1bGVMaXN0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlbW92ZUFsbFVzZXJDb250ZW50RmlsdGVycygpOworICAgIAorICAgIC8vIEZJWE1FOiBD
b25zaWRlciBwdXR0aW5nIHRoaXMgKGFuZCBvdGhlciBmdXR1cmUgY29udGVudCBmaWx0ZXIgcHJl
ZGljYXRlcykgaW4gaXRzIG93biBjbGFzcy4KKyAgICBib29sIGNvbnRlbnRGaWx0ZXJCbG9ja3NV
UkwoY29uc3QgVVJMJik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBVc2VyQ29udGVudENvbnRy
b2xsZXIoKTsKIApAQCAtODYsNiArOTksOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShVU0VSX01F
U1NBR0VfSEFORExFUlMpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0b3JNYXA+IG1fdXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcnM7CiAjZW5kaWYKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50
RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kPiBtX2NvbnRlbnRFeHRlbnNpb25C
YWNrZW5kOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxNzg2MjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw3MyBAQAorMjAxNS0wMS0xNyAgU2FtIFdlaW5pZyAgPHNhbUB3
ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBpbml0aWFsIGV4cGVyaW1lbnRhbCB1c2VyIGNvbnRl
bnQgZmlsdGVyaW5nIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQwNTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTW92ZXMgY29udGVudCBmaWx0ZXJpbmcgZnJvbSBiZWluZyBwZXItUHJvY2Vzc1Bv
b2wgdG8gcGVyLVVzZXJDb250ZW50Q29udHJvbGxlci4KKworICAgICAgICAqIFNoYXJlZC9BUEkv
QVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQmFzZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRGaWx0ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KEFQSTo6VXNlckNvbnRlbnRGaWx0ZXI6OlVzZXJDb250ZW50RmlsdGVyKToKKyAgICAgICAgKEFQ
STo6VXNlckNvbnRlbnRGaWx0ZXI6On5Vc2VyQ29udGVudEZpbHRlcik6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElVc2VyQ29udGVudEZpbHRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLVXNl
ckNvbnRlbnRGaWx0ZXJSZWYuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLVXNlckNvbnRlbnRGaWx0
ZXJHZXRUeXBlSUQpOgorICAgICAgICAoV0tVc2VyQ29udGVudEZpbHRlckNyZWF0ZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRGaWx0ZXJSZWYuaDogQWRkZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dlYktpdDJfQy5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRGaWx0ZXIuaDogQWRkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudEZpbHRlci5tbTogQWRkZWQuCisgICAgICAg
IChXS1VzZXJDb250ZW50Q29udHJvbGxlckFkZFVzZXJDb250ZW50RmlsdGVyKToKKyAgICAgICAg
KFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVtb3ZlQWxsVXNlckNvbnRlbnRGaWx0ZXJzKToKKyAg
ICAgICAgKC1bX1dLVXNlckNvbnRlbnRGaWx0ZXIgX2luaXRXaXRoTmFtZTpydWxlTGlzdDpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50RmlsdGVySW50ZXJu
YWwuaDogQWRkZWQuCisgICAgICAgIEFkZCBhIGJhc2ljIFVzZXJDb250ZW50RmlsdGVyIHR5cGUg
YW5kIGV4cG9zZSBpdCB2aWEgYm90aCB0aGUgT2JqZWN0aXZlLUMgQVBJIChhcyBfV0tVc2VyQ29u
dGVudEZpbHRlcikKKyAgICAgICAgYW5kIHZpYSB0aGUgQyBTUEkgKGFzIFdLVXNlckNvbnRlbnRG
aWx0ZXJSZWYpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRDb250
cm9sbGVyUmVmLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRDb250
cm9sbGVyUmVmLmNwcDoKKyAgICAgICAgQWRkIEMtU1BJIHRvIHNldCBhbmQgcmVtb3ZlIFdLVXNl
ckNvbnRlbnRGaWx0ZXJSZWZzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9sb2FkQ29udGVudEV4dGVu
c2lvbldpdGhJZGVudGlmaWVyOnNlcmlhbGl6ZWRSdWxlczpzdWNjZXNzQ29tcGxldGlvbkhhbmRs
ZXI6ZXJyb3JDb21wbGV0aW9uSGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBy
b2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6bG9hZENvbnRlbnRFeHRlbnNpb24pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmxvYWRDb250ZW50RXh0ZW5zaW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgIFJlbW92ZSB0aGUgb2xkIFNQSSBm
b3IgbG9hZGluZyBjb250ZW50IGZpbHRlcnMgdGhhdCB3YXMgcGVyLVByb2Nlc3NQb29sLiBDb250
ZW50IGZpbHRlcnMgbm93IGZvbGxvdworICAgICAgICB0aGUgc2FtZSBwYXR0ZXJuIGFzIFVzZXJT
Y3JpcHRzIGFuZCBVc2VyU3R5bGVTaGVldHMgYXMgYmVpbmcgcGVyLVVzZXJDb250ZW50Q29udHJv
bGxlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRy
b2xsZXIubW06CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIF9hZGRVc2VyQ29u
dGVudEZpbHRlcjpdKToKKyAgICAgICAgKC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIgX3JlbW92
ZUFsbFVzZXJDb250ZW50RmlsdGVyc10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tVc2VyQ29udGVudENvbnRyb2xsZXJJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmg6IEFkZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjphZGRQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJDb250ZW50RmlsdGVyKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJDb250
ZW50RmlsdGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6OmFkZFVzZXJDb250ZW50RmlsdGVycyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlckNvbnRlbnRGaWx0ZXJzKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
ci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyLm1lc3NhZ2VzLmluOgorICAgICAgICBQaXBlIHVzZXIgY29udGVudCBmaWx0ZXJzIG92
ZXIgdG8gYWxsIHRoZSBXZWJQcm9jZXNzZXMgdGhhdCB0aGUgVXNlckNvbnRlbnRDb250cm9sbGVy
IGlzCisgICAgICAgIGNvbm5lY3RlZCB0by4KKworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcy4KKwogMjAxNS0wMS0xNyAg
RGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04g
KHIxNzg2MTgpOiBDaGFuZ2UgdG8gV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBicm9rZSBpT1MgYnVp
bGQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAkocmV2aXNpb24gMTc4
NjE4KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAkod29ya2luZyBj
b3B5KQpAQCAtODEsNiArODEsNyBAQCBwdWJsaWM6CiAgICAgICAgIFVSTFJlcXVlc3QsCiAgICAg
ICAgIFVSTFJlc3BvbnNlLAogICAgICAgICBVc2VyQ29udGVudFVSTFBhdHRlcm4sCisgICAgICAg
IFVzZXJDb250ZW50RmlsdGVyLAogICAgICAgICBVc2VyU2NyaXB0LAogICAgICAgICBXZWJBcmNo
aXZlLAogICAgICAgICBXZWJBcmNoaXZlUmVzb3VyY2UsCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9jL1dLQmFzZS5oCShyZXZpc2lvbiAxNzg2MTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvV0tCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOSw2ICsxMjksNyBAQCB0eXBl
ZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1RleHRDaGVja2VyCiB0eXBlZGVmIGNvbnN0IHN0cnVj
dCBPcGFxdWVXS1Nlc3Npb24qIFdLU2Vzc2lvblJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9w
YXF1ZVdLU2Vzc2lvblN0YXRlKiBXS1Nlc3Npb25TdGF0ZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3Ry
dWN0IE9wYXF1ZVdLVXNlckNvbnRlbnRDb250cm9sbGVyKiBXS1VzZXJDb250ZW50Q29udHJvbGxl
clJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVXNlckNvbnRlbnRGaWx0ZXIqIFdL
VXNlckNvbnRlbnRGaWx0ZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0KiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmOwog
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tVc2VyU2NyaXB0KiBXS1VzZXJTY3JpcHRSZWY7
CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1ZpYnJhdGlvbiogV0tWaWJyYXRpb25SZWY7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHJl
dmlzaW9uIDE3ODYxNykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5OSwxMSArNzk5LDYgQEAgdm9pZCBXZWJQcm9jZXNz
UG9vbDo6cHJvY2Vzc0RpZEZpbmlzaExhdQogICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzOjpTdGFydE1lbW9yeVNhbXBsZXIoc2FtcGxlTG9nU2FuZGJveEhhbmRsZSwg
c2FtcGxlTG9nRmlsZVBhdGgsIG1fbWVtb3J5U2FtcGxlckludGVydmFsKSwgMCk7CiAgICAgfQog
Ci0jaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHNs
b3QgOiBtX2VuY29kZWRDb250ZW50RXh0ZW5zaW9ucykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6TG9hZENvbnRlbnRFeHRlbnNpb24oc2xvdC5rZXksIHNsb3Qu
dmFsdWUpLCAwKTsKLSNlbmRpZgotCiAgICAgbV9jb25uZWN0aW9uQ2xpZW50LmRpZENyZWF0ZUNv
bm5lY3Rpb24odGhpcywgcHJvY2Vzcy0+d2ViQ29ubmVjdGlvbigpKTsKIH0KIApAQCAtMTQyNSwx
MiArMTQyMCw0IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldE1lbW9yeUNhY2hlRGlzYWIKICAg
ICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldE1lbW9yeUNhY2hl
RGlzYWJsZWQoZGlzYWJsZWQpKTsKIH0KIAotI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMp
Ci12b2lkIFdlYlByb2Nlc3NQb29sOjpsb2FkQ29udGVudEV4dGVuc2lvbihjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2VyaWFsaXplZFJ1bGVzKQotewotICAgIG1fZW5j
b2RlZENvbnRlbnRFeHRlbnNpb25zLnNldChpZGVudGlmaWVyLCBzZXJpYWxpemVkUnVsZXMpOwot
ICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6TG9hZENvbnRlbnRF
eHRlbnNpb24oaWRlbnRpZmllciwgc2VyaWFsaXplZFJ1bGVzKSk7Ci19Ci0jZW5kaWYKLQogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaAkocmV2aXNpb24gMTc4NjE3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1NSwxMCArMzU1LDYgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbV9wcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZEZvclBhZ2VD
b3VudGVyLnRva2VuPFByb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkVG9rZW5UeXBlPigpOwogICAg
IH0KIAotI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCi0gICAgdm9pZCBsb2FkQ29udGVu
dEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2VyaWFs
aXplZFJ1bGVzKTsKLSNlbmRpZgotCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFs
aXplKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRl
bnRGaWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJVXNlckNvbnRlbnRGaWx0ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudEZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJBUElVc2VyQ29udGVudEZpbHRlci5oIgorCituYW1lc3BhY2UgQVBJIHsKKworVXNlckNvbnRl
bnRGaWx0ZXI6OlVzZXJDb250ZW50RmlsdGVyKGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBjb25z
dCBXVEY6OlN0cmluZyYgcnVsZUxpc3QpCisgICAgOiBtX25hbWUobmFtZSkKKyAgICAsIG1fcnVs
ZUxpc3QocnVsZUxpc3QpCit7Cit9CisKK1VzZXJDb250ZW50RmlsdGVyOjp+VXNlckNvbnRlbnRG
aWx0ZXIoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRGaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50RmlsdGVyLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50RmlsdGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
QVBJVXNlckNvbnRlbnRGaWx0ZXJfaAorI2RlZmluZSBBUElVc2VyQ29udGVudEZpbHRlcl9oCisK
KyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIFVzZXJDb250ZW50RmlsdGVyIGZpbmFsIDogcHVi
bGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpVc2VyQ29udGVudEZpbHRlcj4geworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8VXNlckNvbnRlbnRGaWx0ZXI+IGNyZWF0ZShjb25zdCBXVEY6OlN0
cmluZyYgbmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHJ1bGVMaXN0KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgVXNlckNvbnRlbnRGaWx0ZXIobmFtZSwgcnVsZUxpc3QpKTsK
KyAgICB9CisKKyAgICBVc2VyQ29udGVudEZpbHRlcihjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwg
Y29uc3QgV1RGOjpTdHJpbmcmIHJ1bGVMaXN0KTsKKyAgICB+VXNlckNvbnRlbnRGaWx0ZXIoKTsK
KworICAgIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9
CisgICAgY29uc3QgV1RGOjpTdHJpbmcmIHJ1bGVMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9ydWxl
TGlzdDsgfQorCitwcml2YXRlOgorICAgIFdURjo6U3RyaW5nIG1fbmFtZTsKKyAgICBXVEY6OlN0
cmluZyBtX3J1bGVMaXN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgQVBJCisKKyNlbmRpZiAvLyBB
UElVc2VyQ29udGVudEZpbHRlcl9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tBUElDYXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLQVBJQ2FzdC5oCShyZXZpc2lvbiAxNzg2MTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDcgQEAg
Y2xhc3MgTmF2aWdhdGlvbkRhdGE7CiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIGNsYXNzIFBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbjsKIGNsYXNzIFNlc3Npb25TdGF0ZTsKK2NsYXNzIFVzZXJD
b250ZW50RmlsdGVyOwogY2xhc3MgVXNlclNjcmlwdDsKIH0KIApAQCAtMTUyLDYgKzE1Myw3IEBA
IFdLX0FERF9BUElfTUFQUElORyhXS1JlbmRlck9iamVjdFJlZiwgV2UKIFdLX0FERF9BUElfTUFQ
UElORyhXS1Nlc3Npb25TdGF0ZVJlZiwgQVBJOjpTZXNzaW9uU3RhdGUpCiBXS19BRERfQVBJX01B
UFBJTkcoV0tUZXh0Q2hlY2tlclJlZiwgV2ViVGV4dENoZWNrZXIpCiBXS19BRERfQVBJX01BUFBJ
TkcoV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYsIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5KQorV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlckNvbnRlbnRGaWx0ZXJSZWYsIEFQSTo6VXNl
ckNvbnRlbnRGaWx0ZXIpCiBXS19BRERfQVBJX01BUFBJTkcoV0tVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFJlZiwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSkKIFdLX0FERF9BUElf
TUFQUElORyhXS1VzZXJTY3JpcHRSZWYsIEFQSTo6VXNlclNjcmlwdCkKIFdLX0FERF9BUElfTUFQ
UElORyhXS1ZpYnJhdGlvblJlZiwgV2ViVmlicmF0aW9uUHJveHkpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50Q29u
dHJvbGxlclJlZi5jcHAJKHJldmlzaW9uIDE3ODYxOCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU2LDMgKzU2LDE3IEBAIHZvaWQgV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZW1vdmVBbGxV
c2UKIHsKICAgICB0b0ltcGwodXNlckNvbnRlbnRDb250cm9sbGVyUmVmKS0+cmVtb3ZlQWxsVXNl
clNjcmlwdHMoKTsKIH0KKwordm9pZCBXS1VzZXJDb250ZW50Q29udHJvbGxlckFkZFVzZXJDb250
ZW50RmlsdGVyKFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmIHVzZXJDb250ZW50Q29udHJvbGxl
clJlZiwgV0tVc2VyQ29udGVudEZpbHRlclJlZiB1c2VyQ29udGVudEZpbHRlclJlZikKK3sKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIHRvSW1wbCh1c2VyQ29udGVudENvbnRy
b2xsZXJSZWYpLT5hZGRVc2VyQ29udGVudEZpbHRlcigqdG9JbXBsKHVzZXJDb250ZW50RmlsdGVy
UmVmKSk7CisjZW5kaWYKK30KKwordm9pZCBXS1VzZXJDb250ZW50Q29udHJvbGxlclJlbW92ZUFs
bFVzZXJDb250ZW50RmlsdGVycyhXS1VzZXJDb250ZW50Q29udHJvbGxlclJlZiB1c2VyQ29udGVu
dENvbnRyb2xsZXJSZWYpCit7CisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICB0
b0ltcGwodXNlckNvbnRlbnRDb250cm9sbGVyUmVmKS0+cmVtb3ZlQWxsVXNlckNvbnRlbnRGaWx0
ZXJzKCk7CisjZW5kaWYKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5oCShyZXZpc2lvbiAx
Nzg2MTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENv
bnRyb2xsZXJSZWYuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsOCBAQCBXS19FWFBPUlQg
V0tBcnJheVJlZiBXS1VzZXJDb250ZW50Q29udHJvCiBXS19FWFBPUlQgdm9pZCBXS1VzZXJDb250
ZW50Q29udHJvbGxlckFkZFVzZXJTY3JpcHQoV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYgdXNl
ckNvbnRlbnRDb250cm9sbGVyLCBXS1VzZXJTY3JpcHRSZWYgdXNlclNjcmlwdCk7CiBXS19FWFBP
UlQgdm9pZCBXS1VzZXJDb250ZW50Q29udHJvbGxlclJlbW92ZUFsbFVzZXJTY3JpcHRzKFdLVXNl
ckNvbnRlbnRDb250cm9sbGVyUmVmIHVzZXJDb250ZW50Q29udHJvbGxlcik7CiAKK1dLX0VYUE9S
VCB2b2lkIFdLVXNlckNvbnRlbnRDb250cm9sbGVyQWRkVXNlckNvbnRlbnRGaWx0ZXIoV0tVc2Vy
Q29udGVudENvbnRyb2xsZXJSZWYgdXNlckNvbnRlbnRDb250cm9sbGVyLCBXS1VzZXJDb250ZW50
RmlsdGVyUmVmIHVzZXJDb250ZW50RmlsdGVyKTsKK1dLX0VYUE9SVCB2b2lkIFdLVXNlckNvbnRl
bnRDb250cm9sbGVyUmVtb3ZlQWxsVXNlckNvbnRlbnRGaWx0ZXJzKFdLVXNlckNvbnRlbnRDb250
cm9sbGVyUmVmIHVzZXJDb250ZW50Q29udHJvbGxlcik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwog
fQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRGaWx0
ZXJSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1VzZXJDb250ZW50RmlsdGVyUmVmLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50RmlsdGVyUmVmLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldLVXNlckNvbnRlbnRGaWx0ZXJSZWYuaCIKKworI2luY2x1ZGUgIkFQSVVzZXJDb250
ZW50RmlsdGVyLmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CisKK1dLVHlwZUlEIFdLVXNlckNvbnRlbnRGaWx0ZXJHZXRUeXBlSUQoKQoreworICAg
IHJldHVybiB0b0FQSShBUEk6OlVzZXJDb250ZW50RmlsdGVyOjpBUElUeXBlKTsKK30KKworV0tV
c2VyQ29udGVudEZpbHRlclJlZiBXS1VzZXJDb250ZW50RmlsdGVyQ3JlYXRlKFdLU3RyaW5nUmVm
IG5hbWVSZWYsIFdLU3RyaW5nUmVmIHJ1bGVMaXN0UmVmKQoreworICAgIHJldHVybiB0b0FQSSgm
QVBJOjpVc2VyQ29udGVudEZpbHRlcjo6Y3JlYXRlKHRvV1RGU3RyaW5nKG5hbWVSZWYpLCB0b1dU
RlN0cmluZyhydWxlTGlzdFJlZikpLmxlYWtSZWYoKSk7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudEZpbHRlclJlZi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50RmlsdGVyUmVmLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29u
dGVudEZpbHRlclJlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdLVXNlckNvbnRlbnRGaWx0ZXJSZWZfaAorI2RlZmluZSBXS1VzZXJDb250
ZW50RmlsdGVyUmVmX2gKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKworI2lmZGVmIF9f
Y3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tV
c2VyQ29udGVudEZpbHRlckdldFR5cGVJRCgpOworCitXS19FWFBPUlQgV0tVc2VyQ29udGVudEZp
bHRlclJlZiBXS1VzZXJDb250ZW50RmlsdGVyQ3JlYXRlKFdLU3RyaW5nUmVmIG5hbWUsIFdLU3Ry
aW5nUmVmIHJ1bGVMaXN0KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2Vu
ZGlmIC8qIFdLVXNlckNvbnRlbnRGaWx0ZXJSZWZfaCAqLwpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dlYktpdDJfQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XZWJLaXQyX0MuaAkocmV2aXNpb24gMTc4NjE4KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dlYktpdDJfQy5oCSh3b3JraW5nIGNvcHkpCkBAIC01
OSw2ICs1OSw3IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLVVJMUmVxdWVzdC5oPgogI2luY2x1ZGUg
PFdlYktpdC9XS1VSTFJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLVXNlckNvbnRlbnRD
b250cm9sbGVyUmVmLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLVXNlckNvbnRlbnRGaWx0ZXJSZWYu
aD4KICNpbmNsdWRlIDxXZWJLaXQvV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oPgogI2lu
Y2x1ZGUgPFdlYktpdC9XS1VzZXJTY3JpcHRSZWYuaD4KIApJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQkocmV2aXNpb24g
MTc4NjE3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNDcsMjAgKzI0Nyw2IEBAIC0gKHZvaWQpX3NldE9i
amVjdDooaWQgPE5TQ29weWluZywgTlNTZWMKICAgICBfcHJvY2Vzc1Bvb2wtPnNlbmRUb0FsbFBy
b2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0SW5qZWN0ZWRCdW5kbGVQYXJhbWV0ZXIo
cGFyYW1ldGVyLCBJUEM6OkRhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pKSk7CiB9CiAKLS0gKHZvaWQpX2xvYWRDb250
ZW50RXh0ZW5zaW9uV2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBzZXJpYWxp
emVkUnVsZXM6KE5TU3RyaW5nICopc2VyaWFsaXplZFJ1bGVzIHN1Y2Nlc3NDb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTlNEaWN0aW9uYXJ5ICppbmZvKSlzdWNjZXNzQ29tcGxldGlvbkhhbmRs
ZXIgZXJyb3JDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNFcnJvciAqZXJyb3IpKWVycm9y
Q29tcGxldGlvbkhhbmRsZXIKLXsKLSNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAg
IC8vIEZvciB0aGlzIGV4cGVyaW1lbnRhdGlvbiwgdGhlIENvbnRlbnRFeHRlbnNpb25zIGFyZSBo
YW5kbGVkIGJ5IGVhY2ggV2ViUHJvY2Vzcy4KLSAgICAvLyBFdmVudHVhbGx5IHRoZSBDb250ZW50
RXh0ZW5zaW9uIHdpbGwgaGF2ZSB0byBiZSBoYW5kbGVkIHNlcGFyYXRlbHkgZnJvbSB0aGUgV2Vi
UHJvY2Vzc2VzIGFuZCB3ZSdsbCBiZSBhYmxlCi0gICAgLy8gdG8gcHJvdmlkZSBtZWFuaW5nZnVs
IGNvbXBsZXRpb24gaGFuZGxlcnMuCi0gICAgVU5VU0VEX1BBUkFNKGVycm9yQ29tcGxldGlvbkhh
bmRsZXIpOwotCi0gICAgX3Byb2Nlc3NQb29sLT5sb2FkQ29udGVudEV4dGVuc2lvbihpZGVudGlm
aWVyLCBzZXJpYWxpemVkUnVsZXMpOwotCi0gICAgc3VjY2Vzc0NvbXBsZXRpb25IYW5kbGVyKG5p
bCk7Ci0jZW5kaWYKLX0KLQogLSAoaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+KV9kb3dubG9hZERl
bGVnYXRlCiB7CiAgICAgcmV0dXJuIF9kb3dubG9hZERlbGVnYXRlLmdldEF1dG9yZWxlYXNlZCgp
OwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAkocmV2aXNpb24gMTc4NjE3KQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Myw5ICs0Myw2IEBACiAtIChpZClfb2JqZWN0Rm9yQnVuZGxlUGFyYW1ldGVy
OihOU1N0cmluZyAqKXBhcmFtZXRlcjsKIC0gKHZvaWQpX3NldE9iamVjdDooaWQgPE5TQ29weWlu
ZywgTlNTZWN1cmVDb2Rpbmc+KW9iamVjdCBmb3JCdW5kbGVQYXJhbWV0ZXI6KE5TU3RyaW5nICop
cGFyYW1ldGVyOwogCi0vLyBGSVhNRTogbW92ZSB0aGUgQVBJIHRvIGEgYmV0dGVyIHBsYWNlLgot
LSAodm9pZClfbG9hZENvbnRlbnRFeHRlbnNpb25XaXRoSWRlbnRpZmllcjooTlNTdHJpbmcgKilp
ZGVudGlmaWVyIHNlcmlhbGl6ZWRSdWxlczooTlNTdHJpbmcgKilzZXJpYWxpemVkUnVsZXMgc3Vj
Y2Vzc0NvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0RpY3Rpb25hcnkgKmluZm8pKXN1Y2Nl
c3NDb21wbGV0aW9uSGFuZGxlciBlcnJvckNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0Vy
cm9yICplcnJvcikpZXJyb3JDb21wbGV0aW9uSGFuZGxlciBXS19BVkFJTEFCTEUoV0tfTUFDX1RC
QSwgV0tfSU9TX1RCQSk7Ci0KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3Nl
dERvd25sb2FkRGVsZWdhdGU6KSBpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4gX2Rvd25sb2FkRGVs
ZWdhdGU7CiAKICsgKE5TVVJMICopX3dlYnNpdGVEYXRhVVJMRm9yQ29udGFpbmVyV2l0aFVSTDoo
TlNVUkwgKiljb250YWluZXJVUkw7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0JKHJl
dmlzaW9uIDE3ODYxNykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tV
c2VyQ29udGVudENvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAK
ICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJTY3JpcHRNZXNzYWdl
SGFuZGxlci5oIgogI2ltcG9ydCAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKKyNp
bXBvcnQgIl9XS1VzZXJDb250ZW50RmlsdGVySW50ZXJuYWwuaCIKICNpbXBvcnQgPEphdmFTY3Jp
cHRDb3JlL0pTQ29udGV4dC5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KQEAgLTEyNCw1ICsxMjUs
MjMgQEAgLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKIAogQGVuZAogCitAaW1wbGVtZW50YXRp
b24gV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKFdLUHJpdmF0ZSkKKworLSAodm9pZClfYWRkVXNl
ckNvbnRlbnRGaWx0ZXI6KF9XS1VzZXJDb250ZW50RmlsdGVyICopdXNlckNvbnRlbnRGaWx0ZXIK
K3sKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIF91c2VyQ29udGVudENvbnRy
b2xsZXJQcm94eS0+YWRkVXNlckNvbnRlbnRGaWx0ZXIoKnVzZXJDb250ZW50RmlsdGVyLT5fdXNl
ckNvbnRlbnRGaWx0ZXIpOworI2VuZGlmCit9CisKKy0gKHZvaWQpX3JlbW92ZUFsbFVzZXJDb250
ZW50RmlsdGVycworeworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgX3VzZXJD
b250ZW50Q29udHJvbGxlclByb3h5LT5yZW1vdmVBbGxVc2VyQ29udGVudEZpbHRlcnMoKTsKKyNl
bmRpZgorfQorCitAZW5kCisKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVySW50ZXJuYWwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250
cm9sbGVySW50ZXJuYWwuaAkocmV2aXNpb24gMTc4NjE3KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlckludGVybmFsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaW1wb3J0ICJXS1VzZXJDb250ZW50Q29udHJvbGxlci5oIgorI2ltcG9y
dCAiV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmgiCiAKICNpZiBXS19BUElfRU5BQkxF
RAogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRl
bnRDb250cm9sbGVyUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRD
b250cm9sbGVyUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0IDxXZWJLaXQvV0tVc2VyQ29udGVudENvbnRyb2xsZXIuaD4KKworI2lm
IFdLX0FQSV9FTkFCTEVECisKK0BjbGFzcyBfV0tVc2VyQ29udGVudEZpbHRlcjsKKworQGludGVy
ZmFjZSBXS1VzZXJDb250ZW50Q29udHJvbGxlciAoV0tQcml2YXRlKQorCistICh2b2lkKV9hZGRV
c2VyQ29udGVudEZpbHRlcjooX1dLVXNlckNvbnRlbnRGaWx0ZXIgKil1c2VyQ29udGVudEZpbHRl
cjsKKy0gKHZvaWQpX3JlbW92ZUFsbFVzZXJDb250ZW50RmlsdGVyczsKKworQGVuZAorCisjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRl
bnRGaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1VzZXJDb250ZW50RmlsdGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50RmlsdGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5k
YXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKK1dLX0NMQVNTX0FWQUlMQUJMRShXS19N
QUNfVEJBLCBXS19JT1NfVEJBKQorQGludGVyZmFjZSBfV0tVc2VyQ29udGVudEZpbHRlciA6IE5T
T2JqZWN0CisKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUg
cnVsZUxpc3Q6KE5TU3RyaW5nICopcnVsZUxpc3Q7CisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQ
SV9FTkFCTEVECkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Vz
ZXJDb250ZW50RmlsdGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRGaWx0ZXIubW0JKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50RmlsdGVyLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIl9XS1VzZXJDb250ZW50RmlsdGVySW50ZXJuYWwuaCIKKworI2lmIFdL
X0FQSV9FTkFCTEVECisKK0BpbXBsZW1lbnRhdGlvbiBfV0tVc2VyQ29udGVudEZpbHRlcgorCist
IChpbnN0YW5jZXR5cGUpX2luaXRXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lIHJ1bGVMaXN0OihO
U1N0cmluZyAqKXJ1bGVMaXN0Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisg
ICAgICAgIHJldHVybiBuaWw7CisKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVy
PEFQSTo6VXNlckNvbnRlbnRGaWx0ZXI+KHNlbGYsIFN0cmluZyhuYW1lKSwgU3RyaW5nKHJ1bGVM
aXN0KSk7CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAg
X3VzZXJDb250ZW50RmlsdGVyLT5+VXNlckNvbnRlbnRGaWx0ZXIoKTsKKworICAgIFtzdXBlciBk
ZWFsbG9jXTsKK30KKworI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0
aW9uCisKKy0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfdXNlckNv
bnRlbnRGaWx0ZXI7Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50RmlsdGVy
SW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1VzZXJDb250ZW50RmlsdGVySW50ZXJuYWwuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRGaWx0ZXJJbnRlcm5h
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJfV0tVc2VyQ29udGVudEZpbHRlci5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9y
dCAiQVBJVXNlckNvbnRlbnRGaWx0ZXIuaCIKKyNpbXBvcnQgIldLT2JqZWN0LmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitpbmxpbmUgX1dLVXNlckNvbnRlbnRGaWx0ZXIgKndyYXBwZXIoQVBJ
OjpVc2VyQ29udGVudEZpbHRlciYgdXNlckNvbnRlbnRGaWx0ZXIpCit7CisgICAgQVNTRVJUKFt1
c2VyQ29udGVudEZpbHRlci53cmFwcGVyKCkgaXNLaW5kT2ZDbGFzczpbX1dLVXNlckNvbnRlbnRG
aWx0ZXIgY2xhc3NdXSk7CisgICAgcmV0dXJuIChfV0tVc2VyQ29udGVudEZpbHRlciAqKXVzZXJD
b250ZW50RmlsdGVyLndyYXBwZXIoKTsKK30KKworfQorCitAaW50ZXJmYWNlIF9XS1VzZXJDb250
ZW50RmlsdGVyICgpIDxXS09iamVjdD4geworQHBhY2thZ2UKKyAgICBBUEk6Ok9iamVjdFN0b3Jh
Z2U8QVBJOjpVc2VyQ29udGVudEZpbHRlcj4gX3VzZXJDb250ZW50RmlsdGVyOworfQorQGVuZAor
CisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5LmNwcAkocmV2aXNpb24gMTc4NjE3KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsMTAgQEAKICNpbmNsdWRlICJXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuaD4KIAorI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisjaW5jbHVk
ZSAiQVBJVXNlckNvbnRlbnRGaWx0ZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlSWRlbnRpZmllcigpCkBAIC00Nyw2ICs1MSw3IEBA
IHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUlkZW50aWZpZXIoKQogV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KCkKICAgICA6IG1faWRl
bnRpZmllcihnZW5lcmF0ZUlkZW50aWZpZXIoKSkKICAgICAsIG1fdXNlclNjcmlwdHMoKkFQSTo6
QXJyYXk6OmNyZWF0ZSgpKQorICAgICwgbV91c2VyQ29udGVudEZpbHRlcnMoKkFQSTo6QXJyYXk6
OmNyZWF0ZSgpKQogewogfQogCkBAIC03Niw2ICs4MSwxMyBAQCB2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjphZGRQCiAgICAgZm9yIChhdXRvJiBoYW5kbGVyIDogbV9zY3JpcHRN
ZXNzYWdlSGFuZGxlcnMudmFsdWVzKCkpCiAgICAgICAgIG1lc3NhZ2VIYW5kbGVySGFuZGxlcy5h
cHBlbmQoaGFuZGxlci0+aGFuZGxlKCkpOwogICAgIHdlYlByb2Nlc3NQcm94eS5jb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclNjcmlw
dE1lc3NhZ2VIYW5kbGVycyhtZXNzYWdlSGFuZGxlckhhbmRsZXMpLCBtX2lkZW50aWZpZXIpOwor
CisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBWZWN0b3I8c3RkOjpwYWlyPFN0
cmluZywgU3RyaW5nPj4gdXNlckNvbnRlbnRGaWx0ZXJzOworICAgIGZvciAoY29uc3QgYXV0byYg
dXNlckNvbnRlbnRGaWx0ZXIgOiBtX3VzZXJDb250ZW50RmlsdGVycy0+ZWxlbWVudHNPZlR5cGU8
QVBJOjpVc2VyQ29udGVudEZpbHRlcj4oKSkKKyAgICAgICAgdXNlckNvbnRlbnRGaWx0ZXJzLmFw
cGVuZChzdGQ6Om1ha2VfcGFpcih1c2VyQ29udGVudEZpbHRlci0+bmFtZSgpLCB1c2VyQ29udGVu
dEZpbHRlci0+cnVsZUxpc3QoKSkpOworICAgIHdlYlByb2Nlc3NQcm94eS5jb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlckNvbnRlbnRG
aWx0ZXJzKHVzZXJDb250ZW50RmlsdGVycyksIG1faWRlbnRpZmllcik7CisjZW5kaWYKIH0KIAog
dm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlUHJvY2VzcyhXZWJQcm9j
ZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSkKQEAgLTE2OSw0ICsxODEsMjUgQEAgdm9pZCBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6ZGlkUAogICAgIGhhbmRsZXItPmNsaWVudCgpLmRp
ZFBvc3RNZXNzYWdlKCpwYWdlLCAqZnJhbWUsICp2YWx1ZSk7CiB9CiAKKworI2lmIEVOQUJMRShD
T05URU5UX0VYVEVOU0lPTlMpCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojph
ZGRVc2VyQ29udGVudEZpbHRlcihBUEk6OlVzZXJDb250ZW50RmlsdGVyJiB1c2VyQ29udGVudEZp
bHRlcikKK3sKKyAgICBtX3VzZXJDb250ZW50RmlsdGVycy0+ZWxlbWVudHMoKS5hcHBlbmQoJnVz
ZXJDb250ZW50RmlsdGVyKTsKKworICAgIGF1dG8gcGFpciA9IHN0ZDo6bWFrZV9wYWlyKHVzZXJD
b250ZW50RmlsdGVyLm5hbWUoKSwgdXNlckNvbnRlbnRGaWx0ZXIucnVsZUxpc3QoKSk7CisKKyAg
ICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQorICAgICAgICBw
cm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlcjo6QWRkVXNlckNvbnRlbnRGaWx0ZXJzKHsgcGFpciB9KSwgbV9pZGVudGlmaWVyKTsKK30K
Kwordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlckNvbnRl
bnRGaWx0ZXJzKCkKK3sKKyAgICBtX3VzZXJDb250ZW50RmlsdGVycy0+ZWxlbWVudHMoKS5jbGVh
cigpOworCisgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykK
KyAgICAgICAgcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJDb250ZW50RmlsdGVycygpLCBtX2lkZW50aWZp
ZXIpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgJKHJldmlzaW9uIDE3ODYxOCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAKIG5hbWVzcGFjZSBBUEkg
ewogY2xhc3MgQXJyYXk7CitjbGFzcyBVc2VyQ29udGVudEZpbHRlcjsKIGNsYXNzIFVzZXJTY3Jp
cHQ7CiB9CiAKQEAgLTgwLDYgKzgxLDExIEBAIHB1YmxpYzoKICAgICBib29sIGFkZFVzZXJTY3Jp
cHRNZXNzYWdlSGFuZGxlcihXZWJTY3JpcHRNZXNzYWdlSGFuZGxlciopOwogICAgIHZvaWQgcmVt
b3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShjb25zdCBTdHJpbmcmKTsKIAorI2lmIEVOQUJM
RShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgdm9pZCBhZGRVc2VyQ29udGVudEZpbHRlcihBUEk6
OlVzZXJDb250ZW50RmlsdGVyJik7CisgICAgdm9pZCByZW1vdmVBbGxVc2VyQ29udGVudEZpbHRl
cnMoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CkBAIC05MSw2ICs5NywxMCBAQCBwcml2YXRlOgog
ICAgIFJlZjxBUEk6OkFycmF5PiBtX3VzZXJTY3JpcHRzOwogICAgIFZlY3RvcjxXZWJDb3JlOjpV
c2VyU3R5bGVTaGVldD4gbV91c2VyU3R5bGVTaGVldHM7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwg
UmVmUHRyPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyPj4gbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnM7
CisKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIFJlZjxBUEk6OkFycmF5PiBt
X3VzZXJDb250ZW50RmlsdGVyczsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxNzg2MTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwNzksNiArMTA3OSwxNCBA
QAogCQk3Qzg5RDJBMzFBNjc4ODc1MDAzQTVGREUgLyogV0tVc2VyU2NyaXB0UmVmLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODlEMkExMUE2Nzg4
NzUwMDNBNUZERSAvKiBXS1VzZXJTY3JpcHRSZWYuY3BwICovOyB9OwogCQk3Qzg5RDJBNDFBNjc4
ODc1MDAzQTVGREUgLyogV0tVc2VyU2NyaXB0UmVmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzg5RDJBMjFBNjc4ODc1MDAzQTVGREUgLyogV0tVc2Vy
U2NyaXB0UmVmLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJN0M4OUQyQTYxQTY3ODlFQTAwM0E1RkRFIC8qIEFQSVVzZXJTY3JpcHQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4OUQyQTUxQTY3ODlF
QTAwM0E1RkRFIC8qIEFQSVVzZXJTY3JpcHQuY3BwICovOyB9OworCQk3Qzg5RDJCMzFBNkIwNjhD
MDAzQTVGREUgLyogQVBJVXNlckNvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4OUQyQjExQTZCMDY4QzAwM0E1RkRFIC8qIEFQ
SVVzZXJDb250ZW50RmlsdGVyLmNwcCAqLzsgfTsKKwkJN0M4OUQyQjQxQTZCMDY4QzAwM0E1RkRF
IC8qIEFQSVVzZXJDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3Qzg5RDJCMjFBNkIwNjhDMDAzQTVGREUgLyogQVBJVXNlckNvbnRl
bnRGaWx0ZXIuaCAqLzsgfTsKKwkJN0M4OUQyQjYxQTZCMEREOTAwM0E1RkRFIC8qIFdLVXNlckNv
bnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0M4OUQyQjUxQTZCMEREOTAwM0E1RkRFIC8qIFdLVXNlckNvbnRlbnRD
b250cm9sbGVyUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTdDODlEMkI5MUE2QjBGMkMwMDNBNUZERSAvKiBfV0tVc2VyQ29udGVudEZp
bHRlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
ODlEMkI3MUE2QjBGMkMwMDNBNUZERSAvKiBfV0tVc2VyQ29udGVudEZpbHRlci5tbSAqLzsgfTsK
KwkJN0M4OUQyQkExQTZCMEYyQzAwM0E1RkRFIC8qIF9XS1VzZXJDb250ZW50RmlsdGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzg5RDJCODFBNkIw
RjJDMDAzQTVGREUgLyogX1dLVXNlckNvbnRlbnRGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3Qzg5RDJCQzFBNkIwRjVCMDAzQTVGREUg
LyogX1dLVXNlckNvbnRlbnRGaWx0ZXJJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4OUQyQkIxQTZCMEY1QjAwM0E1RkRFIC8qIF9XS1Vz
ZXJDb250ZW50RmlsdGVySW50ZXJuYWwuaCAqLzsgfTsKKwkJN0M4OUQyQkYxQTZCMTFFRjAwM0E1
RkRFIC8qIFdLVXNlckNvbnRlbnRGaWx0ZXJSZWYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4OUQyQkQxQTZCMTFFRjAwM0E1RkRFIC8qIFdLVXNl
ckNvbnRlbnRGaWx0ZXJSZWYuY3BwICovOyB9OworCQk3Qzg5RDJDMDFBNkIxMUVGMDAzQTVGREUg
LyogV0tVc2VyQ29udGVudEZpbHRlclJlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0M4OUQyQkUxQTZCMTFFRjAwM0E1RkRFIC8qIFdLVXNlckNvbnRl
bnRGaWx0ZXJSZWYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3QzhFQjExNzE4REI2QTE5MDA3OTE3QzIgLyogV0tQcmVmZXJlbmNlc1ByaXZhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOEVCMTE2
MThEQjZBMTkwMDc5MTdDMiAvKiBXS1ByZWZlcmVuY2VzUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDOUQxNTM3MTg0NTg0REEwMDlE
MzkxOCAvKiBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOUQxNTM2MTg0NTg0REEwMDlEMzkxOCAv
KiBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaCAqLzsgfTsKIAkJN0NBMjU0RUIxODI5
OTNDRTAwRkM4QTQxIC8qIFdLQnJvd3NpbmdDb250ZXh0UG9saWN5RGVsZWdhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQTI1NEVBMTgyOTkzQ0Uw
MEZDOEE0MSAvKiBXS0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVnYXRlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMyMDAsNiArMzIwOCwxNCBA
QAogCQk3Qzg5RDJBMTFBNjc4ODc1MDAzQTVGREUgLyogV0tVc2VyU2NyaXB0UmVmLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLVXNlclNjcmlwdFJlZi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDODlEMkEyMUE2Nzg4NzUwMDNBNUZERSAvKiBX
S1VzZXJTY3JpcHRSZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVc2Vy
U2NyaXB0UmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDODlEMkE1MUE2Nzg5
RUEwMDNBNUZERSAvKiBBUElVc2VyU2NyaXB0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFQSVVzZXJTY3JpcHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3Qzg5RDJCMTFBNkIwNjhDMDAzQTVGREUgLyogQVBJVXNlckNvbnRlbnRGaWx0ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJVXNlckNvbnRlbnRGaWx0
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Qzg5RDJCMjFBNkIwNjhDMDAz
QTVGREUgLyogQVBJVXNlckNvbnRlbnRGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQVBJVXNlckNvbnRlbnRGaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0M4OUQyQjUxQTZCMEREOTAwM0E1RkRFIC8qIFdLVXNlckNvbnRlbnRDb250cm9sbGVy
UHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1VzZXJDb250ZW50
Q29udHJvbGxlclByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M4OUQy
QjcxQTZCMEYyQzAwM0E1RkRFIC8qIF9XS1VzZXJDb250ZW50RmlsdGVyLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLVXNlckNvbnRlbnRGaWx0ZXIubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDODlEMkI4MUE2QjBGMkMwMDNBNUZERSAvKiBf
V0tVc2VyQ29udGVudEZpbHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBf
V0tVc2VyQ29udGVudEZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Qzg5
RDJCQjFBNkIwRjVCMDAzQTVGREUgLyogX1dLVXNlckNvbnRlbnRGaWx0ZXJJbnRlcm5hbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tVc2VyQ29udGVudEZpbHRlckludGVy
bmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDODlEMkJEMUE2QjExRUYwMDNB
NUZERSAvKiBXS1VzZXJDb250ZW50RmlsdGVyUmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdLVXNlckNvbnRlbnRGaWx0ZXJSZWYuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3Qzg5RDJCRTFBNkIxMUVGMDAzQTVGREUgLyogV0tVc2VyQ29udGVu
dEZpbHRlclJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1VzZXJDb250
ZW50RmlsdGVyUmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDOEVCMTE2MThE
QjZBMTkwMDc5MTdDMiAvKiBXS1ByZWZlcmVuY2VzUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXS1ByZWZlcmVuY2VzUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzlEMTUzNjE4NDU4NERBMDA5RDM5MTggLyogV0tCcm93c2luZ0NvbnRl
eHRHcm91cEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnJv
d3NpbmdDb250ZXh0R3JvdXBJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3Q0EyNTRFQTE4Mjk5M0NFMDBGQzhBNDEgLyogV0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxl
Z2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Jyb3dzaW5nQ29udGV4
dFBvbGljeURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MTU0LDYg
KzUxNzAsOSBAQAogCQkJCTJENkIzNzE5MThBOTY3QUQwMDQyQUU4MCAvKiBfV0tUaHVtYm5haWxW
aWV3LmggKi8sCiAJCQkJMkQ2QjM3MUExOEE5NjdBRDAwNDJBRTgwIC8qIF9XS1RodW1ibmFpbFZp
ZXcubW0gKi8sCiAJCQkJMkRBQ0U2NEQxOEFEQkZGMDAwRTRDQTc2IC8qIF9XS1RodW1ibmFpbFZp
ZXdJbnRlcm5hbC5oICovLAorCQkJCTdDODlEMkI4MUE2QjBGMkMwMDNBNUZERSAvKiBfV0tVc2Vy
Q29udGVudEZpbHRlci5oICovLAorCQkJCTdDODlEMkI3MUE2QjBGMkMwMDNBNUZERSAvKiBfV0tV
c2VyQ29udGVudEZpbHRlci5tbSAqLywKKwkJCQk3Qzg5RDJCQjFBNkIwRjVCMDAzQTVGREUgLyog
X1dLVXNlckNvbnRlbnRGaWx0ZXJJbnRlcm5hbC5oICovLAogCQkJCTFBODFCMzdGMThCRDY2QUQw
MDA3RkRBQyAvKiBfV0tWaXNpdGVkTGlua1Byb3ZpZGVyLmggKi8sCiAJCQkJMUE4MUIzN0UxOEJE
NjZBRDAwMDdGREFDIC8qIF9XS1Zpc2l0ZWRMaW5rUHJvdmlkZXIubW0gKi8sCiAJCQkJMUE4MUIz
ODQxOEJENjczQTAwMDdGREFDIC8qIF9XS1Zpc2l0ZWRMaW5rUHJvdmlkZXJJbnRlcm5hbC5oICov
LApAQCAtNTIwOCw2ICs1MjI3LDcgQEAKIAkJCQkxQUZBM0FDNzE4RTYxQzYxMDAzQ0NCQUUgLyog
V0tVc2VyQ29udGVudENvbnRyb2xsZXIuaCAqLywKIAkJCQkxQUZBM0FDNjE4RTYxQzYxMDAzQ0NC
QUUgLyogV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0gKi8sCiAJCQkJMUFBRjA4QTMxOTI2ODJE
QTAwQjYzOTBDIC8qIFdLVXNlckNvbnRlbnRDb250cm9sbGVySW50ZXJuYWwuaCAqLywKKwkJCQk3
Qzg5RDJCNTFBNkIwREQ5MDAzQTVGREUgLyogV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRl
LmggKi8sCiAJCQkJMUFBRjA4OTkxOTI2N0VFNTAwQjYzOTBDIC8qIFdLVXNlclNjcmlwdC5oICov
LAogCQkJCTFBQUYwODk4MTkyNjdFRTUwMEI2MzkwQyAvKiBXS1VzZXJTY3JpcHQubW0gKi8sCiAJ
CQkJMUFBRjA4OUMxOTI2N0ZDODAwQjYzOTBDIC8qIFdLVXNlclNjcmlwdEludGVybmFsLmggKi8s
CkBAIC02MDg4LDYgKzYxMDgsOCBAQAogCQkJCTFBRkRFNjVGMTk1NEU5QjEwMEM0OEZGQSAvKiBB
UElTZXNzaW9uU3RhdGUuY3BwICovLAogCQkJCTFBRkRFNjYwMTk1NEU5QjEwMEM0OEZGQSAvKiBB
UElTZXNzaW9uU3RhdGUuaCAqLywKIAkJCQkxQTRENjY0NzE4QTJEOTFBMDBEODJFMjEgLyogQVBJ
VUlDbGllbnQuaCAqLywKKwkJCQk3Qzg5RDJCMTFBNkIwNjhDMDAzQTVGREUgLyogQVBJVXNlckNv
bnRlbnRGaWx0ZXIuY3BwICovLAorCQkJCTdDODlEMkIyMUE2QjA2OEMwMDNBNUZERSAvKiBBUElV
c2VyQ29udGVudEZpbHRlci5oICovLAogCQkJCTdDODlEMkE1MUE2Nzg5RUEwMDNBNUZERSAvKiBB
UElVc2VyU2NyaXB0LmNwcCAqLywKIAkJCQk3Qzg5RDI5MjFBNjcxMjJGMDAzQTVGREUgLyogQVBJ
VXNlclNjcmlwdC5oICovLAogCQkJCTFBMzYzNUE3MUEzMTQ0QTMwMEVENjE5NyAvKiBBUElXZWJz
aXRlRGF0YVN0b3JlLmNwcCAqLywKQEAgLTYyMDUsNiArNjIyNyw4IEBACiAJCQkJN0M4OUQyOUUx
QTY3ODU1NDAwM0E1RkRFIC8qIFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmLmggKi8sCiAJCQkJ
N0M4OUQyQTExQTY3ODg3NTAwM0E1RkRFIC8qIFdLVXNlclNjcmlwdFJlZi5jcHAgKi8sCiAJCQkJ
N0M4OUQyQTIxQTY3ODg3NTAwM0E1RkRFIC8qIFdLVXNlclNjcmlwdFJlZi5oICovLAorCQkJCTdD
ODlEMkJEMUE2QjExRUYwMDNBNUZERSAvKiBXS1VzZXJDb250ZW50RmlsdGVyUmVmLmNwcCAqLywK
KwkJCQk3Qzg5RDJCRTFBNkIxMUVGMDAzQTVGREUgLyogV0tVc2VyQ29udGVudEZpbHRlclJlZi5o
ICovLAogCQkJKTsKIAkJCXBhdGggPSBDOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAg
LTczNDcsNiArNzM3MSw3IEBACiAJCQkJMEYxNzRBQTMxNDJBNENCNzAwMzkyNTBGIC8qIEFQSUdl
b21ldHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzY5MDc5RTE4RjM0MEEyMDAxREZGMDQgLyog
QVBJSW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzY5MDc5
QTE4RjMxQ0IyMDAxREZGMDQgLyogQVBJSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTdDODlEMkI2MUE2QjBERDkwMDNBNUZERSAvKiBXS1VzZXJDb250ZW50
Q29udHJvbGxlclByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTREMjA3MUE0Njc3NjEw
MEM3RjE1MiAvKiBBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUEyNDY0RjMxODkxRTQ1MTAwMjM0QzVCIC8qIEFQSUxvYWRlckNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJN0NEM0E0ODMxQTVEMDJGQTAwOTYyM0I4IC8qIEFQSU5hdmlnYXRpb24u
aCBpbiBIZWFkZXJzICovLApAQCAtNzQyNiw2ICs3NDUxLDcgQEAKIAkJCQlDNTE3Mzg4MTEyREY4
RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDODQ1MkE4MTE2MkM4MDkwMENBQjlCNSAvKiBEcmF3aW5nQXJlYS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZCNjU5MjMxMjA4QjREQjAwNDQ4MTZDIC8qIERyYXdpbmdBcmVhSW5mby5oIGluIEhl
YWRlcnMgKi8sCisJCQkJN0M4OUQyQzAxQTZCMTFFRjAwM0E1RkRFIC8qIFdLVXNlckNvbnRlbnRG
aWx0ZXJSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNjQyMjlBMTJERDAyOTIwMENBQUUyQyAv
KiBEcmF3aW5nQXJlYU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzI2NTIxNzExODI2
MDgxMDAyNDNFMTIgLyogRHJhd2luZ0FyZWFQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE2
NDIzMDkxMkREMDlFQjAwQ0FBRTJDIC8qIERyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCkBAIC03NTU5LDYgKzc1ODUsNyBAQAogCQkJCTFBOEVGOTZGMTI1MkFGNkIwMEY3
MDY3RiAvKiBQbHVnaW5Db250cm9sbGVyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUExNzk3ODAxMzdFRTgyQzAwRjk3RDQ1IC8qIFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0MzRjhDOTExNzNBRjUyRDAwN0I3RjM5IC8qIFBsdWdpbklu
Zm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk3Qzg5RDJCNDFBNkIwNjhDMDAzQTVGREUg
LyogQVBJVXNlckNvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRUZDQzEyMTFE
MDFGOTYwMDgyMTlEMyAvKiBQbHVnaW5JbmZvU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
M0Q2MTAyMTNBN0NDMkEwMEY5NUQ0RSAvKiBQbHVnaW5Nb2R1bGVJbmZvLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTA0Mzk3NjEyNEQwMzQ4MDBGRkJGQjUgLyogUGx1Z2luUHJvY2Vzcy5oIGluIEhl
YWRlcnMgKi8sCkBAIC03ODkxLDYgKzc5MTgsNyBAQAogCQkJCTgzNzJEQjJGMUE2NzdENEEwMEM2
OTdDNSAvKiBXS0RpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFCNDc0RTQxODRENDQ5ODAwNTFCNjIyIC8qIFdLQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xp
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI0NzRFODE4NEQ0NEQwMDA1MUI2MjIgLyogV0tC
dW5kbGVQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTdD
ODlEMkJDMUE2QjBGNUIwMDNBNUZERSAvKiBfV0tVc2VyQ29udGVudEZpbHRlckludGVybmFsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUI0NzRFMDE4NEQ0NDZBMDA1MUI2MjIgLyogV0tCdW5kbGVQ
YWdlRWRpdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI0NzRFMjE4NEQ0NDgwMDA1
MUI2MjIgLyogV0tCdW5kbGVQYWdlRm9ybUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFC
NDc0RTYxODRENDRCNDAwNTFCNjIyIC8qIFdLQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQuaCBp
biBIZWFkZXJzICovLApAQCAtNzk4MSw2ICs4MDA5LDcgQEAKIAkJCQk1MUE5RTEwQjEzMTVDRDE4
MDA5RTcwMzEgLyogV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkzM0QzQTNCNjEzMzk2MDBCMDA3MDlCRTQgLyogV0tNZWRpYUNhY2hlTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM0MDc1RkUxMjRGRjAyNzAwNjhGMjBBIC8qIFdLTXV0YWJsZUFycmF5
LmggaW4gSGVhZGVycyAqLywKKwkJCQk3Qzg5RDJCQTFBNkIwRjJDMDAzQTVGREUgLyogX1dLVXNl
ckNvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjAwMTI0RkYwMjcwMDY4
RjIwQSAvKiBXS011dGFibGVEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMDlBRTVF
OTEyNTI1N0MyMDAyNTgyNUQgLyogV0tOYXRpdmVFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUE1QjFDNTExODk4NjA2RjAwNEZDRjlCIC8qIFdLTmF2aWdhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CkBAIC05MjEyLDYgKzkyNDEsNyBAQAogCQkJCUU0NDM2RUNEMUEwRDA0MEIwMEVBRDIwNCAvKiBO
ZXR3b3JrQ2FjaGVLZXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ0MzZFRDAxQTBEMDQwQjAw
RUFEMjA0IC8qIE5ldHdvcmtDYWNoZVN0b3JhZ2VDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTUxM0ExNjRDMTYzMEE5QkYwMDVEN0QyMiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3Qzg5RDJCOTFBNkIwRjJDMDAzQTVGREUgLyogX1dL
VXNlckNvbnRlbnRGaWx0ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUREOUYyODE2MzY3REEy
MDAxNTc4RTkgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE2N0VFQTExNzAzNzdCRjAwNzY4MUNBIC8qIE5ldHdv
cmtEaXNrQ2FjaGVNb25pdG9yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3OTU1NjgxNjI4NzZD
RjAwRkE0M0I2IC8qIE5ldHdvcmtQcm9jZXNzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTQ3OSw2
ICs5NTA5LDcgQEAKIAkJCQk1MUM5NjExODE4M0QyOTQ3MDBEMjAwMkUgLyogV2ViSURCU2VydmVy
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0NGNkFC
QzEyQzkxRUY5MDA4RjlDMzUgLyogV2ViSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4
RTI4MjExMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk3Qzg5RDJCMzFBNkIwNjhDMDAzQTVGREUgLyogQVBJVXNlckNvbnRlbnRGaWx0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxMTFBNjAxMTJGNEZCQjAwMzM3QkFCIC8qIFdlYkluc3Bl
Y3RvckNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzhFMkEzNTEyNzc4NTI0MDBCQzdC
RDAgLyogV2ViSW5zcGVjdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFDOEUyODM1MTI3NUQ3MzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JQcm94eS5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTk2NTYsNiArOTY4Nyw3IEBACiAJCQkJQkMwMTdEMjAxNjI2MzMwODAwNzA1
NEY1IC8qIFdLRE9NVGV4dEl0ZXJhdG9yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCN0Q3OEUx
Mjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFG
NDU5MkUxOTQ2NEIyMDAwRjlENEEyIC8qIFdLRXJyb3IubW0gaW4gU291cmNlcyAqLywKKwkJCQk3
Qzg5RDJCRjFBNkIxMUVGMDAzQTVGREUgLyogV0tVc2VyQ29udGVudEZpbHRlclJlZi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQ0ZENTQ4QjEzMkQ4MjY4MDA1NUQ4MTYgLyogV0tFcnJvckNGLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDNDA3NUZCMTI0RkYwMjcwMDY4RjIwQSAvKiBXS0Vycm9y
UmVmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODlEMkEzMUE2Nzg4NzUwMDNBNUZERSAvKiBX
S1VzZXJTY3JpcHRSZWYuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDE3ODYxNykKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCwxMCAr
MTA0LDYgQEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNlbmRpZgog
Ci0jaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSNpbmNsdWRlIDxXZWJDb3JlL0NvbnRl
bnRFeHRlbnNpb25zTWFuYWdlci5oPgotI2VuZGlmCi0KICNpZiBFTkFCTEUoU0VDX0lURU1fU0hJ
TSkKICNpbmNsdWRlICJTZWNJdGVtU2hpbS5oIgogI2VuZGlmCkBAIC0xMzE5LDEzICsxMzE1LDYg
QEAgUmVmUHRyPEFQSTo6T2JqZWN0PiBXZWJQcm9jZXNzOjp0cmFuc2ZvcgogICAgIHJldHVybiBV
c2VyRGF0YTo6dHJhbnNmb3JtKG9iamVjdCwgVHJhbnNmb3JtZXIoKSk7CiB9CiAKLSNpZiBFTkFC
TEUoQ09OVEVOVF9FWFRFTlNJT05TKQotdm9pZCBXZWJQcm9jZXNzOjpsb2FkQ29udGVudEV4dGVu
c2lvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2VyaWFsaXplZFJ1
bGVzKQotewotICAgIENvbnRlbnRFeHRlbnNpb25zOjpFeHRlbnNpb25zTWFuYWdlcjo6bG9hZEV4
dGVuc2lvbihpZGVudGlmaWVyLCBzZXJpYWxpemVkUnVsZXMpOwotfQotI2VuZGlmCi0KIHZvaWQg
V2ViUHJvY2Vzczo6c2V0TWVtb3J5Q2FjaGVEaXNhYmxlZChib29sIGRpc2FibGVkKQogewogICAg
IGlmIChtZW1vcnlDYWNoZSgpLmRpc2FibGVkKCkgIT0gZGlzYWJsZWQpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMTc4NjE3KQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMiwx
MCArMjAyLDYgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUmljaENvbnRlbnRTZXJ2aWNlcygpIGNv
bnN0IHsgcmV0dXJuIG1faGFzUmljaENvbnRlbnRTZXJ2aWNlczsgfQogI2VuZGlmCiAKLSNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAgIHZvaWQgbG9hZENvbnRlbnRFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNlcmlhbGl6ZWRSdWxlcyk7
Ci0jZW5kaWYKLQogcHJpdmF0ZToKICAgICBXZWJQcm9jZXNzKCk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9u
IDE3ODYxNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtOTMsMTAgKzkzLDYgQEAgbWVzc2FnZXMgLT4gV2ViUHJv
Y2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0RW5hYmxlZFNlcnZpY2VzKGJvb2wgaGFzSW1h
Z2VTZXJ2aWNlcywgYm9vbCBoYXNTZWxlY3Rpb25TZXJ2aWNlcywgYm9vbCBoYXNSaWNoQ29udGVu
dFNlcnZpY2VzKQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAg
IExvYWRDb250ZW50RXh0ZW5zaW9uKFN0cmluZyBpZGVudGlmaWVyLCBTdHJpbmcgc2VyaWFsaXpl
ZFJ1bGVzKQotI2VuZGlmCi0KICAgICBQcm9jZXNzV2lsbFN1c3BlbmQoKQogICAgIENhbmNlbFBy
b2Nlc3NXaWxsU3VzcGVuZCgpCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXIuY3BwCShyZXZpc2lvbiAxNzg2MTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE4MCw0ICsxODAsMTcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVz
ZQogI2VuZGlmCiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQordm9pZCBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJDb250ZW50RmlsdGVycyhjb25zdCBWZWN0b3I8
c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHVzZXJDb250ZW50RmlsdGVycykKK3sKKyAgICBm
b3IgKGNvbnN0IGF1dG8mIHVzZXJDb250ZW50RmlsdGVyIDogdXNlckNvbnRlbnRGaWx0ZXJzKQor
ICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlckNvbnRlbnRGaWx0ZXIodXNl
ckNvbnRlbnRGaWx0ZXIuZmlyc3QsIHVzZXJDb250ZW50RmlsdGVyLnNlY29uZCk7Cit9CisKK3Zv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVBbGxVc2VyQ29udGVudEZpbHRlcnMo
KQoreworICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5yZW1vdmVBbGxVc2VyQ29udGVudEZp
bHRlcnMoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAkocmV2aXNpb24gMTc4NjE3KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNTEsMTUgKzUxLDIwIEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIuCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKIAotICAgIHZvaWQg
YWRkVXNlclNjcmlwdHMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVzZXJTY3JpcHQ+JiB1c2VyU2Ny
aXB0cyk7CisgICAgdm9pZCBhZGRVc2VyU2NyaXB0cyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6VXNl
clNjcmlwdD4mKTsKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJTY3JpcHRzKCk7CiAKLSAgICB2b2lk
IGFkZFVzZXJTdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+
JiB1c2VyU3R5bGVTaGVldHMpOworICAgIHZvaWQgYWRkVXNlclN0eWxlU2hlZXRzKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpVc2VyU3R5bGVTaGVldD4mKTsKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJT
dHlsZVNoZWV0cygpOwogCi0gICAgdm9pZCBhZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKGNv
bnN0IFZlY3RvcjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckhhbmRsZT4mIHNjcmlwdE1lc3NhZ2VI
YW5kbGVycyk7CisgICAgdm9pZCBhZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKGNvbnN0IFZl
Y3RvcjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckhhbmRsZT4mKTsKICAgICB2b2lkIHJlbW92ZVVz
ZXJTY3JpcHRNZXNzYWdlSGFuZGxlcih1aW50NjRfdCk7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9F
WFRFTlNJT05TKQorICAgIHZvaWQgYWRkVXNlckNvbnRlbnRGaWx0ZXJzKGNvbnN0IFZlY3Rvcjxz
dGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYpOworICAgIHZvaWQgcmVtb3ZlQWxsVXNlckNvbnRl
bnRGaWx0ZXJzKCk7CisjZW5kaWYKKwogICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKICAgICBS
ZWY8V2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVyPiBtX3VzZXJDb250ZW50Q29udHJvbGxl
cjsKICNpZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE3ODYxNykK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxMSArMjUsMTYgQEAK
IAogbWVzc2FnZXMgLT4gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyIHsKICAgICBBZGRVc2VyU2Ny
aXB0cyhWZWN0b3I8V2ViQ29yZTo6VXNlclNjcmlwdD4gdXNlclNjcmlwdHMpOwotICAgIFJlbW92
ZUFsbFVzZXJTY3JpcHRzKCkKKyAgICBSZW1vdmVBbGxVc2VyU2NyaXB0cygpOwogCi0gICAgQWRk
VXNlclN0eWxlU2hlZXRzKFZlY3RvcjxXZWJDb3JlOjpVc2VyU3R5bGVTaGVldD4gdXNlclN0eWxl
U2hoZXRzKTsKLSAgICBSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKQorICAgIEFkZFVzZXJTdHls
ZVNoZWV0cyhWZWN0b3I8V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+IHVzZXJTdHlsZVNoZWV0cyk7
CisgICAgUmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCk7CiAKICAgICBBZGRVc2VyU2NyaXB0TWVz
c2FnZUhhbmRsZXJzKFZlY3RvcjxXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVySGFuZGxl
PiBzY3JpcHRNZXNzYWdlSGFuZGxlcnMpOwotICAgIFJlbW92ZVVzZXJTY3JpcHRNZXNzYWdlSGFu
ZGxlcih1aW50NjRfdCBpZGVudGlmaWVyKQorICAgIFJlbW92ZVVzZXJTY3JpcHRNZXNzYWdlSGFu
ZGxlcih1aW50NjRfdCBpZGVudGlmaWVyKTsKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCisgICAgQWRkVXNlckNvbnRlbnRGaWx0ZXJzKFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBT
dHJpbmc+PiB1c2VyQ29udGVudEZpbHRlcnMpOworICAgIFJlbW92ZUFsbFVzZXJDb250ZW50Rmls
dGVycygpOworI2VuZGlmCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244852</attachid>
            <date>2015-01-17 21:11:05 -0800</date>
            <delta_ts>2015-01-18 12:44:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140584-20150117211112.patch</filename>
            <type>text/plain</type>
            <size>75185</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3ODYyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE1LTAxLTE3ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGluaXRpYWwgZXhwZXJpbWVudGFs
IHVzZXIgY29udGVudCBmaWx0ZXJpbmcgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDA1ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgY29udGVudCBleHRlbnNpb25zIHRvIGJlIG1hbmFn
ZWQgdGhyb3VnaCB0aGUgVXNlckNvbnRlbnRDb250cm9sbGVyLgorCisgICAgICAgICogV2ViQ29y
ZS5leHAuaW46CisgICAgICAgIFVwZGF0ZSBleHBvcnRzLgorCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBVcGRhdGUgZm9yIHJlbW92ZWQgZmls
ZXMuCisKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRl
bnNpb25zQmFja2VuZDo6cmVtb3ZlQWxsUnVsZUxpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnNoYXJlZEluc3RhbmNl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQuaDoKKyAgICAgICAgUmVtb3ZlIGNvbmNlcHQgb2YgYSBzaGFyZWQgaW5zdGFuY2Ug
YW5kIGFkZCBhIHJlbW92ZUFsbFJ1bGVMaXN0cygpIGZ1bmN0aW9uLgorICAgICAgICAKKyAgICAg
ICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0ludGVyZmFjZS5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNJbnRl
cmZhY2UuaDogUmVtb3ZlZC4KKyAgICAgICAgU2luY2UgdGhlcmUgaXMgbm8gc2hhcmVkIGluc3Rh
bmNlIGFueW1vcmUsIGNoZWNraW5nIGlmIGEgVVJMIHNob3VsZCBiZSBibG9ja2VkCisgICAgICAg
IG5vdyBoYXMgdG8gZ28gZGlyZWN0bHkgdG8gdGhlIGJhY2tlbmQuCisgICAgICAgIAorICAgICAg
ICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6RXh0ZW5zaW9uc01hbmFnZXI6OmNyZWF0
ZVJ1bGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpFeHRlbnNp
b25zTWFuYWdlcjo6bG9hZEV4dGVuc2lvbik6IERlbGV0ZWQuCisgICAgICAgICogY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNNYW5hZ2VyLmg6CisgICAgICAgIFVwZGF0ZSBpbnRl
cmZhY2UgdG8gYWNjb21tb2RhdGUgdGhlIGxhY2sgb2YgYSBzaGFyZWQgaW5zdGFuY2UuIE5vdywg
YWxsIHRoaXMKKyAgICAgICAgZmlsZSBkb2VzIGlzIHRha2UgYSBzZXJpYWxpemVkIHJ1bGUgbGlz
dCBhbmQgb3V0cHV0cyB0aGUgVmVjdG9yIG9mIENvbnRlbnRFeHRlbnNpb25SdWxlcworCisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgorICAgICAgICBD
aGVjayB3aXRoIHRoZSBVc2VyQ29udGVudENvbnRyb2xsZXIgdG8gc2VlIGlmIHRoZSBVUkwgc2hv
dWxkIGJlIGJsb2NrZWQuCisKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJDb250
ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVt
b3ZlQWxsVXNlckNvbnRlbnRGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJDb250ZW50
Q29udHJvbGxlcjo6Y29udGVudEZpbHRlckJsb2Nrc1VSTCk6CisgICAgICAgICogcGFnZS9Vc2Vy
Q29udGVudENvbnRyb2xsZXIuaDoKKyAgICAgICAgQWRkIHNpbmdsZSBwb2ludCBvZiBpbnRlcmFj
dGlvbiBmb3IgYm90aCB0aGUgV2ViS2l0IGxldmVsIHRvIGFkZCBhbmQgcmVtb3ZlCisgICAgICAg
IGNvbnRlbnQgZmlsdGVycyBhbmQgV2ViQ29yZSB0byBjaGVjayB0byBzZWUgaWYgVVJMcyBzaG91
bGQgYmUgYmxvY2tlZC4KKwogMjAxNS0wMS0xNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4Zmll
bGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtTVkcgLT4gT1RGIENvbnZlcnRlcl0gQ3Jhc2hlcyB3
aGVuIFNWRyBmb250IGlzIGludmFsaWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lv
biAxNzg2MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5
KQpAQCAtMzAxMSw3ICszMDExLDggQEAgX19aTjdXZWJDb3JlMzdzeW50aGVzaXplUmVkaXJlY3RS
ZXNwb25zZQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotX19aTjdX
ZWJDb3JlMTdDb250ZW50RXh0ZW5zaW9uczE3RXh0ZW5zaW9uc01hbmFnZXIxM2xvYWRFeHRlbnNp
b25FUktOM1dURjZTdHJpbmdFUzVfCitfX1pON1dlYkNvcmUyMVVzZXJDb250ZW50Q29udHJvbGxl
cjIwYWRkVXNlckNvbnRlbnRGaWx0ZXJFUktOM1dURjZTdHJpbmdFUzRfCitfX1pON1dlYkNvcmUy
MVVzZXJDb250ZW50Q29udHJvbGxlcjI3cmVtb3ZlQWxsVXNlckNvbnRlbnRGaWx0ZXJzRXYKICNl
bmRpZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTc4
NjE3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDQ1LDggKzEwNDUsNiBAQAogCQkyNkMxN0EzRTE0OTFEMkQ0
MDBEMTJCQTIgLyogRmlsZVN5c3RlbUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMjZDMTdBM0MxNDkxRDJENDAwRDEyQkEyIC8qIEZpbGVTeXN0ZW1J
T1MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQky
NkMxN0EzRjE0OTFEMkQ0MDBEMTJCQTIgLyogRmlsZVN5c3RlbUlPUy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2QzE3QTNEMTQ5MUQyRDQwMEQxMkJB
MiAvKiBGaWxlU3lzdGVtSU9TLm1tICovOyB9OwogCQkyNkU5OEExMDEzMEE5RkNBMDA4RUI3QjIg
LyogVGV4dENvZGVjQVNDSUlGYXN0UGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMjZFOThBMEYxMzBBOUZDQTAwOEVCN0IyIC8qIFRleHRDb2RlY0FT
Q0lJRmFzdFBhdGguaCAqLzsgfTsKLQkJMjZGMEM4OTIxQTJENzlDQjAwMjc5NEY4IC8qIENvbnRl
bnRFeHRlbnNpb25zSW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyNkYwQzg5MTFBMkQ3OUNCMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lv
bnNJbnRlcmZhY2UuaCAqLzsgfTsKLQkJMjZGMEM4OTQxQTJEN0E3NjAwMjc5NEY4IC8qIENvbnRl
bnRFeHRlbnNpb25zSW50ZXJmYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDI2RjBDODkzMUEyRDdBNzYwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5z
aW9uc0ludGVyZmFjZS5jcHAgKi87IH07CiAJCTI2RjBDODk3MUEyRTcyNEIwMDI3OTRGOCAvKiBD
b250ZW50RXh0ZW5zaW9uc01hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMjZGMEM4OTUxQTJFNzI0QjAwMjc5NEY4IC8qIENvbnRlbnRFeHRl
bnNpb25zTWFuYWdlci5jcHAgKi87IH07CiAJCTI2RjBDODk4MUEyRTcyNEIwMDI3OTRGOCAvKiBD
b250ZW50RXh0ZW5zaW9uc01hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDI2RjBDODk2MUEyRTcyNEIwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5z
aW9uc01hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkyNkYwQzg5QjFBMkVDMTEwMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lvblJ1bGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZGMEM4
OTkxQTJFQzExMDAwMjc5NEY4IC8qIENvbnRlbnRFeHRlbnNpb25SdWxlLmNwcCAqLzsgfTsKQEAg
LTgwNDksOCArODA0Nyw2IEBACiAJCTI2QzE3QTNDMTQ5MUQyRDQwMEQxMkJBMiAvKiBGaWxlU3lz
dGVtSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbGVTeXN0ZW1JT1Mu
aDsgcGF0aCA9IGlvcy9GaWxlU3lzdGVtSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTI2QzE3QTNEMTQ5MUQyRDQwMEQxMkJBMiAvKiBGaWxlU3lzdGVtSU9TLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRmlsZVN5c3RlbUlPUy5tbTsgcGF0aCA9
IGlvcy9GaWxlU3lzdGVtSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNkU5
OEEwRjEzMEE5RkNBMDA4RUI3QjIgLyogVGV4dENvZGVjQVNDSUlGYXN0UGF0aC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0Q29kZWNBU0NJSUZhc3RQYXRoLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTI2RjBDODkxMUEyRDc5Q0IwMDI3OTRGOCAvKiBDb250
ZW50RXh0ZW5zaW9uc0ludGVyZmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb250ZW50RXh0ZW5zaW9uc0ludGVyZmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkyNkYwQzg5MzFBMkQ3QTc2MDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lvbnNJbnRlcmZh
Y2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVudEV4dGVu
c2lvbnNJbnRlcmZhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNkYwQzg5
NTFBMkU3MjRCMDAyNzk0RjggLyogQ29udGVudEV4dGVuc2lvbnNNYW5hZ2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb25zTWFuYWdlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2RjBDODk2MUEyRTcyNEIwMDI3OTRG
OCAvKiBDb250ZW50RXh0ZW5zaW9uc01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29udGVudEV4dGVuc2lvbnNNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTI2RjBDODk5MUEyRUMxMTAwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uUnVs
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50RXh0ZW5z
aW9uUnVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NzIwLDggKzk3MTYs
OCBAQAogCQk4MzlBQUZFQTFBMEMwQzhEMDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTFdCUkVsZW1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzlBQUZFQjFBMEMwQzhEMDA2MDVGOTkgLyog
SFRNTFdCUkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTFdC
UkVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCOTY4NzkxOUY4QUI4
MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZlcnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJODNDMDVBNTgxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9y
dGhhbmRGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IG5hbWUgPSBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmNwcDsgcGF0
aCA9IFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk4M0MwNUE1OTFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZEZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IG5hbWUgPSBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmg7IHBhdGgg
PSBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTgzQzA1QTU4MUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRo
YW5kRnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0
eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk4M0MwNUE1OTFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0eVNob3J0aGFu
ZEZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZVByb3Bl
cnR5U2hvcnRoYW5kRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgz
QzFENDEzMTc4RDVBQjQwMDE0MUU2OCAvKiBTVkdQYXRoU2VnQXJjQWJzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1BhdGhTZWdBcmNBYnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODNDMUQ0MTQxNzhENUFCNDAwMTQxRTY4IC8qIFNWR1BhdGhTZWdBcmNS
ZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUGF0aFNlZ0FyY1JlbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0MxRDQxNTE3OEQ1QUI0MDAxNDFFNjgg
LyogU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNTMyOCw4ICsxNTMyNCw2IEBACiAJCQkJMjZGMEM4OUQxQTJFQzNCRTAwMjc5
NEY4IC8qIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAgKi8sCiAJCQkJMjZGMEM4OUUxQTJF
QzNCRTAwMjc5NEY4IC8qIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oICovLAogCQkJCTI2MjM5
MTM1MUE2NDhDRUUwMDcyNTFBMyAvKiBDb250ZW50RXh0ZW5zaW9uc0RlYnVnZ2luZy5oICovLAot
CQkJCTI2RjBDODkzMUEyRDdBNzYwMDI3OTRGOCAvKiBDb250ZW50RXh0ZW5zaW9uc0ludGVyZmFj
ZS5jcHAgKi8sCi0JCQkJMjZGMEM4OTExQTJENzlDQjAwMjc5NEY4IC8qIENvbnRlbnRFeHRlbnNp
b25zSW50ZXJmYWNlLmggKi8sCiAJCQkJMjZGMEM4OTUxQTJFNzI0QjAwMjc5NEY4IC8qIENvbnRl
bnRFeHRlbnNpb25zTWFuYWdlci5jcHAgKi8sCiAJCQkJMjZGMEM4OTYxQTJFNzI0QjAwMjc5NEY4
IC8qIENvbnRlbnRFeHRlbnNpb25zTWFuYWdlci5oICovLAogCQkJCTI2NzcyNUY2MUE1QjNBRDkw
MDNDMjRERCAvKiBERkEuY3BwICovLApAQCAtMjYyODMsNyArMjYyNzcsNiBAQAogCQkJCTg0MTlE
MkFEMTIwRDkyRkMwMDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODQ3NkM5RUMxMURGNkEyOTAwNTU1QjAyIC8qIFNWR1BhdGhDb25zdW1lci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNzE1MzdBMDExNDZCRDlENzAwOEJENjE1IC8qIFNWR1BhdGhE
YXRhLmggaW4gSGVhZGVycyAqLywKLQkJCQkyNkYwQzg5MjFBMkQ3OUNCMDAyNzk0RjggLyogQ29u
dGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTU5MEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3
NkM5RjAxMURGNkE1ODAwNTU1QjAyIC8qIFNWR1BhdGhQYXJzZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyMjI3QTVCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoU2VnLmggaW4gSGVhZGVycyAq
LywKQEAgLTI3NDcxLDcgKzI3NDY0LDYgQEAKIAkJCQk5MzMwOURERTA5OUU2NDkyMDA1NkU1ODEg
LyogRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMw
OURFMDA5OUU2NDkyMDA1NkU1ODEgLyogRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBN0M5QUJGODEzNTdBM0JGMDBGNTUwM0YgLyogRGV0YWlsc01hcmtlckNv
bnRyb2wuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMjZGMEM4OTQxQTJEN0E3NjAwMjc5NEY4IC8q
IENvbnRlbnRFeHRlbnNpb25zSW50ZXJmYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNDQzJC
NTE1MTVGNjEzMDYwMDQ4Q0RENiAvKiBEZXZpY2VDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTMxRUFGOTdGMTIxNDM1QTQwMEU3QzFCRiAvKiBEZXZpY2VNb3Rpb25DbGllbnRJT1Mu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkzMUZCMUE1ODEyMEE1RDA2MDBEQzAyQTAgLyogRGV2aWNl
TW90aW9uQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNC
YWNrZW5kLmNwcAkocmV2aXNpb24gMTc4NjE3KQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDIsMTIgKzQyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgQ29udGVudEV4
dGVuc2lvbnMgewogCi1Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQmIENvbnRlbnRFeHRlbnNpb25z
QmFja2VuZDo6c2hhcmVkSW5zdGFuY2UoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxD
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ+IGluc3RhbmNlOwotICAgIHJldHVybiBpbnN0YW5jZTsK
LX0KLQogdm9pZCBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnNldFJ1bGVMaXN0KGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllciwgY29uc3QgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiYgcnVs
ZUxpc3QpCiB7CiAgICAgQVNTRVJUKCFpZGVudGlmaWVyLmlzRW1wdHkoKSk7CkBAIC0xMTIsNiAr
MTA2LDExIEBAIHZvaWQgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpyZW1vdmVSdWwKICAgICBt
X3J1bGVMaXN0cy5yZW1vdmUoaWRlbnRpZmllcik7CiB9CiAKK3ZvaWQgQ29udGVudEV4dGVuc2lv
bnNCYWNrZW5kOjpyZW1vdmVBbGxSdWxlTGlzdHMoKQoreworICAgIG1fcnVsZUxpc3RzLmNsZWFy
KCk7Cit9CisKIGJvb2wgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpzaG91bGRCbG9ja1VSTChj
b25zdCBVUkwmIHVybCkKIHsKICAgICBjb25zdCBTdHJpbmcmIHVybFN0cmluZyA9IHVybC5zdHJp
bmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25zQmFja2VuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oCShyZXZpc2lvbiAxNzg2MTcpCisrKyBT
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTUgKzQ3LDEzIEBAIG5hbWVzcGFjZSBDb250ZW50RXh0
ZW5zaW9ucyB7CiAvLyAyKSBJdCBwcm92aWRlcyBBUElzIGZvciB0aGUgV2ViQ29yZSBpbnRlcmZh
Y2VzIHRvIHVzZSB0aG9zZSBydWxlcyBlZmZpY2llbnRseS4KIGNsYXNzIENvbnRlbnRFeHRlbnNp
b25zQmFja2VuZCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIENvbnRlbnRFeHRlbnNpb25zQmFja2Vu
ZCYgc2hhcmVkSW5zdGFuY2UoKTsKLQogICAgIC8vIC0gUnVsZSBtYW5hZ2VtZW50IGludGVyZmFj
ZS4gVGhpcyBjYW4gYmUgdXNlZCBieSB1cHBlciBsYXllci4KIAogICAgIC8vIFNldCBhIGxpc3Qg
b2YgcnVsZXMgZm9yIGEgZ2l2ZW4gbmFtZS4gSWYgdGhlcmUgd2VyZSBleGlzdGluZyBydWxlcyBm
b3IgdGhlIG5hbWUsIHRoZXkgYXJlIG92ZXJyaWRlbi4KICAgICAvLyBUaGUgaWRlbnRpZmllciBj
YW5ub3QgYmUgZW1wdHkuCiAgICAgdm9pZCBzZXRSdWxlTGlzdChjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIGNvbnN0IFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUnVsZT4mKTsKLQogICAgIHZvaWQg
cmVtb3ZlUnVsZUxpc3QoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbW92
ZUFsbFJ1bGVMaXN0cygpOwogCiAgICAgLy8gLSBJbnRlcm5hbCBXZWJDb3JlIEludGVyZmFjZS4K
ICAgICBib29sIHNob3VsZEJsb2NrVVJMKGNvbnN0IFVSTCYpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25zSW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMTc4NjE3KQorKysgU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiQ29udGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuaCIKLQotI2lmIEVOQUJMRShDT05U
RU5UX0VYVEVOU0lPTlMpCi0KLSNpbmNsdWRlICJDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKLQot
Ym9vbCBzaG91bGRCbG9ja1VSTChjb25zdCBVUkwmIHVybCkKLXsKLSAgICByZXR1cm4gQ29udGVu
dEV4dGVuc2lvbnNCYWNrZW5kOjpzaGFyZWRJbnN0YW5jZSgpLnNob3VsZEJsb2NrVVJMKHVybCk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpJbmRleDogU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNJbnRlcmZhY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uc0ludGVyZmFjZS5oCShyZXZpc2lvbiAxNzg2MTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0ludGVyZmFjZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENvbnRl
bnRFeHRlbnNpb25zSW50ZXJmYWNlX2gKLSNkZWZpbmUgQ29udGVudEV4dGVuc2lvbnNJbnRlcmZh
Y2VfaAotCi0jaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBVUkw7Ci0KLS8vIFRoaXMgZGVmaW5lcyB0aGUgaW50ZXJmYWNlIGJ5IHdo
aWNoIFdlYkNvcmUgaW50ZXJhY3Qgd2l0aCBDb250ZW50IEV4dGVuc2lvbnMuCi1uYW1lc3BhY2Ug
Q29udGVudEV4dGVuc2lvbnMgewotYm9vbCBzaG91bGRCbG9ja1VSTChjb25zdCBVUkwmKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRVhU
RU5TSU9OUykKLQotI2VuZGlmIC8vIENvbnRlbnRFeHRlbnNpb25zSW50ZXJmYWNlX2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zTWFuYWdl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbnNNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTc4NjE3KQorKysgU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNNYW5hZ2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTU4LDcgKzE1OCw3IEBAIHN0YXRpYyBWZWN0b3I8Q29udGVudEV4dGVu
c2lvblJ1bGU+IGxvYWQKICAgICByZXR1cm4gVmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPigp
OwogfQogCi12b2lkIGxvYWRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHJ1bGVzKQorVmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiBjcmVhdGVSdWxl
TGlzdChjb25zdCBTdHJpbmcmIHJ1bGVzKQogewogI2lmIENPTlRFTlRfRVhURU5TSU9OU19QRVJG
T1JNQU5DRV9SRVBPUlRJTkcKICAgICBkb3VibGUgbG9hZEV4dGVuc2lvblN0YXJ0VGltZSA9IG1v
bm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwpAQCAtMTczLDE3ICsxNzMsMTUgQEAgdm9pZCBs
b2FkRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgaWRlbnRpZgogCiAgICAgdm0uY2xlYXIoKTsKIAot
ICAgIGlmIChydWxlTGlzdC5pc0VtcHR5KCkpIHsKKyAgICBpZiAocnVsZUxpc3QuaXNFbXB0eSgp
KQogICAgICAgICBXVEZMb2dBbHdheXMoIkVtcHR5IGV4dGVuc2lvbi4iKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KIAogI2lmIENPTlRFTlRfRVhURU5TSU9OU19QRVJGT1JNQU5DRV9SRVBPUlRJ
TkcKICAgICBkb3VibGUgbG9hZEV4dGVuc2lvbkVuZFRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWUoKTsKICAgICBkYXRhTG9nRigiVGltZSBzcGVudCBsb2FkaW5nIGV4dGVuc2lvbiAl
czogJWZcbiIsIGlkZW50aWZpZXIudXRmOCgpLmRhdGEoKSwgKGxvYWRFeHRlbnNpb25FbmRUaW1l
IC0gbG9hZEV4dGVuc2lvblN0YXJ0VGltZSkpOwogI2VuZGlmCiAKLSAgICBDb250ZW50RXh0ZW5z
aW9uc0JhY2tlbmQ6OnNoYXJlZEluc3RhbmNlKCkuc2V0UnVsZUxpc3QoaWRlbnRpZmllciwgcnVs
ZUxpc3QpOworICAgIHJldHVybiBydWxlTGlzdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgRXh0ZW5z
aW9uc01hbmFnZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25zTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zTWFuYWdlci5oCShyZXZpc2lvbiAxNzg2MTcp
CisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc01h
bmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTUgKzI5LDE4IEBACiAjaWYgRU5BQkxFKENP
TlRFTlRfRVhURU5TSU9OUykKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBDb250ZW50
RXh0ZW5zaW9ucyB7CiAKK2NsYXNzIENvbnRlbnRFeHRlbnNpb25SdWxlOworCiAvLyBUaGUgRXh0
ZW5zaW9uc01hbmFnZXIgbG9hZHMgc2VyaWFsaXplZCBjb250ZW50IGV4dGVuc2lvbiBydWxlcyBk
aXJlY3RseSBpbnRvIFdlYkNvcmUuCiBuYW1lc3BhY2UgRXh0ZW5zaW9uc01hbmFnZXIgewogCi12
b2lkIGxvYWRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHJ1bGVzKTsKK1ZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUnVsZT4gY3JlYXRlUnVsZUxpc3QoY29u
c3QgU3RyaW5nJiBydWxlcyk7CiAKIH0gLy8gbmFtZXNwYWNlIEV4dGVuc2lvbnNNYW5hZ2VyCiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTc4NjE3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsMTMg
KzYwLDEwIEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXNzaW9u
SUQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCi0jaW5jbHVk
ZSAiQ29udGVudEV4dGVuc2lvbnNJbnRlcmZhY2UuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQogI2luY2x1ZGUgIkNhY2hlZFRleHRUcmFjay5oIgogI2VuZGlmCkBAIC00NTgs
NyArNDU1LDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhYwogICAg
ICAgICByZXR1cm4gMDsKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCi0gICAgaWYg
KENvbnRlbnRFeHRlbnNpb25zOjpzaG91bGRCbG9ja1VSTCh1cmwpKQorICAgIGlmIChmcmFtZSgp
ICYmIGZyYW1lKCktPnBhZ2UoKSAmJiBmcmFtZSgpLT5wYWdlKCktPnVzZXJDb250ZW50Q29udHJv
bGxlcigpICYmIGZyYW1lKCktPnBhZ2UoKS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCktPmNvbnRl
bnRGaWx0ZXJCbG9ja3NVUkwodXJsKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYK
IApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmNw
cAkocmV2aXNpb24gMTc4NjE3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNywxMSBAQAogI2luY2x1ZGUg
IlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKENP
TlRFTlRfRVhURU5TSU9OUykKKyNpbmNsdWRlICJDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaCIK
KyNpbmNsdWRlICJDb250ZW50RXh0ZW5zaW9uc01hbmFnZXIuaCIKKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFJlZlB0cjxVc2VyQ29udGVudENvbnRyb2xsZXI+IFVzZXJDb250ZW50
Q29udHJvbGxlcjo6Y3JlYXRlKCkKQEAgLTE3Myw2ICsxNzgsMzMgQEAgdm9pZCBVc2VyQ29udGVu
dENvbnRyb2xsZXI6OnJlbW92ZVVzZXJNZQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQordm9pZCBVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJDb250ZW50
RmlsdGVyKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBydWxlTGlzdCkKK3sKKyAg
ICBpZiAoIW1fY29udGVudEV4dGVuc2lvbkJhY2tlbmQpCisgICAgICAgIG1fY29udGVudEV4dGVu
c2lvbkJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQ+KCk7CisgICAgCisgICAgbV9jb250ZW50RXh0ZW5zaW9uQmFja2Vu
ZC0+c2V0UnVsZUxpc3QobmFtZSwgQ29udGVudEV4dGVuc2lvbnM6OkV4dGVuc2lvbnNNYW5hZ2Vy
OjpjcmVhdGVSdWxlTGlzdChydWxlTGlzdCkpOworfQorCit2b2lkIFVzZXJDb250ZW50Q29udHJv
bGxlcjo6cmVtb3ZlQWxsVXNlckNvbnRlbnRGaWx0ZXJzKCkKK3sKKyAgICBpZiAoIW1fY29udGVu
dEV4dGVuc2lvbkJhY2tlbmQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29udGVudEV4dGVu
c2lvbkJhY2tlbmQtPnJlbW92ZUFsbFJ1bGVMaXN0cygpOworfQorCitib29sIFVzZXJDb250ZW50
Q29udHJvbGxlcjo6Y29udGVudEZpbHRlckJsb2Nrc1VSTChjb25zdCBVUkwmIHVybCkKK3sKKyAg
ICBpZiAoIW1fY29udGVudEV4dGVuc2lvbkJhY2tlbmQpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiBtX2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kLT5zaG91bGRCbG9ja1VSTCh1
cmwpOworfQorCisjZW5kaWYKKwogdm9pZCBVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZUFs
bFVzZXJDb250ZW50KCkKIHsKICAgICBtX3VzZXJTY3JpcHRzID0gbnVsbHB0cjsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuaAkocmV2aXNpb24gMTc4
NjE3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNDUsNiArNDUsMTAgQEAgY2xhc3MgVXNlclNjcmlwdDsKIGNsYXNzIFVz
ZXJTdHlsZVNoZWV0OwogY2xhc3MgVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcjsKIAorbmFt
ZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKK2NsYXNzIENvbnRlbnRFeHRlbnNpb25zQmFja2Vu
ZDsKK30KKwogY2xhc3MgVXNlckNvbnRlbnRDb250cm9sbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8
VXNlckNvbnRlbnRDb250cm9sbGVyPiB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxVc2VyQ29udGVudENvbnRyb2xsZXI+IGNyZWF0ZSgpOwpAQCAtNzQsNiArNzgs
MTUgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlVXNlck1lc3NhZ2VI
YW5kbGVyRGVzY3JpcHRvcihVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yJik7CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIHJlYWxseSB0YWtlIGEgcG9pbnRlciB0byBhIGNvbXBpbGVkIFVzZXJDb250ZW50RmlsdGVy
LgorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkVXNlckNvbnRlbnRGaWx0ZXIoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHJ1bGVMaXN0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlbW92ZUFsbFVzZXJDb250ZW50RmlsdGVycygpOworICAgIAorICAgIC8vIEZJWE1FOiBD
b25zaWRlciBwdXR0aW5nIHRoaXMgKGFuZCBvdGhlciBmdXR1cmUgY29udGVudCBmaWx0ZXIgcHJl
ZGljYXRlcykgaW4gaXRzIG93biBjbGFzcy4KKyAgICBib29sIGNvbnRlbnRGaWx0ZXJCbG9ja3NV
UkwoY29uc3QgVVJMJik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBVc2VyQ29udGVudENvbnRy
b2xsZXIoKTsKIApAQCAtODYsNiArOTksOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShVU0VSX01F
U1NBR0VfSEFORExFUlMpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0b3JNYXA+IG1fdXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvcnM7CiAjZW5kaWYKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50
RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kPiBtX2NvbnRlbnRFeHRlbnNpb25C
YWNrZW5kOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxNzg2MjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw3MyBAQAorMjAxNS0wMS0xNyAgU2FtIFdlaW5pZyAgPHNhbUB3
ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBpbml0aWFsIGV4cGVyaW1lbnRhbCB1c2VyIGNvbnRl
bnQgZmlsdGVyaW5nIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQwNTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTW92ZXMgY29udGVudCBmaWx0ZXJpbmcgZnJvbSBiZWluZyBwZXItUHJvY2Vzc1Bv
b2wgdG8gcGVyLVVzZXJDb250ZW50Q29udHJvbGxlci4KKworICAgICAgICAqIFNoYXJlZC9BUEkv
QVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQmFzZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRGaWx0ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KEFQSTo6VXNlckNvbnRlbnRGaWx0ZXI6OlVzZXJDb250ZW50RmlsdGVyKToKKyAgICAgICAgKEFQ
STo6VXNlckNvbnRlbnRGaWx0ZXI6On5Vc2VyQ29udGVudEZpbHRlcik6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElVc2VyQ29udGVudEZpbHRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLVXNl
ckNvbnRlbnRGaWx0ZXJSZWYuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLVXNlckNvbnRlbnRGaWx0
ZXJHZXRUeXBlSUQpOgorICAgICAgICAoV0tVc2VyQ29udGVudEZpbHRlckNyZWF0ZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRGaWx0ZXJSZWYuaDogQWRkZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dlYktpdDJfQy5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRGaWx0ZXIuaDogQWRkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudEZpbHRlci5tbTogQWRkZWQuCisgICAgICAg
IChXS1VzZXJDb250ZW50Q29udHJvbGxlckFkZFVzZXJDb250ZW50RmlsdGVyKToKKyAgICAgICAg
KFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVtb3ZlQWxsVXNlckNvbnRlbnRGaWx0ZXJzKToKKyAg
ICAgICAgKC1bX1dLVXNlckNvbnRlbnRGaWx0ZXIgX2luaXRXaXRoTmFtZTpydWxlTGlzdDpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50RmlsdGVySW50ZXJu
YWwuaDogQWRkZWQuCisgICAgICAgIEFkZCBhIGJhc2ljIFVzZXJDb250ZW50RmlsdGVyIHR5cGUg
YW5kIGV4cG9zZSBpdCB2aWEgYm90aCB0aGUgT2JqZWN0aXZlLUMgQVBJIChhcyBfV0tVc2VyQ29u
dGVudEZpbHRlcikKKyAgICAgICAgYW5kIHZpYSB0aGUgQyBTUEkgKGFzIFdLVXNlckNvbnRlbnRG
aWx0ZXJSZWYpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRDb250
cm9sbGVyUmVmLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRDb250
cm9sbGVyUmVmLmNwcDoKKyAgICAgICAgQWRkIEMtU1BJIHRvIHNldCBhbmQgcmVtb3ZlIFdLVXNl
ckNvbnRlbnRGaWx0ZXJSZWZzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9sb2FkQ29udGVudEV4dGVu
c2lvbldpdGhJZGVudGlmaWVyOnNlcmlhbGl6ZWRSdWxlczpzdWNjZXNzQ29tcGxldGlvbkhhbmRs
ZXI6ZXJyb3JDb21wbGV0aW9uSGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBy
b2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6bG9hZENvbnRlbnRFeHRlbnNpb24pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmxvYWRDb250ZW50RXh0ZW5zaW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgIFJlbW92ZSB0aGUgb2xkIFNQSSBm
b3IgbG9hZGluZyBjb250ZW50IGZpbHRlcnMgdGhhdCB3YXMgcGVyLVByb2Nlc3NQb29sLiBDb250
ZW50IGZpbHRlcnMgbm93IGZvbGxvdworICAgICAgICB0aGUgc2FtZSBwYXR0ZXJuIGFzIFVzZXJT
Y3JpcHRzIGFuZCBVc2VyU3R5bGVTaGVldHMgYXMgYmVpbmcgcGVyLVVzZXJDb250ZW50Q29udHJv
bGxlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRy
b2xsZXIubW06CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIF9hZGRVc2VyQ29u
dGVudEZpbHRlcjpdKToKKyAgICAgICAgKC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIgX3JlbW92
ZUFsbFVzZXJDb250ZW50RmlsdGVyc10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tVc2VyQ29udGVudENvbnRyb2xsZXJJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmg6IEFkZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjphZGRQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJDb250ZW50RmlsdGVyKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJDb250
ZW50RmlsdGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6OmFkZFVzZXJDb250ZW50RmlsdGVycyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlckNvbnRlbnRGaWx0ZXJzKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
ci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyLm1lc3NhZ2VzLmluOgorICAgICAgICBQaXBlIHVzZXIgY29udGVudCBmaWx0ZXJzIG92
ZXIgdG8gYWxsIHRoZSBXZWJQcm9jZXNzZXMgdGhhdCB0aGUgVXNlckNvbnRlbnRDb250cm9sbGVy
IGlzCisgICAgICAgIGNvbm5lY3RlZCB0by4KKworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcy4KKwogMjAxNS0wMS0xNyAg
RGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04g
KHIxNzg2MTgpOiBDaGFuZ2UgdG8gV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBicm9rZSBpT1MgYnVp
bGQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNzg2MTcpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzY2LDYgKzM2Niw3IEBA
IHNldChXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9BUElTZXNzaW9uU3RhdGUuY3BwCiAgICAgVUlQcm9jZXNzL0FQ
SS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRl
bnRGaWx0ZXIuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFu
YWdlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5j
cHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAkocmV2aXNpb24gMTc4
NjE4KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAkod29ya2luZyBj
b3B5KQpAQCAtODEsNiArODEsNyBAQCBwdWJsaWM6CiAgICAgICAgIFVSTFJlcXVlc3QsCiAgICAg
ICAgIFVSTFJlc3BvbnNlLAogICAgICAgICBVc2VyQ29udGVudFVSTFBhdHRlcm4sCisgICAgICAg
IFVzZXJDb250ZW50RmlsdGVyLAogICAgICAgICBVc2VyU2NyaXB0LAogICAgICAgICBXZWJBcmNo
aXZlLAogICAgICAgICBXZWJBcmNoaXZlUmVzb3VyY2UsCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9jL1dLQmFzZS5oCShyZXZpc2lvbiAxNzg2MTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvV0tCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOSw2ICsxMjksNyBAQCB0eXBl
ZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1RleHRDaGVja2VyCiB0eXBlZGVmIGNvbnN0IHN0cnVj
dCBPcGFxdWVXS1Nlc3Npb24qIFdLU2Vzc2lvblJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9w
YXF1ZVdLU2Vzc2lvblN0YXRlKiBXS1Nlc3Npb25TdGF0ZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3Ry
dWN0IE9wYXF1ZVdLVXNlckNvbnRlbnRDb250cm9sbGVyKiBXS1VzZXJDb250ZW50Q29udHJvbGxl
clJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVXNlckNvbnRlbnRGaWx0ZXIqIFdL
VXNlckNvbnRlbnRGaWx0ZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0KiBXS1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UmVmOwog
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tVc2VyU2NyaXB0KiBXS1VzZXJTY3JpcHRSZWY7
CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1ZpYnJhdGlvbiogV0tWaWJyYXRpb25SZWY7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHJl
dmlzaW9uIDE3ODYxNykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5OSwxMSArNzk5LDYgQEAgdm9pZCBXZWJQcm9jZXNz
UG9vbDo6cHJvY2Vzc0RpZEZpbmlzaExhdQogICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzOjpTdGFydE1lbW9yeVNhbXBsZXIoc2FtcGxlTG9nU2FuZGJveEhhbmRsZSwg
c2FtcGxlTG9nRmlsZVBhdGgsIG1fbWVtb3J5U2FtcGxlckludGVydmFsKSwgMCk7CiAgICAgfQog
Ci0jaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHNs
b3QgOiBtX2VuY29kZWRDb250ZW50RXh0ZW5zaW9ucykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6TG9hZENvbnRlbnRFeHRlbnNpb24oc2xvdC5rZXksIHNsb3Qu
dmFsdWUpLCAwKTsKLSNlbmRpZgotCiAgICAgbV9jb25uZWN0aW9uQ2xpZW50LmRpZENyZWF0ZUNv
bm5lY3Rpb24odGhpcywgcHJvY2Vzcy0+d2ViQ29ubmVjdGlvbigpKTsKIH0KIApAQCAtMTQyNSwx
MiArMTQyMCw0IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldE1lbW9yeUNhY2hlRGlzYWIKICAg
ICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldE1lbW9yeUNhY2hl
RGlzYWJsZWQoZGlzYWJsZWQpKTsKIH0KIAotI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMp
Ci12b2lkIFdlYlByb2Nlc3NQb29sOjpsb2FkQ29udGVudEV4dGVuc2lvbihjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2VyaWFsaXplZFJ1bGVzKQotewotICAgIG1fZW5j
b2RlZENvbnRlbnRFeHRlbnNpb25zLnNldChpZGVudGlmaWVyLCBzZXJpYWxpemVkUnVsZXMpOwot
ICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6TG9hZENvbnRlbnRF
eHRlbnNpb24oaWRlbnRpZmllciwgc2VyaWFsaXplZFJ1bGVzKSk7Ci19Ci0jZW5kaWYKLQogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaAkocmV2aXNpb24gMTc4NjE3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1NSwxMCArMzU1LDYgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbV9wcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZEZvclBhZ2VD
b3VudGVyLnRva2VuPFByb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkVG9rZW5UeXBlPigpOwogICAg
IH0KIAotI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCi0gICAgdm9pZCBsb2FkQ29udGVu
dEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2VyaWFs
aXplZFJ1bGVzKTsKLSNlbmRpZgotCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFs
aXplKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRl
bnRGaWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJVXNlckNvbnRlbnRGaWx0ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudEZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJBUElVc2VyQ29udGVudEZpbHRlci5oIgorCituYW1lc3BhY2UgQVBJIHsKKworVXNlckNvbnRl
bnRGaWx0ZXI6OlVzZXJDb250ZW50RmlsdGVyKGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBjb25z
dCBXVEY6OlN0cmluZyYgcnVsZUxpc3QpCisgICAgOiBtX25hbWUobmFtZSkKKyAgICAsIG1fcnVs
ZUxpc3QocnVsZUxpc3QpCit7Cit9CisKK1VzZXJDb250ZW50RmlsdGVyOjp+VXNlckNvbnRlbnRG
aWx0ZXIoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRGaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50RmlsdGVyLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50RmlsdGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
QVBJVXNlckNvbnRlbnRGaWx0ZXJfaAorI2RlZmluZSBBUElVc2VyQ29udGVudEZpbHRlcl9oCisK
KyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIFVzZXJDb250ZW50RmlsdGVyIGZpbmFsIDogcHVi
bGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpVc2VyQ29udGVudEZpbHRlcj4geworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8VXNlckNvbnRlbnRGaWx0ZXI+IGNyZWF0ZShjb25zdCBXVEY6OlN0
cmluZyYgbmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHJ1bGVMaXN0KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgVXNlckNvbnRlbnRGaWx0ZXIobmFtZSwgcnVsZUxpc3QpKTsK
KyAgICB9CisKKyAgICBVc2VyQ29udGVudEZpbHRlcihjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwg
Y29uc3QgV1RGOjpTdHJpbmcmIHJ1bGVMaXN0KTsKKyAgICB+VXNlckNvbnRlbnRGaWx0ZXIoKTsK
KworICAgIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9
CisgICAgY29uc3QgV1RGOjpTdHJpbmcmIHJ1bGVMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9ydWxl
TGlzdDsgfQorCitwcml2YXRlOgorICAgIFdURjo6U3RyaW5nIG1fbmFtZTsKKyAgICBXVEY6OlN0
cmluZyBtX3J1bGVMaXN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgQVBJCisKKyNlbmRpZiAvLyBB
UElVc2VyQ29udGVudEZpbHRlcl9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tBUElDYXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLQVBJQ2FzdC5oCShyZXZpc2lvbiAxNzg2MTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDcgQEAg
Y2xhc3MgTmF2aWdhdGlvbkRhdGE7CiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIGNsYXNzIFBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbjsKIGNsYXNzIFNlc3Npb25TdGF0ZTsKK2NsYXNzIFVzZXJD
b250ZW50RmlsdGVyOwogY2xhc3MgVXNlclNjcmlwdDsKIH0KIApAQCAtMTUyLDYgKzE1Myw3IEBA
IFdLX0FERF9BUElfTUFQUElORyhXS1JlbmRlck9iamVjdFJlZiwgV2UKIFdLX0FERF9BUElfTUFQ
UElORyhXS1Nlc3Npb25TdGF0ZVJlZiwgQVBJOjpTZXNzaW9uU3RhdGUpCiBXS19BRERfQVBJX01B
UFBJTkcoV0tUZXh0Q2hlY2tlclJlZiwgV2ViVGV4dENoZWNrZXIpCiBXS19BRERfQVBJX01BUFBJ
TkcoV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYsIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5KQorV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlckNvbnRlbnRGaWx0ZXJSZWYsIEFQSTo6VXNl
ckNvbnRlbnRGaWx0ZXIpCiBXS19BRERfQVBJX01BUFBJTkcoV0tVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFJlZiwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSkKIFdLX0FERF9BUElf
TUFQUElORyhXS1VzZXJTY3JpcHRSZWYsIEFQSTo6VXNlclNjcmlwdCkKIFdLX0FERF9BUElfTUFQ
UElORyhXS1ZpYnJhdGlvblJlZiwgV2ViVmlicmF0aW9uUHJveHkpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50Q29u
dHJvbGxlclJlZi5jcHAJKHJldmlzaW9uIDE3ODYxOCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU2LDMgKzU2LDE3IEBAIHZvaWQgV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZW1vdmVBbGxV
c2UKIHsKICAgICB0b0ltcGwodXNlckNvbnRlbnRDb250cm9sbGVyUmVmKS0+cmVtb3ZlQWxsVXNl
clNjcmlwdHMoKTsKIH0KKwordm9pZCBXS1VzZXJDb250ZW50Q29udHJvbGxlckFkZFVzZXJDb250
ZW50RmlsdGVyKFdLVXNlckNvbnRlbnRDb250cm9sbGVyUmVmIHVzZXJDb250ZW50Q29udHJvbGxl
clJlZiwgV0tVc2VyQ29udGVudEZpbHRlclJlZiB1c2VyQ29udGVudEZpbHRlclJlZikKK3sKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIHRvSW1wbCh1c2VyQ29udGVudENvbnRy
b2xsZXJSZWYpLT5hZGRVc2VyQ29udGVudEZpbHRlcigqdG9JbXBsKHVzZXJDb250ZW50RmlsdGVy
UmVmKSk7CisjZW5kaWYKK30KKwordm9pZCBXS1VzZXJDb250ZW50Q29udHJvbGxlclJlbW92ZUFs
bFVzZXJDb250ZW50RmlsdGVycyhXS1VzZXJDb250ZW50Q29udHJvbGxlclJlZiB1c2VyQ29udGVu
dENvbnRyb2xsZXJSZWYpCit7CisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICB0
b0ltcGwodXNlckNvbnRlbnRDb250cm9sbGVyUmVmKS0+cmVtb3ZlQWxsVXNlckNvbnRlbnRGaWx0
ZXJzKCk7CisjZW5kaWYKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5oCShyZXZpc2lvbiAx
Nzg2MTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudENv
bnRyb2xsZXJSZWYuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsOCBAQCBXS19FWFBPUlQg
V0tBcnJheVJlZiBXS1VzZXJDb250ZW50Q29udHJvCiBXS19FWFBPUlQgdm9pZCBXS1VzZXJDb250
ZW50Q29udHJvbGxlckFkZFVzZXJTY3JpcHQoV0tVc2VyQ29udGVudENvbnRyb2xsZXJSZWYgdXNl
ckNvbnRlbnRDb250cm9sbGVyLCBXS1VzZXJTY3JpcHRSZWYgdXNlclNjcmlwdCk7CiBXS19FWFBP
UlQgdm9pZCBXS1VzZXJDb250ZW50Q29udHJvbGxlclJlbW92ZUFsbFVzZXJTY3JpcHRzKFdLVXNl
ckNvbnRlbnRDb250cm9sbGVyUmVmIHVzZXJDb250ZW50Q29udHJvbGxlcik7CiAKK1dLX0VYUE9S
VCB2b2lkIFdLVXNlckNvbnRlbnRDb250cm9sbGVyQWRkVXNlckNvbnRlbnRGaWx0ZXIoV0tVc2Vy
Q29udGVudENvbnRyb2xsZXJSZWYgdXNlckNvbnRlbnRDb250cm9sbGVyLCBXS1VzZXJDb250ZW50
RmlsdGVyUmVmIHVzZXJDb250ZW50RmlsdGVyKTsKK1dLX0VYUE9SVCB2b2lkIFdLVXNlckNvbnRl
bnRDb250cm9sbGVyUmVtb3ZlQWxsVXNlckNvbnRlbnRGaWx0ZXJzKFdLVXNlckNvbnRlbnRDb250
cm9sbGVyUmVmIHVzZXJDb250ZW50Q29udHJvbGxlcik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwog
fQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVXNlckNvbnRlbnRGaWx0
ZXJSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1VzZXJDb250ZW50RmlsdGVyUmVmLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50RmlsdGVyUmVmLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldLVXNlckNvbnRlbnRGaWx0ZXJSZWYuaCIKKworI2luY2x1ZGUgIkFQSVVzZXJDb250
ZW50RmlsdGVyLmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CisKK1dLVHlwZUlEIFdLVXNlckNvbnRlbnRGaWx0ZXJHZXRUeXBlSUQoKQoreworICAg
IHJldHVybiB0b0FQSShBUEk6OlVzZXJDb250ZW50RmlsdGVyOjpBUElUeXBlKTsKK30KKworV0tV
c2VyQ29udGVudEZpbHRlclJlZiBXS1VzZXJDb250ZW50RmlsdGVyQ3JlYXRlKFdLU3RyaW5nUmVm
IG5hbWVSZWYsIFdLU3RyaW5nUmVmIHJ1bGVMaXN0UmVmKQoreworICAgIHJldHVybiB0b0FQSSgm
QVBJOjpVc2VyQ29udGVudEZpbHRlcjo6Y3JlYXRlKHRvV1RGU3RyaW5nKG5hbWVSZWYpLCB0b1dU
RlN0cmluZyhydWxlTGlzdFJlZikpLmxlYWtSZWYoKSk7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29udGVudEZpbHRlclJlZi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VzZXJDb250ZW50RmlsdGVyUmVmLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVc2VyQ29u
dGVudEZpbHRlclJlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdLVXNlckNvbnRlbnRGaWx0ZXJSZWZfaAorI2RlZmluZSBXS1VzZXJDb250
ZW50RmlsdGVyUmVmX2gKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKworI2lmZGVmIF9f
Y3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tV
c2VyQ29udGVudEZpbHRlckdldFR5cGVJRCgpOworCitXS19FWFBPUlQgV0tVc2VyQ29udGVudEZp
bHRlclJlZiBXS1VzZXJDb250ZW50RmlsdGVyQ3JlYXRlKFdLU3RyaW5nUmVmIG5hbWUsIFdLU3Ry
aW5nUmVmIHJ1bGVMaXN0KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2Vu
ZGlmIC8qIFdLVXNlckNvbnRlbnRGaWx0ZXJSZWZfaCAqLwpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dlYktpdDJfQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XZWJLaXQyX0MuaAkocmV2aXNpb24gMTc4NjE4KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dlYktpdDJfQy5oCSh3b3JraW5nIGNvcHkpCkBAIC01
OSw2ICs1OSw3IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLVVJMUmVxdWVzdC5oPgogI2luY2x1ZGUg
PFdlYktpdC9XS1VSTFJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLVXNlckNvbnRlbnRD
b250cm9sbGVyUmVmLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLVXNlckNvbnRlbnRGaWx0ZXJSZWYu
aD4KICNpbmNsdWRlIDxXZWJLaXQvV0tVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oPgogI2lu
Y2x1ZGUgPFdlYktpdC9XS1VzZXJTY3JpcHRSZWYuaD4KIApJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQkocmV2aXNpb24g
MTc4NjE3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNDcsMjAgKzI0Nyw2IEBAIC0gKHZvaWQpX3NldE9i
amVjdDooaWQgPE5TQ29weWluZywgTlNTZWMKICAgICBfcHJvY2Vzc1Bvb2wtPnNlbmRUb0FsbFBy
b2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0SW5qZWN0ZWRCdW5kbGVQYXJhbWV0ZXIo
cGFyYW1ldGVyLCBJUEM6OkRhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0pKSk7CiB9CiAKLS0gKHZvaWQpX2xvYWRDb250
ZW50RXh0ZW5zaW9uV2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBzZXJpYWxp
emVkUnVsZXM6KE5TU3RyaW5nICopc2VyaWFsaXplZFJ1bGVzIHN1Y2Nlc3NDb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTlNEaWN0aW9uYXJ5ICppbmZvKSlzdWNjZXNzQ29tcGxldGlvbkhhbmRs
ZXIgZXJyb3JDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNFcnJvciAqZXJyb3IpKWVycm9y
Q29tcGxldGlvbkhhbmRsZXIKLXsKLSNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAg
IC8vIEZvciB0aGlzIGV4cGVyaW1lbnRhdGlvbiwgdGhlIENvbnRlbnRFeHRlbnNpb25zIGFyZSBo
YW5kbGVkIGJ5IGVhY2ggV2ViUHJvY2Vzcy4KLSAgICAvLyBFdmVudHVhbGx5IHRoZSBDb250ZW50
RXh0ZW5zaW9uIHdpbGwgaGF2ZSB0byBiZSBoYW5kbGVkIHNlcGFyYXRlbHkgZnJvbSB0aGUgV2Vi
UHJvY2Vzc2VzIGFuZCB3ZSdsbCBiZSBhYmxlCi0gICAgLy8gdG8gcHJvdmlkZSBtZWFuaW5nZnVs
IGNvbXBsZXRpb24gaGFuZGxlcnMuCi0gICAgVU5VU0VEX1BBUkFNKGVycm9yQ29tcGxldGlvbkhh
bmRsZXIpOwotCi0gICAgX3Byb2Nlc3NQb29sLT5sb2FkQ29udGVudEV4dGVuc2lvbihpZGVudGlm
aWVyLCBzZXJpYWxpemVkUnVsZXMpOwotCi0gICAgc3VjY2Vzc0NvbXBsZXRpb25IYW5kbGVyKG5p
bCk7Ci0jZW5kaWYKLX0KLQogLSAoaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+KV9kb3dubG9hZERl
bGVnYXRlCiB7CiAgICAgcmV0dXJuIF9kb3dubG9hZERlbGVnYXRlLmdldEF1dG9yZWxlYXNlZCgp
OwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAkocmV2aXNpb24gMTc4NjE3KQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Myw5ICs0Myw2IEBACiAtIChpZClfb2JqZWN0Rm9yQnVuZGxlUGFyYW1ldGVy
OihOU1N0cmluZyAqKXBhcmFtZXRlcjsKIC0gKHZvaWQpX3NldE9iamVjdDooaWQgPE5TQ29weWlu
ZywgTlNTZWN1cmVDb2Rpbmc+KW9iamVjdCBmb3JCdW5kbGVQYXJhbWV0ZXI6KE5TU3RyaW5nICop
cGFyYW1ldGVyOwogCi0vLyBGSVhNRTogbW92ZSB0aGUgQVBJIHRvIGEgYmV0dGVyIHBsYWNlLgot
LSAodm9pZClfbG9hZENvbnRlbnRFeHRlbnNpb25XaXRoSWRlbnRpZmllcjooTlNTdHJpbmcgKilp
ZGVudGlmaWVyIHNlcmlhbGl6ZWRSdWxlczooTlNTdHJpbmcgKilzZXJpYWxpemVkUnVsZXMgc3Vj
Y2Vzc0NvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0RpY3Rpb25hcnkgKmluZm8pKXN1Y2Nl
c3NDb21wbGV0aW9uSGFuZGxlciBlcnJvckNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0Vy
cm9yICplcnJvcikpZXJyb3JDb21wbGV0aW9uSGFuZGxlciBXS19BVkFJTEFCTEUoV0tfTUFDX1RC
QSwgV0tfSU9TX1RCQSk7Ci0KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3Nl
dERvd25sb2FkRGVsZWdhdGU6KSBpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4gX2Rvd25sb2FkRGVs
ZWdhdGU7CiAKICsgKE5TVVJMICopX3dlYnNpdGVEYXRhVVJMRm9yQ29udGFpbmVyV2l0aFVSTDoo
TlNVUkwgKiljb250YWluZXJVUkw7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0JKHJl
dmlzaW9uIDE3ODYxNykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tV
c2VyQ29udGVudENvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAK
ICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJTY3JpcHRNZXNzYWdl
SGFuZGxlci5oIgogI2ltcG9ydCAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKKyNp
bXBvcnQgIl9XS1VzZXJDb250ZW50RmlsdGVySW50ZXJuYWwuaCIKICNpbXBvcnQgPEphdmFTY3Jp
cHRDb3JlL0pTQ29udGV4dC5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KQEAgLTEyNCw1ICsxMjUs
MjMgQEAgLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKIAogQGVuZAogCitAaW1wbGVtZW50YXRp
b24gV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKFdLUHJpdmF0ZSkKKworLSAodm9pZClfYWRkVXNl
ckNvbnRlbnRGaWx0ZXI6KF9XS1VzZXJDb250ZW50RmlsdGVyICopdXNlckNvbnRlbnRGaWx0ZXIK
K3sKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIF91c2VyQ29udGVudENvbnRy
b2xsZXJQcm94eS0+YWRkVXNlckNvbnRlbnRGaWx0ZXIoKnVzZXJDb250ZW50RmlsdGVyLT5fdXNl
ckNvbnRlbnRGaWx0ZXIpOworI2VuZGlmCit9CisKKy0gKHZvaWQpX3JlbW92ZUFsbFVzZXJDb250
ZW50RmlsdGVycworeworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgX3VzZXJD
b250ZW50Q29udHJvbGxlclByb3h5LT5yZW1vdmVBbGxVc2VyQ29udGVudEZpbHRlcnMoKTsKKyNl
bmRpZgorfQorCitAZW5kCisKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVySW50ZXJuYWwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250
cm9sbGVySW50ZXJuYWwuaAkocmV2aXNpb24gMTc4NjE3KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlckludGVybmFsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaW1wb3J0ICJXS1VzZXJDb250ZW50Q29udHJvbGxlci5oIgorI2ltcG9y
dCAiV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmgiCiAKICNpZiBXS19BUElfRU5BQkxF
RAogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRl
bnRDb250cm9sbGVyUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRD
b250cm9sbGVyUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0IDxXZWJLaXQvV0tVc2VyQ29udGVudENvbnRyb2xsZXIuaD4KKworI2lm
IFdLX0FQSV9FTkFCTEVECisKK0BjbGFzcyBfV0tVc2VyQ29udGVudEZpbHRlcjsKKworQGludGVy
ZmFjZSBXS1VzZXJDb250ZW50Q29udHJvbGxlciAoV0tQcml2YXRlKQorCistICh2b2lkKV9hZGRV
c2VyQ29udGVudEZpbHRlcjooX1dLVXNlckNvbnRlbnRGaWx0ZXIgKil1c2VyQ29udGVudEZpbHRl
cjsKKy0gKHZvaWQpX3JlbW92ZUFsbFVzZXJDb250ZW50RmlsdGVyczsKKworQGVuZAorCisjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRl
bnRGaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1VzZXJDb250ZW50RmlsdGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50RmlsdGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5k
YXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKK1dLX0NMQVNTX0FWQUlMQUJMRShXS19N
QUNfVEJBLCBXS19JT1NfVEJBKQorQGludGVyZmFjZSBfV0tVc2VyQ29udGVudEZpbHRlciA6IE5T
T2JqZWN0CisKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUg
cnVsZUxpc3Q6KE5TU3RyaW5nICopcnVsZUxpc3Q7CisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQ
SV9FTkFCTEVECkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Vz
ZXJDb250ZW50RmlsdGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRGaWx0ZXIubW0JKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50RmlsdGVyLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIl9XS1VzZXJDb250ZW50RmlsdGVySW50ZXJuYWwuaCIKKworI2lmIFdL
X0FQSV9FTkFCTEVECisKK0BpbXBsZW1lbnRhdGlvbiBfV0tVc2VyQ29udGVudEZpbHRlcgorCist
IChpbnN0YW5jZXR5cGUpX2luaXRXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lIHJ1bGVMaXN0OihO
U1N0cmluZyAqKXJ1bGVMaXN0Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisg
ICAgICAgIHJldHVybiBuaWw7CisKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVy
PEFQSTo6VXNlckNvbnRlbnRGaWx0ZXI+KHNlbGYsIFN0cmluZyhuYW1lKSwgU3RyaW5nKHJ1bGVM
aXN0KSk7CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAg
X3VzZXJDb250ZW50RmlsdGVyLT5+VXNlckNvbnRlbnRGaWx0ZXIoKTsKKworICAgIFtzdXBlciBk
ZWFsbG9jXTsKK30KKworI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0
aW9uCisKKy0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfdXNlckNv
bnRlbnRGaWx0ZXI7Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50RmlsdGVy
SW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1VzZXJDb250ZW50RmlsdGVySW50ZXJuYWwuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRGaWx0ZXJJbnRlcm5h
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJfV0tVc2VyQ29udGVudEZpbHRlci5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9y
dCAiQVBJVXNlckNvbnRlbnRGaWx0ZXIuaCIKKyNpbXBvcnQgIldLT2JqZWN0LmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitpbmxpbmUgX1dLVXNlckNvbnRlbnRGaWx0ZXIgKndyYXBwZXIoQVBJ
OjpVc2VyQ29udGVudEZpbHRlciYgdXNlckNvbnRlbnRGaWx0ZXIpCit7CisgICAgQVNTRVJUKFt1
c2VyQ29udGVudEZpbHRlci53cmFwcGVyKCkgaXNLaW5kT2ZDbGFzczpbX1dLVXNlckNvbnRlbnRG
aWx0ZXIgY2xhc3NdXSk7CisgICAgcmV0dXJuIChfV0tVc2VyQ29udGVudEZpbHRlciAqKXVzZXJD
b250ZW50RmlsdGVyLndyYXBwZXIoKTsKK30KKworfQorCitAaW50ZXJmYWNlIF9XS1VzZXJDb250
ZW50RmlsdGVyICgpIDxXS09iamVjdD4geworQHBhY2thZ2UKKyAgICBBUEk6Ok9iamVjdFN0b3Jh
Z2U8QVBJOjpVc2VyQ29udGVudEZpbHRlcj4gX3VzZXJDb250ZW50RmlsdGVyOworfQorQGVuZAor
CisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5LmNwcAkocmV2aXNpb24gMTc4NjE3KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsMTAgQEAKICNpbmNsdWRlICJXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuaD4KIAorI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisjaW5jbHVk
ZSAiQVBJVXNlckNvbnRlbnRGaWx0ZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlSWRlbnRpZmllcigpCkBAIC00Nyw2ICs1MSw5IEBA
IHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUlkZW50aWZpZXIoKQogV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KCkKICAgICA6IG1faWRl
bnRpZmllcihnZW5lcmF0ZUlkZW50aWZpZXIoKSkKICAgICAsIG1fdXNlclNjcmlwdHMoKkFQSTo6
QXJyYXk6OmNyZWF0ZSgpKQorI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgLCBt
X3VzZXJDb250ZW50RmlsdGVycygqQVBJOjpBcnJheTo6Y3JlYXRlKCkpCisjZW5kaWYKIHsKIH0K
IApAQCAtNzYsNiArODMsMTMgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
YWRkUAogICAgIGZvciAoYXV0byYgaGFuZGxlciA6IG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLnZh
bHVlcygpKQogICAgICAgICBtZXNzYWdlSGFuZGxlckhhbmRsZXMuYXBwZW5kKGhhbmRsZXItPmhh
bmRsZSgpKTsKICAgICB3ZWJQcm9jZXNzUHJveHkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMo
bWVzc2FnZUhhbmRsZXJIYW5kbGVzKSwgbV9pZGVudGlmaWVyKTsKKworI2lmIEVOQUJMRShDT05U
RU5UX0VYVEVOU0lPTlMpCisgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IHVz
ZXJDb250ZW50RmlsdGVyczsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHVzZXJDb250ZW50RmlsdGVy
IDogbV91c2VyQ29udGVudEZpbHRlcnMtPmVsZW1lbnRzT2ZUeXBlPEFQSTo6VXNlckNvbnRlbnRG
aWx0ZXI+KCkpCisgICAgICAgIHVzZXJDb250ZW50RmlsdGVycy5hcHBlbmQoc3RkOjptYWtlX3Bh
aXIodXNlckNvbnRlbnRGaWx0ZXItPm5hbWUoKSwgdXNlckNvbnRlbnRGaWx0ZXItPnJ1bGVMaXN0
KCkpKTsKKyAgICB3ZWJQcm9jZXNzUHJveHkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJDb250ZW50RmlsdGVycyh1c2VyQ29udGVu
dEZpbHRlcnMpLCBtX2lkZW50aWZpZXIpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9j
ZXNzUHJveHkpCkBAIC0xNjksNCArMTgzLDI1IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OmRpZFAKICAgICBoYW5kbGVyLT5jbGllbnQoKS5kaWRQb3N0TWVzc2FnZSgqcGFn
ZSwgKmZyYW1lLCAqdmFsdWUpOwogfQogCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05T
KQordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlckNvbnRlbnRGaWx0
ZXIoQVBJOjpVc2VyQ29udGVudEZpbHRlciYgdXNlckNvbnRlbnRGaWx0ZXIpCit7CisgICAgbV91
c2VyQ29udGVudEZpbHRlcnMtPmVsZW1lbnRzKCkuYXBwZW5kKCZ1c2VyQ29udGVudEZpbHRlcik7
CisKKyAgICBhdXRvIHBhaXIgPSBzdGQ6Om1ha2VfcGFpcih1c2VyQ29udGVudEZpbHRlci5uYW1l
KCksIHVzZXJDb250ZW50RmlsdGVyLnJ1bGVMaXN0KCkpOworCisgICAgZm9yIChXZWJQcm9jZXNz
UHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKKyAgICAgICAgcHJvY2Vzcy0+Y29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJDb250
ZW50RmlsdGVycyh7IHBhaXIgfSksIG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJDb250ZW50RmlsdGVycygpCit7Cisg
ICAgbV91c2VyQ29udGVudEZpbHRlcnMtPmVsZW1lbnRzKCkuY2xlYXIoKTsKKworICAgIGZvciAo
V2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCisgICAgICAgIHByb2Nlc3Mt
PmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpS
ZW1vdmVBbGxVc2VyQ29udGVudEZpbHRlcnMoKSwgbV9pZGVudGlmaWVyKTsKK30KKyNlbmRpZgor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eS5oCShyZXZpc2lvbiAxNzg2MTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNiArMzgsNyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEFycmF5Owor
Y2xhc3MgVXNlckNvbnRlbnRGaWx0ZXI7CiBjbGFzcyBVc2VyU2NyaXB0OwogfQogCkBAIC04MCw2
ICs4MSwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBhZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIo
V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIqKTsKICAgICB2b2lkIHJlbW92ZVVzZXJNZXNzYWdlSGFu
ZGxlckZvck5hbWUoY29uc3QgU3RyaW5nJik7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJ
T05TKQorICAgIHZvaWQgYWRkVXNlckNvbnRlbnRGaWx0ZXIoQVBJOjpVc2VyQ29udGVudEZpbHRl
ciYpOworICAgIHZvaWQgcmVtb3ZlQWxsVXNlckNvbnRlbnRGaWx0ZXJzKCk7CisjZW5kaWYKKwog
cHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYp
IG92ZXJyaWRlOwpAQCAtOTEsNiArOTcsMTAgQEAgcHJpdmF0ZToKICAgICBSZWY8QVBJOjpBcnJh
eT4gbV91c2VyU2NyaXB0czsKICAgICBWZWN0b3I8V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+IG1f
dXNlclN0eWxlU2hlZXRzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJTY3JpcHRN
ZXNzYWdlSGFuZGxlcj4+IG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzOworCisjaWYgRU5BQkxFKENP
TlRFTlRfRVhURU5TSU9OUykKKyAgICBSZWY8QVBJOjpBcnJheT4gbV91c2VyQ29udGVudEZpbHRl
cnM7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MTc4NjE4KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDc5LDYgKzEwNzksMTQgQEAKIAkJN0M4OUQyQTMxQTY3
ODg3NTAwM0E1RkRFIC8qIFdLVXNlclNjcmlwdFJlZi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzg5RDJBMTFBNjc4ODc1MDAzQTVGREUgLyogV0tV
c2VyU2NyaXB0UmVmLmNwcCAqLzsgfTsKIAkJN0M4OUQyQTQxQTY3ODg3NTAwM0E1RkRFIC8qIFdL
VXNlclNjcmlwdFJlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0M4OUQyQTIxQTY3ODg3NTAwM0E1RkRFIC8qIFdLVXNlclNjcmlwdFJlZi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDODlEMkE2MUE2
Nzg5RUEwMDNBNUZERSAvKiBBUElVc2VyU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODlEMkE1MUE2Nzg5RUEwMDNBNUZERSAvKiBBUElV
c2VyU2NyaXB0LmNwcCAqLzsgfTsKKwkJN0M4OUQyQjMxQTZCMDY4QzAwM0E1RkRFIC8qIEFQSVVz
ZXJDb250ZW50RmlsdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDODlEMkIxMUE2QjA2OEMwMDNBNUZERSAvKiBBUElVc2VyQ29udGVudEZpbHRl
ci5jcHAgKi87IH07CisJCTdDODlEMkI0MUE2QjA2OEMwMDNBNUZERSAvKiBBUElVc2VyQ29udGVu
dEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0M4OUQyQjIxQTZCMDY4QzAwM0E1RkRFIC8qIEFQSVVzZXJDb250ZW50RmlsdGVyLmggKi87IH07
CisJCTdDODlEMkI2MUE2QjBERDkwMDNBNUZERSAvKiBXS1VzZXJDb250ZW50Q29udHJvbGxlclBy
aXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
ODlEMkI1MUE2QjBERDkwMDNBNUZERSAvKiBXS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3Qzg5
RDJCOTFBNkIwRjJDMDAzQTVGREUgLyogX1dLVXNlckNvbnRlbnRGaWx0ZXIubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzg5RDJCNzFBNkIwRjJDMDAz
QTVGREUgLyogX1dLVXNlckNvbnRlbnRGaWx0ZXIubW0gKi87IH07CisJCTdDODlEMkJBMUE2QjBG
MkMwMDNBNUZERSAvKiBfV0tVc2VyQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4OUQyQjgxQTZCMEYyQzAwM0E1RkRFIC8qIF9X
S1VzZXJDb250ZW50RmlsdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJN0M4OUQyQkMxQTZCMEY1QjAwM0E1RkRFIC8qIF9XS1VzZXJDb250ZW50
RmlsdGVySW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDODlEMkJCMUE2QjBGNUIwMDNBNUZERSAvKiBfV0tVc2VyQ29udGVudEZpbHRlcklu
dGVybmFsLmggKi87IH07CisJCTdDODlEMkJGMUE2QjExRUYwMDNBNUZERSAvKiBXS1VzZXJDb250
ZW50RmlsdGVyUmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDODlEMkJEMUE2QjExRUYwMDNBNUZERSAvKiBXS1VzZXJDb250ZW50RmlsdGVyUmVm
LmNwcCAqLzsgfTsKKwkJN0M4OUQyQzAxQTZCMTFFRjAwM0E1RkRFIC8qIFdLVXNlckNvbnRlbnRG
aWx0ZXJSZWYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDODlEMkJFMUE2QjExRUYwMDNBNUZERSAvKiBXS1VzZXJDb250ZW50RmlsdGVyUmVmLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0M4RUIxMTcx
OERCNkExOTAwNzkxN0MyIC8qIFdLUHJlZmVyZW5jZXNQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzhFQjExNjE4REI2QTE5MDA3OTE3QzIg
LyogV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3QzlEMTUzNzE4NDU4NERBMDA5RDM5MTggLyogV0tCcm93c2lu
Z0NvbnRleHRHcm91cEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QzlEMTUzNjE4NDU4NERBMDA5RDM5MTggLyogV0tCcm93c2luZ0NvbnRl
eHRHcm91cEludGVybmFsLmggKi87IH07CiAJCTdDQTI1NEVCMTgyOTkzQ0UwMEZDOEE0MSAvKiBX
S0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0EyNTRFQTE4Mjk5M0NFMDBGQzhBNDEgLyogV0tCcm93
c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0zMjAwLDYgKzMyMDgsMTQgQEAKIAkJN0M4OUQyQTExQTY3
ODg3NTAwM0E1RkRFIC8qIFdLVXNlclNjcmlwdFJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXS1VzZXJTY3JpcHRSZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3Qzg5RDJBMjFBNjc4ODc1MDAzQTVGREUgLyogV0tVc2VyU2NyaXB0UmVmLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVXNlclNjcmlwdFJlZi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qzg5RDJBNTFBNjc4OUVBMDAzQTVGREUgLyogQVBJ
VXNlclNjcmlwdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElV
c2VyU2NyaXB0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M4OUQyQjExQTZC
MDY4QzAwM0E1RkRFIC8qIEFQSVVzZXJDb250ZW50RmlsdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSVVzZXJDb250ZW50RmlsdGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M4OUQyQjIxQTZCMDY4QzAwM0E1RkRFIC8qIEFQSVVzZXJD
b250ZW50RmlsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVVzZXJD
b250ZW50RmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDODlEMkI1MUE2
QjBERDkwMDNBNUZERSAvKiBXS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDODlEMkI3MUE2QjBGMkMwMDNBNUZE
RSAvKiBfV0tVc2VyQ29udGVudEZpbHRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IF9XS1VzZXJDb250ZW50RmlsdGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3Qzg5RDJCODFBNkIwRjJDMDAzQTVGREUgLyogX1dLVXNlckNvbnRlbnRGaWx0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLVXNlckNvbnRlbnRGaWx0
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M4OUQyQkIxQTZCMEY1QjAwM0E1
RkRFIC8qIF9XS1VzZXJDb250ZW50RmlsdGVySW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gX1dLVXNlckNvbnRlbnRGaWx0ZXJJbnRlcm5hbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3Qzg5RDJCRDFBNkIxMUVGMDAzQTVGREUgLyogV0tVc2VyQ29u
dGVudEZpbHRlclJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
S1VzZXJDb250ZW50RmlsdGVyUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0M4OUQyQkUxQTZCMTFFRjAwM0E1RkRFIC8qIFdLVXNlckNvbnRlbnRGaWx0ZXJSZWYuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVc2VyQ29udGVudEZpbHRlclJlZi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzhFQjExNjE4REI2QTE5MDA3OTE3QzIgLyog
V0tQcmVmZXJlbmNlc1ByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0tQcmVmZXJlbmNlc1ByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M5
RDE1MzYxODQ1ODREQTAwOUQzOTE4IC8qIFdLQnJvd3NpbmdDb250ZXh0R3JvdXBJbnRlcm5hbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Jyb3dzaW5nQ29udGV4dEdyb3Vw
SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NBMjU0RUExODI5OTND
RTAwRkM4QTQxIC8qIFdLQnJvd3NpbmdDb250ZXh0UG9saWN5RGVsZWdhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTE1NCw2ICs1MTcwLDkgQEAKIAkJCQky
RDZCMzcxOTE4QTk2N0FEMDA0MkFFODAgLyogX1dLVGh1bWJuYWlsVmlldy5oICovLAogCQkJCTJE
NkIzNzFBMThBOTY3QUQwMDQyQUU4MCAvKiBfV0tUaHVtYm5haWxWaWV3Lm1tICovLAogCQkJCTJE
QUNFNjREMThBREJGRjAwMEU0Q0E3NiAvKiBfV0tUaHVtYm5haWxWaWV3SW50ZXJuYWwuaCAqLywK
KwkJCQk3Qzg5RDJCODFBNkIwRjJDMDAzQTVGREUgLyogX1dLVXNlckNvbnRlbnRGaWx0ZXIuaCAq
LywKKwkJCQk3Qzg5RDJCNzFBNkIwRjJDMDAzQTVGREUgLyogX1dLVXNlckNvbnRlbnRGaWx0ZXIu
bW0gKi8sCisJCQkJN0M4OUQyQkIxQTZCMEY1QjAwM0E1RkRFIC8qIF9XS1VzZXJDb250ZW50Rmls
dGVySW50ZXJuYWwuaCAqLywKIAkJCQkxQTgxQjM3RjE4QkQ2NkFEMDAwN0ZEQUMgLyogX1dLVmlz
aXRlZExpbmtQcm92aWRlci5oICovLAogCQkJCTFBODFCMzdFMThCRDY2QUQwMDA3RkRBQyAvKiBf
V0tWaXNpdGVkTGlua1Byb3ZpZGVyLm1tICovLAogCQkJCTFBODFCMzg0MThCRDY3M0EwMDA3RkRB
QyAvKiBfV0tWaXNpdGVkTGlua1Byb3ZpZGVySW50ZXJuYWwuaCAqLywKQEAgLTUyMDgsNiArNTIy
Nyw3IEBACiAJCQkJMUFGQTNBQzcxOEU2MUM2MTAwM0NDQkFFIC8qIFdLVXNlckNvbnRlbnRDb250
cm9sbGVyLmggKi8sCiAJCQkJMUFGQTNBQzYxOEU2MUM2MTAwM0NDQkFFIC8qIFdLVXNlckNvbnRl
bnRDb250cm9sbGVyLm1tICovLAogCQkJCTFBQUYwOEEzMTkyNjgyREEwMEI2MzkwQyAvKiBXS1Vz
ZXJDb250ZW50Q29udHJvbGxlckludGVybmFsLmggKi8sCisJCQkJN0M4OUQyQjUxQTZCMEREOTAw
M0E1RkRFIC8qIFdLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oICovLAogCQkJCTFBQUYw
ODk5MTkyNjdFRTUwMEI2MzkwQyAvKiBXS1VzZXJTY3JpcHQuaCAqLywKIAkJCQkxQUFGMDg5ODE5
MjY3RUU1MDBCNjM5MEMgLyogV0tVc2VyU2NyaXB0Lm1tICovLAogCQkJCTFBQUYwODlDMTkyNjdG
QzgwMEI2MzkwQyAvKiBXS1VzZXJTY3JpcHRJbnRlcm5hbC5oICovLApAQCAtNjA4OCw2ICs2MTA4
LDggQEAKIAkJCQkxQUZERTY1RjE5NTRFOUIxMDBDNDhGRkEgLyogQVBJU2Vzc2lvblN0YXRlLmNw
cCAqLywKIAkJCQkxQUZERTY2MDE5NTRFOUIxMDBDNDhGRkEgLyogQVBJU2Vzc2lvblN0YXRlLmgg
Ki8sCiAJCQkJMUE0RDY2NDcxOEEyRDkxQTAwRDgyRTIxIC8qIEFQSVVJQ2xpZW50LmggKi8sCisJ
CQkJN0M4OUQyQjExQTZCMDY4QzAwM0E1RkRFIC8qIEFQSVVzZXJDb250ZW50RmlsdGVyLmNwcCAq
LywKKwkJCQk3Qzg5RDJCMjFBNkIwNjhDMDAzQTVGREUgLyogQVBJVXNlckNvbnRlbnRGaWx0ZXIu
aCAqLywKIAkJCQk3Qzg5RDJBNTFBNjc4OUVBMDAzQTVGREUgLyogQVBJVXNlclNjcmlwdC5jcHAg
Ki8sCiAJCQkJN0M4OUQyOTIxQTY3MTIyRjAwM0E1RkRFIC8qIEFQSVVzZXJTY3JpcHQuaCAqLywK
IAkJCQkxQTM2MzVBNzFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAg
Ki8sCkBAIC02MjA1LDYgKzYyMjcsOCBAQAogCQkJCTdDODlEMjlFMUE2Nzg1NTQwMDNBNUZERSAv
KiBXS1VzZXJDb250ZW50Q29udHJvbGxlclJlZi5oICovLAogCQkJCTdDODlEMkExMUE2Nzg4NzUw
MDNBNUZERSAvKiBXS1VzZXJTY3JpcHRSZWYuY3BwICovLAogCQkJCTdDODlEMkEyMUE2Nzg4NzUw
MDNBNUZERSAvKiBXS1VzZXJTY3JpcHRSZWYuaCAqLywKKwkJCQk3Qzg5RDJCRDFBNkIxMUVGMDAz
QTVGREUgLyogV0tVc2VyQ29udGVudEZpbHRlclJlZi5jcHAgKi8sCisJCQkJN0M4OUQyQkUxQTZC
MTFFRjAwM0E1RkRFIC8qIFdLVXNlckNvbnRlbnRGaWx0ZXJSZWYuaCAqLywKIAkJCSk7CiAJCQlw
YXRoID0gQzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03MzQ3LDYgKzczNzEsNyBA
QAogCQkJCTBGMTc0QUEzMTQyQTRDQjcwMDM5MjUwRiAvKiBBUElHZW9tZXRyeS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMzc2OTA3OUUxOEYzNDBBMjAwMURGRjA0IC8qIEFQSUluamVjdGVkQnVuZGxl
Rm9ybUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc2OTA3OUExOEYzMUNCMjAwMURGRjA0
IC8qIEFQSUluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk3
Qzg5RDJCNjFBNkIwREQ5MDAzQTVGREUgLyogV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0U0RDIwNzFBNDY3NzYxMDBDN0YxNTIgLyogQVBJTGVn
YWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjQ2NEYzMTg5
MUU0NTEwMDIzNEM1QiAvKiBBUElMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdD
RDNBNDgzMUE1RDAyRkEwMDk2MjNCOCAvKiBBUElOYXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLywK
QEAgLTc0MjYsNiArNzQ1MSw3IEBACiAJCQkJQzUxNzM4ODExMkRGOEY0RjAwRUUzRjQ3IC8qIERy
YWdDb250cm9sbGVyQWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzg0NTJBODExNjJDODA5
MDBDQUI5QjUgLyogRHJhd2luZ0FyZWEuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjY1OTIzMTIw
OEI0REIwMDQ0ODE2QyAvKiBEcmF3aW5nQXJlYUluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTdD
ODlEMkMwMUE2QjExRUYwMDNBNUZERSAvKiBXS1VzZXJDb250ZW50RmlsdGVyUmVmLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTY0MjI5QTEyREQwMjkyMDBDQUFFMkMgLyogRHJhd2luZ0FyZWFNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyNjUyMTcxMTgyNjA4MTAwMjQzRTEyIC8qIERy
YXdpbmdBcmVhUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNjQyMzA5MTJERDA5RUIwMENB
QUUyQyAvKiBEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNzU1
OSw2ICs3NTg1LDcgQEAKIAkJCQkxQThFRjk2RjEyNTJBRjZCMDBGNzA2N0YgLyogUGx1Z2luQ29u
dHJvbGxlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMTc5NzgwMTM3RUU4
MkMwMEY5N0Q0NSAvKiBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdDM0Y4QzkxMTczQUY1MkQwMDdCN0YzOSAvKiBQbHVnaW5JbmZvcm1hdGlvbi5oIGluIEhl
YWRlcnMgKi8sCisJCQkJN0M4OUQyQjQxQTZCMDY4QzAwM0E1RkRFIC8qIEFQSVVzZXJDb250ZW50
RmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUVGQ0MxMjExRDAxRjk2MDA4MjE5RDMgLyog
UGx1Z2luSW5mb1N0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTNENjEwMjEzQTdDQzJBMDBG
OTVENEUgLyogUGx1Z2luTW9kdWxlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwNDM5NzYx
MjREMDM0ODAwRkZCRkI1IC8qIFBsdWdpblByb2Nlc3MuaCBpbiBIZWFkZXJzICovLApAQCAtNzg5
MSw2ICs3OTE4LDcgQEAKIAkJCQk4MzcyREIyRjFBNjc3RDRBMDBDNjk3QzUgLyogV0tEaWFnbm9z
dGljTG9nZ2luZ1Jlc3VsdFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjQ3NEU0MTg0RDQ0
OTgwMDUxQjYyMiAvKiBXS0J1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFCNDc0RTgxODRENDREMDAwNTFCNjIyIC8qIFdLQnVuZGxlUGFnZURpYWdub3N0
aWNMb2dnaW5nQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk3Qzg5RDJCQzFBNkIwRjVCMDAz
QTVGREUgLyogX1dLVXNlckNvbnRlbnRGaWx0ZXJJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFCNDc0RTAxODRENDQ2QTAwNTFCNjIyIC8qIFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCNDc0RTIxODRENDQ4MDAwNTFCNjIyIC8qIFdLQnVuZGxl
UGFnZUZvcm1DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjQ3NEU2MTg0RDQ0QjQwMDUx
QjYyMiAvKiBXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAg
LTc5ODEsNiArODAwOSw3IEBACiAJCQkJNTFBOUUxMEIxMzE1Q0QxODAwOUU3MDMxIC8qIFdLS2V5
VmFsdWVTdG9yYWdlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzNEM0EzQjYxMzM5NjAw
QjAwNzA5QkU0IC8qIFdLTWVkaWFDYWNoZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
NDA3NUZFMTI0RkYwMjcwMDY4RjIwQSAvKiBXS011dGFibGVBcnJheS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJN0M4OUQyQkExQTZCMEYyQzAwM0E1RkRFIC8qIF9XS1VzZXJDb250ZW50RmlsdGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzQwNzYwMDEyNEZGMDI3MDA2OEYyMEEgLyogV0tNdXRhYmxl
RGljdGlvbmFyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzA5QUU1RTkxMjUyNTdDMjAwMjU4MjVE
IC8qIFdLTmF0aXZlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNUIxQzUxMTg5ODYwNkYw
MDRGQ0Y5QiAvKiBXS05hdmlnYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtOTIxMiw2ICs5MjQx
LDcgQEAKIAkJCQlFNDQzNkVDRDFBMEQwNDBCMDBFQUQyMDQgLyogTmV0d29ya0NhY2hlS2V5LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUU0NDM2RUQwMUEwRDA0MEIwMEVBRDIwNCAvKiBOZXR3b3Jr
Q2FjaGVTdG9yYWdlQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTNBMTY0QzE2MzBBOUJG
MDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJN0M4OUQyQjkxQTZCMEYyQzAwM0E1RkRFIC8qIF9XS1VzZXJDb250ZW50RmlsdGVy
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFERDlGMjgxNjM2N0RBMjAwMTU3OEU5IC8qIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUxNjdFRUExMTcwMzc3QkYwMDc2ODFDQSAvKiBOZXR3b3JrRGlza0NhY2hlTW9uaXRv
ci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxNzk1NTY4MTYyODc2Q0YwMEZBNDNCNiAvKiBOZXR3
b3JrUHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk0NzksNiArOTUwOSw3IEBACiAJCQkJ
NTFDOTYxMTgxODNEMjk0NzAwRDIwMDJFIC8qIFdlYklEQlNlcnZlckNvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNDRjZBQkMxMkM5MUVGOTAwOEY5QzM1
IC8qIFdlYkltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDOEUyODIxMTI3NUQxNTQwMEJD
N0JEMCAvKiBXZWJJbnNwZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0M4OUQyQjMxQTZC
MDY4QzAwM0E1RkRFIC8qIEFQSVVzZXJDb250ZW50RmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDMTExQTYwMTEyRjRGQkIwMDMzN0JBQiAvKiBXZWJJbnNwZWN0b3JDbGllbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUM4RTJBMzUxMjc3ODUyNDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rv
ck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzhFMjgzNTEyNzVENzM4
MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05NjU2
LDYgKzk2ODcsNyBAQAogCQkJCUJDMDE3RDIwMTYyNjMzMDgwMDcwNTRGNSAvKiBXS0RPTVRleHRJ
dGVyYXRvci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQjdENzhFMTI4OENEOUEwMENGRDA4QyAv
KiBXS0Rvd25sb2FkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRjQ1OTJFMTk0NjRCMjAwMEY5
RDRBMiAvKiBXS0Vycm9yLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJN0M4OUQyQkYxQTZCMTFFRjAw
M0E1RkRFIC8qIFdLVXNlckNvbnRlbnRGaWx0ZXJSZWYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkNGRDU0OEIxMzJEODI2ODAwNTVEODE2IC8qIFdLRXJyb3JDRi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQzQwNzVGQjEyNEZGMDI3MDA2OEYyMEEgLyogV0tFcnJvclJlZi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3Qzg5RDJBMzFBNjc4ODc1MDAzQTVGREUgLyogV0tVc2VyU2NyaXB0UmVmLmNw
cCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCShyZXZpc2lvbiAxNzg2MTcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsMTAgKzEwNCw2IEBACiAjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShDT05U
RU5UX0VYVEVOU0lPTlMpCi0jaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RXh0ZW5zaW9uc01hbmFn
ZXIuaD4KLSNlbmRpZgotCiAjaWYgRU5BQkxFKFNFQ19JVEVNX1NISU0pCiAjaW5jbHVkZSAiU2Vj
SXRlbVNoaW0uaCIKICNlbmRpZgpAQCAtMTMxOSwxMyArMTMxNSw2IEBAIFJlZlB0cjxBUEk6Ok9i
amVjdD4gV2ViUHJvY2Vzczo6dHJhbnNmb3IKICAgICByZXR1cm4gVXNlckRhdGE6OnRyYW5zZm9y
bShvYmplY3QsIFRyYW5zZm9ybWVyKCkpOwogfQogCi0jaWYgRU5BQkxFKENPTlRFTlRfRVhURU5T
SU9OUykKLXZvaWQgV2ViUHJvY2Vzczo6bG9hZENvbnRlbnRFeHRlbnNpb24oY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNlcmlhbGl6ZWRSdWxlcykKLXsKLSAgICBDb250
ZW50RXh0ZW5zaW9uczo6RXh0ZW5zaW9uc01hbmFnZXI6OmxvYWRFeHRlbnNpb24oaWRlbnRpZmll
ciwgc2VyaWFsaXplZFJ1bGVzKTsKLX0KLSNlbmRpZgotCiB2b2lkIFdlYlByb2Nlc3M6OnNldE1l
bW9yeUNhY2hlRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKIHsKICAgICBpZiAobWVtb3J5Q2FjaGUo
KS5kaXNhYmxlZCgpICE9IGRpc2FibGVkKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmgJKHJldmlzaW9uIDE3ODYxNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIsMTAgKzIwMiw2IEBAIHB1Ymxp
YzoKICAgICBib29sIGhhc1JpY2hDb250ZW50U2VydmljZXMoKSBjb25zdCB7IHJldHVybiBtX2hh
c1JpY2hDb250ZW50U2VydmljZXM7IH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKENPTlRFTlRfRVhU
RU5TSU9OUykKLSAgICB2b2lkIGxvYWRDb250ZW50RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBzZXJpYWxpemVkUnVsZXMpOwotI2VuZGlmCi0KIHByaXZh
dGU6CiAgICAgV2ViUHJvY2VzcygpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxNzg2MTcpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTkzLDEwICs5Myw2IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2
ZXIgewogICAgIFNldEVuYWJsZWRTZXJ2aWNlcyhib29sIGhhc0ltYWdlU2VydmljZXMsIGJvb2wg
aGFzU2VsZWN0aW9uU2VydmljZXMsIGJvb2wgaGFzUmljaENvbnRlbnRTZXJ2aWNlcykKICNlbmRp
ZgogCi0jaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICBMb2FkQ29udGVudEV4dGVu
c2lvbihTdHJpbmcgaWRlbnRpZmllciwgU3RyaW5nIHNlcmlhbGl6ZWRSdWxlcykKLSNlbmRpZgot
CiAgICAgUHJvY2Vzc1dpbGxTdXNwZW5kKCkKICAgICBDYW5jZWxQcm9jZXNzV2lsbFN1c3BlbmQo
KQogfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAkocmV2aXNpb24g
MTc4NjE3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODAsNCArMTgwLDE3IEBA
IHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVVc2UKICNlbmRpZgogfQogCisj
aWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjphZGRVc2VyQ29udGVudEZpbHRlcnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcs
IFN0cmluZz4+JiB1c2VyQ29udGVudEZpbHRlcnMpCit7CisgICAgZm9yIChjb25zdCBhdXRvJiB1
c2VyQ29udGVudEZpbHRlciA6IHVzZXJDb250ZW50RmlsdGVycykKKyAgICAgICAgbV91c2VyQ29u
dGVudENvbnRyb2xsZXItPmFkZFVzZXJDb250ZW50RmlsdGVyKHVzZXJDb250ZW50RmlsdGVyLmZp
cnN0LCB1c2VyQ29udGVudEZpbHRlci5zZWNvbmQpOworfQorCit2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlckNvbnRlbnRGaWx0ZXJzKCkKK3sKKyAgICBtX3VzZXJD
b250ZW50Q29udHJvbGxlci0+cmVtb3ZlQWxsVXNlckNvbnRlbnRGaWx0ZXJzKCk7Cit9CisjZW5k
aWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyLmgJKHJldmlzaW9uIDE3ODYxNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDE1ICs1MSwyMCBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGFkZFVzZXJTY3JpcHRzKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpVc2VyU2NyaXB0PiYgdXNlclNjcmlwdHMpOworICAgIHZvaWQg
YWRkVXNlclNjcmlwdHMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVzZXJTY3JpcHQ+Jik7CiAgICAg
dm9pZCByZW1vdmVBbGxVc2VyU2NyaXB0cygpOwogCi0gICAgdm9pZCBhZGRVc2VyU3R5bGVTaGVl
dHMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0PiYgdXNlclN0eWxlU2hlZXRz
KTsKKyAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6VXNl
clN0eWxlU2hlZXQ+Jik7CiAgICAgdm9pZCByZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKTsKIAot
ICAgIHZvaWQgYWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyhjb25zdCBWZWN0b3I8V2ViU2Ny
aXB0TWVzc2FnZUhhbmRsZXJIYW5kbGU+JiBzY3JpcHRNZXNzYWdlSGFuZGxlcnMpOworICAgIHZv
aWQgYWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyhjb25zdCBWZWN0b3I8V2ViU2NyaXB0TWVz
c2FnZUhhbmRsZXJIYW5kbGU+Jik7CiAgICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0TWVzc2FnZUhh
bmRsZXIodWludDY0X3QpOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICB2
b2lkIGFkZFVzZXJDb250ZW50RmlsdGVycyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywg
U3RyaW5nPj4mKTsKKyAgICB2b2lkIHJlbW92ZUFsbFVzZXJDb250ZW50RmlsdGVycygpOworI2Vu
ZGlmCisKICAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7CiAgICAgUmVmPFdlYkNvcmU6OlVzZXJD
b250ZW50Q29udHJvbGxlcj4gbV91c2VyQ29udGVudENvbnRyb2xsZXI7CiAjaWYgRU5BQkxFKFVT
RVJfTUVTU0FHRV9IQU5ETEVSUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxNzg2MTcpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdl
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjUsMTEgKzI1LDE2IEBACiAKIG1lc3NhZ2VzIC0+IFdl
YlVzZXJDb250ZW50Q29udHJvbGxlciB7CiAgICAgQWRkVXNlclNjcmlwdHMoVmVjdG9yPFdlYkNv
cmU6OlVzZXJTY3JpcHQ+IHVzZXJTY3JpcHRzKTsKLSAgICBSZW1vdmVBbGxVc2VyU2NyaXB0cygp
CisgICAgUmVtb3ZlQWxsVXNlclNjcmlwdHMoKTsKIAotICAgIEFkZFVzZXJTdHlsZVNoZWV0cyhW
ZWN0b3I8V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+IHVzZXJTdHlsZVNoaGV0cyk7Ci0gICAgUmVt
b3ZlQWxsVXNlclN0eWxlU2hlZXRzKCkKKyAgICBBZGRVc2VyU3R5bGVTaGVldHMoVmVjdG9yPFdl
YkNvcmU6OlVzZXJTdHlsZVNoZWV0PiB1c2VyU3R5bGVTaGVldHMpOworICAgIFJlbW92ZUFsbFVz
ZXJTdHlsZVNoZWV0cygpOwogCiAgICAgQWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyhWZWN0
b3I8V2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckhhbmRsZT4gc2NyaXB0TWVzc2FnZUhh
bmRsZXJzKTsKLSAgICBSZW1vdmVVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIodWludDY0X3QgaWRl
bnRpZmllcikKKyAgICBSZW1vdmVVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIodWludDY0X3QgaWRl
bnRpZmllcik7CisKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIEFkZFVzZXJD
b250ZW50RmlsdGVycyhWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4gdXNlckNvbnRl
bnRGaWx0ZXJzKTsKKyAgICBSZW1vdmVBbGxVc2VyQ29udGVudEZpbHRlcnMoKTsKKyNlbmRpZgog
fQo=
</data>
<flag name="review"
          id="269777"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>