<?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>181390</bug_id>
          
          <creation_ts>2018-01-08 09:14:18 -0800</creation_ts>
          <short_desc>[Attachment Support] Expose file name and content type of WKAttachment</short_desc>
          <delta_ts>2018-01-08 18:06:51 -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>HTML Editing</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>181420</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mitz</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1386756</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-01-08 09:14:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/36336837&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386775</commentid>
    <comment_count>1</comment_count>
      <attachid>330709</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-01-08 09:47:39 -0800</bug_when>
    <thetext>Created attachment 330709
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386788</commentid>
    <comment_count>2</comment_count>
      <attachid>330714</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-01-08 10:18:31 -0800</bug_when>
    <thetext>Created attachment 330714
Fix non-macOS ports</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386835</commentid>
    <comment_count>3</comment_count>
      <attachid>330719</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-01-08 12:07:53 -0800</bug_when>
    <thetext>Created attachment 330719
Remove AttachmentRequestOptions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386935</commentid>
    <comment_count>4</comment_count>
      <attachid>330719</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-01-08 14:44:25 -0800</bug_when>
    <thetext>Comment on attachment 330719
Remove AttachmentRequestOptions

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

&gt; Source/WebKit/Shared/WebCoreArgumentCoders.cpp:2796
&gt; +    if (!decoder.decode(info.filePath))
&gt; +        return false;

Sending filesystem paths from a potentially-compromised Web Content process to the UI process scares me. Do we have to do this? How do we make it safe? Maybe look at MESSAGE_CHECK_URL for ideas? Keep a set of files that you sent or something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386941</commentid>
    <comment_count>5</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-01-08 14:52:49 -0800</bug_when>
    <thetext>(In reply to Tim Horton from comment #4)
&gt; Comment on attachment 330719 [details]
&gt; Remove AttachmentRequestOptions
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=330719&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/Shared/WebCoreArgumentCoders.cpp:2796
&gt; &gt; +    if (!decoder.decode(info.filePath))
&gt; &gt; +        return false;
&gt; 
&gt; Sending filesystem paths from a potentially-compromised Web Content process
&gt; to the UI process scares me. Do we have to do this? How do we make it safe?
&gt; Maybe look at MESSAGE_CHECK_URL for ideas? Keep a set of files that you sent
&gt; or something?

Good point. Added a MESSAGE_CHECK_URL when receiving an AttachmentInfo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386950</commentid>
    <comment_count>6</comment_count>
      <attachid>330744</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-01-08 15:09:20 -0800</bug_when>
    <thetext>Created attachment 330744
Add a URL message check in WebPageProxy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386974</commentid>
    <comment_count>7</comment_count>
      <attachid>330744</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-01-08 15:57:30 -0800</bug_when>
    <thetext>Comment on attachment 330744
Add a URL message check in WebPageProxy

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

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:5219
&gt; +    if (!info.filePath.isEmpty())

I just realized that this check isn&apos;t necessary — I&apos;ve removed it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387023</commentid>
    <comment_count>8</comment_count>
      <attachid>330765</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-01-08 17:33:01 -0800</bug_when>
    <thetext>Created attachment 330765
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387041</commentid>
    <comment_count>9</comment_count>
      <attachid>330765</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-08 18:05:52 -0800</bug_when>
    <thetext>Comment on attachment 330765
Patch for landing

Clearing flags on attachment: 330765

Committed r226604: &lt;https://trac.webkit.org/changeset/226604&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330709</attachid>
            <date>2018-01-08 09:47:39 -0800</date>
            <delta_ts>2018-01-08 10:18:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181390-20180108094738.patch</filename>
            <type>text/plain</type>
            <size>42782</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2NDc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQ2NjZlYmEzMGFjM2Qw
NWFiMTc1ZDgyYmUyODI3ZWVmYjZjYTBjNC4uZTY4NjNkZGQxNjVlOTIzZGJkOWM0ZWJlN2Y2MDA0
ZWY2ZmVmZDhiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE4LTAxLTA4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50
IFN1cHBvcnRdIEV4cG9zZSBmaWxlIG5hbWUgYW5kIGNvbnRlbnQgdHlwZSBvZiBXS0F0dGFjaG1l
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTM5
MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYzMzY4Mzc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG5ldyBzdHJ1Y3RzIGluIEF0dGFjaG1l
bnRUeXBlcy5oIGFuZCByZWZhY3RvciBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnJlcXVlc3REYXRh
IHRvIHJlcXVlc3RJbmZvLiBTZWUgYmVsb3cKKyAgICAgICAgZm9yIG1vcmUgZGV0YWlscy4gQXVn
bWVudGVkIGV4aXN0aW5nIEFQSSB0ZXN0cyBpbiBXS0F0dGFjaG1lbnRUZXN0cy4KKworICAgICAg
ICAqIGh0bWwvQXR0YWNobWVudFR5cGVzLmg6CisKKyAgICAgICAgQWRkIGEgc3RydWN0IHJlcHJl
c2VudGluZyBvcHRpb25zIHdoZW4gcmVxdWVzdGluZyBpbmZvcm1hdGlvbiBhYm91dCBhbiBhdHRh
Y2htZW50IGVsZW1lbnQsIGFuZCBhbm90aGVyIHN0cnVjdCB0bworICAgICAgICByZXByZXNlbnQg
YSBzbmFwc2hvdCBvZiBpbmZvcm1hdGlvbiBhYm91dCBhbiBhdHRhY2htZW50IGVsZW1lbnQuIFNp
bmNlIEF0dGFjaG1lbnRJbmZvUmVxdWVzdE9wdGlvbnMgZG9lc24ndCBuZWVkCisgICAgICAgIHRv
IHByb3BhZ2F0ZSBhIFNoYXJlZEJ1ZmZlciBvdmVyIElQQywgd2UgYWRkaXRpb25hbGx5IGltcGxl
bWVudCBJUEMgY29kaW5nIHN1cHBvcnQgaGVyZSBmb3IgcmVxdWVzdCBvcHRpb25zLgorCisgICAg
ICAgIChXZWJDb3JlOjpBdHRhY2htZW50SW5mb1JlcXVlc3RPcHRpb25zOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6QXR0YWNobWVudEluZm9SZXF1ZXN0T3B0aW9uczo6ZGVjb2Rl
KToKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHA6CisKKyAgICAgICAg
Q2hhbmdlIHJlcXVlc3REYXRhIHRvIHJlcXVlc3RJbmZvLiBJbnN0ZWFkIG9mIGZldGNoaW5nIGFu
ZCBkZWxpdmVyaW5nIGRhdGEgdmlhIGNhbGxiYWNrLCByZXF1ZXN0SW5mbyByZXR1cm5zIGFuCisg
ICAgICAgIEF0dGFjaG1lbnRJbmZvLCB3aGljaCBtYXkgb3B0aW9uYWxseSBpbmNsdWRlIGRhdGEs
IGRlcGVuZGluZyBvbiB0aGUgZ2l2ZW4gcmVxdWVzdCBvcHRpb25zLgorCisgICAgICAgIChXZWJD
b3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnJlcXVlc3RJbmZvKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6cmVxdWVzdERhdGEpOiBEZWxldGVkLgorICAgICAg
ICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisKIDIwMTgtMDEtMDUgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW0F0dGFjaG1lbnQgU3Vw
cG9ydF0gQWRkIGEgd2F5IHRvIHdyaXRlIGJsb2IgZGF0YSB0byBhIGZpbGUgVVJMIGZyb20gdGhl
IFVJIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZDg3NmRkNmZmY2ZjYWNkMmRjOTJmNjhmYmVjMzIzNjgx
M2E5ZTBkNC4uNTYxYjRlYjJhOWY2ZDc5NTU0ZWE5MGVlN2E5ODdkYmU1NzZlZjQ0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw3MCBAQAorMjAxOC0wMS0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hz
aWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQXR0YWNobWVudCBTdXBwb3J0XSBFeHBvc2UgZmls
ZSBuYW1lIGFuZCBjb250ZW50IHR5cGUgb2YgV0tBdHRhY2htZW50CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODEzOTAKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzM2MzM2ODM3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBzdXBwb3J0IGZvciAtW19XS0F0dGFjaG1lbnQgcmVxdWVzdEluZm9XaXRo
T3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjpdLCB3aGljaCBmZXRjaGVzIGEgc25hcHNob3Qgb2Yg
dGhlCisgICAgICAgIGF0dGFjaG1lbnQncyBzdGF0ZS4gVGhpcyBtYXkgaW5jbHVkZSB0aGUgYXR0
YWNobWVudCBkYXRhIGFzIGlubGluZSBOU0RhdGEsIGRlcGVuZGluZyBvbiB0aGUgb3B0aW9ucy4g
VGhpcyBBUEkgaXMKKyAgICAgICAgbWVhbnQgdG8gYmUgYSByZXBsYWNlbWVudCBmb3IgLXJlcXVl
c3REYXRhOiB0aGF0IHByb3ZpZGVzIGFkZGl0aW9uYWwgbWV0YWRhdGEgYWJvdXQgdGhlIGF0dGFj
aG1lbnQsIGJ1dCB0aGlzCisgICAgICAgIGFsc28gYWxsb3dzIHRoZSBjbGllbnQgdG8gc2VuZCBj
aGVhcCByZXF1ZXN0cyBmb3IgYXR0YWNobWVudCBtZXRhZGF0YSB3aXRob3V0IGhhdmluZyB0byBs
b2FkIGlubGluZSBkYXRhLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6
CisgICAgICAgIChoZWFkZXJzX2Zvcl90eXBlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxBdHRhY2htZW50
SW5mbz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8QXR0YWNobWVudElu
Zm8+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoK
KworICAgICAgICBBZGQgSVBDIHN1cHBvcnQgZm9yIEF0dGFjaG1lbnRJbmZvIGFuZCBBdHRhY2ht
ZW50UmVxdWVzdE9wdGlvbnMuIE5vdGUgdGhhdCBpbnN0ZWFkIG9mIHVzaW5nCisgICAgICAgIChl
bmNvZGV8ZGVjb2RlKVNoYXJlZEJ1ZmZlciwgd2Ugc2VuZCBhbmQgcmVjZWl2ZSBkYXRhIHJlZmVy
ZW5jZXMgdG8gdGhlIHNoYXJlZCBidWZmZXIuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SUF0dGFjaG1lbnQuY3BwOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpyZXF1ZXN0SW5mbyk6
CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnJlcXVlc3REYXRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaDoKKworICAgICAgICBDaGFuZ2UgcmVx
dWVzdERhdGEgdG8gcmVxdWVzdEluZm8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0F0dGFjaG1lbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFj
aG1lbnQubW06CisgICAgICAgIChjb3JlSW5mb1JlcXVlc3RUeXBlKToKKyAgICAgICAgKC1bX1dL
QXR0YWNobWVudEluZm9SZXF1ZXN0T3B0aW9ucyBpbml0XSk6CisgICAgICAgICgtW19XS0F0dGFj
aG1lbnRJbmZvUmVxdWVzdE9wdGlvbnMgY29yZVJlcXVlc3RPcHRpb25zXSk6CisgICAgICAgICgt
W19XS0F0dGFjaG1lbnRJbmZvIGluaXRXaXRoSW5mbzpdKToKKyAgICAgICAgKC1bX1dLQXR0YWNo
bWVudEluZm8gZGF0YV0pOgorICAgICAgICAoLVtfV0tBdHRhY2htZW50SW5mbyBuYW1lXSk6Cisg
ICAgICAgICgtW19XS0F0dGFjaG1lbnRJbmZvIGZpbGVQYXRoXSk6CisgICAgICAgICgtW19XS0F0
dGFjaG1lbnRJbmZvIGNvbnRlbnRUeXBlXSk6CisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgcmVx
dWVzdEluZm9XaXRoT3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bX1dL
QXR0YWNobWVudCByZXF1ZXN0RGF0YTpdKToKKworICAgICAgICBJbXBsZW1lbnQgLXJlcXVlc3RJ
bmZvV2l0aE9wdGlvbnM6Y29tcGxldGlvbkhhbmRsZXI6IGJ5IGNhbGxpbmcgaW50byBBUElBdHRh
Y2htZW50LCBhbmQgcmVpbXBsZW1lbnQKKyAgICAgICAgLXJlcXVlc3REYXRhOiBpbiB0ZXJtcyBv
ZiAtcmVxdWVzdEluZm9XaXRoT3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjouCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjphdHRhY2htZW50SW5mb0NhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpyZXF1ZXN0QXR0YWNobWVudEluZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnNoYXJlZEJ1ZmZlckNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpyZXF1ZXN0QXR0YWNobWVudERhdGEpOiBEZWxldGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluOgorCisgICAgICAgIFJlbmFtZSB0aGUgU2hhcmVkQnVmZmVyQ2FsbGJhY2sg
SVBDIG1lc3NhZ2UgdG8gQXR0YWNobWVudEluZm9DYWxsYmFjaywgYW5kIG1ha2UgaXQgY29uZGl0
aW9uYWwgb24KKyAgICAgICAgQVRUQUNITUVOVF9TVVBQT1JULiBSZW5hbWUgcmVxdWVzdEF0dGFj
aG1lbnREYXRhIHRvIHJlcXVlc3RBdHRhY2htZW50SW5mby4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVz
dEF0dGFjaG1lbnRJbmZvKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW52b2tlU2hhcmVk
QnVmZmVyQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1
ZXN0QXR0YWNobWVudERhdGEpOiBEZWxldGVkLgorCisgICAgICAgIFJlbmFtZSByZXF1ZXN0QXR0
YWNobWVudERhdGEgdG8gcmVxdWVzdEF0dGFjaG1lbnRJbmZvIGFuZCBhZG9wdCBIVE1MQXR0YWNo
bWVudEVsZW1lbnQ6OnJlcXVlc3RJbmZvLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbjoKKwogMjAxOC0wMS0wNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJlc3RyaWN0IG5hdmlnYXRpb24tdGltZSBXS1dlYnNpdGVEYXRh
U3RvcmUgc3dhcHBpbmcgdG8gbWFpbiBmcmFtZSBuYXZpZ2F0aW9ucwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9BdHRhY2htZW50VHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
QXR0YWNobWVudFR5cGVzLmgKaW5kZXggNTY1ZGU5MThlNzNiNzg0ZGVkMDNiMGVhYWI2OTMwODcx
N2FmOGQ5NS4uZGZlMjExYzc0Y2E5Y2FlMmZlNmJjZTAxYzVhN2Q3NDc1NDVhZTQ2MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9BdHRhY2htZW50VHlwZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0F0dGFjaG1lbnRUeXBlcy5oCkBAIC0yOCw5ICsyOCwxMiBAQAogI2lmIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBTaGFyZWRCdWZmZXI7CisKIGVudW0gY2xhc3MgQXR0YWNobWVudERpc3BsYXlNb2RlIHsK
ICAgICBBdXRvLAogICAgIEluUGxhY2UsCkBAIC01OCw2ICs2MSw1OSBAQCB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBpbmxpbmUgc3RkOjpvcHRpb25hbDxBdHRhY2htZW50RGlzcGxheU9wdGlvbnM+
IEF0dGFjaG1lbgogICAgIHJldHVybiB7eyBtb2RlIH19OwogfQogCitlbnVtIGNsYXNzIEF0dGFj
aG1lbnREYXRhUmVxdWVzdFR5cGUgeworICAgIE9ubHlJbmNsdWRlSWZEYXRhQmFja2VkLAorICAg
IERvTm90SW5jbHVkZSwKKyAgICBBbHdheXNJbmNsdWRlCit9OworCitzdHJ1Y3QgQXR0YWNobWVu
dEluZm9SZXF1ZXN0T3B0aW9ucyB7CisgICAgQXR0YWNobWVudERhdGFSZXF1ZXN0VHlwZSBkYXRh
UmVxdWVzdFR5cGU7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6
b3B0aW9uYWw8QXR0YWNobWVudEluZm9SZXF1ZXN0T3B0aW9ucz4gZGVjb2RlKERlY29kZXImKTsK
K307CisKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgQXR0YWNobWVudEluZm9SZXF1
ZXN0T3B0aW9uczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rl
ci5lbmNvZGVFbnVtKGRhdGFSZXF1ZXN0VHlwZSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29k
ZXI+CitzdGQ6Om9wdGlvbmFsPEF0dGFjaG1lbnRJbmZvUmVxdWVzdE9wdGlvbnM+IEF0dGFjaG1l
bnRJbmZvUmVxdWVzdE9wdGlvbnM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIEF0
dGFjaG1lbnRJbmZvUmVxdWVzdE9wdGlvbnMgcmVzdWx0OworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVFbnVtKHJlc3VsdC5kYXRhUmVxdWVzdFR5cGUpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCisgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKK30KKworc3RydWN0IEF0dGFjaG1l
bnRJbmZvIHsKKyAgICBTdHJpbmcgY29udGVudFR5cGU7CisgICAgU3RyaW5nIG5hbWU7CisgICAg
U3RyaW5nIGZpbGVQYXRoOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7Cit9OworCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBl
bmFtZT4gc3RydWN0IEVudW1UcmFpdHM7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBFLi4uPiBzdHJ1
Y3QgRW51bVZhbHVlczsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpB
dHRhY2htZW50RGF0YVJlcXVlc3RUeXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVl
czwKKyAgICAgICAgV2ViQ29yZTo6QXR0YWNobWVudERhdGFSZXF1ZXN0VHlwZSwKKyAgICAgICAg
V2ViQ29yZTo6QXR0YWNobWVudERhdGFSZXF1ZXN0VHlwZTo6T25seUluY2x1ZGVJZkRhdGFCYWNr
ZWQsCisgICAgICAgIFdlYkNvcmU6OkF0dGFjaG1lbnREYXRhUmVxdWVzdFR5cGU6OkRvTm90SW5j
bHVkZSwKKyAgICAgICAgV2ViQ29yZTo6QXR0YWNobWVudERhdGFSZXF1ZXN0VHlwZTo6QWx3YXlz
SW5jbHVkZQorICAgID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwogI2VuZGlmIC8vIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRh
Y2htZW50RWxlbWVudC5jcHAKaW5kZXggMWY0NDVlODA2MzI3MDBjN2U4OTUwZTczODEwNzA5N2M1
ZTAwYjQyOS4uM2ZmNmFlNGY5ZTI3OTdjNGQ2ODNiYTg0ZmY4Nzk4OGU3MWVjM2FhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApAQCAtMzA2LDEy
ICszMDYsMzkgQEAgdm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnBvcHVsYXRlU2hhZG93Um9v
dElmTmVjZXNzYXJ5KCkKICAgICB9CiB9CiAKLXZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojpy
ZXF1ZXN0RGF0YShGdW5jdGlvbjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpPiYmIGNhbGxi
YWNrKQordm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnJlcXVlc3RJbmZvKGNvbnN0IEF0dGFj
aG1lbnRJbmZvUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIEZ1bmN0aW9uPHZvaWQoY29uc3QgQXR0
YWNobWVudEluZm8mKT4mJiBjYWxsYmFjaykKIHsKLSAgICBpZiAobV9maWxlKQotICAgICAgICBt
X2F0dGFjaG1lbnRSZWFkZXJzLmFwcGVuZChBdHRhY2htZW50RGF0YVJlYWRlcjo6Y3JlYXRlKCp0
aGlzLCBXVEZNb3ZlKGNhbGxiYWNrKSkpOwotICAgIGVsc2UKLSAgICAgICAgY2FsbGJhY2sobnVs
bHB0cik7CisgICAgaWYgKCFtX2ZpbGUpIHsKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIEF0dGFjaG1lbnRJbmZvIGluZm9XaXRob3V0RGF0YSB7
IG1fZmlsZS0+dHlwZSgpLCBtX2ZpbGUtPm5hbWUoKSwgbV9maWxlLT5wYXRoKCksIG51bGxwdHIg
fTsKKworICAgIGJvb2wgc2hvdWxkSW5jbHVkZURhdGEgPSBmYWxzZTsKKyAgICBzd2l0Y2ggKG9w
dGlvbnMuZGF0YVJlcXVlc3RUeXBlKSB7CisgICAgY2FzZSBBdHRhY2htZW50RGF0YVJlcXVlc3RU
eXBlOjpEb05vdEluY2x1ZGU6CisgICAgICAgIHNob3VsZEluY2x1ZGVEYXRhID0gZmFsc2U7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQXR0YWNobWVudERhdGFSZXF1ZXN0VHlwZTo6QWx3YXlz
SW5jbHVkZToKKyAgICAgICAgc2hvdWxkSW5jbHVkZURhdGEgPSB0cnVlOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEF0dGFjaG1lbnREYXRhUmVxdWVzdFR5cGU6Ok9ubHlJbmNsdWRlSWZEYXRh
QmFja2VkOgorICAgICAgICBzaG91bGRJbmNsdWRlRGF0YSA9IG1fZmlsZS0+cGF0aCgpLmlzRW1w
dHkoKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmICghc2hvdWxkSW5jbHVk
ZURhdGEpIHsKKyAgICAgICAgY2FsbGJhY2soaW5mb1dpdGhvdXREYXRhKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIG1fYXR0YWNobWVudFJlYWRlcnMuYXBwZW5kKEF0dGFjaG1lbnRE
YXRhUmVhZGVyOjpjcmVhdGUoKnRoaXMsIFtpbmZvV2l0aG91dERhdGEgPSBXVEZNb3ZlKGluZm9X
aXRob3V0RGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIGRhdGEpIHsKKyAgICAgICAgY2FsbGJhY2soeyBpbmZvV2l0aG91dERhdGEuY29u
dGVudFR5cGUsIGluZm9XaXRob3V0RGF0YS5uYW1lLCBpbmZvV2l0aG91dERhdGEuZmlsZVBhdGgs
IFdURk1vdmUoZGF0YSkgfSk7CisgICAgfSkpOwogfQogCiB2b2lkIEhUTUxBdHRhY2htZW50RWxl
bWVudDo6ZGVzdHJveVJlYWRlcihBdHRhY2htZW50RGF0YVJlYWRlciYgZmluaXNoZWRSZWFkZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAppbmRleCAxNzk1
ZDFmZDBiOWNiMGIxOWMyNzE1NWIwYzE1ZTUzMjVmNDAwNzRkLi5kMWM1NTNjYWFiMjFhODMwNzE0
MWE3MGNiMDljODhlNDkzOTE4ZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdHRhY2htZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFj
aG1lbnRFbGVtZW50LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogCiAgICAgUmVuZGVyQXR0
YWNobWVudCogYXR0YWNobWVudFJlbmRlcmVyKCkgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlcXVlc3REYXRhKEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+
JiYgY2FsbGJhY2spOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVxdWVzdEluZm8oY29uc3Qg
QXR0YWNobWVudEluZm9SZXF1ZXN0T3B0aW9ucyYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgQXR0YWNo
bWVudEluZm8mKT4mJiBjYWxsYmFjayk7CiAgICAgdm9pZCBkZXN0cm95UmVhZGVyKEF0dGFjaG1l
bnREYXRhUmVhZGVyJik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQppbmRleCBjNDg0MGQ5NzMzZWEzNmU2YzgyZDU5NjU5M2UxZTYzYjQzNjdlYjI4
Li42MmNjMDY2MDIyMDZkNTE1MmY5M2Y5NDMxOWEwZTk4MDM0Yzk4ODQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTM2Nyw2ICszNjcsOCBAQCBkZWYgaGVh
ZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1N0cmluZyc6IFsnPHd0Zi90ZXh0L1dURlN0
cmluZy5oPiddLAogICAgICAgICAnUEFMOjpTZXNzaW9uSUQnOiBbJzxwYWwvU2Vzc2lvbklELmg+
J10sCiAgICAgICAgICdXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMnOiBbJzxXZWJD
b3JlL0F0dGFjaG1lbnRUeXBlcy5oPiddLAorICAgICAgICAnV2ViQ29yZTo6QXR0YWNobWVudElu
Zm9SZXF1ZXN0T3B0aW9ucyc6IFsnPFdlYkNvcmUvQXR0YWNobWVudFR5cGVzLmg+J10sCisgICAg
ICAgICdXZWJDb3JlOjpBdHRhY2htZW50SW5mbyc6IFsnPFdlYkNvcmUvQXR0YWNobWVudFR5cGVz
Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpBdXRvcGxheUV2ZW50RmxhZ3MnOiBbJzxXZWJDb3Jl
L0F1dG9wbGF5RXZlbnQuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMn
OiBbJzxXZWJDb3JlL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaD4nXSwKICAgICAgICAgJ1dlYkNv
cmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MnOiBbJzxXZWJDb3JlL0ZpbGVDaG9vc2VyLmg+J10sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA4
MWM0ZTBmNTQ5MGQyZjBhYzFkYWU4YmQ2MjY4ZjgwZTc4NmVlNTBiLi4wMTRhOWViZTJkZGI1Y2Ez
NzMwMDc0N2Y1NjI1YzA5MTZiMzUzYmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0F0dGFjaG1lbnRUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Jsb2JQYXJ0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9DYWNoZVF1ZXJ5T3B0aW9ucy5oPgpAQCAtMjc3MSw0ICsyNzcyLDM5IEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxQcm9taXNlZEJsb2JJbmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIs
IFByb21pc2VkQmxvYkluZm8mCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgQXJndW1lbnRD
b2RlcjxBdHRhY2htZW50SW5mbz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBdHRh
Y2htZW50SW5mbyYgaW5mbykKK3sKKyAgICBib29sIGRhdGFJc051bGwgPSAhaW5mby5kYXRhOwor
ICAgIGVuY29kZXIgPDwgaW5mby5jb250ZW50VHlwZSA8PCBpbmZvLm5hbWUgPDwgaW5mby5maWxl
UGF0aCA8PCBkYXRhSXNOdWxsOworICAgIGlmICghZGF0YUlzTnVsbCkgeworICAgICAgICBTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UgeyBpbmZvLmRhdGEuZ2V0KCkgfTsK
KyAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxEYXRhUmVmZXJlbmNlJj4oZGF0YVJlZmVy
ZW5jZSk7CisgICAgfQorfQorCitib29sIEFyZ3VtZW50Q29kZXI8QXR0YWNobWVudEluZm8+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQXR0YWNobWVudEluZm8mIGluZm8pCit7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShpbmZvLmNvbnRlbnRUeXBlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLm5hbWUpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8uZmlsZVBhdGgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIGRhdGFJc051bGwgPSB0cnVlOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoZGF0YUlzTnVsbCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmICghZGF0YUlzTnVsbCkgeworICAgICAgICBEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7
CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YVJlZmVyZW5jZSkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGluZm8uZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBmNTNkZWQyY2I1Mjg4ZGFlNmQ5
YTM3ZTJkYjI4ZmFkNTA4NGJiY2JmLi41MTA1NzkyNzE1NTI5NTkwMGI3YjI2OGMxY2I2YmYwZjE3
MzBhZDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aApAQCAtODksNiArODksNyBAQCBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIGNsYXNzIFVz
ZXJTdHlsZVNoZWV0OwogY2xhc3MgVVJMOwogCitzdHJ1Y3QgQXR0YWNobWVudEluZm87CiBzdHJ1
Y3QgQ2FjaGVRdWVyeU9wdGlvbnM7CiBzdHJ1Y3QgQ29tcG9zaXRpb25VbmRlcmxpbmU7CiBzdHJ1
Y3QgRGljdGF0aW9uQWx0ZXJuYXRpdmU7CkBAIC02ODksNiArNjkwLDExIEBAIHRlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UHJvbWlzZWRCbG9iSW5mbz4gewogICAgIHN0
YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6UHJvbWlzZWRCbG9iSW5mbyYpOwog
fTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpBdHRhY2htZW50
SW5mbz4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6
QXR0YWNobWVudEluZm8mKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNv
cmU6OkF0dGFjaG1lbnRJbmZvJik7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogbmFtZXNw
YWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0
YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5j
cHAKaW5kZXggODVhOGEzZThhNWYwNjk2OWYzNDIwMzMyNDRlOWEwNzdiNTE5MDAwYS4uOTcyYmRl
MGMyY2QwYzVlMjM2MWU1Y2ExMDMxZDQ4ZGM3MmM1NTMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAtNDgsMTIgKzQ4LDEyIEBAIEF0dGFj
aG1lbnQ6On5BdHRhY2htZW50KCkKIHsKIH0KIAotdm9pZCBBdHRhY2htZW50OjpyZXF1ZXN0RGF0
YShGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBXZWJLaXQ6OkNh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQordm9pZCBBdHRhY2htZW50OjpyZXF1ZXN0
SW5mbyhjb25zdCBXZWJDb3JlOjpBdHRhY2htZW50SW5mb1JlcXVlc3RPcHRpb25zJiBvcHRpb25z
LCBGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF0dGFjaG1lbnRJbmZvJiwgV2ViS2l0OjpD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAobV93ZWJQYWdlKQot
ICAgICAgICBtX3dlYlBhZ2UtPnJlcXVlc3RBdHRhY2htZW50RGF0YShtX2lkZW50aWZpZXIsIFdU
Rk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAgbV93ZWJQYWdlLT5yZXF1ZXN0QXR0YWNobWVudElu
Zm8obV9pZGVudGlmaWVyLCBvcHRpb25zLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgZWxzZQot
ICAgICAgICBjYWxsYmFjayhudWxscHRyLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok93
bmVyV2FzSW52YWxpZGF0ZWQpOworICAgICAgICBjYWxsYmFjayh7IH0sIFdlYktpdDo6Q2FsbGJh
Y2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CiB9CiAKIHZvaWQgQXR0YWNobWVu
dDo6c2V0RGlzcGxheU9wdGlvbnMoV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zIG9w
dGlvbnMsIEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxs
YmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2ht
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCmluZGV4
IGQyNmYyZWY3NjhiZWQ3NDg1OTgyODBhMzljMTQzMGJiZTE1OWM0ZmYuLjRkOTcyZGNkYjI5MWFl
NWMxYTBkZTAzY2M0OTY3MmI5ZDVmNzczMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUF0dGFjaG1lbnQuaApAQCAtMzUsNiArMzUsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IEF0dGFjaG1lbnREaXNwbGF5T3B0aW9uczsK
K3N0cnVjdCBBdHRhY2htZW50SW5mb1JlcXVlc3RPcHRpb25zOworc3RydWN0IEF0dGFjaG1lbnRJ
bmZvOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ5LDcgKzUxLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgfkF0dGFjaG1lbnQoKTsKIAogICAgIGNvbnN0IFdURjo6U3RyaW5nJiBpZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9Ci0gICAgdm9pZCByZXF1ZXN0
RGF0YShGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBXZWJLaXQ6
OkNhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RJbmZvKGNvbnN0IFdl
YkNvcmU6OkF0dGFjaG1lbnRJbmZvUmVxdWVzdE9wdGlvbnMmLCBGdW5jdGlvbjx2b2lkKGNvbnN0
IFdlYkNvcmU6OkF0dGFjaG1lbnRJbmZvJiwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKT4m
Jik7CiAgICAgdm9pZCBzZXREaXNwbGF5T3B0aW9ucyhXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxh
eU9wdGlvbnMsIEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7
CiAgICAgdm9pZCBzZXREYXRhQW5kQ29udGVudFR5cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiwg
Y29uc3QgV1RGOjpTdHJpbmcmIG5ld0NvbnRlbnRUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgbmV3
RmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRh
Y2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVu
dC5oCmluZGV4IDIxMGNhMGVlYTRiN2IzYzZlMmY1NGVlZDg3ZTYzZTdjYWZkNGIzZjIuLjJjMTIz
OTFlODA3NWZkNmU0NjExNzk4NzFjMzdlYjE1NjMxZjNiMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQuaApAQCAtNDIsMTEgKzQyLDM0
IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSkKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBfV0tBdHRhY2htZW50RGlzcGxheU1vZGUgbW9kZTsK
IEBlbmQKIAordHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS0F0dGFjaG1lbnREYXRh
UmVxdWVzdFR5cGUpIHsKKyAgICAvLyBPbmx5IGluY2x1ZGUgaW5saW5lIGRhdGEgaW4gdGhlIHJl
c3BvbnNlIGZvciBhdHRhY2htZW50cyB0aGF0IGFyZSBiYWNrZWQgYnkgZGF0YSByYXRoZXIgdGhh
biBhIHBhdGggb24gZGlzay4KKyAgICAvLyBUaGlzIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW9yLgor
ICAgIF9XS0F0dGFjaG1lbnREYXRhUmVxdWVzdFR5cGVPbmx5SW5jbHVkZUlmRGF0YUJhY2tlZCwK
KyAgICBfV0tBdHRhY2htZW50RGF0YVJlcXVlc3RUeXBlRG9Ob3RJbmNsdWRlLAorICAgIF9XS0F0
dGFjaG1lbnREYXRhUmVxdWVzdFR5cGVBbHdheXNJbmNsdWRlCit9IFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCitXS19DTEFTU19BVkFJTEFC
TEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpCitAaW50ZXJmYWNlIF9XS0F0
dGFjaG1lbnRJbmZvUmVxdWVzdE9wdGlvbnMgOiBOU09iamVjdAorQHByb3BlcnR5IChub25hdG9t
aWMpIF9XS0F0dGFjaG1lbnREYXRhUmVxdWVzdFR5cGUgZGF0YVJlcXVlc3RUeXBlOworQGVuZAor
CitXS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
CitAaW50ZXJmYWNlIF9XS0F0dGFjaG1lbnRJbmZvIDogTlNPYmplY3QKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcgKmNvbnRlbnRUeXBlOworQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqbmFtZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgTlNTdHJpbmcgKmZpbGVQYXRoOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5LCBudWxsYWJsZSkgTlNEYXRhICpkYXRhOworQGVuZAorCiBXS19DTEFTU19BVkFJTEFCTEUo
bWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpCiBAaW50ZXJmYWNlIF9XS0F0dGFj
aG1lbnQgOiBOU09iamVjdAorLSAodm9pZClyZXF1ZXN0SW5mb1dpdGhPcHRpb25zOihfV0tBdHRh
Y2htZW50SW5mb1JlcXVlc3RPcHRpb25zICopb3B0aW9ucyBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCheKShfV0tBdHRhY2htZW50SW5mbyAqIF9OdWxsYWJsZSwgTlNFcnJvciAqIF9OdWxsYWJsZSkp
Y29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKXJlcXVlc3REYXRhOih2b2lkKF4pKE5TRGF0YSAq
IF9OdWxsYWJsZSwgTlNFcnJvciAqIF9OdWxsYWJsZSkpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2
b2lkKXNldERpc3BsYXlPcHRpb25zOihfV0tBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgKilvcHRp
b25zIGNvbXBsZXRpb246KHZvaWQoXiBfTnVsbGFibGUpKE5TRXJyb3IgKiBfTnVsbGFibGUpKWNv
bXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClzZXREYXRhOihOU0RhdGEgKilkYXRhIG5ld0NvbnRl
bnRUeXBlOihudWxsYWJsZSBOU1N0cmluZyAqKW5ld0NvbnRlbnRUeXBlIG5ld0ZpbGVuYW1lOihu
dWxsYWJsZSBOU1N0cmluZyAqKW5ld0ZpbGVuYW1lIGNvbXBsZXRpb246KHZvaWQoXiBfTnVsbGFi
bGUpKE5TRXJyb3IgKiBfTnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVyOworQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqdW5pcXVlSWRlbnRpZmllcjsKIEBlbmQKIAog
TlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tCmluZGV4IDkzOWNjODcyMjRlNTUwN2VhMTljOGY3NTY1
NTI0Yjk2YzMwMGRkNDQuLjc0ZTg5NDRjMGM2YjM3NTRlYmJiZDc5ODE3MjYxYTBmYTI5ODVmOGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2ht
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2ht
ZW50Lm1tCkBAIC0zNyw2ICszNywyMCBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCitz
dGF0aWMgV2ViQ29yZTo6QXR0YWNobWVudERhdGFSZXF1ZXN0VHlwZSBjb3JlSW5mb1JlcXVlc3RU
eXBlKF9XS0F0dGFjaG1lbnREYXRhUmVxdWVzdFR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5
cGUpIHsKKyAgICBjYXNlIF9XS0F0dGFjaG1lbnREYXRhUmVxdWVzdFR5cGVPbmx5SW5jbHVkZUlm
RGF0YUJhY2tlZDoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkF0dGFjaG1lbnREYXRhUmVxdWVz
dFR5cGU6Ok9ubHlJbmNsdWRlSWZEYXRhQmFja2VkOworICAgIGNhc2UgX1dLQXR0YWNobWVudERh
dGFSZXF1ZXN0VHlwZURvTm90SW5jbHVkZToKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkF0dGFj
aG1lbnREYXRhUmVxdWVzdFR5cGU6OkRvTm90SW5jbHVkZTsKKyAgICBjYXNlIF9XS0F0dGFjaG1l
bnREYXRhUmVxdWVzdFR5cGVBbHdheXNJbmNsdWRlOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6
QXR0YWNobWVudERhdGFSZXF1ZXN0VHlwZTo6QWx3YXlzSW5jbHVkZTsKKyAgICB9CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkF0dGFjaG1lbnREYXRhUmVx
dWVzdFR5cGU6Ok9ubHlJbmNsdWRlSWZEYXRhQmFja2VkOworfQorCiBAaW1wbGVtZW50YXRpb24g
X1dLQXR0YWNobWVudERpc3BsYXlPcHRpb25zIDogTlNPYmplY3QKIAogLSAoaW5zdGFuY2V0eXBl
KWluaXQKQEAgLTY5LDYgKzgzLDY0IEBAIC0gKFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0
aW9ucyljb3JlRGlzcGxheU9wdGlvbnMKIAogQGVuZAogCitAaW1wbGVtZW50YXRpb24gX1dLQXR0
YWNobWVudEluZm9SZXF1ZXN0T3B0aW9ucworCistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAg
IGlmIChzZWxmID0gW3N1cGVyIGluaXRdKQorICAgICAgICBfZGF0YVJlcXVlc3RUeXBlID0gX1dL
QXR0YWNobWVudERhdGFSZXF1ZXN0VHlwZU9ubHlJbmNsdWRlSWZEYXRhQmFja2VkOworICAgIHJl
dHVybiBzZWxmOworfQorCistIChXZWJDb3JlOjpBdHRhY2htZW50SW5mb1JlcXVlc3RPcHRpb25z
KWNvcmVSZXF1ZXN0T3B0aW9ucworeworICAgIHJldHVybiB7IGNvcmVJbmZvUmVxdWVzdFR5cGUo
X2RhdGFSZXF1ZXN0VHlwZSkgfTsKK30KKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gX1dLQXR0
YWNobWVudEluZm8geworICAgIFJldGFpblB0cjxOU0RhdGE+IF9kYXRhOworICAgIFJldGFpblB0
cjxOU1N0cmluZz4gX25hbWU7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfZmlsZVBhdGg7Cisg
ICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfY29udGVudFR5cGU7Cit9CisKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aEluZm86KGNvbnN0IFdlYkNvcmU6OkF0dGFjaG1lbnRJbmZvJilpbmZvCit7Cisg
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAg
ICBfZGF0YSA9IGluZm8uZGF0YSA/IGluZm8uZGF0YS0+Y3JlYXRlTlNEYXRhKCkgOiBuaWw7Cisg
ICAgX2NvbnRlbnRUeXBlID0gYWRvcHROUyhbKE5TU3RyaW5nICopaW5mby5jb250ZW50VHlwZSA/
OiBAIiIgY29weV0pOworICAgIF9uYW1lID0gYWRvcHROUyhbKE5TU3RyaW5nICopaW5mby5uYW1l
ID86IEAiIiBjb3B5XSk7CisgICAgX2ZpbGVQYXRoID0gYWRvcHROUyhbKE5TU3RyaW5nICopaW5m
by5maWxlUGF0aCA/OiBAIiIgY29weV0pOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKE5T
RGF0YSAqKWRhdGEKK3sKKyAgICByZXR1cm4gX2RhdGEuZ2V0KCk7Cit9CisKKy0gKE5TU3RyaW5n
ICopbmFtZQoreworICAgIHJldHVybiBfbmFtZS5nZXQoKTsKK30KKworLSAoTlNTdHJpbmcgKilm
aWxlUGF0aAoreworICAgIHJldHVybiBfZmlsZVBhdGguZ2V0KCk7Cit9CisKKy0gKE5TU3RyaW5n
ICopY29udGVudFR5cGUKK3sKKyAgICByZXR1cm4gX2NvbnRlbnRUeXBlLmdldCgpOworfQorCitA
ZW5kCisKIEBpbXBsZW1lbnRhdGlvbiBfV0tBdHRhY2htZW50CiAKIC0gKEFQSTo6T2JqZWN0Jilf
YXBpT2JqZWN0CkBAIC04MSwxOSArMTUzLDMyIEBAIC0gKEJPT0wpaXNFcXVhbDooaWQpb2JqZWN0
CiAgICAgcmV0dXJuIFtvYmplY3QgaXNLaW5kT2ZDbGFzczpbX1dLQXR0YWNobWVudCBjbGFzc11d
ICYmIFtzZWxmLnVuaXF1ZUlkZW50aWZpZXIgaXNFcXVhbDpbKF9XS0F0dGFjaG1lbnQgKilvYmpl
Y3QgdW5pcXVlSWRlbnRpZmllcl1dOwogfQogCi0tICh2b2lkKXJlcXVlc3REYXRhOih2b2lkKF4p
KE5TRGF0YSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKXJlcXVlc3RJ
bmZvV2l0aE9wdGlvbnM6KF9XS0F0dGFjaG1lbnRJbmZvUmVxdWVzdE9wdGlvbnMgKilvcHRpb25z
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKF9XS0F0dGFjaG1lbnRJbmZvICosIE5TRXJyb3Ig
KikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBfYXR0YWNobWVudC0+cmVxdWVzdERhdGEoWyBj
YXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSBdIChSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3Ip
IHsKKyAgICBhdXRvIGNvcmVSZXF1ZXN0T3B0aW9ucyA9IG9wdGlvbnMgPyBbb3B0aW9ucyBjb3Jl
UmVxdWVzdE9wdGlvbnNdIDogV2ViQ29yZTo6QXR0YWNobWVudEluZm9SZXF1ZXN0T3B0aW9ucyB7
IH07CisgICAgX2F0dGFjaG1lbnQtPnJlcXVlc3RJbmZvKGNvcmVSZXF1ZXN0T3B0aW9ucywgW2Nh
cHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgV2Vi
Q29yZTo6QXR0YWNobWVudEluZm8mIGluZm8sIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsK
ICAgICAgICAgaWYgKCFjYXB0dXJlZEJsb2NrKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIGlmIChidWZmZXIgJiYgZXJyb3IgPT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkKLSAg
ICAgICAgICAgIGNhcHR1cmVkQmxvY2soYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFz
ZSgpLCBuaWwpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjYXB0dXJlZEJsb2NrKG5pbCwg
W05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZToxIHVzZXJJbmZvOm5p
bF0pOworICAgICAgICBpZiAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkgewor
ICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpX
S0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvcldlYlZpZXdJbnZhbGlkYXRlZCB1c2VySW5mbzpuaWxd
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gYXR0YWNo
bWVudEluZm8gPSBhZG9wdE5TKFtbX1dLQXR0YWNobWVudEluZm8gYWxsb2NdIGluaXRXaXRoSW5m
bzppbmZvXSk7CisgICAgICAgIGNhcHR1cmVkQmxvY2soYXR0YWNobWVudEluZm8uZ2V0KCksIG5p
bCk7CiAgICAgfSk7CiB9CiAKKy0gKHZvaWQpcmVxdWVzdERhdGE6KHZvaWQoXikoTlNEYXRhICos
IE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBhdXRvIG9wdGlvbnMgPSBhZG9w
dE5TKFtbX1dLQXR0YWNobWVudEluZm9SZXF1ZXN0T3B0aW9ucyBhbGxvY10gaW5pdF0pOworICAg
IFtvcHRpb25zIHNldERhdGFSZXF1ZXN0VHlwZTpfV0tBdHRhY2htZW50RGF0YVJlcXVlc3RUeXBl
QWx3YXlzSW5jbHVkZV07CisgICAgW3NlbGYgcmVxdWVzdEluZm9XaXRoT3B0aW9uczpvcHRpb25z
LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOltwcm90ZWN0ZWRCbG9jayA9IG1ha2VCbG9ja1B0cihj
b21wbGV0aW9uSGFuZGxlcildIChfV0tBdHRhY2htZW50SW5mbyAqaW5mbywgTlNFcnJvciAqZXJy
b3IpIHsKKyAgICAgICAgcHJvdGVjdGVkQmxvY2soaW5mby5kYXRhLCBlcnJvcik7CisgICAgfV07
Cit9CisKIC0gKHZvaWQpc2V0RGlzcGxheU9wdGlvbnM6KF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0
aW9ucyAqKW9wdGlvbnMgY29tcGxldGlvbjoodm9pZCheKShOU0Vycm9yICopKWNvbXBsZXRpb25I
YW5kbGVyCiB7CiAgICAgYXV0byBjb3JlT3B0aW9ucyA9IG9wdGlvbnMgPyBvcHRpb25zLmNvcmVE
aXNwbGF5T3B0aW9ucyA6IFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyB7IH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBlMTBhMmViMzFiN2Zl
N2U5MmU1ZDgzYmM4MDYzZDY4ODQzNWUyYTViLi5iZjZiOGM1MWYzNTM2ODA5OTNmNDk2OWQwMjg1
YjJlYWRjMTFjOGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
QEAgLTUyMDYsMjMgKzUyMDYsMjEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnZvaWRDYWxsYmFjayhD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFjaygpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2hhcmVkQnVmZmVyQ2FsbGJhY2soY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBib29sIGlzTnVsbCwgQ2FsbGJhY2tJRCBjYWxs
YmFja0lEKQorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKK3ZvaWQgV2ViUGFnZVBy
b3h5OjphdHRhY2htZW50SW5mb0NhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkF0dGFjaG1lbnRJbmZv
JiBpbmZvLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7Ci0gICAgYXV0byBjYWxsYmFjayA9IG1f
Y2FsbGJhY2tzLnRha2U8U2hhcmVkQnVmZmVyQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOworICAgIGF1
dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPEF0dGFjaG1lbnRJbmZvQ2FsbGJhY2s+KGNh
bGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoaXNOdWxsKSB7Ci0gICAg
ICAgIEFTU0VSVChkYXRhUmVmZXJlbmNlLmlzRW1wdHkoKSk7Ci0gICAgICAgIGNhbGxiYWNrLT5w
ZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUobnVsbHB0cik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNp
emUoKSkpOworICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoaW5m
byk7CiB9CiAKKyNlbmRpZgorCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGF0YUNhbGxiYWNrKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPERhdGFDYWxsYmFjaz4o
Y2FsbGJhY2tJRCk7CkBAIC03MjM3LDE1ICs3MjM1LDE1IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpp
bnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgQXR0YWNobWVu
dERpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRBdHRhY2ht
ZW50KGlkZW50aWZpZXIsIG9wdGlvbnMsIGZpbGVuYW1lLCBjb250ZW50VHlwZSwgSVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHsgJmRhdGEgfSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsK
IH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBdHRhY2htZW50RGF0YShjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RB
dHRhY2htZW50SW5mbyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IEF0dGFjaG1lbnRJ
bmZvUmVxdWVzdE9wdGlvbnMmIG9wdGlvbnMsIEZ1bmN0aW9uPHZvaWQoY29uc3QgQXR0YWNobWVu
dEluZm8mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWlz
VmFsaWQoKSkgewotICAgICAgICBjYWxsYmFjayhudWxscHRyLCBDYWxsYmFja0Jhc2U6OkVycm9y
OjpPd25lcldhc0ludmFsaWRhdGVkKTsKKyAgICAgICAgY2FsbGJhY2soeyB9LCBDYWxsYmFja0Jh
c2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBdHRhY2htZW50RGF0
YShpZGVudGlmaWVyLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEF0dGFjaG1lbnRJbmZvKGlkZW50aWZpZXIsIG9w
dGlvbnMsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRBdHRhY2htZW50RGlzcGxheU9wdGlvbnMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBBdHRh
Y2htZW50RGlzcGxheU9wdGlvbnMgb3B0aW9ucywgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
aW5kZXggM2QyYTdjNzM0YmU4YmUxY2ViZDQwYmI0NmI5ZDhlNmYwYWU1ZTU1Yi4uYWE4NDcyYTgz
OTZmYTM5OGE1YzgwNTIxODJhMTc2NmQ0OTgwMTI2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKQEAgLTE4Myw2ICsxODMsOCBAQCB1c2luZyBGbG9hdEJveEV4dGVudCA9
IFJlY3RFZGdlczxmbG9hdD47CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBBdHRhY2htZW50RGlzcGxheU9wdGlvbnM7CitzdHJ1Y3Qg
QXR0YWNobWVudEluZm9SZXF1ZXN0T3B0aW9uczsKK3N0cnVjdCBBdHRhY2htZW50SW5mbzsKIH0K
ICNlbmRpZgogCkBAIC0yNDcsNyArMjQ5LDEwIEBAIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPHVp
bnQ2NF90PiBVbnNpZ25lZENhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8RWRpdGlu
Z1JhbmdlPiBFZGl0aW5nUmFuZ2VDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNv
bnN0IFN0cmluZyY+IFN0cmluZ0NhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8QVBJ
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBib29sLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25E
ZXRhaWxzJj4gU2NyaXB0VmFsdWVDYWxsYmFjazsKLXR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBTaGFyZWRCdWZmZXJDYWxsYmFjazsKKworI2lm
IEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCit0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25z
dCBXZWJDb3JlOjpBdHRhY2htZW50SW5mbyY+IEF0dGFjaG1lbnRJbmZvQ2FsbGJhY2s7CisjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKEdUSykKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6RXJy
b3IqPiBQcmludEZpbmlzaGVkQ2FsbGJhY2s7CkBAIC0xMjUzLDkgKzEyNTgsMTAgQEAgcHVibGlj
OgogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICB2b2lkIGluc2VydEF0dGFj
aG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpBdHRhY2htZW50
RGlzcGxheU9wdGlvbnMmLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gY29udGVudFR5cGUsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgRnVuY3Rpb248
dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgdm9pZCByZXF1ZXN0QXR0YWNobWVu
dERhdGEoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBy
ZXF1ZXN0QXR0YWNobWVudEluZm8oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpBdHRhY2htZW50SW5mb1JlcXVlc3RPcHRpb25zJiwgRnVuY3Rpb248dm9pZChjb25zdCBX
ZWJDb3JlOjpBdHRhY2htZW50SW5mbyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2
b2lkIHNldEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucywgRnVuY3Rpb248dm9pZChDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBzZXRBdHRhY2htZW50RGF0YUFuZENvbnRlbnRU
eXBlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRh
LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mJiBuZXdDb250ZW50VHlwZSwgc3RkOjpvcHRpb25hbDxT
dHJpbmc+JiYgbmV3RmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYpOworICAgIHZvaWQgYXR0YWNobWVudEluZm9DYWxsYmFjayhjb25zdCBXZWJDb3JlOjpBdHRh
Y2htZW50SW5mbyYsIENhbGxiYWNrSUQpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJ
T05fTUFOSUZFU1QpCkBAIC0xNTE2LDcgKzE1MjIsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB2
b2lkQ2FsbGJhY2soQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkYXRhQ2FsbGJhY2soY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBzaGFyZWRCdWZmZXJDYWxs
YmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBib29sIGlzTnVsbCwgQ2FsbGJhY2tJRCk7
CiAgICAgdm9pZCBpbWFnZUNhbGxiYWNrKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwg
Q2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzdHJpbmdDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBDYWxs
YmFja0lEKTsKICAgICB2b2lkIGludmFsaWRhdGVTdHJpbmdDYWxsYmFjayhDYWxsYmFja0lEKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpp
bmRleCA3ZWE2YjJiNDViMTViYWUwN2UwMjQ1YjFjNWExYmU0OTliMjEyYjIxLi4zN2NmYzA3MWM1
ZWI2YTlhOThlZDgzZGRlZDhlY2Q1MzNmZGVkOTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xNTcsNyArMTU3LDYgQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICAjIENhbGxiYWNrIG1lc3NhZ2VzCiAgICAgVm9p
ZENhbGxiYWNrKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIERhdGFDYWxsYmFj
ayhJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCi0gICAgU2hhcmVkQnVmZmVyQ2FsbGJhY2soSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3Vs
dERhdGEsIGJvb2wgaXNOdWxsLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CiAgICAg
SW1hZ2VDYWxsYmFjayhXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGJpdG1hcEhhbmRs
ZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgU3RyaW5nQ2FsbGJhY2soU3Ry
aW5nIHJlc3VsdFN0cmluZywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgSW52
YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQpAQCAt
MTY3LDYgKzE2Niw5IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRWRpdGluZ1Jh
bmdlQ2FsbGJhY2soc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJhbmdlLCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBVbnNpZ25lZENhbGxiYWNrKHVpbnQ2NF90IHJlc3Vs
dCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgUmVjdEZvckNoYXJhY3RlclJh
bmdlQ2FsbGJhY2soV2ViQ29yZTo6SW50UmVjdCByZWN0LCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5n
UmFuZ2UgYWN0dWFsUmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorI2lmIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgQXR0YWNobWVudEluZm9DYWxsYmFjayhzdHJ1
Y3QgV2ViQ29yZTo6QXR0YWNobWVudEluZm8gaW5mbywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpOworI2VuZGlmCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogICAgIEFw
cGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFjayhzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0
aW9uTWFuaWZlc3Q+IG1hbmlmZXN0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRl
eCA2NmM4MzE5Yzg3OGIwZmY2MTgyNGUwN2Q0NDM2MTcyMWIxZWExYWQzLi5lNTYyYzU0MzM2NzQ3
N2U5NTE3NjlmYmYxMjc1ZGQ0NjEwODM4ZjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNTg0OCwxNCArNTg0OCw2IEBAIHZvaWQgV2ViUGFn
ZTo6c3RvcmFnZUFjY2Vzc1Jlc3BvbnNlKGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4
dElkKQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZTo6aW52b2tlU2hhcmVkQnVmZmVyQ2FsbGJh
Y2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
LXsKLSAgICBpZiAoYnVmZmVyKQotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlNoYXJlZEJ1ZmZlckNhbGxiYWNrKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSB7IGJ1
ZmZlci5nZXQoKSB9LCBmYWxzZSwgY2FsbGJhY2tJRCkpOwotICAgIGVsc2UKLSAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaGFyZWRCdWZmZXJDYWxsYmFjayh7IH0sIHRydWUs
IGNhbGxiYWNrSUQpKTsKLX0KLQogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKIHZv
aWQgV2ViUGFnZTo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNv
bnN0IEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKQEAgLTU4NjUsMTkgKzU4NTcs
MTYgQEAgdm9pZCBXZWJQYWdlOjppbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgY29uc3QgQXR0YWNobWVudERpc3BsYXkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVx
dWVzdEF0dGFjaG1lbnREYXRhKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpyZXF1ZXN0QXR0YWNobWVudEluZm8oY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyLCBjb25zdCBBdHRhY2htZW50SW5mb1JlcXVlc3RPcHRpb25zJiBvcHRp
b25zLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBhdHRhY2htZW50ID0gYXR0
YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKTsKICAgICBpZiAoIWF0dGFj
aG1lbnQpIHsKLSAgICAgICAgaW52b2tlU2hhcmVkQnVmZmVyQ2FsbGJhY2soeyB9LCBjYWxsYmFj
a0lEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpBdHRhY2htZW50SW5m
b0NhbGxiYWNrKHsgfSwgY2FsbGJhY2tJRCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgYXR0YWNobWVudC0+cmVxdWVzdERhdGEoW2NhbGxiYWNrSUQsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgcHJvdGVjdGVkQXR0YWNobWVudCA9IFdURk1vdmUoYXR0YWNobWVudCld
IChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgewotICAgICAgICBpZiAoYnVmZmVyKQot
ICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+aW52b2tlU2hhcmVkQnVmZmVyQ2FsbGJhY2soV1RG
TW92ZShidWZmZXIpLCBjYWxsYmFja0lEKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcHJv
dGVjdGVkVGhpcy0+aW52b2tlU2hhcmVkQnVmZmVyQ2FsbGJhY2soeyB9LCBjYWxsYmFja0lEKTsK
KyAgICBhdHRhY2htZW50LT5yZXF1ZXN0SW5mbyhvcHRpb25zLCBbY2FsbGJhY2tJRCwgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcm90ZWN0ZWRBdHRhY2htZW50ID0gV1RGTW92ZShh
dHRhY2htZW50KV0gKGNvbnN0IEF0dGFjaG1lbnRJbmZvJiBpbmZvKSB7CisgICAgICAgIHByb3Rl
Y3RlZFRoaXMtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QXR0YWNobWVudEluZm9DYWxs
YmFjayhpbmZvLCBjYWxsYmFja0lEKSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBkOGMzN2E2NmNjNWVhODBiNWVhYTI4YzQz
OTAwOTEwNjQyNWE4YWQ1Li4wY2QyZTY2OTQ1NDA1NDY0YzY1M2VkODI4ZWY2ZmI0ZTNjNGQ4NGRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNjQs
NiArMTY0LDcgQEAgZW51bSBjbGFzcyBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlv
biA6IHVpbnQ4X3Q7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIGNsYXNzIEhUTUxB
dHRhY2htZW50RWxlbWVudDsKIHN0cnVjdCBBdHRhY2htZW50RGlzcGxheU9wdGlvbnM7CitzdHJ1
Y3QgQXR0YWNobWVudEluZm9SZXF1ZXN0T3B0aW9uczsKICNlbmRpZgogfQogCkBAIC0xMDQzLDcg
KzEwNDQsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAg
IHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyYsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCByZXF1ZXN0QXR0YWNobWVudERhdGEoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHJlcXVlc3RBdHRhY2ht
ZW50SW5mbyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkF0dGFjaG1l
bnRJbmZvUmVxdWVzdE9wdGlvbnMmLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHNldEF0dGFjaG1l
bnREaXNwbGF5T3B0aW9ucyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgc2V0QXR0
YWNobWVudERhdGFBbmRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBuZXdDb250ZW50VHlw
ZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG5ld0ZpbGVuYW1lLCBDYWxsYmFja0lEKTsKICNlbmRp
ZgpAQCAtMTE2Niw4ICsxMTY3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3RvcmVTZXNzaW9u
KGNvbnN0IFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+Jik7CiAgICAgdm9pZCBkaWRS
ZW1vdmVCYWNrRm9yd2FyZEl0ZW0odWludDY0X3QpOwogCi0gICAgdm9pZCBpbnZva2VTaGFyZWRC
dWZmZXJDYWxsYmFjayhSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBDYWxsYmFja0lE
KTsKLQogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgIHZvaWQgc2V0QWxsb3dzUmVt
b3RlSW5zcGVjdGlvbihib29sKTsKICAgICB2b2lkIHNldFJlbW90ZUluc3BlY3Rpb25OYW1lT3Zl
cnJpZGUoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA0ZTQzYmM3N2M2MWU3OThmMTFlNWU0
M2RlZGM3OTdhZWM5YTM1ODYwLi42M2JkMTA1NDVjZjQ2ZjFlYzI3ZGI4NGJkYWNmN2MzMTQ2Yzdi
OThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KQEAgLTQ5NCw3ICs0OTQsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExl
Z2FjeVJlY2VpdmVyIHsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgSW5z
ZXJ0QXR0YWNobWVudChTdHJpbmcgaWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OkF0dGFjaG1l
bnREaXNwbGF5T3B0aW9ucyBvcHRpb25zLCBTdHJpbmcgZmlsZW5hbWUsIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBjb250ZW50VHlwZSwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEsIFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQotICAgIFJlcXVlc3RBdHRhY2htZW50RGF0YShTdHJpbmcgaWRl
bnRpZmllciwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgUmVxdWVzdEF0dGFj
aG1lbnRJbmZvKFN0cmluZyBpZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6QXR0YWNobWVudElu
Zm9SZXF1ZXN0T3B0aW9ucyBvcHRpb25zLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
ICAgICBTZXRBdHRhY2htZW50RGlzcGxheU9wdGlvbnMoU3RyaW5nIGlkZW50aWZpZXIsIHN0cnVj
dCBXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgb3B0aW9ucywgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiAgICAgU2V0QXR0YWNobWVudERhdGFBbmRDb250ZW50VHlwZShT
dHJpbmcgaWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEsIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBuZXdDb250ZW50VHlwZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG5ld0ZpbGVuYW1l
LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDIxNDhiNjBiYzQ1NTVhZDBiY2E5
Zjc4N2UxYjI2NGNkNWU3YjA2NTguLjYzY2M5MTc2ZjhiYWI1MmVkOWM4NDIwMDQyNTRiNTcwZWE5
Y2U0MDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNCBAQAorMjAxOC0wMS0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KKworICAgICAgICBbQXR0YWNobWVudCBTdXBwb3J0XSBFeHBvc2UgZmlsZSBu
YW1lIGFuZCBjb250ZW50IHR5cGUgb2YgV0tBdHRhY2htZW50CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODEzOTAKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzM2MzM2ODM3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkanVzdHMgc29tZSBleGlzdGluZyB0ZXN0cyBpbiBXS0F0dGFjaG1lbnRUZXN0cyB0
byBleGVyY2lzZSAtcmVxdWVzdEluZm9XaXRoT3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjouCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRl
c3RzLm1tOgorICAgICAgICAoLVtfV0tBdHRhY2htZW50IHN5bmNocm9ub3VzbHlSZXF1ZXN0SW5m
b1dpdGhPcHRpb25zOmVycm9yOl0pOgorICAgICAgICAoLVtfV0tBdHRhY2htZW50IHN5bmNocm9u
b3VzbHlSZXF1ZXN0RGF0YTpdKToKKworICAgICAgICBSZWltcGxlbWVudCB0aGlzIGluIHRlcm1z
IG9mIC1zeW5jaHJvbm91c2x5UmVxdWVzdEluZm9XaXRoT3B0aW9uczplcnJvcjouCisKKyAgICAg
ICAgKC1bX1dLQXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTpdKToKKyAgICAgICAg
KC1bX1dLQXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWRUeXBlVG9CZTpuYW1lOl0pOgorICAgICAg
ICAoLVtfV0tBdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZEZpbGVQYXRoVG9FeGlzdDpdKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE4LTAxLTA1ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVzdHJpY3QgbmF2aWdh
dGlvbi10aW1lIFdLV2Vic2l0ZURhdGFTdG9yZSBzd2FwcGluZyB0byBtYWluIGZyYW1lIG5hdmln
YXRpb25zCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLQXR0YWNobWVudFRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQppbmRleCA3NDM1NDdkM2M3N2FjZTkxMTU4NzZmNWM4
NGE5ODM5ZGI2YzY4ZDZiLi5hZTExZTEzODg1MjQwMTMyZDE4OWRiYmRmODE2ODY1OTEyYjU5YWRk
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0
YWNobWVudFRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tBdHRhY2htZW50VGVzdHMubW0KQEAgLTI3MSwxMyArMjcxLDEzIEBAIC0gKHZvaWQpc3lu
Y2hyb25vdXNseVNldERpc3BsYXlPcHRpb25zOihfV0tBdHRhY2htZW50RGlzcGxheU9wdGlvbnMg
KilvcHRpb25zIGVyCiAgICAgICAgICplcnJvciA9IHJlc3VsdEVycm9yLmF1dG9yZWxlYXNlKCk7
CiB9CiAKLS0gKE5TRGF0YSAqKXN5bmNocm9ub3VzbHlSZXF1ZXN0RGF0YTooTlNFcnJvciAqKill
cnJvcgorLSAoX1dLQXR0YWNobWVudEluZm8gKilzeW5jaHJvbm91c2x5UmVxdWVzdEluZm9XaXRo
T3B0aW9uczooX1dLQXR0YWNobWVudEluZm9SZXF1ZXN0T3B0aW9ucyAqKW9wdGlvbnMgZXJyb3I6
KE5TRXJyb3IgKiopZXJyb3IKIHsKLSAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0RhdGE+IHJlc3Vs
dDsKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxfV0tBdHRhY2htZW50SW5mbz4gcmVzdWx0OwogICAg
IF9fYmxvY2sgUmV0YWluUHRyPE5TRXJyb3I+IHJlc3VsdEVycm9yOwogICAgIF9fYmxvY2sgYm9v
bCBkb25lID0gZmFsc2U7Ci0gICAgW3NlbGYgcmVxdWVzdERhdGE6XihOU0RhdGEgKmRhdGEsIE5T
RXJyb3IgKmVycm9yKSB7Ci0gICAgICAgIHJlc3VsdCA9IGRhdGE7CisgICAgW3NlbGYgcmVxdWVz
dEluZm9XaXRoT3B0aW9uczpvcHRpb25zIGNvbXBsZXRpb25IYW5kbGVyOl4oX1dLQXR0YWNobWVu
dEluZm8gKmluZm8sIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIHJlc3VsdCA9IGluZm87CiAg
ICAgICAgIHJlc3VsdEVycm9yID0gZXJyb3I7CiAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgIH1d
OwpAQCAtMjkwLDYgKzI5MCwxMyBAQCAtIChOU0RhdGEgKilzeW5jaHJvbm91c2x5UmVxdWVzdERh
dGE6KE5TRXJyb3IgKiopZXJyb3IKICAgICByZXR1cm4gcmVzdWx0LmF1dG9yZWxlYXNlKCk7CiB9
CiAKKy0gKE5TRGF0YSAqKXN5bmNocm9ub3VzbHlSZXF1ZXN0RGF0YTooTlNFcnJvciAqKillcnJv
cgoreworICAgIGF1dG8gb3B0aW9ucyA9IGFkb3B0TlMoW1tfV0tBdHRhY2htZW50SW5mb1JlcXVl
c3RPcHRpb25zIGFsbG9jXSBpbml0XSk7CisgICAgW29wdGlvbnMgc2V0RGF0YVJlcXVlc3RUeXBl
Ol9XS0F0dGFjaG1lbnREYXRhUmVxdWVzdFR5cGVBbHdheXNJbmNsdWRlXTsKKyAgICByZXR1cm4g
W3NlbGYgc3luY2hyb25vdXNseVJlcXVlc3RJbmZvV2l0aE9wdGlvbnM6b3B0aW9ucy5nZXQoKSBl
cnJvcjplcnJvcl0uZGF0YTsKK30KKwogLSAodm9pZClzeW5jaHJvbm91c2x5U2V0RGF0YTooTlNE
YXRhICopZGF0YSBuZXdDb250ZW50VHlwZTooTlNTdHJpbmcgKiluZXdDb250ZW50VHlwZSBuZXdG
aWxlbmFtZTooTlNTdHJpbmcgKiluZXdGaWxlbmFtZSBlcnJvcjooTlNFcnJvciAqKillcnJvcgog
ewogICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRXJyb3I+IHJlc3VsdEVycm9yOwpAQCAtMzA3LDE2
ICszMTQsNDggQEAgLSAodm9pZClzeW5jaHJvbm91c2x5U2V0RGF0YTooTlNEYXRhICopZGF0YSBu
ZXdDb250ZW50VHlwZTooTlNTdHJpbmcgKiluZXdDb250ZW4KIAogLSAodm9pZClleHBlY3RSZXF1
ZXN0ZWREYXRhVG9CZTooTlNEYXRhICopZXhwZWN0ZWREYXRhCiB7Ci0gICAgTlNFcnJvciAqZGF0
YVJlcXVlc3RFcnJvciA9IG5pbDsKLSAgICBOU0RhdGEgKm9ic2VydmVkRGF0YSA9IFtzZWxmIHN5
bmNocm9ub3VzbHlSZXF1ZXN0RGF0YTomZGF0YVJlcXVlc3RFcnJvcl07Ci0gICAgQk9PTCBvYnNl
cnZlZERhdGFJc0VxdWFsVG9FeHBlY3RlZERhdGEgPSBbb2JzZXJ2ZWREYXRhIGlzRXF1YWxUb0Rh
dGE6ZXhwZWN0ZWREYXRhXSB8fCBvYnNlcnZlZERhdGEgPT0gZXhwZWN0ZWREYXRhOworICAgIGF1
dG8gb3B0aW9ucyA9IGFkb3B0TlMoW1tfV0tBdHRhY2htZW50SW5mb1JlcXVlc3RPcHRpb25zIGFs
bG9jXSBpbml0XSk7CisgICAgW29wdGlvbnMgc2V0RGF0YVJlcXVlc3RUeXBlOl9XS0F0dGFjaG1l
bnREYXRhUmVxdWVzdFR5cGVBbHdheXNJbmNsdWRlXTsKKyAgICBOU0Vycm9yICpyZXF1ZXN0RXJy
b3IgPSBuaWw7CisgICAgX1dLQXR0YWNobWVudEluZm8gKmluZm8gPSBbc2VsZiBzeW5jaHJvbm91
c2x5UmVxdWVzdEluZm9XaXRoT3B0aW9uczpvcHRpb25zLmdldCgpIGVycm9yOiZyZXF1ZXN0RXJy
b3JdOworCisgICAgQk9PTCBvYnNlcnZlZERhdGFJc0VxdWFsVG9FeHBlY3RlZERhdGEgPSBbaW5m
by5kYXRhIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhXSB8fCBpbmZvLmRhdGEgPT0gZXhwZWN0
ZWREYXRhOwogICAgIEVYUEVDVF9UUlVFKG9ic2VydmVkRGF0YUlzRXF1YWxUb0V4cGVjdGVkRGF0
YSk7CiAgICAgaWYgKCFvYnNlcnZlZERhdGFJc0VxdWFsVG9FeHBlY3RlZERhdGEpIHsKLSAgICAg
ICAgTlNMb2coQCJFeHBlY3RlZCBkYXRhOiAlQCBidXQgb2JzZXJ2ZWQ6ICVAIGZvciAlQCIsIFtl
eHBlY3RlZERhdGEgc2hvcnREZXNjcmlwdGlvbl0sIFtvYnNlcnZlZERhdGEgc2hvcnREZXNjcmlw
dGlvbl0sIHNlbGYpOwotICAgICAgICBOU0xvZyhAIk9ic2VydmVkIGVycm9yOiAlQCB3aGlsZSBy
ZWFkaW5nIGRhdGEgZm9yICVAIiwgZGF0YVJlcXVlc3RFcnJvciwgc2VsZik7CisgICAgICAgIE5T
TG9nKEAiRXhwZWN0ZWQgZGF0YTogJUAgYnV0IG9ic2VydmVkOiAlQCBmb3IgJUAiLCBbZXhwZWN0
ZWREYXRhIHNob3J0RGVzY3JpcHRpb25dLCBbaW5mby5kYXRhIHNob3J0RGVzY3JpcHRpb25dLCBz
ZWxmKTsKKyAgICAgICAgTlNMb2coQCJPYnNlcnZlZCBlcnJvcjogJUAgd2hpbGUgcmVhZGluZyBk
YXRhIGZvciAlQCIsIHJlcXVlc3RFcnJvciwgc2VsZik7CiAgICAgfQogfQogCistICh2b2lkKWV4
cGVjdFJlcXVlc3RlZFR5cGVUb0JlOihOU1N0cmluZyAqKWNvbnRlbnRUeXBlIG5hbWU6KE5TU3Ry
aW5nICopbmFtZQoreworICAgIGF1dG8gb3B0aW9ucyA9IGFkb3B0TlMoW1tfV0tBdHRhY2htZW50
SW5mb1JlcXVlc3RPcHRpb25zIGFsbG9jXSBpbml0XSk7CisgICAgW29wdGlvbnMgc2V0RGF0YVJl
cXVlc3RUeXBlOl9XS0F0dGFjaG1lbnREYXRhUmVxdWVzdFR5cGVEb05vdEluY2x1ZGVdOworICAg
IE5TRXJyb3IgKnJlcXVlc3RFcnJvciA9IG5pbDsKKyAgICBfV0tBdHRhY2htZW50SW5mbyAqaW5m
byA9IFtzZWxmIHN5bmNocm9ub3VzbHlSZXF1ZXN0SW5mb1dpdGhPcHRpb25zOm9wdGlvbnMuZ2V0
KCkgZXJyb3I6JnJlcXVlc3RFcnJvcl07CisgICAgRVhQRUNUX1RSVUUoIWluZm8uZGF0YSk7Cisg
ICAgRVhQRUNUX1RSVUUoW2luZm8ubmFtZSBpc0VxdWFsVG9TdHJpbmc6bmFtZV0pOworICAgIGlm
ICghW2luZm8ubmFtZSBpc0VxdWFsVG9TdHJpbmc6bmFtZV0pCisgICAgICAgIE5TTG9nKEAiRXhw
ZWN0ZWQgbmFtZTogJUAgYnV0IG9ic2VydmVkOiAlQCIsIG5hbWUsIGluZm8ubmFtZSk7CisKKyAg
ICBFWFBFQ1RfVFJVRShbaW5mby5jb250ZW50VHlwZSBpc0VxdWFsVG9TdHJpbmc6Y29udGVudFR5
cGVdKTsKKyAgICBpZiAoIVtpbmZvLmNvbnRlbnRUeXBlIGlzRXF1YWxUb1N0cmluZzpjb250ZW50
VHlwZV0pCisgICAgICAgIE5TTG9nKEAiRXhwZWN0ZWQgdHlwZTogJUAgYnV0IG9ic2VydmVkOiAl
QCIsIGNvbnRlbnRUeXBlLCBpbmZvLmNvbnRlbnRUeXBlKTsKK30KKworLSAodm9pZClleHBlY3RS
ZXF1ZXN0ZWRGaWxlUGF0aFRvRXhpc3Q6KEJPT0wpc2hvdWxkRXhpc3QKK3sKKyAgICBhdXRvIG9w
dGlvbnMgPSBhZG9wdE5TKFtbX1dLQXR0YWNobWVudEluZm9SZXF1ZXN0T3B0aW9ucyBhbGxvY10g
aW5pdF0pOworICAgIFtvcHRpb25zIHNldERhdGFSZXF1ZXN0VHlwZTpfV0tBdHRhY2htZW50RGF0
YVJlcXVlc3RUeXBlRG9Ob3RJbmNsdWRlXTsKKyAgICBOU0Vycm9yICpyZXF1ZXN0RXJyb3IgPSBu
aWw7CisgICAgX1dLQXR0YWNobWVudEluZm8gKmluZm8gPSBbc2VsZiBzeW5jaHJvbm91c2x5UmVx
dWVzdEluZm9XaXRoT3B0aW9uczpvcHRpb25zLmdldCgpIGVycm9yOiZyZXF1ZXN0RXJyb3JdOwor
ICAgIEVYUEVDVF9UUlVFKCFpbmZvLmRhdGEpOworICAgIGlmIChzaG91bGRFeGlzdCkKKyAgICAg
ICAgRVhQRUNUX0dUKGluZm8uZmlsZVBhdGgubGVuZ3RoLCAwVSk7CisgICAgZWxzZQorICAgICAg
ICBFWFBFQ1RfRVEoaW5mby5maWxlUGF0aC5sZW5ndGgsIDBVKTsKK30KKwogQGVuZAogCiAjcHJh
Z21hIG1hcmsgLSBQbGF0Zm9ybSB0ZXN0aW5nIGhlbHBlciBmdW5jdGlvbnMKQEAgLTQzMSw2ICs0
NzAsOCBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzLCBBdHRhY2htZW50RWxlbWVudEluc2VydGlv
bikKICAgICB9CiAKICAgICBbZmlyc3RBdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFUb0Jl
OnRlc3RIVE1MRGF0YSgpXTsKKyAgICBbZmlyc3RBdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZEZp
bGVQYXRoVG9FeGlzdDpOT107CisgICAgW2ZpcnN0QXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWRU
eXBlVG9CZTpAInRleHQvaHRtbCIgbmFtZTpAImZvbyJdOwogCiAgICAgewogICAgICAgICBPYnNl
cnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZSBzY29wZSh3ZWJWaWV3LmdldCgpKTsKQEAgLTQ2
NSw2ICs1MDYsOCBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzLCBBdHRhY2htZW50VXBkYXRlc1do
ZW5JbnNlcnRpbmdBbmREZWxldGluZ05ld2xpbmUpCiAKICAgICBbd2ViVmlldyBleHBlY3RVcGRh
dGVzQWZ0ZXJDb21tYW5kOkAiRGVsZXRlQmFja3dhcmQiIHdpdGhBcmd1bWVudDpuaWwgZXhwZWN0
ZWRSZW1vdmFsczpAW10gZXhwZWN0ZWRJbnNlcnRpb25zOkBbXV07CiAgICAgW2F0dGFjaG1lbnQg
ZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6dGVzdEhUTUxEYXRhKCldOworICAgIFthdHRhY2htZW50
IGV4cGVjdFJlcXVlc3RlZEZpbGVQYXRoVG9FeGlzdDpOT107CisgICAgW2F0dGFjaG1lbnQgZXhw
ZWN0UmVxdWVzdGVkVHlwZVRvQmU6QCJ0ZXh0L3BsYWluIiBuYW1lOkAiZm9vLnR4dCJdOwogCiAg
ICAgW3dlYlZpZXcgZXhwZWN0VXBkYXRlc0FmdGVyQ29tbWFuZDpAIkRlbGV0ZUZvcndhcmQiIHdp
dGhBcmd1bWVudDpuaWwgZXhwZWN0ZWRSZW1vdmFsczpAW2F0dGFjaG1lbnQuZ2V0KCldIGV4cGVj
dGVkSW5zZXJ0aW9uczpAW11dOwogICAgIFthdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFU
b0JlOm5pbF07CkBAIC02MTUsMTYgKzY1OCwyMCBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzLCBN
dWx0aXBsZVNpbXVsdGFuZW91c0F0dGFjaG1lbnREYXRhUmVxdWVzdHMpCiAgICAgICAgIGF0dGFj
aG1lbnQgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFt
ZTpAImZvby50eHQiIGNvbnRlbnRUeXBlOkAidGV4dC9wbGFpbiIgZGF0YTpodG1sRGF0YS5nZXQo
KSBvcHRpb25zOm5pbF07CiAgICAgICAgIG9ic2VydmVyLmV4cGVjdEF0dGFjaG1lbnRVcGRhdGVz
KEBbXSwgQFthdHRhY2htZW50LmdldCgpXSk7CiAgICAgfQorCisgICAgYXV0byByZXF1ZXN0T3B0
aW9ucyA9IGFkb3B0TlMoW1tfV0tBdHRhY2htZW50SW5mb1JlcXVlc3RPcHRpb25zIGFsbG9jXSBp
bml0XSk7CisgICAgW3JlcXVlc3RPcHRpb25zIHNldERhdGFSZXF1ZXN0VHlwZTpfV0tBdHRhY2ht
ZW50RGF0YVJlcXVlc3RUeXBlQWx3YXlzSW5jbHVkZV07CisKICAgICBfX2Jsb2NrIFJldGFpblB0
cjxOU0RhdGE+IGRhdGFGb3JGaXJzdFJlcXVlc3Q7CiAgICAgX19ibG9jayBSZXRhaW5QdHI8TlNE
YXRhPiBkYXRhRm9yU2Vjb25kUmVxdWVzdDsKICAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNl
OwotICAgIFthdHRhY2htZW50IHJlcXVlc3REYXRhOl4oTlNEYXRhICpkYXRhLCBOU0Vycm9yICpl
cnJvcikgeworICAgIFthdHRhY2htZW50IHJlcXVlc3RJbmZvV2l0aE9wdGlvbnM6cmVxdWVzdE9w
dGlvbnMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihfV0tBdHRhY2htZW50SW5mbyAqaW5mbywg
TlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgRVhQRUNUX1RSVUUoIWVycm9yKTsKLSAgICAgICAg
ZGF0YUZvckZpcnN0UmVxdWVzdCA9IGRhdGE7CisgICAgICAgIGRhdGFGb3JGaXJzdFJlcXVlc3Qg
PSBpbmZvLmRhdGE7CiAgICAgfV07Ci0gICAgW2F0dGFjaG1lbnQgcmVxdWVzdERhdGE6XihOU0Rh
dGEgKmRhdGEsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgW2F0dGFjaG1lbnQgcmVxdWVzdEluZm9X
aXRoT3B0aW9uczpyZXF1ZXN0T3B0aW9ucy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKF9XS0F0
dGFjaG1lbnRJbmZvICppbmZvLCBOU0Vycm9yICplcnJvcikgewogICAgICAgICBFWFBFQ1RfVFJV
RSghZXJyb3IpOwotICAgICAgICBkYXRhRm9yU2Vjb25kUmVxdWVzdCA9IGRhdGE7CisgICAgICAg
IGRhdGFGb3JTZWNvbmRSZXF1ZXN0ID0gaW5mby5kYXRhOwogICAgICAgICBkb25lID0gdHJ1ZTsK
ICAgICB9XTsKIApAQCAtOTUzLDYgKzEwMDAsOSBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzTWFj
LCBJbnNlcnRQYXN0ZWRGaWxlVVJMc0FzQXR0YWNobWVudHMpCiAgICAgRVhQRUNUX1dLX1NUUkVR
KCJpbWFnZS9wbmciLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9j
dW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYXR0YWNobWVudCcpWzFdLmdldEF0dHJpYnV0ZSgndHlw
ZScpIl0pOwogICAgIEVYUEVDVF9XS19TVFJFUSgiaWNvbi5wbmciLCBbd2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYXR0YWNo
bWVudCcpWzFdLmdldEF0dHJpYnV0ZSgndGl0bGUnKSJdKTsKIAorICAgIGZvciAoX1dLQXR0YWNo
bWVudCAqYXR0YWNobWVudCBpbiBpbnNlcnRlZEF0dGFjaG1lbnRzLmdldCgpKQorICAgICAgICBb
YXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWRGaWxlUGF0aFRvRXhpc3Q6WUVTXTsKKwogICAgIHsK
ICAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmll
dy5nZXQoKSk7CiAgICAgICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21t
YW5kOkAiU2VsZWN0QWxsIiBhcmd1bWVudDpuaWxdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330714</attachid>
            <date>2018-01-08 10:18:31 -0800</date>
            <delta_ts>2018-01-08 12:07:52 -0800</delta_ts>
            <desc>Fix non-macOS ports</desc>
            <filename>bug-181390-20180108101831.patch</filename>
            <type>text/plain</type>
            <size>48171</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2NDc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQ2NjZlYmEzMGFjM2Qw
NWFiMTc1ZDgyYmUyODI3ZWVmYjZjYTBjNC4uYmVmYTlhY2EyNzcwOWZmYzcyODM3NDlmYTE1YzU3
YmFiZjhkN2ZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE4LTAxLTA4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50
IFN1cHBvcnRdIEV4cG9zZSBmaWxlIG5hbWUgYW5kIGNvbnRlbnQgdHlwZSBvZiBXS0F0dGFjaG1l
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTM5
MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYzMzY4Mzc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG5ldyBzdHJ1Y3RzIGluIEF0dGFjaG1l
bnRUeXBlcy5oIGFuZCByZWZhY3RvciBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnJlcXVlc3REYXRh
IHRvIHJlcXVlc3RJbmZvLiBTZWUgYmVsb3cKKyAgICAgICAgZm9yIG1vcmUgZGV0YWlscy4gQXVn
bWVudGVkIGV4aXN0aW5nIEFQSSB0ZXN0cyBpbiBXS0F0dGFjaG1lbnRUZXN0cy4KKworICAgICAg
ICAqIGh0bWwvQXR0YWNobWVudFR5cGVzLmg6CisKKyAgICAgICAgQWRkIGEgc3RydWN0IHJlcHJl
c2VudGluZyBvcHRpb25zIHdoZW4gcmVxdWVzdGluZyBpbmZvcm1hdGlvbiBhYm91dCBhbiBhdHRh
Y2htZW50IGVsZW1lbnQsIGFuZCBhbm90aGVyIHN0cnVjdCB0bworICAgICAgICByZXByZXNlbnQg
YSBzbmFwc2hvdCBvZiBpbmZvcm1hdGlvbiBhYm91dCBhbiBhdHRhY2htZW50IGVsZW1lbnQuIFNp
bmNlIEF0dGFjaG1lbnRJbmZvUmVxdWVzdE9wdGlvbnMgZG9lc24ndCBuZWVkCisgICAgICAgIHRv
IHByb3BhZ2F0ZSBhIFNoYXJlZEJ1ZmZlciBvdmVyIElQQywgd2UgYWRkaXRpb25hbGx5IGltcGxl
bWVudCBJUEMgY29kaW5nIHN1cHBvcnQgaGVyZSBmb3IgcmVxdWVzdCBvcHRpb25zLgorCisgICAg
ICAgIChXZWJDb3JlOjpBdHRhY2htZW50SW5mb1JlcXVlc3RPcHRpb25zOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6QXR0YWNobWVudEluZm9SZXF1ZXN0T3B0aW9uczo6ZGVjb2Rl
KToKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnJlcXVlc3RJbmZvKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6cmVxdWVzdERhdGEpOiBEZWxldGVkLgorICAg
ICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisKKyAgICAgICAgQ2hhbmdlIHJl
cXVlc3REYXRhIHRvIHJlcXVlc3RJbmZvLiBJbnN0ZWFkIG9mIGZldGNoaW5nIGFuZCBkZWxpdmVy
aW5nIGRhdGEgdmlhIGNhbGxiYWNrLCByZXF1ZXN0SW5mbyByZXR1cm5zIGFuCisgICAgICAgIEF0
dGFjaG1lbnRJbmZvLCB3aGljaCBtYXkgb3B0aW9uYWxseSBpbmNsdWRlIGRhdGEsIGRlcGVuZGlu
ZyBvbiB0aGUgZ2l2ZW4gcmVxdWVzdCBvcHRpb25zLgorCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQXR0YWNobWVudEluZm86
OmFkZExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQXR0YWNobWVudEluZm86OmJ1aWxk
V3JhcHBlZExpbmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckF0dGFjaG1lbnRJbmZvOjpi
dWlsZFNpbmdsZUxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQXR0YWNobWVudEluZm86
OlJlbmRlckF0dGFjaG1lbnRJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9T
OjphdHRhY2htZW50QmFzZWxpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRh
Y2htZW50SWNvbik6CisgICAgICAgIChXZWJDb3JlOjpwYWludEF0dGFjaG1lbnRUZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OnBhaW50QXR0YWNobWVudFByb2dyZXNzKToKKyAgICAgICAgKFdlYkNv
cmU6OmF0dGFjaG1lbnRCb3JkZXJQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
SU9TOjpwYWludEF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QXR0YWNobWVudEluZm86
OmFkZExpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXR0YWNobWVudEluZm86OmJ1
aWxkV3JhcHBlZExpbmVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF0dGFjaG1lbnRJ
bmZvOjpidWlsZFNpbmdsZUxpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXR0YWNo
bWVudEluZm86OkF0dGFjaG1lbnRJbmZvKTogRGVsZXRlZC4KKworICAgICAgICBSZW5hbWUgQXR0
YWNobWVudEluZm8gdG8gUmVuZGVyQXR0YWNobWVudEluZm8gdG8gcmVzb2x2ZSBhIG5hbWUgY29u
ZmxpY3Qgd2l0aCB0aGUgbmV3IEF0dGFjaG1lbnRJbmZvIHN0cnVjdC4KKwogMjAxOC0wMS0wNSAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbQXR0YWNo
bWVudCBTdXBwb3J0XSBBZGQgYSB3YXkgdG8gd3JpdGUgYmxvYiBkYXRhIHRvIGEgZmlsZSBVUkwg
ZnJvbSB0aGUgVUkgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkODc2ZGQ2ZmZjZmNhY2QyZGM5MmY2OGZi
ZWMzMjM2ODEzYTllMGQ0Li5jNTYyOGJmMjRjZmQ5MTI4NmY3YTg3NGQ2MzYwOTM3MzUwNzQ3Y2Rj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDE4LTAxLTA4ICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50IFN1cHBvcnRdIEV4
cG9zZSBmaWxlIG5hbWUgYW5kIGNvbnRlbnQgdHlwZSBvZiBXS0F0dGFjaG1lbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTM5MAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzYzMzY4Mzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIC1bX1dLQXR0YWNobWVudCByZXF1ZXN0
SW5mb1dpdGhPcHRpb25zOmNvbXBsZXRpb25IYW5kbGVyOl0sIHdoaWNoIGZldGNoZXMgYSBzbmFw
c2hvdCBvZiB0aGUKKyAgICAgICAgYXR0YWNobWVudCdzIHN0YXRlLiBUaGlzIG1heSBpbmNsdWRl
IHRoZSBhdHRhY2htZW50IGRhdGEgYXMgaW5saW5lIE5TRGF0YSwgZGVwZW5kaW5nIG9uIHRoZSBv
cHRpb25zLiBUaGlzIEFQSSBpcworICAgICAgICBtZWFudCB0byBiZSBhIHJlcGxhY2VtZW50IGZv
ciAtcmVxdWVzdERhdGE6IHRoYXQgcHJvdmlkZXMgYWRkaXRpb25hbCBtZXRhZGF0YSBhYm91dCB0
aGUgYXR0YWNobWVudCwgYnV0IHRoaXMKKyAgICAgICAgYWxzbyBhbGxvd3MgdGhlIGNsaWVudCB0
byBzZW5kIGNoZWFwIHJlcXVlc3RzIGZvciBhdHRhY2htZW50IG1ldGFkYXRhIHdpdGhvdXQgaGF2
aW5nIHRvIGxvYWQgaW5saW5lIGRhdGEuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weToKKyAgICAgICAgKGhlYWRlcnNfZm9yX3R5cGUpOgorICAgICAgICAqIFNoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEF0
dGFjaG1lbnRJbmZvPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxBdHRh
Y2htZW50SW5mbz46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oOgorCisgICAgICAgIEFkZCBJUEMgc3VwcG9ydCBmb3IgQXR0YWNobWVudEluZm8gYW5k
IEF0dGFjaG1lbnRSZXF1ZXN0T3B0aW9ucy4gTm90ZSB0aGF0IGluc3RlYWQgb2YgdXNpbmcKKyAg
ICAgICAgKGVuY29kZXxkZWNvZGUpU2hhcmVkQnVmZmVyLCB3ZSBzZW5kIGFuZCByZWNlaXZlIGRh
dGEgcmVmZXJlbmNlcyB0byB0aGUgc2hhcmVkIGJ1ZmZlci4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5jcHA6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnJlcXVl
c3RJbmZvKToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6cmVxdWVzdERhdGEpOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oOgorCisgICAgICAgIENo
YW5nZSByZXF1ZXN0RGF0YSB0byByZXF1ZXN0SW5mby4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLQXR0YWNobWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXR0YWNobWVudC5tbToKKyAgICAgICAgKGNvcmVJbmZvUmVxdWVzdFR5cGUpOgorICAgICAg
ICAoLVtfV0tBdHRhY2htZW50SW5mb1JlcXVlc3RPcHRpb25zIGluaXRdKToKKyAgICAgICAgKC1b
X1dLQXR0YWNobWVudEluZm9SZXF1ZXN0T3B0aW9ucyBjb3JlUmVxdWVzdE9wdGlvbnNdKToKKyAg
ICAgICAgKC1bX1dLQXR0YWNobWVudEluZm8gaW5pdFdpdGhJbmZvOl0pOgorICAgICAgICAoLVtf
V0tBdHRhY2htZW50SW5mbyBkYXRhXSk6CisgICAgICAgICgtW19XS0F0dGFjaG1lbnRJbmZvIG5h
bWVdKToKKyAgICAgICAgKC1bX1dLQXR0YWNobWVudEluZm8gZmlsZVBhdGhdKToKKyAgICAgICAg
KC1bX1dLQXR0YWNobWVudEluZm8gY29udGVudFR5cGVdKToKKyAgICAgICAgKC1bX1dLQXR0YWNo
bWVudCByZXF1ZXN0SW5mb1dpdGhPcHRpb25zOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAg
ICAoLVtfV0tBdHRhY2htZW50IHJlcXVlc3REYXRhOl0pOgorCisgICAgICAgIEltcGxlbWVudCAt
cmVxdWVzdEluZm9XaXRoT3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjogYnkgY2FsbGluZyBpbnRv
IEFQSUF0dGFjaG1lbnQsIGFuZCByZWltcGxlbWVudAorICAgICAgICAtcmVxdWVzdERhdGE6IGlu
IHRlcm1zIG9mIC1yZXF1ZXN0SW5mb1dpdGhPcHRpb25zOmNvbXBsZXRpb25IYW5kbGVyOi4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmF0dGFjaG1lbnRJbmZvQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnJlcXVlc3RBdHRhY2htZW50SW5mbyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c2hhcmVkQnVmZmVyQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RBdHRhY2htZW50RGF0YSk6IERlbGV0ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAgICAgUmVuYW1lIHRoZSBTaGFyZWRCdWZmZXJD
YWxsYmFjayBJUEMgbWVzc2FnZSB0byBBdHRhY2htZW50SW5mb0NhbGxiYWNrLCBhbmQgbWFrZSBp
dCBjb25kaXRpb25hbCBvbgorICAgICAgICBBVFRBQ0hNRU5UX0VMRU1FTlQuIFJlbmFtZSByZXF1
ZXN0QXR0YWNobWVudERhdGEgdG8gcmVxdWVzdEF0dGFjaG1lbnRJbmZvLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpyZXF1ZXN0QXR0YWNobWVudEluZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnZv
a2VTaGFyZWRCdWZmZXJDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnJlcXVlc3RBdHRhY2htZW50RGF0YSk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVuYW1lIHJl
cXVlc3RBdHRhY2htZW50RGF0YSB0byByZXF1ZXN0QXR0YWNobWVudEluZm8gYW5kIGFkb3B0IEhU
TUxBdHRhY2htZW50RWxlbWVudDo6cmVxdWVzdEluZm8uCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluOgorCiAyMDE4LTAxLTA1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVzdHJpY3QgbmF2aWdhdGlvbi10aW1lIFdLV2Vi
c2l0ZURhdGFTdG9yZSBzd2FwcGluZyB0byBtYWluIGZyYW1lIG5hdmlnYXRpb25zCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0F0dGFjaG1lbnRUeXBlcy5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9BdHRhY2htZW50VHlwZXMuaAppbmRleCA1NjVkZTkxOGU3M2I3ODRkZWQwM2IwZWFh
YjY5MzA4NzE3YWY4ZDk1Li5kZmUyMTFjNzRjYTljYWUyZmU2YmNlMDFjNWE3ZDc0NzU0NWFlNDYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0F0dGFjaG1lbnRUeXBlcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQXR0YWNobWVudFR5cGVzLmgKQEAgLTI4LDkgKzI4LDEyIEBA
CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAogI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKKwogZW51bSBjbGFzcyBBdHRhY2htZW50RGlzcGxh
eU1vZGUgewogICAgIEF1dG8sCiAgICAgSW5QbGFjZSwKQEAgLTU4LDYgKzYxLDU5IEBAIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBzdGQ6Om9wdGlvbmFsPEF0dGFjaG1lbnREaXNwbGF5
T3B0aW9ucz4gQXR0YWNobWVuCiAgICAgcmV0dXJuIHt7IG1vZGUgfX07CiB9CiAKK2VudW0gY2xh
c3MgQXR0YWNobWVudERhdGFSZXF1ZXN0VHlwZSB7CisgICAgT25seUluY2x1ZGVJZkRhdGFCYWNr
ZWQsCisgICAgRG9Ob3RJbmNsdWRlLAorICAgIEFsd2F5c0luY2x1ZGUKK307CisKK3N0cnVjdCBB
dHRhY2htZW50SW5mb1JlcXVlc3RPcHRpb25zIHsKKyAgICBBdHRhY2htZW50RGF0YVJlcXVlc3RU
eXBlIGRhdGFSZXF1ZXN0VHlwZTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgc3RkOjpvcHRpb25hbDxBdHRhY2htZW50SW5mb1JlcXVlc3RPcHRpb25zPiBkZWNvZGUoRGVj
b2RlciYpOworfTsKKworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBBdHRhY2htZW50
SW5mb1JlcXVlc3RPcHRpb25zOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAg
ICBlbmNvZGVyLmVuY29kZUVudW0oZGF0YVJlcXVlc3RUeXBlKTsKK30KKwordGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8QXR0YWNobWVudEluZm9SZXF1ZXN0T3B0aW9ucz4g
QXR0YWNobWVudEluZm9SZXF1ZXN0T3B0aW9uczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7
CisgICAgQXR0YWNobWVudEluZm9SZXF1ZXN0T3B0aW9ucyByZXN1bHQ7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZUVudW0ocmVzdWx0LmRhdGFSZXF1ZXN0VHlwZSkpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOworfQorCitzdHJ1Y3Qg
QXR0YWNobWVudEluZm8geworICAgIFN0cmluZyBjb250ZW50VHlwZTsKKyAgICBTdHJpbmcgbmFt
ZTsKKyAgICBTdHJpbmcgZmlsZVBhdGg7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsK
K307CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBs
YXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRW51bVRyYWl0czsKK3RlbXBsYXRlPHR5cGVuYW1lIEUsIEUu
Li4+IHN0cnVjdCBFbnVtVmFsdWVzOworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdl
YkNvcmU6OkF0dGFjaG1lbnREYXRhUmVxdWVzdFR5cGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBF
bnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpBdHRhY2htZW50RGF0YVJlcXVlc3RUeXBlLAor
ICAgICAgICBXZWJDb3JlOjpBdHRhY2htZW50RGF0YVJlcXVlc3RUeXBlOjpPbmx5SW5jbHVkZUlm
RGF0YUJhY2tlZCwKKyAgICAgICAgV2ViQ29yZTo6QXR0YWNobWVudERhdGFSZXF1ZXN0VHlwZTo6
RG9Ob3RJbmNsdWRlLAorICAgICAgICBXZWJDb3JlOjpBdHRhY2htZW50RGF0YVJlcXVlc3RUeXBl
OjpBbHdheXNJbmNsdWRlCisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCiAjZW5k
aWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAppbmRleCAxZjQ0NWU4MDYzMjcwMGM3ZTg5NTBlNzM4
MTA3MDk3YzVlMDBiNDI5Li4zZmY2YWU0ZjllMjc5N2M0ZDY4M2JhODRmZjg3OTg4ZTcxZWMzYWE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCkBA
IC0zMDYsMTIgKzMwNiwzOSBAQCB2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6cG9wdWxhdGVT
aGFkb3dSb290SWZOZWNlc3NhcnkoKQogICAgIH0KIH0KIAotdm9pZCBIVE1MQXR0YWNobWVudEVs
ZW1lbnQ6OnJlcXVlc3REYXRhKEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+
JiYgY2FsbGJhY2spCit2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6cmVxdWVzdEluZm8oY29u
c3QgQXR0YWNobWVudEluZm9SZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucywgRnVuY3Rpb248dm9pZChj
b25zdCBBdHRhY2htZW50SW5mbyYpPiYmIGNhbGxiYWNrKQogewotICAgIGlmIChtX2ZpbGUpCi0g
ICAgICAgIG1fYXR0YWNobWVudFJlYWRlcnMuYXBwZW5kKEF0dGFjaG1lbnREYXRhUmVhZGVyOjpj
cmVhdGUoKnRoaXMsIFdURk1vdmUoY2FsbGJhY2spKSk7Ci0gICAgZWxzZQotICAgICAgICBjYWxs
YmFjayhudWxscHRyKTsKKyAgICBpZiAoIW1fZmlsZSkgeworICAgICAgICBjYWxsYmFjayh7IH0p
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQXR0YWNobWVudEluZm8gaW5mb1dpdGhv
dXREYXRhIHsgbV9maWxlLT50eXBlKCksIG1fZmlsZS0+bmFtZSgpLCBtX2ZpbGUtPnBhdGgoKSwg
bnVsbHB0ciB9OworCisgICAgYm9vbCBzaG91bGRJbmNsdWRlRGF0YSA9IGZhbHNlOworICAgIHN3
aXRjaCAob3B0aW9ucy5kYXRhUmVxdWVzdFR5cGUpIHsKKyAgICBjYXNlIEF0dGFjaG1lbnREYXRh
UmVxdWVzdFR5cGU6OkRvTm90SW5jbHVkZToKKyAgICAgICAgc2hvdWxkSW5jbHVkZURhdGEgPSBm
YWxzZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBdHRhY2htZW50RGF0YVJlcXVlc3RUeXBl
OjpBbHdheXNJbmNsdWRlOgorICAgICAgICBzaG91bGRJbmNsdWRlRGF0YSA9IHRydWU7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQXR0YWNobWVudERhdGFSZXF1ZXN0VHlwZTo6T25seUluY2x1
ZGVJZkRhdGFCYWNrZWQ6CisgICAgICAgIHNob3VsZEluY2x1ZGVEYXRhID0gbV9maWxlLT5wYXRo
KCkuaXNFbXB0eSgpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKCFzaG91
bGRJbmNsdWRlRGF0YSkgeworICAgICAgICBjYWxsYmFjayhpbmZvV2l0aG91dERhdGEpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9hdHRhY2htZW50UmVhZGVycy5hcHBlbmQoQXR0
YWNobWVudERhdGFSZWFkZXI6OmNyZWF0ZSgqdGhpcywgW2luZm9XaXRob3V0RGF0YSA9IFdURk1v
dmUoaW5mb1dpdGhvdXREYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkgeworICAgICAgICBjYWxsYmFjayh7IGluZm9XaXRob3V0
RGF0YS5jb250ZW50VHlwZSwgaW5mb1dpdGhvdXREYXRhLm5hbWUsIGluZm9XaXRob3V0RGF0YS5m
aWxlUGF0aCwgV1RGTW92ZShkYXRhKSB9KTsKKyAgICB9KSk7CiB9CiAKIHZvaWQgSFRNTEF0dGFj
aG1lbnRFbGVtZW50OjpkZXN0cm95UmVhZGVyKEF0dGFjaG1lbnREYXRhUmVhZGVyJiBmaW5pc2hl
ZFJlYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCmlu
ZGV4IDE3OTVkMWZkMGI5Y2IwYjE5YzI3MTU1YjBjMTVlNTMyNWY0MDA3NGQuLmQxYzU1M2NhYWIy
MWE4MzA3MTQxYTcwY2IwOWM4OGU0OTM5MThmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXR0YWNobWVudEVsZW1lbnQuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBS
ZW5kZXJBdHRhY2htZW50KiBhdHRhY2htZW50UmVuZGVyZXIoKSBjb25zdDsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVxdWVzdERhdGEoRnVuY3Rpb248dm9pZChSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmKT4mJiBjYWxsYmFjayk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXF1ZXN0SW5m
byhjb25zdCBBdHRhY2htZW50SW5mb1JlcXVlc3RPcHRpb25zJiwgRnVuY3Rpb248dm9pZChjb25z
dCBBdHRhY2htZW50SW5mbyYpPiYmIGNhbGxiYWNrKTsKICAgICB2b2lkIGRlc3Ryb3lSZWFkZXIo
QXR0YWNobWVudERhdGFSZWFkZXImKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUlPUy5tbQppbmRleCBkMmU2NDFlODEzYjBkMTg1NzA4N2I0OGY2MGNj
NzUyNzU1NDhlNmU0Li5mMDk5YzI4MDNlY2FhYzM5ZjY4NTBiNjA0N2MyYWVmY2E1M2Q3MDE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC0xNDg1LDgg
KzE0ODUsOCBAQCBzdGF0aWMgVUlDb2xvciAqYXR0YWNobWVudFRpdGxlQ29sb3IoKSB7IHJldHVy
biBbZ2V0VUlDb2xvckNsYXNzKCkgc3lzdGVtR3JheUNvbAogc3RhdGljIFJldGFpblB0cjxDVEZv
bnRSZWY+IGF0dGFjaG1lbnRTdWJ0aXRsZUZvbnQoKSB7IHJldHVybiBhdHRhY2htZW50VGl0bGVG
b250KCk7IH0KIHN0YXRpYyBVSUNvbG9yICphdHRhY2htZW50U3VidGl0bGVDb2xvcigpIHsgcmV0
dXJuIFtnZXRVSUNvbG9yQ2xhc3MoKSBzeXN0ZW1HcmF5Q29sb3JdOyB9CiAKLXN0cnVjdCBBdHRh
Y2htZW50SW5mbyB7Ci0gICAgZXhwbGljaXQgQXR0YWNobWVudEluZm8oY29uc3QgUmVuZGVyQXR0
YWNobWVudCYpOworc3RydWN0IFJlbmRlckF0dGFjaG1lbnRJbmZvIHsKKyAgICBleHBsaWNpdCBS
ZW5kZXJBdHRhY2htZW50SW5mbyhjb25zdCBSZW5kZXJBdHRhY2htZW50Jik7CiAKICAgICBGbG9h
dFJlY3QgaWNvblJlY3Q7CiAgICAgRmxvYXRSZWN0IGF0dGFjaG1lbnRSZWN0OwpAQCAtMTUxNCw3
ICsxNTE0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZExpbmUoQ1RMaW5lUmVmKTsKIH07CiAK
LXZvaWQgQXR0YWNobWVudEluZm86OmFkZExpbmUoQ1RMaW5lUmVmIGxpbmUpCit2b2lkIFJlbmRl
ckF0dGFjaG1lbnRJbmZvOjphZGRMaW5lKENUTGluZVJlZiBsaW5lKQogewogICAgIENHUmVjdCBs
aW5lQm91bmRzID0gQ1RMaW5lR2V0Qm91bmRzV2l0aE9wdGlvbnMobGluZSwga0NUTGluZUJvdW5k
c0V4Y2x1ZGVUeXBvZ3JhcGhpY0xlYWRpbmcpOwogICAgIENHRmxvYXQgdHJhaWxpbmdXaGl0ZXNw
YWNlV2lkdGggPSBDVExpbmVHZXRUcmFpbGluZ1doaXRlc3BhY2VXaWR0aChsaW5lKTsKQEAgLTE1
MjksNyArMTUyOSw3IEBAIHZvaWQgQXR0YWNobWVudEluZm86OmFkZExpbmUoQ1RMaW5lUmVmIGxp
bmUpCiAgICAgbGluZXMuYXBwZW5kKGxhYmVsTGluZSk7CiB9CiAKLXZvaWQgQXR0YWNobWVudElu
Zm86OmJ1aWxkV3JhcHBlZExpbmVzKGNvbnN0IFN0cmluZyYgdGV4dCwgQ1RGb250UmVmIGZvbnQs
IFVJQ29sb3IgKmNvbG9yLCB1bnNpZ25lZCBtYXhpbXVtTGluZUNvdW50KQordm9pZCBSZW5kZXJB
dHRhY2htZW50SW5mbzo6YnVpbGRXcmFwcGVkTGluZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBDVEZv
bnRSZWYgZm9udCwgVUlDb2xvciAqY29sb3IsIHVuc2lnbmVkIG1heGltdW1MaW5lQ291bnQpCiB7
CiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0xNTc4LDcgKzE1
NzgsNyBAQCB2b2lkIEF0dGFjaG1lbnRJbmZvOjpidWlsZFdyYXBwZWRMaW5lcyhjb25zdCBTdHJp
bmcmIHRleHQsIENURm9udFJlZiBmb250LCBVSUNvbAogICAgIGFkZExpbmUodHJ1bmNhdGVkTGlu
ZS5nZXQoKSk7CiB9CiAKLXZvaWQgQXR0YWNobWVudEluZm86OmJ1aWxkU2luZ2xlTGluZShjb25z
dCBTdHJpbmcmIHRleHQsIENURm9udFJlZiBmb250LCBVSUNvbG9yICpjb2xvcikKK3ZvaWQgUmVu
ZGVyQXR0YWNobWVudEluZm86OmJ1aWxkU2luZ2xlTGluZShjb25zdCBTdHJpbmcmIHRleHQsIENU
Rm9udFJlZiBmb250LCBVSUNvbG9yICpjb2xvcikKIHsKICAgICBpZiAodGV4dC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTE2NTMsNyArMTY1Myw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8
VUlJbWFnZT4gaWNvbkZvckF0dGFjaG1lbnQoY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNo
bWVudCwKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1BdHRhY2htZW50SW5mbzo6QXR0YWNobWVu
dEluZm8oY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCkKK1JlbmRlckF0dGFjaG1l
bnRJbmZvOjpSZW5kZXJBdHRhY2htZW50SW5mbyhjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRh
Y2htZW50KQogewogICAgIGF0dGFjaG1lbnRSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIGF0dGFjaG1l
bnQud2lkdGgoKS50b0Zsb2F0KCksIGF0dGFjaG1lbnQuaGVpZ2h0KCkudG9GbG9hdCgpKTsKIApA
QCAtMTcwMywxMSArMTcwMywxMSBAQCBMYXlvdXRTaXplIFJlbmRlclRoZW1lSU9TOjphdHRhY2ht
ZW50SW50cmluc2ljU2l6ZShjb25zdCBSZW5kZXJBdHRhY2htZW50JikgY29ucwogCiBpbnQgUmVu
ZGVyVGhlbWVJT1M6OmF0dGFjaG1lbnRCYXNlbGluZShjb25zdCBSZW5kZXJBdHRhY2htZW50JiBh
dHRhY2htZW50KSBjb25zdAogewotICAgIEF0dGFjaG1lbnRJbmZvIGluZm8oYXR0YWNobWVudCk7
CisgICAgUmVuZGVyQXR0YWNobWVudEluZm8gaW5mbyhhdHRhY2htZW50KTsKICAgICByZXR1cm4g
aW5mby5iYXNlbGluZTsKIH0KIAotc3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50SWNvbihHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIEF0dGFjaG1lbnRJbmZvJiBpbmZvKQorc3RhdGljIHZvaWQg
cGFpbnRBdHRhY2htZW50SWNvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJlbmRlckF0dGFj
aG1lbnRJbmZvJiBpbmZvKQogewogICAgIGlmICghaW5mby5pY29uKQogICAgICAgICByZXR1cm47
CkBAIC0xNzE5LDcgKzE3MTksNyBAQCBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRJY29uKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgQXR0YWNobWVudEluZm8mIGluZm8pCiAgICAgY29udGV4
dC5kcmF3SW1hZ2UoKmljb25JbWFnZSwgaW5mby5pY29uUmVjdCk7CiB9CiAKLXN0YXRpYyB2b2lk
IHBhaW50QXR0YWNobWVudFRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBBdHRhY2htZW50
SW5mbyYgaW5mbykKK3N0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudFRleHQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBSZW5kZXJBdHRhY2htZW50SW5mbyYgaW5mbykKIHsKICAgICBmb3IgKGNv
bnN0IGF1dG8mIGxpbmUgOiBpbmZvLmxpbmVzKSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc2F2ZXIoY29udGV4dCk7CkBAIC0xNzMyLDcgKzE3MzIsNyBAQCBzdGF0aWMgdm9p
ZCBwYWludEF0dGFjaG1lbnRUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQXR0YWNobWVu
dEluZm8mIGluZm8pCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRQcm9n
cmVzcyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEF0dGFjaG1lbnRJbmZvJiBpbmZvKQorc3Rh
dGljIHZvaWQgcGFpbnRBdHRhY2htZW50UHJvZ3Jlc3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBSZW5kZXJBdHRhY2htZW50SW5mbyYgaW5mbykKIHsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHNhdmVyKGNvbnRleHQpOwogCkBAIC0xNzUxLDcgKzE3NTEsNyBAQCBzdGF0aWMgdm9p
ZCBwYWludEF0dGFjaG1lbnRQcm9ncmVzcyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEF0dGFj
aG1lbnRJbmZvJiBpbgogICAgIGNvbnRleHQuZmlsbFBhdGgocHJvZ3Jlc3NQYXRoKTsKIH0KIAot
c3RhdGljIFBhdGggYXR0YWNobWVudEJvcmRlclBhdGgoQXR0YWNobWVudEluZm8mIGluZm8pCitz
dGF0aWMgUGF0aCBhdHRhY2htZW50Qm9yZGVyUGF0aChSZW5kZXJBdHRhY2htZW50SW5mbyYgaW5m
bykKIHsKICAgICBQYXRoIGJvcmRlclBhdGg7CiAgICAgYm9yZGVyUGF0aC5hZGRSb3VuZGVkUmVj
dChpbmZvLmF0dGFjaG1lbnRSZWN0LCBGbG9hdFNpemUoYXR0YWNobWVudEJvcmRlclJhZGl1cywg
YXR0YWNobWVudEJvcmRlclJhZGl1cykpOwpAQCAtMTc3Miw3ICsxNzcyLDcgQEAgYm9vbCBSZW5k
ZXJUaGVtZUlPUzo6cGFpbnRBdHRhY2htZW50KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIs
IGNvbnN0IFBhaW50SW4KIAogICAgIGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQg
PSBkb3duY2FzdDxSZW5kZXJBdHRhY2htZW50PihyZW5kZXJlcik7CiAKLSAgICBBdHRhY2htZW50
SW5mbyBpbmZvKGF0dGFjaG1lbnQpOworICAgIFJlbmRlckF0dGFjaG1lbnRJbmZvIGluZm8oYXR0
YWNobWVudCk7CiAKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29u
dGV4dCgpOwogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc2F2ZXIoY29udGV4dCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBjNDg0MGQ5NzMzZWEz
NmU2YzgyZDU5NjU5M2UxZTYzYjQzNjdlYjI4Li42MmNjMDY2MDIyMDZkNTE1MmY5M2Y5NDMxOWEw
ZTk4MDM0Yzk4ODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkK
QEAgLTM2Nyw2ICszNjcsOCBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAg
J1N0cmluZyc6IFsnPHd0Zi90ZXh0L1dURlN0cmluZy5oPiddLAogICAgICAgICAnUEFMOjpTZXNz
aW9uSUQnOiBbJzxwYWwvU2Vzc2lvbklELmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpBdHRhY2ht
ZW50RGlzcGxheU9wdGlvbnMnOiBbJzxXZWJDb3JlL0F0dGFjaG1lbnRUeXBlcy5oPiddLAorICAg
ICAgICAnV2ViQ29yZTo6QXR0YWNobWVudEluZm9SZXF1ZXN0T3B0aW9ucyc6IFsnPFdlYkNvcmUv
QXR0YWNobWVudFR5cGVzLmg+J10sCisgICAgICAgICdXZWJDb3JlOjpBdHRhY2htZW50SW5mbyc6
IFsnPFdlYkNvcmUvQXR0YWNobWVudFR5cGVzLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpBdXRv
cGxheUV2ZW50RmxhZ3MnOiBbJzxXZWJDb3JlL0F1dG9wbGF5RXZlbnQuaD4nXSwKICAgICAgICAg
J1dlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMnOiBbJzxXZWJDb3JlL0pTRE9NRXhjZXB0aW9uSGFu
ZGxpbmcuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MnOiBbJzxX
ZWJDb3JlL0ZpbGVDaG9vc2VyLmg+J10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA4MWM0ZTBmNTQ5MGQyZjBhYzFkYWU4YmQ2MjY4Zjgw
ZTc4NmVlNTBiLi5mOGUzNTdiOGE5Y2VmOGExNDFiNjgyMWQxOTM5OGZjM2Y4MWNjOTU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTI4
LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJTaGFy
ZWFibGVCaXRtYXAuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F0dGFjaG1lbnRUeXBlcy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0Jsb2JQYXJ0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZVF1ZXJ5T3B0aW9ucy5oPgpA
QCAtMjc3MSw0ICsyNzcyLDQzIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQcm9taXNlZEJsb2JJbmZv
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFByb21pc2VkQmxvYkluZm8mCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCit2b2lkIEFyZ3Vt
ZW50Q29kZXI8QXR0YWNobWVudEluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
QXR0YWNobWVudEluZm8mIGluZm8pCit7CisgICAgYm9vbCBkYXRhSXNOdWxsID0gIWluZm8uZGF0
YTsKKyAgICBlbmNvZGVyIDw8IGluZm8uY29udGVudFR5cGUgPDwgaW5mby5uYW1lIDw8IGluZm8u
ZmlsZVBhdGggPDwgZGF0YUlzTnVsbDsKKyAgICBpZiAoIWRhdGFJc051bGwpIHsKKyAgICAgICAg
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlIHsgaW5mby5kYXRhLmdldCgp
IH07CisgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8RGF0YVJlZmVyZW5jZSY+KGRhdGFS
ZWZlcmVuY2UpOworICAgIH0KK30KKworYm9vbCBBcmd1bWVudENvZGVyPEF0dGFjaG1lbnRJbmZv
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEF0dGFjaG1lbnRJbmZvJiBpbmZvKQoreworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby5jb250ZW50VHlwZSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby5uYW1lKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLmZpbGVQYXRoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBkYXRhSXNOdWxsID0gdHJ1ZTsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFJc051bGwpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoIWRhdGFJc051bGwpIHsKKyAgICAgICAgRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJl
bmNlOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFSZWZlcmVuY2UpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpbmZvLmRhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpOworICAgIH0K
KworICAgIHJldHVybiB0cnVlOworfQorCisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKKwogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCmluZGV4IGY1M2RlZDJjYjUyODhkYWU2ZDlhMzdlMmRiMjhmYWQ1
MDg0YmJjYmYuLjRhMGQ5NDAxMTc5OWI3MzdhNTcxYzAwOWY3NzRiMDFjNmM5NDc5NjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC04OSw2ICs4
OSw3IEBAIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogY2xhc3MgVXNlclN0eWxlU2hlZXQ7
CiBjbGFzcyBVUkw7CiAKK3N0cnVjdCBBdHRhY2htZW50SW5mbzsKIHN0cnVjdCBDYWNoZVF1ZXJ5
T3B0aW9uczsKIHN0cnVjdCBDb21wb3NpdGlvblVuZGVybGluZTsKIHN0cnVjdCBEaWN0YXRpb25B
bHRlcm5hdGl2ZTsKQEAgLTY4OSw2ICs2OTAsMTUgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpQcm9taXNlZEJsb2JJbmZvPiB7CiAgICAgc3RhdGljIGJvb2wgZGVj
b2RlKERlY29kZXImLCBXZWJDb3JlOjpQcm9taXNlZEJsb2JJbmZvJik7CiB9OwogCisjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpBdHRhY2htZW50SW5mbz4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiwgY29uc3QgV2ViQ29yZTo6QXR0YWNobWVudEluZm8mKTsKKyAgICBzdGF0aWMgYm9vbCBk
ZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OkF0dGFjaG1lbnRJbmZvJik7Cit9OworCisjZW5kaWYK
KwogfSAvLyBuYW1lc3BhY2UgSVBDCiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4IDg1YThhM2U4YTVmMDY5Njlm
MzQyMDMzMjQ0ZTlhMDc3YjUxOTAwMGEuLjk3MmJkZTBjMmNkMGM1ZTIzNjFlNWNhMTAzMWQ0OGRj
NzJjNTUzMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRh
Y2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVu
dC5jcHAKQEAgLTQ4LDEyICs0OCwxMiBAQCBBdHRhY2htZW50Ojp+QXR0YWNobWVudCgpCiB7CiB9
CiAKLXZvaWQgQXR0YWNobWVudDo6cmVxdWVzdERhdGEoRnVuY3Rpb248dm9pZChSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxs
YmFjaykKK3ZvaWQgQXR0YWNobWVudDo6cmVxdWVzdEluZm8oY29uc3QgV2ViQ29yZTo6QXR0YWNo
bWVudEluZm9SZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucywgRnVuY3Rpb248dm9pZChjb25zdCBXZWJD
b3JlOjpBdHRhY2htZW50SW5mbyYsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2Fs
bGJhY2spCiB7CiAgICAgaWYgKG1fd2ViUGFnZSkKLSAgICAgICAgbV93ZWJQYWdlLT5yZXF1ZXN0
QXR0YWNobWVudERhdGEobV9pZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAg
IG1fd2ViUGFnZS0+cmVxdWVzdEF0dGFjaG1lbnRJbmZvKG1faWRlbnRpZmllciwgb3B0aW9ucywg
V1RGTW92ZShjYWxsYmFjaykpOwogICAgIGVsc2UKLSAgICAgICAgY2FsbGJhY2sobnVsbHB0ciwg
V2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKKyAgICAg
ICAgY2FsbGJhY2soeyB9LCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52
YWxpZGF0ZWQpOwogfQogCiB2b2lkIEF0dGFjaG1lbnQ6OnNldERpc3BsYXlPcHRpb25zKFdlYkNv
cmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyBvcHRpb25zLCBGdW5jdGlvbjx2b2lkKFdlYktp
dDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAppbmRleCBkMjZmMmVmNzY4YmVkNzQ4NTk4MjgwYTM5
YzE0MzBiYmUxNTljNGZmLi40ZDk3MmRjZGIyOTFhZTVjMWEwZGUwM2NjNDk2NzJiOWQ1Zjc3MzIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKQEAgLTM1
LDYgKzM1LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0
cnVjdCBBdHRhY2htZW50RGlzcGxheU9wdGlvbnM7CitzdHJ1Y3QgQXR0YWNobWVudEluZm9SZXF1
ZXN0T3B0aW9uczsKK3N0cnVjdCBBdHRhY2htZW50SW5mbzsKIH0KIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC00OSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5BdHRhY2htZW50KCk7
CiAKICAgICBjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
aWRlbnRpZmllcjsgfQotICAgIHZvaWQgcmVxdWVzdERhdGEoRnVuY3Rpb248dm9pZChSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7
CisgICAgdm9pZCByZXF1ZXN0SW5mbyhjb25zdCBXZWJDb3JlOjpBdHRhY2htZW50SW5mb1JlcXVl
c3RPcHRpb25zJiwgRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpBdHRhY2htZW50SW5mbyYs
IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgc2V0RGlzcGxheU9w
dGlvbnMoV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zLCBGdW5jdGlvbjx2b2lkKFdl
YktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgc2V0RGF0YUFuZENvbnRl
bnRUeXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIGNvbnN0IFdURjo6U3RyaW5nJiBuZXdDb250
ZW50VHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIG5ld0ZpbGVuYW1lLCBGdW5jdGlvbjx2b2lkKFdl
YktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQuaAppbmRleCAyMTBjYTBlZWE0YjdiM2M2
ZTJmNTRlZWQ4N2U2M2U3Y2FmZDRiM2YyLi4yYzEyMzkxZTgwNzVmZDZlNDYxMTc5ODcxYzM3ZWIx
NTYzMWYzYjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBdHRhY2htZW50LmgKQEAgLTQyLDExICs0MiwzNCBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFj
b3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpCiBAcHJvcGVydHkgKG5vbmF0b21pYykg
X1dLQXR0YWNobWVudERpc3BsYXlNb2RlIG1vZGU7CiBAZW5kCiAKK3R5cGVkZWYgTlNfT1BUSU9O
UyhOU1VJbnRlZ2VyLCBfV0tBdHRhY2htZW50RGF0YVJlcXVlc3RUeXBlKSB7CisgICAgLy8gT25s
eSBpbmNsdWRlIGlubGluZSBkYXRhIGluIHRoZSByZXNwb25zZSBmb3IgYXR0YWNobWVudHMgdGhh
dCBhcmUgYmFja2VkIGJ5IGRhdGEgcmF0aGVyIHRoYW4gYSBwYXRoIG9uIGRpc2suCisgICAgLy8g
VGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvci4KKyAgICBfV0tBdHRhY2htZW50RGF0YVJlcXVl
c3RUeXBlT25seUluY2x1ZGVJZkRhdGFCYWNrZWQsCisgICAgX1dLQXR0YWNobWVudERhdGFSZXF1
ZXN0VHlwZURvTm90SW5jbHVkZSwKKyAgICBfV0tBdHRhY2htZW50RGF0YVJlcXVlc3RUeXBlQWx3
YXlzSW5jbHVkZQorfSBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKKworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKQorQGludGVyZmFjZSBfV0tBdHRhY2htZW50SW5mb1JlcXVlc3RPcHRpb25z
IDogTlNPYmplY3QKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBfV0tBdHRhY2htZW50RGF0YVJlcXVl
c3RUeXBlIGRhdGFSZXF1ZXN0VHlwZTsKK0BlbmQKKworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29z
eChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQorQGludGVyZmFjZSBfV0tBdHRhY2htZW50
SW5mbyA6IE5TT2JqZWN0CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5n
ICpjb250ZW50VHlwZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcg
Km5hbWU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpmaWxlUGF0
aDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgbnVsbGFibGUpIE5TRGF0YSAqZGF0
YTsKK0BlbmQKKwogV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKQogQGludGVyZmFjZSBfV0tBdHRhY2htZW50IDogTlNPYmplY3QKKy0gKHZvaWQp
cmVxdWVzdEluZm9XaXRoT3B0aW9uczooX1dLQXR0YWNobWVudEluZm9SZXF1ZXN0T3B0aW9ucyAq
KW9wdGlvbnMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoX1dLQXR0YWNobWVudEluZm8gKiBf
TnVsbGFibGUsIE5TRXJyb3IgKiBfTnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9p
ZClyZXF1ZXN0RGF0YToodm9pZCheKShOU0RhdGEgKiBfTnVsbGFibGUsIE5TRXJyb3IgKiBfTnVs
bGFibGUpKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClzZXREaXNwbGF5T3B0aW9uczooX1dL
QXR0YWNobWVudERpc3BsYXlPcHRpb25zICopb3B0aW9ucyBjb21wbGV0aW9uOih2b2lkKF4gX051
bGxhYmxlKShOU0Vycm9yICogX051bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQp
c2V0RGF0YTooTlNEYXRhICopZGF0YSBuZXdDb250ZW50VHlwZToobnVsbGFibGUgTlNTdHJpbmcg
KiluZXdDb250ZW50VHlwZSBuZXdGaWxlbmFtZToobnVsbGFibGUgTlNTdHJpbmcgKiluZXdGaWxl
bmFtZSBjb21wbGV0aW9uOih2b2lkKF4gX051bGxhYmxlKShOU0Vycm9yICogX051bGxhYmxlKSlj
b21wbGV0aW9uSGFuZGxlcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJp
bmcgKnVuaXF1ZUlkZW50aWZpZXI7CiBAZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbQpp
bmRleCA5MzljYzg3MjI0ZTU1MDdlYTE5YzhmNzU2NTUyNGI5NmMzMDBkZDQ0Li43NGU4OTQ0YzBj
NmIzNzU0ZWJiYmQ3OTgxNzI2MWEwZmEyOTg1ZjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbQpAQCAtMzcsNiArMzcsMjAgQEAK
IAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAorc3RhdGljIFdlYkNvcmU6OkF0dGFjaG1lbnRE
YXRhUmVxdWVzdFR5cGUgY29yZUluZm9SZXF1ZXN0VHlwZShfV0tBdHRhY2htZW50RGF0YVJlcXVl
c3RUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBfV0tBdHRhY2ht
ZW50RGF0YVJlcXVlc3RUeXBlT25seUluY2x1ZGVJZkRhdGFCYWNrZWQ6CisgICAgICAgIHJldHVy
biBXZWJDb3JlOjpBdHRhY2htZW50RGF0YVJlcXVlc3RUeXBlOjpPbmx5SW5jbHVkZUlmRGF0YUJh
Y2tlZDsKKyAgICBjYXNlIF9XS0F0dGFjaG1lbnREYXRhUmVxdWVzdFR5cGVEb05vdEluY2x1ZGU6
CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpBdHRhY2htZW50RGF0YVJlcXVlc3RUeXBlOjpEb05v
dEluY2x1ZGU7CisgICAgY2FzZSBfV0tBdHRhY2htZW50RGF0YVJlcXVlc3RUeXBlQWx3YXlzSW5j
bHVkZToKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkF0dGFjaG1lbnREYXRhUmVxdWVzdFR5cGU6
OkFsd2F5c0luY2x1ZGU7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBXZWJDb3JlOjpBdHRhY2htZW50RGF0YVJlcXVlc3RUeXBlOjpPbmx5SW5jbHVkZUlmRGF0
YUJhY2tlZDsKK30KKwogQGltcGxlbWVudGF0aW9uIF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9u
cyA6IE5TT2JqZWN0CiAKIC0gKGluc3RhbmNldHlwZSlpbml0CkBAIC02OSw2ICs4Myw2NCBAQCAt
IChXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMpY29yZURpc3BsYXlPcHRpb25zCiAK
IEBlbmQKIAorQGltcGxlbWVudGF0aW9uIF9XS0F0dGFjaG1lbnRJbmZvUmVxdWVzdE9wdGlvbnMK
KworLSAoaW5zdGFuY2V0eXBlKWluaXQKK3sKKyAgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkK
KyAgICAgICAgX2RhdGFSZXF1ZXN0VHlwZSA9IF9XS0F0dGFjaG1lbnREYXRhUmVxdWVzdFR5cGVP
bmx5SW5jbHVkZUlmRGF0YUJhY2tlZDsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAoV2ViQ29y
ZTo6QXR0YWNobWVudEluZm9SZXF1ZXN0T3B0aW9ucyljb3JlUmVxdWVzdE9wdGlvbnMKK3sKKyAg
ICByZXR1cm4geyBjb3JlSW5mb1JlcXVlc3RUeXBlKF9kYXRhUmVxdWVzdFR5cGUpIH07Cit9CisK
K0BlbmQKKworQGltcGxlbWVudGF0aW9uIF9XS0F0dGFjaG1lbnRJbmZvIHsKKyAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBfZGF0YTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9uYW1lOworICAgIFJl
dGFpblB0cjxOU1N0cmluZz4gX2ZpbGVQYXRoOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gX2Nv
bnRlbnRUeXBlOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJbmZvOihjb25zdCBXZWJD
b3JlOjpBdHRhY2htZW50SW5mbyYpaW5mbworeworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5p
dF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX2RhdGEgPSBpbmZvLmRhdGEgPyBpbmZv
LmRhdGEtPmNyZWF0ZU5TRGF0YSgpIDogbmlsOworICAgIF9jb250ZW50VHlwZSA9IGFkb3B0TlMo
WyhOU1N0cmluZyAqKWluZm8uY29udGVudFR5cGUgPzogQCIiIGNvcHldKTsKKyAgICBfbmFtZSA9
IGFkb3B0TlMoWyhOU1N0cmluZyAqKWluZm8ubmFtZSA/OiBAIiIgY29weV0pOworICAgIF9maWxl
UGF0aCA9IGFkb3B0TlMoWyhOU1N0cmluZyAqKWluZm8uZmlsZVBhdGggPzogQCIiIGNvcHldKTsK
KworICAgIHJldHVybiBzZWxmOworfQorCistIChOU0RhdGEgKilkYXRhCit7CisgICAgcmV0dXJu
IF9kYXRhLmdldCgpOworfQorCistIChOU1N0cmluZyAqKW5hbWUKK3sKKyAgICByZXR1cm4gX25h
bWUuZ2V0KCk7Cit9CisKKy0gKE5TU3RyaW5nICopZmlsZVBhdGgKK3sKKyAgICByZXR1cm4gX2Zp
bGVQYXRoLmdldCgpOworfQorCistIChOU1N0cmluZyAqKWNvbnRlbnRUeXBlCit7CisgICAgcmV0
dXJuIF9jb250ZW50VHlwZS5nZXQoKTsKK30KKworQGVuZAorCiBAaW1wbGVtZW50YXRpb24gX1dL
QXR0YWNobWVudAogCiAtIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdApAQCAtODEsMTkgKzE1Mywz
MiBAQCAtIChCT09MKWlzRXF1YWw6KGlkKW9iamVjdAogICAgIHJldHVybiBbb2JqZWN0IGlzS2lu
ZE9mQ2xhc3M6W19XS0F0dGFjaG1lbnQgY2xhc3NdXSAmJiBbc2VsZi51bmlxdWVJZGVudGlmaWVy
IGlzRXF1YWw6WyhfV0tBdHRhY2htZW50ICopb2JqZWN0IHVuaXF1ZUlkZW50aWZpZXJdXTsKIH0K
IAotLSAodm9pZClyZXF1ZXN0RGF0YToodm9pZCheKShOU0RhdGEgKiwgTlNFcnJvciAqKSljb21w
bGV0aW9uSGFuZGxlcgorLSAodm9pZClyZXF1ZXN0SW5mb1dpdGhPcHRpb25zOihfV0tBdHRhY2ht
ZW50SW5mb1JlcXVlc3RPcHRpb25zICopb3B0aW9ucyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZChe
KShfV0tBdHRhY2htZW50SW5mbyAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0g
ICAgX2F0dGFjaG1lbnQtPnJlcXVlc3REYXRhKFsgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcikgXSAoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyLCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgYXV0byBjb3JlUmVxdWVzdE9w
dGlvbnMgPSBvcHRpb25zID8gW29wdGlvbnMgY29yZVJlcXVlc3RPcHRpb25zXSA6IFdlYkNvcmU6
OkF0dGFjaG1lbnRJbmZvUmVxdWVzdE9wdGlvbnMgeyB9OworICAgIF9hdHRhY2htZW50LT5yZXF1
ZXN0SW5mbyhjb3JlUmVxdWVzdE9wdGlvbnMsIFtjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRy
KGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IFdlYkNvcmU6OkF0dGFjaG1lbnRJbmZvJiBpbmZv
LCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgIGlmICghY2FwdHVyZWRCbG9j
aykKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoYnVmZmVyICYmIGVycm9yID09
IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpCi0gICAgICAgICAgICBjYXB0dXJlZEJsb2NrKGJ1
ZmZlci0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKSwgbmlsKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpX
S0Vycm9yRG9tYWluIGNvZGU6MSB1c2VySW5mbzpuaWxdKTsKKyAgICAgICAgaWYgKGVycm9yICE9
IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpIHsKKyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2so
bmlsLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JX
ZWJWaWV3SW52YWxpZGF0ZWQgdXNlckluZm86bmlsXSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBhdXRvIGF0dGFjaG1lbnRJbmZvID0gYWRvcHROUyhbW19XS0F0
dGFjaG1lbnRJbmZvIGFsbG9jXSBpbml0V2l0aEluZm86aW5mb10pOworICAgICAgICBjYXB0dXJl
ZEJsb2NrKGF0dGFjaG1lbnRJbmZvLmdldCgpLCBuaWwpOwogICAgIH0pOwogfQogCistICh2b2lk
KXJlcXVlc3REYXRhOih2b2lkKF4pKE5TRGF0YSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5k
bGVyCit7CisgICAgYXV0byBvcHRpb25zID0gYWRvcHROUyhbW19XS0F0dGFjaG1lbnRJbmZvUmVx
dWVzdE9wdGlvbnMgYWxsb2NdIGluaXRdKTsKKyAgICBbb3B0aW9ucyBzZXREYXRhUmVxdWVzdFR5
cGU6X1dLQXR0YWNobWVudERhdGFSZXF1ZXN0VHlwZUFsd2F5c0luY2x1ZGVdOworICAgIFtzZWxm
IHJlcXVlc3RJbmZvV2l0aE9wdGlvbnM6b3B0aW9ucy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpb
cHJvdGVjdGVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoX1dLQXR0
YWNobWVudEluZm8gKmluZm8sIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIHByb3RlY3RlZEJs
b2NrKGluZm8uZGF0YSwgZXJyb3IpOworICAgIH1dOworfQorCiAtICh2b2lkKXNldERpc3BsYXlP
cHRpb25zOihfV0tBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgKilvcHRpb25zIGNvbXBsZXRpb246
KHZvaWQoXikoTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIGF1dG8gY29yZU9w
dGlvbnMgPSBvcHRpb25zID8gb3B0aW9ucy5jb3JlRGlzcGxheU9wdGlvbnMgOiBXZWJDb3JlOjpB
dHRhY2htZW50RGlzcGxheU9wdGlvbnMgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggZTEwYTJlYjMxYjdmZTdlOTJlNWQ4M2JjODA2M2Q2ODg0MzVlMmE1
Yi4uYmY2YjhjNTFmMzUzNjgwOTkzZjQ5NjlkMDI4NWIyZWFkYzExYzhhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC01MjA2LDIzICs1MjA2LDIxIEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojp2b2lkQ2FsbGJhY2soQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAg
IGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2soKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNo
YXJlZEJ1ZmZlckNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5j
ZSwgYm9vbCBpc051bGwsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQorCit2b2lkIFdlYlBhZ2VQcm94eTo6YXR0YWNobWVudEluZm9DYWxsYmFj
ayhjb25zdCBXZWJDb3JlOjpBdHRhY2htZW50SW5mbyYgaW5mbywgQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogewotICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFNoYXJlZEJ1ZmZl
ckNhbGxiYWNrPihjYWxsYmFja0lEKTsKKyAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3Mu
dGFrZTxBdHRhY2htZW50SW5mb0NhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxi
YWNrKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgaWYgKGlzTnVsbCkgewotICAgICAgICBBU1NFUlQoZGF0YVJlZmVyZW5jZS5p
c0VtcHR5KCkpOwotICAgICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZh
bHVlKG51bGxwdHIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FsbGJhY2stPnBl
cmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhUmVm
ZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpKTsKKyAgICBjYWxsYmFjay0+cGVy
Zm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKGluZm8pOwogfQogCisjZW5kaWYKKwogdm9pZCBX
ZWJQYWdlUHJveHk6OmRhdGFDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFS
ZWZlcmVuY2UsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0g
bV9jYWxsYmFja3MudGFrZTxEYXRhQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwpAQCAtNzIzNywxNSAr
NzIzNSwxNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIsIGNvbnN0IEF0dGFjaG1lbnREaQogICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0QXR0YWNobWVudChpZGVudGlmaWVyLCBvcHRpb25zLCBm
aWxlbmFtZSwgY29udGVudFR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSB7ICZk
YXRhIH0sIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0QXR0YWNobWVudERhdGEoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBGdW5jdGlvbjx2
b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFj
aykKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QXR0YWNobWVudEluZm8oY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBjb25zdCBBdHRhY2htZW50SW5mb1JlcXVlc3RPcHRpb25zJiBvcHRpb25z
LCBGdW5jdGlvbjx2b2lkKGNvbnN0IEF0dGFjaG1lbnRJbmZvJiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKLSAgICAgICAgY2FsbGJh
Y2sobnVsbHB0ciwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7Cisg
ICAgICAgIGNhbGxiYWNrKHsgfSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlk
YXRlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpSZXF1ZXN0QXR0YWNobWVudERhdGEoaWRlbnRpZmllciwgY2FsbGJhY2tJRCks
IG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVl
c3RBdHRhY2htZW50SW5mbyhpZGVudGlmaWVyLCBvcHRpb25zLCBjYWxsYmFja0lEKSwgbV9wYWdl
SUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0QXR0YWNobWVudERpc3BsYXlPcHRpb25z
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgQXR0YWNobWVudERpc3BsYXlPcHRpb25zIG9wdGlv
bnMsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2spCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDNkMmE3YzczNGJlOGJlMWNlYmQ0
MGJiNDZiOWQ4ZTZmMGFlNWU1NWIuLmFhODQ3MmE4Mzk2ZmEzOThhNWM4MDUyMTgyYTE3NjZkNDk4
MDEyNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xODMsNiAr
MTgzLDggQEAgdXNpbmcgRmxvYXRCb3hFeHRlbnQgPSBSZWN0RWRnZXM8ZmxvYXQ+OwogI2lmIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgQXR0
YWNobWVudERpc3BsYXlPcHRpb25zOworc3RydWN0IEF0dGFjaG1lbnRJbmZvUmVxdWVzdE9wdGlv
bnM7CitzdHJ1Y3QgQXR0YWNobWVudEluZm87CiB9CiAjZW5kaWYKIApAQCAtMjQ3LDcgKzI0OSwx
MCBAQCB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazx1aW50NjRfdD4gVW5zaWduZWRDYWxsYmFjazsK
IHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEVkaXRpbmdSYW5nZT4gRWRpdGluZ1JhbmdlQ2FsbGJh
Y2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBTdHJpbmcmPiBTdHJpbmdDYWxsYmFj
azsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwg
Ym9vbCwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyY+IFNjcmlwdFZhbHVlQ2FsbGJh
Y2s7Ci10eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj4gU2hhcmVkQnVmZmVyQ2FsbGJhY2s7CisKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5U
KQordHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6QXR0YWNobWVudEluZm8m
PiBBdHRhY2htZW50SW5mb0NhbGxiYWNrOworI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspCiB0
eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxBUEk6OkVycm9yKj4gUHJpbnRGaW5pc2hlZENhbGxiYWNr
OwpAQCAtMTI1Myw5ICsxMjU4LDEwIEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5U
X0VMRU1FTlQpCiAgICAgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zJiwgY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlLCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImIGRhdGEsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYpOwotICAgIHZvaWQgcmVxdWVzdEF0dGFjaG1lbnREYXRhKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgRnVuY3Rpb248dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgcmVxdWVzdEF0dGFjaG1lbnRJbmZvKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6QXR0YWNobWVudEluZm9SZXF1ZXN0
T3B0aW9ucyYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6QXR0YWNobWVudEluZm8mLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBzZXRBdHRhY2htZW50RGlzcGxheU9w
dGlvbnMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxh
eU9wdGlvbnMsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZv
aWQgc2V0QXR0YWNobWVudERhdGFBbmRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiYg
bmV3Q29udGVudFR5cGUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYmIG5ld0ZpbGVuYW1lLCBGdW5j
dGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIGF0dGFjaG1lbnRJ
bmZvQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6QXR0YWNobWVudEluZm8mLCBDYWxsYmFja0lEKTsK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQpAQCAtMTUxNiw3ICsx
NTIyLDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdm9pZENhbGxiYWNrKENhbGxiYWNrSUQpOwog
ICAgIHZvaWQgZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIENhbGxiYWNr
SUQpOwotICAgIHZvaWQgc2hhcmVkQnVmZmVyQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiwgYm9vbCBpc051bGwsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgaW1hZ2VDYWxsYmFjayhj
b25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgc3Ry
aW5nQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBpbnZhbGlk
YXRlU3RyaW5nQ2FsbGJhY2soQ2FsbGJhY2tJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggN2VhNmIyYjQ1YjE1YmFlMDdlMDI0
NWIxYzVhMWJlNDk5YjIxMmIyMS4uMzdjZmMwNzFjNWViNmE5YTk4ZWQ4M2RkZWQ4ZWNkNTMzZmRl
ZDkxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgpAQCAtMTU3LDcgKzE1Nyw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAg
ICAgIyBDYWxsYmFjayBtZXNzYWdlcwogICAgIFZvaWRDYWxsYmFjayhXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKICAgICBEYXRhQ2FsbGJhY2soSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3Vs
dERhdGEsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIFNoYXJlZEJ1ZmZlckNh
bGxiYWNrKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBib29sIGlzTnVsbCwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOwogICAgIEltYWdlQ2FsbGJhY2soV2ViS2l0OjpTaGFy
ZWFibGVCaXRtYXA6OkhhbmRsZSBiaXRtYXBIYW5kbGUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogICAgIFN0cmluZ0NhbGxiYWNrKFN0cmluZyByZXN1bHRTdHJpbmcsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEludmFsaWRhdGVTdHJpbmdDYWxsYmFjayhXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKQEAgLTE2Nyw2ICsxNjYsOSBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlUHJveHkgewogICAgIEVkaXRpbmdSYW5nZUNhbGxiYWNrKHN0cnVjdCBXZWJLaXQ6
OkVkaXRpbmdSYW5nZSByYW5nZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAg
VW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCByZXN1bHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogICAgIFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKFdlYkNvcmU6OkludFJl
Y3QgcmVjdCwgc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIGFjdHVhbFJhbmdlLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQor
ICAgIEF0dGFjaG1lbnRJbmZvQ2FsbGJhY2soc3RydWN0IFdlYkNvcmU6OkF0dGFjaG1lbnRJbmZv
IGluZm8sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKKyNlbmRpZgogI2lmIEVOQUJM
RShBUFBMSUNBVElPTl9NQU5JRkVTVCkKICAgICBBcHBsaWNhdGlvbk1hbmlmZXN0Q2FsbGJhY2so
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiBtYW5pZmVzdCwgV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNjZjODMxOWM4NzhiMGZmNjE4MjRlMDdk
NDQzNjE3MjFiMWVhMWFkMy4uZTU2MmM1NDMzNjc0NzdlOTUxNzY5ZmJmMTI3NWRkNDYxMDgzOGYz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTU4NDgsMTQgKzU4NDgsNiBAQCB2b2lkIFdlYlBhZ2U6OnN0b3JhZ2VBY2Nlc3NSZXNwb25zZShi
b29sIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRleHRJZCkKIH0KICNlbmRpZgogCi12b2lkIFdl
YlBhZ2U6Omludm9rZVNoYXJlZEJ1ZmZlckNhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi17Ci0gICAgaWYgKGJ1ZmZlcikKLSAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaGFyZWRCdWZmZXJDYWxsYmFjayhJUEM6
OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgeyBidWZmZXIuZ2V0KCkgfSwgZmFsc2UsIGNhbGxi
YWNrSUQpKTsKLSAgICBlbHNlCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
U2hhcmVkQnVmZmVyQ2FsbGJhY2soeyB9LCB0cnVlLCBjYWxsYmFja0lEKSk7Ci19Ci0KICNpZiBF
TkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCiB2b2lkIFdlYlBhZ2U6Omluc2VydEF0dGFjaG1l
bnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBBdHRhY2htZW50RGlzcGxheU9wdGlv
bnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBjb250ZW50VHlwZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCkBAIC01ODY1LDE5ICs1ODU3LDE2IEBAIHZvaWQgV2ViUGFnZTo6aW5zZXJ0
QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IEF0dGFjaG1lbnREaXNw
bGF5CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJh
Y2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJlcXVlc3RBdHRhY2htZW50RGF0YShjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6
cmVxdWVzdEF0dGFjaG1lbnRJbmZvKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgQXR0
YWNobWVudEluZm9SZXF1ZXN0T3B0aW9ucyYgb3B0aW9ucywgQ2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogewogICAgIGF1dG8gYXR0YWNobWVudCA9IGF0dGFjaG1lbnRFbGVtZW50V2l0aElkZW50aWZp
ZXIoaWRlbnRpZmllcik7CiAgICAgaWYgKCFhdHRhY2htZW50KSB7Ci0gICAgICAgIGludm9rZVNo
YXJlZEJ1ZmZlckNhbGxiYWNrKHsgfSwgY2FsbGJhY2tJRCk7CisgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6QXR0YWNobWVudEluZm9DYWxsYmFjayh7IH0sIGNhbGxiYWNrSUQp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF0dGFjaG1lbnQtPnJlcXVlc3REYXRh
KFtjYWxsYmFja0lELCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByb3RlY3RlZEF0
dGFjaG1lbnQgPSBXVEZNb3ZlKGF0dGFjaG1lbnQpXSAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpIHsKLSAgICAgICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgICAgIHByb3RlY3RlZFRoaXMt
Pmludm9rZVNoYXJlZEJ1ZmZlckNhbGxiYWNrKFdURk1vdmUoYnVmZmVyKSwgY2FsbGJhY2tJRCk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmludm9rZVNoYXJlZEJ1
ZmZlckNhbGxiYWNrKHsgfSwgY2FsbGJhY2tJRCk7CisgICAgYXR0YWNobWVudC0+cmVxdWVzdElu
Zm8ob3B0aW9ucywgW2NhbGxiYWNrSUQsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
cHJvdGVjdGVkQXR0YWNobWVudCA9IFdURk1vdmUoYXR0YWNobWVudCldIChjb25zdCBBdHRhY2ht
ZW50SW5mbyYgaW5mbykgeworICAgICAgICBwcm90ZWN0ZWRUaGlzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkF0dGFjaG1lbnRJbmZvQ2FsbGJhY2soaW5mbywgY2FsbGJhY2tJRCkpOwog
ICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
aW5kZXggZDhjMzdhNjZjYzVlYTgwYjVlYWEyOGM0MzkwMDkxMDY0MjVhOGFkNS4uMGNkMmU2Njk0
NTQwNTQ2NGM2NTNlZDgyOGVmNmZiNGUzYzRkODRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTY0LDYgKzE2NCw3IEBAIGVudW0gY2xhc3MgVGV4
dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb24gOiB1aW50OF90OwogI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCiBjbGFzcyBIVE1MQXR0YWNobWVudEVsZW1lbnQ7CiBzdHJ1Y3Qg
QXR0YWNobWVudERpc3BsYXlPcHRpb25zOworc3RydWN0IEF0dGFjaG1lbnRJbmZvUmVxdWVzdE9w
dGlvbnM7CiAjZW5kaWYKIH0KIApAQCAtMTA0Myw3ICsxMDQ0LDcgQEAgcHVibGljOgogCiAjaWYg
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9w
dGlvbnMmLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29u
dGVudFR5cGUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIENhbGxiYWNrSUQpOwotICAgIHZv
aWQgcmVxdWVzdEF0dGFjaG1lbnREYXRhKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCByZXF1ZXN0QXR0YWNobWVudEluZm8oY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpBdHRhY2htZW50SW5mb1JlcXVlc3RPcHRpb25zJiwgQ2Fs
bGJhY2tJRCk7CiAgICAgdm9pZCBzZXRBdHRhY2htZW50RGlzcGxheU9wdGlvbnMoY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMm
LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHNldEF0dGFjaG1lbnREYXRhQW5kQ29udGVudFR5cGUo
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gbmV3Q29udGVudFR5cGUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBu
ZXdGaWxlbmFtZSwgQ2FsbGJhY2tJRCk7CiAjZW5kaWYKQEAgLTExNjYsOCArMTE2Nyw2IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCByZXN0b3JlU2Vzc2lvbihjb25zdCBWZWN0b3I8QmFja0ZvcndhcmRM
aXN0SXRlbVN0YXRlPiYpOwogICAgIHZvaWQgZGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKHVpbnQ2
NF90KTsKIAotICAgIHZvaWQgaW52b2tlU2hhcmVkQnVmZmVyQ2FsbGJhY2soUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiwgQ2FsbGJhY2tJRCk7Ci0KICNpZiBFTkFCTEUoUkVNT1RFX0lO
U1BFQ1RPUikKICAgICB2b2lkIHNldEFsbG93c1JlbW90ZUluc3BlY3Rpb24oYm9vbCk7CiAgICAg
dm9pZCBzZXRSZW1vdGVJbnNwZWN0aW9uTmFtZU92ZXJyaWRlKGNvbnN0IFN0cmluZyYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KaW5kZXggNGU0M2JjNzdjNjFlNzk4ZjExZTVlNDNkZWRjNzk3YWVjOWEzNTg2MC4uNjNiZDEw
NTQ1Y2Y0NmYxZWMyN2RiODRiZGFjZjdjMzE0NmM3Yjk4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00OTQsNyAr
NDk0LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAKICNpZiBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIEluc2VydEF0dGFjaG1lbnQoU3RyaW5nIGlkZW50
aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgb3B0aW9ucywg
U3RyaW5nIGZpbGVuYW1lLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUsIElQQzo6
RGF0YVJlZmVyZW5jZSBkYXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBS
ZXF1ZXN0QXR0YWNobWVudERhdGEoU3RyaW5nIGlkZW50aWZpZXIsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQorICAgIFJlcXVlc3RBdHRhY2htZW50SW5mbyhTdHJpbmcgaWRlbnRpZmll
ciwgc3RydWN0IFdlYkNvcmU6OkF0dGFjaG1lbnRJbmZvUmVxdWVzdE9wdGlvbnMgb3B0aW9ucywg
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgU2V0QXR0YWNobWVudERpc3BsYXlP
cHRpb25zKFN0cmluZyBpZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6QXR0YWNobWVudERpc3Bs
YXlPcHRpb25zIG9wdGlvbnMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFNl
dEF0dGFjaG1lbnREYXRhQW5kQ29udGVudFR5cGUoU3RyaW5nIGlkZW50aWZpZXIsIElQQzo6RGF0
YVJlZmVyZW5jZSBkYXRhLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmV3Q29udGVudFR5cGUsIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBuZXdGaWxlbmFtZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCAyMTQ4YjYwYmM0NTU1YWQwYmNhOWY3ODdlMWIyNjRjZDVlN2IwNjU4Li42M2Nj
OTE3NmY4YmFiNTJlZDljODQyMDA0MjU0YjU3MGVhOWNlNDA2IDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTgtMDEt
MDggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0F0
dGFjaG1lbnQgU3VwcG9ydF0gRXhwb3NlIGZpbGUgbmFtZSBhbmQgY29udGVudCB0eXBlIG9mIFdL
QXR0YWNobWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTgxMzkwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjMzNjgzNz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGp1c3RzIHNvbWUgZXhpc3Rp
bmcgdGVzdHMgaW4gV0tBdHRhY2htZW50VGVzdHMgdG8gZXhlcmNpc2UgLXJlcXVlc3RJbmZvV2l0
aE9wdGlvbnM6Y29tcGxldGlvbkhhbmRsZXI6LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbToKKyAgICAgICAgKC1bX1dLQXR0
YWNobWVudCBzeW5jaHJvbm91c2x5UmVxdWVzdEluZm9XaXRoT3B0aW9uczplcnJvcjpdKToKKyAg
ICAgICAgKC1bX1dLQXR0YWNobWVudCBzeW5jaHJvbm91c2x5UmVxdWVzdERhdGE6XSk6CisKKyAg
ICAgICAgUmVpbXBsZW1lbnQgdGhpcyBpbiB0ZXJtcyBvZiAtc3luY2hyb25vdXNseVJlcXVlc3RJ
bmZvV2l0aE9wdGlvbnM6ZXJyb3I6LgorCisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgZXhwZWN0
UmVxdWVzdGVkRGF0YVRvQmU6XSk6CisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgZXhwZWN0UmVx
dWVzdGVkVHlwZVRvQmU6bmFtZTpdKToKKyAgICAgICAgKC1bX1dLQXR0YWNobWVudCBleHBlY3RS
ZXF1ZXN0ZWRGaWxlUGF0aFRvRXhpc3Q6XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KToKKwogMjAxOC0wMS0wNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJlc3RyaWN0IG5hdmlnYXRpb24tdGltZSBXS1dlYnNpdGVEYXRhU3Rv
cmUgc3dhcHBpbmcgdG8gbWFpbiBmcmFtZSBuYXZpZ2F0aW9ucwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0K
aW5kZXggNzQzNTQ3ZDNjNzdhY2U5MTE1ODc2ZjVjODRhOTgzOWRiNmM2OGQ2Yi4uYWUxMWUxMzg4
NTI0MDEzMmQxODlkYmJkZjgxNjg2NTkxMmI1OWFkZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCkBA
IC0yNzEsMTMgKzI3MSwxMyBAQCAtICh2b2lkKXN5bmNocm9ub3VzbHlTZXREaXNwbGF5T3B0aW9u
czooX1dLQXR0YWNobWVudERpc3BsYXlPcHRpb25zICopb3B0aW9ucyBlcgogICAgICAgICAqZXJy
b3IgPSByZXN1bHRFcnJvci5hdXRvcmVsZWFzZSgpOwogfQogCi0tIChOU0RhdGEgKilzeW5jaHJv
bm91c2x5UmVxdWVzdERhdGE6KE5TRXJyb3IgKiopZXJyb3IKKy0gKF9XS0F0dGFjaG1lbnRJbmZv
ICopc3luY2hyb25vdXNseVJlcXVlc3RJbmZvV2l0aE9wdGlvbnM6KF9XS0F0dGFjaG1lbnRJbmZv
UmVxdWVzdE9wdGlvbnMgKilvcHRpb25zIGVycm9yOihOU0Vycm9yICoqKWVycm9yCiB7Ci0gICAg
X19ibG9jayBSZXRhaW5QdHI8TlNEYXRhPiByZXN1bHQ7CisgICAgX19ibG9jayBSZXRhaW5QdHI8
X1dLQXR0YWNobWVudEluZm8+IHJlc3VsdDsKICAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0Vycm9y
PiByZXN1bHRFcnJvcjsKICAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOwotICAgIFtzZWxm
IHJlcXVlc3REYXRhOl4oTlNEYXRhICpkYXRhLCBOU0Vycm9yICplcnJvcikgewotICAgICAgICBy
ZXN1bHQgPSBkYXRhOworICAgIFtzZWxmIHJlcXVlc3RJbmZvV2l0aE9wdGlvbnM6b3B0aW9ucyBj
b21wbGV0aW9uSGFuZGxlcjpeKF9XS0F0dGFjaG1lbnRJbmZvICppbmZvLCBOU0Vycm9yICplcnJv
cikgeworICAgICAgICByZXN1bHQgPSBpbmZvOwogICAgICAgICByZXN1bHRFcnJvciA9IGVycm9y
OwogICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9XTsKQEAgLTI5MCw2ICsyOTAsMTMgQEAgLSAo
TlNEYXRhICopc3luY2hyb25vdXNseVJlcXVlc3REYXRhOihOU0Vycm9yICoqKWVycm9yCiAgICAg
cmV0dXJuIHJlc3VsdC5hdXRvcmVsZWFzZSgpOwogfQogCistIChOU0RhdGEgKilzeW5jaHJvbm91
c2x5UmVxdWVzdERhdGE6KE5TRXJyb3IgKiopZXJyb3IKK3sKKyAgICBhdXRvIG9wdGlvbnMgPSBh
ZG9wdE5TKFtbX1dLQXR0YWNobWVudEluZm9SZXF1ZXN0T3B0aW9ucyBhbGxvY10gaW5pdF0pOwor
ICAgIFtvcHRpb25zIHNldERhdGFSZXF1ZXN0VHlwZTpfV0tBdHRhY2htZW50RGF0YVJlcXVlc3RU
eXBlQWx3YXlzSW5jbHVkZV07CisgICAgcmV0dXJuIFtzZWxmIHN5bmNocm9ub3VzbHlSZXF1ZXN0
SW5mb1dpdGhPcHRpb25zOm9wdGlvbnMuZ2V0KCkgZXJyb3I6ZXJyb3JdLmRhdGE7Cit9CisKIC0g
KHZvaWQpc3luY2hyb25vdXNseVNldERhdGE6KE5TRGF0YSAqKWRhdGEgbmV3Q29udGVudFR5cGU6
KE5TU3RyaW5nICopbmV3Q29udGVudFR5cGUgbmV3RmlsZW5hbWU6KE5TU3RyaW5nICopbmV3Rmls
ZW5hbWUgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3IKIHsKICAgICBfX2Jsb2NrIFJldGFpblB0cjxO
U0Vycm9yPiByZXN1bHRFcnJvcjsKQEAgLTMwNywxNiArMzE0LDQ4IEBAIC0gKHZvaWQpc3luY2hy
b25vdXNseVNldERhdGE6KE5TRGF0YSAqKWRhdGEgbmV3Q29udGVudFR5cGU6KE5TU3RyaW5nICop
bmV3Q29udGVuCiAKIC0gKHZvaWQpZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6KE5TRGF0YSAqKWV4
cGVjdGVkRGF0YQogewotICAgIE5TRXJyb3IgKmRhdGFSZXF1ZXN0RXJyb3IgPSBuaWw7Ci0gICAg
TlNEYXRhICpvYnNlcnZlZERhdGEgPSBbc2VsZiBzeW5jaHJvbm91c2x5UmVxdWVzdERhdGE6JmRh
dGFSZXF1ZXN0RXJyb3JdOwotICAgIEJPT0wgb2JzZXJ2ZWREYXRhSXNFcXVhbFRvRXhwZWN0ZWRE
YXRhID0gW29ic2VydmVkRGF0YSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVkRGF0YV0gfHwgb2JzZXJ2
ZWREYXRhID09IGV4cGVjdGVkRGF0YTsKKyAgICBhdXRvIG9wdGlvbnMgPSBhZG9wdE5TKFtbX1dL
QXR0YWNobWVudEluZm9SZXF1ZXN0T3B0aW9ucyBhbGxvY10gaW5pdF0pOworICAgIFtvcHRpb25z
IHNldERhdGFSZXF1ZXN0VHlwZTpfV0tBdHRhY2htZW50RGF0YVJlcXVlc3RUeXBlQWx3YXlzSW5j
bHVkZV07CisgICAgTlNFcnJvciAqcmVxdWVzdEVycm9yID0gbmlsOworICAgIF9XS0F0dGFjaG1l
bnRJbmZvICppbmZvID0gW3NlbGYgc3luY2hyb25vdXNseVJlcXVlc3RJbmZvV2l0aE9wdGlvbnM6
b3B0aW9ucy5nZXQoKSBlcnJvcjomcmVxdWVzdEVycm9yXTsKKworICAgIEJPT0wgb2JzZXJ2ZWRE
YXRhSXNFcXVhbFRvRXhwZWN0ZWREYXRhID0gW2luZm8uZGF0YSBpc0VxdWFsVG9EYXRhOmV4cGVj
dGVkRGF0YV0gfHwgaW5mby5kYXRhID09IGV4cGVjdGVkRGF0YTsKICAgICBFWFBFQ1RfVFJVRShv
YnNlcnZlZERhdGFJc0VxdWFsVG9FeHBlY3RlZERhdGEpOwogICAgIGlmICghb2JzZXJ2ZWREYXRh
SXNFcXVhbFRvRXhwZWN0ZWREYXRhKSB7Ci0gICAgICAgIE5TTG9nKEAiRXhwZWN0ZWQgZGF0YTog
JUAgYnV0IG9ic2VydmVkOiAlQCBmb3IgJUAiLCBbZXhwZWN0ZWREYXRhIHNob3J0RGVzY3JpcHRp
b25dLCBbb2JzZXJ2ZWREYXRhIHNob3J0RGVzY3JpcHRpb25dLCBzZWxmKTsKLSAgICAgICAgTlNM
b2coQCJPYnNlcnZlZCBlcnJvcjogJUAgd2hpbGUgcmVhZGluZyBkYXRhIGZvciAlQCIsIGRhdGFS
ZXF1ZXN0RXJyb3IsIHNlbGYpOworICAgICAgICBOU0xvZyhAIkV4cGVjdGVkIGRhdGE6ICVAIGJ1
dCBvYnNlcnZlZDogJUAgZm9yICVAIiwgW2V4cGVjdGVkRGF0YSBzaG9ydERlc2NyaXB0aW9uXSwg
W2luZm8uZGF0YSBzaG9ydERlc2NyaXB0aW9uXSwgc2VsZik7CisgICAgICAgIE5TTG9nKEAiT2Jz
ZXJ2ZWQgZXJyb3I6ICVAIHdoaWxlIHJlYWRpbmcgZGF0YSBmb3IgJUAiLCByZXF1ZXN0RXJyb3Is
IHNlbGYpOwogICAgIH0KIH0KIAorLSAodm9pZClleHBlY3RSZXF1ZXN0ZWRUeXBlVG9CZTooTlNT
dHJpbmcgKiljb250ZW50VHlwZSBuYW1lOihOU1N0cmluZyAqKW5hbWUKK3sKKyAgICBhdXRvIG9w
dGlvbnMgPSBhZG9wdE5TKFtbX1dLQXR0YWNobWVudEluZm9SZXF1ZXN0T3B0aW9ucyBhbGxvY10g
aW5pdF0pOworICAgIFtvcHRpb25zIHNldERhdGFSZXF1ZXN0VHlwZTpfV0tBdHRhY2htZW50RGF0
YVJlcXVlc3RUeXBlRG9Ob3RJbmNsdWRlXTsKKyAgICBOU0Vycm9yICpyZXF1ZXN0RXJyb3IgPSBu
aWw7CisgICAgX1dLQXR0YWNobWVudEluZm8gKmluZm8gPSBbc2VsZiBzeW5jaHJvbm91c2x5UmVx
dWVzdEluZm9XaXRoT3B0aW9uczpvcHRpb25zLmdldCgpIGVycm9yOiZyZXF1ZXN0RXJyb3JdOwor
ICAgIEVYUEVDVF9UUlVFKCFpbmZvLmRhdGEpOworICAgIEVYUEVDVF9UUlVFKFtpbmZvLm5hbWUg
aXNFcXVhbFRvU3RyaW5nOm5hbWVdKTsKKyAgICBpZiAoIVtpbmZvLm5hbWUgaXNFcXVhbFRvU3Ry
aW5nOm5hbWVdKQorICAgICAgICBOU0xvZyhAIkV4cGVjdGVkIG5hbWU6ICVAIGJ1dCBvYnNlcnZl
ZDogJUAiLCBuYW1lLCBpbmZvLm5hbWUpOworCisgICAgRVhQRUNUX1RSVUUoW2luZm8uY29udGVu
dFR5cGUgaXNFcXVhbFRvU3RyaW5nOmNvbnRlbnRUeXBlXSk7CisgICAgaWYgKCFbaW5mby5jb250
ZW50VHlwZSBpc0VxdWFsVG9TdHJpbmc6Y29udGVudFR5cGVdKQorICAgICAgICBOU0xvZyhAIkV4
cGVjdGVkIHR5cGU6ICVAIGJ1dCBvYnNlcnZlZDogJUAiLCBjb250ZW50VHlwZSwgaW5mby5jb250
ZW50VHlwZSk7Cit9CisKKy0gKHZvaWQpZXhwZWN0UmVxdWVzdGVkRmlsZVBhdGhUb0V4aXN0OihC
T09MKXNob3VsZEV4aXN0Cit7CisgICAgYXV0byBvcHRpb25zID0gYWRvcHROUyhbW19XS0F0dGFj
aG1lbnRJbmZvUmVxdWVzdE9wdGlvbnMgYWxsb2NdIGluaXRdKTsKKyAgICBbb3B0aW9ucyBzZXRE
YXRhUmVxdWVzdFR5cGU6X1dLQXR0YWNobWVudERhdGFSZXF1ZXN0VHlwZURvTm90SW5jbHVkZV07
CisgICAgTlNFcnJvciAqcmVxdWVzdEVycm9yID0gbmlsOworICAgIF9XS0F0dGFjaG1lbnRJbmZv
ICppbmZvID0gW3NlbGYgc3luY2hyb25vdXNseVJlcXVlc3RJbmZvV2l0aE9wdGlvbnM6b3B0aW9u
cy5nZXQoKSBlcnJvcjomcmVxdWVzdEVycm9yXTsKKyAgICBFWFBFQ1RfVFJVRSghaW5mby5kYXRh
KTsKKyAgICBpZiAoc2hvdWxkRXhpc3QpCisgICAgICAgIEVYUEVDVF9HVChpbmZvLmZpbGVQYXRo
Lmxlbmd0aCwgMFUpOworICAgIGVsc2UKKyAgICAgICAgRVhQRUNUX0VRKGluZm8uZmlsZVBhdGgu
bGVuZ3RoLCAwVSk7Cit9CisKIEBlbmQKIAogI3ByYWdtYSBtYXJrIC0gUGxhdGZvcm0gdGVzdGlu
ZyBoZWxwZXIgZnVuY3Rpb25zCkBAIC00MzEsNiArNDcwLDggQEAgVEVTVChXS0F0dGFjaG1lbnRU
ZXN0cywgQXR0YWNobWVudEVsZW1lbnRJbnNlcnRpb24pCiAgICAgfQogCiAgICAgW2ZpcnN0QXR0
YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTp0ZXN0SFRNTERhdGEoKV07CisgICAgW2Zp
cnN0QXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWRGaWxlUGF0aFRvRXhpc3Q6Tk9dOworICAgIFtm
aXJzdEF0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkVHlwZVRvQmU6QCJ0ZXh0L2h0bWwiIG5hbWU6
QCJmb28iXTsKIAogICAgIHsKICAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2Nv
cGUgc2NvcGUod2ViVmlldy5nZXQoKSk7CkBAIC00NjUsNiArNTA2LDggQEAgVEVTVChXS0F0dGFj
aG1lbnRUZXN0cywgQXR0YWNobWVudFVwZGF0ZXNXaGVuSW5zZXJ0aW5nQW5kRGVsZXRpbmdOZXds
aW5lKQogCiAgICAgW3dlYlZpZXcgZXhwZWN0VXBkYXRlc0FmdGVyQ29tbWFuZDpAIkRlbGV0ZUJh
Y2t3YXJkIiB3aXRoQXJndW1lbnQ6bmlsIGV4cGVjdGVkUmVtb3ZhbHM6QFtdIGV4cGVjdGVkSW5z
ZXJ0aW9uczpAW11dOwogICAgIFthdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZERhdGFUb0JlOnRl
c3RIVE1MRGF0YSgpXTsKKyAgICBbYXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWRGaWxlUGF0aFRv
RXhpc3Q6Tk9dOworICAgIFthdHRhY2htZW50IGV4cGVjdFJlcXVlc3RlZFR5cGVUb0JlOkAidGV4
dC9wbGFpbiIgbmFtZTpAImZvby50eHQiXTsKIAogICAgIFt3ZWJWaWV3IGV4cGVjdFVwZGF0ZXNB
ZnRlckNvbW1hbmQ6QCJEZWxldGVGb3J3YXJkIiB3aXRoQXJndW1lbnQ6bmlsIGV4cGVjdGVkUmVt
b3ZhbHM6QFthdHRhY2htZW50LmdldCgpXSBleHBlY3RlZEluc2VydGlvbnM6QFtdXTsKICAgICBb
YXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTpuaWxdOwpAQCAtNjE1LDE2ICs2NTgs
MjAgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgTXVsdGlwbGVTaW11bHRhbmVvdXNBdHRhY2ht
ZW50RGF0YVJlcXVlc3RzKQogICAgICAgICBhdHRhY2htZW50ID0gW3dlYlZpZXcgc3luY2hyb25v
dXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6QCJmb28udHh0IiBjb250ZW50VHlwZTpA
InRleHQvcGxhaW4iIGRhdGE6aHRtbERhdGEuZ2V0KCkgb3B0aW9uczpuaWxdOwogICAgICAgICBv
YnNlcnZlci5leHBlY3RBdHRhY2htZW50VXBkYXRlcyhAW10sIEBbYXR0YWNobWVudC5nZXQoKV0p
OwogICAgIH0KKworICAgIGF1dG8gcmVxdWVzdE9wdGlvbnMgPSBhZG9wdE5TKFtbX1dLQXR0YWNo
bWVudEluZm9SZXF1ZXN0T3B0aW9ucyBhbGxvY10gaW5pdF0pOworICAgIFtyZXF1ZXN0T3B0aW9u
cyBzZXREYXRhUmVxdWVzdFR5cGU6X1dLQXR0YWNobWVudERhdGFSZXF1ZXN0VHlwZUFsd2F5c0lu
Y2x1ZGVdOworCiAgICAgX19ibG9jayBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhRm9yRmlyc3RSZXF1
ZXN0OwogICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gZGF0YUZvclNlY29uZFJlcXVlc3Q7
CiAgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKLSAgICBbYXR0YWNobWVudCByZXF1ZXN0
RGF0YTpeKE5TRGF0YSAqZGF0YSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICBbYXR0YWNobWVudCBy
ZXF1ZXN0SW5mb1dpdGhPcHRpb25zOnJlcXVlc3RPcHRpb25zLmdldCgpIGNvbXBsZXRpb25IYW5k
bGVyOl4oX1dLQXR0YWNobWVudEluZm8gKmluZm8sIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAg
IEVYUEVDVF9UUlVFKCFlcnJvcik7Ci0gICAgICAgIGRhdGFGb3JGaXJzdFJlcXVlc3QgPSBkYXRh
OworICAgICAgICBkYXRhRm9yRmlyc3RSZXF1ZXN0ID0gaW5mby5kYXRhOwogICAgIH1dOwotICAg
IFthdHRhY2htZW50IHJlcXVlc3REYXRhOl4oTlNEYXRhICpkYXRhLCBOU0Vycm9yICplcnJvcikg
eworICAgIFthdHRhY2htZW50IHJlcXVlc3RJbmZvV2l0aE9wdGlvbnM6cmVxdWVzdE9wdGlvbnMu
Z2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihfV0tBdHRhY2htZW50SW5mbyAqaW5mbywgTlNFcnJv
ciAqZXJyb3IpIHsKICAgICAgICAgRVhQRUNUX1RSVUUoIWVycm9yKTsKLSAgICAgICAgZGF0YUZv
clNlY29uZFJlcXVlc3QgPSBkYXRhOworICAgICAgICBkYXRhRm9yU2Vjb25kUmVxdWVzdCA9IGlu
Zm8uZGF0YTsKICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgfV07CiAKQEAgLTk1Myw2ICsxMDAw
LDkgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0c01hYywgSW5zZXJ0UGFzdGVkRmlsZVVSTHNBc0F0
dGFjaG1lbnRzKQogICAgIEVYUEVDVF9XS19TVFJFUSgiaW1hZ2UvcG5nIiwgW3dlYlZpZXcgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2F0
dGFjaG1lbnQnKVsxXS5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSJdKTsKICAgICBFWFBFQ1RfV0tfU1RS
RVEoImljb24ucG5nIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2F0dGFjaG1lbnQnKVsxXS5nZXRBdHRyaWJ1dGUoJ3Rp
dGxlJykiXSk7CiAKKyAgICBmb3IgKF9XS0F0dGFjaG1lbnQgKmF0dGFjaG1lbnQgaW4gaW5zZXJ0
ZWRBdHRhY2htZW50cy5nZXQoKSkKKyAgICAgICAgW2F0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVk
RmlsZVBhdGhUb0V4aXN0OllFU107CisKICAgICB7CiAgICAgICAgIE9ic2VydmVBdHRhY2htZW50
VXBkYXRlc0ZvclNjb3BlIG9ic2VydmVyKHdlYlZpZXcuZ2V0KCkpOwogICAgICAgICBbd2ViVmll
dyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIlNlbGVjdEFsbCIgYXJndW1lbnQ6
bmlsXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330719</attachid>
            <date>2018-01-08 12:07:53 -0800</date>
            <delta_ts>2018-01-08 15:09:19 -0800</delta_ts>
            <desc>Remove AttachmentRequestOptions</desc>
            <filename>bug-181390-20180108120753.patch</filename>
            <type>text/plain</type>
            <size>40322</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2NDc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQ2NjZlYmEzMGFjM2Qw
NWFiMTc1ZDgyYmUyODI3ZWVmYjZjYTBjNC4uYjI4MGZhNjYzYzA2ZGU1NWU4NThkYjgxYjcwOWRh
ODliOTlkMzJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE4LTAxLTA4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50
IFN1cHBvcnRdIEV4cG9zZSBmaWxlIG5hbWUgYW5kIGNvbnRlbnQgdHlwZSBvZiBXS0F0dGFjaG1l
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTM5
MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYzMzY4Mzc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG5ldyBzdHJ1Y3RzIGluIEF0dGFjaG1l
bnRUeXBlcy5oIGFuZCByZWZhY3RvciBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnJlcXVlc3REYXRh
IHRvIHJlcXVlc3RJbmZvLiBTZWUgYmVsb3cKKyAgICAgICAgZm9yIG1vcmUgZGV0YWlscy4gQXVn
bWVudGVkIGV4aXN0aW5nIEFQSSB0ZXN0cyBpbiBXS0F0dGFjaG1lbnRUZXN0cy4KKworICAgICAg
ICAqIGh0bWwvQXR0YWNobWVudFR5cGVzLmg6CisKKyAgICAgICAgQWRkIGEgc3RydWN0IHRvIHJl
cHJlc2VudCBhIHNuYXBzaG90IG9mIGluZm9ybWF0aW9uIGFib3V0IGFuIGF0dGFjaG1lbnQgZWxl
bWVudC4KKworICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6cmVxdWVzdEluZm8pOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpyZXF1ZXN0RGF0YSk6IERlbGV0ZWQu
CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaDoKKworICAgICAgICBDaGFu
Z2UgcmVxdWVzdERhdGEgdG8gcmVxdWVzdEluZm8uIEluc3RlYWQgb2YgZmV0Y2hpbmcgYW5kIGRl
bGl2ZXJpbmcgZGF0YSB2aWEgY2FsbGJhY2ssIHJlcXVlc3RJbmZvIHJldHVybnMgYW4KKyAgICAg
ICAgQXR0YWNobWVudEluZm8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1Mu
bW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJBdHRhY2htZW50SW5mbzo6YWRkTGluZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJBdHRhY2htZW50SW5mbzo6YnVpbGRXcmFwcGVkTGluZXMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQXR0YWNobWVudEluZm86OmJ1aWxkU2luZ2xlTGlu
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJBdHRhY2htZW50SW5mbzo6UmVuZGVyQXR0YWNo
bWVudEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OmF0dGFjaG1lbnRC
YXNlbGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpwYWludEF0dGFjaG1lbnRJY29uKToK
KyAgICAgICAgKFdlYkNvcmU6OnBhaW50QXR0YWNobWVudFRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6cGFpbnRBdHRhY2htZW50UHJvZ3Jlc3MpOgorICAgICAgICAoV2ViQ29yZTo6YXR0YWNobWVu
dEJvcmRlclBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50QXR0
YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdHRhY2htZW50SW5mbzo6YWRkTGluZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdHRhY2htZW50SW5mbzo6YnVpbGRXcmFwcGVkTGlu
ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXR0YWNobWVudEluZm86OmJ1aWxkU2lu
Z2xlTGluZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdHRhY2htZW50SW5mbzo6QXR0
YWNobWVudEluZm8pOiBEZWxldGVkLgorCisgICAgICAgIFJlbmFtZSBBdHRhY2htZW50SW5mbyB0
byBSZW5kZXJBdHRhY2htZW50SW5mbyB0byByZXNvbHZlIGEgbmFtZSBjb25mbGljdCB3aXRoIHRo
ZSBuZXcgQXR0YWNobWVudEluZm8gc3RydWN0LgorCiAyMDE4LTAxLTA1ICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtBdHRhY2htZW50IFN1cHBvcnRd
IEFkZCBhIHdheSB0byB3cml0ZSBibG9iIGRhdGEgdG8gYSBmaWxlIFVSTCBmcm9tIHRoZSBVSSBw
cm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IGQ4NzZkZDZmZmNmY2FjZDJkYzkyZjY4ZmJlYzMyMzY4MTNhOWUw
ZDQuLjEyOTcyZjFkODFiNWM0ZDQ5MGU0YjYwYmU0NGRmZTM2ZjYzZWJjNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjQgQEAKKzIwMTgtMDEtMDggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0gRXhwb3NlIGZpbGUgbmFt
ZSBhbmQgY29udGVudCB0eXBlIG9mIFdLQXR0YWNobWVudAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxMzkwCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8zNjMzNjgzNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgLVtfV0tBdHRhY2htZW50IHJlcXVlc3RJbmZvOl0sIHdoaWNo
IGZldGNoZXMgYSBzbmFwc2hvdCBvZiB0aGUgYXR0YWNobWVudCdzIHN0YXRlLiBUaGlzIEFQSSBp
cworICAgICAgICBtZWFudCB0byBiZSBhIHJlcGxhY2VtZW50IGZvciAtcmVxdWVzdERhdGE6IHRo
YXQgcHJvdmlkZXMgYWRkaXRpb25hbCBtZXRhZGF0YSBhYm91dCB0aGUgYXR0YWNobWVudC4KKwor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAoaGVhZGVyc19m
b3JfdHlwZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8QXR0YWNobWVudEluZm8+OjplbmNvZGUpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEF0dGFjaG1lbnRJbmZvPjo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisKKyAgICAgICAgQWRkIElQQyBz
dXBwb3J0IGZvciBBdHRhY2htZW50SW5mby4gTm90ZSB0aGF0IGluc3RlYWQgb2YgdXNpbmcgKGVu
Y29kZXxkZWNvZGUpU2hhcmVkQnVmZmVyLCB3ZSBzZW5kIGFuZCByZWNlaXZlCisgICAgICAgIGRh
dGEgcmVmZXJlbmNlcyB0byB0aGUgc2hhcmVkIGJ1ZmZlci4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5jcHA6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnJlcXVl
c3RJbmZvKToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6cmVxdWVzdERhdGEpOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oOgorCisgICAgICAgIENo
YW5nZSByZXF1ZXN0RGF0YSB0byByZXF1ZXN0SW5mby4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLQXR0YWNobWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXR0YWNobWVudC5tbToKKyAgICAgICAgKC1bX1dLQXR0YWNobWVudEluZm8gaW5pdFdpdGhJ
bmZvOl0pOgorICAgICAgICAoLVtfV0tBdHRhY2htZW50SW5mbyBkYXRhXSk6CisgICAgICAgICgt
W19XS0F0dGFjaG1lbnRJbmZvIG5hbWVdKToKKyAgICAgICAgKC1bX1dLQXR0YWNobWVudEluZm8g
ZmlsZVBhdGhdKToKKyAgICAgICAgKC1bX1dLQXR0YWNobWVudEluZm8gY29udGVudFR5cGVdKToK
KyAgICAgICAgKC1bX1dLQXR0YWNobWVudCByZXF1ZXN0SW5mbzpdKToKKyAgICAgICAgKC1bX1dL
QXR0YWNobWVudCByZXF1ZXN0RGF0YTpdKToKKworICAgICAgICBJbXBsZW1lbnQgLXJlcXVlc3RJ
bmZvOiBieSBjYWxsaW5nIGludG8gQVBJQXR0YWNobWVudCwgYW5kIHJlaW1wbGVtZW50IC1yZXF1
ZXN0RGF0YTogaW4gdGVybXMgb2YgLXJlcXVlc3RJbmZvOi4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF0dGFj
aG1lbnRJbmZvQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVl
c3RBdHRhY2htZW50SW5mbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2hhcmVk
QnVmZmVyQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnJlcXVlc3RBdHRhY2htZW50RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW46CisKKyAgICAgICAgUmVuYW1lIHRoZSBTaGFyZWRCdWZmZXJDYWxsYmFjayBJUEMgbWVzc2Fn
ZSB0byBBdHRhY2htZW50SW5mb0NhbGxiYWNrLCBhbmQgbWFrZSBpdCBjb25kaXRpb25hbCBvbgor
ICAgICAgICBBVFRBQ0hNRU5UX0VMRU1FTlQuIFJlbmFtZSByZXF1ZXN0QXR0YWNobWVudERhdGEg
dG8gcmVxdWVzdEF0dGFjaG1lbnRJbmZvLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0QXR0YWNobWVu
dEluZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnZva2VTaGFyZWRCdWZmZXJDYWxs
YmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RBdHRhY2ht
ZW50RGF0YSk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVuYW1lIHJlcXVlc3RBdHRhY2htZW50RGF0
YSB0byByZXF1ZXN0QXR0YWNobWVudEluZm8gYW5kIGFkb3B0IEhUTUxBdHRhY2htZW50RWxlbWVu
dDo6cmVxdWVzdEluZm8uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAy
MDE4LTAxLTA1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmVzdHJpY3QgbmF2aWdhdGlvbi10aW1lIFdLV2Vic2l0ZURhdGFTdG9yZSBzd2Fw
cGluZyB0byBtYWluIGZyYW1lIG5hdmlnYXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0F0dGFjaG1lbnRUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdHRhY2htZW50
VHlwZXMuaAppbmRleCA1NjVkZTkxOGU3M2I3ODRkZWQwM2IwZWFhYjY5MzA4NzE3YWY4ZDk1Li44
OGMxODE3ZWFmMDRjZjFjYzE2NDY3ZjZhMTc3NmNmZDdkYzE0MjBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0F0dGFjaG1lbnRUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvQXR0YWNobWVudFR5cGVzLmgKQEAgLTI4LDkgKzI4LDEyIEBACiAjaWYgRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKIAogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNoYXJl
ZEJ1ZmZlcjsKKwogZW51bSBjbGFzcyBBdHRhY2htZW50RGlzcGxheU1vZGUgewogICAgIEF1dG8s
CiAgICAgSW5QbGFjZSwKQEAgLTU4LDYgKzYxLDEzIEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IGlubGluZSBzdGQ6Om9wdGlvbmFsPEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucz4gQXR0YWNobWVu
CiAgICAgcmV0dXJuIHt7IG1vZGUgfX07CiB9CiAKK3N0cnVjdCBBdHRhY2htZW50SW5mbyB7Cisg
ICAgU3RyaW5nIGNvbnRlbnRUeXBlOworICAgIFN0cmluZyBuYW1lOworICAgIFN0cmluZyBmaWxl
UGF0aDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworfTsKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAppbmRleCAxZjQ0NWU4
MDYzMjcwMGM3ZTg5NTBlNzM4MTA3MDk3YzVlMDBiNDI5Li42ZjA4NTQ1ZTIzZTAyNTJiNjJjZWZk
ZmNiZDAxODExOGEzODk0MTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
dHRhY2htZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNo
bWVudEVsZW1lbnQuY3BwCkBAIC0zMDYsMTIgKzMwNiwxNiBAQCB2b2lkIEhUTUxBdHRhY2htZW50
RWxlbWVudDo6cG9wdWxhdGVTaGFkb3dSb290SWZOZWNlc3NhcnkoKQogICAgIH0KIH0KIAotdm9p
ZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnJlcXVlc3REYXRhKEZ1bmN0aW9uPHZvaWQoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJik+JiYgY2FsbGJhY2spCit2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVu
dDo6cmVxdWVzdEluZm8oRnVuY3Rpb248dm9pZChjb25zdCBBdHRhY2htZW50SW5mbyYpPiYmIGNh
bGxiYWNrKQogewotICAgIGlmIChtX2ZpbGUpCi0gICAgICAgIG1fYXR0YWNobWVudFJlYWRlcnMu
YXBwZW5kKEF0dGFjaG1lbnREYXRhUmVhZGVyOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoY2FsbGJh
Y2spKSk7Ci0gICAgZWxzZQotICAgICAgICBjYWxsYmFjayhudWxscHRyKTsKKyAgICBpZiAoIW1f
ZmlsZSkgeworICAgICAgICBjYWxsYmFjayh7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgbV9hdHRhY2htZW50UmVhZGVycy5hcHBlbmQoQXR0YWNobWVudERhdGFSZWFkZXI6OmNy
ZWF0ZSgqdGhpcywgW3Byb3RlY3RlZEZpbGUgPSBtYWtlUmVmKCptX2ZpbGUpLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXSAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKSB7CisgICAg
ICAgIGNhbGxiYWNrKHsgcHJvdGVjdGVkRmlsZS0+dHlwZSgpLCBwcm90ZWN0ZWRGaWxlLT5uYW1l
KCksIHByb3RlY3RlZEZpbGUtPnBhdGgoKSwgV1RGTW92ZShkYXRhKSB9KTsKKyAgICB9KSk7CiB9
CiAKIHZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpkZXN0cm95UmVhZGVyKEF0dGFjaG1lbnRE
YXRhUmVhZGVyJiBmaW5pc2hlZFJlYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRh
Y2htZW50RWxlbWVudC5oCmluZGV4IDE3OTVkMWZkMGI5Y2IwYjE5YzI3MTU1YjBjMTVlNTMyNWY0
MDA3NGQuLjE3MDBhMDhlMjJmM2FiYzI0YjdjMGQyNjk1MjY5MDhiYWVlYmE1ODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaApAQCAtNjQsNyArNjQsNyBA
QCBwdWJsaWM6CiAKICAgICBSZW5kZXJBdHRhY2htZW50KiBhdHRhY2htZW50UmVuZGVyZXIoKSBj
b25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVxdWVzdERhdGEoRnVuY3Rpb248dm9p
ZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT4mJiBjYWxsYmFjayk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZXF1ZXN0SW5mbyhGdW5jdGlvbjx2b2lkKGNvbnN0IEF0dGFjaG1lbnRJbmZvJik+
JiYgY2FsbGJhY2spOwogICAgIHZvaWQgZGVzdHJveVJlYWRlcihBdHRhY2htZW50RGF0YVJlYWRl
ciYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9T
Lm1tCmluZGV4IGQyZTY0MWU4MTNiMGQxODU3MDg3YjQ4ZjYwY2M3NTI3NTU0OGU2ZTQuLmYwOTlj
MjgwM2VjYWFjMzlmNjg1MGI2MDQ3YzJhZWZjYTUzZDcwMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KQEAgLTE0ODUsOCArMTQ4NSw4IEBAIHN0YXRpYyBV
SUNvbG9yICphdHRhY2htZW50VGl0bGVDb2xvcigpIHsgcmV0dXJuIFtnZXRVSUNvbG9yQ2xhc3Mo
KSBzeXN0ZW1HcmF5Q29sCiBzdGF0aWMgUmV0YWluUHRyPENURm9udFJlZj4gYXR0YWNobWVudFN1
YnRpdGxlRm9udCgpIHsgcmV0dXJuIGF0dGFjaG1lbnRUaXRsZUZvbnQoKTsgfQogc3RhdGljIFVJ
Q29sb3IgKmF0dGFjaG1lbnRTdWJ0aXRsZUNvbG9yKCkgeyByZXR1cm4gW2dldFVJQ29sb3JDbGFz
cygpIHN5c3RlbUdyYXlDb2xvcl07IH0KIAotc3RydWN0IEF0dGFjaG1lbnRJbmZvIHsKLSAgICBl
eHBsaWNpdCBBdHRhY2htZW50SW5mbyhjb25zdCBSZW5kZXJBdHRhY2htZW50Jik7CitzdHJ1Y3Qg
UmVuZGVyQXR0YWNobWVudEluZm8geworICAgIGV4cGxpY2l0IFJlbmRlckF0dGFjaG1lbnRJbmZv
KGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmKTsKIAogICAgIEZsb2F0UmVjdCBpY29uUmVjdDsKICAg
ICBGbG9hdFJlY3QgYXR0YWNobWVudFJlY3Q7CkBAIC0xNTE0LDcgKzE1MTQsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgYWRkTGluZShDVExpbmVSZWYpOwogfTsKIAotdm9pZCBBdHRhY2htZW50SW5m
bzo6YWRkTGluZShDVExpbmVSZWYgbGluZSkKK3ZvaWQgUmVuZGVyQXR0YWNobWVudEluZm86OmFk
ZExpbmUoQ1RMaW5lUmVmIGxpbmUpCiB7CiAgICAgQ0dSZWN0IGxpbmVCb3VuZHMgPSBDVExpbmVH
ZXRCb3VuZHNXaXRoT3B0aW9ucyhsaW5lLCBrQ1RMaW5lQm91bmRzRXhjbHVkZVR5cG9ncmFwaGlj
TGVhZGluZyk7CiAgICAgQ0dGbG9hdCB0cmFpbGluZ1doaXRlc3BhY2VXaWR0aCA9IENUTGluZUdl
dFRyYWlsaW5nV2hpdGVzcGFjZVdpZHRoKGxpbmUpOwpAQCAtMTUyOSw3ICsxNTI5LDcgQEAgdm9p
ZCBBdHRhY2htZW50SW5mbzo6YWRkTGluZShDVExpbmVSZWYgbGluZSkKICAgICBsaW5lcy5hcHBl
bmQobGFiZWxMaW5lKTsKIH0KIAotdm9pZCBBdHRhY2htZW50SW5mbzo6YnVpbGRXcmFwcGVkTGlu
ZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBDVEZvbnRSZWYgZm9udCwgVUlDb2xvciAqY29sb3IsIHVu
c2lnbmVkIG1heGltdW1MaW5lQ291bnQpCit2b2lkIFJlbmRlckF0dGFjaG1lbnRJbmZvOjpidWls
ZFdyYXBwZWRMaW5lcyhjb25zdCBTdHJpbmcmIHRleHQsIENURm9udFJlZiBmb250LCBVSUNvbG9y
ICpjb2xvciwgdW5zaWduZWQgbWF4aW11bUxpbmVDb3VudCkKIHsKICAgICBpZiAodGV4dC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE1NzgsNyArMTU3OCw3IEBAIHZvaWQgQXR0YWNo
bWVudEluZm86OmJ1aWxkV3JhcHBlZExpbmVzKGNvbnN0IFN0cmluZyYgdGV4dCwgQ1RGb250UmVm
IGZvbnQsIFVJQ29sCiAgICAgYWRkTGluZSh0cnVuY2F0ZWRMaW5lLmdldCgpKTsKIH0KIAotdm9p
ZCBBdHRhY2htZW50SW5mbzo6YnVpbGRTaW5nbGVMaW5lKGNvbnN0IFN0cmluZyYgdGV4dCwgQ1RG
b250UmVmIGZvbnQsIFVJQ29sb3IgKmNvbG9yKQordm9pZCBSZW5kZXJBdHRhY2htZW50SW5mbzo6
YnVpbGRTaW5nbGVMaW5lKGNvbnN0IFN0cmluZyYgdGV4dCwgQ1RGb250UmVmIGZvbnQsIFVJQ29s
b3IgKmNvbG9yKQogewogICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMTY1Myw3ICsxNjUzLDcgQEAgc3RhdGljIFJldGFpblB0cjxVSUltYWdlPiBpY29uRm9yQXR0
YWNobWVudChjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50LAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLUF0dGFjaG1lbnRJbmZvOjpBdHRhY2htZW50SW5mbyhjb25zdCBSZW5kZXJB
dHRhY2htZW50JiBhdHRhY2htZW50KQorUmVuZGVyQXR0YWNobWVudEluZm86OlJlbmRlckF0dGFj
aG1lbnRJbmZvKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCiB7CiAgICAgYXR0
YWNobWVudFJlY3QgPSBGbG9hdFJlY3QoMCwgMCwgYXR0YWNobWVudC53aWR0aCgpLnRvRmxvYXQo
KSwgYXR0YWNobWVudC5oZWlnaHQoKS50b0Zsb2F0KCkpOwogCkBAIC0xNzAzLDExICsxNzAzLDEx
IEBAIExheW91dFNpemUgUmVuZGVyVGhlbWVJT1M6OmF0dGFjaG1lbnRJbnRyaW5zaWNTaXplKGNv
bnN0IFJlbmRlckF0dGFjaG1lbnQmKSBjb25zCiAKIGludCBSZW5kZXJUaGVtZUlPUzo6YXR0YWNo
bWVudEJhc2VsaW5lKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpIGNvbnN0CiB7
Ci0gICAgQXR0YWNobWVudEluZm8gaW5mbyhhdHRhY2htZW50KTsKKyAgICBSZW5kZXJBdHRhY2ht
ZW50SW5mbyBpbmZvKGF0dGFjaG1lbnQpOwogICAgIHJldHVybiBpbmZvLmJhc2VsaW5lOwogfQog
Ci1zdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRJY29uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgQXR0YWNobWVudEluZm8mIGluZm8pCitzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRJY29u
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyQXR0YWNobWVudEluZm8mIGluZm8pCiB7
CiAgICAgaWYgKCFpbmZvLmljb24pCiAgICAgICAgIHJldHVybjsKQEAgLTE3MTksNyArMTcxOSw3
IEBAIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEljb24oR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBBdHRhY2htZW50SW5mbyYgaW5mbykKICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaWNvbklt
YWdlLCBpbmZvLmljb25SZWN0KTsKIH0KIAotc3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50VGV4
dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEF0dGFjaG1lbnRJbmZvJiBpbmZvKQorc3RhdGlj
IHZvaWQgcGFpbnRBdHRhY2htZW50VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJlbmRl
ckF0dGFjaG1lbnRJbmZvJiBpbmZvKQogewogICAgIGZvciAoY29uc3QgYXV0byYgbGluZSA6IGlu
Zm8ubGluZXMpIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzYXZlcihjb250
ZXh0KTsKQEAgLTE3MzIsNyArMTczMiw3IEBAIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudFRl
eHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBBdHRhY2htZW50SW5mbyYgaW5mbykKICAgICB9
CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudFByb2dyZXNzKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgQXR0YWNobWVudEluZm8mIGluZm8pCitzdGF0aWMgdm9pZCBwYWludEF0dGFj
aG1lbnRQcm9ncmVzcyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJlbmRlckF0dGFjaG1lbnRJ
bmZvJiBpbmZvKQogewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc2F2ZXIoY29udGV4
dCk7CiAKQEAgLTE3NTEsNyArMTc1MSw3IEBAIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudFBy
b2dyZXNzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQXR0YWNobWVudEluZm8mIGluCiAgICAg
Y29udGV4dC5maWxsUGF0aChwcm9ncmVzc1BhdGgpOwogfQogCi1zdGF0aWMgUGF0aCBhdHRhY2ht
ZW50Qm9yZGVyUGF0aChBdHRhY2htZW50SW5mbyYgaW5mbykKK3N0YXRpYyBQYXRoIGF0dGFjaG1l
bnRCb3JkZXJQYXRoKFJlbmRlckF0dGFjaG1lbnRJbmZvJiBpbmZvKQogewogICAgIFBhdGggYm9y
ZGVyUGF0aDsKICAgICBib3JkZXJQYXRoLmFkZFJvdW5kZWRSZWN0KGluZm8uYXR0YWNobWVudFJl
Y3QsIEZsb2F0U2l6ZShhdHRhY2htZW50Qm9yZGVyUmFkaXVzLCBhdHRhY2htZW50Qm9yZGVyUmFk
aXVzKSk7CkBAIC0xNzcyLDcgKzE3NzIsNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludEF0
dGFjaG1lbnQoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJbgogCiAg
ICAgY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCA9IGRvd25jYXN0PFJlbmRlckF0
dGFjaG1lbnQ+KHJlbmRlcmVyKTsKIAotICAgIEF0dGFjaG1lbnRJbmZvIGluZm8oYXR0YWNobWVu
dCk7CisgICAgUmVuZGVyQXR0YWNobWVudEluZm8gaW5mbyhhdHRhY2htZW50KTsKIAogICAgIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CiAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzYXZlcihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGM0ODQwZDk3MzNlYTM2ZTZjODJkNTk2NTkzZTFlNjNi
NDM2N2ViMjguLjY1Yzg5YWQ1YTkzZTcxMmVkYzE4MDk3MTRlODMzYjA2NDZmMjRhMjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMzY3LDYgKzM2Nyw3IEBA
IGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnU3RyaW5nJzogWyc8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+J10sCiAgICAgICAgICdQQUw6OlNlc3Npb25JRCc6IFsnPHBhbC9TZXNz
aW9uSUQuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyc6
IFsnPFdlYkNvcmUvQXR0YWNobWVudFR5cGVzLmg+J10sCisgICAgICAgICdXZWJDb3JlOjpBdHRh
Y2htZW50SW5mbyc6IFsnPFdlYkNvcmUvQXR0YWNobWVudFR5cGVzLmg+J10sCiAgICAgICAgICdX
ZWJDb3JlOjpBdXRvcGxheUV2ZW50RmxhZ3MnOiBbJzxXZWJDb3JlL0F1dG9wbGF5RXZlbnQuaD4n
XSwKICAgICAgICAgJ1dlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMnOiBbJzxXZWJDb3JlL0pTRE9N
RXhjZXB0aW9uSGFuZGxpbmcuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkZpbGVDaG9vc2VyU2V0
dGluZ3MnOiBbJzxXZWJDb3JlL0ZpbGVDaG9vc2VyLmg+J10sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA4MWM0ZTBmNTQ5MGQyZjBhYzFk
YWU4YmQ2MjY4ZjgwZTc4NmVlNTBiLi5mOGUzNTdiOGE5Y2VmOGExNDFiNjgyMWQxOTM5OGZjM2Y4
MWNjOTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNp
bmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F0dGFjaG1lbnRU
eXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0Jsb2JQYXJ0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZVF1ZXJ5
T3B0aW9ucy5oPgpAQCAtMjc3MSw0ICsyNzcyLDQzIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQcm9t
aXNlZEJsb2JJbmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFByb21pc2VkQmxvYkluZm8m
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQor
Cit2b2lkIEFyZ3VtZW50Q29kZXI8QXR0YWNobWVudEluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgQXR0YWNobWVudEluZm8mIGluZm8pCit7CisgICAgYm9vbCBkYXRhSXNOdWxs
ID0gIWluZm8uZGF0YTsKKyAgICBlbmNvZGVyIDw8IGluZm8uY29udGVudFR5cGUgPDwgaW5mby5u
YW1lIDw8IGluZm8uZmlsZVBhdGggPDwgZGF0YUlzTnVsbDsKKyAgICBpZiAoIWRhdGFJc051bGwp
IHsKKyAgICAgICAgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlIHsgaW5m
by5kYXRhLmdldCgpIH07CisgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8RGF0YVJlZmVy
ZW5jZSY+KGRhdGFSZWZlcmVuY2UpOworICAgIH0KK30KKworYm9vbCBBcmd1bWVudENvZGVyPEF0
dGFjaG1lbnRJbmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEF0dGFjaG1lbnRJbmZvJiBp
bmZvKQoreworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby5jb250ZW50VHlwZSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby5uYW1lKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLmZp
bGVQYXRoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBkYXRhSXNOdWxsID0g
dHJ1ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFJc051bGwpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoIWRhdGFJc051bGwpIHsKKyAgICAgICAgRGF0YVJlZmVyZW5j
ZSBkYXRhUmVmZXJlbmNlOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFSZWZlcmVu
Y2UpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpbmZvLmRhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXpl
KCkpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCisjZW5kaWYgLy8gRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKKwogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGY1M2RlZDJjYjUyODhkYWU2ZDlh
MzdlMmRiMjhmYWQ1MDg0YmJjYmYuLjRhMGQ5NDAxMTc5OWI3MzdhNTcxYzAwOWY3NzRiMDFjNmM5
NDc5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CkBAIC04OSw2ICs4OSw3IEBAIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogY2xhc3MgVXNl
clN0eWxlU2hlZXQ7CiBjbGFzcyBVUkw7CiAKK3N0cnVjdCBBdHRhY2htZW50SW5mbzsKIHN0cnVj
dCBDYWNoZVF1ZXJ5T3B0aW9uczsKIHN0cnVjdCBDb21wb3NpdGlvblVuZGVybGluZTsKIHN0cnVj
dCBEaWN0YXRpb25BbHRlcm5hdGl2ZTsKQEAgLTY4OSw2ICs2OTAsMTUgQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQcm9taXNlZEJsb2JJbmZvPiB7CiAgICAgc3Rh
dGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpQcm9taXNlZEJsb2JJbmZvJik7CiB9
OwogCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKwordGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpBdHRhY2htZW50SW5mbz4geworICAgIHN0YXRpYyB2b2lk
IGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6QXR0YWNobWVudEluZm8mKTsKKyAgICBz
dGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OkF0dGFjaG1lbnRJbmZvJik7Cit9
OworCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSVBDCiAKIG5hbWVzcGFjZSBXVEYgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4IDg1YThh
M2U4YTVmMDY5NjlmMzQyMDMzMjQ0ZTlhMDc3YjUxOTAwMGEuLjA0ZTA3MTdlM2M3ZjMyYWM5NmM5
N2ZmODk5MGI1ZmEzY2ZmMjljZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQXR0YWNobWVudC5jcHAKQEAgLTQ4LDEyICs0OCwxMiBAQCBBdHRhY2htZW50Ojp+QXR0YWNo
bWVudCgpCiB7CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6cmVxdWVzdERhdGEoRnVuY3Rpb248dm9p
ZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJiBjYWxsYmFjaykKK3ZvaWQgQXR0YWNobWVudDo6cmVxdWVzdEluZm8oRnVuY3Rpb248
dm9pZChjb25zdCBXZWJDb3JlOjpBdHRhY2htZW50SW5mbyYsIFdlYktpdDo6Q2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKG1fd2ViUGFnZSkKLSAgICAgICAgbV93
ZWJQYWdlLT5yZXF1ZXN0QXR0YWNobWVudERhdGEobV9pZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CisgICAgICAgIG1fd2ViUGFnZS0+cmVxdWVzdEF0dGFjaG1lbnRJbmZvKG1faWRlbnRp
ZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwogICAgIGVsc2UKLSAgICAgICAgY2FsbGJhY2sobnVs
bHB0ciwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsK
KyAgICAgICAgY2FsbGJhY2soeyB9LCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVy
V2FzSW52YWxpZGF0ZWQpOwogfQogCiB2b2lkIEF0dGFjaG1lbnQ6OnNldERpc3BsYXlPcHRpb25z
KFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyBvcHRpb25zLCBGdW5jdGlvbjx2b2lk
KFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAppbmRleCBkMjZmMmVmNzY4YmVkNzQ4NTk4
MjgwYTM5YzE0MzBiYmUxNTljNGZmLi4yNjFkMTQzOTUyMTMxNzgwM2MyYTA3OTcwMWNjOGU4NzFh
OGNjNDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNo
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgK
QEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIHN0cnVjdCBBdHRhY2htZW50RGlzcGxheU9wdGlvbnM7CitzdHJ1Y3QgQXR0YWNobWVudElu
Zm87CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDksNyArNTAsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+QXR0YWNobWVudCgpOwogCiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KLSAgICB2b2lkIHJlcXVlc3RE
YXRhKEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIFdlYktpdDo6
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgcmVxdWVzdEluZm8oRnVuY3Rpb248
dm9pZChjb25zdCBXZWJDb3JlOjpBdHRhY2htZW50SW5mbyYsIFdlYktpdDo6Q2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYpOwogICAgIHZvaWQgc2V0RGlzcGxheU9wdGlvbnMoV2ViQ29yZTo6QXR0YWNo
bWVudERpc3BsYXlPcHRpb25zLCBGdW5jdGlvbjx2b2lkKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYpOwogICAgIHZvaWQgc2V0RGF0YUFuZENvbnRlbnRUeXBlKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFdURjo6U3RyaW5nJiBuZXdDb250ZW50VHlwZSwgY29uc3QgV1RGOjpT
dHJpbmcmIG5ld0ZpbGVuYW1lLCBGdW5jdGlvbjx2b2lkKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0F0dGFjaG1lbnQuaAppbmRleCAyMTBjYTBlZWE0YjdiM2M2ZTJmNTRlZWQ4N2U2M2U3Y2FmZDRi
M2YyLi5kMjViNTJhYThjMjUwOTg4OWIwYjNhZTAwMTlhYzc2MzI2YjNkYWQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50LmgKQEAgLTQy
LDExICs0MiwyMSBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpCiBAcHJvcGVydHkgKG5vbmF0b21pYykgX1dLQXR0YWNobWVudERpc3BsYXlN
b2RlIG1vZGU7CiBAZW5kCiAKK1dLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSkKK0BpbnRlcmZhY2UgX1dLQXR0YWNobWVudEluZm8gOiBOU09iamVj
dAorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqY29udGVudFR5cGU7
CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpuYW1lOworQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqZmlsZVBhdGg7CitAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHksIG51bGxhYmxlKSBOU0RhdGEgKmRhdGE7CitAZW5kCisKIFdL
X0NMQVNTX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkKIEBp
bnRlcmZhY2UgX1dLQXR0YWNobWVudCA6IE5TT2JqZWN0CistICh2b2lkKXJlcXVlc3RJbmZvOih2
b2lkKF4pKF9XS0F0dGFjaG1lbnRJbmZvICogX051bGxhYmxlLCBOU0Vycm9yICogX051bGxhYmxl
KSljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpcmVxdWVzdERhdGE6KHZvaWQoXikoTlNEYXRh
ICogX051bGxhYmxlLCBOU0Vycm9yICogX051bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcjsKIC0g
KHZvaWQpc2V0RGlzcGxheU9wdGlvbnM6KF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyAqKW9w
dGlvbnMgY29tcGxldGlvbjoodm9pZCheIF9OdWxsYWJsZSkoTlNFcnJvciAqIF9OdWxsYWJsZSkp
Y29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKXNldERhdGE6KE5TRGF0YSAqKWRhdGEgbmV3Q29u
dGVudFR5cGU6KG51bGxhYmxlIE5TU3RyaW5nICopbmV3Q29udGVudFR5cGUgbmV3RmlsZW5hbWU6
KG51bGxhYmxlIE5TU3RyaW5nICopbmV3RmlsZW5hbWUgY29tcGxldGlvbjoodm9pZCheIF9OdWxs
YWJsZSkoTlNFcnJvciAqIF9OdWxsYWJsZSkpY29tcGxldGlvbkhhbmRsZXI7CitAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICp1bmlxdWVJZGVudGlmaWVyOwogQGVuZAog
CiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0KaW5kZXggOTM5Y2M4NzIyNGU1NTA3ZWExOWM4Zjc1
NjU1MjRiOTZjMzAwZGQ0NC4uYmFlYjMxM2JhY2VlODljMTQzMzBjNzdiZDgzMWFmYzMzMDE2ZTg3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFj
aG1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFj
aG1lbnQubW0KQEAgLTY5LDYgKzY5LDQ4IEBAIC0gKFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5
T3B0aW9ucyljb3JlRGlzcGxheU9wdGlvbnMKIAogQGVuZAogCitAaW1wbGVtZW50YXRpb24gX1dL
QXR0YWNobWVudEluZm8geworICAgIFJldGFpblB0cjxOU0RhdGE+IF9kYXRhOworICAgIFJldGFp
blB0cjxOU1N0cmluZz4gX25hbWU7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfZmlsZVBhdGg7
CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfY29udGVudFR5cGU7Cit9CisKKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aEluZm86KGNvbnN0IFdlYkNvcmU6OkF0dGFjaG1lbnRJbmZvJilpbmZvCit7
CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisK
KyAgICBfZGF0YSA9IGluZm8uZGF0YSA/IGluZm8uZGF0YS0+Y3JlYXRlTlNEYXRhKCkgOiBuaWw7
CisgICAgX2NvbnRlbnRUeXBlID0gYWRvcHROUyhbKE5TU3RyaW5nICopaW5mby5jb250ZW50VHlw
ZSA/OiBAIiIgY29weV0pOworICAgIF9uYW1lID0gYWRvcHROUyhbKE5TU3RyaW5nICopaW5mby5u
YW1lID86IEAiIiBjb3B5XSk7CisgICAgX2ZpbGVQYXRoID0gYWRvcHROUyhbKE5TU3RyaW5nICop
aW5mby5maWxlUGF0aCA/OiBAIiIgY29weV0pOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0g
KE5TRGF0YSAqKWRhdGEKK3sKKyAgICByZXR1cm4gX2RhdGEuZ2V0KCk7Cit9CisKKy0gKE5TU3Ry
aW5nICopbmFtZQoreworICAgIHJldHVybiBfbmFtZS5nZXQoKTsKK30KKworLSAoTlNTdHJpbmcg
KilmaWxlUGF0aAoreworICAgIHJldHVybiBfZmlsZVBhdGguZ2V0KCk7Cit9CisKKy0gKE5TU3Ry
aW5nICopY29udGVudFR5cGUKK3sKKyAgICByZXR1cm4gX2NvbnRlbnRUeXBlLmdldCgpOworfQor
CitAZW5kCisKIEBpbXBsZW1lbnRhdGlvbiBfV0tBdHRhY2htZW50CiAKIC0gKEFQSTo6T2JqZWN0
JilfYXBpT2JqZWN0CkBAIC04MSwxOSArMTIzLDI5IEBAIC0gKEJPT0wpaXNFcXVhbDooaWQpb2Jq
ZWN0CiAgICAgcmV0dXJuIFtvYmplY3QgaXNLaW5kT2ZDbGFzczpbX1dLQXR0YWNobWVudCBjbGFz
c11dICYmIFtzZWxmLnVuaXF1ZUlkZW50aWZpZXIgaXNFcXVhbDpbKF9XS0F0dGFjaG1lbnQgKilv
YmplY3QgdW5pcXVlSWRlbnRpZmllcl1dOwogfQogCi0tICh2b2lkKXJlcXVlc3REYXRhOih2b2lk
KF4pKE5TRGF0YSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKXJlcXVl
c3RJbmZvOih2b2lkKF4pKF9XS0F0dGFjaG1lbnRJbmZvICosIE5TRXJyb3IgKikpY29tcGxldGlv
bkhhbmRsZXIKIHsKLSAgICBfYXR0YWNobWVudC0+cmVxdWVzdERhdGEoWyBjYXB0dXJlZEJsb2Nr
ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSBdIChSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBidWZmZXIsIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICBfYXR0
YWNobWVudC0+cmVxdWVzdEluZm8oW2NhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxl
dGlvbkhhbmRsZXIpXSAoY29uc3QgV2ViQ29yZTo6QXR0YWNobWVudEluZm8mIGluZm8sIENhbGxi
YWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgaWYgKCFjYXB0dXJlZEJsb2NrKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChidWZmZXIgJiYgZXJyb3IgPT0gQ2FsbGJh
Y2tCYXNlOjpFcnJvcjo6Tm9uZSkKLSAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soYnVmZmVyLT5j
cmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpLCBuaWwpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBjYXB0dXJlZEJsb2NrKG5pbCwgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JE
b21haW4gY29kZToxIHVzZXJJbmZvOm5pbF0pOworICAgICAgICBpZiAoZXJyb3IgIT0gQ2FsbGJh
Y2tCYXNlOjpFcnJvcjo6Tm9uZSkgeworICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIFtO
U0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvcldlYlZpZXdJ
bnZhbGlkYXRlZCB1c2VySW5mbzpuaWxdKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIGF1dG8gYXR0YWNobWVudEluZm8gPSBhZG9wdE5TKFtbX1dLQXR0YWNobWVu
dEluZm8gYWxsb2NdIGluaXRXaXRoSW5mbzppbmZvXSk7CisgICAgICAgIGNhcHR1cmVkQmxvY2so
YXR0YWNobWVudEluZm8uZ2V0KCksIG5pbCk7CiAgICAgfSk7CiB9CiAKKy0gKHZvaWQpcmVxdWVz
dERhdGE6KHZvaWQoXikoTlNEYXRhICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKK3sK
KyAgICBbc2VsZiByZXF1ZXN0SW5mbzpbcHJvdGVjdGVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29t
cGxldGlvbkhhbmRsZXIpXSAoX1dLQXR0YWNobWVudEluZm8gKmluZm8sIE5TRXJyb3IgKmVycm9y
KSB7CisgICAgICAgIHByb3RlY3RlZEJsb2NrKGluZm8uZGF0YSwgZXJyb3IpOworICAgIH1dOwor
fQorCiAtICh2b2lkKXNldERpc3BsYXlPcHRpb25zOihfV0tBdHRhY2htZW50RGlzcGxheU9wdGlv
bnMgKilvcHRpb25zIGNvbXBsZXRpb246KHZvaWQoXikoTlNFcnJvciAqKSljb21wbGV0aW9uSGFu
ZGxlcgogewogICAgIGF1dG8gY29yZU9wdGlvbnMgPSBvcHRpb25zID8gb3B0aW9ucy5jb3JlRGlz
cGxheU9wdGlvbnMgOiBXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgeyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZTEwYTJlYjMxYjdmZTdl
OTJlNWQ4M2JjODA2M2Q2ODg0MzVlMmE1Yi4uNGQwYzZkMjY0NWZlMTgxNzEyN2NiZTUyYjEwOWU4
YjY3OTNmOTg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBA
IC01MjA2LDIzICs1MjA2LDIxIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2b2lkQ2FsbGJhY2soQ2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQogICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2soKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OnNoYXJlZEJ1ZmZlckNhbGxiYWNrKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwgYm9vbCBpc051bGwsIENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCit2b2lkIFdlYlBhZ2VQcm94
eTo6YXR0YWNobWVudEluZm9DYWxsYmFjayhjb25zdCBXZWJDb3JlOjpBdHRhY2htZW50SW5mbyYg
aW5mbywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewotICAgIGF1dG8gY2FsbGJhY2sgPSBtX2Nh
bGxiYWNrcy50YWtlPFNoYXJlZEJ1ZmZlckNhbGxiYWNrPihjYWxsYmFja0lEKTsKKyAgICBhdXRv
IGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxBdHRhY2htZW50SW5mb0NhbGxiYWNrPihjYWxs
YmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGlzTnVsbCkgewotICAgICAg
ICBBU1NFUlQoZGF0YVJlZmVyZW5jZS5pc0VtcHR5KCkpOwotICAgICAgICBjYWxsYmFjay0+cGVy
Zm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKG51bGxwdHIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXpl
KCkpKTsKKyAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKGluZm8p
OwogfQogCisjZW5kaWYKKwogdm9pZCBXZWJQYWdlUHJveHk6OmRhdGFDYWxsYmFjayhjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
IHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxEYXRhQ2FsbGJhY2s+KGNh
bGxiYWNrSUQpOwpAQCAtNzIzNywxNSArNzIzNSwxNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5z
ZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IEF0dGFjaG1lbnRE
aQogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0QXR0YWNobWVu
dChpZGVudGlmaWVyLCBvcHRpb25zLCBmaWxlbmFtZSwgY29udGVudFR5cGUsIElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSB7ICZkYXRhIH0sIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QXR0YWNobWVudERhdGEoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QXR0
YWNobWVudEluZm8oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKGNvbnN0
IEF0dGFjaG1lbnRJbmZvJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2spCiB7CiAg
ICAgaWYgKCFpc1ZhbGlkKCkpIHsKLSAgICAgICAgY2FsbGJhY2sobnVsbHB0ciwgQ2FsbGJhY2tC
YXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CisgICAgICAgIGNhbGxiYWNrKHsgfSwg
Q2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QXR0
YWNobWVudERhdGEoaWRlbnRpZmllciwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBdHRhY2htZW50SW5mbyhpZGVu
dGlmaWVyLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0QXR0YWNobWVudERpc3BsYXlPcHRpb25zKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgQXR0
YWNobWVudERpc3BsYXlPcHRpb25zIG9wdGlvbnMsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CmluZGV4IDNkMmE3YzczNGJlOGJlMWNlYmQ0MGJiNDZiOWQ4ZTZmMGFlNWU1NWIuLmY0NWIwNTdj
ZTliMTE3ZGViMWRiNzdlM2RmNzk3ZDIwOGY4ODBlNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCkBAIC0xODMsNiArMTgzLDcgQEAgdXNpbmcgRmxvYXRCb3hFeHRlbnQg
PSBSZWN0RWRnZXM8ZmxvYXQ+OwogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgQXR0YWNobWVudERpc3BsYXlPcHRpb25zOworc3RydWN0
IEF0dGFjaG1lbnRJbmZvOwogfQogI2VuZGlmCiAKQEAgLTI0Nyw3ICsyNDgsMTAgQEAgdHlwZWRl
ZiBHZW5lcmljQ2FsbGJhY2s8dWludDY0X3Q+IFVuc2lnbmVkQ2FsbGJhY2s7CiB0eXBlZGVmIEdl
bmVyaWNDYWxsYmFjazxFZGl0aW5nUmFuZ2U+IEVkaXRpbmdSYW5nZUNhbGxiYWNrOwogdHlwZWRl
ZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgU3RyaW5nJj4gU3RyaW5nQ2FsbGJhY2s7CiB0eXBlZGVm
IEdlbmVyaWNDYWxsYmFjazxBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wsIGNvbnN0
IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmPiBTY3JpcHRWYWx1ZUNhbGxiYWNrOwotdHlwZWRl
ZiBHZW5lcmljQ2FsbGJhY2s8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IFNoYXJlZEJ1
ZmZlckNhbGxiYWNrOworCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKK3R5cGVkZWYg
R2VuZXJpY0NhbGxiYWNrPGNvbnN0IFdlYkNvcmU6OkF0dGFjaG1lbnRJbmZvJj4gQXR0YWNobWVu
dEluZm9DYWxsYmFjazsKKyNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQogdHlwZWRlZiBHZW5l
cmljQ2FsbGJhY2s8QVBJOjpFcnJvcio+IFByaW50RmluaXNoZWRDYWxsYmFjazsKQEAgLTEyNTMs
OSArMTI1NywxMCBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQog
ICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyYsIGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSwgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJiBkYXRhLCBGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKLSAgICB2
b2lkIHJlcXVlc3RBdHRhY2htZW50RGF0YShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIEZ1bmN0
aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RBdHRhY2htZW50SW5mbyhjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6QXR0YWNobWVudEluZm8mLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBzZXRBdHRhY2htZW50RGlzcGxheU9w
dGlvbnMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxh
eU9wdGlvbnMsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZv
aWQgc2V0QXR0YWNobWVudERhdGFBbmRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiYg
bmV3Q29udGVudFR5cGUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYmIG5ld0ZpbGVuYW1lLCBGdW5j
dGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIGF0dGFjaG1lbnRJ
bmZvQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6QXR0YWNobWVudEluZm8mLCBDYWxsYmFja0lEKTsK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQpAQCAtMTUxNiw3ICsx
NTIxLDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdm9pZENhbGxiYWNrKENhbGxiYWNrSUQpOwog
ICAgIHZvaWQgZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIENhbGxiYWNr
SUQpOwotICAgIHZvaWQgc2hhcmVkQnVmZmVyQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiwgYm9vbCBpc051bGwsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgaW1hZ2VDYWxsYmFjayhj
b25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgc3Ry
aW5nQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBpbnZhbGlk
YXRlU3RyaW5nQ2FsbGJhY2soQ2FsbGJhY2tJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggN2VhNmIyYjQ1YjE1YmFlMDdlMDI0
NWIxYzVhMWJlNDk5YjIxMmIyMS4uMzdjZmMwNzFjNWViNmE5YTk4ZWQ4M2RkZWQ4ZWNkNTMzZmRl
ZDkxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgpAQCAtMTU3LDcgKzE1Nyw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAg
ICAgIyBDYWxsYmFjayBtZXNzYWdlcwogICAgIFZvaWRDYWxsYmFjayhXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKICAgICBEYXRhQ2FsbGJhY2soSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3Vs
dERhdGEsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIFNoYXJlZEJ1ZmZlckNh
bGxiYWNrKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBib29sIGlzTnVsbCwgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpOwogICAgIEltYWdlQ2FsbGJhY2soV2ViS2l0OjpTaGFy
ZWFibGVCaXRtYXA6OkhhbmRsZSBiaXRtYXBIYW5kbGUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogICAgIFN0cmluZ0NhbGxiYWNrKFN0cmluZyByZXN1bHRTdHJpbmcsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEludmFsaWRhdGVTdHJpbmdDYWxsYmFjayhXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKQEAgLTE2Nyw2ICsxNjYsOSBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlUHJveHkgewogICAgIEVkaXRpbmdSYW5nZUNhbGxiYWNrKHN0cnVjdCBXZWJLaXQ6
OkVkaXRpbmdSYW5nZSByYW5nZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAg
VW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCByZXN1bHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogICAgIFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKFdlYkNvcmU6OkludFJl
Y3QgcmVjdCwgc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIGFjdHVhbFJhbmdlLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQor
ICAgIEF0dGFjaG1lbnRJbmZvQ2FsbGJhY2soc3RydWN0IFdlYkNvcmU6OkF0dGFjaG1lbnRJbmZv
IGluZm8sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKKyNlbmRpZgogI2lmIEVOQUJM
RShBUFBMSUNBVElPTl9NQU5JRkVTVCkKICAgICBBcHBsaWNhdGlvbk1hbmlmZXN0Q2FsbGJhY2so
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiBtYW5pZmVzdCwgV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNjZjODMxOWM4NzhiMGZmNjE4MjRlMDdk
NDQzNjE3MjFiMWVhMWFkMy4uZDA2YTdkOTRhNDBhY2VhMDc4ZjM1ZGU4MzFkOWIwZGZjNTMyM2Ey
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTU4NDgsMTQgKzU4NDgsNiBAQCB2b2lkIFdlYlBhZ2U6OnN0b3JhZ2VBY2Nlc3NSZXNwb25zZShi
b29sIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRleHRJZCkKIH0KICNlbmRpZgogCi12b2lkIFdl
YlBhZ2U6Omludm9rZVNoYXJlZEJ1ZmZlckNhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi17Ci0gICAgaWYgKGJ1ZmZlcikKLSAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaGFyZWRCdWZmZXJDYWxsYmFjayhJUEM6
OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgeyBidWZmZXIuZ2V0KCkgfSwgZmFsc2UsIGNhbGxi
YWNrSUQpKTsKLSAgICBlbHNlCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
U2hhcmVkQnVmZmVyQ2FsbGJhY2soeyB9LCB0cnVlLCBjYWxsYmFja0lEKSk7Ci19Ci0KICNpZiBF
TkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCiB2b2lkIFdlYlBhZ2U6Omluc2VydEF0dGFjaG1l
bnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBBdHRhY2htZW50RGlzcGxheU9wdGlv
bnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBjb250ZW50VHlwZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCkBAIC01ODY1LDE5ICs1ODU3LDE2IEBAIHZvaWQgV2ViUGFnZTo6aW5zZXJ0
QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IEF0dGFjaG1lbnREaXNw
bGF5CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJh
Y2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJlcXVlc3RBdHRhY2htZW50RGF0YShjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6
cmVxdWVzdEF0dGFjaG1lbnRJbmZvKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgQ2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogewogICAgIGF1dG8gYXR0YWNobWVudCA9IGF0dGFjaG1lbnRFbGVtZW50
V2l0aElkZW50aWZpZXIoaWRlbnRpZmllcik7CiAgICAgaWYgKCFhdHRhY2htZW50KSB7Ci0gICAg
ICAgIGludm9rZVNoYXJlZEJ1ZmZlckNhbGxiYWNrKHsgfSwgY2FsbGJhY2tJRCk7CisgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QXR0YWNobWVudEluZm9DYWxsYmFjayh7IH0s
IGNhbGxiYWNrSUQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF0dGFjaG1lbnQt
PnJlcXVlc3REYXRhKFtjYWxsYmFja0lELCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHByb3RlY3RlZEF0dGFjaG1lbnQgPSBXVEZNb3ZlKGF0dGFjaG1lbnQpXSAoUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpIHsKLSAgICAgICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgICAgIHBy
b3RlY3RlZFRoaXMtPmludm9rZVNoYXJlZEJ1ZmZlckNhbGxiYWNrKFdURk1vdmUoYnVmZmVyKSwg
Y2FsbGJhY2tJRCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmlu
dm9rZVNoYXJlZEJ1ZmZlckNhbGxiYWNrKHsgfSwgY2FsbGJhY2tJRCk7CisgICAgYXR0YWNobWVu
dC0+cmVxdWVzdEluZm8oW2NhbGxiYWNrSUQsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgcHJvdGVjdGVkQXR0YWNobWVudCA9IFdURk1vdmUoYXR0YWNobWVudCldIChjb25zdCBBdHRh
Y2htZW50SW5mbyYgaW5mbykgeworICAgICAgICBwcm90ZWN0ZWRUaGlzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkF0dGFjaG1lbnRJbmZvQ2FsbGJhY2soaW5mbywgY2FsbGJhY2tJRCkp
OwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKaW5kZXggZDhjMzdhNjZjYzVlYTgwYjVlYWEyOGM0MzkwMDkxMDY0MjVhOGFkNS4uZmNmYzQ4
OTFkZjRlMTgwNWNkZDM5MjcxM2ZiYmM2OTQwYWFjNjRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTA0Myw3ICsxMDQzLDcgQEAgcHVibGljOgog
CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICB2b2lkIGluc2VydEF0dGFjaG1l
bnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpBdHRhY2htZW50RGlz
cGxheU9wdGlvbnMmLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gY29udGVudFR5cGUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIENhbGxiYWNrSUQpOwot
ICAgIHZvaWQgcmVxdWVzdEF0dGFjaG1lbnREYXRhKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
Q2FsbGJhY2tJRCk7CisgICAgdm9pZCByZXF1ZXN0QXR0YWNobWVudEluZm8oY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHNldEF0dGFjaG1lbnREaXNwbGF5
T3B0aW9ucyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkF0dGFjaG1l
bnREaXNwbGF5T3B0aW9ucyYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgc2V0QXR0YWNobWVudERh
dGFBbmRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBuZXdDb250ZW50VHlwZSwgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IG5ld0ZpbGVuYW1lLCBDYWxsYmFja0lEKTsKICNlbmRpZgpAQCAtMTE2
Niw4ICsxMTY2LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3RvcmVTZXNzaW9uKGNvbnN0IFZl
Y3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+Jik7CiAgICAgdm9pZCBkaWRSZW1vdmVCYWNr
Rm9yd2FyZEl0ZW0odWludDY0X3QpOwogCi0gICAgdm9pZCBpbnZva2VTaGFyZWRCdWZmZXJDYWxs
YmFjayhSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBDYWxsYmFja0lEKTsKLQogI2lm
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgIHZvaWQgc2V0QWxsb3dzUmVtb3RlSW5zcGVj
dGlvbihib29sKTsKICAgICB2b2lkIHNldFJlbW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJpZGUoY29u
c3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA0ZTQzYmM3N2M2MWU3OThmMTFlNWU0M2RlZGM3OTdh
ZWM5YTM1ODYwLi5mMjUzZTQyMjJjMGE4Yjg1MjlhYjU1MDAxZDdjMzUxNzczNTBjOWQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KQEAgLTQ5NCw3ICs0OTQsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2Vp
dmVyIHsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgSW5zZXJ0QXR0YWNo
bWVudChTdHJpbmcgaWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5
T3B0aW9ucyBvcHRpb25zLCBTdHJpbmcgZmlsZW5hbWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBj
b250ZW50VHlwZSwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEsIFdlYktpdDo6Q2FsbGJhY2tJRCBj
YWxsYmFja0lEKQotICAgIFJlcXVlc3RBdHRhY2htZW50RGF0YShTdHJpbmcgaWRlbnRpZmllciwg
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgUmVxdWVzdEF0dGFjaG1lbnRJbmZv
KFN0cmluZyBpZGVudGlmaWVyLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBT
ZXRBdHRhY2htZW50RGlzcGxheU9wdGlvbnMoU3RyaW5nIGlkZW50aWZpZXIsIHN0cnVjdCBXZWJD
b3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgb3B0aW9ucywgV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiAgICAgU2V0QXR0YWNobWVudERhdGFBbmRDb250ZW50VHlwZShTdHJpbmcg
aWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEsIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBuZXdDb250ZW50VHlwZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG5ld0ZpbGVuYW1lLCBXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDIxNDhiNjBiYzQ1NTVhZDBiY2E5Zjc4N2Ux
YjI2NGNkNWU3YjA2NTguLjZjMTM0MmMyZTQwYmMxNzgxYmZjZmY0YTdlMTRjNGVjY2NhYzMxNGQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxOC0wMS0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KKworICAgICAgICBbQXR0YWNobWVudCBTdXBwb3J0XSBFeHBvc2UgZmlsZSBuYW1lIGFu
ZCBjb250ZW50IHR5cGUgb2YgV0tBdHRhY2htZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODEzOTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2
MzM2ODM3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkanVzdHMgc29tZSBleGlzdGluZyB0ZXN0cyBpbiBXS0F0dGFjaG1lbnRUZXN0cyB0byBleGVy
Y2lzZSAtcmVxdWVzdEluZm86LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbToKKyAgICAgICAgKC1bX1dLQXR0YWNobWVudCBz
eW5jaHJvbm91c2x5UmVxdWVzdEluZm86XSk6CisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgc3lu
Y2hyb25vdXNseVJlcXVlc3REYXRhOl0pOgorCisgICAgICAgIFJlaW1wbGVtZW50IHRoaXMgaW4g
dGVybXMgb2YgLXN5bmNocm9ub3VzbHlSZXF1ZXN0SW5mbzouCisKKyAgICAgICAgKC1bX1dLQXR0
YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOgorCiAyMDE4LTAxLTA1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVzdHJpY3QgbmF2aWdhdGlvbi10aW1lIFdLV2Vic2l0
ZURhdGFTdG9yZSBzd2FwcGluZyB0byBtYWluIGZyYW1lIG5hdmlnYXRpb25zCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3Rz
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRU
ZXN0cy5tbQppbmRleCA3NDM1NDdkM2M3N2FjZTkxMTU4NzZmNWM4NGE5ODM5ZGI2YzY4ZDZiLi5j
MDIxMDNhMjA1ZDczNGY2ZjEwY2NkZWNhOGMzMTZlMzY3NThlMzU1IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVz
dHMubW0KQEAgLTI3MSwxMyArMjcxLDEzIEBAIC0gKHZvaWQpc3luY2hyb25vdXNseVNldERpc3Bs
YXlPcHRpb25zOihfV0tBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgKilvcHRpb25zIGVyCiAgICAg
ICAgICplcnJvciA9IHJlc3VsdEVycm9yLmF1dG9yZWxlYXNlKCk7CiB9CiAKLS0gKE5TRGF0YSAq
KXN5bmNocm9ub3VzbHlSZXF1ZXN0RGF0YTooTlNFcnJvciAqKillcnJvcgorLSAoX1dLQXR0YWNo
bWVudEluZm8gKilzeW5jaHJvbm91c2x5UmVxdWVzdEluZm86KE5TRXJyb3IgKiopZXJyb3IKIHsK
LSAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0RhdGE+IHJlc3VsdDsKKyAgICBfX2Jsb2NrIFJldGFp
blB0cjxfV0tBdHRhY2htZW50SW5mbz4gcmVzdWx0OwogICAgIF9fYmxvY2sgUmV0YWluUHRyPE5T
RXJyb3I+IHJlc3VsdEVycm9yOwogICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7Ci0gICAg
W3NlbGYgcmVxdWVzdERhdGE6XihOU0RhdGEgKmRhdGEsIE5TRXJyb3IgKmVycm9yKSB7Ci0gICAg
ICAgIHJlc3VsdCA9IGRhdGE7CisgICAgW3NlbGYgcmVxdWVzdEluZm86XihfV0tBdHRhY2htZW50
SW5mbyAqaW5mbywgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgcmVzdWx0ID0gaW5mbzsKICAg
ICAgICAgcmVzdWx0RXJyb3IgPSBlcnJvcjsKICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgfV07
CkBAIC0yOTAsNiArMjkwLDExIEBAIC0gKE5TRGF0YSAqKXN5bmNocm9ub3VzbHlSZXF1ZXN0RGF0
YTooTlNFcnJvciAqKillcnJvcgogICAgIHJldHVybiByZXN1bHQuYXV0b3JlbGVhc2UoKTsKIH0K
IAorLSAoTlNEYXRhICopc3luY2hyb25vdXNseVJlcXVlc3REYXRhOihOU0Vycm9yICoqKWVycm9y
Cit7CisgICAgcmV0dXJuIFtzZWxmIHN5bmNocm9ub3VzbHlSZXF1ZXN0SW5mbzplcnJvcl0uZGF0
YTsKK30KKwogLSAodm9pZClzeW5jaHJvbm91c2x5U2V0RGF0YTooTlNEYXRhICopZGF0YSBuZXdD
b250ZW50VHlwZTooTlNTdHJpbmcgKiluZXdDb250ZW50VHlwZSBuZXdGaWxlbmFtZTooTlNTdHJp
bmcgKiluZXdGaWxlbmFtZSBlcnJvcjooTlNFcnJvciAqKillcnJvcgogewogICAgIF9fYmxvY2sg
UmV0YWluUHRyPE5TRXJyb3I+IHJlc3VsdEVycm9yOwpAQCAtMzA3LDEzICszMTIsMTQgQEAgLSAo
dm9pZClzeW5jaHJvbm91c2x5U2V0RGF0YTooTlNEYXRhICopZGF0YSBuZXdDb250ZW50VHlwZToo
TlNTdHJpbmcgKiluZXdDb250ZW4KIAogLSAodm9pZClleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZToo
TlNEYXRhICopZXhwZWN0ZWREYXRhCiB7Ci0gICAgTlNFcnJvciAqZGF0YVJlcXVlc3RFcnJvciA9
IG5pbDsKLSAgICBOU0RhdGEgKm9ic2VydmVkRGF0YSA9IFtzZWxmIHN5bmNocm9ub3VzbHlSZXF1
ZXN0RGF0YTomZGF0YVJlcXVlc3RFcnJvcl07Ci0gICAgQk9PTCBvYnNlcnZlZERhdGFJc0VxdWFs
VG9FeHBlY3RlZERhdGEgPSBbb2JzZXJ2ZWREYXRhIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRh
XSB8fCBvYnNlcnZlZERhdGEgPT0gZXhwZWN0ZWREYXRhOworICAgIE5TRXJyb3IgKnJlcXVlc3RF
cnJvciA9IG5pbDsKKyAgICBfV0tBdHRhY2htZW50SW5mbyAqaW5mbyA9IFtzZWxmIHN5bmNocm9u
b3VzbHlSZXF1ZXN0SW5mbzomcmVxdWVzdEVycm9yXTsKKworICAgIEJPT0wgb2JzZXJ2ZWREYXRh
SXNFcXVhbFRvRXhwZWN0ZWREYXRhID0gW2luZm8uZGF0YSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVk
RGF0YV0gfHwgaW5mby5kYXRhID09IGV4cGVjdGVkRGF0YTsKICAgICBFWFBFQ1RfVFJVRShvYnNl
cnZlZERhdGFJc0VxdWFsVG9FeHBlY3RlZERhdGEpOwogICAgIGlmICghb2JzZXJ2ZWREYXRhSXNF
cXVhbFRvRXhwZWN0ZWREYXRhKSB7Ci0gICAgICAgIE5TTG9nKEAiRXhwZWN0ZWQgZGF0YTogJUAg
YnV0IG9ic2VydmVkOiAlQCBmb3IgJUAiLCBbZXhwZWN0ZWREYXRhIHNob3J0RGVzY3JpcHRpb25d
LCBbb2JzZXJ2ZWREYXRhIHNob3J0RGVzY3JpcHRpb25dLCBzZWxmKTsKLSAgICAgICAgTlNMb2co
QCJPYnNlcnZlZCBlcnJvcjogJUAgd2hpbGUgcmVhZGluZyBkYXRhIGZvciAlQCIsIGRhdGFSZXF1
ZXN0RXJyb3IsIHNlbGYpOworICAgICAgICBOU0xvZyhAIkV4cGVjdGVkIGRhdGE6ICVAIGJ1dCBv
YnNlcnZlZDogJUAgZm9yICVAIiwgW2V4cGVjdGVkRGF0YSBzaG9ydERlc2NyaXB0aW9uXSwgW2lu
Zm8uZGF0YSBzaG9ydERlc2NyaXB0aW9uXSwgc2VsZik7CisgICAgICAgIE5TTG9nKEAiT2JzZXJ2
ZWQgZXJyb3I6ICVAIHdoaWxlIHJlYWRpbmcgZGF0YSBmb3IgJUAiLCByZXF1ZXN0RXJyb3IsIHNl
bGYpOwogICAgIH0KIH0KIApAQCAtNDMwLDcgKzQzNiwxMSBAQCBURVNUKFdLQXR0YWNobWVudFRl
c3RzLCBBdHRhY2htZW50RWxlbWVudEluc2VydGlvbikKICAgICAgICAgb2JzZXJ2ZXIuZXhwZWN0
QXR0YWNobWVudFVwZGF0ZXMoQFsgXSwgQFsgZmlyc3RBdHRhY2htZW50LmdldCgpIF0pOwogICAg
IH0KIAotICAgIFtmaXJzdEF0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6dGVzdEhU
TUxEYXRhKCldOworICAgIF9XS0F0dGFjaG1lbnRJbmZvICppbmZvID0gW2ZpcnN0QXR0YWNobWVu
dCBzeW5jaHJvbm91c2x5UmVxdWVzdEluZm86bmlsXTsKKyAgICBFWFBFQ1RfVFJVRShbaW5mby5k
YXRhIGlzRXF1YWxUb0RhdGE6dGVzdEhUTUxEYXRhKCldKTsKKyAgICBFWFBFQ1RfVFJVRShbaW5m
by5jb250ZW50VHlwZSBpc0VxdWFsVG9TdHJpbmc6QCJ0ZXh0L2h0bWwiXSk7CisgICAgRVhQRUNU
X1RSVUUoW2luZm8ubmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJmb28iXSk7CisgICAgRVhQRUNUX0VR
KGluZm8uZmlsZVBhdGgubGVuZ3RoLCAwVSk7CiAKICAgICB7CiAgICAgICAgIE9ic2VydmVBdHRh
Y2htZW50VXBkYXRlc0ZvclNjb3BlIHNjb3BlKHdlYlZpZXcuZ2V0KCkpOwpAQCAtNDY0LDcgKzQ3
NCwxMiBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzLCBBdHRhY2htZW50VXBkYXRlc1doZW5JbnNl
cnRpbmdBbmREZWxldGluZ05ld2xpbmUpCiAgICAgW3dlYlZpZXcgZXhwZWN0VXBkYXRlc0FmdGVy
Q29tbWFuZDpAIkluc2VydFBhcmFncmFwaCIgd2l0aEFyZ3VtZW50Om5pbCBleHBlY3RlZFJlbW92
YWxzOkBbXSBleHBlY3RlZEluc2VydGlvbnM6QFtdXTsKIAogICAgIFt3ZWJWaWV3IGV4cGVjdFVw
ZGF0ZXNBZnRlckNvbW1hbmQ6QCJEZWxldGVCYWNrd2FyZCIgd2l0aEFyZ3VtZW50Om5pbCBleHBl
Y3RlZFJlbW92YWxzOkBbXSBleHBlY3RlZEluc2VydGlvbnM6QFtdXTsKLSAgICBbYXR0YWNobWVu
dCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTp0ZXN0SFRNTERhdGEoKV07CisKKyAgICBfV0tBdHRh
Y2htZW50SW5mbyAqaW5mbyA9IFthdHRhY2htZW50IHN5bmNocm9ub3VzbHlSZXF1ZXN0SW5mbzpu
aWxdOworICAgIEVYUEVDVF9UUlVFKFtpbmZvLmRhdGEgaXNFcXVhbFRvRGF0YTp0ZXN0SFRNTERh
dGEoKV0pOworICAgIEVYUEVDVF9UUlVFKFtpbmZvLmNvbnRlbnRUeXBlIGlzRXF1YWxUb1N0cmlu
ZzpAInRleHQvcGxhaW4iXSk7CisgICAgRVhQRUNUX1RSVUUoW2luZm8ubmFtZSBpc0VxdWFsVG9T
dHJpbmc6QCJmb28udHh0Il0pOworICAgIEVYUEVDVF9FUShpbmZvLmZpbGVQYXRoLmxlbmd0aCwg
MFUpOwogCiAgICAgW3dlYlZpZXcgZXhwZWN0VXBkYXRlc0FmdGVyQ29tbWFuZDpAIkRlbGV0ZUZv
cndhcmQiIHdpdGhBcmd1bWVudDpuaWwgZXhwZWN0ZWRSZW1vdmFsczpAW2F0dGFjaG1lbnQuZ2V0
KCldIGV4cGVjdGVkSW5zZXJ0aW9uczpAW11dOwogICAgIFthdHRhY2htZW50IGV4cGVjdFJlcXVl
c3RlZERhdGFUb0JlOm5pbF07CkBAIC02MTgsMTMgKzYzMywxMyBAQCBURVNUKFdLQXR0YWNobWVu
dFRlc3RzLCBNdWx0aXBsZVNpbXVsdGFuZW91c0F0dGFjaG1lbnREYXRhUmVxdWVzdHMpCiAgICAg
X19ibG9jayBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhRm9yRmlyc3RSZXF1ZXN0OwogICAgIF9fYmxv
Y2sgUmV0YWluUHRyPE5TRGF0YT4gZGF0YUZvclNlY29uZFJlcXVlc3Q7CiAgICAgX19ibG9jayBi
b29sIGRvbmUgPSBmYWxzZTsKLSAgICBbYXR0YWNobWVudCByZXF1ZXN0RGF0YTpeKE5TRGF0YSAq
ZGF0YSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICBbYXR0YWNobWVudCByZXF1ZXN0SW5mbzpeKF9X
S0F0dGFjaG1lbnRJbmZvICppbmZvLCBOU0Vycm9yICplcnJvcikgewogICAgICAgICBFWFBFQ1Rf
VFJVRSghZXJyb3IpOwotICAgICAgICBkYXRhRm9yRmlyc3RSZXF1ZXN0ID0gZGF0YTsKKyAgICAg
ICAgZGF0YUZvckZpcnN0UmVxdWVzdCA9IGluZm8uZGF0YTsKICAgICB9XTsKLSAgICBbYXR0YWNo
bWVudCByZXF1ZXN0RGF0YTpeKE5TRGF0YSAqZGF0YSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICBb
YXR0YWNobWVudCByZXF1ZXN0SW5mbzpeKF9XS0F0dGFjaG1lbnRJbmZvICppbmZvLCBOU0Vycm9y
ICplcnJvcikgewogICAgICAgICBFWFBFQ1RfVFJVRSghZXJyb3IpOwotICAgICAgICBkYXRhRm9y
U2Vjb25kUmVxdWVzdCA9IGRhdGE7CisgICAgICAgIGRhdGFGb3JTZWNvbmRSZXF1ZXN0ID0gaW5m
by5kYXRhOwogICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9XTsKIApAQCAtOTUzLDYgKzk2OCwx
MSBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzTWFjLCBJbnNlcnRQYXN0ZWRGaWxlVVJMc0FzQXR0
YWNobWVudHMpCiAgICAgRVhQRUNUX1dLX1NUUkVRKCJpbWFnZS9wbmciLCBbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYXR0
YWNobWVudCcpWzFdLmdldEF0dHJpYnV0ZSgndHlwZScpIl0pOwogICAgIEVYUEVDVF9XS19TVFJF
USgiaWNvbi5wbmciLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9j
dW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYXR0YWNobWVudCcpWzFdLmdldEF0dHJpYnV0ZSgndGl0
bGUnKSJdKTsKIAorICAgIGZvciAoX1dLQXR0YWNobWVudCAqYXR0YWNobWVudCBpbiBpbnNlcnRl
ZEF0dGFjaG1lbnRzLmdldCgpKSB7CisgICAgICAgIF9XS0F0dGFjaG1lbnRJbmZvICppbmZvID0g
W2F0dGFjaG1lbnQgc3luY2hyb25vdXNseVJlcXVlc3RJbmZvOm5pbF07CisgICAgICAgIEVYUEVD
VF9HVChpbmZvLmZpbGVQYXRoLmxlbmd0aCwgMFUpOworICAgIH0KKwogICAgIHsKICAgICAgICAg
T2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7
CiAgICAgICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAiU2Vs
ZWN0QWxsIiBhcmd1bWVudDpuaWxdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330744</attachid>
            <date>2018-01-08 15:09:20 -0800</date>
            <delta_ts>2018-01-08 17:24:27 -0800</delta_ts>
            <desc>Add a URL message check in WebPageProxy</desc>
            <filename>bug-181390-20180108150920.patch</filename>
            <type>text/plain</type>
            <size>40406</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2NTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDc5NzAwMmJhNzRjMmE2
ZWY0YTkzMmRmZDAyYmFlMDJiNDhhMzVhZC4uZDcxYTY5ODhmYmU1ZWFmZjJlOTk4YjJhMWJiNDkz
NTBkODg1MTdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE4LTAxLTA4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50
IFN1cHBvcnRdIEV4cG9zZSBmaWxlIG5hbWUgYW5kIGNvbnRlbnQgdHlwZSBvZiBXS0F0dGFjaG1l
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTM5
MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYzMzY4Mzc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG5ldyBzdHJ1Y3RzIGluIEF0dGFjaG1l
bnRUeXBlcy5oIGFuZCByZWZhY3RvciBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnJlcXVlc3REYXRh
IHRvIHJlcXVlc3RJbmZvLiBTZWUgYmVsb3cKKyAgICAgICAgZm9yIG1vcmUgZGV0YWlscy4gQXVn
bWVudGVkIGV4aXN0aW5nIEFQSSB0ZXN0cyBpbiBXS0F0dGFjaG1lbnRUZXN0cy4KKworICAgICAg
ICAqIGh0bWwvQXR0YWNobWVudFR5cGVzLmg6CisKKyAgICAgICAgQWRkIGEgc3RydWN0IHRvIHJl
cHJlc2VudCBhIHNuYXBzaG90IG9mIGluZm9ybWF0aW9uIGFib3V0IGFuIGF0dGFjaG1lbnQgZWxl
bWVudC4KKworICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6cmVxdWVzdEluZm8pOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpyZXF1ZXN0RGF0YSk6IERlbGV0ZWQu
CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaDoKKworICAgICAgICBDaGFu
Z2UgcmVxdWVzdERhdGEgdG8gcmVxdWVzdEluZm8uIEluc3RlYWQgb2YgZmV0Y2hpbmcgYW5kIGRl
bGl2ZXJpbmcgZGF0YSB2aWEgY2FsbGJhY2ssIHJlcXVlc3RJbmZvIHJldHVybnMgYW4KKyAgICAg
ICAgQXR0YWNobWVudEluZm8uCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1Mu
bW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJBdHRhY2htZW50SW5mbzo6YWRkTGluZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJBdHRhY2htZW50SW5mbzo6YnVpbGRXcmFwcGVkTGluZXMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQXR0YWNobWVudEluZm86OmJ1aWxkU2luZ2xlTGlu
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJBdHRhY2htZW50SW5mbzo6UmVuZGVyQXR0YWNo
bWVudEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OmF0dGFjaG1lbnRC
YXNlbGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpwYWludEF0dGFjaG1lbnRJY29uKToK
KyAgICAgICAgKFdlYkNvcmU6OnBhaW50QXR0YWNobWVudFRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6cGFpbnRBdHRhY2htZW50UHJvZ3Jlc3MpOgorICAgICAgICAoV2ViQ29yZTo6YXR0YWNobWVu
dEJvcmRlclBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50QXR0
YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBdHRhY2htZW50SW5mbzo6YWRkTGluZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdHRhY2htZW50SW5mbzo6YnVpbGRXcmFwcGVkTGlu
ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXR0YWNobWVudEluZm86OmJ1aWxkU2lu
Z2xlTGluZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdHRhY2htZW50SW5mbzo6QXR0
YWNobWVudEluZm8pOiBEZWxldGVkLgorCisgICAgICAgIFJlbmFtZSBBdHRhY2htZW50SW5mbyB0
byBSZW5kZXJBdHRhY2htZW50SW5mbyB0byByZXNvbHZlIGEgbmFtZSBjb25mbGljdCB3aXRoIHRo
ZSBuZXcgQXR0YWNobWVudEluZm8gc3RydWN0LgorCiAyMDE4LTAxLTA4ICBKb2huIFdpbGFuZGVy
ICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3JhZ2UgQWNjZXNzIEFQSTogUmVt
b3ZlIGFjY2VzcyBmb3IgYWxsIGZyYW1lcyB1bmRlciBhIHBhZ2Ugd2hlbiB0aGUgcGFnZSBpcyBj
bG9zZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggMWQ1YjJiZTAzNTBkYzE0MGVkYmE1OGJjNDJiMGRhNzMyNDlhYTAz
ZC4uYjlmYTExODZmZGI0ZGEwNmRhODgxYTAzNDljNTIyZWMxZTExNWYxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw2NCBAQAorMjAxOC0wMS0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KKworICAgICAgICBbQXR0YWNobWVudCBTdXBwb3J0XSBFeHBvc2UgZmlsZSBuYW1l
IGFuZCBjb250ZW50IHR5cGUgb2YgV0tBdHRhY2htZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODEzOTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM2MzM2ODM3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBzdXBwb3J0IGZvciAtW19XS0F0dGFjaG1lbnQgcmVxdWVzdEluZm86XSwgd2hpY2gg
ZmV0Y2hlcyBhIHNuYXBzaG90IG9mIHRoZSBhdHRhY2htZW50J3Mgc3RhdGUuIFRoaXMgQVBJIGlz
CisgICAgICAgIG1lYW50IHRvIGJlIGEgcmVwbGFjZW1lbnQgZm9yIC1yZXF1ZXN0RGF0YTogdGhh
dCBwcm92aWRlcyBhZGRpdGlvbmFsIG1ldGFkYXRhIGFib3V0IHRoZSBhdHRhY2htZW50LgorCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgIChoZWFkZXJzX2Zv
cl90eXBlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxBdHRhY2htZW50SW5mbz46OmVuY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8QXR0YWNobWVudEluZm8+OjpkZWNvZGUpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKworICAgICAgICBBZGQgSVBDIHN1
cHBvcnQgZm9yIEF0dGFjaG1lbnRJbmZvLiBOb3RlIHRoYXQgaW5zdGVhZCBvZiB1c2luZyAoZW5j
b2RlfGRlY29kZSlTaGFyZWRCdWZmZXIsIHdlIHNlbmQgYW5kIHJlY2VpdmUKKyAgICAgICAgZGF0
YSByZWZlcmVuY2VzIHRvIHRoZSBzaGFyZWQgYnVmZmVyLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6cmVxdWVz
dEluZm8pOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpyZXF1ZXN0RGF0YSk6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisKKyAgICAgICAgQ2hh
bmdlIHJlcXVlc3REYXRhIHRvIHJlcXVlc3RJbmZvLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBdHRhY2htZW50Lm1tOgorICAgICAgICAoLVtfV0tBdHRhY2htZW50SW5mbyBpbml0V2l0aElu
Zm86XSk6CisgICAgICAgICgtW19XS0F0dGFjaG1lbnRJbmZvIGRhdGFdKToKKyAgICAgICAgKC1b
X1dLQXR0YWNobWVudEluZm8gbmFtZV0pOgorICAgICAgICAoLVtfV0tBdHRhY2htZW50SW5mbyBm
aWxlUGF0aF0pOgorICAgICAgICAoLVtfV0tBdHRhY2htZW50SW5mbyBjb250ZW50VHlwZV0pOgor
ICAgICAgICAoLVtfV0tBdHRhY2htZW50IHJlcXVlc3RJbmZvOl0pOgorICAgICAgICAoLVtfV0tB
dHRhY2htZW50IHJlcXVlc3REYXRhOl0pOgorCisgICAgICAgIEltcGxlbWVudCAtcmVxdWVzdElu
Zm86IGJ5IGNhbGxpbmcgaW50byBBUElBdHRhY2htZW50LCBhbmQgcmVpbXBsZW1lbnQgLXJlcXVl
c3REYXRhOiBpbiB0ZXJtcyBvZiAtcmVxdWVzdEluZm86LgorCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXR0YWNo
bWVudEluZm9DYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVz
dEF0dGFjaG1lbnRJbmZvKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaGFyZWRC
dWZmZXJDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
cmVxdWVzdEF0dGFjaG1lbnREYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bjoKKworICAgICAgICBSZW5hbWUgdGhlIFNoYXJlZEJ1ZmZlckNhbGxiYWNrIElQQyBtZXNzYWdl
IHRvIEF0dGFjaG1lbnRJbmZvQ2FsbGJhY2ssIGFuZCBtYWtlIGl0IGNvbmRpdGlvbmFsIG9uCisg
ICAgICAgIEFUVEFDSE1FTlRfRUxFTUVOVC4gUmVuYW1lIHJlcXVlc3RBdHRhY2htZW50RGF0YSB0
byByZXF1ZXN0QXR0YWNobWVudEluZm8uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RBdHRhY2htZW50
SW5mbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omludm9rZVNoYXJlZEJ1ZmZlckNhbGxi
YWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVzdEF0dGFjaG1l
bnREYXRhKTogRGVsZXRlZC4KKworICAgICAgICBSZW5hbWUgcmVxdWVzdEF0dGFjaG1lbnREYXRh
IHRvIHJlcXVlc3RBdHRhY2htZW50SW5mbyBhbmQgYWRvcHQgSFRNTEF0dGFjaG1lbnRFbGVtZW50
OjpyZXF1ZXN0SW5mby4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIw
MTgtMDEtMDggIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAg
U3RvcmFnZSBBY2Nlc3MgQVBJOiBSZW1vdmUgYWNjZXNzIGZvciBhbGwgZnJhbWVzIHVuZGVyIGEg
cGFnZSB3aGVuIHRoZSBwYWdlIGlzIGNsb3NlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9BdHRhY2htZW50VHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXR0YWNobWVudFR5
cGVzLmgKaW5kZXggNTY1ZGU5MThlNzNiNzg0ZGVkMDNiMGVhYWI2OTMwODcxN2FmOGQ5NS4uODhj
MTgxN2VhZjA0Y2YxY2MxNjQ2N2Y2YTE3NzZjZmQ3ZGMxNDIwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9BdHRhY2htZW50VHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0F0dGFjaG1lbnRUeXBlcy5oCkBAIC0yOCw5ICsyOCwxMiBAQAogI2lmIEVOQUJMRShBVFRBQ0hN
RU5UX0VMRU1FTlQpCiAKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRC
dWZmZXI7CisKIGVudW0gY2xhc3MgQXR0YWNobWVudERpc3BsYXlNb2RlIHsKICAgICBBdXRvLAog
ICAgIEluUGxhY2UsCkBAIC01OCw2ICs2MSwxMyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBp
bmxpbmUgc3RkOjpvcHRpb25hbDxBdHRhY2htZW50RGlzcGxheU9wdGlvbnM+IEF0dGFjaG1lbgog
ICAgIHJldHVybiB7eyBtb2RlIH19OwogfQogCitzdHJ1Y3QgQXR0YWNobWVudEluZm8geworICAg
IFN0cmluZyBjb250ZW50VHlwZTsKKyAgICBTdHJpbmcgbmFtZTsKKyAgICBTdHJpbmcgZmlsZVBh
dGg7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKK307CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKaW5kZXggZDM3MDhmYWQw
OWVlZGUzYWY2ODk1MjA0YzYxNmU2MWNkZDEwN2Y1ZS4uYTUyYmQxNDFhMDZlNmRlZDA0NDZhZmVk
M2FjYjU2NTNlY2ZjNGNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0
YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1l
bnRFbGVtZW50LmNwcApAQCAtMjk2LDEyICsyOTYsMTYgQEAgdm9pZCBIVE1MQXR0YWNobWVudEVs
ZW1lbnQ6OnBvcHVsYXRlU2hhZG93Um9vdElmTmVjZXNzYXJ5KCkKICAgICB9CiB9CiAKLXZvaWQg
SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpyZXF1ZXN0RGF0YShGdW5jdGlvbjx2b2lkKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYpPiYmIGNhbGxiYWNrKQordm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6
OnJlcXVlc3RJbmZvKEZ1bmN0aW9uPHZvaWQoY29uc3QgQXR0YWNobWVudEluZm8mKT4mJiBjYWxs
YmFjaykKIHsKLSAgICBpZiAobV9maWxlKQotICAgICAgICBtX2F0dGFjaG1lbnRSZWFkZXJzLmFw
cGVuZChBdHRhY2htZW50RGF0YVJlYWRlcjo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGNhbGxiYWNr
KSkpOwotICAgIGVsc2UKLSAgICAgICAgY2FsbGJhY2sobnVsbHB0cik7CisgICAgaWYgKCFtX2Zp
bGUpIHsKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIG1fYXR0YWNobWVudFJlYWRlcnMuYXBwZW5kKEF0dGFjaG1lbnREYXRhUmVhZGVyOjpjcmVh
dGUoKnRoaXMsIFtwcm90ZWN0ZWRGaWxlID0gbWFrZVJlZigqbV9maWxlKSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0gKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkgeworICAgICAg
ICBjYWxsYmFjayh7IHByb3RlY3RlZEZpbGUtPnR5cGUoKSwgcHJvdGVjdGVkRmlsZS0+bmFtZSgp
LCBwcm90ZWN0ZWRGaWxlLT5wYXRoKCksIFdURk1vdmUoZGF0YSkgfSk7CisgICAgfSkpOwogfQog
CiB2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6ZGVzdHJveVJlYWRlcihBdHRhY2htZW50RGF0
YVJlYWRlciYgZmluaXNoZWRSZWFkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBdHRhY2htZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNo
bWVudEVsZW1lbnQuaAppbmRleCBiMzIyM2ZhZDRhNjljNmYxNDc5N2M1OWRkZTg0MWJlZTNkMTQx
ZWM4Li5lODExYmY4MzBmOTMwZmNlZmY3YWI4NDBiNDZhZDU0MTFhYTU5ZjdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKQEAgLTY0LDcgKzY0LDcgQEAg
cHVibGljOgogCiAgICAgUmVuZGVyQXR0YWNobWVudCogYXR0YWNobWVudFJlbmRlcmVyKCkgY29u
c3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcXVlc3REYXRhKEZ1bmN0aW9uPHZvaWQo
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+JiYgY2FsbGJhY2spOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVxdWVzdEluZm8oRnVuY3Rpb248dm9pZChjb25zdCBBdHRhY2htZW50SW5mbyYpPiYm
IGNhbGxiYWNrKTsKICAgICB2b2lkIGRlc3Ryb3lSZWFkZXIoQXR0YWNobWVudERhdGFSZWFkZXIm
KTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bQppbmRleCBkMmU2NDFlODEzYjBkMTg1NzA4N2I0OGY2MGNjNzUyNzU1NDhlNmU0Li5mMDk5YzI4
MDNlY2FhYzM5ZjY4NTBiNjA0N2MyYWVmY2E1M2Q3MDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC0xNDg1LDggKzE0ODUsOCBAQCBzdGF0aWMgVUlD
b2xvciAqYXR0YWNobWVudFRpdGxlQ29sb3IoKSB7IHJldHVybiBbZ2V0VUlDb2xvckNsYXNzKCkg
c3lzdGVtR3JheUNvbAogc3RhdGljIFJldGFpblB0cjxDVEZvbnRSZWY+IGF0dGFjaG1lbnRTdWJ0
aXRsZUZvbnQoKSB7IHJldHVybiBhdHRhY2htZW50VGl0bGVGb250KCk7IH0KIHN0YXRpYyBVSUNv
bG9yICphdHRhY2htZW50U3VidGl0bGVDb2xvcigpIHsgcmV0dXJuIFtnZXRVSUNvbG9yQ2xhc3Mo
KSBzeXN0ZW1HcmF5Q29sb3JdOyB9CiAKLXN0cnVjdCBBdHRhY2htZW50SW5mbyB7Ci0gICAgZXhw
bGljaXQgQXR0YWNobWVudEluZm8oY29uc3QgUmVuZGVyQXR0YWNobWVudCYpOworc3RydWN0IFJl
bmRlckF0dGFjaG1lbnRJbmZvIHsKKyAgICBleHBsaWNpdCBSZW5kZXJBdHRhY2htZW50SW5mbyhj
b25zdCBSZW5kZXJBdHRhY2htZW50Jik7CiAKICAgICBGbG9hdFJlY3QgaWNvblJlY3Q7CiAgICAg
RmxvYXRSZWN0IGF0dGFjaG1lbnRSZWN0OwpAQCAtMTUxNCw3ICsxNTE0LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGFkZExpbmUoQ1RMaW5lUmVmKTsKIH07CiAKLXZvaWQgQXR0YWNobWVudEluZm86
OmFkZExpbmUoQ1RMaW5lUmVmIGxpbmUpCit2b2lkIFJlbmRlckF0dGFjaG1lbnRJbmZvOjphZGRM
aW5lKENUTGluZVJlZiBsaW5lKQogewogICAgIENHUmVjdCBsaW5lQm91bmRzID0gQ1RMaW5lR2V0
Qm91bmRzV2l0aE9wdGlvbnMobGluZSwga0NUTGluZUJvdW5kc0V4Y2x1ZGVUeXBvZ3JhcGhpY0xl
YWRpbmcpOwogICAgIENHRmxvYXQgdHJhaWxpbmdXaGl0ZXNwYWNlV2lkdGggPSBDVExpbmVHZXRU
cmFpbGluZ1doaXRlc3BhY2VXaWR0aChsaW5lKTsKQEAgLTE1MjksNyArMTUyOSw3IEBAIHZvaWQg
QXR0YWNobWVudEluZm86OmFkZExpbmUoQ1RMaW5lUmVmIGxpbmUpCiAgICAgbGluZXMuYXBwZW5k
KGxhYmVsTGluZSk7CiB9CiAKLXZvaWQgQXR0YWNobWVudEluZm86OmJ1aWxkV3JhcHBlZExpbmVz
KGNvbnN0IFN0cmluZyYgdGV4dCwgQ1RGb250UmVmIGZvbnQsIFVJQ29sb3IgKmNvbG9yLCB1bnNp
Z25lZCBtYXhpbXVtTGluZUNvdW50KQordm9pZCBSZW5kZXJBdHRhY2htZW50SW5mbzo6YnVpbGRX
cmFwcGVkTGluZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBDVEZvbnRSZWYgZm9udCwgVUlDb2xvciAq
Y29sb3IsIHVuc2lnbmVkIG1heGltdW1MaW5lQ291bnQpCiB7CiAgICAgaWYgKHRleHQuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CkBAIC0xNTc4LDcgKzE1NzgsNyBAQCB2b2lkIEF0dGFjaG1l
bnRJbmZvOjpidWlsZFdyYXBwZWRMaW5lcyhjb25zdCBTdHJpbmcmIHRleHQsIENURm9udFJlZiBm
b250LCBVSUNvbAogICAgIGFkZExpbmUodHJ1bmNhdGVkTGluZS5nZXQoKSk7CiB9CiAKLXZvaWQg
QXR0YWNobWVudEluZm86OmJ1aWxkU2luZ2xlTGluZShjb25zdCBTdHJpbmcmIHRleHQsIENURm9u
dFJlZiBmb250LCBVSUNvbG9yICpjb2xvcikKK3ZvaWQgUmVuZGVyQXR0YWNobWVudEluZm86OmJ1
aWxkU2luZ2xlTGluZShjb25zdCBTdHJpbmcmIHRleHQsIENURm9udFJlZiBmb250LCBVSUNvbG9y
ICpjb2xvcikKIHsKICAgICBpZiAodGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTE2NTMsNyArMTY1Myw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbkZvckF0dGFj
aG1lbnQoY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCwKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi1BdHRhY2htZW50SW5mbzo6QXR0YWNobWVudEluZm8oY29uc3QgUmVuZGVyQXR0
YWNobWVudCYgYXR0YWNobWVudCkKK1JlbmRlckF0dGFjaG1lbnRJbmZvOjpSZW5kZXJBdHRhY2ht
ZW50SW5mbyhjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50KQogewogICAgIGF0dGFj
aG1lbnRSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIGF0dGFjaG1lbnQud2lkdGgoKS50b0Zsb2F0KCks
IGF0dGFjaG1lbnQuaGVpZ2h0KCkudG9GbG9hdCgpKTsKIApAQCAtMTcwMywxMSArMTcwMywxMSBA
QCBMYXlvdXRTaXplIFJlbmRlclRoZW1lSU9TOjphdHRhY2htZW50SW50cmluc2ljU2l6ZShjb25z
dCBSZW5kZXJBdHRhY2htZW50JikgY29ucwogCiBpbnQgUmVuZGVyVGhlbWVJT1M6OmF0dGFjaG1l
bnRCYXNlbGluZShjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50KSBjb25zdAogewot
ICAgIEF0dGFjaG1lbnRJbmZvIGluZm8oYXR0YWNobWVudCk7CisgICAgUmVuZGVyQXR0YWNobWVu
dEluZm8gaW5mbyhhdHRhY2htZW50KTsKICAgICByZXR1cm4gaW5mby5iYXNlbGluZTsKIH0KIAot
c3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50SWNvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IEF0dGFjaG1lbnRJbmZvJiBpbmZvKQorc3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50SWNvbihH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJlbmRlckF0dGFjaG1lbnRJbmZvJiBpbmZvKQogewog
ICAgIGlmICghaW5mby5pY29uKQogICAgICAgICByZXR1cm47CkBAIC0xNzE5LDcgKzE3MTksNyBA
QCBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRJY29uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgQXR0YWNobWVudEluZm8mIGluZm8pCiAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmljb25JbWFn
ZSwgaW5mby5pY29uUmVjdCk7CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudFRleHQo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBBdHRhY2htZW50SW5mbyYgaW5mbykKK3N0YXRpYyB2
b2lkIHBhaW50QXR0YWNobWVudFRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJB
dHRhY2htZW50SW5mbyYgaW5mbykKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGxpbmUgOiBpbmZv
LmxpbmVzKSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc2F2ZXIoY29udGV4
dCk7CkBAIC0xNzMyLDcgKzE3MzIsNyBAQCBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRUZXh0
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQXR0YWNobWVudEluZm8mIGluZm8pCiAgICAgfQog
fQogCi1zdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRQcm9ncmVzcyhHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIEF0dGFjaG1lbnRJbmZvJiBpbmZvKQorc3RhdGljIHZvaWQgcGFpbnRBdHRhY2ht
ZW50UHJvZ3Jlc3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJBdHRhY2htZW50SW5m
byYgaW5mbykKIHsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHNhdmVyKGNvbnRleHQp
OwogCkBAIC0xNzUxLDcgKzE3NTEsNyBAQCBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRQcm9n
cmVzcyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEF0dGFjaG1lbnRJbmZvJiBpbgogICAgIGNv
bnRleHQuZmlsbFBhdGgocHJvZ3Jlc3NQYXRoKTsKIH0KIAotc3RhdGljIFBhdGggYXR0YWNobWVu
dEJvcmRlclBhdGgoQXR0YWNobWVudEluZm8mIGluZm8pCitzdGF0aWMgUGF0aCBhdHRhY2htZW50
Qm9yZGVyUGF0aChSZW5kZXJBdHRhY2htZW50SW5mbyYgaW5mbykKIHsKICAgICBQYXRoIGJvcmRl
clBhdGg7CiAgICAgYm9yZGVyUGF0aC5hZGRSb3VuZGVkUmVjdChpbmZvLmF0dGFjaG1lbnRSZWN0
LCBGbG9hdFNpemUoYXR0YWNobWVudEJvcmRlclJhZGl1cywgYXR0YWNobWVudEJvcmRlclJhZGl1
cykpOwpAQCAtMTc3Miw3ICsxNzcyLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRBdHRh
Y2htZW50KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SW4KIAogICAg
IGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQgPSBkb3duY2FzdDxSZW5kZXJBdHRh
Y2htZW50PihyZW5kZXJlcik7CiAKLSAgICBBdHRhY2htZW50SW5mbyBpbmZvKGF0dGFjaG1lbnQp
OworICAgIFJlbmRlckF0dGFjaG1lbnRJbmZvIGluZm8oYXR0YWNobWVudCk7CiAKICAgICBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc2F2ZXIoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQppbmRleCA3MDZkZjU2ZGM1M2YwZDhkODBhM2NmNGI0ZTBiYzQ0ZmQz
OGEyYTA5Li5hOGJjYzk3Y2Y1MGRhZmRhMDExNTc0ZDVhMjI2MmE5YWY2ZWIzYmJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTM2OCw2ICszNjgsNyBAQCBk
ZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1N0cmluZyc6IFsnPHd0Zi90ZXh0
L1dURlN0cmluZy5oPiddLAogICAgICAgICAnUEFMOjpTZXNzaW9uSUQnOiBbJzxwYWwvU2Vzc2lv
bklELmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMnOiBb
JzxXZWJDb3JlL0F0dGFjaG1lbnRUeXBlcy5oPiddLAorICAgICAgICAnV2ViQ29yZTo6QXR0YWNo
bWVudEluZm8nOiBbJzxXZWJDb3JlL0F0dGFjaG1lbnRUeXBlcy5oPiddLAogICAgICAgICAnV2Vi
Q29yZTo6QXV0b3BsYXlFdmVudEZsYWdzJzogWyc8V2ViQ29yZS9BdXRvcGxheUV2ZW50Lmg+J10s
CiAgICAgICAgICdXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJzogWyc8V2ViQ29yZS9KU0RPTUV4
Y2VwdGlvbkhhbmRsaW5nLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRp
bmdzJzogWyc8V2ViQ29yZS9GaWxlQ2hvb3Nlci5oPiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggODFjNGUwZjU0OTBkMmYwYWMxZGFl
OGJkNjI2OGY4MGU3ODZlZTUwYi4uZjhlMzU3YjhhOWNlZjhhMTQxYjY4MjFkMTkzOThmYzNmODFj
Yzk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5j
bHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdHRhY2htZW50VHlw
ZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9CbG9iUGFydC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVRdWVyeU9w
dGlvbnMuaD4KQEAgLTI3NzEsNCArMjc3Miw0MyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UHJvbWlz
ZWRCbG9iSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQcm9taXNlZEJsb2JJbmZvJgog
ICAgIHJldHVybiB0cnVlOwogfQogCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKwor
dm9pZCBBcmd1bWVudENvZGVyPEF0dGFjaG1lbnRJbmZvPjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IEF0dGFjaG1lbnRJbmZvJiBpbmZvKQoreworICAgIGJvb2wgZGF0YUlzTnVsbCA9
ICFpbmZvLmRhdGE7CisgICAgZW5jb2RlciA8PCBpbmZvLmNvbnRlbnRUeXBlIDw8IGluZm8ubmFt
ZSA8PCBpbmZvLmZpbGVQYXRoIDw8IGRhdGFJc051bGw7CisgICAgaWYgKCFkYXRhSXNOdWxsKSB7
CisgICAgICAgIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSB7IGluZm8u
ZGF0YS5nZXQoKSB9OworICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PERhdGFSZWZlcmVu
Y2UmPihkYXRhUmVmZXJlbmNlKTsKKyAgICB9Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxBdHRh
Y2htZW50SW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBBdHRhY2htZW50SW5mbyYgaW5m
bykKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8uY29udGVudFR5cGUpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8ubmFtZSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby5maWxl
UGF0aCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgZGF0YUlzTnVsbCA9IHRy
dWU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhSXNOdWxsKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKCFkYXRhSXNOdWxsKSB7CisgICAgICAgIERhdGFSZWZlcmVuY2Ug
ZGF0YVJlZmVyZW5jZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhUmVmZXJlbmNl
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaW5mby5kYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgp
KTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShBVFRB
Q0hNRU5UX0VMRU1FTlQpCisKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBmNTNkZWQyY2I1Mjg4ZGFlNmQ5YTM3
ZTJkYjI4ZmFkNTA4NGJiY2JmLi40YTBkOTQwMTE3OTliNzM3YTU3MWMwMDlmNzc0YjAxYzZjOTQ3
OTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApA
QCAtODksNiArODksNyBAQCBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIGNsYXNzIFVzZXJT
dHlsZVNoZWV0OwogY2xhc3MgVVJMOwogCitzdHJ1Y3QgQXR0YWNobWVudEluZm87CiBzdHJ1Y3Qg
Q2FjaGVRdWVyeU9wdGlvbnM7CiBzdHJ1Y3QgQ29tcG9zaXRpb25VbmRlcmxpbmU7CiBzdHJ1Y3Qg
RGljdGF0aW9uQWx0ZXJuYXRpdmU7CkBAIC02ODksNiArNjkwLDE1IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UHJvbWlzZWRCbG9iSW5mbz4gewogICAgIHN0YXRp
YyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6UHJvbWlzZWRCbG9iSW5mbyYpOwogfTsK
IAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKK3RlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6QXR0YWNobWVudEluZm8+IHsKKyAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkF0dGFjaG1lbnRJbmZvJik7CisgICAgc3Rh
dGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpBdHRhY2htZW50SW5mbyYpOworfTsK
KworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIElQQwogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAppbmRleCA4NWE4YTNl
OGE1ZjA2OTY5ZjM0MjAzMzI0NGU5YTA3N2I1MTkwMDBhLi4wNGUwNzE3ZTNjN2YzMmFjOTZjOTdm
Zjg5OTBiNWZhM2NmZjI5Y2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUF0dGFjaG1lbnQuY3BwCkBAIC00OCwxMiArNDgsMTIgQEAgQXR0YWNobWVudDo6fkF0dGFjaG1l
bnQoKQogewogfQogCi12b2lkIEF0dGFjaG1lbnQ6OnJlcXVlc3REYXRhKEZ1bmN0aW9uPHZvaWQo
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2spCit2b2lkIEF0dGFjaG1lbnQ6OnJlcXVlc3RJbmZvKEZ1bmN0aW9uPHZv
aWQoY29uc3QgV2ViQ29yZTo6QXR0YWNobWVudEluZm8mLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmIGNhbGxiYWNrKQogewogICAgIGlmIChtX3dlYlBhZ2UpCi0gICAgICAgIG1fd2Vi
UGFnZS0+cmVxdWVzdEF0dGFjaG1lbnREYXRhKG1faWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFj
aykpOworICAgICAgICBtX3dlYlBhZ2UtPnJlcXVlc3RBdHRhY2htZW50SW5mbyhtX2lkZW50aWZp
ZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBlbHNlCi0gICAgICAgIGNhbGxiYWNrKG51bGxw
dHIsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7Cisg
ICAgICAgIGNhbGxiYWNrKHsgfSwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldh
c0ludmFsaWRhdGVkKTsKIH0KIAogdm9pZCBBdHRhY2htZW50OjpzZXREaXNwbGF5T3B0aW9ucyhX
ZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgb3B0aW9ucywgRnVuY3Rpb248dm9pZChX
ZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKaW5kZXggZDI2ZjJlZjc2OGJlZDc0ODU5ODI4
MGEzOWMxNDMwYmJlMTU5YzRmZi4uMjYxZDE0Mzk1MjEzMTc4MDNjMmEwNzk3MDFjYzhlODcxYThj
YzQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCkBA
IC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTaGFyZWRCdWZmZXI7
CiBzdHJ1Y3QgQXR0YWNobWVudERpc3BsYXlPcHRpb25zOworc3RydWN0IEF0dGFjaG1lbnRJbmZv
OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ5LDcgKzUwLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgfkF0dGFjaG1lbnQoKTsKIAogICAgIGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9Ci0gICAgdm9pZCByZXF1ZXN0RGF0
YShGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBXZWJLaXQ6OkNh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RJbmZvKEZ1bmN0aW9uPHZv
aWQoY29uc3QgV2ViQ29yZTo6QXR0YWNobWVudEluZm8mLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmKTsKICAgICB2b2lkIHNldERpc3BsYXlPcHRpb25zKFdlYkNvcmU6OkF0dGFjaG1l
bnREaXNwbGF5T3B0aW9ucywgRnVuY3Rpb248dm9pZChXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmKTsKICAgICB2b2lkIHNldERhdGFBbmRDb250ZW50VHlwZShXZWJDb3JlOjpTaGFyZWRC
dWZmZXImLCBjb25zdCBXVEY6OlN0cmluZyYgbmV3Q29udGVudFR5cGUsIGNvbnN0IFdURjo6U3Ry
aW5nJiBuZXdGaWxlbmFtZSwgRnVuY3Rpb248dm9pZChXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0F0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tB
dHRhY2htZW50LmgKaW5kZXggMjEwY2EwZWVhNGI3YjNjNmUyZjU0ZWVkODdlNjNlN2NhZmQ0YjNm
Mi4uZDI1YjUyYWE4YzI1MDk4ODliMGIzYWUwMDE5YWM3NjMyNmIzZGFkMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5oCkBAIC00Miwx
MSArNDIsMjEgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKQogQHByb3BlcnR5IChub25hdG9taWMpIF9XS0F0dGFjaG1lbnREaXNwbGF5TW9k
ZSBtb2RlOwogQGVuZAogCitXS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpCitAaW50ZXJmYWNlIF9XS0F0dGFjaG1lbnRJbmZvIDogTlNPYmplY3QK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcgKmNvbnRlbnRUeXBlOwor
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqbmFtZTsKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcgKmZpbGVQYXRoOworQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5LCBudWxsYWJsZSkgTlNEYXRhICpkYXRhOworQGVuZAorCiBXS19D
TEFTU19BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpCiBAaW50
ZXJmYWNlIF9XS0F0dGFjaG1lbnQgOiBOU09iamVjdAorLSAodm9pZClyZXF1ZXN0SW5mbzoodm9p
ZCheKShfV0tBdHRhY2htZW50SW5mbyAqIF9OdWxsYWJsZSwgTlNFcnJvciAqIF9OdWxsYWJsZSkp
Y29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKXJlcXVlc3REYXRhOih2b2lkKF4pKE5TRGF0YSAq
IF9OdWxsYWJsZSwgTlNFcnJvciAqIF9OdWxsYWJsZSkpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2
b2lkKXNldERpc3BsYXlPcHRpb25zOihfV0tBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgKilvcHRp
b25zIGNvbXBsZXRpb246KHZvaWQoXiBfTnVsbGFibGUpKE5TRXJyb3IgKiBfTnVsbGFibGUpKWNv
bXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClzZXREYXRhOihOU0RhdGEgKilkYXRhIG5ld0NvbnRl
bnRUeXBlOihudWxsYWJsZSBOU1N0cmluZyAqKW5ld0NvbnRlbnRUeXBlIG5ld0ZpbGVuYW1lOihu
dWxsYWJsZSBOU1N0cmluZyAqKW5ld0ZpbGVuYW1lIGNvbXBsZXRpb246KHZvaWQoXiBfTnVsbGFi
bGUpKE5TRXJyb3IgKiBfTnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVyOworQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqdW5pcXVlSWRlbnRpZmllcjsKIEBlbmQKIAog
TlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tCmluZGV4IDkzOWNjODcyMjRlNTUwN2VhMTljOGY3NTY1
NTI0Yjk2YzMwMGRkNDQuLmJhZWIzMTNiYWNlZTg5YzE0MzMwYzc3YmQ4MzFhZmMzMzAxNmU4N2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2ht
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2ht
ZW50Lm1tCkBAIC02OSw2ICs2OSw0OCBAQCAtIChXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9w
dGlvbnMpY29yZURpc3BsYXlPcHRpb25zCiAKIEBlbmQKIAorQGltcGxlbWVudGF0aW9uIF9XS0F0
dGFjaG1lbnRJbmZvIHsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBfZGF0YTsKKyAgICBSZXRhaW5Q
dHI8TlNTdHJpbmc+IF9uYW1lOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gX2ZpbGVQYXRoOwor
ICAgIFJldGFpblB0cjxOU1N0cmluZz4gX2NvbnRlbnRUeXBlOworfQorCistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhJbmZvOihjb25zdCBXZWJDb3JlOjpBdHRhY2htZW50SW5mbyYpaW5mbworewor
ICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisg
ICAgX2RhdGEgPSBpbmZvLmRhdGEgPyBpbmZvLmRhdGEtPmNyZWF0ZU5TRGF0YSgpIDogbmlsOwor
ICAgIF9jb250ZW50VHlwZSA9IGFkb3B0TlMoWyhOU1N0cmluZyAqKWluZm8uY29udGVudFR5cGUg
PzogQCIiIGNvcHldKTsKKyAgICBfbmFtZSA9IGFkb3B0TlMoWyhOU1N0cmluZyAqKWluZm8ubmFt
ZSA/OiBAIiIgY29weV0pOworICAgIF9maWxlUGF0aCA9IGFkb3B0TlMoWyhOU1N0cmluZyAqKWlu
Zm8uZmlsZVBhdGggPzogQCIiIGNvcHldKTsKKworICAgIHJldHVybiBzZWxmOworfQorCistIChO
U0RhdGEgKilkYXRhCit7CisgICAgcmV0dXJuIF9kYXRhLmdldCgpOworfQorCistIChOU1N0cmlu
ZyAqKW5hbWUKK3sKKyAgICByZXR1cm4gX25hbWUuZ2V0KCk7Cit9CisKKy0gKE5TU3RyaW5nICop
ZmlsZVBhdGgKK3sKKyAgICByZXR1cm4gX2ZpbGVQYXRoLmdldCgpOworfQorCistIChOU1N0cmlu
ZyAqKWNvbnRlbnRUeXBlCit7CisgICAgcmV0dXJuIF9jb250ZW50VHlwZS5nZXQoKTsKK30KKwor
QGVuZAorCiBAaW1wbGVtZW50YXRpb24gX1dLQXR0YWNobWVudAogCiAtIChBUEk6Ok9iamVjdCYp
X2FwaU9iamVjdApAQCAtODEsMTkgKzEyMywyOSBAQCAtIChCT09MKWlzRXF1YWw6KGlkKW9iamVj
dAogICAgIHJldHVybiBbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W19XS0F0dGFjaG1lbnQgY2xhc3Nd
XSAmJiBbc2VsZi51bmlxdWVJZGVudGlmaWVyIGlzRXF1YWw6WyhfV0tBdHRhY2htZW50ICopb2Jq
ZWN0IHVuaXF1ZUlkZW50aWZpZXJdXTsKIH0KIAotLSAodm9pZClyZXF1ZXN0RGF0YToodm9pZChe
KShOU0RhdGEgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgorLSAodm9pZClyZXF1ZXN0
SW5mbzoodm9pZCheKShfV0tBdHRhY2htZW50SW5mbyAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25I
YW5kbGVyCiB7Ci0gICAgX2F0dGFjaG1lbnQtPnJlcXVlc3REYXRhKFsgY2FwdHVyZWRCbG9jayA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcikgXSAoUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyLCBDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgX2F0dGFj
aG1lbnQtPnJlcXVlc3RJbmZvKFtjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKV0gKGNvbnN0IFdlYkNvcmU6OkF0dGFjaG1lbnRJbmZvJiBpbmZvLCBDYWxsYmFj
a0Jhc2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgIGlmICghY2FwdHVyZWRCbG9jaykKICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoYnVmZmVyICYmIGVycm9yID09IENhbGxiYWNr
QmFzZTo6RXJyb3I6Ok5vbmUpCi0gICAgICAgICAgICBjYXB0dXJlZEJsb2NrKGJ1ZmZlci0+Y3Jl
YXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKSwgbmlsKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgY2FwdHVyZWRCbG9jayhuaWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9t
YWluIGNvZGU6MSB1c2VySW5mbzpuaWxdKTsKKyAgICAgICAgaWYgKGVycm9yICE9IENhbGxiYWNr
QmFzZTo6RXJyb3I6Ok5vbmUpIHsKKyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2sobmlsLCBbTlNF
cnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JXZWJWaWV3SW52
YWxpZGF0ZWQgdXNlckluZm86bmlsXSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBhdXRvIGF0dGFjaG1lbnRJbmZvID0gYWRvcHROUyhbW19XS0F0dGFjaG1lbnRJ
bmZvIGFsbG9jXSBpbml0V2l0aEluZm86aW5mb10pOworICAgICAgICBjYXB0dXJlZEJsb2NrKGF0
dGFjaG1lbnRJbmZvLmdldCgpLCBuaWwpOwogICAgIH0pOwogfQogCistICh2b2lkKXJlcXVlc3RE
YXRhOih2b2lkKF4pKE5TRGF0YSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCit7Cisg
ICAgW3NlbGYgcmVxdWVzdEluZm86W3Byb3RlY3RlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKF9XS0F0dGFjaG1lbnRJbmZvICppbmZvLCBOU0Vycm9yICplcnJvcikg
eworICAgICAgICBwcm90ZWN0ZWRCbG9jayhpbmZvLmRhdGEsIGVycm9yKTsKKyAgICB9XTsKK30K
KwogLSAodm9pZClzZXREaXNwbGF5T3B0aW9uczooX1dLQXR0YWNobWVudERpc3BsYXlPcHRpb25z
ICopb3B0aW9ucyBjb21wbGV0aW9uOih2b2lkKF4pKE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRs
ZXIKIHsKICAgICBhdXRvIGNvcmVPcHRpb25zID0gb3B0aW9ucyA/IG9wdGlvbnMuY29yZURpc3Bs
YXlPcHRpb25zIDogV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zIHsgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGUxMGEyZWIzMWI3ZmU3ZTky
ZTVkODNiYzgwNjNkNjg4NDM1ZTJhNWIuLjM5MWJjOWQyMWI1ZjFhMDVkOWZmZThhNGQxZmY0ZjBh
ODkwZjA4ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
NTIwNiwyMyArNTIwNiwyNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dm9pZENhbGxiYWNrKENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrKCk7CiB9CiAK
LXZvaWQgV2ViUGFnZVByb3h5OjpzaGFyZWRCdWZmZXJDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIGJvb2wgaXNOdWxsLCBDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKwordm9pZCBXZWJQYWdlUHJveHk6
OmF0dGFjaG1lbnRJbmZvQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6QXR0YWNobWVudEluZm8mIGlu
Zm8sIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKLSAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxs
YmFja3MudGFrZTxTaGFyZWRCdWZmZXJDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CisgICAgYXV0byBj
YWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8QXR0YWNobWVudEluZm9DYWxsYmFjaz4oY2FsbGJh
Y2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChpc051bGwpIHsKLSAgICAgICAg
QVNTRVJUKGRhdGFSZWZlcmVuY2UuaXNFbXB0eSgpKTsKLSAgICAgICAgY2FsbGJhY2stPnBlcmZv
cm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShudWxscHRyKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KKyAgICBpZiAoIWluZm8uZmlsZVBhdGguaXNFbXB0eSgpKQorICAgICAgICBNRVNTQUdFX0NI
RUNLX1VSTChpbmZvLmZpbGVQYXRoKTsKIAotICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tX
aXRoUmV0dXJuVmFsdWUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YVJlZmVyZW5jZS5kYXRhKCks
IGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKSk7CisgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dp
dGhSZXR1cm5WYWx1ZShpbmZvKTsKIH0KIAorI2VuZGlmCisKIHZvaWQgV2ViUGFnZVByb3h5Ojpk
YXRhQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRh
a2U8RGF0YUNhbGxiYWNrPihjYWxsYmFja0lEKTsKQEAgLTcyMzcsMTUgKzcyMzgsMTUgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
LCBjb25zdCBBdHRhY2htZW50RGkKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6Okluc2VydEF0dGFjaG1lbnQoaWRlbnRpZmllciwgb3B0aW9ucywgZmlsZW5hbWUsIGNvbnRl
bnRUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgeyAmZGF0YSB9LCBjYWxsYmFj
a0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEF0dGFjaG1l
bnREYXRhKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChSZWZQdHI8U2hh
cmVkQnVmZmVyPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2spCit2b2lkIFdlYlBh
Z2VQcm94eTo6cmVxdWVzdEF0dGFjaG1lbnRJbmZvKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
RnVuY3Rpb248dm9pZChjb25zdCBBdHRhY2htZW50SW5mbyYsIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmIGNhbGxiYWNrKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7Ci0gICAgICAgIGNhbGxiYWNr
KG51bGxwdHIsIENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOworICAg
ICAgICBjYWxsYmFjayh7IH0sIENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0
ZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6UmVxdWVzdEF0dGFjaG1lbnREYXRhKGlkZW50aWZpZXIsIGNhbGxiYWNrSUQpLCBt
X3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0
QXR0YWNobWVudEluZm8oaWRlbnRpZmllciwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnNldEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyhjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIsIEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyBvcHRpb25zLCBGdW5jdGlv
bjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBmODBmZGNkNjdlMDUxZDkzYWFlMmJlODQ5MDdhOTgx
M2ZiYTQwMDhjLi5kODhlNTliYzg3ZWNmYzI4MTdjMzcxY2E3NTA3YWUxZWZkMzYyMTA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTgzLDYgKzE4Myw3IEBAIHVz
aW5nIEZsb2F0Qm94RXh0ZW50ID0gUmVjdEVkZ2VzPGZsb2F0PjsKICNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IEF0dGFjaG1lbnREaXNw
bGF5T3B0aW9uczsKK3N0cnVjdCBBdHRhY2htZW50SW5mbzsKIH0KICNlbmRpZgogCkBAIC0yNDcs
NyArMjQ4LDEwIEBAIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPHVpbnQ2NF90PiBVbnNpZ25lZENh
bGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8RWRpdGluZ1JhbmdlPiBFZGl0aW5nUmFu
Z2VDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFN0cmluZyY+IFN0cmlu
Z0NhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8QVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUqLCBib29sLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJj4gU2NyaXB0VmFs
dWVDYWxsYmFjazsKLXR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+PiBTaGFyZWRCdWZmZXJDYWxsYmFjazsKKworI2lmIEVOQUJMRShBVFRBQ0hNRU5U
X0VMRU1FTlQpCit0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBXZWJDb3JlOjpBdHRhY2ht
ZW50SW5mbyY+IEF0dGFjaG1lbnRJbmZvQ2FsbGJhY2s7CisjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KEdUSykKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6RXJyb3IqPiBQcmludEZpbmlzaGVk
Q2FsbGJhY2s7CkBAIC0xMjU0LDkgKzEyNTgsMTAgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKICAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMmLCBj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUs
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJik7Ci0gICAgdm9pZCByZXF1ZXN0QXR0YWNobWVudERhdGEoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCByZXF1ZXN0QXR0YWNobWVudElu
Zm8oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6
OkF0dGFjaG1lbnRJbmZvJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgc2V0
QXR0YWNobWVudERpc3BsYXlPcHRpb25zKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgV2ViQ29y
ZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zLCBGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmKTsKICAgICB2b2lkIHNldEF0dGFjaG1lbnREYXRhQW5kQ29udGVudFR5cGUoY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiYmIG5ld0NvbnRlbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4m
JiBuZXdGaWxlbmFtZSwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Cisg
ICAgdm9pZCBhdHRhY2htZW50SW5mb0NhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkF0dGFjaG1lbnRJ
bmZvJiwgQ2FsbGJhY2tJRCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5J
RkVTVCkKQEAgLTE1MTcsNyArMTUyMiw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHZvaWRDYWxs
YmFjayhDYWxsYmFja0lEKTsKICAgICB2b2lkIGRhdGFDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmLCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIHNoYXJlZEJ1ZmZlckNhbGxiYWNrKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGJvb2wgaXNOdWxsLCBDYWxsYmFja0lEKTsKICAgICB2
b2lkIGltYWdlQ2FsbGJhY2soY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBDYWxsYmFj
a0lEKTsKICAgICB2b2lkIHN0cmluZ0NhbGxiYWNrKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQp
OwogICAgIHZvaWQgaW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKENhbGxiYWNrSUQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDFk
OGQ0M2FjZTQ3MDFkMTQ3ZmY4OTFiYzBmYWQ1MzQxNmJjMmI0MGUuLjY1M2JiMWM3NDEyYWJiYzQ5
MjIzYjMyNGEwMDMzZjlkYzdjMGRkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTE1Nyw3ICsxNTcsNiBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlUHJveHkgewogICAgICMgQ2FsbGJhY2sgbWVzc2FnZXMKICAgICBWb2lkQ2FsbGJh
Y2soV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgRGF0YUNhbGxiYWNrKElQQzo6
RGF0YVJlZmVyZW5jZSByZXN1bHREYXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
LSAgICBTaGFyZWRCdWZmZXJDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwg
Ym9vbCBpc051bGwsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKTsKICAgICBJbWFnZUNh
bGxiYWNrKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgYml0bWFwSGFuZGxlLCBXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBTdHJpbmdDYWxsYmFjayhTdHJpbmcgcmVz
dWx0U3RyaW5nLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBJbnZhbGlkYXRl
U3RyaW5nQ2FsbGJhY2soV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkBAIC0xNjcsNiAr
MTY2LDkgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBFZGl0aW5nUmFuZ2VDYWxs
YmFjayhzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogICAgIFVuc2lnbmVkQ2FsbGJhY2sodWludDY0X3QgcmVzdWx0LCBXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxs
YmFjayhXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSBh
Y3R1YWxSYW5nZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKKyAgICBBdHRhY2htZW50SW5mb0NhbGxiYWNrKHN0cnVjdCBXZWJD
b3JlOjpBdHRhY2htZW50SW5mbyBpbmZvLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7
CisjZW5kaWYKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiAgICAgQXBwbGljYXRp
b25NYW5pZmVzdENhbGxiYWNrKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5p
ZmVzdD4gbWFuaWZlc3QsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGNiOGMw
NWNjOTlkNThkMjg2Y2FkNjE2NGVhYzBhODcwMTdhYzVjZDkuLmQ5NDI5ZjNhM2UzOWNhM2E3ZWNj
NTc0YWMzYWY3NDNhM2Q2YmVhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC01ODU2LDE0ICs1ODU2LDYgQEAgdm9pZCBXZWJQYWdlOjpzdG9y
YWdlQWNjZXNzUmVzcG9uc2UoYm9vbCB3YXNHcmFudGVkLCB1aW50NjRfdCBjb250ZXh0SWQpCiB9
CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlOjppbnZva2VTaGFyZWRCdWZmZXJDYWxsYmFjayhSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQotewotICAg
IGlmIChidWZmZXIpCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hhcmVk
QnVmZmVyQ2FsbGJhY2soSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHsgYnVmZmVyLmdl
dCgpIH0sIGZhbHNlLCBjYWxsYmFja0lEKSk7Ci0gICAgZWxzZQotICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlNoYXJlZEJ1ZmZlckNhbGxiYWNrKHsgfSwgdHJ1ZSwgY2FsbGJh
Y2tJRCkpOwotfQotCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAogdm9pZCBXZWJQ
YWdlOjppbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgQXR0
YWNobWVudERpc3BsYXlPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpAQCAtNTg3MywxOSArNTg2NSwxNiBAQCB2
b2lkIFdlYlBhZ2U6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBj
b25zdCBBdHRhY2htZW50RGlzcGxheQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpyZXF1ZXN0QXR0
YWNobWVudERhdGEoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCit2b2lkIFdlYlBhZ2U6OnJlcXVlc3RBdHRhY2htZW50SW5mbyhjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGF0dGFjaG1lbnQg
PSBhdHRhY2htZW50RWxlbWVudFdpdGhJZGVudGlmaWVyKGlkZW50aWZpZXIpOwogICAgIGlmICgh
YXR0YWNobWVudCkgewotICAgICAgICBpbnZva2VTaGFyZWRCdWZmZXJDYWxsYmFjayh7IH0sIGNh
bGxiYWNrSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkF0dGFjaG1l
bnRJbmZvQ2FsbGJhY2soeyB9LCBjYWxsYmFja0lEKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBhdHRhY2htZW50LT5yZXF1ZXN0RGF0YShbY2FsbGJhY2tJRCwgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBwcm90ZWN0ZWRBdHRhY2htZW50ID0gV1RGTW92ZShhdHRhY2ht
ZW50KV0gKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7Ci0gICAgICAgIGlmIChidWZm
ZXIpCi0gICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5pbnZva2VTaGFyZWRCdWZmZXJDYWxsYmFj
ayhXVEZNb3ZlKGJ1ZmZlciksIGNhbGxiYWNrSUQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBwcm90ZWN0ZWRUaGlzLT5pbnZva2VTaGFyZWRCdWZmZXJDYWxsYmFjayh7IH0sIGNhbGxiYWNr
SUQpOworICAgIGF0dGFjaG1lbnQtPnJlcXVlc3RJbmZvKFtjYWxsYmFja0lELCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHByb3RlY3RlZEF0dGFjaG1lbnQgPSBXVEZNb3ZlKGF0dGFj
aG1lbnQpXSAoY29uc3QgQXR0YWNobWVudEluZm8mIGluZm8pIHsKKyAgICAgICAgcHJvdGVjdGVk
VGhpcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpBdHRhY2htZW50SW5mb0NhbGxiYWNr
KGluZm8sIGNhbGxiYWNrSUQpKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDEzNTNlMWZjMjk3NmRjMGMxZTUzMmZmYzFjYzVh
MTA5Y2RkMGQzMWMuLjkwNzNiNWVkMzdlZDkzYTBkYTM2OGNlMWMwZmExMzEwNjgwYmQxYzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTEwNDMsNyAr
MTA0Myw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAg
dm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zJiwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmLCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIHJlcXVlc3RBdHRhY2htZW50RGF0YShjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIsIENhbGxiYWNrSUQpOworICAgIHZvaWQgcmVxdWVzdEF0dGFjaG1l
bnRJbmZvKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBz
ZXRBdHRhY2htZW50RGlzcGxheU9wdGlvbnMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMmLCBDYWxsYmFja0lEKTsKICAgICB2
b2lkIHNldEF0dGFjaG1lbnREYXRhQW5kQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmV3
Q29udGVudFR5cGUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBuZXdGaWxlbmFtZSwgQ2FsbGJhY2tJ
RCk7CiAjZW5kaWYKQEAgLTExNjYsOCArMTE2Niw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXN0
b3JlU2Vzc2lvbihjb25zdCBWZWN0b3I8QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlPiYpOwogICAg
IHZvaWQgZGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90KTsKIAotICAgIHZvaWQgaW52
b2tlU2hhcmVkQnVmZmVyQ2FsbGJhY2soUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwg
Q2FsbGJhY2tJRCk7Ci0KICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICB2b2lkIHNl
dEFsbG93c1JlbW90ZUluc3BlY3Rpb24oYm9vbCk7CiAgICAgdm9pZCBzZXRSZW1vdGVJbnNwZWN0
aW9uTmFtZU92ZXJyaWRlKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNGU0M2JjNzdjNjFl
Nzk4ZjExZTVlNDNkZWRjNzk3YWVjOWEzNTg2MC4uZjI1M2U0MjIyYzBhOGI4NTI5YWI1NTAwMWQ3
YzM1MTc3MzUwYzlkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00OTQsNyArNDk0LDcgQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5U
KQogICAgIEluc2VydEF0dGFjaG1lbnQoU3RyaW5nIGlkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3Jl
OjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgb3B0aW9ucywgU3RyaW5nIGZpbGVuYW1lLCBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhLCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBSZXF1ZXN0QXR0YWNobWVudERhdGEo
U3RyaW5nIGlkZW50aWZpZXIsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFJl
cXVlc3RBdHRhY2htZW50SW5mbyhTdHJpbmcgaWRlbnRpZmllciwgV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiAgICAgU2V0QXR0YWNobWVudERpc3BsYXlPcHRpb25zKFN0cmluZyBpZGVu
dGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zIG9wdGlvbnMs
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFNldEF0dGFjaG1lbnREYXRhQW5k
Q29udGVudFR5cGUoU3RyaW5nIGlkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhLCBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gbmV3Q29udGVudFR5cGUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBuZXdGaWxlbmFtZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkMmM2OGJh
ZTJiMWNkM2UzNTc0NTA1YTIwNGY3Mjg0MjkxNDMxN2M5Li4zMTMxM2M2MjM3MjVmMWMxOTI5YmRk
N2Q1YmYxZmJhMjhhOTEyY2YxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTgtMDEtMDggIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0g
RXhwb3NlIGZpbGUgbmFtZSBhbmQgY29udGVudCB0eXBlIG9mIFdLQXR0YWNobWVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxMzkwCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8zNjMzNjgzNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGp1c3RzIHNvbWUgZXhpc3RpbmcgdGVzdHMgaW4gV0tBdHRh
Y2htZW50VGVzdHMgdG8gZXhlcmNpc2UgLXJlcXVlc3RJbmZvOi4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW06CisgICAgICAg
ICgtW19XS0F0dGFjaG1lbnQgc3luY2hyb25vdXNseVJlcXVlc3RJbmZvOl0pOgorICAgICAgICAo
LVtfV0tBdHRhY2htZW50IHN5bmNocm9ub3VzbHlSZXF1ZXN0RGF0YTpdKToKKworICAgICAgICBS
ZWltcGxlbWVudCB0aGlzIGluIHRlcm1zIG9mIC1zeW5jaHJvbm91c2x5UmVxdWVzdEluZm86Lgor
CisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6XSk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxOC0wMS0wOCAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBDb3B5aW5nLCBwYXN0aW5nLCBh
bmQgdGhlbiBkZWxldGluZyBhbiBhdHRhY2htZW50IGVsZW1lbnQgYnJlYWtzIGF0dGFjaG1lbnQg
ZGF0YSByZXF1ZXN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KaW5kZXggNmIwZjA1NTc0NTZhN2JmYzUx
NWYwMzk5MDBmYjBiYmY5ODI1NGM3YS4uOGRkMzg2Njk4YTM0Yjk0Nzk3ZTk0NmI4YTA3N2I0Zjk3
ZDBlNGMyOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS0F0dGFjaG1lbnRUZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCkBAIC0yNzEsMTMgKzI3MSwxMyBAQCAtICh2
b2lkKXN5bmNocm9ub3VzbHlTZXREaXNwbGF5T3B0aW9uczooX1dLQXR0YWNobWVudERpc3BsYXlP
cHRpb25zICopb3B0aW9ucyBlcgogICAgICAgICAqZXJyb3IgPSByZXN1bHRFcnJvci5hdXRvcmVs
ZWFzZSgpOwogfQogCi0tIChOU0RhdGEgKilzeW5jaHJvbm91c2x5UmVxdWVzdERhdGE6KE5TRXJy
b3IgKiopZXJyb3IKKy0gKF9XS0F0dGFjaG1lbnRJbmZvICopc3luY2hyb25vdXNseVJlcXVlc3RJ
bmZvOihOU0Vycm9yICoqKWVycm9yCiB7Ci0gICAgX19ibG9jayBSZXRhaW5QdHI8TlNEYXRhPiBy
ZXN1bHQ7CisgICAgX19ibG9jayBSZXRhaW5QdHI8X1dLQXR0YWNobWVudEluZm8+IHJlc3VsdDsK
ICAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0Vycm9yPiByZXN1bHRFcnJvcjsKICAgICBfX2Jsb2Nr
IGJvb2wgZG9uZSA9IGZhbHNlOwotICAgIFtzZWxmIHJlcXVlc3REYXRhOl4oTlNEYXRhICpkYXRh
LCBOU0Vycm9yICplcnJvcikgewotICAgICAgICByZXN1bHQgPSBkYXRhOworICAgIFtzZWxmIHJl
cXVlc3RJbmZvOl4oX1dLQXR0YWNobWVudEluZm8gKmluZm8sIE5TRXJyb3IgKmVycm9yKSB7Cisg
ICAgICAgIHJlc3VsdCA9IGluZm87CiAgICAgICAgIHJlc3VsdEVycm9yID0gZXJyb3I7CiAgICAg
ICAgIGRvbmUgPSB0cnVlOwogICAgIH1dOwpAQCAtMjkwLDYgKzI5MCwxMSBAQCAtIChOU0RhdGEg
KilzeW5jaHJvbm91c2x5UmVxdWVzdERhdGE6KE5TRXJyb3IgKiopZXJyb3IKICAgICByZXR1cm4g
cmVzdWx0LmF1dG9yZWxlYXNlKCk7CiB9CiAKKy0gKE5TRGF0YSAqKXN5bmNocm9ub3VzbHlSZXF1
ZXN0RGF0YTooTlNFcnJvciAqKillcnJvcgoreworICAgIHJldHVybiBbc2VsZiBzeW5jaHJvbm91
c2x5UmVxdWVzdEluZm86ZXJyb3JdLmRhdGE7Cit9CisKIC0gKHZvaWQpc3luY2hyb25vdXNseVNl
dERhdGE6KE5TRGF0YSAqKWRhdGEgbmV3Q29udGVudFR5cGU6KE5TU3RyaW5nICopbmV3Q29udGVu
dFR5cGUgbmV3RmlsZW5hbWU6KE5TU3RyaW5nICopbmV3RmlsZW5hbWUgZXJyb3I6KE5TRXJyb3Ig
KiopZXJyb3IKIHsKICAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0Vycm9yPiByZXN1bHRFcnJvcjsK
QEAgLTMwNywxMyArMzEyLDE0IEBAIC0gKHZvaWQpc3luY2hyb25vdXNseVNldERhdGE6KE5TRGF0
YSAqKWRhdGEgbmV3Q29udGVudFR5cGU6KE5TU3RyaW5nICopbmV3Q29udGVuCiAKIC0gKHZvaWQp
ZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6KE5TRGF0YSAqKWV4cGVjdGVkRGF0YQogewotICAgIE5T
RXJyb3IgKmRhdGFSZXF1ZXN0RXJyb3IgPSBuaWw7Ci0gICAgTlNEYXRhICpvYnNlcnZlZERhdGEg
PSBbc2VsZiBzeW5jaHJvbm91c2x5UmVxdWVzdERhdGE6JmRhdGFSZXF1ZXN0RXJyb3JdOwotICAg
IEJPT0wgb2JzZXJ2ZWREYXRhSXNFcXVhbFRvRXhwZWN0ZWREYXRhID0gW29ic2VydmVkRGF0YSBp
c0VxdWFsVG9EYXRhOmV4cGVjdGVkRGF0YV0gfHwgb2JzZXJ2ZWREYXRhID09IGV4cGVjdGVkRGF0
YTsKKyAgICBOU0Vycm9yICpyZXF1ZXN0RXJyb3IgPSBuaWw7CisgICAgX1dLQXR0YWNobWVudElu
Zm8gKmluZm8gPSBbc2VsZiBzeW5jaHJvbm91c2x5UmVxdWVzdEluZm86JnJlcXVlc3RFcnJvcl07
CisKKyAgICBCT09MIG9ic2VydmVkRGF0YUlzRXF1YWxUb0V4cGVjdGVkRGF0YSA9IFtpbmZvLmRh
dGEgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFdIHx8IGluZm8uZGF0YSA9PSBleHBlY3RlZERh
dGE7CiAgICAgRVhQRUNUX1RSVUUob2JzZXJ2ZWREYXRhSXNFcXVhbFRvRXhwZWN0ZWREYXRhKTsK
ICAgICBpZiAoIW9ic2VydmVkRGF0YUlzRXF1YWxUb0V4cGVjdGVkRGF0YSkgewotICAgICAgICBO
U0xvZyhAIkV4cGVjdGVkIGRhdGE6ICVAIGJ1dCBvYnNlcnZlZDogJUAgZm9yICVAIiwgW2V4cGVj
dGVkRGF0YSBzaG9ydERlc2NyaXB0aW9uXSwgW29ic2VydmVkRGF0YSBzaG9ydERlc2NyaXB0aW9u
XSwgc2VsZik7Ci0gICAgICAgIE5TTG9nKEAiT2JzZXJ2ZWQgZXJyb3I6ICVAIHdoaWxlIHJlYWRp
bmcgZGF0YSBmb3IgJUAiLCBkYXRhUmVxdWVzdEVycm9yLCBzZWxmKTsKKyAgICAgICAgTlNMb2co
QCJFeHBlY3RlZCBkYXRhOiAlQCBidXQgb2JzZXJ2ZWQ6ICVAIGZvciAlQCIsIFtleHBlY3RlZERh
dGEgc2hvcnREZXNjcmlwdGlvbl0sIFtpbmZvLmRhdGEgc2hvcnREZXNjcmlwdGlvbl0sIHNlbGYp
OworICAgICAgICBOU0xvZyhAIk9ic2VydmVkIGVycm9yOiAlQCB3aGlsZSByZWFkaW5nIGRhdGEg
Zm9yICVAIiwgcmVxdWVzdEVycm9yLCBzZWxmKTsKICAgICB9CiB9CiAKQEAgLTQzMCw3ICs0MzYs
MTEgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgQXR0YWNobWVudEVsZW1lbnRJbnNlcnRpb24p
CiAgICAgICAgIG9ic2VydmVyLmV4cGVjdEF0dGFjaG1lbnRVcGRhdGVzKEBbIF0sIEBbIGZpcnN0
QXR0YWNobWVudC5nZXQoKSBdKTsKICAgICB9CiAKLSAgICBbZmlyc3RBdHRhY2htZW50IGV4cGVj
dFJlcXVlc3RlZERhdGFUb0JlOnRlc3RIVE1MRGF0YSgpXTsKKyAgICBfV0tBdHRhY2htZW50SW5m
byAqaW5mbyA9IFtmaXJzdEF0dGFjaG1lbnQgc3luY2hyb25vdXNseVJlcXVlc3RJbmZvOm5pbF07
CisgICAgRVhQRUNUX1RSVUUoW2luZm8uZGF0YSBpc0VxdWFsVG9EYXRhOnRlc3RIVE1MRGF0YSgp
XSk7CisgICAgRVhQRUNUX1RSVUUoW2luZm8uY29udGVudFR5cGUgaXNFcXVhbFRvU3RyaW5nOkAi
dGV4dC9odG1sIl0pOworICAgIEVYUEVDVF9UUlVFKFtpbmZvLm5hbWUgaXNFcXVhbFRvU3RyaW5n
OkAiZm9vIl0pOworICAgIEVYUEVDVF9FUShpbmZvLmZpbGVQYXRoLmxlbmd0aCwgMFUpOwogCiAg
ICAgewogICAgICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZSBzY29wZSh3ZWJW
aWV3LmdldCgpKTsKQEAgLTQ2NSw3ICs0NzUsMTIgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywg
QXR0YWNobWVudFVwZGF0ZXNXaGVuSW5zZXJ0aW5nQW5kRGVsZXRpbmdOZXdsaW5lKQogICAgIFt3
ZWJWaWV3IGV4cGVjdFVwZGF0ZXNBZnRlckNvbW1hbmQ6QCJJbnNlcnRQYXJhZ3JhcGgiIHdpdGhB
cmd1bWVudDpuaWwgZXhwZWN0ZWRSZW1vdmFsczpAW10gZXhwZWN0ZWRJbnNlcnRpb25zOkBbXV07
CiAKICAgICBbd2ViVmlldyBleHBlY3RVcGRhdGVzQWZ0ZXJDb21tYW5kOkAiRGVsZXRlQmFja3dh
cmQiIHdpdGhBcmd1bWVudDpuaWwgZXhwZWN0ZWRSZW1vdmFsczpAW10gZXhwZWN0ZWRJbnNlcnRp
b25zOkBbXV07Ci0gICAgW2F0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6dGVzdEhU
TUxEYXRhKCldOworCisgICAgX1dLQXR0YWNobWVudEluZm8gKmluZm8gPSBbYXR0YWNobWVudCBz
eW5jaHJvbm91c2x5UmVxdWVzdEluZm86bmlsXTsKKyAgICBFWFBFQ1RfVFJVRShbaW5mby5kYXRh
IGlzRXF1YWxUb0RhdGE6dGVzdEhUTUxEYXRhKCldKTsKKyAgICBFWFBFQ1RfVFJVRShbaW5mby5j
b250ZW50VHlwZSBpc0VxdWFsVG9TdHJpbmc6QCJ0ZXh0L3BsYWluIl0pOworICAgIEVYUEVDVF9U
UlVFKFtpbmZvLm5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiZm9vLnR4dCJdKTsKKyAgICBFWFBFQ1Rf
RVEoaW5mby5maWxlUGF0aC5sZW5ndGgsIDBVKTsKIAogICAgIFt3ZWJWaWV3IGV4cGVjdFVwZGF0
ZXNBZnRlckNvbW1hbmQ6QCJEZWxldGVGb3J3YXJkIiB3aXRoQXJndW1lbnQ6bmlsIGV4cGVjdGVk
UmVtb3ZhbHM6QFthdHRhY2htZW50LmdldCgpXSBleHBlY3RlZEluc2VydGlvbnM6QFtdXTsKICAg
ICBbYXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTpuaWxdOwpAQCAtNjIzLDEzICs2
MzgsMTMgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgTXVsdGlwbGVTaW11bHRhbmVvdXNBdHRh
Y2htZW50RGF0YVJlcXVlc3RzKQogICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gZGF0YUZv
ckZpcnN0UmVxdWVzdDsKICAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0RhdGE+IGRhdGFGb3JTZWNv
bmRSZXF1ZXN0OwogICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7Ci0gICAgW2F0dGFjaG1l
bnQgcmVxdWVzdERhdGE6XihOU0RhdGEgKmRhdGEsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgW2F0
dGFjaG1lbnQgcmVxdWVzdEluZm86XihfV0tBdHRhY2htZW50SW5mbyAqaW5mbywgTlNFcnJvciAq
ZXJyb3IpIHsKICAgICAgICAgRVhQRUNUX1RSVUUoIWVycm9yKTsKLSAgICAgICAgZGF0YUZvckZp
cnN0UmVxdWVzdCA9IGRhdGE7CisgICAgICAgIGRhdGFGb3JGaXJzdFJlcXVlc3QgPSBpbmZvLmRh
dGE7CiAgICAgfV07Ci0gICAgW2F0dGFjaG1lbnQgcmVxdWVzdERhdGE6XihOU0RhdGEgKmRhdGEs
IE5TRXJyb3IgKmVycm9yKSB7CisgICAgW2F0dGFjaG1lbnQgcmVxdWVzdEluZm86XihfV0tBdHRh
Y2htZW50SW5mbyAqaW5mbywgTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgRVhQRUNUX1RSVUUo
IWVycm9yKTsKLSAgICAgICAgZGF0YUZvclNlY29uZFJlcXVlc3QgPSBkYXRhOworICAgICAgICBk
YXRhRm9yU2Vjb25kUmVxdWVzdCA9IGluZm8uZGF0YTsKICAgICAgICAgZG9uZSA9IHRydWU7CiAg
ICAgfV07CiAKQEAgLTEwMjMsNiArMTAzOCwxMSBAQCBURVNUKFdLQXR0YWNobWVudFRlc3RzTWFj
LCBJbnNlcnRQYXN0ZWRGaWxlVVJMc0FzQXR0YWNobWVudHMpCiAgICAgRVhQRUNUX1dLX1NUUkVR
KCJpbWFnZS9wbmciLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9j
dW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYXR0YWNobWVudCcpWzFdLmdldEF0dHJpYnV0ZSgndHlw
ZScpIl0pOwogICAgIEVYUEVDVF9XS19TVFJFUSgiaWNvbi5wbmciLCBbd2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYXR0YWNo
bWVudCcpWzFdLmdldEF0dHJpYnV0ZSgndGl0bGUnKSJdKTsKIAorICAgIGZvciAoX1dLQXR0YWNo
bWVudCAqYXR0YWNobWVudCBpbiBpbnNlcnRlZEF0dGFjaG1lbnRzLmdldCgpKSB7CisgICAgICAg
IF9XS0F0dGFjaG1lbnRJbmZvICppbmZvID0gW2F0dGFjaG1lbnQgc3luY2hyb25vdXNseVJlcXVl
c3RJbmZvOm5pbF07CisgICAgICAgIEVYUEVDVF9HVChpbmZvLmZpbGVQYXRoLmxlbmd0aCwgMFUp
OworICAgIH0KKwogICAgIHsKICAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2Nv
cGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7CiAgICAgICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91
c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAiU2VsZWN0QWxsIiBhcmd1bWVudDpuaWxdOwo=
</data>
<flag name="review"
          id="349765"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330765</attachid>
            <date>2018-01-08 17:33:01 -0800</date>
            <delta_ts>2018-01-08 18:05:52 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-181390-20180108173300.patch</filename>
            <type>text/plain</type>
            <size>40355</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2NTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDc5NzAwMmJhNzRjMmE2
ZWY0YTkzMmRmZDAyYmFlMDJiNDhhMzVhZC4uMmEyNDJiYzE1ZTIyNmIxZGRkYTUzY2E3ZDc4NzAw
M2FlYjdiZTE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE4LTAxLTA4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50
IFN1cHBvcnRdIEV4cG9zZSBmaWxlIG5hbWUgYW5kIGNvbnRlbnQgdHlwZSBvZiBXS0F0dGFjaG1l
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTM5
MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYzMzY4Mzc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgVGltIEhvcnRvbi4KKworICAgICAgICBBZGQgbmV3IHN0cnVjdHMgaW4gQXR0YWNobWVudFR5
cGVzLmggYW5kIHJlZmFjdG9yIEhUTUxBdHRhY2htZW50RWxlbWVudDo6cmVxdWVzdERhdGEgdG8g
cmVxdWVzdEluZm8uIFNlZSBiZWxvdworICAgICAgICBmb3IgbW9yZSBkZXRhaWxzLiBBdWdtZW50
ZWQgZXhpc3RpbmcgQVBJIHRlc3RzIGluIFdLQXR0YWNobWVudFRlc3RzLgorCisgICAgICAgICog
aHRtbC9BdHRhY2htZW50VHlwZXMuaDoKKworICAgICAgICBBZGQgYSBzdHJ1Y3QgdG8gcmVwcmVz
ZW50IGEgc25hcHNob3Qgb2YgaW5mb3JtYXRpb24gYWJvdXQgYW4gYXR0YWNobWVudCBlbGVtZW50
LgorCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpyZXF1ZXN0SW5mbyk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnJlcXVlc3REYXRhKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oOgorCisgICAgICAgIENoYW5nZSBy
ZXF1ZXN0RGF0YSB0byByZXF1ZXN0SW5mby4gSW5zdGVhZCBvZiBmZXRjaGluZyBhbmQgZGVsaXZl
cmluZyBkYXRhIHZpYSBjYWxsYmFjaywgcmVxdWVzdEluZm8gcmV0dXJucyBhbgorICAgICAgICBB
dHRhY2htZW50SW5mby4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckF0dGFjaG1lbnRJbmZvOjphZGRMaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckF0dGFjaG1lbnRJbmZvOjpidWlsZFdyYXBwZWRMaW5lcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJBdHRhY2htZW50SW5mbzo6YnVpbGRTaW5nbGVMaW5lKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckF0dGFjaG1lbnRJbmZvOjpSZW5kZXJBdHRhY2htZW50
SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6YXR0YWNobWVudEJhc2Vs
aW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50QXR0YWNobWVudEljb24pOgorICAg
ICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpw
YWludEF0dGFjaG1lbnRQcm9ncmVzcyk6CisgICAgICAgIChXZWJDb3JlOjphdHRhY2htZW50Qm9y
ZGVyUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRBdHRhY2ht
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkF0dGFjaG1lbnRJbmZvOjphZGRMaW5lKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkF0dGFjaG1lbnRJbmZvOjpidWlsZFdyYXBwZWRMaW5lcyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdHRhY2htZW50SW5mbzo6YnVpbGRTaW5nbGVM
aW5lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF0dGFjaG1lbnRJbmZvOjpBdHRhY2ht
ZW50SW5mbyk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVuYW1lIEF0dGFjaG1lbnRJbmZvIHRvIFJl
bmRlckF0dGFjaG1lbnRJbmZvIHRvIHJlc29sdmUgYSBuYW1lIGNvbmZsaWN0IHdpdGggdGhlIG5l
dyBBdHRhY2htZW50SW5mbyBzdHJ1Y3QuCisKIDIwMTgtMDEtMDggIEpvaG4gV2lsYW5kZXIgIDx3
aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcmFnZSBBY2Nlc3MgQVBJOiBSZW1vdmUg
YWNjZXNzIGZvciBhbGwgZnJhbWVzIHVuZGVyIGEgcGFnZSB3aGVuIHRoZSBwYWdlIGlzIGNsb3Nl
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCAxZDViMmJlMDM1MGRjMTQwZWRiYTU4YmM0MmIwZGE3MzI0OWFhMDNkLi5i
YTdiNjRmMTI1ZTAwNmViYmI0YzlhY2RjZjE0NmJmMmUwZDA3YmQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDY0IEBACisyMDE4LTAxLTA4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgorCisgICAgICAgIFtBdHRhY2htZW50IFN1cHBvcnRdIEV4cG9zZSBmaWxlIG5hbWUgYW5k
IGNvbnRlbnQgdHlwZSBvZiBXS0F0dGFjaG1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTM5MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYz
MzY4Mzc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBBZGQg
c3VwcG9ydCBmb3IgLVtfV0tBdHRhY2htZW50IHJlcXVlc3RJbmZvOl0sIHdoaWNoIGZldGNoZXMg
YSBzbmFwc2hvdCBvZiB0aGUgYXR0YWNobWVudCdzIHN0YXRlLiBUaGlzIEFQSSBpcworICAgICAg
ICBtZWFudCB0byBiZSBhIHJlcGxhY2VtZW50IGZvciAtcmVxdWVzdERhdGE6IHRoYXQgcHJvdmlk
ZXMgYWRkaXRpb25hbCBtZXRhZGF0YSBhYm91dCB0aGUgYXR0YWNobWVudC4KKworICAgICAgICAq
IFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAoaGVhZGVyc19mb3JfdHlwZSk6
CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8QXR0YWNobWVudEluZm8+OjplbmNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPEF0dGFjaG1lbnRJbmZvPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisKKyAgICAgICAgQWRkIElQQyBzdXBwb3J0IGZv
ciBBdHRhY2htZW50SW5mby4gTm90ZSB0aGF0IGluc3RlYWQgb2YgdXNpbmcgKGVuY29kZXxkZWNv
ZGUpU2hhcmVkQnVmZmVyLCB3ZSBzZW5kIGFuZCByZWNlaXZlCisgICAgICAgIGRhdGEgcmVmZXJl
bmNlcyB0byB0aGUgc2hhcmVkIGJ1ZmZlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
QXR0YWNobWVudC5jcHA6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnJlcXVlc3RJbmZvKToK
KyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6cmVxdWVzdERhdGEpOiBEZWxldGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oOgorCisgICAgICAgIENoYW5nZSByZXF1
ZXN0RGF0YSB0byByZXF1ZXN0SW5mby4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXR0YWNobWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNo
bWVudC5tbToKKyAgICAgICAgKC1bX1dLQXR0YWNobWVudEluZm8gaW5pdFdpdGhJbmZvOl0pOgor
ICAgICAgICAoLVtfV0tBdHRhY2htZW50SW5mbyBkYXRhXSk6CisgICAgICAgICgtW19XS0F0dGFj
aG1lbnRJbmZvIG5hbWVdKToKKyAgICAgICAgKC1bX1dLQXR0YWNobWVudEluZm8gZmlsZVBhdGhd
KToKKyAgICAgICAgKC1bX1dLQXR0YWNobWVudEluZm8gY29udGVudFR5cGVdKToKKyAgICAgICAg
KC1bX1dLQXR0YWNobWVudCByZXF1ZXN0SW5mbzpdKToKKyAgICAgICAgKC1bX1dLQXR0YWNobWVu
dCByZXF1ZXN0RGF0YTpdKToKKworICAgICAgICBJbXBsZW1lbnQgLXJlcXVlc3RJbmZvOiBieSBj
YWxsaW5nIGludG8gQVBJQXR0YWNobWVudCwgYW5kIHJlaW1wbGVtZW50IC1yZXF1ZXN0RGF0YTog
aW4gdGVybXMgb2YgLXJlcXVlc3RJbmZvOi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmF0dGFjaG1lbnRJbmZv
Q2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RBdHRhY2ht
ZW50SW5mbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2hhcmVkQnVmZmVyQ2Fs
bGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RB
dHRhY2htZW50RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisKKyAg
ICAgICAgUmVuYW1lIHRoZSBTaGFyZWRCdWZmZXJDYWxsYmFjayBJUEMgbWVzc2FnZSB0byBBdHRh
Y2htZW50SW5mb0NhbGxiYWNrLCBhbmQgbWFrZSBpdCBjb25kaXRpb25hbCBvbgorICAgICAgICBB
VFRBQ0hNRU5UX0VMRU1FTlQuIFJlbmFtZSByZXF1ZXN0QXR0YWNobWVudERhdGEgdG8gcmVxdWVz
dEF0dGFjaG1lbnRJbmZvLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0QXR0YWNobWVudEluZm8pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnZva2VTaGFyZWRCdWZmZXJDYWxsYmFjayk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RBdHRhY2htZW50RGF0YSk6
IERlbGV0ZWQuCisKKyAgICAgICAgUmVuYW1lIHJlcXVlc3RBdHRhY2htZW50RGF0YSB0byByZXF1
ZXN0QXR0YWNobWVudEluZm8gYW5kIGFkb3B0IEhUTUxBdHRhY2htZW50RWxlbWVudDo6cmVxdWVz
dEluZm8uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDE4LTAxLTA4
ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3JhZ2Ug
QWNjZXNzIEFQSTogUmVtb3ZlIGFjY2VzcyBmb3IgYWxsIGZyYW1lcyB1bmRlciBhIHBhZ2Ugd2hl
biB0aGUgcGFnZSBpcyBjbG9zZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXR0
YWNobWVudFR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F0dGFjaG1lbnRUeXBlcy5oCmlu
ZGV4IDU2NWRlOTE4ZTczYjc4NGRlZDAzYjBlYWFiNjkzMDg3MTdhZjhkOTUuLjg4YzE4MTdlYWYw
NGNmMWNjMTY0NjdmNmExNzc2Y2ZkN2RjMTQyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQXR0YWNobWVudFR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdHRhY2ht
ZW50VHlwZXMuaApAQCAtMjgsOSArMjgsMTIgQEAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVN
RU5UKQogCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVkQnVmZmVyOwor
CiBlbnVtIGNsYXNzIEF0dGFjaG1lbnREaXNwbGF5TW9kZSB7CiAgICAgQXV0bywKICAgICBJblBs
YWNlLApAQCAtNTgsNiArNjEsMTMgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIHN0
ZDo6b3B0aW9uYWw8QXR0YWNobWVudERpc3BsYXlPcHRpb25zPiBBdHRhY2htZW4KICAgICByZXR1
cm4ge3sgbW9kZSB9fTsKIH0KIAorc3RydWN0IEF0dGFjaG1lbnRJbmZvIHsKKyAgICBTdHJpbmcg
Y29udGVudFR5cGU7CisgICAgU3RyaW5nIG5hbWU7CisgICAgU3RyaW5nIGZpbGVQYXRoOworICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCmluZGV4IGQzNzA4ZmFkMDllZWRlM2Fm
Njg5NTIwNGM2MTZlNjFjZGQxMDdmNWUuLmE1MmJkMTQxYTA2ZTZkZWQwNDQ2YWZlZDNhY2I1NjUz
ZWNmYzRjZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVu
dC5jcHAKQEAgLTI5NiwxMiArMjk2LDE2IEBAIHZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojpw
b3B1bGF0ZVNoYWRvd1Jvb3RJZk5lY2Vzc2FyeSgpCiAgICAgfQogfQogCi12b2lkIEhUTUxBdHRh
Y2htZW50RWxlbWVudDo6cmVxdWVzdERhdGEoRnVuY3Rpb248dm9pZChSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpyZXF1ZXN0
SW5mbyhGdW5jdGlvbjx2b2lkKGNvbnN0IEF0dGFjaG1lbnRJbmZvJik+JiYgY2FsbGJhY2spCiB7
Ci0gICAgaWYgKG1fZmlsZSkKLSAgICAgICAgbV9hdHRhY2htZW50UmVhZGVycy5hcHBlbmQoQXR0
YWNobWVudERhdGFSZWFkZXI6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShjYWxsYmFjaykpKTsKLSAg
ICBlbHNlCi0gICAgICAgIGNhbGxiYWNrKG51bGxwdHIpOworICAgIGlmICghbV9maWxlKSB7Cisg
ICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2F0
dGFjaG1lbnRSZWFkZXJzLmFwcGVuZChBdHRhY2htZW50RGF0YVJlYWRlcjo6Y3JlYXRlKCp0aGlz
LCBbcHJvdGVjdGVkRmlsZSA9IG1ha2VSZWYoKm1fZmlsZSksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldIChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEpIHsKKyAgICAgICAgY2FsbGJh
Y2soeyBwcm90ZWN0ZWRGaWxlLT50eXBlKCksIHByb3RlY3RlZEZpbGUtPm5hbWUoKSwgcHJvdGVj
dGVkRmlsZS0+cGF0aCgpLCBXVEZNb3ZlKGRhdGEpIH0pOworICAgIH0pKTsKIH0KIAogdm9pZCBI
VE1MQXR0YWNobWVudEVsZW1lbnQ6OmRlc3Ryb3lSZWFkZXIoQXR0YWNobWVudERhdGFSZWFkZXIm
IGZpbmlzaGVkUmVhZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0
YWNobWVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVt
ZW50LmgKaW5kZXggYjMyMjNmYWQ0YTY5YzZmMTQ3OTdjNTlkZGU4NDFiZWUzZDE0MWVjOC4uZTgx
MWJmODMwZjkzMGZjZWZmN2FiODQwYjQ2YWQ1NDExYWE1OWY3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoK
IAogICAgIFJlbmRlckF0dGFjaG1lbnQqIGF0dGFjaG1lbnRSZW5kZXJlcigpIGNvbnN0OwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXF1ZXN0RGF0YShGdW5jdGlvbjx2b2lkKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYpPiYmIGNhbGxiYWNrKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
cXVlc3RJbmZvKEZ1bmN0aW9uPHZvaWQoY29uc3QgQXR0YWNobWVudEluZm8mKT4mJiBjYWxsYmFj
ayk7CiAgICAgdm9pZCBkZXN0cm95UmVhZGVyKEF0dGFjaG1lbnREYXRhUmVhZGVyJik7CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXgg
ZDJlNjQxZTgxM2IwZDE4NTcwODdiNDhmNjBjYzc1Mjc1NTQ4ZTZlNC4uZjA5OWMyODAzZWNhYWMz
OWY2ODUwYjYwNDdjMmFlZmNhNTNkNzAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUlPUy5tbQpAQCAtMTQ4NSw4ICsxNDg1LDggQEAgc3RhdGljIFVJQ29sb3IgKmF0
dGFjaG1lbnRUaXRsZUNvbG9yKCkgeyByZXR1cm4gW2dldFVJQ29sb3JDbGFzcygpIHN5c3RlbUdy
YXlDb2wKIHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250UmVmPiBhdHRhY2htZW50U3VidGl0bGVGb250
KCkgeyByZXR1cm4gYXR0YWNobWVudFRpdGxlRm9udCgpOyB9CiBzdGF0aWMgVUlDb2xvciAqYXR0
YWNobWVudFN1YnRpdGxlQ29sb3IoKSB7IHJldHVybiBbZ2V0VUlDb2xvckNsYXNzKCkgc3lzdGVt
R3JheUNvbG9yXTsgfQogCi1zdHJ1Y3QgQXR0YWNobWVudEluZm8gewotICAgIGV4cGxpY2l0IEF0
dGFjaG1lbnRJbmZvKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmKTsKK3N0cnVjdCBSZW5kZXJBdHRh
Y2htZW50SW5mbyB7CisgICAgZXhwbGljaXQgUmVuZGVyQXR0YWNobWVudEluZm8oY29uc3QgUmVu
ZGVyQXR0YWNobWVudCYpOwogCiAgICAgRmxvYXRSZWN0IGljb25SZWN0OwogICAgIEZsb2F0UmVj
dCBhdHRhY2htZW50UmVjdDsKQEAgLTE1MTQsNyArMTUxNCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBhZGRMaW5lKENUTGluZVJlZik7CiB9OwogCi12b2lkIEF0dGFjaG1lbnRJbmZvOjphZGRMaW5l
KENUTGluZVJlZiBsaW5lKQordm9pZCBSZW5kZXJBdHRhY2htZW50SW5mbzo6YWRkTGluZShDVExp
bmVSZWYgbGluZSkKIHsKICAgICBDR1JlY3QgbGluZUJvdW5kcyA9IENUTGluZUdldEJvdW5kc1dp
dGhPcHRpb25zKGxpbmUsIGtDVExpbmVCb3VuZHNFeGNsdWRlVHlwb2dyYXBoaWNMZWFkaW5nKTsK
ICAgICBDR0Zsb2F0IHRyYWlsaW5nV2hpdGVzcGFjZVdpZHRoID0gQ1RMaW5lR2V0VHJhaWxpbmdX
aGl0ZXNwYWNlV2lkdGgobGluZSk7CkBAIC0xNTI5LDcgKzE1MjksNyBAQCB2b2lkIEF0dGFjaG1l
bnRJbmZvOjphZGRMaW5lKENUTGluZVJlZiBsaW5lKQogICAgIGxpbmVzLmFwcGVuZChsYWJlbExp
bmUpOwogfQogCi12b2lkIEF0dGFjaG1lbnRJbmZvOjpidWlsZFdyYXBwZWRMaW5lcyhjb25zdCBT
dHJpbmcmIHRleHQsIENURm9udFJlZiBmb250LCBVSUNvbG9yICpjb2xvciwgdW5zaWduZWQgbWF4
aW11bUxpbmVDb3VudCkKK3ZvaWQgUmVuZGVyQXR0YWNobWVudEluZm86OmJ1aWxkV3JhcHBlZExp
bmVzKGNvbnN0IFN0cmluZyYgdGV4dCwgQ1RGb250UmVmIGZvbnQsIFVJQ29sb3IgKmNvbG9yLCB1
bnNpZ25lZCBtYXhpbXVtTGluZUNvdW50KQogewogICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTU3OCw3ICsxNTc4LDcgQEAgdm9pZCBBdHRhY2htZW50SW5mbzo6
YnVpbGRXcmFwcGVkTGluZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBDVEZvbnRSZWYgZm9udCwgVUlD
b2wKICAgICBhZGRMaW5lKHRydW5jYXRlZExpbmUuZ2V0KCkpOwogfQogCi12b2lkIEF0dGFjaG1l
bnRJbmZvOjpidWlsZFNpbmdsZUxpbmUoY29uc3QgU3RyaW5nJiB0ZXh0LCBDVEZvbnRSZWYgZm9u
dCwgVUlDb2xvciAqY29sb3IpCit2b2lkIFJlbmRlckF0dGFjaG1lbnRJbmZvOjpidWlsZFNpbmds
ZUxpbmUoY29uc3QgU3RyaW5nJiB0ZXh0LCBDVEZvbnRSZWYgZm9udCwgVUlDb2xvciAqY29sb3Ip
CiB7CiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0xNjUzLDcg
KzE2NTMsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFVJSW1hZ2U+IGljb25Gb3JBdHRhY2htZW50KGNv
bnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotQXR0YWNobWVudEluZm86OkF0dGFjaG1lbnRJbmZvKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQm
IGF0dGFjaG1lbnQpCitSZW5kZXJBdHRhY2htZW50SW5mbzo6UmVuZGVyQXR0YWNobWVudEluZm8o
Y29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCkKIHsKICAgICBhdHRhY2htZW50UmVj
dCA9IEZsb2F0UmVjdCgwLCAwLCBhdHRhY2htZW50LndpZHRoKCkudG9GbG9hdCgpLCBhdHRhY2ht
ZW50LmhlaWdodCgpLnRvRmxvYXQoKSk7CiAKQEAgLTE3MDMsMTEgKzE3MDMsMTEgQEAgTGF5b3V0
U2l6ZSBSZW5kZXJUaGVtZUlPUzo6YXR0YWNobWVudEludHJpbnNpY1NpemUoY29uc3QgUmVuZGVy
QXR0YWNobWVudCYpIGNvbnMKIAogaW50IFJlbmRlclRoZW1lSU9TOjphdHRhY2htZW50QmFzZWxp
bmUoY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0YWNobWVudCkgY29uc3QKIHsKLSAgICBBdHRh
Y2htZW50SW5mbyBpbmZvKGF0dGFjaG1lbnQpOworICAgIFJlbmRlckF0dGFjaG1lbnRJbmZvIGlu
Zm8oYXR0YWNobWVudCk7CiAgICAgcmV0dXJuIGluZm8uYmFzZWxpbmU7CiB9CiAKLXN0YXRpYyB2
b2lkIHBhaW50QXR0YWNobWVudEljb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBBdHRhY2ht
ZW50SW5mbyYgaW5mbykKK3N0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEljb24oR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBSZW5kZXJBdHRhY2htZW50SW5mbyYgaW5mbykKIHsKICAgICBpZiAo
IWluZm8uaWNvbikKICAgICAgICAgcmV0dXJuOwpAQCAtMTcxOSw3ICsxNzE5LDcgQEAgc3RhdGlj
IHZvaWQgcGFpbnRBdHRhY2htZW50SWNvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEF0dGFj
aG1lbnRJbmZvJiBpbmZvKQogICAgIGNvbnRleHQuZHJhd0ltYWdlKCppY29uSW1hZ2UsIGluZm8u
aWNvblJlY3QpOwogfQogCi1zdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRUZXh0KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgQXR0YWNobWVudEluZm8mIGluZm8pCitzdGF0aWMgdm9pZCBwYWlu
dEF0dGFjaG1lbnRUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyQXR0YWNobWVu
dEluZm8mIGluZm8pCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBsaW5lIDogaW5mby5saW5lcykg
ewogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHNhdmVyKGNvbnRleHQpOwpAQCAt
MTczMiw3ICsxNzMyLDcgQEAgc3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50VGV4dChHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIEF0dGFjaG1lbnRJbmZvJiBpbmZvKQogICAgIH0KIH0KIAotc3Rh
dGljIHZvaWQgcGFpbnRBdHRhY2htZW50UHJvZ3Jlc3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBBdHRhY2htZW50SW5mbyYgaW5mbykKK3N0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudFByb2dy
ZXNzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyQXR0YWNobWVudEluZm8mIGluZm8p
CiB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzYXZlcihjb250ZXh0KTsKIApAQCAt
MTc1MSw3ICsxNzUxLDcgQEAgc3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50UHJvZ3Jlc3MoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBBdHRhY2htZW50SW5mbyYgaW4KICAgICBjb250ZXh0LmZp
bGxQYXRoKHByb2dyZXNzUGF0aCk7CiB9CiAKLXN0YXRpYyBQYXRoIGF0dGFjaG1lbnRCb3JkZXJQ
YXRoKEF0dGFjaG1lbnRJbmZvJiBpbmZvKQorc3RhdGljIFBhdGggYXR0YWNobWVudEJvcmRlclBh
dGgoUmVuZGVyQXR0YWNobWVudEluZm8mIGluZm8pCiB7CiAgICAgUGF0aCBib3JkZXJQYXRoOwog
ICAgIGJvcmRlclBhdGguYWRkUm91bmRlZFJlY3QoaW5mby5hdHRhY2htZW50UmVjdCwgRmxvYXRT
aXplKGF0dGFjaG1lbnRCb3JkZXJSYWRpdXMsIGF0dGFjaG1lbnRCb3JkZXJSYWRpdXMpKTsKQEAg
LTE3NzIsNyArMTc3Miw3IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50QXR0YWNobWVudChj
b25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEluCiAKICAgICBjb25zdCBS
ZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50ID0gZG93bmNhc3Q8UmVuZGVyQXR0YWNobWVudD4o
cmVuZGVyZXIpOwogCi0gICAgQXR0YWNobWVudEluZm8gaW5mbyhhdHRhY2htZW50KTsKKyAgICBS
ZW5kZXJBdHRhY2htZW50SW5mbyBpbmZvKGF0dGFjaG1lbnQpOwogCiAgICAgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHNhdmVyKGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKaW5kZXggNzA2ZGY1NmRjNTNmMGQ4ZDgwYTNjZjRiNGUwYmM0NGZkMzhhMmEwOS4u
YThiY2M5N2NmNTBkYWZkYTAxMTU3NGQ1YTIyNjJhOWFmNmViM2JiZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0zNjgsNiArMzY4LDcgQEAgZGVmIGhlYWRl
cnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdTdHJpbmcnOiBbJzx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4nXSwKICAgICAgICAgJ1BBTDo6U2Vzc2lvbklEJzogWyc8cGFsL1Nlc3Npb25JRC5oPidd
LAogICAgICAgICAnV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zJzogWyc8V2ViQ29y
ZS9BdHRhY2htZW50VHlwZXMuaD4nXSwKKyAgICAgICAgJ1dlYkNvcmU6OkF0dGFjaG1lbnRJbmZv
JzogWyc8V2ViQ29yZS9BdHRhY2htZW50VHlwZXMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkF1
dG9wbGF5RXZlbnRGbGFncyc6IFsnPFdlYkNvcmUvQXV0b3BsYXlFdmVudC5oPiddLAogICAgICAg
ICAnV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyc6IFsnPFdlYkNvcmUvSlNET01FeGNlcHRpb25I
YW5kbGluZy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyc6IFsn
PFdlYkNvcmUvRmlsZUNob29zZXIuaD4nXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDgxYzRlMGY1NDkwZDJmMGFjMWRhZThiZDYyNjhm
ODBlNzg2ZWU1MGIuLmY4ZTM1N2I4YTljZWY4YTE0MWI2ODIxZDE5Mzk4ZmMzZjgxY2M5NTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAt
MjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlNo
YXJlYWJsZUJpdG1hcC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXR0YWNobWVudFR5cGVzLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvQmxvYlBhcnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlUXVlcnlPcHRpb25zLmg+
CkBAIC0yNzcxLDQgKzI3NzIsNDMgQEAgYm9vbCBBcmd1bWVudENvZGVyPFByb21pc2VkQmxvYklu
Zm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUHJvbWlzZWRCbG9iSW5mbyYKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKK3ZvaWQgQXJn
dW1lbnRDb2RlcjxBdHRhY2htZW50SW5mbz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBBdHRhY2htZW50SW5mbyYgaW5mbykKK3sKKyAgICBib29sIGRhdGFJc051bGwgPSAhaW5mby5k
YXRhOworICAgIGVuY29kZXIgPDwgaW5mby5jb250ZW50VHlwZSA8PCBpbmZvLm5hbWUgPDwgaW5m
by5maWxlUGF0aCA8PCBkYXRhSXNOdWxsOworICAgIGlmICghZGF0YUlzTnVsbCkgeworICAgICAg
ICBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UgeyBpbmZvLmRhdGEuZ2V0
KCkgfTsKKyAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxEYXRhUmVmZXJlbmNlJj4oZGF0
YVJlZmVyZW5jZSk7CisgICAgfQorfQorCitib29sIEFyZ3VtZW50Q29kZXI8QXR0YWNobWVudElu
Zm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQXR0YWNobWVudEluZm8mIGluZm8pCit7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLmNvbnRlbnRUeXBlKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLm5hbWUpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8uZmlsZVBhdGgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIGRhdGFJc051bGwgPSB0cnVlOworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YUlzTnVsbCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICghZGF0YUlzTnVsbCkgeworICAgICAgICBEYXRhUmVmZXJlbmNlIGRhdGFSZWZl
cmVuY2U7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YVJlZmVyZW5jZSkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGluZm8uZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7CisgICAg
fQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQorCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggZjUzZGVkMmNiNTI4OGRhZTZkOWEzN2UyZGIyOGZh
ZDUwODRiYmNiZi4uNGEwZDk0MDExNzk5YjczN2E1NzFjMDA5Zjc3NGIwMWM2Yzk0Nzk2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTg5LDYg
Kzg5LDcgQEAgY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiBjbGFzcyBVc2VyU3R5bGVTaGVl
dDsKIGNsYXNzIFVSTDsKIAorc3RydWN0IEF0dGFjaG1lbnRJbmZvOwogc3RydWN0IENhY2hlUXVl
cnlPcHRpb25zOwogc3RydWN0IENvbXBvc2l0aW9uVW5kZXJsaW5lOwogc3RydWN0IERpY3RhdGlv
bkFsdGVybmF0aXZlOwpAQCAtNjg5LDYgKzY5MCwxNSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OlByb21pc2VkQmxvYkluZm8+IHsKICAgICBzdGF0aWMgYm9vbCBk
ZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OlByb21pc2VkQmxvYkluZm8mKTsKIH07CiAKKyNpZiBF
TkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkF0dGFjaG1lbnRJbmZvPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImLCBjb25zdCBXZWJDb3JlOjpBdHRhY2htZW50SW5mbyYpOworICAgIHN0YXRpYyBib29s
IGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6QXR0YWNobWVudEluZm8mKTsKK307CisKKyNlbmRp
ZgorCiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKaW5kZXggODVhOGEzZThhNWYwNjk2
OWYzNDIwMzMyNDRlOWEwNzdiNTE5MDAwYS4uMDRlMDcxN2UzYzdmMzJhYzk2Yzk3ZmY4OTkwYjVm
YTNjZmYyOWNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0
dGFjaG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2ht
ZW50LmNwcApAQCAtNDgsMTIgKzQ4LDEyIEBAIEF0dGFjaG1lbnQ6On5BdHRhY2htZW50KCkKIHsK
IH0KIAotdm9pZCBBdHRhY2htZW50OjpyZXF1ZXN0RGF0YShGdW5jdGlvbjx2b2lkKFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrKQordm9pZCBBdHRhY2htZW50OjpyZXF1ZXN0SW5mbyhGdW5jdGlvbjx2b2lkKGNvbnN0
IFdlYkNvcmU6OkF0dGFjaG1lbnRJbmZvJiwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKT4m
JiBjYWxsYmFjaykKIHsKICAgICBpZiAobV93ZWJQYWdlKQotICAgICAgICBtX3dlYlBhZ2UtPnJl
cXVlc3RBdHRhY2htZW50RGF0YShtX2lkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAg
ICAgICAgbV93ZWJQYWdlLT5yZXF1ZXN0QXR0YWNobWVudEluZm8obV9pZGVudGlmaWVyLCBXVEZN
b3ZlKGNhbGxiYWNrKSk7CiAgICAgZWxzZQotICAgICAgICBjYWxsYmFjayhudWxscHRyLCBXZWJL
aXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOworICAgICAgICBj
YWxsYmFjayh7IH0sIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlk
YXRlZCk7CiB9CiAKIHZvaWQgQXR0YWNobWVudDo6c2V0RGlzcGxheU9wdGlvbnMoV2ViQ29yZTo6
QXR0YWNobWVudERpc3BsYXlPcHRpb25zIG9wdGlvbnMsIEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5oCmluZGV4IGQyNmYyZWY3NjhiZWQ3NDg1OTgyODBhMzljMTQz
MGJiZTE1OWM0ZmYuLjI2MWQxNDM5NTIxMzE3ODAzYzJhMDc5NzAxY2M4ZTg3MWE4Y2M0MzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApAQCAtMzUsNiAr
MzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0
IEF0dGFjaG1lbnREaXNwbGF5T3B0aW9uczsKK3N0cnVjdCBBdHRhY2htZW50SW5mbzsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC00OSw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5BdHRhY2htZW50KCk7CiAKICAgICBjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQotICAgIHZvaWQgcmVxdWVzdERhdGEoRnVuY3Rp
b248dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgV2ViS2l0OjpDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJik7CisgICAgdm9pZCByZXF1ZXN0SW5mbyhGdW5jdGlvbjx2b2lkKGNvbnN0
IFdlYkNvcmU6OkF0dGFjaG1lbnRJbmZvJiwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKT4m
Jik7CiAgICAgdm9pZCBzZXREaXNwbGF5T3B0aW9ucyhXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxh
eU9wdGlvbnMsIEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7
CiAgICAgdm9pZCBzZXREYXRhQW5kQ29udGVudFR5cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiwg
Y29uc3QgV1RGOjpTdHJpbmcmIG5ld0NvbnRlbnRUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgbmV3
RmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRh
Y2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVu
dC5oCmluZGV4IDIxMGNhMGVlYTRiN2IzYzZlMmY1NGVlZDg3ZTYzZTdjYWZkNGIzZjIuLmQyNWI1
MmFhOGMyNTA5ODg5YjBiM2FlMDAxOWFjNzYzMjZiM2RhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQuaApAQCAtNDIsMTEgKzQyLDIx
IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSkKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBfV0tBdHRhY2htZW50RGlzcGxheU1vZGUgbW9kZTsK
IEBlbmQKIAorV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKQorQGludGVyZmFjZSBfV0tBdHRhY2htZW50SW5mbyA6IE5TT2JqZWN0CitAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpjb250ZW50VHlwZTsKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcgKm5hbWU7CitAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpmaWxlUGF0aDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSwgbnVsbGFibGUpIE5TRGF0YSAqZGF0YTsKK0BlbmQKKwogV0tfQ0xBU1NfQVZB
SUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQogQGludGVyZmFjZSBf
V0tBdHRhY2htZW50IDogTlNPYmplY3QKKy0gKHZvaWQpcmVxdWVzdEluZm86KHZvaWQoXikoX1dL
QXR0YWNobWVudEluZm8gKiBfTnVsbGFibGUsIE5TRXJyb3IgKiBfTnVsbGFibGUpKWNvbXBsZXRp
b25IYW5kbGVyOwogLSAodm9pZClyZXF1ZXN0RGF0YToodm9pZCheKShOU0RhdGEgKiBfTnVsbGFi
bGUsIE5TRXJyb3IgKiBfTnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClzZXRE
aXNwbGF5T3B0aW9uczooX1dLQXR0YWNobWVudERpc3BsYXlPcHRpb25zICopb3B0aW9ucyBjb21w
bGV0aW9uOih2b2lkKF4gX051bGxhYmxlKShOU0Vycm9yICogX051bGxhYmxlKSljb21wbGV0aW9u
SGFuZGxlcjsKIC0gKHZvaWQpc2V0RGF0YTooTlNEYXRhICopZGF0YSBuZXdDb250ZW50VHlwZToo
bnVsbGFibGUgTlNTdHJpbmcgKiluZXdDb250ZW50VHlwZSBuZXdGaWxlbmFtZToobnVsbGFibGUg
TlNTdHJpbmcgKiluZXdGaWxlbmFtZSBjb21wbGV0aW9uOih2b2lkKF4gX051bGxhYmxlKShOU0Vy
cm9yICogX051bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgTlNTdHJpbmcgKnVuaXF1ZUlkZW50aWZpZXI7CiBAZW5kCiAKIE5TX0FTU1VN
RV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0F0dGFjaG1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXR0YWNobWVudC5tbQppbmRleCA5MzljYzg3MjI0ZTU1MDdlYTE5YzhmNzU2NTUyNGI5NmMz
MDBkZDQ0Li5iYWViMzEzYmFjZWU4OWMxNDMzMGM3N2JkODMxYWZjMzMwMTZlODdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbQpA
QCAtNjksNiArNjksNDggQEAgLSAoV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zKWNv
cmVEaXNwbGF5T3B0aW9ucwogCiBAZW5kCiAKK0BpbXBsZW1lbnRhdGlvbiBfV0tBdHRhY2htZW50
SW5mbyB7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gX2RhdGE7CisgICAgUmV0YWluUHRyPE5TU3Ry
aW5nPiBfbmFtZTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9maWxlUGF0aDsKKyAgICBSZXRh
aW5QdHI8TlNTdHJpbmc+IF9jb250ZW50VHlwZTsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoSW5mbzooY29uc3QgV2ViQ29yZTo6QXR0YWNobWVudEluZm8mKWluZm8KK3sKKyAgICBpZiAo
IShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9kYXRh
ID0gaW5mby5kYXRhID8gaW5mby5kYXRhLT5jcmVhdGVOU0RhdGEoKSA6IG5pbDsKKyAgICBfY29u
dGVudFR5cGUgPSBhZG9wdE5TKFsoTlNTdHJpbmcgKilpbmZvLmNvbnRlbnRUeXBlID86IEAiIiBj
b3B5XSk7CisgICAgX25hbWUgPSBhZG9wdE5TKFsoTlNTdHJpbmcgKilpbmZvLm5hbWUgPzogQCIi
IGNvcHldKTsKKyAgICBfZmlsZVBhdGggPSBhZG9wdE5TKFsoTlNTdHJpbmcgKilpbmZvLmZpbGVQ
YXRoID86IEAiIiBjb3B5XSk7CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAoTlNEYXRhICop
ZGF0YQoreworICAgIHJldHVybiBfZGF0YS5nZXQoKTsKK30KKworLSAoTlNTdHJpbmcgKiluYW1l
Cit7CisgICAgcmV0dXJuIF9uYW1lLmdldCgpOworfQorCistIChOU1N0cmluZyAqKWZpbGVQYXRo
Cit7CisgICAgcmV0dXJuIF9maWxlUGF0aC5nZXQoKTsKK30KKworLSAoTlNTdHJpbmcgKiljb250
ZW50VHlwZQoreworICAgIHJldHVybiBfY29udGVudFR5cGUuZ2V0KCk7Cit9CisKK0BlbmQKKwog
QGltcGxlbWVudGF0aW9uIF9XS0F0dGFjaG1lbnQKIAogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmpl
Y3QKQEAgLTgxLDE5ICsxMjMsMjkgQEAgLSAoQk9PTClpc0VxdWFsOihpZClvYmplY3QKICAgICBy
ZXR1cm4gW29iamVjdCBpc0tpbmRPZkNsYXNzOltfV0tBdHRhY2htZW50IGNsYXNzXV0gJiYgW3Nl
bGYudW5pcXVlSWRlbnRpZmllciBpc0VxdWFsOlsoX1dLQXR0YWNobWVudCAqKW9iamVjdCB1bmlx
dWVJZGVudGlmaWVyXV07CiB9CiAKLS0gKHZvaWQpcmVxdWVzdERhdGE6KHZvaWQoXikoTlNEYXRh
ICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKKy0gKHZvaWQpcmVxdWVzdEluZm86KHZv
aWQoXikoX1dLQXR0YWNobWVudEluZm8gKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgog
ewotICAgIF9hdHRhY2htZW50LT5yZXF1ZXN0RGF0YShbIGNhcHR1cmVkQmxvY2sgPSBtYWtlQmxv
Y2tQdHIoY29tcGxldGlvbkhhbmRsZXIpIF0gKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGJ1ZmZlciwgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgIF9hdHRhY2htZW50LT5y
ZXF1ZXN0SW5mbyhbY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxl
cildIChjb25zdCBXZWJDb3JlOjpBdHRhY2htZW50SW5mbyYgaW5mbywgQ2FsbGJhY2tCYXNlOjpF
cnJvciBlcnJvcikgewogICAgICAgICBpZiAoIWNhcHR1cmVkQmxvY2spCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgaWYgKGJ1ZmZlciAmJiBlcnJvciA9PSBDYWxsYmFja0Jhc2U6OkVy
cm9yOjpOb25lKQotICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhidWZmZXItPmNyZWF0ZU5TRGF0
YSgpLmF1dG9yZWxlYXNlKCksIG5pbCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhcHR1
cmVkQmxvY2sobmlsLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2Rl
OjEgdXNlckluZm86bmlsXSk7CisgICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVy
cm9yOjpOb25lKSB7CisgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKG5pbCwgW05TRXJyb3IgZXJy
b3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yV2ViVmlld0ludmFsaWRhdGVk
IHVzZXJJbmZvOm5pbF0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgYXV0byBhdHRhY2htZW50SW5mbyA9IGFkb3B0TlMoW1tfV0tBdHRhY2htZW50SW5mbyBhbGxv
Y10gaW5pdFdpdGhJbmZvOmluZm9dKTsKKyAgICAgICAgY2FwdHVyZWRCbG9jayhhdHRhY2htZW50
SW5mby5nZXQoKSwgbmlsKTsKICAgICB9KTsKIH0KIAorLSAodm9pZClyZXF1ZXN0RGF0YToodm9p
ZCheKShOU0RhdGEgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIFtzZWxm
IHJlcXVlc3RJbmZvOltwcm90ZWN0ZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFu
ZGxlcildIChfV0tBdHRhY2htZW50SW5mbyAqaW5mbywgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAg
ICAgcHJvdGVjdGVkQmxvY2soaW5mby5kYXRhLCBlcnJvcik7CisgICAgfV07Cit9CisKIC0gKHZv
aWQpc2V0RGlzcGxheU9wdGlvbnM6KF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyAqKW9wdGlv
bnMgY29tcGxldGlvbjoodm9pZCheKShOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAg
ICAgYXV0byBjb3JlT3B0aW9ucyA9IG9wdGlvbnMgPyBvcHRpb25zLmNvcmVEaXNwbGF5T3B0aW9u
cyA6IFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyB7IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBlMTBhMmViMzFiN2ZlN2U5MmU1ZDgzYmM4
MDYzZDY4ODQzNWUyYTViLi41ODRhNjAwNTgyNWU0NGMyNWM2NzU1ZjMyN2RhZmZlNWE2YzE1YWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTUyMDYsMjMg
KzUyMDYsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnZvaWRDYWxsYmFjayhDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFjaygpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6c2hhcmVkQnVmZmVyQ2FsbGJhY2soY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhUmVmZXJlbmNlLCBib29sIGlzTnVsbCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQorI2lm
IEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKK3ZvaWQgV2ViUGFnZVByb3h5OjphdHRhY2ht
ZW50SW5mb0NhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkF0dGFjaG1lbnRJbmZvJiBpbmZvLCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiB7Ci0gICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRh
a2U8U2hhcmVkQnVmZmVyQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOworICAgIGF1dG8gY2FsbGJhY2sg
PSBtX2NhbGxiYWNrcy50YWtlPEF0dGFjaG1lbnRJbmZvQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwog
ICAgIGlmICghY2FsbGJhY2spIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoaXNOdWxsKSB7Ci0gICAgICAgIEFTU0VSVChk
YXRhUmVmZXJlbmNlLmlzRW1wdHkoKSk7Ci0gICAgICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJh
Y2tXaXRoUmV0dXJuVmFsdWUobnVsbHB0cik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSkpOworICAg
IE1FU1NBR0VfQ0hFQ0tfVVJMKGluZm8uZmlsZVBhdGgpOworICAgIGNhbGxiYWNrLT5wZXJmb3Jt
Q2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoaW5mbyk7CiB9CiAKKyNlbmRpZgorCiB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGF0YUNhbGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVy
ZW5jZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2Nh
bGxiYWNrcy50YWtlPERhdGFDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CkBAIC03MjM3LDE1ICs3MjM2
LDE1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgY29uc3QgQXR0YWNobWVudERpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpJbnNlcnRBdHRhY2htZW50KGlkZW50aWZpZXIsIG9wdGlvbnMsIGZpbGVu
YW1lLCBjb250ZW50VHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHsgJmRhdGEg
fSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVl
c3RBdHRhY2htZW50RGF0YShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQo
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQor
dm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBdHRhY2htZW50SW5mbyhjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoY29uc3QgQXR0YWNobWVudEluZm8mLCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkgewotICAgICAg
ICBjYWxsYmFjayhudWxscHRyLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRh
dGVkKTsKKyAgICAgICAgY2FsbGJhY2soeyB9LCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldh
c0ludmFsaWRhdGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBdHRhY2htZW50RGF0YShpZGVudGlmaWVyLCBjYWxs
YmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6UmVxdWVzdEF0dGFjaG1lbnRJbmZvKGlkZW50aWZpZXIsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJ
RCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRBdHRhY2htZW50RGlzcGxheU9wdGlvbnMo
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgb3B0aW9u
cywgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZjgwZmRjZDY3ZTA1MWQ5M2FhZTJi
ZTg0OTA3YTk4MTNmYmE0MDA4Yy4uZDg4ZTU5YmM4N2VjZmMyODE3YzM3MWNhNzUwN2FlMWVmZDM2
MjEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE4Myw2ICsx
ODMsNyBAQCB1c2luZyBGbG9hdEJveEV4dGVudCA9IFJlY3RFZGdlczxmbG9hdD47CiAjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBBdHRh
Y2htZW50RGlzcGxheU9wdGlvbnM7CitzdHJ1Y3QgQXR0YWNobWVudEluZm87CiB9CiAjZW5kaWYK
IApAQCAtMjQ3LDcgKzI0OCwxMCBAQCB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazx1aW50NjRfdD4g
VW5zaWduZWRDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEVkaXRpbmdSYW5nZT4g
RWRpdGluZ1JhbmdlQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBTdHJp
bmcmPiBTdHJpbmdDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlKiwgYm9vbCwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyY+
IFNjcmlwdFZhbHVlQ2FsbGJhY2s7Ci10eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj4gU2hhcmVkQnVmZmVyQ2FsbGJhY2s7CisKKyNpZiBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQordHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29y
ZTo6QXR0YWNobWVudEluZm8mPiBBdHRhY2htZW50SW5mb0NhbGxiYWNrOworI2VuZGlmCiAKICNp
ZiBQTEFURk9STShHVEspCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxBUEk6OkVycm9yKj4gUHJp
bnRGaW5pc2hlZENhbGxiYWNrOwpAQCAtMTI1NCw5ICsxMjU4LDEwIEBAIHB1YmxpYzoKIAogI2lm
IEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlP
cHRpb25zJiwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNv
bnRlbnRUeXBlLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIEZ1bmN0aW9uPHZvaWQoQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgcmVxdWVzdEF0dGFjaG1lbnREYXRhKGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgcmVxdWVzdEF0
dGFjaG1lbnRJbmZvKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChjb25z
dCBXZWJDb3JlOjpBdHRhY2htZW50SW5mbyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAg
ICB2b2lkIHNldEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyhjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucywgRnVuY3Rpb248dm9pZChDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBzZXRBdHRhY2htZW50RGF0YUFuZENvbnRl
bnRUeXBlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBk
YXRhLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mJiBuZXdDb250ZW50VHlwZSwgc3RkOjpvcHRpb25h
bDxTdHJpbmc+JiYgbmV3RmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYpOworICAgIHZvaWQgYXR0YWNobWVudEluZm9DYWxsYmFjayhjb25zdCBXZWJDb3JlOjpB
dHRhY2htZW50SW5mbyYsIENhbGxiYWNrSUQpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTElD
QVRJT05fTUFOSUZFU1QpCkBAIC0xNTE3LDcgKzE1MjIsNiBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCB2b2lkQ2FsbGJhY2soQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkYXRhQ2FsbGJhY2soY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBzaGFyZWRCdWZmZXJD
YWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBib29sIGlzTnVsbCwgQ2FsbGJhY2tJ
RCk7CiAgICAgdm9pZCBpbWFnZUNhbGxiYWNrKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxl
JiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzdHJpbmdDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBD
YWxsYmFja0lEKTsKICAgICB2b2lkIGludmFsaWRhdGVTdHJpbmdDYWxsYmFjayhDYWxsYmFja0lE
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgppbmRleCAxZDhkNDNhY2U0NzAxZDE0N2ZmODkxYmMwZmFkNTM0MTZiYzJiNDBlLi42NTNiYjFj
NzQxMmFiYmM0OTIyM2IzMjRhMDAzM2Y5ZGM3YzBkZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xNTcsNyArMTU3LDYgQEAg
bWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICAjIENhbGxiYWNrIG1lc3NhZ2VzCiAgICAg
Vm9pZENhbGxiYWNrKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIERhdGFDYWxs
YmFjayhJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCi0gICAgU2hhcmVkQnVmZmVyQ2FsbGJhY2soSVBDOjpEYXRhUmVmZXJlbmNlIHJl
c3VsdERhdGEsIGJvb2wgaXNOdWxsLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCk7CiAg
ICAgSW1hZ2VDYWxsYmFjayhXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGJpdG1hcEhh
bmRsZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgU3RyaW5nQ2FsbGJhY2so
U3RyaW5nIHJlc3VsdFN0cmluZywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAg
SW52YWxpZGF0ZVN0cmluZ0NhbGxiYWNrKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQpA
QCAtMTY3LDYgKzE2Niw5IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRWRpdGlu
Z1JhbmdlQ2FsbGJhY2soc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJhbmdlLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBVbnNpZ25lZENhbGxiYWNrKHVpbnQ2NF90IHJl
c3VsdCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgUmVjdEZvckNoYXJhY3Rl
clJhbmdlQ2FsbGJhY2soV2ViQ29yZTo6SW50UmVjdCByZWN0LCBzdHJ1Y3QgV2ViS2l0OjpFZGl0
aW5nUmFuZ2UgYWN0dWFsUmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorI2lm
IEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgQXR0YWNobWVudEluZm9DYWxsYmFjayhz
dHJ1Y3QgV2ViQ29yZTo6QXR0YWNobWVudEluZm8gaW5mbywgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpOworI2VuZGlmCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogICAg
IEFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFjayhzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxp
Y2F0aW9uTWFuaWZlc3Q+IG1hbmlmZXN0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCBjYjhjMDVjYzk5ZDU4ZDI4NmNhZDYxNjRlYWMwYTg3MDE3YWM1Y2Q5Li5kOTQyOWYzYTNl
MzljYTNhN2VjYzU3NGFjM2FmNzQzYTNkNmJlYTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNTg1NiwxNCArNTg1Niw2IEBAIHZvaWQgV2Vi
UGFnZTo6c3RvcmFnZUFjY2Vzc1Jlc3BvbnNlKGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29u
dGV4dElkKQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZTo6aW52b2tlU2hhcmVkQnVmZmVyQ2Fs
bGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKLXsKLSAgICBpZiAoYnVmZmVyKQotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlNoYXJlZEJ1ZmZlckNhbGxiYWNrKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSB7
IGJ1ZmZlci5nZXQoKSB9LCBmYWxzZSwgY2FsbGJhY2tJRCkpOwotICAgIGVsc2UKLSAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaGFyZWRCdWZmZXJDYWxsYmFjayh7IH0sIHRy
dWUsIGNhbGxiYWNrSUQpKTsKLX0KLQogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAK
IHZvaWQgV2ViUGFnZTo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IGNvbnN0IEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKQEAgLTU4NzMsMTkgKzU4
NjUsMTYgQEAgdm9pZCBXZWJQYWdlOjppbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllciwgY29uc3QgQXR0YWNobWVudERpc3BsYXkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6
cmVxdWVzdEF0dGFjaG1lbnREYXRhKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgQ2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpyZXF1ZXN0QXR0YWNobWVudEluZm8oY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBh
dHRhY2htZW50ID0gYXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyKTsK
ICAgICBpZiAoIWF0dGFjaG1lbnQpIHsKLSAgICAgICAgaW52b2tlU2hhcmVkQnVmZmVyQ2FsbGJh
Y2soeyB9LCBjYWxsYmFja0lEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpBdHRhY2htZW50SW5mb0NhbGxiYWNrKHsgfSwgY2FsbGJhY2tJRCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgYXR0YWNobWVudC0+cmVxdWVzdERhdGEoW2NhbGxiYWNrSUQsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcHJvdGVjdGVkQXR0YWNobWVudCA9IFdURk1v
dmUoYXR0YWNobWVudCldIChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgewotICAgICAg
ICBpZiAoYnVmZmVyKQotICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+aW52b2tlU2hhcmVkQnVm
ZmVyQ2FsbGJhY2soV1RGTW92ZShidWZmZXIpLCBjYWxsYmFja0lEKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+aW52b2tlU2hhcmVkQnVmZmVyQ2FsbGJhY2soeyB9
LCBjYWxsYmFja0lEKTsKKyAgICBhdHRhY2htZW50LT5yZXF1ZXN0SW5mbyhbY2FsbGJhY2tJRCwg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcm90ZWN0ZWRBdHRhY2htZW50ID0gV1RG
TW92ZShhdHRhY2htZW50KV0gKGNvbnN0IEF0dGFjaG1lbnRJbmZvJiBpbmZvKSB7CisgICAgICAg
IHByb3RlY3RlZFRoaXMtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QXR0YWNobWVudElu
Zm9DYWxsYmFjayhpbmZvLCBjYWxsYmFja0lEKSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAxMzUzZTFmYzI5NzZkYzBjMWU1
MzJmZmMxY2M1YTEwOWNkZDBkMzFjLi45MDczYjVlZDM3ZWQ5M2EwZGEzNjhjZTFjMGZhMTMxMDY4
MGJkMWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBA
IC0xMDQzLDcgKzEwNDMsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVN
RU5UKQogICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyYsIGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCByZXF1ZXN0QXR0YWNobWVudERh
dGEoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHJlcXVl
c3RBdHRhY2htZW50SW5mbyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIENhbGxiYWNrSUQpOwog
ICAgIHZvaWQgc2V0QXR0YWNobWVudERpc3BsYXlPcHRpb25zKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zJiwgQ2FsbGJhY2tJ
RCk7CiAgICAgdm9pZCBzZXRBdHRhY2htZW50RGF0YUFuZENvbnRlbnRUeXBlKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IG5ld0NvbnRlbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmV3RmlsZW5hbWUs
IENhbGxiYWNrSUQpOwogI2VuZGlmCkBAIC0xMTY2LDggKzExNjYsNiBAQCBwcml2YXRlOgogICAg
IHZvaWQgcmVzdG9yZVNlc3Npb24oY29uc3QgVmVjdG9yPEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0
ZT4mKTsKICAgICB2b2lkIGRpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCk7CiAKLSAg
ICB2b2lkIGludm9rZVNoYXJlZEJ1ZmZlckNhbGxiYWNrKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYsIENhbGxiYWNrSUQpOwotCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAg
ICAgdm9pZCBzZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uKGJvb2wpOwogICAgIHZvaWQgc2V0UmVt
b3RlSW5zcGVjdGlvbk5hbWVPdmVycmlkZShjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDRl
NDNiYzc3YzYxZTc5OGYxMWU1ZTQzZGVkYzc5N2FlYzlhMzU4NjAuLmYyNTNlNDIyMmMwYThiODUy
OWFiNTUwMDFkN2MzNTE3NzM1MGM5ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNDk0LDcgKzQ5NCw3IEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogCiAjaWYgRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKICAgICBJbnNlcnRBdHRhY2htZW50KFN0cmluZyBpZGVudGlmaWVyLCBzdHJ1
Y3QgV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25zIG9wdGlvbnMsIFN0cmluZyBmaWxl
bmFtZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlLCBJUEM6OkRhdGFSZWZlcmVu
Y2UgZGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgUmVxdWVzdEF0dGFj
aG1lbnREYXRhKFN0cmluZyBpZGVudGlmaWVyLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyAgICBSZXF1ZXN0QXR0YWNobWVudEluZm8oU3RyaW5nIGlkZW50aWZpZXIsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFNldEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyhT
dHJpbmcgaWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9u
cyBvcHRpb25zLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBTZXRBdHRhY2ht
ZW50RGF0YUFuZENvbnRlbnRUeXBlKFN0cmluZyBpZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVu
Y2UgZGF0YSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG5ld0NvbnRlbnRUeXBlLCBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gbmV3RmlsZW5hbWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggZDJjNjhiYWUyYjFjZDNlMzU3NDUwNWEyMDRmNzI4NDI5MTQzMTdjOS4uYTVlOTE5Mjk1MjZj
OTM4ZTVmOTgzNWQ1Mjc1NzAzNmE5YTM3Yzk2MiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE4LTAxLTA4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50
IFN1cHBvcnRdIEV4cG9zZSBmaWxlIG5hbWUgYW5kIGNvbnRlbnQgdHlwZSBvZiBXS0F0dGFjaG1l
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTM5
MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYzMzY4Mzc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgVGltIEhvcnRvbi4KKworICAgICAgICBBZGp1c3RzIHNvbWUgZXhpc3RpbmcgdGVzdHMgaW4g
V0tBdHRhY2htZW50VGVzdHMgdG8gZXhlcmNpc2UgLXJlcXVlc3RJbmZvOi4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW06Cisg
ICAgICAgICgtW19XS0F0dGFjaG1lbnQgc3luY2hyb25vdXNseVJlcXVlc3RJbmZvOl0pOgorICAg
ICAgICAoLVtfV0tBdHRhY2htZW50IHN5bmNocm9ub3VzbHlSZXF1ZXN0RGF0YTpdKToKKworICAg
ICAgICBSZWltcGxlbWVudCB0aGlzIGluIHRlcm1zIG9mIC1zeW5jaHJvbm91c2x5UmVxdWVzdElu
Zm86LgorCisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6
XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxOC0wMS0wOCAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBDb3B5aW5nLCBwYXN0
aW5nLCBhbmQgdGhlbiBkZWxldGluZyBhbiBhdHRhY2htZW50IGVsZW1lbnQgYnJlYWtzIGF0dGFj
aG1lbnQgZGF0YSByZXF1ZXN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KaW5kZXggNmIwZjA1NTc0NTZh
N2JmYzUxNWYwMzk5MDBmYjBiYmY5ODI1NGM3YS4uOGRkMzg2Njk4YTM0Yjk0Nzk3ZTk0NmI4YTA3
N2I0Zjk3ZDBlNGMyOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCkBAIC0yNzEsMTMgKzI3MSwxMyBA
QCAtICh2b2lkKXN5bmNocm9ub3VzbHlTZXREaXNwbGF5T3B0aW9uczooX1dLQXR0YWNobWVudERp
c3BsYXlPcHRpb25zICopb3B0aW9ucyBlcgogICAgICAgICAqZXJyb3IgPSByZXN1bHRFcnJvci5h
dXRvcmVsZWFzZSgpOwogfQogCi0tIChOU0RhdGEgKilzeW5jaHJvbm91c2x5UmVxdWVzdERhdGE6
KE5TRXJyb3IgKiopZXJyb3IKKy0gKF9XS0F0dGFjaG1lbnRJbmZvICopc3luY2hyb25vdXNseVJl
cXVlc3RJbmZvOihOU0Vycm9yICoqKWVycm9yCiB7Ci0gICAgX19ibG9jayBSZXRhaW5QdHI8TlNE
YXRhPiByZXN1bHQ7CisgICAgX19ibG9jayBSZXRhaW5QdHI8X1dLQXR0YWNobWVudEluZm8+IHJl
c3VsdDsKICAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0Vycm9yPiByZXN1bHRFcnJvcjsKICAgICBf
X2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOwotICAgIFtzZWxmIHJlcXVlc3REYXRhOl4oTlNEYXRh
ICpkYXRhLCBOU0Vycm9yICplcnJvcikgewotICAgICAgICByZXN1bHQgPSBkYXRhOworICAgIFtz
ZWxmIHJlcXVlc3RJbmZvOl4oX1dLQXR0YWNobWVudEluZm8gKmluZm8sIE5TRXJyb3IgKmVycm9y
KSB7CisgICAgICAgIHJlc3VsdCA9IGluZm87CiAgICAgICAgIHJlc3VsdEVycm9yID0gZXJyb3I7
CiAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgIH1dOwpAQCAtMjkwLDYgKzI5MCwxMSBAQCAtIChO
U0RhdGEgKilzeW5jaHJvbm91c2x5UmVxdWVzdERhdGE6KE5TRXJyb3IgKiopZXJyb3IKICAgICBy
ZXR1cm4gcmVzdWx0LmF1dG9yZWxlYXNlKCk7CiB9CiAKKy0gKE5TRGF0YSAqKXN5bmNocm9ub3Vz
bHlSZXF1ZXN0RGF0YTooTlNFcnJvciAqKillcnJvcgoreworICAgIHJldHVybiBbc2VsZiBzeW5j
aHJvbm91c2x5UmVxdWVzdEluZm86ZXJyb3JdLmRhdGE7Cit9CisKIC0gKHZvaWQpc3luY2hyb25v
dXNseVNldERhdGE6KE5TRGF0YSAqKWRhdGEgbmV3Q29udGVudFR5cGU6KE5TU3RyaW5nICopbmV3
Q29udGVudFR5cGUgbmV3RmlsZW5hbWU6KE5TU3RyaW5nICopbmV3RmlsZW5hbWUgZXJyb3I6KE5T
RXJyb3IgKiopZXJyb3IKIHsKICAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0Vycm9yPiByZXN1bHRF
cnJvcjsKQEAgLTMwNywxMyArMzEyLDE0IEBAIC0gKHZvaWQpc3luY2hyb25vdXNseVNldERhdGE6
KE5TRGF0YSAqKWRhdGEgbmV3Q29udGVudFR5cGU6KE5TU3RyaW5nICopbmV3Q29udGVuCiAKIC0g
KHZvaWQpZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6KE5TRGF0YSAqKWV4cGVjdGVkRGF0YQogewot
ICAgIE5TRXJyb3IgKmRhdGFSZXF1ZXN0RXJyb3IgPSBuaWw7Ci0gICAgTlNEYXRhICpvYnNlcnZl
ZERhdGEgPSBbc2VsZiBzeW5jaHJvbm91c2x5UmVxdWVzdERhdGE6JmRhdGFSZXF1ZXN0RXJyb3Jd
OwotICAgIEJPT0wgb2JzZXJ2ZWREYXRhSXNFcXVhbFRvRXhwZWN0ZWREYXRhID0gW29ic2VydmVk
RGF0YSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVkRGF0YV0gfHwgb2JzZXJ2ZWREYXRhID09IGV4cGVj
dGVkRGF0YTsKKyAgICBOU0Vycm9yICpyZXF1ZXN0RXJyb3IgPSBuaWw7CisgICAgX1dLQXR0YWNo
bWVudEluZm8gKmluZm8gPSBbc2VsZiBzeW5jaHJvbm91c2x5UmVxdWVzdEluZm86JnJlcXVlc3RF
cnJvcl07CisKKyAgICBCT09MIG9ic2VydmVkRGF0YUlzRXF1YWxUb0V4cGVjdGVkRGF0YSA9IFtp
bmZvLmRhdGEgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFdIHx8IGluZm8uZGF0YSA9PSBleHBl
Y3RlZERhdGE7CiAgICAgRVhQRUNUX1RSVUUob2JzZXJ2ZWREYXRhSXNFcXVhbFRvRXhwZWN0ZWRE
YXRhKTsKICAgICBpZiAoIW9ic2VydmVkRGF0YUlzRXF1YWxUb0V4cGVjdGVkRGF0YSkgewotICAg
ICAgICBOU0xvZyhAIkV4cGVjdGVkIGRhdGE6ICVAIGJ1dCBvYnNlcnZlZDogJUAgZm9yICVAIiwg
W2V4cGVjdGVkRGF0YSBzaG9ydERlc2NyaXB0aW9uXSwgW29ic2VydmVkRGF0YSBzaG9ydERlc2Ny
aXB0aW9uXSwgc2VsZik7Ci0gICAgICAgIE5TTG9nKEAiT2JzZXJ2ZWQgZXJyb3I6ICVAIHdoaWxl
IHJlYWRpbmcgZGF0YSBmb3IgJUAiLCBkYXRhUmVxdWVzdEVycm9yLCBzZWxmKTsKKyAgICAgICAg
TlNMb2coQCJFeHBlY3RlZCBkYXRhOiAlQCBidXQgb2JzZXJ2ZWQ6ICVAIGZvciAlQCIsIFtleHBl
Y3RlZERhdGEgc2hvcnREZXNjcmlwdGlvbl0sIFtpbmZvLmRhdGEgc2hvcnREZXNjcmlwdGlvbl0s
IHNlbGYpOworICAgICAgICBOU0xvZyhAIk9ic2VydmVkIGVycm9yOiAlQCB3aGlsZSByZWFkaW5n
IGRhdGEgZm9yICVAIiwgcmVxdWVzdEVycm9yLCBzZWxmKTsKICAgICB9CiB9CiAKQEAgLTQzMCw3
ICs0MzYsMTEgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgQXR0YWNobWVudEVsZW1lbnRJbnNl
cnRpb24pCiAgICAgICAgIG9ic2VydmVyLmV4cGVjdEF0dGFjaG1lbnRVcGRhdGVzKEBbIF0sIEBb
IGZpcnN0QXR0YWNobWVudC5nZXQoKSBdKTsKICAgICB9CiAKLSAgICBbZmlyc3RBdHRhY2htZW50
IGV4cGVjdFJlcXVlc3RlZERhdGFUb0JlOnRlc3RIVE1MRGF0YSgpXTsKKyAgICBfV0tBdHRhY2ht
ZW50SW5mbyAqaW5mbyA9IFtmaXJzdEF0dGFjaG1lbnQgc3luY2hyb25vdXNseVJlcXVlc3RJbmZv
Om5pbF07CisgICAgRVhQRUNUX1RSVUUoW2luZm8uZGF0YSBpc0VxdWFsVG9EYXRhOnRlc3RIVE1M
RGF0YSgpXSk7CisgICAgRVhQRUNUX1RSVUUoW2luZm8uY29udGVudFR5cGUgaXNFcXVhbFRvU3Ry
aW5nOkAidGV4dC9odG1sIl0pOworICAgIEVYUEVDVF9UUlVFKFtpbmZvLm5hbWUgaXNFcXVhbFRv
U3RyaW5nOkAiZm9vIl0pOworICAgIEVYUEVDVF9FUShpbmZvLmZpbGVQYXRoLmxlbmd0aCwgMFUp
OwogCiAgICAgewogICAgICAgICBPYnNlcnZlQXR0YWNobWVudFVwZGF0ZXNGb3JTY29wZSBzY29w
ZSh3ZWJWaWV3LmdldCgpKTsKQEAgLTQ2NSw3ICs0NzUsMTIgQEAgVEVTVChXS0F0dGFjaG1lbnRU
ZXN0cywgQXR0YWNobWVudFVwZGF0ZXNXaGVuSW5zZXJ0aW5nQW5kRGVsZXRpbmdOZXdsaW5lKQog
ICAgIFt3ZWJWaWV3IGV4cGVjdFVwZGF0ZXNBZnRlckNvbW1hbmQ6QCJJbnNlcnRQYXJhZ3JhcGgi
IHdpdGhBcmd1bWVudDpuaWwgZXhwZWN0ZWRSZW1vdmFsczpAW10gZXhwZWN0ZWRJbnNlcnRpb25z
OkBbXV07CiAKICAgICBbd2ViVmlldyBleHBlY3RVcGRhdGVzQWZ0ZXJDb21tYW5kOkAiRGVsZXRl
QmFja3dhcmQiIHdpdGhBcmd1bWVudDpuaWwgZXhwZWN0ZWRSZW1vdmFsczpAW10gZXhwZWN0ZWRJ
bnNlcnRpb25zOkBbXV07Ci0gICAgW2F0dGFjaG1lbnQgZXhwZWN0UmVxdWVzdGVkRGF0YVRvQmU6
dGVzdEhUTUxEYXRhKCldOworCisgICAgX1dLQXR0YWNobWVudEluZm8gKmluZm8gPSBbYXR0YWNo
bWVudCBzeW5jaHJvbm91c2x5UmVxdWVzdEluZm86bmlsXTsKKyAgICBFWFBFQ1RfVFJVRShbaW5m
by5kYXRhIGlzRXF1YWxUb0RhdGE6dGVzdEhUTUxEYXRhKCldKTsKKyAgICBFWFBFQ1RfVFJVRShb
aW5mby5jb250ZW50VHlwZSBpc0VxdWFsVG9TdHJpbmc6QCJ0ZXh0L3BsYWluIl0pOworICAgIEVY
UEVDVF9UUlVFKFtpbmZvLm5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiZm9vLnR4dCJdKTsKKyAgICBF
WFBFQ1RfRVEoaW5mby5maWxlUGF0aC5sZW5ndGgsIDBVKTsKIAogICAgIFt3ZWJWaWV3IGV4cGVj
dFVwZGF0ZXNBZnRlckNvbW1hbmQ6QCJEZWxldGVGb3J3YXJkIiB3aXRoQXJndW1lbnQ6bmlsIGV4
cGVjdGVkUmVtb3ZhbHM6QFthdHRhY2htZW50LmdldCgpXSBleHBlY3RlZEluc2VydGlvbnM6QFtd
XTsKICAgICBbYXR0YWNobWVudCBleHBlY3RSZXF1ZXN0ZWREYXRhVG9CZTpuaWxdOwpAQCAtNjIz
LDEzICs2MzgsMTMgQEAgVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgTXVsdGlwbGVTaW11bHRhbmVv
dXNBdHRhY2htZW50RGF0YVJlcXVlc3RzKQogICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4g
ZGF0YUZvckZpcnN0UmVxdWVzdDsKICAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0RhdGE+IGRhdGFG
b3JTZWNvbmRSZXF1ZXN0OwogICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7Ci0gICAgW2F0
dGFjaG1lbnQgcmVxdWVzdERhdGE6XihOU0RhdGEgKmRhdGEsIE5TRXJyb3IgKmVycm9yKSB7Cisg
ICAgW2F0dGFjaG1lbnQgcmVxdWVzdEluZm86XihfV0tBdHRhY2htZW50SW5mbyAqaW5mbywgTlNF
cnJvciAqZXJyb3IpIHsKICAgICAgICAgRVhQRUNUX1RSVUUoIWVycm9yKTsKLSAgICAgICAgZGF0
YUZvckZpcnN0UmVxdWVzdCA9IGRhdGE7CisgICAgICAgIGRhdGFGb3JGaXJzdFJlcXVlc3QgPSBp
bmZvLmRhdGE7CiAgICAgfV07Ci0gICAgW2F0dGFjaG1lbnQgcmVxdWVzdERhdGE6XihOU0RhdGEg
KmRhdGEsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgW2F0dGFjaG1lbnQgcmVxdWVzdEluZm86Xihf
V0tBdHRhY2htZW50SW5mbyAqaW5mbywgTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgRVhQRUNU
X1RSVUUoIWVycm9yKTsKLSAgICAgICAgZGF0YUZvclNlY29uZFJlcXVlc3QgPSBkYXRhOworICAg
ICAgICBkYXRhRm9yU2Vjb25kUmVxdWVzdCA9IGluZm8uZGF0YTsKICAgICAgICAgZG9uZSA9IHRy
dWU7CiAgICAgfV07CiAKQEAgLTEwMjMsNiArMTAzOCwxMSBAQCBURVNUKFdLQXR0YWNobWVudFRl
c3RzTWFjLCBJbnNlcnRQYXN0ZWRGaWxlVVJMc0FzQXR0YWNobWVudHMpCiAgICAgRVhQRUNUX1dL
X1NUUkVRKCJpbWFnZS9wbmciLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYXR0YWNobWVudCcpWzFdLmdldEF0dHJpYnV0
ZSgndHlwZScpIl0pOwogICAgIEVYUEVDVF9XS19TVFJFUSgiaWNvbi5wbmciLCBbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgn
YXR0YWNobWVudCcpWzFdLmdldEF0dHJpYnV0ZSgndGl0bGUnKSJdKTsKIAorICAgIGZvciAoX1dL
QXR0YWNobWVudCAqYXR0YWNobWVudCBpbiBpbnNlcnRlZEF0dGFjaG1lbnRzLmdldCgpKSB7Cisg
ICAgICAgIF9XS0F0dGFjaG1lbnRJbmZvICppbmZvID0gW2F0dGFjaG1lbnQgc3luY2hyb25vdXNs
eVJlcXVlc3RJbmZvOm5pbF07CisgICAgICAgIEVYUEVDVF9HVChpbmZvLmZpbGVQYXRoLmxlbmd0
aCwgMFUpOworICAgIH0KKwogICAgIHsKICAgICAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVz
Rm9yU2NvcGUgb2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7CiAgICAgICAgIFt3ZWJWaWV3IF9zeW5j
aHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAiU2VsZWN0QWxsIiBhcmd1bWVudDpuaWxdOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>