<?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>86143</bug_id>
          
          <creation_ts>2012-05-10 14:09:35 -0700</creation_ts>
          <short_desc>WK2/Plugins: Move enumeration of plugins to a secondary UIProcess thread.</short_desc>
          <delta_ts>2012-05-14 09:14:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Plug-ins</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>86378</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>andersca</cc>
    
    <cc>koivisto</cc>
    
    <cc>levin+threading</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>620946</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-05-10 14:09:35 -0700</bug_when>
    <thetext>&lt;rdar://problem/10777218&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620970</commentid>
    <comment_count>1</comment_count>
      <attachid>141254</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-05-10 14:19:32 -0700</bug_when>
    <thetext>Created attachment 141254
Modest first stab</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620981</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-10 14:27:30 -0700</bug_when>
    <thetext>Attachment 141254 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/UIProcess/WebContext.h:250:  The parameter name &quot;connection&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/UIProcess/WebContext.h:250:  The parameter name &quot;messageID&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621032</commentid>
    <comment_count>3</comment_count>
      <attachid>141254</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-10 14:58:25 -0700</bug_when>
    <thetext>Comment on attachment 141254
Modest first stab

Attachment 141254 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12673051</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621038</commentid>
    <comment_count>4</comment_count>
      <attachid>141254</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-05-10 15:02:38 -0700</bug_when>
    <thetext>Comment on attachment 141254
Modest first stab

Attachment 141254 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12670113</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621040</commentid>
    <comment_count>5</comment_count>
      <attachid>141274</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-05-10 15:06:12 -0700</bug_when>
    <thetext>Created attachment 141274
Patch again

Apparently everyone doesn&apos;t build on OS X. Crazy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621818</commentid>
    <comment_count>6</comment_count>
      <attachid>141453</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-05-11 11:10:39 -0700</bug_when>
    <thetext>Created attachment 141453
Patch

Rebased because Anders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621820</commentid>
    <comment_count>7</comment_count>
      <attachid>141454</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-05-11 11:12:30 -0700</bug_when>
    <thetext>Created attachment 141454
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621892</commentid>
    <comment_count>8</comment_count>
      <attachid>141476</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-05-11 12:41:25 -0700</bug_when>
    <thetext>Created attachment 141476
Patch

Per AndersCa&apos;s request match WebContext&apos;s addQueueClient with a removeQueueClient in the destructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621901</commentid>
    <comment_count>9</comment_count>
      <attachid>141476</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-05-11 12:49:06 -0700</bug_when>
    <thetext>Comment on attachment 141476
Patch

Clearing flags on attachment: 141476

Committed r116796: &lt;http://trac.webkit.org/changeset/116796&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621902</commentid>
    <comment_count>10</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-05-11 12:49:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623032</commentid>
    <comment_count>11</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-05-14 09:14:25 -0700</bug_when>
    <thetext>Looks like this caused an API test failure, bug 86378.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141254</attachid>
            <date>2012-05-10 14:19:32 -0700</date>
            <delta_ts>2012-05-10 15:06:12 -0700</delta_ts>
            <desc>Modest first stab</desc>
            <filename>bug-86143.diff</filename>
            <type>text/plain</type>
            <size>32320</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0MjBkMTkxLi5lYzYxZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcg
QEAKKzIwMTItMDUtMTAgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAg
ICAgIFdLMi9QbHVnaW5zOiBNb3ZlIGVudW1lcmF0aW9uIG9mIHBsdWdpbnMgdG8gYSBzZWNvbmRh
cnkgVUlQcm9jZXNzIHRocmVhZC4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvODYxNDM+
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDc3NzIxOD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBhdm9pZCBzcGlucyBiZW5lYXRoIFBsdWdp
bkluZm9TdG9yZTo6Z2V0UGx1Z2luSW5mbygpLCBkbyB0aGlzIHdvcmsgb24gYSBzZWNvbmRhcnkK
KyAgICAgICAgdGhyZWFkIGluIHRoZSBVSVByb2Nlc3MuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJ
T2JqZWN0Lmg6CisKKyAgICAgICAgICAgIE1hZGUgQVBJT2JqZWN0IGEgVGhyZWFkU2FmZVJlZkNv
dW50ZWQuIEluIHRoZSBjb250ZXh0IG9mIHRoaXMgcGF0Y2gsIHRoaXMgaXMgdG8KKyAgICAgICAg
ICAgIGJlIGFibGUgdG8gZGlzcGF0Y2ggYm91bmQgRnVuY3Rpb25zIG9uIFdlYkNvbnRleHQuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL21hYy9LZXljaGFpbkl0ZW1TaGltTWV0aG9kcy5tbToKKyAg
ICAgICAgKFdlYktpdDo6cmVzcG9uc2VNYXApOgorICAgICAgICAqIFdlYlByb2Nlc3MvbWFjL1Nl
Y0l0ZW1TaGltTWV0aG9kcy5tbToKKyAgICAgICAgKFdlYktpdDo6cmVzcG9uc2VNYXApOgorICAg
ICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTaGFy
ZWQvQmxvY2tpbmdSZXNwb25zZU1hcC5oOgorICAgICAgICAoQmxvY2tpbmdSZXNwb25zZU1hcCk6
CisgICAgICAgIChCbG9ja2luZ1Jlc3BvbnNlTWFwOjp3YWl0Rm9yUmVzcG9uc2UpOgorICAgICAg
ICAoQmxvY2tpbmdSZXNwb25zZU1hcDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKworICAgICAgICAg
ICAgIFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9LZXljaGFpblNo
aW1SZXNwb25zZU1hcC5oLgorICAgICAgICAgICAgIEdlbmVyYWxpemUgdGhpcyBzb21ld2hhdCBz
aW5jZSBpdCdzIHVzZWZ1bCBpbiBtb3JlIHRoYW4ganVzdCB0aGUga2V5Y2hhaW4gc2NlbmFyaW8u
CisgICAgICAgICAgICAgVGhpcyBjYW4vc2hvdWxkIGJlIGdlbmVyYWxpemVkIGZ1cnRoZXIsIGJ1
dCB0aGF0J3MgYSB0b3BpYyBmb3IgYW5vdGhlciBwYXRjaC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbkluZm9TdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkluZm9TdG9yZTo6
cGx1Z2lucyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkluZm9TdG9yZTo6ZmluZFBsdWdpbkZv
ck1JTUVUeXBlKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1Z2lu
Rm9yRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1
Z2luKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luSW5mb1N0b3JlOjppbmZvRm9yUGx1Z2luV2l0
aFBhdGgpOgorCisgICAgICAgICAgICBTbGFwIGEgbXV0ZXggb24gdGhlIFBsdWdpbkluZm9TdG9y
ZSBzaW5jZSBpdCBjYW4gbm93IGJlIGNhbGxlZCBmcm9tIGJvdGggdGhlCisgICAgICAgICAgICBt
YWluIHRocmVhZCAodmlhIFdLRnJhbWVDYW5TaG93TUlNRVR5cGUpIGFuZCB0aGUgR2V0UGx1Z2lu
IHdvcmsgcXVldWUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6V2ViQ29udGV4
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnByb2Nlc3NEaWRGaW5pc2hMYXVuY2hp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpzZW5kRGlkR2V0UGx1Z2lucyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmhhbmRsZUdldFBsdWdpbnMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb250ZXh0OjpnZXRQbHVnaW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
dGV4dDo6ZGlkUmVjZWl2ZU1lc3NhZ2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUpOgorCisgICAgICAg
ICAgICBNYWtlIEdldFBsdWdpbnMgYSBEaXNwYXRjaE9uQ29ubmVjdGlvblF1ZXVlIG1lc3NhZ2Ug
YW5kIGV4ZWN1dGUgaXQgb24gYSBuZXcKKyAgICAgICAgICAgIHBsdWctaW4gd29yayBxdWV1ZS4g
VGhpcyBlZmZlY3RpdmVseSBtYWtlcyB0aGUgR2V0UGx1Z2luIGNhbGwgYXN5bmNocm9ub3VzLgor
ICAgICAgICAgICAgT24gTWFjLCB0aGUgYnVpbHQtaW4gUERGIHJlYWRlciBpcyBzdGlsbCByZWdp
c3RlcmVkIG9uIHRoZSBtYWluIHRocmVhZCBhcyB0aGF0CisgICAgICAgICAgICBlbmRzIHVwIGNh
bGxpbmcgaW50byBsb2NhbGl6ZWRTdHJpbmcoKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRpZEdldFBsdWdpbnMp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKworICAgICAgICAgICAgQWRkIGEgRGlkR2V0UGx1
Z2lucyBtZXNzYWdlIHRvIFdlYlByb2Nlc3MuIFRoaXMgaXMgcGFzc2VkIGRpcmVjdGx5IHRvIHRo
ZSBoYW5kbGVyCisgICAgICAgICAgICBpbiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OnJlc3BvbnNlTWFwKToKKyAgICAgICAgKFdlYktp
dDo6aGFuZGxlRGlkR2V0UGx1Z2lucyk6CisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlUmVxdWVz
dElEKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpwb3B1bGF0ZVBs
dWdpbkNhY2hlKToKKworICAgICAgICAgICAgVXNlIGEgQmxvY2tpbmdSZXNwb25zZU1hcCB0byBi
bG9jayB0aGUgV2ViUHJvY2VzcyBtYWluIHRocmVhZCB1bnRpbCB0aGUgVUlQcm9jZXNzCisgICAg
ICAgICAgICByZXNwb25kcyB3aXRoIERpZEdldFBsdWdpbnMuCisKIDIwMTItMDUtMTAgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFRl
c3QgL3dlYmtpdDIvV2ViS2l0V2ViVmlldy9yZXNvdXJjZXMgdGltZXMgb3V0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJT2JqZWN0LmgKaW5kZXggMmFiMzMwNC4uODllODg3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UElPYmplY3QuaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xh
c3MgQVBJT2JqZWN0IDogcHVibGljIFJlZkNvdW50ZWQ8QVBJT2JqZWN0PiB7CitjbGFzcyBBUElP
YmplY3QgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QVBJT2JqZWN0PiB7CiBwdWJsaWM6
CiAgICAgZW51bSBUeXBlIHsKICAgICAgICAgLy8gQmFzZSB0eXBlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Jsb2NraW5nUmVzcG9uc2VNYXAuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9CbG9ja2luZ1Jlc3BvbnNlTWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYjE0MzZmNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9CbG9ja2luZ1Jlc3BvbnNlTWFwLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgQmxvY2tpbmdSZXNwb25zZU1hcF9oCisjZGVmaW5lIEJsb2NraW5nUmVzcG9uc2VNYXBf
aAorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0
aXZlcy5oPgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgQmxvY2tpbmdSZXNwb25zZU1h
cCB7CitwdWJsaWM6CisgICAgUGFzc093blB0cjxUPiB3YWl0Rm9yUmVzcG9uc2UodWludDY0X3Qg
cmVxdWVzdElEKQorICAgIHsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIE11
dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKKworICAgICAgICAgICAgaWYgKE93blB0cjxUPiBy
ZXNwb25zZSA9IG1fcmVzcG9uc2VzLnRha2UocmVxdWVzdElEKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzcG9uc2UucmVsZWFzZSgpOworCisgICAgICAgICAgICBtX2NvbmRpdGlvbi53YWl0
KG1fbXV0ZXgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgcmVxdWVzdElELCBQYXNzT3du
UHRyPFQ+IHJlc3BvbnNlKQorICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0
ZXgpOworICAgICAgICBBU1NFUlQoIW1fcmVzcG9uc2VzLmNvbnRhaW5zKHJlcXVlc3RJRCkpOwor
CisgICAgICAgIG1fcmVzcG9uc2VzLnNldChyZXF1ZXN0SUQsIHJlc3BvbnNlKTsKKyAgICAgICAg
bV9jb25kaXRpb24uc2lnbmFsKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIE11dGV4IG1fbXV0
ZXg7CisgICAgVGhyZWFkQ29uZGl0aW9uIG1fY29uZGl0aW9uOworCisgICAgSGFzaE1hcDx1aW50
NjRfdCwgT3duUHRyPFQ+ID4gbV9yZXNwb25zZXM7Cit9OworCisjZW5kaWYgLy8gQmxvY2tpbmdS
ZXNwb25zZU1hcF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5JbmZvU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luSW5mb1N0b3JlLmNwcAppbmRleCBjZWYxNGRjLi43Mzk0OWMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAKQEAg
LTExMywxNSArMTEzLDE1IEBAIHZvaWQgUGx1Z2luSW5mb1N0b3JlOjpsb2FkUGx1Z2luKFZlY3Rv
cjxQbHVnaW5Nb2R1bGVJbmZvPiYgcGx1Z2lucywgY29uc3QgU3RyaW5nCiAKIFZlY3RvcjxQbHVn
aW5Nb2R1bGVJbmZvPiBQbHVnaW5JbmZvU3RvcmU6OnBsdWdpbnMoKQogeworICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX3BsdWdpbnNMb2NrKTsKICAgICBsb2FkUGx1Z2luc0lmTmVjZXNzYXJ5KCk7
Ci0KLSAgICBWZWN0b3I8UGx1Z2luTW9kdWxlSW5mbz4gcGx1Z2lucyhtX3BsdWdpbnMpOwotCi0g
ICAgcmV0dXJuIHBsdWdpbnM7CisgICAgcmV0dXJuIG1fcGx1Z2luczsKIH0KIAogUGx1Z2luTW9k
dWxlSW5mbyBQbHVnaW5JbmZvU3RvcmU6OmZpbmRQbHVnaW5Gb3JNSU1FVHlwZShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKSBjb25zdAogeworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3BsdWdpbnNM
b2NrKTsKKwogICAgIEFTU0VSVCghbWltZVR5cGUuaXNOdWxsKCkpOwogICAgIAogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9wbHVnaW5zLnNpemUoKTsgKytpKSB7CkBAIC0xMzksNiArMTM5
LDggQEAgUGx1Z2luTW9kdWxlSW5mbyBQbHVnaW5JbmZvU3RvcmU6OmZpbmRQbHVnaW5Gb3JNSU1F
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogCiBQbHVnaW5Nb2R1bGVJbmZvIFBsdWdpbklu
Zm9TdG9yZTo6ZmluZFBsdWdpbkZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwg
U3RyaW5nJiBtaW1lVHlwZSkgY29uc3QKIHsKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9wbHVn
aW5zTG9jayk7CisKICAgICBBU1NFUlQoIWV4dGVuc2lvbi5pc051bGwoKSk7CiAgICAgCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BsdWdpbnMuc2l6ZSgpOyArK2kpIHsKQEAgLTE4Miw3
ICsxODQsMTAgQEAgU3RyaW5nIFBsdWdpbkluZm9TdG9yZTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCiAKIFBsdWdpbk1vZHVsZUluZm8gUGx1Z2luSW5m
b1N0b3JlOjpmaW5kUGx1Z2luKFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IEtVUkwmIHVybCkKIHsK
LSAgICBsb2FkUGx1Z2luc0lmTmVjZXNzYXJ5KCk7CisgICAgeworICAgICAgICBNdXRleExvY2tl
ciBsb2NrZXIobV9wbHVnaW5zTG9jayk7CisgICAgICAgIGxvYWRQbHVnaW5zSWZOZWNlc3Nhcnko
KTsKKyAgICB9CiAgICAgCiAgICAgLy8gRmlyc3QsIGNoZWNrIGlmIHdlIGNhbiBnZXQgdGhlIHBs
dWctaW4gYmFzZWQgb24gaXRzIE1JTUUgdHlwZS4KICAgICBpZiAoIW1pbWVUeXBlLmlzTnVsbCgp
KSB7CkBAIC0yMTQsNiArMjE5LDggQEAgUGx1Z2luTW9kdWxlSW5mbyBQbHVnaW5JbmZvU3RvcmU6
OmZpbmRQbHVnaW4oU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgS1VSTCYgdXJsKQogCiBQbHVnaW5N
b2R1bGVJbmZvIFBsdWdpbkluZm9TdG9yZTo6aW5mb0ZvclBsdWdpbldpdGhQYXRoKGNvbnN0IFN0
cmluZyYgcGx1Z2luUGF0aCkgY29uc3QKIHsKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9wbHVn
aW5zTG9jayk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcGx1Z2lucy5zaXplKCk7
ICsraSkgewogICAgICAgICBpZiAobV9wbHVnaW5zW2ldLnBhdGggPT0gcGx1Z2luUGF0aCkKICAg
ICAgICAgICAgIHJldHVybiBtX3BsdWdpbnNbaV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5oCmluZGV4IDRiZmVjYjQuLmVjMGQ2ZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9T
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9T
dG9yZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFBsdWdpbkluZm9TdG9yZV9oCiAKICNp
bmNsdWRlICJQbHVnaW5Nb2R1bGVJbmZvLmgiCisjaW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1p
dGl2ZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEtVUkw7CkBAIC04NCw2
ICs4NSw4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gbV9hZGRpdGlvbmFsUGx1Z2lu
c0RpcmVjdG9yaWVzOwogICAgIFZlY3RvcjxQbHVnaW5Nb2R1bGVJbmZvPiBtX3BsdWdpbnM7CiAg
ICAgYm9vbCBtX3BsdWdpbkxpc3RJc1VwVG9EYXRlOworCisgICAgbXV0YWJsZSBNdXRleCBtX3Bs
dWdpbnNMb2NrOwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IGYxYTBmMGYuLjkwZDMzZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTE0Nyw2ICsxNDcsNyBAQCBXZWJD
b250ZXh0OjpXZWJDb250ZXh0KFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwsIGNvbnN0IFN0cmlu
ZyYgaW5qZWN0ZWRCdW5kbGVQYQogICAgICwgbV9pbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGlj
eShIVFRQQ29va2llQWNjZXB0UG9saWN5QWx3YXlzKQogI2VuZGlmCiAgICAgLCBtX3Byb2Nlc3NU
ZXJtaW5hdGlvbkVuYWJsZWQodHJ1ZSkKKyAgICAsIG1fcGx1Z2luV29ya1F1ZXVlKCJjb20uYXBw
bGUuQ29yZUlQQy5QbHVnaW5RdWV1ZSIpCiB7CiAjaWYgIUxPR19ESVNBQkxFRAogICAgIFdlYktp
dDo6aW5pdGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3NhcnkoKTsKQEAgLTM1NCw2ICszNTUsOCBA
QCB2b2lkIFdlYkNvbnRleHQ6OnByb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcoV2ViUHJvY2Vzc1By
b3h5KiBwcm9jZXNzKQogICAgIEFTU0VSVF9VTlVTRUQocHJvY2VzcywgcHJvY2VzcyA9PSBtX3By
b2Nlc3MpOwogCiAgICAgbV92aXNpdGVkTGlua1Byb3ZpZGVyLnByb2Nlc3NEaWRGaW5pc2hMYXVu
Y2hpbmcoKTsKKworICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5hZGRRdWV1ZUNsaWVudCh0
aGlzKTsKICAgICAKICAgICAvLyBTb21ldGltZXMgdGhlIG1lbW9yeVNhbXBsZXIgZ2V0cyBpbml0
aWFsaXplZCBhZnRlciBwcm9jZXNzIGluaXRpYWxpemF0aW9uIGhhcyBoYXBwZW5lZCBidXQgYmVm
b3JlIHRoZSBwcm9jZXNzIGhhcyBmaW5pc2hlZCBsYXVuY2hpbmcKICAgICAvLyBzbyBjaGVjayBp
ZiBpdCBuZWVkcyB0byBiZSBzdGFydGVkIGhlcmUKQEAgLTYwNCwyMCArNjA3LDM5IEBAIHZvaWQg
V2ViQ29udGV4dDo6YWRkVmlzaXRlZExpbmtIYXNoKExpbmtIYXNoIGxpbmtIYXNoKQogICAgIG1f
dmlzaXRlZExpbmtQcm92aWRlci5hZGRWaXNpdGVkTGluayhsaW5rSGFzaCk7CiB9CiAKLXZvaWQg
V2ViQ29udGV4dDo6Z2V0UGx1Z2lucyhib29sIHJlZnJlc2gsIFZlY3RvcjxQbHVnaW5JbmZvPiYg
cGx1Z2luSW5mb3MpCit2b2lkIFdlYkNvbnRleHQ6OnNlbmREaWRHZXRQbHVnaW5zKHVpbnQ2NF90
IHJlcXVlc3RJRCwgY29uc3QgVmVjdG9yPFBsdWdpbkluZm8+JiBwbHVnaW5JbmZvcykKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgVmVjdG9yPFBsdWdpbkluZm8+IHBsdWdp
bnMocGx1Z2luSW5mb3MpOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIC8vIEFkZCBidWlsdC1p
biBQREYgbGFzdCwgc28gdGhhdCBpdCdzIG5vdCB1c2VkIHdoZW4gYSByZWFsIHBsdWctaW4gaXMg
aW5zdGFsbGVkLgorICAgIC8vIE5PVEU6IFRoaXMgaGFzIHRvIGJlIGRvbmUgb24gdGhlIG1haW4g
dGhyZWFkIGFzIGl0IGNhbGxzIGxvY2FsaXplZFN0cmluZygpLgorICAgIGlmICghb21pdFBERlN1
cHBvcnQoKSkKKyAgICAgICAgcGx1Z2lucy5hcHBlbmQoQnVpbHRJblBERlZpZXc6OnBsdWdpbklu
Zm8oKSk7CisjZW5kaWYKKworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vz
czo6RGlkR2V0UGx1Z2lucyhyZXF1ZXN0SUQsIHBsdWdpbnMpLCAwKTsKK30KKwordm9pZCBXZWJD
b250ZXh0OjpoYW5kbGVHZXRQbHVnaW5zKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCByZWZyZXNo
KQogewogICAgIGlmIChyZWZyZXNoKQogICAgICAgICBtX3BsdWdpbkluZm9TdG9yZS5yZWZyZXNo
KCk7CiAKKyAgICBWZWN0b3I8UGx1Z2luSW5mbz4gcGx1Z2luSW5mb3M7CisKICAgICBWZWN0b3I8
UGx1Z2luTW9kdWxlSW5mbz4gcGx1Z2lucyA9IG1fcGx1Z2luSW5mb1N0b3JlLnBsdWdpbnMoKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBsdWdpbnMuc2l6ZSgpOyArK2kpCiAgICAgICAg
IHBsdWdpbkluZm9zLmFwcGVuZChwbHVnaW5zW2ldLmluZm8pOwogCi0jaWYgUExBVEZPUk0oTUFD
KQotICAgIC8vIEFkZCBidWlsdC1pbiBQREYgbGFzdCwgc28gdGhhdCBpdCdzIG5vdCB1c2VkIHdo
ZW4gYSByZWFsIHBsdWctaW4gaXMgaW5zdGFsbGVkLgotICAgIGlmICghb21pdFBERlN1cHBvcnQo
KSkKLSAgICAgICAgcGx1Z2luSW5mb3MuYXBwZW5kKEJ1aWx0SW5QREZWaWV3OjpwbHVnaW5JbmZv
KCkpOwotI2VuZGlmCisgICAgUnVuTG9vcDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKCZXZWJDb250
ZXh0OjpzZW5kRGlkR2V0UGx1Z2lucywgdGhpcywgcmVxdWVzdElELCBwbHVnaW5JbmZvcykpOwor
fQorCit2b2lkIFdlYkNvbnRleHQ6OmdldFBsdWdpbnMoQ29yZUlQQzo6Q29ubmVjdGlvbiosIHVp
bnQ2NF90IHJlcXVlc3RJRCwgYm9vbCByZWZyZXNoKQoreworICAgIG1fcGx1Z2luV29ya1F1ZXVl
LmRpc3BhdGNoKGJpbmQoJldlYkNvbnRleHQ6OmhhbmRsZUdldFBsdWdpbnMsIHRoaXMsIHJlcXVl
c3RJRCwgcmVmcmVzaCkpOwogfQogCiB2b2lkIFdlYkNvbnRleHQ6OmdldFBsdWdpblBhdGgoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIFN0cmluZyYgcGx1
Z2luUGF0aCkKQEAgLTkyMyw0ICs5NDUsMTIgQEAgdm9pZCBXZWJDb250ZXh0OjpnYXJiYWdlQ29s
bGVjdEphdmFTY3JpcHRPYmplY3RzKCkKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6
OldlYlByb2Nlc3M6OkdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHMoKSk7CiB9CiAKK3Zv
aWQgV2ViQ29udGV4dDo6ZGlkUmVjZWl2ZU1lc3NhZ2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoQ29y
ZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJ
RCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMsIGJvb2wmIGRpZEhhbmRsZU1l
c3NhZ2UpCit7CisgICAgaWYgKG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NXZWJD
b250ZXh0PigpKSB7CisgICAgICAgIGRpZFJlY2VpdmVXZWJDb250ZXh0TWVzc2FnZU9uQ29ubmVj
dGlvbldvcmtRdWV1ZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50cywgZGlkSGFuZGxl
TWVzc2FnZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5kZXggZGRmM2Q3OS4uMDdm
ZDRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCkBAIC02Niw3ICs2Niw3
IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogICAgIAogdHlwZWRlZiBH
ZW5lcmljQ2FsbGJhY2s8V0tEaWN0aW9uYXJ5UmVmPiBEaWN0aW9uYXJ5Q2FsbGJhY2s7CiAKLWNs
YXNzIFdlYkNvbnRleHQgOiBwdWJsaWMgQVBJT2JqZWN0IHsKK2NsYXNzIFdlYkNvbnRleHQgOiBw
dWJsaWMgQVBJT2JqZWN0LCBwcml2YXRlIENvcmVJUEM6OkNvbm5lY3Rpb246OlF1ZXVlQ2xpZW50
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUNvbnRleHQ7
CiAKQEAgLTIxNiw3ICsyMTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkVXBkYXRlSGlzdG9y
eVRpdGxlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5n
JiB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpOwogCiAgICAgLy8gUGx1Z2lucwotICAgIHZvaWQgZ2V0
UGx1Z2lucyhib29sIHJlZnJlc2gsIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOworICAg
IHZvaWQgZ2V0UGx1Z2lucyhDb3JlSVBDOjpDb25uZWN0aW9uKiwgdWludDY0X3QgcmVxdWVzdElE
LCBib29sIHJlZnJlc2gpOwogICAgIHZvaWQgZ2V0UGx1Z2luUGF0aChjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgU3RyaW5nJiBwbHVnaW5QYXRoKTsKICNp
ZiAhRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogICAgIHZvaWQgZGlkR2V0U2l0ZXNXaXRoUGx1Z2lu
RGF0YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2l0ZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpA
QCAtMjQ1LDYgKzI0NSw5IEBAIHByaXZhdGU6CiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJh
dGVkIFdlYkNvbnRleHRNZXNzYWdlUmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRSZWNlaXZlV2Vi
Q29udGV4dE1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwg
Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY1dlYkNv
bnRleHRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENv
cmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIE93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+
Jik7CisgICAgdm9pZCBkaWRSZWNlaXZlV2ViQ29udGV4dE1lc3NhZ2VPbkNvbm5lY3Rpb25Xb3Jr
UXVldWUoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6
QXJndW1lbnREZWNvZGVyKiwgYm9vbCYgZGlkSGFuZGxlTWVzc2FnZSk7CisKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoQ29yZUlQQzo6Q29u
bmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMsIGJvb2wmIGRpZEhhbmRsZU1lc3NhZ2UpIE9W
RVJSSURFOwogCiAgICAgc3RhdGljIHZvaWQgbGFuZ3VhZ2VDaGFuZ2VkKHZvaWQqIGNvbnRleHQp
OwogICAgIHZvaWQgbGFuZ3VhZ2VDaGFuZ2VkKCk7CkBAIC0yNTcsNiArMjYwLDkgQEAgcHJpdmF0
ZToKICAgICBTdHJpbmcgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAgICAgU3RyaW5n
IHBsYXRmb3JtRGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OwogCisgICAgdm9p
ZCBoYW5kbGVHZXRQbHVnaW5zKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCByZWZyZXNoKTsKKyAg
ICB2b2lkIHNlbmREaWRHZXRQbHVnaW5zKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlBsdWdpbkluZm8+Jik7CisKICAgICBQcm9jZXNzTW9kZWwgbV9wcm9jZXNzTW9k
ZWw7CiAgICAgCiAgICAgLy8gRklYTUU6IEluIHRoZSBmdXR1cmUsIHRoaXMgc2hvdWxkIGJlIG9u
ZSBvciBtb3JlIFdlYlByb2Nlc3NQcm94aWVzLgpAQCAtMzIyLDYgKzMyOCw4IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX3Byb2Nlc3NUZXJtaW5hdGlvbkVuYWJsZWQ7CiAgICAgCiAgICAgSGFzaE1h
cDx1aW50NjRfdCwgUmVmUHRyPERpY3Rpb25hcnlDYWxsYmFjaz4gPiBtX2RpY3Rpb25hcnlDYWxs
YmFja3M7CisKKyAgICBXb3JrUXVldWUgbV9wbHVnaW5Xb3JrUXVldWU7CiB9OwogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBXZWJDb250ZXh0OjpzZW5kVG9BbGxQcm9jZXNzZXMo
Y29uc3QgVSYgbWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRl
eHQubWVzc2FnZXMuaW4KaW5kZXggODVlYTdhMi4uYzAyZjRiMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4KQEAgLTMyLDcgKzMyLDcgQEAg
bWVzc2FnZXMgLT4gV2ViQ29udGV4dCB7CiAgICAgQWRkVmlzaXRlZExpbmtIYXNoKHVpbnQ2NF90
IGxpbmtIYXNoKQogICAgIAogICAgICMgUGx1Z2luIG1lc3NhZ2VzLgotICAgIEdldFBsdWdpbnMo
Ym9vbCByZWZyZXNoKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IHBsdWdpbnMpCisg
ICAgR2V0UGx1Z2lucyh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgcmVmcmVzaCkgRGlzcGF0Y2hP
bkNvbm5lY3Rpb25RdWV1ZQogICAgIEdldFBsdWdpblBhdGgoV1RGOjpTdHJpbmcgbWltZVR5cGUs
IFdURjo6U3RyaW5nIHVybFN0cmluZykgLT4gKFdURjo6U3RyaW5nIHBsdWdpblBhdGgpCiAKICNp
ZiAhRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNhZTAwYWYuLmE4ZDY2ODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIw
Myw3ICsyMDMsNiBAQAogCQkxQUFGMEM0QjEyQjE2MzM0MDA4RTQ5RTIgLyogQXJndW1lbnRDb2Rl
cnNDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QUFGMEM0OTEyQjE2MzM0MDA4RTQ5RTIgLyogQXJndW1lbnRDb2RlcnNDRi5jcHAgKi87IH07CiAJ
CTFBQUYyNjM4MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQUYy
NjM2MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSAq
LzsgfTsKIAkJMUFBRjI2MzkxNDY4N0MzOTAwNEExRThBIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQUFGMjYzNzE0Njg3QzM5MDA0QTFFOEEgLyogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEuaCAqLzsgfTsKLQkJMUFCNDJFODcxNEJCQkJCMjAwNDI3MkY3IC8qIEtleWNoYWluU2hpbVJl
c3BvbnNlTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQUI0MkU4NjE0QkJCQkIyMDA0MjcyRjcgLyogS2V5Y2hhaW5TaGltUmVzcG9uc2VNYXAuaCAq
LzsgfTsKIAkJMUFCN0Q0Q0ExMjg4QUFBNzAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjdENEM4MTI4OEFB
QTcwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5LmggKi87IH07CiAJCTFBQjdENENCMTI4OEFBQTcw
MENGRDA4QyAvKiBEb3dubG9hZFByb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjdENEM5MTI4OEFBQTcwMENGRDA4QyAvKiBEb3dubG9hZFBy
b3h5LmNwcCAqLzsgfTsKIAkJMUFCN0Q2MTkxMjg4QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUFCN0Q2MTcxMjg4QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwICovOyB9OwpAQCAtMzI3LDYgKzMyNiw3IEBACiAJCTM3QzRFOUY2MTMx
QzZFN0UwMDI5QkQ1QSAvKiBjb25maWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIzOTZFQTU1MTJFMEVEMkQwMEY0RkVCNyAvKiBjb25maWcuaCAqLzsg
fTsKIAkJMzdGNjIzQjgxMkE1N0I2MjAwRTNGREY2IC8qIFdLRmluZE9wdGlvbnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3RjYyM0I3MTJBNTdCNjIw
MEUzRkRGNiAvKiBXS0ZpbmRPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzdGOTBERTMxMzc2NTYwRTAwNTFDRjY4IC8qIEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY2Mzg5NTRGMTMzQkVGMzgwMDg5NDFENSAvKiBIVFRQQ29va2llQWNjZXB0UG9saWN5
LmggKi87IH07CisJCTRGNjAxNDMyMTU1QzVBQTIwMDFGQkRFMCAvKiBCbG9ja2luZ1Jlc3BvbnNl
TWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjYw
MTQzMDE1NUM1QTMyMDAxRkJERTAgLyogQmxvY2tpbmdSZXNwb25zZU1hcC5oICovOyB9OwogCQk1
MTAyMUU5QzEyQjE2Nzg4MDA1QzAzM0MgLyogV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAyMUU5QjEyQjE2
Nzg4MDA1QzAzM0MgLyogV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW0gKi87IH07CiAJCTUxMEZC
QjlBMTI4OEM5NUUwMEFGRkRGNCAvKiBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEZCQjk4MTI4OEM5NUUw
MEFGRkRGNCAvKiBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcCAqLzsgfTsKIAkJNTEwRkJCOUIx
Mjg4Qzk1RTAwQUZGREY0IC8qIFdlYkNvbnRleHRNZW51SXRlbURhdGEuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEZCQjk5MTI4OEM5NUUwMEFGRkRG
NCAvKiBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmggKi87IH07CkBAIC0xMjEyLDcgKzEyMTIsNiBA
QAogCQkxQUFGMEM0OTEyQjE2MzM0MDA4RTQ5RTIgLyogQXJndW1lbnRDb2RlcnNDRi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IEFyZ3VtZW50Q29kZXJzQ0YuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUFGMjYzNjE0Njg3QzM5MDA0QTFFOEEg
LyogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFBRjI2MzcxNDY4N0MzOTAwNEExRThBIC8qIFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTFBQjQyRTg2MTRCQkJCQjIwMDQyNzJGNyAvKiBLZXljaGFpblNoaW1SZXNw
b25zZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLZXljaGFpblNoaW1S
ZXNwb25zZU1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUI3RDRDODEyODhB
QUE3MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEb3dubG9hZFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFB
QjdENEM5MTI4OEFBQTcwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvd25sb2FkUHJveHkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQUI3RDVFOTEyODhCOEMwMDBDRkQwOEMgLyogRG93bmxvYWRQcm94
eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEb3dubG9hZFByb3h5Lm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM0OSw2ICsxMzQ4LDcgQEAK
IAkJMzc5NDg0MDYxNTBDNEI5NjAwRTUyQ0U5IC8qIFdLUmVuZGVyTGF5ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tSZW5kZXJMYXllci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3OTQ4NDA3MTUwQzRCOTYwMEU1MkNFOSAvKiBXS1JlbmRl
ckxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUmVuZGVyTGF5ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdGNjIzQjcxMkE1N0I2MjAwRTNGREY2
IC8qIFdLRmluZE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tG
aW5kT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0RjYwMTQzMDE1NUM1
QTMyMDAxRkJERTAgLyogQmxvY2tpbmdSZXNwb25zZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBCbG9ja2luZ1Jlc3BvbnNlTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxMDAzMUY2MTM3OUNBQ0IwMEM4REZFNCAvKiBXZWJQcm9jZXNzU2hpbS5keWxp
YiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBp
bGVkLm1hY2gtby5keWxpYiI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IFdlYlByb2Nlc3NT
aGltLmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1MTAyMUU5
QjEyQjE2Nzg4MDA1QzAzM0MgLyogV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb250ZXh0TWVudUNsaWVudE1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwRkJCOTgxMjg4Qzk1RTAwQUZGREY0
IC8qIFdlYkNvbnRleHRNZW51SXRlbURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yMjI4LDcgKzIyMjgsNiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTEy
REY2RDYxMzhDMTgxQTAwQTIyRkM2IC8qIEtleWNoYWluSXRlbVNoaW1NZXRob2RzLmggKi8sCiAJ
CQkJNTEyREY2RDcxMzhDMTgxQTAwQTIyRkM2IC8qIEtleWNoYWluSXRlbVNoaW1NZXRob2RzLm1t
ICovLAotCQkJCTFBQjQyRTg2MTRCQkJCQjIwMDQyNzJGNyAvKiBLZXljaGFpblNoaW1SZXNwb25z
ZU1hcC5oICovLAogCQkJCTUxMUY4QTdEMTM4QjQ2RkUwMEE5NUY0NCAvKiBTZWNJdGVtU2hpbU1l
dGhvZHMuaCAqLywKIAkJCQk1MTFGOEE3RTEzOEI0NkZFMDBBOTVGNDQgLyogU2VjSXRlbVNoaW1N
ZXRob2RzLm1tICovLAogCQkJCUJDMzA2NUMzMTI1OTJGODkwMEU3MTI3OCAvKiBXZWJQcm9jZXNz
TWFjLm1tICovLApAQCAtMjM0NCw2ICsyMzQzLDcgQEAKIAkJCQk1RDUxODQ1NDEzQkNGOUNDMDBD
N0ZGNEEgLyogQVBJQ2xpZW50VHJhaXRzLmggKi8sCiAJCQkJQjYzNDAzRjgxNDkxMEQ1NzAwMTA3
MEI1IC8qIEFQSU9iamVjdC5jcHAgKi8sCiAJCQkJQkNGMDRDOEMxMUZGOUI3RDAwRjg2QTU4IC8q
IEFQSU9iamVjdC5oICovLAorCQkJCTRGNjAxNDMwMTU1QzVBMzIwMDFGQkRFMCAvKiBCbG9ja2lu
Z1Jlc3BvbnNlTWFwLmggKi8sCiAJCQkJQkMzMDY1RjkxMjU5MzQ0RTAwRTcxMjc4IC8qIENhY2hl
TW9kZWwuaCAqLywKIAkJCQkxQTJEOTU2RTEyODQ4NTY0MDAxRUI5NjIgLyogQ2hpbGRQcm9jZXNz
LmNwcCAqLywKIAkJCQkxQTJEOTU2RDEyODQ4NTY0MDAxRUI5NjIgLyogQ2hpbGRQcm9jZXNzLmgg
Ki8sCkBAIC0zODg5LDYgKzM4ODksNyBAQAogCQkJCTFBRUZDQzEyMTFEMDFGOTYwMDgyMTlEMyAv
KiBQbHVnaW5JbmZvU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBM0Q2MTAyMTNBN0NDMkEw
MEY5NUQ0RSAvKiBQbHVnaW5Nb2R1bGVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTA0Mzk3
NjEyNEQwMzQ4MDBGRkJGQjUgLyogUGx1Z2luUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NEY2MDE0MzIxNTVDNUFBMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VNYXAuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBMEVDOTA2MTI0QzBBQjgwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwRUM5MEYxMjRDMEFGNTAwN0VGNEE1IC8q
IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEy
QkI2RDExNDExN0I0RDAwMEYzNUQ0IC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLApAQCAtNDE5Myw3ICs0MTk0LDYgQEAKIAkJCQlCQzg2OTlCNzExNkFB
REFBMDAyQTkyNUIgLyogV0tWaWV3SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJGQTYx
NzlGMTJGMEI5OUQwMDMzRTBDQSAvKiBXS1ZpZXdQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzJFNkU4RTExNDE5NzE1MDBBNjNCMUUgLyogV29ya1F1ZXVlLmggaW4gSGVhZGVycyAqLywK
LQkJCQkxQUI0MkU4NzE0QkJCQkIyMDA0MjcyRjcgLyogS2V5Y2hhaW5TaGltUmVzcG9uc2VNYXAu
aCBpbiBIZWFkZXJzICovLAogCQkJCUUxN0JGOTk2MTREMEE3M0UwMEE1QTA2OSAvKiBOZXRzY2Fw
ZVNhbmRib3hGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTA5Mzc4MTRGQjEyOEMw
MDExMzhEOSAvKiBMYXllckhvc3RpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTZC
RDg1RDE1MDE5QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCA2NjIyY2Y2Li5jMzIyMWU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0yOCw2ICsyOCw3IEBA
CiAKICNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykKIAorI2luY2x1ZGUgIkJsb2NraW5nUmVz
cG9uc2VNYXAuaCIKICNpbmNsdWRlICJQbHVnaW5JbmZvU3RvcmUuaCIKICNpbmNsdWRlICJXZWJD
b250ZXh0TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCkBAIC0xMDIs
NiArMTAzLDIzIEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQbHVnaW5JbmZvKGNv
bnN0IFdlYkNvcmU6OlBhZ2UqLCBWZWN0b3I8V2ViQ29yZTo6CiAgICAgcGx1Z2lucyA9IG1fY2Fj
aGVkUGx1Z2luczsKIH0KIAorc3RhdGljIEJsb2NraW5nUmVzcG9uc2VNYXA8VmVjdG9yPFdlYkNv
cmU6OlBsdWdpbkluZm8+ID4mIHJlc3BvbnNlTWFwKCkKK3sKKyAgICBBdG9taWNhbGx5SW5pdGlh
bGl6ZWRTdGF0aWMoQmxvY2tpbmdSZXNwb25zZU1hcDxWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5m
bz4gPiYsIHJlc3BvbnNlTWFwID0gKm5ldyBCbG9ja2luZ1Jlc3BvbnNlTWFwPFZlY3RvcjxXZWJD
b3JlOjpQbHVnaW5JbmZvPiA+KTsKKyAgICByZXR1cm4gcmVzcG9uc2VNYXA7Cit9CisKK3ZvaWQg
aGFuZGxlRGlkR2V0UGx1Z2lucyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpQbHVnaW5JbmZvPiYgcGx1Z2lucykKK3sKKyAgICByZXNwb25zZU1hcCgpLmRpZFJlY2Vp
dmVSZXNwb25zZShyZXF1ZXN0SUQsIGFkb3B0UHRyKG5ldyBWZWN0b3I8V2ViQ29yZTo6UGx1Z2lu
SW5mbz4ocGx1Z2lucykpKTsKK30KKworc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlUmVxdWVzdElE
KCkKK3sKKyAgICBzdGF0aWMgaW50NjRfdCB1bmlxdWVJRDsKKyAgICByZXR1cm4gT1NBdG9taWNJ
bmNyZW1lbnQ2NEJhcnJpZXIoJnVuaXF1ZUlEKTsKK30KKwogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnBvcHVsYXRlUGx1Z2luQ2FjaGUoKQogewogICAgIGlmIChtX3BsdWdpbkNhY2hlSXNQ
b3B1bGF0ZWQpCkBAIC0xMDksMTMgKzEyNywxMSBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6cG9wdWxhdGVQbHVnaW5DYWNoZSgpCiAKICAgICBBU1NFUlQobV9jYWNoZWRQbHVnaW5zLmlz
RW1wdHkoKSk7CiAgICAgCi0gICAgVmVjdG9yPFBsdWdpbkluZm8+IHBsdWdpbnM7Ci0gICAgCiAg
ICAgLy8gRklYTUU6IFNob3VsZCB3ZSBkbyBzb21ldGhpbmcgaW4gY2FzZSBvZiBlcnJvciBoZXJl
PwotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYkNvbnRleHQ6OkdldFBsdWdpbnMobV9zaG91bGRSZWZyZXNoUGx1Z2lucyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlczo6V2Vi
Q29udGV4dDo6R2V0UGx1Z2luczo6UmVwbHkocGx1Z2lucyksIDApOworICAgIHVpbnQ2NF90IHJl
cXVlc3RJRCA9IGdlbmVyYXRlUmVxdWVzdElEKCk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpHZXRQbHVnaW5zKHJlcXVl
c3RJRCwgbV9zaG91bGRSZWZyZXNoUGx1Z2lucyksIDApOwogCi0gICAgbV9jYWNoZWRQbHVnaW5z
LnN3YXAocGx1Z2lucyk7CisgICAgbV9jYWNoZWRQbHVnaW5zID0gKnJlc3BvbnNlTWFwKCkud2Fp
dEZvclJlc3BvbnNlKHJlcXVlc3RJRCk7CiAgICAgCiAgICAgbV9zaG91bGRSZWZyZXNoUGx1Z2lu
cyA9IGZhbHNlOwogICAgIG1fcGx1Z2luQ2FjaGVJc1BvcHVsYXRlZCA9IHRydWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAwODZmZDBhLi40MTJhNzViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTg1LDYgKzg1LDggQEAgcHJpdmF0ZToKICAgICBW
ZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gbV9jYWNoZWRQbHVnaW5zOwogfTsKIAordm9pZCBo
YW5kbGVEaWRHZXRQbHVnaW5zKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVmVjdG9yPFdlYkNv
cmU6OlBsdWdpbkluZm8+Jik7CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8g
VVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAppbmRleCBjNDM1MjIxLi44YWY2NGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTEwMzAsNCArMTAzMCwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6
OnNldFRleHRDaGVja2VyU3RhdGUoY29uc3QgVGV4dENoZWNrZXJTdGF0ZSYgdGV4dENoZWNrZXJT
dGF0ZSkKICAgICB9CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6ZGlkR2V0UGx1Z2lucyhDb3JlSVBD
OjpDb25uZWN0aW9uKiwgdWludDY0X3QgcmVxdWVzdElELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6
UGx1Z2luSW5mbz4mIHBsdWdpbnMpCit7CisgICAgLy8gUGFzcyB0aGlzIHRvIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAuCisgICAgaGFuZGxlRGlkR2V0UGx1Z2lucyhyZXF1ZXN0SUQsIHBsdWdp
bnMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmgKaW5kZXggZWFmZTFkOS4uOTE5MTVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDaGlsZFByb2Nl
c3MuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYS5oIgogI2luY2x1ZGUgIkV2ZW50RGlzcGF0Y2hl
ci5oIgorI2luY2x1ZGUgIlBsdWdpbkluZm9TdG9yZS5oIgogI2luY2x1ZGUgIlJlc291cmNlQ2Fj
aGVzVG9DbGVhci5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJT
aGFyZWRNZW1vcnkuaCIKQEAgLTI0Myw2ICsyNDQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlk
UmVjZWl2ZVdlYlByb2Nlc3NNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpN
ZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwogICAgIHZvaWQgZGlkUmVjZWl2
ZVdlYlByb2Nlc3NNZXNzYWdlT25Db25uZWN0aW9uV29ya1F1ZXVlKENvcmVJUEM6OkNvbm5lY3Rp
b24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIGJvb2wm
IGRpZEhhbmRsZU1lc3NhZ2UpOwogCisgICAgdm9pZCBkaWRHZXRQbHVnaW5zKENvcmVJUEM6OkNv
bm5lY3Rpb24qLCB1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQbHVn
aW5JbmZvPiYpOworCiAgICAgUmVmUHRyPFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcz4gbV9jb25u
ZWN0aW9uOwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2U+ID4gbV9wYWdl
TWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCmluZGV4IDNiNmExZjcuLmI3YmM3MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTU0LDYgKzU0LDggQEAgbWVzc2FnZXMg
LT4gV2ViUHJvY2VzcyB7CiAgICAgQ2xlYXJQbHVnaW5TaXRlRGF0YShWZWN0b3I8V1RGOjpTdHJp
bmc+IHBsdWdpblBhdGhzLCBWZWN0b3I8V1RGOjpTdHJpbmc+IHNpdGVzLCB1aW50NjRfdCBmbGFn
cywgdWludDY0X3QgbWF4QWdlSW5TZWNvbmRzLCB1aW50NjRfdCBjYWxsYmFja0lEKQogI2VuZGlm
CiAKKyAgICBEaWRHZXRQbHVnaW5zKHVpbnQ2NF90IHJlcXVlc3RJRCwgVmVjdG9yPFdlYkNvcmU6
OlBsdWdpbkluZm8+IHBsdWdpbnMpIERpc3BhdGNoT25Db25uZWN0aW9uUXVldWUKKwogI2lmIEVO
QUJMRShQTFVHSU5fUFJPQ0VTUykKICAgICBQbHVnaW5Qcm9jZXNzQ3Jhc2hlZChTdHJpbmcgcGx1
Z2luUHJvY2VzcykgRGlzcGF0Y2hPbkNvbm5lY3Rpb25RdWV1ZQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9LZXljaGFpbkl0ZW1TaGltTWV0aG9kcy5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL0tleWNoYWluSXRlbVNoaW1NZXRob2Rz
Lm1tCmluZGV4IDVmNzFhZTQuLmZmMzA5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvbWFjL0tleWNoYWluSXRlbVNoaW1NZXRob2RzLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvbWFjL0tleWNoYWluSXRlbVNoaW1NZXRob2RzLm1tCkBAIC0yOCw3ICsy
OCw3IEBACiAKICNpZiBkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKIAotI2ltcG9y
dCAiS2V5Y2hhaW5TaGltUmVzcG9uc2VNYXAuaCIKKyNpbXBvcnQgIkJsb2NraW5nUmVzcG9uc2VN
YXAuaCIKICNpbXBvcnQgIlNlY0tleWNoYWluSXRlbVJlcXVlc3REYXRhLmgiCiAjaW1wb3J0ICJT
ZWNLZXljaGFpbkl0ZW1SZXNwb25zZURhdGEuaCIKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIKQEAg
LTE0MSw5ICsxNDEsOSBAQCBzdGF0aWMgYm9vbCB3ZWJGcmVlS2V5Y2hhaW5JdGVtQ29udGVudCh2
b2lkKiBkYXRhKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgS2V5Y2hhaW5TaGltUmVz
cG9uc2VNYXA8U2VjS2V5Y2hhaW5JdGVtUmVzcG9uc2VEYXRhPiYgcmVzcG9uc2VNYXAoKQorc3Rh
dGljIEJsb2NraW5nUmVzcG9uc2VNYXA8U2VjS2V5Y2hhaW5JdGVtUmVzcG9uc2VEYXRhPiYgcmVz
cG9uc2VNYXAoKQogewotICAgIEF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpYyhLZXljaGFpblNo
aW1SZXNwb25zZU1hcDxTZWNLZXljaGFpbkl0ZW1SZXNwb25zZURhdGE+JiwgcmVzcG9uc2VNYXAg
PSAqbmV3IEtleWNoYWluU2hpbVJlc3BvbnNlTWFwPFNlY0tleWNoYWluSXRlbVJlc3BvbnNlRGF0
YT4pOworICAgIEF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpYyhCbG9ja2luZ1Jlc3BvbnNlTWFw
PFNlY0tleWNoYWluSXRlbVJlc3BvbnNlRGF0YT4mLCByZXNwb25zZU1hcCA9ICpuZXcgQmxvY2tp
bmdSZXNwb25zZU1hcDxTZWNLZXljaGFpbkl0ZW1SZXNwb25zZURhdGE+KTsKICAgICByZXR1cm4g
cmVzcG9uc2VNYXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
bWFjL0tleWNoYWluU2hpbVJlc3BvbnNlTWFwLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L21hYy9LZXljaGFpblNoaW1SZXNwb25zZU1hcC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBiNGE3OGU2Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFj
L0tleWNoYWluU2hpbVJlc3BvbnNlTWFwLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2lmbmRlZiBLZXljaGFpblNoaW1SZXNwb25zZU1hcF9oCi0jZGVmaW5l
IEtleWNoYWluU2hpbVJlc3BvbnNlTWFwX2gKLQotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0j
aW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4K
LWNsYXNzIEtleWNoYWluU2hpbVJlc3BvbnNlTWFwIHsKLXB1YmxpYzoKLSAgICBQYXNzT3duUHRy
PFQ+IHdhaXRGb3JSZXNwb25zZSh1aW50NjRfdCByZXF1ZXN0SUQpCi0gICAgewotICAgICAgICB3
aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwot
Ci0gICAgICAgICAgICBpZiAoT3duUHRyPFQ+IHJlc3BvbnNlID0gbV9yZXNwb25zZXMudGFrZShy
ZXF1ZXN0SUQpKQotICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5yZWxlYXNlKCk7Ci0K
LSAgICAgICAgICAgIG1fY29uZGl0aW9uLndhaXQobV9tdXRleCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZSh1aW50NjRfdCByZXF1ZXN0SUQsIFBhc3NPd25QdHI8VD4gcmVzcG9uc2UpCi0gICAgewotICAg
ICAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7Ci0gICAgICAgIEFTU0VSVCghbV9yZXNw
b25zZXMuY29udGFpbnMocmVxdWVzdElEKSk7Ci0KLSAgICAgICAgbV9yZXNwb25zZXMuc2V0KHJl
cXVlc3RJRCwgcmVzcG9uc2UpOwotICAgICAgICBtX2NvbmRpdGlvbi5zaWduYWwoKTsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgTXV0ZXggbV9tdXRleDsKLSAgICBUaHJlYWRDb25kaXRpb24gbV9j
b25kaXRpb247Ci0KLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBPd25QdHI8VD4gPiBtX3Jlc3BvbnNl
czsKLX07Ci0KLQotCi0jZW5kaWYgLy8gS2V5Y2hhaW5TaGltUmVzcG9uc2VNYXBfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1NZXRob2RzLm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1NZXRob2RzLm1tCmlu
ZGV4IDQ2N2MzZTAuLmNmZTMzYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvbWFjL1NlY0l0ZW1TaGltTWV0aG9kcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL21hYy9TZWNJdGVtU2hpbU1ldGhvZHMubW0KQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmICFk
ZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKIAotI2ltcG9ydCAiS2V5Y2hhaW5TaGlt
UmVzcG9uc2VNYXAuaCIKKyNpbXBvcnQgIkJsb2NraW5nUmVzcG9uc2VNYXAuaCIKICNpbXBvcnQg
IlNlY0l0ZW1SZXF1ZXN0RGF0YS5oIgogI2ltcG9ydCAiU2VjSXRlbVJlc3BvbnNlRGF0YS5oIgog
I2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgpAQCAtMzksOSArMzksOSBAQAogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotc3RhdGljIEtleWNoYWluU2hpbVJlc3BvbnNlTWFwPFNlY0l0ZW1SZXNwb25zZURh
dGE+JiByZXNwb25zZU1hcCgpCitzdGF0aWMgQmxvY2tpbmdSZXNwb25zZU1hcDxTZWNJdGVtUmVz
cG9uc2VEYXRhPiYgcmVzcG9uc2VNYXAoKQogewotICAgIEF0b21pY2FsbHlJbml0aWFsaXplZFN0
YXRpYyhLZXljaGFpblNoaW1SZXNwb25zZU1hcDxTZWNJdGVtUmVzcG9uc2VEYXRhPiYsIHJlc3Bv
bnNlTWFwID0gKm5ldyBLZXljaGFpblNoaW1SZXNwb25zZU1hcDxTZWNJdGVtUmVzcG9uc2VEYXRh
Pik7CisgICAgQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljKEJsb2NraW5nUmVzcG9uc2VNYXA8
U2VjSXRlbVJlc3BvbnNlRGF0YT4mLCByZXNwb25zZU1hcCA9ICpuZXcgQmxvY2tpbmdSZXNwb25z
ZU1hcDxTZWNJdGVtUmVzcG9uc2VEYXRhPik7CiAgICAgcmV0dXJuIHJlc3BvbnNlTWFwOwogfQog
Cg==
</data>
<flag name="commit-queue"
          id="147375"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141274</attachid>
            <date>2012-05-10 15:06:12 -0700</date>
            <delta_ts>2012-05-11 11:10:39 -0700</delta_ts>
            <desc>Patch again</desc>
            <filename>bug-86143-v2.diff</filename>
            <type>text/plain</type>
            <size>32456</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0MjBkMTkxLi5lYzYxZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcg
QEAKKzIwMTItMDUtMTAgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAg
ICAgIFdLMi9QbHVnaW5zOiBNb3ZlIGVudW1lcmF0aW9uIG9mIHBsdWdpbnMgdG8gYSBzZWNvbmRh
cnkgVUlQcm9jZXNzIHRocmVhZC4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvODYxNDM+
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDc3NzIxOD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBhdm9pZCBzcGlucyBiZW5lYXRoIFBsdWdp
bkluZm9TdG9yZTo6Z2V0UGx1Z2luSW5mbygpLCBkbyB0aGlzIHdvcmsgb24gYSBzZWNvbmRhcnkK
KyAgICAgICAgdGhyZWFkIGluIHRoZSBVSVByb2Nlc3MuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJ
T2JqZWN0Lmg6CisKKyAgICAgICAgICAgIE1hZGUgQVBJT2JqZWN0IGEgVGhyZWFkU2FmZVJlZkNv
dW50ZWQuIEluIHRoZSBjb250ZXh0IG9mIHRoaXMgcGF0Y2gsIHRoaXMgaXMgdG8KKyAgICAgICAg
ICAgIGJlIGFibGUgdG8gZGlzcGF0Y2ggYm91bmQgRnVuY3Rpb25zIG9uIFdlYkNvbnRleHQuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL21hYy9LZXljaGFpbkl0ZW1TaGltTWV0aG9kcy5tbToKKyAg
ICAgICAgKFdlYktpdDo6cmVzcG9uc2VNYXApOgorICAgICAgICAqIFdlYlByb2Nlc3MvbWFjL1Nl
Y0l0ZW1TaGltTWV0aG9kcy5tbToKKyAgICAgICAgKFdlYktpdDo6cmVzcG9uc2VNYXApOgorICAg
ICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTaGFy
ZWQvQmxvY2tpbmdSZXNwb25zZU1hcC5oOgorICAgICAgICAoQmxvY2tpbmdSZXNwb25zZU1hcCk6
CisgICAgICAgIChCbG9ja2luZ1Jlc3BvbnNlTWFwOjp3YWl0Rm9yUmVzcG9uc2UpOgorICAgICAg
ICAoQmxvY2tpbmdSZXNwb25zZU1hcDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKworICAgICAgICAg
ICAgIFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9LZXljaGFpblNo
aW1SZXNwb25zZU1hcC5oLgorICAgICAgICAgICAgIEdlbmVyYWxpemUgdGhpcyBzb21ld2hhdCBz
aW5jZSBpdCdzIHVzZWZ1bCBpbiBtb3JlIHRoYW4ganVzdCB0aGUga2V5Y2hhaW4gc2NlbmFyaW8u
CisgICAgICAgICAgICAgVGhpcyBjYW4vc2hvdWxkIGJlIGdlbmVyYWxpemVkIGZ1cnRoZXIsIGJ1
dCB0aGF0J3MgYSB0b3BpYyBmb3IgYW5vdGhlciBwYXRjaC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbkluZm9TdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkluZm9TdG9yZTo6
cGx1Z2lucyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkluZm9TdG9yZTo6ZmluZFBsdWdpbkZv
ck1JTUVUeXBlKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1Z2lu
Rm9yRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1
Z2luKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luSW5mb1N0b3JlOjppbmZvRm9yUGx1Z2luV2l0
aFBhdGgpOgorCisgICAgICAgICAgICBTbGFwIGEgbXV0ZXggb24gdGhlIFBsdWdpbkluZm9TdG9y
ZSBzaW5jZSBpdCBjYW4gbm93IGJlIGNhbGxlZCBmcm9tIGJvdGggdGhlCisgICAgICAgICAgICBt
YWluIHRocmVhZCAodmlhIFdLRnJhbWVDYW5TaG93TUlNRVR5cGUpIGFuZCB0aGUgR2V0UGx1Z2lu
IHdvcmsgcXVldWUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6V2ViQ29udGV4
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnByb2Nlc3NEaWRGaW5pc2hMYXVuY2hp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpzZW5kRGlkR2V0UGx1Z2lucyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmhhbmRsZUdldFBsdWdpbnMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb250ZXh0OjpnZXRQbHVnaW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
dGV4dDo6ZGlkUmVjZWl2ZU1lc3NhZ2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUpOgorCisgICAgICAg
ICAgICBNYWtlIEdldFBsdWdpbnMgYSBEaXNwYXRjaE9uQ29ubmVjdGlvblF1ZXVlIG1lc3NhZ2Ug
YW5kIGV4ZWN1dGUgaXQgb24gYSBuZXcKKyAgICAgICAgICAgIHBsdWctaW4gd29yayBxdWV1ZS4g
VGhpcyBlZmZlY3RpdmVseSBtYWtlcyB0aGUgR2V0UGx1Z2luIGNhbGwgYXN5bmNocm9ub3VzLgor
ICAgICAgICAgICAgT24gTWFjLCB0aGUgYnVpbHQtaW4gUERGIHJlYWRlciBpcyBzdGlsbCByZWdp
c3RlcmVkIG9uIHRoZSBtYWluIHRocmVhZCBhcyB0aGF0CisgICAgICAgICAgICBlbmRzIHVwIGNh
bGxpbmcgaW50byBsb2NhbGl6ZWRTdHJpbmcoKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRpZEdldFBsdWdpbnMp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKworICAgICAgICAgICAgQWRkIGEgRGlkR2V0UGx1
Z2lucyBtZXNzYWdlIHRvIFdlYlByb2Nlc3MuIFRoaXMgaXMgcGFzc2VkIGRpcmVjdGx5IHRvIHRo
ZSBoYW5kbGVyCisgICAgICAgICAgICBpbiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OnJlc3BvbnNlTWFwKToKKyAgICAgICAgKFdlYktp
dDo6aGFuZGxlRGlkR2V0UGx1Z2lucyk6CisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlUmVxdWVz
dElEKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpwb3B1bGF0ZVBs
dWdpbkNhY2hlKToKKworICAgICAgICAgICAgVXNlIGEgQmxvY2tpbmdSZXNwb25zZU1hcCB0byBi
bG9jayB0aGUgV2ViUHJvY2VzcyBtYWluIHRocmVhZCB1bnRpbCB0aGUgVUlQcm9jZXNzCisgICAg
ICAgICAgICByZXNwb25kcyB3aXRoIERpZEdldFBsdWdpbnMuCisKIDIwMTItMDUtMTAgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFRl
c3QgL3dlYmtpdDIvV2ViS2l0V2ViVmlldy9yZXNvdXJjZXMgdGltZXMgb3V0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJT2JqZWN0LmgKaW5kZXggMmFiMzMwNC4uODllODg3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UElPYmplY3QuaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xh
c3MgQVBJT2JqZWN0IDogcHVibGljIFJlZkNvdW50ZWQ8QVBJT2JqZWN0PiB7CitjbGFzcyBBUElP
YmplY3QgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QVBJT2JqZWN0PiB7CiBwdWJsaWM6
CiAgICAgZW51bSBUeXBlIHsKICAgICAgICAgLy8gQmFzZSB0eXBlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Jsb2NraW5nUmVzcG9uc2VNYXAuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9CbG9ja2luZ1Jlc3BvbnNlTWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYjE0MzZmNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9CbG9ja2luZ1Jlc3BvbnNlTWFwLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgQmxvY2tpbmdSZXNwb25zZU1hcF9oCisjZGVmaW5lIEJsb2NraW5nUmVzcG9uc2VNYXBf
aAorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0
aXZlcy5oPgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgQmxvY2tpbmdSZXNwb25zZU1h
cCB7CitwdWJsaWM6CisgICAgUGFzc093blB0cjxUPiB3YWl0Rm9yUmVzcG9uc2UodWludDY0X3Qg
cmVxdWVzdElEKQorICAgIHsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIE11
dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKKworICAgICAgICAgICAgaWYgKE93blB0cjxUPiBy
ZXNwb25zZSA9IG1fcmVzcG9uc2VzLnRha2UocmVxdWVzdElEKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzcG9uc2UucmVsZWFzZSgpOworCisgICAgICAgICAgICBtX2NvbmRpdGlvbi53YWl0
KG1fbXV0ZXgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgcmVxdWVzdElELCBQYXNzT3du
UHRyPFQ+IHJlc3BvbnNlKQorICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0
ZXgpOworICAgICAgICBBU1NFUlQoIW1fcmVzcG9uc2VzLmNvbnRhaW5zKHJlcXVlc3RJRCkpOwor
CisgICAgICAgIG1fcmVzcG9uc2VzLnNldChyZXF1ZXN0SUQsIHJlc3BvbnNlKTsKKyAgICAgICAg
bV9jb25kaXRpb24uc2lnbmFsKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIE11dGV4IG1fbXV0
ZXg7CisgICAgVGhyZWFkQ29uZGl0aW9uIG1fY29uZGl0aW9uOworCisgICAgSGFzaE1hcDx1aW50
NjRfdCwgT3duUHRyPFQ+ID4gbV9yZXNwb25zZXM7Cit9OworCisjZW5kaWYgLy8gQmxvY2tpbmdS
ZXNwb25zZU1hcF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5JbmZvU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luSW5mb1N0b3JlLmNwcAppbmRleCBjZWYxNGRjLi43Mzk0OWMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAKQEAg
LTExMywxNSArMTEzLDE1IEBAIHZvaWQgUGx1Z2luSW5mb1N0b3JlOjpsb2FkUGx1Z2luKFZlY3Rv
cjxQbHVnaW5Nb2R1bGVJbmZvPiYgcGx1Z2lucywgY29uc3QgU3RyaW5nCiAKIFZlY3RvcjxQbHVn
aW5Nb2R1bGVJbmZvPiBQbHVnaW5JbmZvU3RvcmU6OnBsdWdpbnMoKQogeworICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX3BsdWdpbnNMb2NrKTsKICAgICBsb2FkUGx1Z2luc0lmTmVjZXNzYXJ5KCk7
Ci0KLSAgICBWZWN0b3I8UGx1Z2luTW9kdWxlSW5mbz4gcGx1Z2lucyhtX3BsdWdpbnMpOwotCi0g
ICAgcmV0dXJuIHBsdWdpbnM7CisgICAgcmV0dXJuIG1fcGx1Z2luczsKIH0KIAogUGx1Z2luTW9k
dWxlSW5mbyBQbHVnaW5JbmZvU3RvcmU6OmZpbmRQbHVnaW5Gb3JNSU1FVHlwZShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKSBjb25zdAogeworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3BsdWdpbnNM
b2NrKTsKKwogICAgIEFTU0VSVCghbWltZVR5cGUuaXNOdWxsKCkpOwogICAgIAogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9wbHVnaW5zLnNpemUoKTsgKytpKSB7CkBAIC0xMzksNiArMTM5
LDggQEAgUGx1Z2luTW9kdWxlSW5mbyBQbHVnaW5JbmZvU3RvcmU6OmZpbmRQbHVnaW5Gb3JNSU1F
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogCiBQbHVnaW5Nb2R1bGVJbmZvIFBsdWdpbklu
Zm9TdG9yZTo6ZmluZFBsdWdpbkZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwg
U3RyaW5nJiBtaW1lVHlwZSkgY29uc3QKIHsKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9wbHVn
aW5zTG9jayk7CisKICAgICBBU1NFUlQoIWV4dGVuc2lvbi5pc051bGwoKSk7CiAgICAgCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BsdWdpbnMuc2l6ZSgpOyArK2kpIHsKQEAgLTE4Miw3
ICsxODQsMTAgQEAgU3RyaW5nIFBsdWdpbkluZm9TdG9yZTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCiAKIFBsdWdpbk1vZHVsZUluZm8gUGx1Z2luSW5m
b1N0b3JlOjpmaW5kUGx1Z2luKFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IEtVUkwmIHVybCkKIHsK
LSAgICBsb2FkUGx1Z2luc0lmTmVjZXNzYXJ5KCk7CisgICAgeworICAgICAgICBNdXRleExvY2tl
ciBsb2NrZXIobV9wbHVnaW5zTG9jayk7CisgICAgICAgIGxvYWRQbHVnaW5zSWZOZWNlc3Nhcnko
KTsKKyAgICB9CiAgICAgCiAgICAgLy8gRmlyc3QsIGNoZWNrIGlmIHdlIGNhbiBnZXQgdGhlIHBs
dWctaW4gYmFzZWQgb24gaXRzIE1JTUUgdHlwZS4KICAgICBpZiAoIW1pbWVUeXBlLmlzTnVsbCgp
KSB7CkBAIC0yMTQsNiArMjE5LDggQEAgUGx1Z2luTW9kdWxlSW5mbyBQbHVnaW5JbmZvU3RvcmU6
OmZpbmRQbHVnaW4oU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgS1VSTCYgdXJsKQogCiBQbHVnaW5N
b2R1bGVJbmZvIFBsdWdpbkluZm9TdG9yZTo6aW5mb0ZvclBsdWdpbldpdGhQYXRoKGNvbnN0IFN0
cmluZyYgcGx1Z2luUGF0aCkgY29uc3QKIHsKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9wbHVn
aW5zTG9jayk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcGx1Z2lucy5zaXplKCk7
ICsraSkgewogICAgICAgICBpZiAobV9wbHVnaW5zW2ldLnBhdGggPT0gcGx1Z2luUGF0aCkKICAg
ICAgICAgICAgIHJldHVybiBtX3BsdWdpbnNbaV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5oCmluZGV4IDRiZmVjYjQuLmVjMGQ2ZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9T
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9T
dG9yZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFBsdWdpbkluZm9TdG9yZV9oCiAKICNp
bmNsdWRlICJQbHVnaW5Nb2R1bGVJbmZvLmgiCisjaW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1p
dGl2ZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEtVUkw7CkBAIC04NCw2
ICs4NSw4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gbV9hZGRpdGlvbmFsUGx1Z2lu
c0RpcmVjdG9yaWVzOwogICAgIFZlY3RvcjxQbHVnaW5Nb2R1bGVJbmZvPiBtX3BsdWdpbnM7CiAg
ICAgYm9vbCBtX3BsdWdpbkxpc3RJc1VwVG9EYXRlOworCisgICAgbXV0YWJsZSBNdXRleCBtX3Bs
dWdpbnNMb2NrOwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IGYxYTBmMGYuLjkwZDMzZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTE0Nyw2ICsxNDcsNyBAQCBXZWJD
b250ZXh0OjpXZWJDb250ZXh0KFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwsIGNvbnN0IFN0cmlu
ZyYgaW5qZWN0ZWRCdW5kbGVQYQogICAgICwgbV9pbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGlj
eShIVFRQQ29va2llQWNjZXB0UG9saWN5QWx3YXlzKQogI2VuZGlmCiAgICAgLCBtX3Byb2Nlc3NU
ZXJtaW5hdGlvbkVuYWJsZWQodHJ1ZSkKKyAgICAsIG1fcGx1Z2luV29ya1F1ZXVlKCJjb20uYXBw
bGUuQ29yZUlQQy5QbHVnaW5RdWV1ZSIpCiB7CiAjaWYgIUxPR19ESVNBQkxFRAogICAgIFdlYktp
dDo6aW5pdGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3NhcnkoKTsKQEAgLTM1NCw2ICszNTUsOCBA
QCB2b2lkIFdlYkNvbnRleHQ6OnByb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcoV2ViUHJvY2Vzc1By
b3h5KiBwcm9jZXNzKQogICAgIEFTU0VSVF9VTlVTRUQocHJvY2VzcywgcHJvY2VzcyA9PSBtX3By
b2Nlc3MpOwogCiAgICAgbV92aXNpdGVkTGlua1Byb3ZpZGVyLnByb2Nlc3NEaWRGaW5pc2hMYXVu
Y2hpbmcoKTsKKworICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5hZGRRdWV1ZUNsaWVudCh0
aGlzKTsKICAgICAKICAgICAvLyBTb21ldGltZXMgdGhlIG1lbW9yeVNhbXBsZXIgZ2V0cyBpbml0
aWFsaXplZCBhZnRlciBwcm9jZXNzIGluaXRpYWxpemF0aW9uIGhhcyBoYXBwZW5lZCBidXQgYmVm
b3JlIHRoZSBwcm9jZXNzIGhhcyBmaW5pc2hlZCBsYXVuY2hpbmcKICAgICAvLyBzbyBjaGVjayBp
ZiBpdCBuZWVkcyB0byBiZSBzdGFydGVkIGhlcmUKQEAgLTYwNCwyMCArNjA3LDM5IEBAIHZvaWQg
V2ViQ29udGV4dDo6YWRkVmlzaXRlZExpbmtIYXNoKExpbmtIYXNoIGxpbmtIYXNoKQogICAgIG1f
dmlzaXRlZExpbmtQcm92aWRlci5hZGRWaXNpdGVkTGluayhsaW5rSGFzaCk7CiB9CiAKLXZvaWQg
V2ViQ29udGV4dDo6Z2V0UGx1Z2lucyhib29sIHJlZnJlc2gsIFZlY3RvcjxQbHVnaW5JbmZvPiYg
cGx1Z2luSW5mb3MpCit2b2lkIFdlYkNvbnRleHQ6OnNlbmREaWRHZXRQbHVnaW5zKHVpbnQ2NF90
IHJlcXVlc3RJRCwgY29uc3QgVmVjdG9yPFBsdWdpbkluZm8+JiBwbHVnaW5JbmZvcykKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgVmVjdG9yPFBsdWdpbkluZm8+IHBsdWdp
bnMocGx1Z2luSW5mb3MpOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIC8vIEFkZCBidWlsdC1p
biBQREYgbGFzdCwgc28gdGhhdCBpdCdzIG5vdCB1c2VkIHdoZW4gYSByZWFsIHBsdWctaW4gaXMg
aW5zdGFsbGVkLgorICAgIC8vIE5PVEU6IFRoaXMgaGFzIHRvIGJlIGRvbmUgb24gdGhlIG1haW4g
dGhyZWFkIGFzIGl0IGNhbGxzIGxvY2FsaXplZFN0cmluZygpLgorICAgIGlmICghb21pdFBERlN1
cHBvcnQoKSkKKyAgICAgICAgcGx1Z2lucy5hcHBlbmQoQnVpbHRJblBERlZpZXc6OnBsdWdpbklu
Zm8oKSk7CisjZW5kaWYKKworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vz
czo6RGlkR2V0UGx1Z2lucyhyZXF1ZXN0SUQsIHBsdWdpbnMpLCAwKTsKK30KKwordm9pZCBXZWJD
b250ZXh0OjpoYW5kbGVHZXRQbHVnaW5zKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCByZWZyZXNo
KQogewogICAgIGlmIChyZWZyZXNoKQogICAgICAgICBtX3BsdWdpbkluZm9TdG9yZS5yZWZyZXNo
KCk7CiAKKyAgICBWZWN0b3I8UGx1Z2luSW5mbz4gcGx1Z2luSW5mb3M7CisKICAgICBWZWN0b3I8
UGx1Z2luTW9kdWxlSW5mbz4gcGx1Z2lucyA9IG1fcGx1Z2luSW5mb1N0b3JlLnBsdWdpbnMoKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBsdWdpbnMuc2l6ZSgpOyArK2kpCiAgICAgICAg
IHBsdWdpbkluZm9zLmFwcGVuZChwbHVnaW5zW2ldLmluZm8pOwogCi0jaWYgUExBVEZPUk0oTUFD
KQotICAgIC8vIEFkZCBidWlsdC1pbiBQREYgbGFzdCwgc28gdGhhdCBpdCdzIG5vdCB1c2VkIHdo
ZW4gYSByZWFsIHBsdWctaW4gaXMgaW5zdGFsbGVkLgotICAgIGlmICghb21pdFBERlN1cHBvcnQo
KSkKLSAgICAgICAgcGx1Z2luSW5mb3MuYXBwZW5kKEJ1aWx0SW5QREZWaWV3OjpwbHVnaW5JbmZv
KCkpOwotI2VuZGlmCisgICAgUnVuTG9vcDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKCZXZWJDb250
ZXh0OjpzZW5kRGlkR2V0UGx1Z2lucywgdGhpcywgcmVxdWVzdElELCBwbHVnaW5JbmZvcykpOwor
fQorCit2b2lkIFdlYkNvbnRleHQ6OmdldFBsdWdpbnMoQ29yZUlQQzo6Q29ubmVjdGlvbiosIHVp
bnQ2NF90IHJlcXVlc3RJRCwgYm9vbCByZWZyZXNoKQoreworICAgIG1fcGx1Z2luV29ya1F1ZXVl
LmRpc3BhdGNoKGJpbmQoJldlYkNvbnRleHQ6OmhhbmRsZUdldFBsdWdpbnMsIHRoaXMsIHJlcXVl
c3RJRCwgcmVmcmVzaCkpOwogfQogCiB2b2lkIFdlYkNvbnRleHQ6OmdldFBsdWdpblBhdGgoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIFN0cmluZyYgcGx1
Z2luUGF0aCkKQEAgLTkyMyw0ICs5NDUsMTIgQEAgdm9pZCBXZWJDb250ZXh0OjpnYXJiYWdlQ29s
bGVjdEphdmFTY3JpcHRPYmplY3RzKCkKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6
OldlYlByb2Nlc3M6OkdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHMoKSk7CiB9CiAKK3Zv
aWQgV2ViQ29udGV4dDo6ZGlkUmVjZWl2ZU1lc3NhZ2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoQ29y
ZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJ
RCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMsIGJvb2wmIGRpZEhhbmRsZU1l
c3NhZ2UpCit7CisgICAgaWYgKG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NXZWJD
b250ZXh0PigpKSB7CisgICAgICAgIGRpZFJlY2VpdmVXZWJDb250ZXh0TWVzc2FnZU9uQ29ubmVj
dGlvbldvcmtRdWV1ZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50cywgZGlkSGFuZGxl
TWVzc2FnZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5kZXggZGRmM2Q3OS4uODk3
YjNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCkBAIC02Niw3ICs2Niw3
IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogICAgIAogdHlwZWRlZiBH
ZW5lcmljQ2FsbGJhY2s8V0tEaWN0aW9uYXJ5UmVmPiBEaWN0aW9uYXJ5Q2FsbGJhY2s7CiAKLWNs
YXNzIFdlYkNvbnRleHQgOiBwdWJsaWMgQVBJT2JqZWN0IHsKK2NsYXNzIFdlYkNvbnRleHQgOiBw
dWJsaWMgQVBJT2JqZWN0LCBwcml2YXRlIENvcmVJUEM6OkNvbm5lY3Rpb246OlF1ZXVlQ2xpZW50
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUNvbnRleHQ7
CiAKQEAgLTIxNiw3ICsyMTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkVXBkYXRlSGlzdG9y
eVRpdGxlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5n
JiB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpOwogCiAgICAgLy8gUGx1Z2lucwotICAgIHZvaWQgZ2V0
UGx1Z2lucyhib29sIHJlZnJlc2gsIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOworICAg
IHZvaWQgZ2V0UGx1Z2lucyhDb3JlSVBDOjpDb25uZWN0aW9uKiwgdWludDY0X3QgcmVxdWVzdElE
LCBib29sIHJlZnJlc2gpOwogICAgIHZvaWQgZ2V0UGx1Z2luUGF0aChjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgU3RyaW5nJiBwbHVnaW5QYXRoKTsKICNp
ZiAhRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogICAgIHZvaWQgZGlkR2V0U2l0ZXNXaXRoUGx1Z2lu
RGF0YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2l0ZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpA
QCAtMjQ1LDYgKzI0NSw5IEBAIHByaXZhdGU6CiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJh
dGVkIFdlYkNvbnRleHRNZXNzYWdlUmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRSZWNlaXZlV2Vi
Q29udGV4dE1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwg
Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY1dlYkNv
bnRleHRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENv
cmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIE93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+
Jik7CisgICAgdm9pZCBkaWRSZWNlaXZlV2ViQ29udGV4dE1lc3NhZ2VPbkNvbm5lY3Rpb25Xb3Jr
UXVldWUoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6
QXJndW1lbnREZWNvZGVyKiwgYm9vbCYgZGlkSGFuZGxlTWVzc2FnZSk7CisKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoQ29yZUlQQzo6Q29u
bmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwg
Ym9vbCYgZGlkSGFuZGxlTWVzc2FnZSkgT1ZFUlJJREU7CiAKICAgICBzdGF0aWMgdm9pZCBsYW5n
dWFnZUNoYW5nZWQodm9pZCogY29udGV4dCk7CiAgICAgdm9pZCBsYW5ndWFnZUNoYW5nZWQoKTsK
QEAgLTI1Nyw2ICsyNjAsOSBAQCBwcml2YXRlOgogICAgIFN0cmluZyBsb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkoKSBjb25zdDsKICAgICBTdHJpbmcgcGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGly
ZWN0b3J5KCkgY29uc3Q7CiAKKyAgICB2b2lkIGhhbmRsZUdldFBsdWdpbnModWludDY0X3QgcmVx
dWVzdElELCBib29sIHJlZnJlc2gpOworICAgIHZvaWQgc2VuZERpZEdldFBsdWdpbnModWludDY0
X3QgcmVxdWVzdElELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mKTsKKwogICAg
IFByb2Nlc3NNb2RlbCBtX3Byb2Nlc3NNb2RlbDsKICAgICAKICAgICAvLyBGSVhNRTogSW4gdGhl
IGZ1dHVyZSwgdGhpcyBzaG91bGQgYmUgb25lIG9yIG1vcmUgV2ViUHJvY2Vzc1Byb3hpZXMuCkBA
IC0zMjIsNiArMzI4LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fcHJvY2Vzc1Rlcm1pbmF0aW9u
RW5hYmxlZDsKICAgICAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8RGljdGlvbmFyeUNh
bGxiYWNrPiA+IG1fZGljdGlvbmFyeUNhbGxiYWNrczsKKworICAgIFdvcmtRdWV1ZSBtX3BsdWdp
bldvcmtRdWV1ZTsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSBib29sIFdlYkNv
bnRleHQ6OnNlbmRUb0FsbFByb2Nlc3Nlcyhjb25zdCBVJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5pbgppbmRleCA4NWVhN2EyLi5j
MDJmNGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5tZXNz
YWdlcy5pbgpAQCAtMzIsNyArMzIsNyBAQCBtZXNzYWdlcyAtPiBXZWJDb250ZXh0IHsKICAgICBB
ZGRWaXNpdGVkTGlua0hhc2godWludDY0X3QgbGlua0hhc2gpCiAgICAgCiAgICAgIyBQbHVnaW4g
bWVzc2FnZXMuCi0gICAgR2V0UGx1Z2lucyhib29sIHJlZnJlc2gpIC0+IChWZWN0b3I8V2ViQ29y
ZTo6UGx1Z2luSW5mbz4gcGx1Z2lucykKKyAgICBHZXRQbHVnaW5zKHVpbnQ2NF90IHJlcXVlc3RJ
RCwgYm9vbCByZWZyZXNoKSBEaXNwYXRjaE9uQ29ubmVjdGlvblF1ZXVlCiAgICAgR2V0UGx1Z2lu
UGF0aChXVEY6OlN0cmluZyBtaW1lVHlwZSwgV1RGOjpTdHJpbmcgdXJsU3RyaW5nKSAtPiAoV1RG
OjpTdHJpbmcgcGx1Z2luUGF0aCkKIAogI2lmICFFTkFCTEUoUExVR0lOX1BST0NFU1MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
M2FlMDBhZi4uYThkNjY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjAzLDcgKzIwMyw2IEBACiAJCTFBQUYwQzRCMTJCMTYz
MzQwMDhFNDlFMiAvKiBBcmd1bWVudENvZGVyc0NGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQUYwQzQ5MTJCMTYzMzQwMDhFNDlFMiAvKiBBcmd1
bWVudENvZGVyc0NGLmNwcCAqLzsgfTsKIAkJMUFBRjI2MzgxNDY4N0MzOTAwNEExRThBIC8qIFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBRjI2MzYxNDY4N0MzOTAwNEExRThBIC8qIFRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tICovOyB9OwogCQkxQUFGMjYzOTE0Njg3QzM5MDA0QTFF
OEEgLyogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQUYyNjM3MTQ2ODdDMzkwMDRBMUU4QSAvKiBU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oICovOyB9OwotCQkxQUI0MkU4NzE0QkJCQkIy
MDA0MjcyRjcgLyogS2V5Y2hhaW5TaGltUmVzcG9uc2VNYXAuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjQyRTg2MTRCQkJCQjIwMDQyNzJGNyAvKiBL
ZXljaGFpblNoaW1SZXNwb25zZU1hcC5oICovOyB9OwogCQkxQUI3RDRDQTEyODhBQUE3MDBDRkQw
OEMgLyogRG93bmxvYWRQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUFCN0Q0QzgxMjg4QUFBNzAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHkuaCAq
LzsgfTsKIAkJMUFCN0Q0Q0IxMjg4QUFBNzAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHkuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCN0Q0QzkxMjg4
QUFBNzAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHkuY3BwICovOyB9OwogCQkxQUI3RDYxOTEyODhC
OUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RDYxNzEyODhCOUQ5MDBD
RkQwOEMgLyogRG93bmxvYWRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CkBAIC0zMjcs
NiArMzI2LDcgQEAKIAkJMzdDNEU5RjYxMzFDNkU3RTAwMjlCRDVBIC8qIGNvbmZpZy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjM5NkVBNTUxMkUwRUQy
RDAwRjRGRUI3IC8qIGNvbmZpZy5oICovOyB9OwogCQkzN0Y2MjNCODEyQTU3QjYyMDBFM0ZERjYg
LyogV0tGaW5kT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzdGNjIzQjcxMkE1N0I2MjAwRTNGREY2IC8qIFdLRmluZE9wdGlvbnMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzN0Y5MERFMzEz
NzY1NjBFMDA1MUNGNjggLyogSFRUUENvb2tpZUFjY2VwdFBvbGljeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjYzODk1NEYxMzNCRUYzODAwODk0MUQ1
IC8qIEhUVFBDb29raWVBY2NlcHRQb2xpY3kuaCAqLzsgfTsKKwkJNEY2MDE0MzIxNTVDNUFBMjAw
MUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNjAxNDMwMTU1QzVBMzIwMDFGQkRFMCAvKiBCbG9ja2lu
Z1Jlc3BvbnNlTWFwLmggKi87IH07CiAJCTUxMDIxRTlDMTJCMTY3ODgwMDVDMDMzQyAvKiBXZWJD
b250ZXh0TWVudUNsaWVudE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMDIxRTlCMTJCMTY3ODgwMDVDMDMzQyAvKiBXZWJDb250ZXh0TWVudUNs
aWVudE1hYy5tbSAqLzsgfTsKIAkJNTEwRkJCOUExMjg4Qzk1RTAwQUZGREY0IC8qIFdlYkNvbnRl
eHRNZW51SXRlbURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTEwRkJCOTgxMjg4Qzk1RTAwQUZGREY0IC8qIFdlYkNvbnRleHRNZW51SXRlbURh
dGEuY3BwICovOyB9OwogCQk1MTBGQkI5QjEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1l
bnVJdGVtRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEwRkJCOTkxMjg4Qzk1RTAwQUZGREY0IC8qIFdlYkNvbnRleHRNZW51SXRlbURhdGEuaCAq
LzsgfTsKQEAgLTEyMTIsNyArMTIxMiw2IEBACiAJCTFBQUYwQzQ5MTJCMTYzMzQwMDhFNDlFMiAv
KiBBcmd1bWVudENvZGVyc0NGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBs
aWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBmaWxlRW5jb2RpbmcgPSA0OyBw
YXRoID0gQXJndW1lbnRDb2RlcnNDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFBQUYyNjM2MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUFG
MjYzNzE0Njg3QzM5MDA0QTFFOEEgLyogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUFCNDJFODYxNEJCQkJCMjAw
NDI3MkY3IC8qIEtleWNoYWluU2hpbVJlc3BvbnNlTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEtleWNoYWluU2hpbVJlc3BvbnNlTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFBQjdENEM4MTI4OEFBQTcwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvd25sb2FkUHJveHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCN0Q0QzkxMjg4QUFBNzAwQ0ZEMDhDIC8qIERvd25s
b2FkUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG93bmxv
YWRQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjdENUU5MTI4OEI4
QzAwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IERvd25sb2FkUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMzQ5LDYgKzEzNDgsNyBAQAogCQkzNzk0ODQwNjE1MEM0Qjk2MDBFNTJDRTkgLyog
V0tSZW5kZXJMYXllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
S1JlbmRlckxheWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc5NDg0MDcx
NTBDNEI5NjAwRTUyQ0U5IC8qIFdLUmVuZGVyTGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tSZW5kZXJMYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzN0Y2MjNCNzEyQTU3QjYyMDBFM0ZERjYgLyogV0tGaW5kT3B0aW9ucy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS0ZpbmRPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTRGNjAxNDMwMTU1QzVBMzIwMDFGQkRFMCAvKiBCbG9ja2luZ1Jlc3BvbnNl
TWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsb2NraW5nUmVzcG9uc2VN
YXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwMDMxRjYxMzc5Q0FDQjAwQzhE
RkU0IC8qIFdlYlByb2Nlc3NTaGltLmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgaW5jbHVkZUluSW5k
ZXggPSAwOyBwYXRoID0gV2ViUHJvY2Vzc1NoaW0uZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CiAJCTUxMDIxRTlCMTJCMTY3ODgwMDVDMDMzQyAvKiBXZWJDb250ZXh0
TWVudUNsaWVudE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MTBGQkI5ODEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb250ZXh0TWVudUl0ZW1E
YXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMjgsNyArMjIyOCw2IEBA
CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1MTJERjZENjEzOEMxODFBMDBBMjJGQzYgLyogS2V5Y2hh
aW5JdGVtU2hpbU1ldGhvZHMuaCAqLywKIAkJCQk1MTJERjZENzEzOEMxODFBMDBBMjJGQzYgLyog
S2V5Y2hhaW5JdGVtU2hpbU1ldGhvZHMubW0gKi8sCi0JCQkJMUFCNDJFODYxNEJCQkJCMjAwNDI3
MkY3IC8qIEtleWNoYWluU2hpbVJlc3BvbnNlTWFwLmggKi8sCiAJCQkJNTExRjhBN0QxMzhCNDZG
RTAwQTk1RjQ0IC8qIFNlY0l0ZW1TaGltTWV0aG9kcy5oICovLAogCQkJCTUxMUY4QTdFMTM4QjQ2
RkUwMEE5NUY0NCAvKiBTZWNJdGVtU2hpbU1ldGhvZHMubW0gKi8sCiAJCQkJQkMzMDY1QzMxMjU5
MkY4OTAwRTcxMjc4IC8qIFdlYlByb2Nlc3NNYWMubW0gKi8sCkBAIC0yMzQ0LDYgKzIzNDMsNyBA
QAogCQkJCTVENTE4NDU0MTNCQ0Y5Q0MwMEM3RkY0QSAvKiBBUElDbGllbnRUcmFpdHMuaCAqLywK
IAkJCQlCNjM0MDNGODE0OTEwRDU3MDAxMDcwQjUgLyogQVBJT2JqZWN0LmNwcCAqLywKIAkJCQlC
Q0YwNEM4QzExRkY5QjdEMDBGODZBNTggLyogQVBJT2JqZWN0LmggKi8sCisJCQkJNEY2MDE0MzAx
NTVDNUEzMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VNYXAuaCAqLywKIAkJCQlCQzMwNjVG
OTEyNTkzNDRFMDBFNzEyNzggLyogQ2FjaGVNb2RlbC5oICovLAogCQkJCTFBMkQ5NTZFMTI4NDg1
NjQwMDFFQjk2MiAvKiBDaGlsZFByb2Nlc3MuY3BwICovLAogCQkJCTFBMkQ5NTZEMTI4NDg1NjQw
MDFFQjk2MiAvKiBDaGlsZFByb2Nlc3MuaCAqLywKQEAgLTM4ODksNiArMzg4OSw3IEBACiAJCQkJ
MUFFRkNDMTIxMUQwMUY5NjAwODIxOUQzIC8qIFBsdWdpbkluZm9TdG9yZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUEzRDYxMDIxM0E3Q0MyQTAwRjk1RDRFIC8qIFBsdWdpbk1vZHVsZUluZm8uaCBp
biBIZWFkZXJzICovLAogCQkJCTFBMDQzOTc2MTI0RDAzNDgwMEZGQkZCNSAvKiBQbHVnaW5Qcm9j
ZXNzLmggaW4gSGVhZGVycyAqLywKKwkJCQk0RjYwMTQzMjE1NUM1QUEyMDAxRkJERTAgLyogQmxv
Y2tpbmdSZXNwb25zZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwRUM5MDYxMjRDMEFCODAw
N0VGNEE1IC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTBFQzkwRjEyNEMwQUY1MDA3RUY0QTUgLyogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTJCQjZEMTE0MTE3QjREMDAwRjM1RDQgLyogUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC00MTkzLDcgKzQx
OTQsNiBAQAogCQkJCUJDODY5OUI3MTE2QUFEQUEwMDJBOTI1QiAvKiBXS1ZpZXdJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkZBNjE3OUYxMkYwQjk5RDAwMzNFMENBIC8qIFdLVmlld1By
aXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMkU2RThFMTE0MTk3MTUwMEE2M0IxRSAvKiBX
b3JrUXVldWUuaCBpbiBIZWFkZXJzICovLAotCQkJCTFBQjQyRTg3MTRCQkJCQjIwMDQyNzJGNyAv
KiBLZXljaGFpblNoaW1SZXNwb25zZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE3QkY5OTYx
NEQwQTczRTAwQTVBMDY5IC8qIE5ldHNjYXBlU2FuZGJveEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkNFMDkzNzgxNEZCMTI4QzAwMTEzOEQ5IC8qIExheWVySG9zdGluZ0NvbnRleHQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTI5NkJEODVEMTUwMTlCQzMwMDcxRjQyNCAvKiBTdHJpbmdV
dGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwCmluZGV4IDY2MjJjZjYuLmMxNDc5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVT
KQogCisjaW5jbHVkZSAiQmxvY2tpbmdSZXNwb25zZU1hcC5oIgogI2luY2x1ZGUgIlBsdWdpbklu
Zm9TdG9yZS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YkNvb2tpZU1hbmFnZXIuaCIKQEAgLTM3LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0tV
UkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRm
b3JtUGFzdGVib2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAKICNpZiBVU0UoQ0Yp
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtMTAyLDYgKzEwNCwyMyBAQCB2b2lkIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQYWdlKiwg
VmVjdG9yPFdlYkNvcmU6OgogICAgIHBsdWdpbnMgPSBtX2NhY2hlZFBsdWdpbnM7CiB9CiAKK3N0
YXRpYyBCbG9ja2luZ1Jlc3BvbnNlTWFwPFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiA+JiBy
ZXNwb25zZU1hcCgpCit7CisgICAgQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljKEJsb2NraW5n
UmVzcG9uc2VNYXA8VmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+ID4mLCByZXNwb25zZU1hcCA9
ICpuZXcgQmxvY2tpbmdSZXNwb25zZU1hcDxWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gPik7
CisgICAgcmV0dXJuIHJlc3BvbnNlTWFwOworfQorCit2b2lkIGhhbmRsZURpZEdldFBsdWdpbnMo
dWludDY0X3QgcmVxdWVzdElELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mIHBs
dWdpbnMpCit7CisgICAgcmVzcG9uc2VNYXAoKS5kaWRSZWNlaXZlUmVzcG9uc2UocmVxdWVzdElE
LCBhZG9wdFB0cihuZXcgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+KHBsdWdpbnMpKSk7Cit9
CisKK3N0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVJlcXVlc3RJRCgpCit7CisgICAgc3RhdGljIGlu
dCB1bmlxdWVJRDsKKyAgICByZXR1cm4gYXRvbWljSW5jcmVtZW50KCZ1bmlxdWVJRCk7Cit9CisK
IHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpwb3B1bGF0ZVBsdWdpbkNhY2hlKCkKIHsKICAg
ICBpZiAobV9wbHVnaW5DYWNoZUlzUG9wdWxhdGVkKQpAQCAtMTA5LDEzICsxMjgsMTEgQEAgdm9p
ZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnBvcHVsYXRlUGx1Z2luQ2FjaGUoKQogCiAgICAgQVNT
RVJUKG1fY2FjaGVkUGx1Z2lucy5pc0VtcHR5KCkpOwogICAgIAotICAgIFZlY3RvcjxQbHVnaW5J
bmZvPiBwbHVnaW5zOwotICAgIAogICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgZG8gc29tZXRoaW5n
IGluIGNhc2Ugb2YgZXJyb3IgaGVyZT8KLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0
aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpHZXRQbHVnaW5zKG1fc2hvdWxk
UmVmcmVzaFBsdWdpbnMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTWVzc2FnZXM6OldlYkNvbnRleHQ6OkdldFBsdWdpbnM6OlJlcGx5KHBsdWdpbnMp
LCAwKTsKKyAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSBnZW5lcmF0ZVJlcXVlc3RJRCgpOworICAg
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQ29u
dGV4dDo6R2V0UGx1Z2lucyhyZXF1ZXN0SUQsIG1fc2hvdWxkUmVmcmVzaFBsdWdpbnMpLCAwKTsK
IAotICAgIG1fY2FjaGVkUGx1Z2lucy5zd2FwKHBsdWdpbnMpOworICAgIG1fY2FjaGVkUGx1Z2lu
cyA9ICpyZXNwb25zZU1hcCgpLndhaXRGb3JSZXNwb25zZShyZXF1ZXN0SUQpOwogICAgIAogICAg
IG1fc2hvdWxkUmVmcmVzaFBsdWdpbnMgPSBmYWxzZTsKICAgICBtX3BsdWdpbkNhY2hlSXNQb3B1
bGF0ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggMDg2ZmQw
YS4uNDEyYTc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC04NSw2ICs4
NSw4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IG1fY2FjaGVk
UGx1Z2luczsKIH07CiAKK3ZvaWQgaGFuZGxlRGlkR2V0UGx1Z2lucyh1aW50NjRfdCByZXF1ZXN0
SUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOworCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogI2VuZGlmIC8vIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYzQzNTIyMS4uOGFmNjRmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xMDMwLDQgKzEwMzAs
MTAgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRUZXh0Q2hlY2tlclN0YXRlKGNvbnN0IFRleHRDaGVj
a2VyU3RhdGUmIHRleHRDaGVja2VyU3RhdGUpCiAgICAgfQogfQogCit2b2lkIFdlYlByb2Nlc3M6
OmRpZEdldFBsdWdpbnMoQ29yZUlQQzo6Q29ubmVjdGlvbiosIHVpbnQ2NF90IHJlcXVlc3RJRCwg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+JiBwbHVnaW5zKQoreworICAgIC8vIFBh
c3MgdGhpcyB0byBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwLgorICAgIGhhbmRsZURpZEdldFBs
dWdpbnMocmVxdWVzdElELCBwbHVnaW5zKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGVhZmUxZDkuLjkxOTE1ZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0zMCw2ICszMCw3IEBA
CiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWEuaCIKICNp
bmNsdWRlICJFdmVudERpc3BhdGNoZXIuaCIKKyNpbmNsdWRlICJQbHVnaW5JbmZvU3RvcmUuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZUNhY2hlc1RvQ2xlYXIuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0
ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCkBAIC0yNDMsNiArMjQ0LDggQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJQcm9jZXNzTWVzc2FnZShDb3JlSVBDOjpD
b25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIq
KTsKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJQcm9jZXNzTWVzc2FnZU9uQ29ubmVjdGlvbldvcmtR
dWV1ZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpB
cmd1bWVudERlY29kZXIqLCBib29sJiBkaWRIYW5kbGVNZXNzYWdlKTsKIAorICAgIHZvaWQgZGlk
R2V0UGx1Z2lucyhDb3JlSVBDOjpDb25uZWN0aW9uKiwgdWludDY0X3QgcmVxdWVzdElELCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mKTsKKwogICAgIFJlZlB0cjxXZWJDb25uZWN0
aW9uVG9VSVByb2Nlc3M+IG1fY29ubmVjdGlvbjsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFJl
ZlB0cjxXZWJQYWdlPiA+IG1fcGFnZU1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAzYjZhMWY3Li5iN2JjNzIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC01
NCw2ICs1NCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgewogICAgIENsZWFyUGx1Z2luU2l0
ZURhdGEoVmVjdG9yPFdURjo6U3RyaW5nPiBwbHVnaW5QYXRocywgVmVjdG9yPFdURjo6U3RyaW5n
PiBzaXRlcywgdWludDY0X3QgZmxhZ3MsIHVpbnQ2NF90IG1heEFnZUluU2Vjb25kcywgdWludDY0
X3QgY2FsbGJhY2tJRCkKICNlbmRpZgogCisgICAgRGlkR2V0UGx1Z2lucyh1aW50NjRfdCByZXF1
ZXN0SUQsIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiBwbHVnaW5zKSBEaXNwYXRjaE9uQ29u
bmVjdGlvblF1ZXVlCisKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCiAgICAgUGx1Z2luUHJv
Y2Vzc0NyYXNoZWQoU3RyaW5nIHBsdWdpblByb2Nlc3MpIERpc3BhdGNoT25Db25uZWN0aW9uUXVl
dWUKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvS2V5
Y2hhaW5JdGVtU2hpbU1ldGhvZHMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9L
ZXljaGFpbkl0ZW1TaGltTWV0aG9kcy5tbQppbmRleCA1ZjcxYWU0Li5mZjMwOTgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9LZXljaGFpbkl0ZW1TaGltTWV0aG9k
cy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9LZXljaGFpbkl0ZW1TaGlt
TWV0aG9kcy5tbQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgZGVmaW5lZChCVUlMRElOR19PTl9T
Tk9XX0xFT1BBUkQpCiAKLSNpbXBvcnQgIktleWNoYWluU2hpbVJlc3BvbnNlTWFwLmgiCisjaW1w
b3J0ICJCbG9ja2luZ1Jlc3BvbnNlTWFwLmgiCiAjaW1wb3J0ICJTZWNLZXljaGFpbkl0ZW1SZXF1
ZXN0RGF0YS5oIgogI2ltcG9ydCAiU2VjS2V5Y2hhaW5JdGVtUmVzcG9uc2VEYXRhLmgiCiAjaW1w
b3J0ICJXZWJQcm9jZXNzLmgiCkBAIC0xNDEsOSArMTQxLDkgQEAgc3RhdGljIGJvb2wgd2ViRnJl
ZUtleWNoYWluSXRlbUNvbnRlbnQodm9pZCogZGF0YSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
c3RhdGljIEtleWNoYWluU2hpbVJlc3BvbnNlTWFwPFNlY0tleWNoYWluSXRlbVJlc3BvbnNlRGF0
YT4mIHJlc3BvbnNlTWFwKCkKK3N0YXRpYyBCbG9ja2luZ1Jlc3BvbnNlTWFwPFNlY0tleWNoYWlu
SXRlbVJlc3BvbnNlRGF0YT4mIHJlc3BvbnNlTWFwKCkKIHsKLSAgICBBdG9taWNhbGx5SW5pdGlh
bGl6ZWRTdGF0aWMoS2V5Y2hhaW5TaGltUmVzcG9uc2VNYXA8U2VjS2V5Y2hhaW5JdGVtUmVzcG9u
c2VEYXRhPiYsIHJlc3BvbnNlTWFwID0gKm5ldyBLZXljaGFpblNoaW1SZXNwb25zZU1hcDxTZWNL
ZXljaGFpbkl0ZW1SZXNwb25zZURhdGE+KTsKKyAgICBBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0
aWMoQmxvY2tpbmdSZXNwb25zZU1hcDxTZWNLZXljaGFpbkl0ZW1SZXNwb25zZURhdGE+JiwgcmVz
cG9uc2VNYXAgPSAqbmV3IEJsb2NraW5nUmVzcG9uc2VNYXA8U2VjS2V5Y2hhaW5JdGVtUmVzcG9u
c2VEYXRhPik7CiAgICAgcmV0dXJuIHJlc3BvbnNlTWFwOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9LZXljaGFpblNoaW1SZXNwb25zZU1hcC5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvS2V5Y2hhaW5TaGltUmVzcG9uc2VNYXAuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjRhNzhlNi4uMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9LZXljaGFpblNoaW1SZXNwb25zZU1hcC5oCisrKyAvZGV2
L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgS2V5Y2hhaW5TaGlt
UmVzcG9uc2VNYXBfaAotI2RlZmluZSBLZXljaGFpblNoaW1SZXNwb25zZU1hcF9oCi0KLSNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBLZXljaGFpblNoaW1SZXNwb25zZU1hcCB7Ci1w
dWJsaWM6Ci0gICAgUGFzc093blB0cjxUPiB3YWl0Rm9yUmVzcG9uc2UodWludDY0X3QgcmVxdWVz
dElEKQotICAgIHsKLSAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX211dGV4KTsKLQotICAgICAgICAgICAgaWYgKE93blB0cjxUPiByZXNwb25z
ZSA9IG1fcmVzcG9uc2VzLnRha2UocmVxdWVzdElEKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
cmVzcG9uc2UucmVsZWFzZSgpOwotCi0gICAgICAgICAgICBtX2NvbmRpdGlvbi53YWl0KG1fbXV0
ZXgpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgcmVxdWVzdElELCBQYXNzT3duUHRyPFQ+
IHJlc3BvbnNlKQotICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwot
ICAgICAgICBBU1NFUlQoIW1fcmVzcG9uc2VzLmNvbnRhaW5zKHJlcXVlc3RJRCkpOwotCi0gICAg
ICAgIG1fcmVzcG9uc2VzLnNldChyZXF1ZXN0SUQsIHJlc3BvbnNlKTsKLSAgICAgICAgbV9jb25k
aXRpb24uc2lnbmFsKCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIE11dGV4IG1fbXV0ZXg7Ci0g
ICAgVGhyZWFkQ29uZGl0aW9uIG1fY29uZGl0aW9uOwotCi0gICAgSGFzaE1hcDx1aW50NjRfdCwg
T3duUHRyPFQ+ID4gbV9yZXNwb25zZXM7Ci19OwotCi0KLQotI2VuZGlmIC8vIEtleWNoYWluU2hp
bVJlc3BvbnNlTWFwX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFj
L1NlY0l0ZW1TaGltTWV0aG9kcy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1Nl
Y0l0ZW1TaGltTWV0aG9kcy5tbQppbmRleCA0NjdjM2UwLi5jZmUzM2FkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9TZWNJdGVtU2hpbU1ldGhvZHMubW0KKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1NZXRob2RzLm1tCkBAIC0y
OCw3ICsyOCw3IEBACiAKICNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCiAK
LSNpbXBvcnQgIktleWNoYWluU2hpbVJlc3BvbnNlTWFwLmgiCisjaW1wb3J0ICJCbG9ja2luZ1Jl
c3BvbnNlTWFwLmgiCiAjaW1wb3J0ICJTZWNJdGVtUmVxdWVzdERhdGEuaCIKICNpbXBvcnQgIlNl
Y0l0ZW1SZXNwb25zZURhdGEuaCIKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIKQEAgLTM5LDkgKzM5
LDkgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBLZXljaGFpblNoaW1SZXNwb25z
ZU1hcDxTZWNJdGVtUmVzcG9uc2VEYXRhPiYgcmVzcG9uc2VNYXAoKQorc3RhdGljIEJsb2NraW5n
UmVzcG9uc2VNYXA8U2VjSXRlbVJlc3BvbnNlRGF0YT4mIHJlc3BvbnNlTWFwKCkKIHsKLSAgICBB
dG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWMoS2V5Y2hhaW5TaGltUmVzcG9uc2VNYXA8U2VjSXRl
bVJlc3BvbnNlRGF0YT4mLCByZXNwb25zZU1hcCA9ICpuZXcgS2V5Y2hhaW5TaGltUmVzcG9uc2VN
YXA8U2VjSXRlbVJlc3BvbnNlRGF0YT4pOworICAgIEF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRp
YyhCbG9ja2luZ1Jlc3BvbnNlTWFwPFNlY0l0ZW1SZXNwb25zZURhdGE+JiwgcmVzcG9uc2VNYXAg
PSAqbmV3IEJsb2NraW5nUmVzcG9uc2VNYXA8U2VjSXRlbVJlc3BvbnNlRGF0YT4pOwogICAgIHJl
dHVybiByZXNwb25zZU1hcDsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141453</attachid>
            <date>2012-05-11 11:10:39 -0700</date>
            <delta_ts>2012-05-11 11:12:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86143-v3.diff</filename>
            <type>text/plain</type>
            <size>29915</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlZWRlNGY0Li44OTQwN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcg
QEAKKzIwMTItMDUtMTEgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAg
ICAgIFdLMi9QbHVnaW5zOiBNb3ZlIGVudW1lcmF0aW9uIG9mIHBsdWdpbnMgdG8gYSBzZWNvbmRh
cnkgVUlQcm9jZXNzIHRocmVhZC4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvODYxNDM+
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDc3NzIxOD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBhdm9pZCBzcGlucyBiZW5lYXRoIFBsdWdp
bkluZm9TdG9yZTo6Z2V0UGx1Z2luSW5mbygpLCBkbyB0aGlzIHdvcmsgb24gYSBzZWNvbmRhcnkK
KyAgICAgICAgdGhyZWFkIGluIHRoZSBVSVByb2Nlc3MuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJ
T2JqZWN0Lmg6CisKKyAgICAgICAgICAgIE1hZGUgQVBJT2JqZWN0IGEgVGhyZWFkU2FmZVJlZkNv
dW50ZWQuIEluIHRoZSBjb250ZXh0IG9mIHRoaXMgcGF0Y2gsIHRoaXMgaXMgdG8KKyAgICAgICAg
ICAgIGJlIGFibGUgdG8gZGlzcGF0Y2ggYm91bmQgRnVuY3Rpb25zIG9uIFdlYkNvbnRleHQuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL21hYy9LZXljaGFpbkl0ZW1TaGltTWV0aG9kcy5tbToKKyAg
ICAgICAgKFdlYktpdDo6cmVzcG9uc2VNYXApOgorICAgICAgICAqIFdlYlByb2Nlc3MvbWFjL1Nl
Y0l0ZW1TaGltTWV0aG9kcy5tbToKKyAgICAgICAgKFdlYktpdDo6cmVzcG9uc2VNYXApOgorICAg
ICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTaGFy
ZWQvQmxvY2tpbmdSZXNwb25zZU1hcC5oOgorICAgICAgICAoQmxvY2tpbmdSZXNwb25zZU1hcCk6
CisgICAgICAgIChCbG9ja2luZ1Jlc3BvbnNlTWFwOjp3YWl0Rm9yUmVzcG9uc2UpOgorICAgICAg
ICAoQmxvY2tpbmdSZXNwb25zZU1hcDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKworICAgICAgICAg
ICAgIFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9LZXljaGFpblNo
aW1SZXNwb25zZU1hcC5oLgorICAgICAgICAgICAgIEdlbmVyYWxpemUgdGhpcyBzb21ld2hhdCBz
aW5jZSBpdCdzIHVzZWZ1bCBpbiBtb3JlIHRoYW4ganVzdCB0aGUga2V5Y2hhaW4gc2NlbmFyaW8u
CisgICAgICAgICAgICAgVGhpcyBjYW4vc2hvdWxkIGJlIGdlbmVyYWxpemVkIGZ1cnRoZXIsIGJ1
dCB0aGF0J3MgYSB0b3BpYyBmb3IgYW5vdGhlciBwYXRjaC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbkluZm9TdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkluZm9TdG9yZTo6
cGx1Z2lucyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkluZm9TdG9yZTo6ZmluZFBsdWdpbkZv
ck1JTUVUeXBlKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1Z2lu
Rm9yRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1
Z2luKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luSW5mb1N0b3JlOjppbmZvRm9yUGx1Z2luV2l0
aFBhdGgpOgorCisgICAgICAgICAgICBTbGFwIGEgbXV0ZXggb24gdGhlIFBsdWdpbkluZm9TdG9y
ZSBzaW5jZSBpdCBjYW4gbm93IGJlIGNhbGxlZCBmcm9tIGJvdGggdGhlCisgICAgICAgICAgICBt
YWluIHRocmVhZCAodmlhIFdLRnJhbWVDYW5TaG93TUlNRVR5cGUpIGFuZCB0aGUgR2V0UGx1Z2lu
IHdvcmsgcXVldWUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6V2ViQ29udGV4
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnByb2Nlc3NEaWRGaW5pc2hMYXVuY2hp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpzZW5kRGlkR2V0UGx1Z2lucyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmhhbmRsZUdldFBsdWdpbnMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb250ZXh0OjpnZXRQbHVnaW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
dGV4dDo6ZGlkUmVjZWl2ZU1lc3NhZ2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUpOgorCisgICAgICAg
ICAgICBNYWtlIEdldFBsdWdpbnMgYSBEaXNwYXRjaE9uQ29ubmVjdGlvblF1ZXVlIG1lc3NhZ2Ug
YW5kIGV4ZWN1dGUgaXQgb24gYSBuZXcKKyAgICAgICAgICAgIHBsdWctaW4gd29yayBxdWV1ZS4g
VGhpcyBlZmZlY3RpdmVseSBtYWtlcyB0aGUgR2V0UGx1Z2luIGNhbGwgYXN5bmNocm9ub3VzLgor
ICAgICAgICAgICAgT24gTWFjLCB0aGUgYnVpbHQtaW4gUERGIHJlYWRlciBpcyBzdGlsbCByZWdp
c3RlcmVkIG9uIHRoZSBtYWluIHRocmVhZCBhcyB0aGF0CisgICAgICAgICAgICBlbmRzIHVwIGNh
bGxpbmcgaW50byBsb2NhbGl6ZWRTdHJpbmcoKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRpZEdldFBsdWdpbnMp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKworICAgICAgICAgICAgQWRkIGEgRGlkR2V0UGx1
Z2lucyBtZXNzYWdlIHRvIFdlYlByb2Nlc3MuIFRoaXMgaXMgcGFzc2VkIGRpcmVjdGx5IHRvIHRo
ZSBoYW5kbGVyCisgICAgICAgICAgICBpbiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OnJlc3BvbnNlTWFwKToKKyAgICAgICAgKFdlYktp
dDo6aGFuZGxlRGlkR2V0UGx1Z2lucyk6CisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlUmVxdWVz
dElEKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpwb3B1bGF0ZVBs
dWdpbkNhY2hlKToKKworICAgICAgICAgICAgVXNlIGEgQmxvY2tpbmdSZXNwb25zZU1hcCB0byBi
bG9jayB0aGUgV2ViUHJvY2VzcyBtYWluIHRocmVhZCB1bnRpbCB0aGUgVUlQcm9jZXNzCisgICAg
ICAgICAgICByZXNwb25kcyB3aXRoIERpZEdldFBsdWdpbnMuCisKIDIwMTItMDUtMTEgIEd1c3Rh
dm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihy
MTE2MjA1KTogW0dUS106IGJ1aWxkIG5vIGxvbmdlciBzdXBwb3J0cyB0aGluIGFyY2hpdmVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKaW5kZXggMmFiMzMwNC4uODllODg3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUElPYmplY3QuaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotY2xhc3MgQVBJT2JqZWN0IDogcHVibGljIFJlZkNvdW50ZWQ8QVBJT2JqZWN0PiB7Citj
bGFzcyBBUElPYmplY3QgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QVBJT2JqZWN0PiB7
CiBwdWJsaWM6CiAgICAgZW51bSBUeXBlIHsKICAgICAgICAgLy8gQmFzZSB0eXBlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAK
aW5kZXggOTc3NzVjNi4uYmEzOTRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwCkBAIC0xMTMsMTUgKzExMywxNSBAQCB2
b2lkIFBsdWdpbkluZm9TdG9yZTo6bG9hZFBsdWdpbihWZWN0b3I8UGx1Z2luTW9kdWxlSW5mbz4m
IHBsdWdpbnMsIGNvbnN0IFN0cmluZwogCiBWZWN0b3I8UGx1Z2luTW9kdWxlSW5mbz4gUGx1Z2lu
SW5mb1N0b3JlOjpwbHVnaW5zKCkKIHsKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9wbHVnaW5z
TG9jayk7CiAgICAgbG9hZFBsdWdpbnNJZk5lY2Vzc2FyeSgpOwotCi0gICAgVmVjdG9yPFBsdWdp
bk1vZHVsZUluZm8+IHBsdWdpbnMobV9wbHVnaW5zKTsKLQotICAgIHJldHVybiBwbHVnaW5zOwor
ICAgIHJldHVybiBtX3BsdWdpbnM7CiB9CiAKIFBsdWdpbk1vZHVsZUluZm8gUGx1Z2luSW5mb1N0
b3JlOjpmaW5kUGx1Z2luRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QK
IHsKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV9wbHVnaW5zTG9jayk7CisKICAgICBBU1NFUlQo
IW1pbWVUeXBlLmlzTnVsbCgpKTsKICAgICAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
cGx1Z2lucy5zaXplKCk7ICsraSkgewpAQCAtMTM5LDYgKzEzOSw4IEBAIFBsdWdpbk1vZHVsZUlu
Zm8gUGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1Z2luRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkKIAogUGx1Z2luTW9kdWxlSW5mbyBQbHVnaW5JbmZvU3RvcmU6OmZpbmRQbHVnaW5G
b3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIFN0cmluZyYgbWltZVR5cGUpIGNv
bnN0CiB7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGx1Z2luc0xvY2spOworCiAgICAgQVNT
RVJUKCFleHRlbnNpb24uaXNOdWxsKCkpOwogICAgIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9wbHVnaW5zLnNpemUoKTsgKytpKSB7CkBAIC0xODcsNyArMTg5LDEwIEBAIFN0cmluZyBQ
bHVnaW5JbmZvU3RvcmU6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0
ZW5zaW9uKQogCiBQbHVnaW5Nb2R1bGVJbmZvIFBsdWdpbkluZm9TdG9yZTo6ZmluZFBsdWdpbihT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgbG9hZFBsdWdpbnNJZk5l
Y2Vzc2FyeSgpOworICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGx1Z2luc0xv
Y2spOworICAgICAgICBsb2FkUGx1Z2luc0lmTmVjZXNzYXJ5KCk7CisgICAgfQogICAgIAogICAg
IC8vIEZpcnN0LCBjaGVjayBpZiB3ZSBjYW4gZ2V0IHRoZSBwbHVnLWluIGJhc2VkIG9uIGl0cyBN
SU1FIHR5cGUuCiAgICAgaWYgKCFtaW1lVHlwZS5pc051bGwoKSkgewpAQCAtMjE5LDYgKzIyNCw4
IEBAIFBsdWdpbk1vZHVsZUluZm8gUGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1Z2luKFN0cmluZyYg
bWltZVR5cGUsIGNvbnN0IEtVUkwmIHVybCkKIAogUGx1Z2luTW9kdWxlSW5mbyBQbHVnaW5JbmZv
U3RvcmU6OmluZm9Gb3JQbHVnaW5XaXRoUGF0aChjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpIGNv
bnN0CiB7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGx1Z2luc0xvY2spOworCiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX3BsdWdpbnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYg
KG1fcGx1Z2luc1tpXS5wYXRoID09IHBsdWdpblBhdGgpCiAgICAgICAgICAgICByZXR1cm4gbV9w
bHVnaW5zW2ldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luSW5mb1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5JbmZvU3RvcmUuaAppbmRleCBmMzAzMDNjLi40MmRmNjliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaApAQCAtMjcsNiArMjcs
NyBAQAogI2RlZmluZSBQbHVnaW5JbmZvU3RvcmVfaAogCiAjaW5jbHVkZSAiUGx1Z2luTW9kdWxl
SW5mby5oIgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBLVVJMOwpAQCAtODcsNiArODgsOCBAQCBwcml2YXRlOgog
ICAgIFZlY3RvcjxTdHJpbmc+IG1fYWRkaXRpb25hbFBsdWdpbnNEaXJlY3RvcmllczsKICAgICBW
ZWN0b3I8UGx1Z2luTW9kdWxlSW5mbz4gbV9wbHVnaW5zOwogICAgIGJvb2wgbV9wbHVnaW5MaXN0
SXNVcFRvRGF0ZTsKKworICAgIG11dGFibGUgTXV0ZXggbV9wbHVnaW5zTG9jazsKIH07CiAgICAg
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0
LmNwcAppbmRleCBiNjI1OGVjLi4zNDQ2MDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuY3BwCkBAIC0xNDcsNiArMTQ3LDcgQEAgV2ViQ29udGV4dDo6V2ViQ29udGV4dChQ
cm9jZXNzTW9kZWwgcHJvY2Vzc01vZGVsLCBjb25zdCBTdHJpbmcmIGluamVjdGVkQnVuZGxlUGEK
ICAgICAsIG1faW5pdGlhbEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBv
bGljeUFsd2F5cykKICNlbmRpZgogICAgICwgbV9wcm9jZXNzVGVybWluYXRpb25FbmFibGVkKHRy
dWUpCisgICAgLCBtX3BsdWdpbldvcmtRdWV1ZSgiY29tLmFwcGxlLkNvcmVJUEMuUGx1Z2luUXVl
dWUiKQogewogI2lmICFMT0dfRElTQUJMRUQKICAgICBXZWJLaXQ6OmluaXRpYWxpemVMb2dDaGFu
bmVsc0lmTmVjZXNzYXJ5KCk7CkBAIC0zNTQsNiArMzU1LDggQEAgdm9pZCBXZWJDb250ZXh0Ojpw
cm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKICAgICBB
U1NFUlRfVU5VU0VEKHByb2Nlc3MsIHByb2Nlc3MgPT0gbV9wcm9jZXNzKTsKIAogICAgIG1fdmlz
aXRlZExpbmtQcm92aWRlci5wcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKCk7CisKKyAgICBtX3By
b2Nlc3MtPmNvbm5lY3Rpb24oKS0+YWRkUXVldWVDbGllbnQodGhpcyk7CiAgICAgCiAgICAgLy8g
U29tZXRpbWVzIHRoZSBtZW1vcnlTYW1wbGVyIGdldHMgaW5pdGlhbGl6ZWQgYWZ0ZXIgcHJvY2Vz
cyBpbml0aWFsaXphdGlvbiBoYXMgaGFwcGVuZWQgYnV0IGJlZm9yZSB0aGUgcHJvY2VzcyBoYXMg
ZmluaXNoZWQgbGF1bmNoaW5nCiAgICAgLy8gc28gY2hlY2sgaWYgaXQgbmVlZHMgdG8gYmUgc3Rh
cnRlZCBoZXJlCkBAIC02MDQsMjAgKzYwNywzOSBAQCB2b2lkIFdlYkNvbnRleHQ6OmFkZFZpc2l0
ZWRMaW5rSGFzaChMaW5rSGFzaCBsaW5rSGFzaCkKICAgICBtX3Zpc2l0ZWRMaW5rUHJvdmlkZXIu
YWRkVmlzaXRlZExpbmsobGlua0hhc2gpOwogfQogCi12b2lkIFdlYkNvbnRleHQ6OmdldFBsdWdp
bnMoYm9vbCByZWZyZXNoLCBWZWN0b3I8UGx1Z2luSW5mbz4mIHBsdWdpbkluZm9zKQordm9pZCBX
ZWJDb250ZXh0OjpzZW5kRGlkR2V0UGx1Z2lucyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFZl
Y3RvcjxQbHVnaW5JbmZvPiYgcGx1Z2luSW5mb3MpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKworICAgIFZlY3RvcjxQbHVnaW5JbmZvPiBwbHVnaW5zKHBsdWdpbkluZm9zKTsKKwor
I2lmIFBMQVRGT1JNKE1BQykKKyAgICAvLyBBZGQgYnVpbHQtaW4gUERGIGxhc3QsIHNvIHRoYXQg
aXQncyBub3QgdXNlZCB3aGVuIGEgcmVhbCBwbHVnLWluIGlzIGluc3RhbGxlZC4KKyAgICAvLyBO
T1RFOiBUaGlzIGhhcyB0byBiZSBkb25lIG9uIHRoZSBtYWluIHRocmVhZCBhcyBpdCBjYWxscyBs
b2NhbGl6ZWRTdHJpbmcoKS4KKyAgICBpZiAoIW9taXRQREZTdXBwb3J0KCkpCisgICAgICAgIHBs
dWdpbnMuYXBwZW5kKEJ1aWx0SW5QREZWaWV3OjpwbHVnaW5JbmZvKCkpOworI2VuZGlmCisKKyAg
ICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRpZEdldFBsdWdpbnMocmVx
dWVzdElELCBwbHVnaW5zKSwgMCk7Cit9CisKK3ZvaWQgV2ViQ29udGV4dDo6aGFuZGxlR2V0UGx1
Z2lucyh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgcmVmcmVzaCkKIHsKICAgICBpZiAocmVmcmVz
aCkKICAgICAgICAgbV9wbHVnaW5JbmZvU3RvcmUucmVmcmVzaCgpOwogCisgICAgVmVjdG9yPFBs
dWdpbkluZm8+IHBsdWdpbkluZm9zOworCiAgICAgVmVjdG9yPFBsdWdpbk1vZHVsZUluZm8+IHBs
dWdpbnMgPSBtX3BsdWdpbkluZm9TdG9yZS5wbHVnaW5zKCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBwbHVnaW5zLnNpemUoKTsgKytpKQogICAgICAgICBwbHVnaW5JbmZvcy5hcHBlbmQo
cGx1Z2luc1tpXS5pbmZvKTsKIAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAvLyBBZGQgYnVpbHQt
aW4gUERGIGxhc3QsIHNvIHRoYXQgaXQncyBub3QgdXNlZCB3aGVuIGEgcmVhbCBwbHVnLWluIGlz
IGluc3RhbGxlZC4KLSAgICBpZiAoIW9taXRQREZTdXBwb3J0KCkpCi0gICAgICAgIHBsdWdpbklu
Zm9zLmFwcGVuZChCdWlsdEluUERGVmlldzo6cGx1Z2luSW5mbygpKTsKLSNlbmRpZgorICAgIFJ1
bkxvb3A6Om1haW4oKS0+ZGlzcGF0Y2goYmluZCgmV2ViQ29udGV4dDo6c2VuZERpZEdldFBsdWdp
bnMsIHRoaXMsIHJlcXVlc3RJRCwgcGx1Z2luSW5mb3MpKTsKK30KKwordm9pZCBXZWJDb250ZXh0
OjpnZXRQbHVnaW5zKENvcmVJUEM6OkNvbm5lY3Rpb24qLCB1aW50NjRfdCByZXF1ZXN0SUQsIGJv
b2wgcmVmcmVzaCkKK3sKKyAgICBtX3BsdWdpbldvcmtRdWV1ZS5kaXNwYXRjaChiaW5kKCZXZWJD
b250ZXh0OjpoYW5kbGVHZXRQbHVnaW5zLCB0aGlzLCByZXF1ZXN0SUQsIHJlZnJlc2gpKTsKIH0K
IAogdm9pZCBXZWJDb250ZXh0OjpnZXRQbHVnaW5QYXRoKGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBTdHJpbmcmIHBsdWdpblBhdGgsIGJvb2wmIGJsb2Nr
ZWQpCkBAIC05MjksNCArOTUxLDEyIEBAIHZvaWQgV2ViQ29udGV4dDo6Z2FyYmFnZUNvbGxlY3RK
YXZhU2NyaXB0T2JqZWN0cygpCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpHYXJiYWdlQ29sbGVjdEphdmFTY3JpcHRPYmplY3RzKCkpOwogfQogCit2b2lkIFdl
YkNvbnRleHQ6OmRpZFJlY2VpdmVNZXNzYWdlT25Db25uZWN0aW9uV29ya1F1ZXVlKENvcmVJUEM6
OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENv
cmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzLCBib29sJiBkaWRIYW5kbGVNZXNzYWdl
KQoreworICAgIGlmIChtZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNzV2ViQ29udGV4
dD4oKSkgeworICAgICAgICBkaWRSZWNlaXZlV2ViQ29udGV4dE1lc3NhZ2VPbkNvbm5lY3Rpb25X
b3JrUXVldWUoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1bWVudHMsIGRpZEhhbmRsZU1lc3Nh
Z2UpOworICAgICAgICByZXR1cm47CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCmluZGV4IGY5NGRjNGEuLjUwYWE1Nzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaApAQCAtNjYsNyArNjYsNyBAQCBz
dHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKICAgICAKIHR5cGVkZWYgR2VuZXJp
Y0NhbGxiYWNrPFdLRGljdGlvbmFyeVJlZj4gRGljdGlvbmFyeUNhbGxiYWNrOwogCi1jbGFzcyBX
ZWJDb250ZXh0IDogcHVibGljIEFQSU9iamVjdCB7CitjbGFzcyBXZWJDb250ZXh0IDogcHVibGlj
IEFQSU9iamVjdCwgcHJpdmF0ZSBDb3JlSVBDOjpDb25uZWN0aW9uOjpRdWV1ZUNsaWVudCB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVDb250ZXh0OwogCkBA
IC0yMTYsNyArMjE2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFVwZGF0ZUhpc3RvcnlUaXRs
ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJs
LCB1aW50NjRfdCBmcmFtZUlEKTsKIAogICAgIC8vIFBsdWdpbnMKLSAgICB2b2lkIGdldFBsdWdp
bnMoYm9vbCByZWZyZXNoLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mKTsKKyAgICB2b2lk
IGdldFBsdWdpbnMoQ29yZUlQQzo6Q29ubmVjdGlvbiosIHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9v
bCByZWZyZXNoKTsKICAgICB2b2lkIGdldFBsdWdpblBhdGgoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIFN0cmluZyYgcGx1Z2luUGF0aCwgYm9vbCYgYmxv
Y2tlZCk7CiAjaWYgIUVOQUJMRShQTFVHSU5fUFJPQ0VTUykKICAgICB2b2lkIGRpZEdldFNpdGVz
V2l0aFBsdWdpbkRhdGEoY29uc3QgVmVjdG9yPFN0cmluZz4mIHNpdGVzLCB1aW50NjRfdCBjYWxs
YmFja0lEKTsKQEAgLTI0NSw2ICsyNDUsOSBAQCBwcml2YXRlOgogICAgIC8vIEltcGxlbWVudGVk
IGluIGdlbmVyYXRlZCBXZWJDb250ZXh0TWVzc2FnZVJlY2VpdmVyLmNwcAogICAgIHZvaWQgZGlk
UmVjZWl2ZVdlYkNvbnRleHRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpN
ZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwogICAgIHZvaWQgZGlkUmVjZWl2
ZVN5bmNXZWJDb250ZXh0TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVz
c2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBPd25QdHI8Q29yZUlQQzo6QXJndW1l
bnRFbmNvZGVyPiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVdlYkNvbnRleHRNZXNzYWdlT25Db25u
ZWN0aW9uV29ya1F1ZXVlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQs
IENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIGJvb2wmIGRpZEhhbmRsZU1lc3NhZ2UpOworCisg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlT25Db25uZWN0aW9uV29ya1F1ZXVlKENv
cmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50
RGVjb2RlciosIGJvb2wmIGRpZEhhbmRsZU1lc3NhZ2UpIE9WRVJSSURFOwogCiAgICAgc3RhdGlj
IHZvaWQgbGFuZ3VhZ2VDaGFuZ2VkKHZvaWQqIGNvbnRleHQpOwogICAgIHZvaWQgbGFuZ3VhZ2VD
aGFuZ2VkKCk7CkBAIC0yNTcsNiArMjYwLDkgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbG9jYWxT
dG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAgICAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OwogCisgICAgdm9pZCBoYW5kbGVHZXRQbHVnaW5zKHVp
bnQ2NF90IHJlcXVlc3RJRCwgYm9vbCByZWZyZXNoKTsKKyAgICB2b2lkIHNlbmREaWRHZXRQbHVn
aW5zKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+
Jik7CisKICAgICBQcm9jZXNzTW9kZWwgbV9wcm9jZXNzTW9kZWw7CiAgICAgCiAgICAgLy8gRklY
TUU6IEluIHRoZSBmdXR1cmUsIHRoaXMgc2hvdWxkIGJlIG9uZSBvciBtb3JlIFdlYlByb2Nlc3NQ
cm94aWVzLgpAQCAtMzIyLDYgKzMyOCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Byb2Nlc3NU
ZXJtaW5hdGlvbkVuYWJsZWQ7CiAgICAgCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPERp
Y3Rpb25hcnlDYWxsYmFjaz4gPiBtX2RpY3Rpb25hcnlDYWxsYmFja3M7CisKKyAgICBXb3JrUXVl
dWUgbV9wbHVnaW5Xb3JrUXVldWU7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUg
Ym9vbCBXZWJDb250ZXh0OjpzZW5kVG9BbGxQcm9jZXNzZXMoY29uc3QgVSYgbWVzc2FnZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4KaW5kZXgg
YTEzOTdmMC4uOTU1MDE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
bnRleHQubWVzc2FnZXMuaW4KQEAgLTMyLDcgKzMyLDcgQEAgbWVzc2FnZXMgLT4gV2ViQ29udGV4
dCB7CiAgICAgQWRkVmlzaXRlZExpbmtIYXNoKHVpbnQ2NF90IGxpbmtIYXNoKQogICAgIAogICAg
ICMgUGx1Z2luIG1lc3NhZ2VzLgotICAgIEdldFBsdWdpbnMoYm9vbCByZWZyZXNoKSAtPiAoVmVj
dG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IHBsdWdpbnMpCisgICAgR2V0UGx1Z2lucyh1aW50NjRf
dCByZXF1ZXN0SUQsIGJvb2wgcmVmcmVzaCkgRGlzcGF0Y2hPbkNvbm5lY3Rpb25RdWV1ZQogICAg
IEdldFBsdWdpblBhdGgoV1RGOjpTdHJpbmcgbWltZVR5cGUsIFdURjo6U3RyaW5nIHVybFN0cmlu
ZykgLT4gKFdURjo6U3RyaW5nIHBsdWdpblBhdGgsIGJvb2wgYmxvY2tlZCkKIAogI2lmICFFTkFC
TEUoUExVR0lOX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2FlMDBhZi4uYThkNjY4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjAzLDcgKzIw
Myw2IEBACiAJCTFBQUYwQzRCMTJCMTYzMzQwMDhFNDlFMiAvKiBBcmd1bWVudENvZGVyc0NGLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQUYwQzQ5
MTJCMTYzMzQwMDhFNDlFMiAvKiBBcmd1bWVudENvZGVyc0NGLmNwcCAqLzsgfTsKIAkJMUFBRjI2
MzgxNDY4N0MzOTAwNEExRThBIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBRjI2MzYxNDY4
N0MzOTAwNEExRThBIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tICovOyB9Owog
CQkxQUFGMjYzOTE0Njg3QzM5MDA0QTFFOEEgLyogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQUYy
NjM3MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oICov
OyB9OwotCQkxQUI0MkU4NzE0QkJCQkIyMDA0MjcyRjcgLyogS2V5Y2hhaW5TaGltUmVzcG9uc2VN
YXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjQy
RTg2MTRCQkJCQjIwMDQyNzJGNyAvKiBLZXljaGFpblNoaW1SZXNwb25zZU1hcC5oICovOyB9Owog
CQkxQUI3RDRDQTEyODhBQUE3MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCN0Q0QzgxMjg4QUFBNzAwQ0ZE
MDhDIC8qIERvd25sb2FkUHJveHkuaCAqLzsgfTsKIAkJMUFCN0Q0Q0IxMjg4QUFBNzAwQ0ZEMDhD
IC8qIERvd25sb2FkUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUFCN0Q0QzkxMjg4QUFBNzAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHkuY3Bw
ICovOyB9OwogCQkxQUI3RDYxOTEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQUI3RDYxNzEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgKi87IH07CkBAIC0zMjcsNiArMzI2LDcgQEAKIAkJMzdDNEU5RjYxMzFDNkU3RTAw
MjlCRDVBIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjM5NkVBNTUxMkUwRUQyRDAwRjRGRUI3IC8qIGNvbmZpZy5oICovOyB9OwogCQkz
N0Y2MjNCODEyQTU3QjYyMDBFM0ZERjYgLyogV0tGaW5kT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdGNjIzQjcxMkE1N0I2MjAwRTNGREY2
IC8qIFdLRmluZE9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkzN0Y5MERFMzEzNzY1NjBFMDA1MUNGNjggLyogSFRUUENvb2tpZUFjY2Vw
dFBvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjYzODk1NEYxMzNCRUYzODAwODk0MUQ1IC8qIEhUVFBDb29raWVBY2NlcHRQb2xpY3kuaCAqLzsg
fTsKKwkJNEY2MDE0MzIxNTVDNUFBMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VNYXAuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNjAxNDMwMTU1
QzVBMzIwMDFGQkRFMCAvKiBCbG9ja2luZ1Jlc3BvbnNlTWFwLmggKi87IH07CiAJCTUxMDIxRTlD
MTJCMTY3ODgwMDVDMDMzQyAvKiBXZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDIxRTlCMTJCMTY3ODgwMDVD
MDMzQyAvKiBXZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbSAqLzsgfTsKIAkJNTEwRkJCOUExMjg4
Qzk1RTAwQUZGREY0IC8qIFdlYkNvbnRleHRNZW51SXRlbURhdGEuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRkJCOTgxMjg4Qzk1RTAwQUZGREY0
IC8qIFdlYkNvbnRleHRNZW51SXRlbURhdGEuY3BwICovOyB9OwogCQk1MTBGQkI5QjEyODhDOTVF
MDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRkJCOTkxMjg4Qzk1RTAwQUZGREY0IC8qIFdl
YkNvbnRleHRNZW51SXRlbURhdGEuaCAqLzsgfTsKQEAgLTEyMTIsNyArMTIxMiw2IEBACiAJCTFB
QUYwQzQ5MTJCMTYzMzQwMDhFNDlFMiAvKiBBcmd1bWVudENvZGVyc0NGLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gQXJndW1lbnRDb2RlcnNDRi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQUYyNjM2MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQUFGMjYzNzE0Njg3QzM5MDA0QTFFOEEgLyogVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMUFCNDJFODYxNEJCQkJCMjAwNDI3MkY3IC8qIEtleWNoYWluU2hpbVJlc3BvbnNlTWFw
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtleWNoYWluU2hpbVJlc3BvbnNl
TWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjdENEM4MTI4OEFBQTcwMENG
RDA4QyAvKiBEb3dubG9hZFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERvd25sb2FkUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCN0Q0Qzkx
Mjg4QUFBNzAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRG93bmxvYWRQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFBQjdENUU5MTI4OEI4QzAwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5Lm1lc3Nh
Z2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERvd25sb2FkUHJveHkubWVzc2FnZXMuaW47
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzQ5LDYgKzEzNDgsNyBAQAogCQkzNzk0
ODQwNjE1MEM0Qjk2MDBFNTJDRTkgLyogV0tSZW5kZXJMYXllci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1JlbmRlckxheWVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzc5NDg0MDcxNTBDNEI5NjAwRTUyQ0U5IC8qIFdLUmVuZGVyTGF5ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tSZW5kZXJMYXllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0Y2MjNCNzEyQTU3QjYyMDBFM0ZERjYgLyogV0tG
aW5kT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0ZpbmRPcHRp
b25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRGNjAxNDMwMTU1QzVBMzIwMDFG
QkRFMCAvKiBCbG9ja2luZ1Jlc3BvbnNlTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEJsb2NraW5nUmVzcG9uc2VNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTEwMDMxRjYxMzc5Q0FDQjAwQzhERkU0IC8qIFdlYlByb2Nlc3NTaGltLmR5bGliICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFj
aC1vLmR5bGliIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gV2ViUHJvY2Vzc1NoaW0uZHls
aWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTUxMDIxRTlCMTJCMTY3
ODgwMDVDMDMzQyAvKiBXZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBGQkI5ODEyODhDOTVFMDBBRkZERjQgLyogV2Vi
Q29udGV4dE1lbnVJdGVtRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTIyMjgsNyArMjIyOCw2IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1MTJERjZENjEz
OEMxODFBMDBBMjJGQzYgLyogS2V5Y2hhaW5JdGVtU2hpbU1ldGhvZHMuaCAqLywKIAkJCQk1MTJE
RjZENzEzOEMxODFBMDBBMjJGQzYgLyogS2V5Y2hhaW5JdGVtU2hpbU1ldGhvZHMubW0gKi8sCi0J
CQkJMUFCNDJFODYxNEJCQkJCMjAwNDI3MkY3IC8qIEtleWNoYWluU2hpbVJlc3BvbnNlTWFwLmgg
Ki8sCiAJCQkJNTExRjhBN0QxMzhCNDZGRTAwQTk1RjQ0IC8qIFNlY0l0ZW1TaGltTWV0aG9kcy5o
ICovLAogCQkJCTUxMUY4QTdFMTM4QjQ2RkUwMEE5NUY0NCAvKiBTZWNJdGVtU2hpbU1ldGhvZHMu
bW0gKi8sCiAJCQkJQkMzMDY1QzMxMjU5MkY4OTAwRTcxMjc4IC8qIFdlYlByb2Nlc3NNYWMubW0g
Ki8sCkBAIC0yMzQ0LDYgKzIzNDMsNyBAQAogCQkJCTVENTE4NDU0MTNCQ0Y5Q0MwMEM3RkY0QSAv
KiBBUElDbGllbnRUcmFpdHMuaCAqLywKIAkJCQlCNjM0MDNGODE0OTEwRDU3MDAxMDcwQjUgLyog
QVBJT2JqZWN0LmNwcCAqLywKIAkJCQlCQ0YwNEM4QzExRkY5QjdEMDBGODZBNTggLyogQVBJT2Jq
ZWN0LmggKi8sCisJCQkJNEY2MDE0MzAxNTVDNUEzMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9u
c2VNYXAuaCAqLywKIAkJCQlCQzMwNjVGOTEyNTkzNDRFMDBFNzEyNzggLyogQ2FjaGVNb2RlbC5o
ICovLAogCQkJCTFBMkQ5NTZFMTI4NDg1NjQwMDFFQjk2MiAvKiBDaGlsZFByb2Nlc3MuY3BwICov
LAogCQkJCTFBMkQ5NTZEMTI4NDg1NjQwMDFFQjk2MiAvKiBDaGlsZFByb2Nlc3MuaCAqLywKQEAg
LTM4ODksNiArMzg4OSw3IEBACiAJCQkJMUFFRkNDMTIxMUQwMUY5NjAwODIxOUQzIC8qIFBsdWdp
bkluZm9TdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzRDYxMDIxM0E3Q0MyQTAwRjk1RDRF
IC8qIFBsdWdpbk1vZHVsZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDQzOTc2MTI0RDAz
NDgwMEZGQkZCNSAvKiBQbHVnaW5Qcm9jZXNzLmggaW4gSGVhZGVycyAqLywKKwkJCQk0RjYwMTQz
MjE1NUM1QUEyMDAxRkJERTAgLyogQmxvY2tpbmdSZXNwb25zZU1hcC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUEwRUM5MDYxMjRDMEFCODAwN0VGNEE1IC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTBFQzkwRjEyNEMwQUY1MDA3RUY0QTUgLyogUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTJCQjZEMTE0
MTE3QjREMDAwRjM1RDQgLyogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCkBAIC00MTkzLDcgKzQxOTQsNiBAQAogCQkJCUJDODY5OUI3MTE2QUFEQUEwMDJB
OTI1QiAvKiBXS1ZpZXdJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkZBNjE3OUYxMkYw
Qjk5RDAwMzNFMENBIC8qIFdLVmlld1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMkU2
RThFMTE0MTk3MTUwMEE2M0IxRSAvKiBXb3JrUXVldWUuaCBpbiBIZWFkZXJzICovLAotCQkJCTFB
QjQyRTg3MTRCQkJCQjIwMDQyNzJGNyAvKiBLZXljaGFpblNoaW1SZXNwb25zZU1hcC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTE3QkY5OTYxNEQwQTczRTAwQTVBMDY5IC8qIE5ldHNjYXBlU2FuZGJv
eEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFMDkzNzgxNEZCMTI4QzAwMTEzOEQ5
IC8qIExheWVySG9zdGluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5NkJEODVEMTUw
MTlCQzMwMDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDY2MjJjZjYuLmMxNDc5OGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lm
IFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQogCisjaW5jbHVkZSAiQmxvY2tpbmdSZXNwb25zZU1h
cC5oIgogI2luY2x1ZGUgIlBsdWdpbkluZm9TdG9yZS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIKQEAgLTM3LDYgKzM4LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtUGFzdGVib2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9B
dG9taWNzLmg+CiAKICNpZiBVU0UoQ0YpCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAt
MTAyLDYgKzEwNCwyMyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGx1Z2luSW5m
byhjb25zdCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdlYkNvcmU6OgogICAgIHBsdWdpbnMgPSBt
X2NhY2hlZFBsdWdpbnM7CiB9CiAKK3N0YXRpYyBCbG9ja2luZ1Jlc3BvbnNlTWFwPFZlY3RvcjxX
ZWJDb3JlOjpQbHVnaW5JbmZvPiA+JiByZXNwb25zZU1hcCgpCit7CisgICAgQXRvbWljYWxseUlu
aXRpYWxpemVkU3RhdGljKEJsb2NraW5nUmVzcG9uc2VNYXA8VmVjdG9yPFdlYkNvcmU6OlBsdWdp
bkluZm8+ID4mLCByZXNwb25zZU1hcCA9ICpuZXcgQmxvY2tpbmdSZXNwb25zZU1hcDxWZWN0b3I8
V2ViQ29yZTo6UGx1Z2luSW5mbz4gPik7CisgICAgcmV0dXJuIHJlc3BvbnNlTWFwOworfQorCit2
b2lkIGhhbmRsZURpZEdldFBsdWdpbnModWludDY0X3QgcmVxdWVzdElELCBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6UGx1Z2luSW5mbz4mIHBsdWdpbnMpCit7CisgICAgcmVzcG9uc2VNYXAoKS5kaWRS
ZWNlaXZlUmVzcG9uc2UocmVxdWVzdElELCBhZG9wdFB0cihuZXcgVmVjdG9yPFdlYkNvcmU6OlBs
dWdpbkluZm8+KHBsdWdpbnMpKSk7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVJlcXVl
c3RJRCgpCit7CisgICAgc3RhdGljIGludCB1bmlxdWVJRDsKKyAgICByZXR1cm4gYXRvbWljSW5j
cmVtZW50KCZ1bmlxdWVJRCk7Cit9CisKIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpwb3B1
bGF0ZVBsdWdpbkNhY2hlKCkKIHsKICAgICBpZiAobV9wbHVnaW5DYWNoZUlzUG9wdWxhdGVkKQpA
QCAtMTA5LDEzICsxMjgsMTEgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnBvcHVsYXRl
UGx1Z2luQ2FjaGUoKQogCiAgICAgQVNTRVJUKG1fY2FjaGVkUGx1Z2lucy5pc0VtcHR5KCkpOwog
ICAgIAotICAgIFZlY3RvcjxQbHVnaW5JbmZvPiBwbHVnaW5zOwotICAgIAogICAgIC8vIEZJWE1F
OiBTaG91bGQgd2UgZG8gc29tZXRoaW5nIGluIGNhc2Ugb2YgZXJyb3IgaGVyZT8KLSAgICBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJDb250
ZXh0OjpHZXRQbHVnaW5zKG1fc2hvdWxkUmVmcmVzaFBsdWdpbnMpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZXM6OldlYkNvbnRleHQ6Okdl
dFBsdWdpbnM6OlJlcGx5KHBsdWdpbnMpLCAwKTsKKyAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSBn
ZW5lcmF0ZVJlcXVlc3RJRCgpOworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViQ29udGV4dDo6R2V0UGx1Z2lucyhyZXF1ZXN0SUQsIG1fc2hv
dWxkUmVmcmVzaFBsdWdpbnMpLCAwKTsKIAotICAgIG1fY2FjaGVkUGx1Z2lucy5zd2FwKHBsdWdp
bnMpOworICAgIG1fY2FjaGVkUGx1Z2lucyA9ICpyZXNwb25zZU1hcCgpLndhaXRGb3JSZXNwb25z
ZShyZXF1ZXN0SUQpOwogICAgIAogICAgIG1fc2hvdWxkUmVmcmVzaFBsdWdpbnMgPSBmYWxzZTsK
ICAgICBtX3BsdWdpbkNhY2hlSXNQb3B1bGF0ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgKaW5kZXggMDg2ZmQwYS4uNDEyYTc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCkBAIC04NSw2ICs4NSw4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFdlYkNv
cmU6OlBsdWdpbkluZm8+IG1fY2FjaGVkUGx1Z2luczsKIH07CiAKK3ZvaWQgaGFuZGxlRGlkR2V0
UGx1Z2lucyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5J
bmZvPiYpOworCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFVTRShQTEFURk9S
TV9TVFJBVEVHSUVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5k
ZXggMjBkOTI2MC4uZDZlMmIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCkBAIC0xMDMxLDQgKzEwMzEsMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRUZXh0Q2hl
Y2tlclN0YXRlKGNvbnN0IFRleHRDaGVja2VyU3RhdGUmIHRleHRDaGVja2VyU3RhdGUpCiAgICAg
fQogfQogCit2b2lkIFdlYlByb2Nlc3M6OmRpZEdldFBsdWdpbnMoQ29yZUlQQzo6Q29ubmVjdGlv
biosIHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+
JiBwbHVnaW5zKQoreworICAgIC8vIFBhc3MgdGhpcyB0byBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwLgorICAgIGhhbmRsZURpZEdldFBsdWdpbnMocmVxdWVzdElELCBwbHVnaW5zKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CmluZGV4IGVhZmUxZDkuLjkxOTE1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCiAjaW5j
bHVkZSAiRHJhd2luZ0FyZWEuaCIKICNpbmNsdWRlICJFdmVudERpc3BhdGNoZXIuaCIKKyNpbmNs
dWRlICJQbHVnaW5JbmZvU3RvcmUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUNhY2hlc1RvQ2xlYXIu
aCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5
LmgiCkBAIC0yNDMsNiArMjQ0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJQ
cm9jZXNzTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBD
b3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJQcm9jZXNz
TWVzc2FnZU9uQ29ubmVjdGlvbldvcmtRdWV1ZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQ
Qzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBib29sJiBkaWRIYW5kbGVN
ZXNzYWdlKTsKIAorICAgIHZvaWQgZGlkR2V0UGx1Z2lucyhDb3JlSVBDOjpDb25uZWN0aW9uKiwg
dWludDY0X3QgcmVxdWVzdElELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mKTsK
KwogICAgIFJlZlB0cjxXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M+IG1fY29ubmVjdGlvbjsKIAog
ICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlPiA+IG1fcGFnZU1hcDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAz
YjZhMWY3Li5iN2JjNzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCkBAIC01NCw2ICs1NCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nl
c3MgewogICAgIENsZWFyUGx1Z2luU2l0ZURhdGEoVmVjdG9yPFdURjo6U3RyaW5nPiBwbHVnaW5Q
YXRocywgVmVjdG9yPFdURjo6U3RyaW5nPiBzaXRlcywgdWludDY0X3QgZmxhZ3MsIHVpbnQ2NF90
IG1heEFnZUluU2Vjb25kcywgdWludDY0X3QgY2FsbGJhY2tJRCkKICNlbmRpZgogCisgICAgRGlk
R2V0UGx1Z2lucyh1aW50NjRfdCByZXF1ZXN0SUQsIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZv
PiBwbHVnaW5zKSBEaXNwYXRjaE9uQ29ubmVjdGlvblF1ZXVlCisKICNpZiBFTkFCTEUoUExVR0lO
X1BST0NFU1MpCiAgICAgUGx1Z2luUHJvY2Vzc0NyYXNoZWQoU3RyaW5nIHBsdWdpblByb2Nlc3Mp
IERpc3BhdGNoT25Db25uZWN0aW9uUXVldWUKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9tYWMvS2V5Y2hhaW5JdGVtU2hpbU1ldGhvZHMubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9LZXljaGFpbkl0ZW1TaGltTWV0aG9kcy5tbQppbmRleCA1
ZjcxYWU0Li5mZjMwOTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21h
Yy9LZXljaGFpbkl0ZW1TaGltTWV0aG9kcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL21hYy9LZXljaGFpbkl0ZW1TaGltTWV0aG9kcy5tbQpAQCAtMjgsNyArMjgsNyBAQAogCiAj
aWYgZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCiAKLSNpbXBvcnQgIktleWNoYWlu
U2hpbVJlc3BvbnNlTWFwLmgiCisjaW1wb3J0ICJCbG9ja2luZ1Jlc3BvbnNlTWFwLmgiCiAjaW1w
b3J0ICJTZWNLZXljaGFpbkl0ZW1SZXF1ZXN0RGF0YS5oIgogI2ltcG9ydCAiU2VjS2V5Y2hhaW5J
dGVtUmVzcG9uc2VEYXRhLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCkBAIC0xNDEsOSArMTQx
LDkgQEAgc3RhdGljIGJvb2wgd2ViRnJlZUtleWNoYWluSXRlbUNvbnRlbnQodm9pZCogZGF0YSkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIEtleWNoYWluU2hpbVJlc3BvbnNlTWFwPFNl
Y0tleWNoYWluSXRlbVJlc3BvbnNlRGF0YT4mIHJlc3BvbnNlTWFwKCkKK3N0YXRpYyBCbG9ja2lu
Z1Jlc3BvbnNlTWFwPFNlY0tleWNoYWluSXRlbVJlc3BvbnNlRGF0YT4mIHJlc3BvbnNlTWFwKCkK
IHsKLSAgICBBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWMoS2V5Y2hhaW5TaGltUmVzcG9uc2VN
YXA8U2VjS2V5Y2hhaW5JdGVtUmVzcG9uc2VEYXRhPiYsIHJlc3BvbnNlTWFwID0gKm5ldyBLZXlj
aGFpblNoaW1SZXNwb25zZU1hcDxTZWNLZXljaGFpbkl0ZW1SZXNwb25zZURhdGE+KTsKKyAgICBB
dG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWMoQmxvY2tpbmdSZXNwb25zZU1hcDxTZWNLZXljaGFp
bkl0ZW1SZXNwb25zZURhdGE+JiwgcmVzcG9uc2VNYXAgPSAqbmV3IEJsb2NraW5nUmVzcG9uc2VN
YXA8U2VjS2V5Y2hhaW5JdGVtUmVzcG9uc2VEYXRhPik7CiAgICAgcmV0dXJuIHJlc3BvbnNlTWFw
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9LZXljaGFp
blNoaW1SZXNwb25zZU1hcC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvS2V5Y2hh
aW5TaGltUmVzcG9uc2VNYXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjRhNzhl
Ni4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9LZXljaGFpblNo
aW1SZXNwb25zZU1hcC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgS2V5Y2hhaW5TaGltUmVzcG9uc2VNYXBfaAotI2RlZmluZSBLZXljaGFpblNo
aW1SZXNwb25zZU1hcF9oCi0KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9U
aHJlYWRpbmdQcmltaXRpdmVzLmg+Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBLZXlj
aGFpblNoaW1SZXNwb25zZU1hcCB7Ci1wdWJsaWM6Ci0gICAgUGFzc093blB0cjxUPiB3YWl0Rm9y
UmVzcG9uc2UodWludDY0X3QgcmVxdWVzdElEKQotICAgIHsKLSAgICAgICAgd2hpbGUgKHRydWUp
IHsKLSAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKLQotICAgICAgICAg
ICAgaWYgKE93blB0cjxUPiByZXNwb25zZSA9IG1fcmVzcG9uc2VzLnRha2UocmVxdWVzdElEKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UucmVsZWFzZSgpOwotCi0gICAgICAgICAg
ICBtX2NvbmRpdGlvbi53YWl0KG1fbXV0ZXgpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgfQotCi0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qg
cmVxdWVzdElELCBQYXNzT3duUHRyPFQ+IHJlc3BvbnNlKQotICAgIHsKLSAgICAgICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwotICAgICAgICBBU1NFUlQoIW1fcmVzcG9uc2VzLmNvbnRh
aW5zKHJlcXVlc3RJRCkpOwotCi0gICAgICAgIG1fcmVzcG9uc2VzLnNldChyZXF1ZXN0SUQsIHJl
c3BvbnNlKTsKLSAgICAgICAgbV9jb25kaXRpb24uc2lnbmFsKCk7Ci0gICAgfQotCi1wcml2YXRl
OgotICAgIE11dGV4IG1fbXV0ZXg7Ci0gICAgVGhyZWFkQ29uZGl0aW9uIG1fY29uZGl0aW9uOwot
Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgT3duUHRyPFQ+ID4gbV9yZXNwb25zZXM7Ci19OwotCi0K
LQotI2VuZGlmIC8vIEtleWNoYWluU2hpbVJlc3BvbnNlTWFwX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltTWV0aG9kcy5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltTWV0aG9kcy5tbQppbmRleCA0NjdjM2Uw
Li5jZmUzM2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9TZWNJ
dGVtU2hpbU1ldGhvZHMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvU2Vj
SXRlbVNoaW1NZXRob2RzLm1tCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiAhZGVmaW5lZChCVUlM
RElOR19PTl9TTk9XX0xFT1BBUkQpCiAKLSNpbXBvcnQgIktleWNoYWluU2hpbVJlc3BvbnNlTWFw
LmgiCisjaW1wb3J0ICJCbG9ja2luZ1Jlc3BvbnNlTWFwLmgiCiAjaW1wb3J0ICJTZWNJdGVtUmVx
dWVzdERhdGEuaCIKICNpbXBvcnQgIlNlY0l0ZW1SZXNwb25zZURhdGEuaCIKICNpbXBvcnQgIldl
YlByb2Nlc3MuaCIKQEAgLTM5LDkgKzM5LDkgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0
YXRpYyBLZXljaGFpblNoaW1SZXNwb25zZU1hcDxTZWNJdGVtUmVzcG9uc2VEYXRhPiYgcmVzcG9u
c2VNYXAoKQorc3RhdGljIEJsb2NraW5nUmVzcG9uc2VNYXA8U2VjSXRlbVJlc3BvbnNlRGF0YT4m
IHJlc3BvbnNlTWFwKCkKIHsKLSAgICBBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWMoS2V5Y2hh
aW5TaGltUmVzcG9uc2VNYXA8U2VjSXRlbVJlc3BvbnNlRGF0YT4mLCByZXNwb25zZU1hcCA9ICpu
ZXcgS2V5Y2hhaW5TaGltUmVzcG9uc2VNYXA8U2VjSXRlbVJlc3BvbnNlRGF0YT4pOworICAgIEF0
b21pY2FsbHlJbml0aWFsaXplZFN0YXRpYyhCbG9ja2luZ1Jlc3BvbnNlTWFwPFNlY0l0ZW1SZXNw
b25zZURhdGE+JiwgcmVzcG9uc2VNYXAgPSAqbmV3IEJsb2NraW5nUmVzcG9uc2VNYXA8U2VjSXRl
bVJlc3BvbnNlRGF0YT4pOwogICAgIHJldHVybiByZXNwb25zZU1hcDsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141454</attachid>
            <date>2012-05-11 11:12:30 -0700</date>
            <delta_ts>2012-05-11 12:41:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86143-v3.diff</filename>
            <type>text/plain</type>
            <size>32509</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlZWRlNGY0Li44OTQwN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcg
QEAKKzIwMTItMDUtMTEgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAg
ICAgIFdLMi9QbHVnaW5zOiBNb3ZlIGVudW1lcmF0aW9uIG9mIHBsdWdpbnMgdG8gYSBzZWNvbmRh
cnkgVUlQcm9jZXNzIHRocmVhZC4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvODYxNDM+
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDc3NzIxOD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBhdm9pZCBzcGlucyBiZW5lYXRoIFBsdWdp
bkluZm9TdG9yZTo6Z2V0UGx1Z2luSW5mbygpLCBkbyB0aGlzIHdvcmsgb24gYSBzZWNvbmRhcnkK
KyAgICAgICAgdGhyZWFkIGluIHRoZSBVSVByb2Nlc3MuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJ
T2JqZWN0Lmg6CisKKyAgICAgICAgICAgIE1hZGUgQVBJT2JqZWN0IGEgVGhyZWFkU2FmZVJlZkNv
dW50ZWQuIEluIHRoZSBjb250ZXh0IG9mIHRoaXMgcGF0Y2gsIHRoaXMgaXMgdG8KKyAgICAgICAg
ICAgIGJlIGFibGUgdG8gZGlzcGF0Y2ggYm91bmQgRnVuY3Rpb25zIG9uIFdlYkNvbnRleHQuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL21hYy9LZXljaGFpbkl0ZW1TaGltTWV0aG9kcy5tbToKKyAg
ICAgICAgKFdlYktpdDo6cmVzcG9uc2VNYXApOgorICAgICAgICAqIFdlYlByb2Nlc3MvbWFjL1Nl
Y0l0ZW1TaGltTWV0aG9kcy5tbToKKyAgICAgICAgKFdlYktpdDo6cmVzcG9uc2VNYXApOgorICAg
ICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTaGFy
ZWQvQmxvY2tpbmdSZXNwb25zZU1hcC5oOgorICAgICAgICAoQmxvY2tpbmdSZXNwb25zZU1hcCk6
CisgICAgICAgIChCbG9ja2luZ1Jlc3BvbnNlTWFwOjp3YWl0Rm9yUmVzcG9uc2UpOgorICAgICAg
ICAoQmxvY2tpbmdSZXNwb25zZU1hcDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKworICAgICAgICAg
ICAgIFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9LZXljaGFpblNo
aW1SZXNwb25zZU1hcC5oLgorICAgICAgICAgICAgIEdlbmVyYWxpemUgdGhpcyBzb21ld2hhdCBz
aW5jZSBpdCdzIHVzZWZ1bCBpbiBtb3JlIHRoYW4ganVzdCB0aGUga2V5Y2hhaW4gc2NlbmFyaW8u
CisgICAgICAgICAgICAgVGhpcyBjYW4vc2hvdWxkIGJlIGdlbmVyYWxpemVkIGZ1cnRoZXIsIGJ1
dCB0aGF0J3MgYSB0b3BpYyBmb3IgYW5vdGhlciBwYXRjaC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbkluZm9TdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkluZm9TdG9yZTo6
cGx1Z2lucyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkluZm9TdG9yZTo6ZmluZFBsdWdpbkZv
ck1JTUVUeXBlKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1Z2lu
Rm9yRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1
Z2luKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luSW5mb1N0b3JlOjppbmZvRm9yUGx1Z2luV2l0
aFBhdGgpOgorCisgICAgICAgICAgICBTbGFwIGEgbXV0ZXggb24gdGhlIFBsdWdpbkluZm9TdG9y
ZSBzaW5jZSBpdCBjYW4gbm93IGJlIGNhbGxlZCBmcm9tIGJvdGggdGhlCisgICAgICAgICAgICBt
YWluIHRocmVhZCAodmlhIFdLRnJhbWVDYW5TaG93TUlNRVR5cGUpIGFuZCB0aGUgR2V0UGx1Z2lu
IHdvcmsgcXVldWUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6V2ViQ29udGV4
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnByb2Nlc3NEaWRGaW5pc2hMYXVuY2hp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpzZW5kRGlkR2V0UGx1Z2lucyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmhhbmRsZUdldFBsdWdpbnMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb250ZXh0OjpnZXRQbHVnaW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
dGV4dDo6ZGlkUmVjZWl2ZU1lc3NhZ2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUpOgorCisgICAgICAg
ICAgICBNYWtlIEdldFBsdWdpbnMgYSBEaXNwYXRjaE9uQ29ubmVjdGlvblF1ZXVlIG1lc3NhZ2Ug
YW5kIGV4ZWN1dGUgaXQgb24gYSBuZXcKKyAgICAgICAgICAgIHBsdWctaW4gd29yayBxdWV1ZS4g
VGhpcyBlZmZlY3RpdmVseSBtYWtlcyB0aGUgR2V0UGx1Z2luIGNhbGwgYXN5bmNocm9ub3VzLgor
ICAgICAgICAgICAgT24gTWFjLCB0aGUgYnVpbHQtaW4gUERGIHJlYWRlciBpcyBzdGlsbCByZWdp
c3RlcmVkIG9uIHRoZSBtYWluIHRocmVhZCBhcyB0aGF0CisgICAgICAgICAgICBlbmRzIHVwIGNh
bGxpbmcgaW50byBsb2NhbGl6ZWRTdHJpbmcoKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRpZEdldFBsdWdpbnMp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKworICAgICAgICAgICAgQWRkIGEgRGlkR2V0UGx1
Z2lucyBtZXNzYWdlIHRvIFdlYlByb2Nlc3MuIFRoaXMgaXMgcGFzc2VkIGRpcmVjdGx5IHRvIHRo
ZSBoYW5kbGVyCisgICAgICAgICAgICBpbiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OnJlc3BvbnNlTWFwKToKKyAgICAgICAgKFdlYktp
dDo6aGFuZGxlRGlkR2V0UGx1Z2lucyk6CisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlUmVxdWVz
dElEKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpwb3B1bGF0ZVBs
dWdpbkNhY2hlKToKKworICAgICAgICAgICAgVXNlIGEgQmxvY2tpbmdSZXNwb25zZU1hcCB0byBi
bG9jayB0aGUgV2ViUHJvY2VzcyBtYWluIHRocmVhZCB1bnRpbCB0aGUgVUlQcm9jZXNzCisgICAg
ICAgICAgICByZXNwb25kcyB3aXRoIERpZEdldFBsdWdpbnMuCisKIDIwMTItMDUtMTEgIEd1c3Rh
dm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihy
MTE2MjA1KTogW0dUS106IGJ1aWxkIG5vIGxvbmdlciBzdXBwb3J0cyB0aGluIGFyY2hpdmVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKaW5kZXggMmFiMzMwNC4uODllODg3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUElPYmplY3QuaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotY2xhc3MgQVBJT2JqZWN0IDogcHVibGljIFJlZkNvdW50ZWQ8QVBJT2JqZWN0PiB7Citj
bGFzcyBBUElPYmplY3QgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QVBJT2JqZWN0PiB7
CiBwdWJsaWM6CiAgICAgZW51bSBUeXBlIHsKICAgICAgICAgLy8gQmFzZSB0eXBlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Jsb2NraW5nUmVzcG9uc2VNYXAuaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9CbG9ja2luZ1Jlc3BvbnNlTWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYjE0MzZmNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9CbG9ja2luZ1Jlc3BvbnNlTWFwLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgQmxvY2tpbmdSZXNwb25zZU1hcF9oCisjZGVmaW5lIEJsb2NraW5nUmVz
cG9uc2VNYXBfaAorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFk
aW5nUHJpbWl0aXZlcy5oPgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgQmxvY2tpbmdS
ZXNwb25zZU1hcCB7CitwdWJsaWM6CisgICAgUGFzc093blB0cjxUPiB3YWl0Rm9yUmVzcG9uc2Uo
dWludDY0X3QgcmVxdWVzdElEKQorICAgIHsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAg
ICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKKworICAgICAgICAgICAgaWYgKE93
blB0cjxUPiByZXNwb25zZSA9IG1fcmVzcG9uc2VzLnRha2UocmVxdWVzdElEKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gcmVzcG9uc2UucmVsZWFzZSgpOworCisgICAgICAgICAgICBtX2NvbmRp
dGlvbi53YWl0KG1fbXV0ZXgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorCisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgcmVxdWVzdElE
LCBQYXNzT3duUHRyPFQ+IHJlc3BvbnNlKQorICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fbXV0ZXgpOworICAgICAgICBBU1NFUlQoIW1fcmVzcG9uc2VzLmNvbnRhaW5zKHJlcXVl
c3RJRCkpOworCisgICAgICAgIG1fcmVzcG9uc2VzLnNldChyZXF1ZXN0SUQsIHJlc3BvbnNlKTsK
KyAgICAgICAgbV9jb25kaXRpb24uc2lnbmFsKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIE11
dGV4IG1fbXV0ZXg7CisgICAgVGhyZWFkQ29uZGl0aW9uIG1fY29uZGl0aW9uOworCisgICAgSGFz
aE1hcDx1aW50NjRfdCwgT3duUHRyPFQ+ID4gbV9yZXNwb25zZXM7Cit9OworCisjZW5kaWYgLy8g
QmxvY2tpbmdSZXNwb25zZU1hcF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcAppbmRleCA5Nzc3NWM2Li5iYTM5NGQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9y
ZS5jcHAKQEAgLTExMywxNSArMTEzLDE1IEBAIHZvaWQgUGx1Z2luSW5mb1N0b3JlOjpsb2FkUGx1
Z2luKFZlY3RvcjxQbHVnaW5Nb2R1bGVJbmZvPiYgcGx1Z2lucywgY29uc3QgU3RyaW5nCiAKIFZl
Y3RvcjxQbHVnaW5Nb2R1bGVJbmZvPiBQbHVnaW5JbmZvU3RvcmU6OnBsdWdpbnMoKQogeworICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtX3BsdWdpbnNMb2NrKTsKICAgICBsb2FkUGx1Z2luc0lmTmVj
ZXNzYXJ5KCk7Ci0KLSAgICBWZWN0b3I8UGx1Z2luTW9kdWxlSW5mbz4gcGx1Z2lucyhtX3BsdWdp
bnMpOwotCi0gICAgcmV0dXJuIHBsdWdpbnM7CisgICAgcmV0dXJuIG1fcGx1Z2luczsKIH0KIAog
UGx1Z2luTW9kdWxlSW5mbyBQbHVnaW5JbmZvU3RvcmU6OmZpbmRQbHVnaW5Gb3JNSU1FVHlwZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAogeworICAgIE11dGV4TG9ja2VyIGxvY2tlciht
X3BsdWdpbnNMb2NrKTsKKwogICAgIEFTU0VSVCghbWltZVR5cGUuaXNOdWxsKCkpOwogICAgIAog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wbHVnaW5zLnNpemUoKTsgKytpKSB7CkBAIC0x
MzksNiArMTM5LDggQEAgUGx1Z2luTW9kdWxlSW5mbyBQbHVnaW5JbmZvU3RvcmU6OmZpbmRQbHVn
aW5Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogCiBQbHVnaW5Nb2R1bGVJbmZv
IFBsdWdpbkluZm9TdG9yZTo6ZmluZFBsdWdpbkZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4
dGVuc2lvbiwgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QKIHsKKyAgICBNdXRleExvY2tlciBsb2Nr
ZXIobV9wbHVnaW5zTG9jayk7CisKICAgICBBU1NFUlQoIWV4dGVuc2lvbi5pc051bGwoKSk7CiAg
ICAgCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BsdWdpbnMuc2l6ZSgpOyArK2kpIHsK
QEAgLTE4Nyw3ICsxODksMTAgQEAgU3RyaW5nIFBsdWdpbkluZm9TdG9yZTo6Z2V0TUlNRVR5cGVG
b3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCiAKIFBsdWdpbk1vZHVsZUluZm8g
UGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1Z2luKFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IEtVUkwm
IHVybCkKIHsKLSAgICBsb2FkUGx1Z2luc0lmTmVjZXNzYXJ5KCk7CisgICAgeworICAgICAgICBN
dXRleExvY2tlciBsb2NrZXIobV9wbHVnaW5zTG9jayk7CisgICAgICAgIGxvYWRQbHVnaW5zSWZO
ZWNlc3NhcnkoKTsKKyAgICB9CiAgICAgCiAgICAgLy8gRmlyc3QsIGNoZWNrIGlmIHdlIGNhbiBn
ZXQgdGhlIHBsdWctaW4gYmFzZWQgb24gaXRzIE1JTUUgdHlwZS4KICAgICBpZiAoIW1pbWVUeXBl
LmlzTnVsbCgpKSB7CkBAIC0yMTksNiArMjI0LDggQEAgUGx1Z2luTW9kdWxlSW5mbyBQbHVnaW5J
bmZvU3RvcmU6OmZpbmRQbHVnaW4oU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgS1VSTCYgdXJsKQog
CiBQbHVnaW5Nb2R1bGVJbmZvIFBsdWdpbkluZm9TdG9yZTo6aW5mb0ZvclBsdWdpbldpdGhQYXRo
KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkgY29uc3QKIHsKKyAgICBNdXRleExvY2tlciBsb2Nr
ZXIobV9wbHVnaW5zTG9jayk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcGx1Z2lu
cy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAobV9wbHVnaW5zW2ldLnBhdGggPT0gcGx1Z2lu
UGF0aCkKICAgICAgICAgICAgIHJldHVybiBtX3BsdWdpbnNbaV07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5oCmluZGV4IGYzMDMwM2Mu
LjQyZGY2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpbkluZm9TdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpbkluZm9TdG9yZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFBsdWdpbkluZm9TdG9y
ZV9oCiAKICNpbmNsdWRlICJQbHVnaW5Nb2R1bGVJbmZvLmgiCisjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZ1ByaW1pdGl2ZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEtVUkw7
CkBAIC04Nyw2ICs4OCw4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gbV9hZGRpdGlv
bmFsUGx1Z2luc0RpcmVjdG9yaWVzOwogICAgIFZlY3RvcjxQbHVnaW5Nb2R1bGVJbmZvPiBtX3Bs
dWdpbnM7CiAgICAgYm9vbCBtX3BsdWdpbkxpc3RJc1VwVG9EYXRlOworCisgICAgbXV0YWJsZSBN
dXRleCBtX3BsdWdpbnNMb2NrOwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IGI2MjU4ZWMuLjM0NDYwOTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTE0Nyw2ICsxNDcs
NyBAQCBXZWJDb250ZXh0OjpXZWJDb250ZXh0KFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwsIGNv
bnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYQogICAgICwgbV9pbml0aWFsSFRUUENvb2tpZUFj
Y2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5QWx3YXlzKQogI2VuZGlmCiAgICAgLCBt
X3Byb2Nlc3NUZXJtaW5hdGlvbkVuYWJsZWQodHJ1ZSkKKyAgICAsIG1fcGx1Z2luV29ya1F1ZXVl
KCJjb20uYXBwbGUuQ29yZUlQQy5QbHVnaW5RdWV1ZSIpCiB7CiAjaWYgIUxPR19ESVNBQkxFRAog
ICAgIFdlYktpdDo6aW5pdGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3NhcnkoKTsKQEAgLTM1NCw2
ICszNTUsOCBAQCB2b2lkIFdlYkNvbnRleHQ6OnByb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcoV2Vi
UHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogICAgIEFTU0VSVF9VTlVTRUQocHJvY2VzcywgcHJvY2Vz
cyA9PSBtX3Byb2Nlc3MpOwogCiAgICAgbV92aXNpdGVkTGlua1Byb3ZpZGVyLnByb2Nlc3NEaWRG
aW5pc2hMYXVuY2hpbmcoKTsKKworICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5hZGRRdWV1
ZUNsaWVudCh0aGlzKTsKICAgICAKICAgICAvLyBTb21ldGltZXMgdGhlIG1lbW9yeVNhbXBsZXIg
Z2V0cyBpbml0aWFsaXplZCBhZnRlciBwcm9jZXNzIGluaXRpYWxpemF0aW9uIGhhcyBoYXBwZW5l
ZCBidXQgYmVmb3JlIHRoZSBwcm9jZXNzIGhhcyBmaW5pc2hlZCBsYXVuY2hpbmcKICAgICAvLyBz
byBjaGVjayBpZiBpdCBuZWVkcyB0byBiZSBzdGFydGVkIGhlcmUKQEAgLTYwNCwyMCArNjA3LDM5
IEBAIHZvaWQgV2ViQ29udGV4dDo6YWRkVmlzaXRlZExpbmtIYXNoKExpbmtIYXNoIGxpbmtIYXNo
KQogICAgIG1fdmlzaXRlZExpbmtQcm92aWRlci5hZGRWaXNpdGVkTGluayhsaW5rSGFzaCk7CiB9
CiAKLXZvaWQgV2ViQ29udGV4dDo6Z2V0UGx1Z2lucyhib29sIHJlZnJlc2gsIFZlY3RvcjxQbHVn
aW5JbmZvPiYgcGx1Z2luSW5mb3MpCit2b2lkIFdlYkNvbnRleHQ6OnNlbmREaWRHZXRQbHVnaW5z
KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVmVjdG9yPFBsdWdpbkluZm8+JiBwbHVnaW5JbmZv
cykKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgVmVjdG9yPFBsdWdpbklu
Zm8+IHBsdWdpbnMocGx1Z2luSW5mb3MpOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIC8vIEFk
ZCBidWlsdC1pbiBQREYgbGFzdCwgc28gdGhhdCBpdCdzIG5vdCB1c2VkIHdoZW4gYSByZWFsIHBs
dWctaW4gaXMgaW5zdGFsbGVkLgorICAgIC8vIE5PVEU6IFRoaXMgaGFzIHRvIGJlIGRvbmUgb24g
dGhlIG1haW4gdGhyZWFkIGFzIGl0IGNhbGxzIGxvY2FsaXplZFN0cmluZygpLgorICAgIGlmICgh
b21pdFBERlN1cHBvcnQoKSkKKyAgICAgICAgcGx1Z2lucy5hcHBlbmQoQnVpbHRJblBERlZpZXc6
OnBsdWdpbkluZm8oKSk7CisjZW5kaWYKKworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6
V2ViUHJvY2Vzczo6RGlkR2V0UGx1Z2lucyhyZXF1ZXN0SUQsIHBsdWdpbnMpLCAwKTsKK30KKwor
dm9pZCBXZWJDb250ZXh0OjpoYW5kbGVHZXRQbHVnaW5zKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9v
bCByZWZyZXNoKQogewogICAgIGlmIChyZWZyZXNoKQogICAgICAgICBtX3BsdWdpbkluZm9TdG9y
ZS5yZWZyZXNoKCk7CiAKKyAgICBWZWN0b3I8UGx1Z2luSW5mbz4gcGx1Z2luSW5mb3M7CisKICAg
ICBWZWN0b3I8UGx1Z2luTW9kdWxlSW5mbz4gcGx1Z2lucyA9IG1fcGx1Z2luSW5mb1N0b3JlLnBs
dWdpbnMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBsdWdpbnMuc2l6ZSgpOyArK2kp
CiAgICAgICAgIHBsdWdpbkluZm9zLmFwcGVuZChwbHVnaW5zW2ldLmluZm8pOwogCi0jaWYgUExB
VEZPUk0oTUFDKQotICAgIC8vIEFkZCBidWlsdC1pbiBQREYgbGFzdCwgc28gdGhhdCBpdCdzIG5v
dCB1c2VkIHdoZW4gYSByZWFsIHBsdWctaW4gaXMgaW5zdGFsbGVkLgotICAgIGlmICghb21pdFBE
RlN1cHBvcnQoKSkKLSAgICAgICAgcGx1Z2luSW5mb3MuYXBwZW5kKEJ1aWx0SW5QREZWaWV3Ojpw
bHVnaW5JbmZvKCkpOwotI2VuZGlmCisgICAgUnVuTG9vcDo6bWFpbigpLT5kaXNwYXRjaChiaW5k
KCZXZWJDb250ZXh0OjpzZW5kRGlkR2V0UGx1Z2lucywgdGhpcywgcmVxdWVzdElELCBwbHVnaW5J
bmZvcykpOworfQorCit2b2lkIFdlYkNvbnRleHQ6OmdldFBsdWdpbnMoQ29yZUlQQzo6Q29ubmVj
dGlvbiosIHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCByZWZyZXNoKQoreworICAgIG1fcGx1Z2lu
V29ya1F1ZXVlLmRpc3BhdGNoKGJpbmQoJldlYkNvbnRleHQ6OmhhbmRsZUdldFBsdWdpbnMsIHRo
aXMsIHJlcXVlc3RJRCwgcmVmcmVzaCkpOwogfQogCiB2b2lkIFdlYkNvbnRleHQ6OmdldFBsdWdp
blBhdGgoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIFN0
cmluZyYgcGx1Z2luUGF0aCwgYm9vbCYgYmxvY2tlZCkKQEAgLTkyOSw0ICs5NTEsMTIgQEAgdm9p
ZCBXZWJDb250ZXh0OjpnYXJiYWdlQ29sbGVjdEphdmFTY3JpcHRPYmplY3RzKCkKICAgICBzZW5k
VG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkdhcmJhZ2VDb2xsZWN0SmF2YVNj
cmlwdE9iamVjdHMoKSk7CiB9CiAKK3ZvaWQgV2ViQ29udGV4dDo6ZGlkUmVjZWl2ZU1lc3NhZ2VP
bkNvbm5lY3Rpb25Xb3JrUXVldWUoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29y
ZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1
bWVudHMsIGJvb2wmIGRpZEhhbmRsZU1lc3NhZ2UpCit7CisgICAgaWYgKG1lc3NhZ2VJRC5pczxD
b3JlSVBDOjpNZXNzYWdlQ2xhc3NXZWJDb250ZXh0PigpKSB7CisgICAgICAgIGRpZFJlY2VpdmVX
ZWJDb250ZXh0TWVzc2FnZU9uQ29ubmVjdGlvbldvcmtRdWV1ZShjb25uZWN0aW9uLCBtZXNzYWdl
SUQsIGFyZ3VtZW50cywgZGlkSGFuZGxlTWVzc2FnZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250
ZXh0LmgKaW5kZXggZjk0ZGM0YS4uNTBhYTU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29udGV4dC5oCkBAIC02Niw3ICs2Niw3IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOwogICAgIAogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8V0tEaWN0aW9uYXJ5UmVmPiBE
aWN0aW9uYXJ5Q2FsbGJhY2s7CiAKLWNsYXNzIFdlYkNvbnRleHQgOiBwdWJsaWMgQVBJT2JqZWN0
IHsKK2NsYXNzIFdlYkNvbnRleHQgOiBwdWJsaWMgQVBJT2JqZWN0LCBwcml2YXRlIENvcmVJUEM6
OkNvbm5lY3Rpb246OlF1ZXVlQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlw
ZSBBUElUeXBlID0gVHlwZUNvbnRleHQ7CiAKQEAgLTIxNiw3ICsyMTYsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkVXBkYXRlSGlzdG9yeVRpdGxlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpOwogCiAgICAg
Ly8gUGx1Z2lucwotICAgIHZvaWQgZ2V0UGx1Z2lucyhib29sIHJlZnJlc2gsIFZlY3RvcjxXZWJD
b3JlOjpQbHVnaW5JbmZvPiYpOworICAgIHZvaWQgZ2V0UGx1Z2lucyhDb3JlSVBDOjpDb25uZWN0
aW9uKiwgdWludDY0X3QgcmVxdWVzdElELCBib29sIHJlZnJlc2gpOwogICAgIHZvaWQgZ2V0UGx1
Z2luUGF0aChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywg
U3RyaW5nJiBwbHVnaW5QYXRoLCBib29sJiBibG9ja2VkKTsKICNpZiAhRU5BQkxFKFBMVUdJTl9Q
Uk9DRVNTKQogICAgIHZvaWQgZGlkR2V0U2l0ZXNXaXRoUGx1Z2luRGF0YShjb25zdCBWZWN0b3I8
U3RyaW5nPiYgc2l0ZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpAQCAtMjQ1LDYgKzI0NSw5IEBA
IHByaXZhdGU6CiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYkNvbnRleHRNZXNz
YWdlUmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViQ29udGV4dE1lc3NhZ2UoQ29y
ZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyKik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY1dlYkNvbnRleHRNZXNzYWdlKENvcmVJ
UEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVj
b2RlciosIE93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+Jik7CisgICAgdm9pZCBkaWRS
ZWNlaXZlV2ViQ29udGV4dE1lc3NhZ2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoQ29yZUlQQzo6Q29u
bmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwg
Ym9vbCYgZGlkSGFuZGxlTWVzc2FnZSk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6
Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgYm9vbCYgZGlkSGFuZGxlTWVz
c2FnZSkgT1ZFUlJJREU7CiAKICAgICBzdGF0aWMgdm9pZCBsYW5ndWFnZUNoYW5nZWQodm9pZCog
Y29udGV4dCk7CiAgICAgdm9pZCBsYW5ndWFnZUNoYW5nZWQoKTsKQEAgLTI1Nyw2ICsyNjAsOSBA
QCBwcml2YXRlOgogICAgIFN0cmluZyBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKICAg
ICBTdHJpbmcgcGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAK
KyAgICB2b2lkIGhhbmRsZUdldFBsdWdpbnModWludDY0X3QgcmVxdWVzdElELCBib29sIHJlZnJl
c2gpOworICAgIHZvaWQgc2VuZERpZEdldFBsdWdpbnModWludDY0X3QgcmVxdWVzdElELCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mKTsKKwogICAgIFByb2Nlc3NNb2RlbCBtX3By
b2Nlc3NNb2RlbDsKICAgICAKICAgICAvLyBGSVhNRTogSW4gdGhlIGZ1dHVyZSwgdGhpcyBzaG91
bGQgYmUgb25lIG9yIG1vcmUgV2ViUHJvY2Vzc1Byb3hpZXMuCkBAIC0zMjIsNiArMzI4LDggQEAg
cHJpdmF0ZToKICAgICBib29sIG1fcHJvY2Vzc1Rlcm1pbmF0aW9uRW5hYmxlZDsKICAgICAKICAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8RGljdGlvbmFyeUNhbGxiYWNrPiA+IG1fZGljdGlv
bmFyeUNhbGxiYWNrczsKKworICAgIFdvcmtRdWV1ZSBtX3BsdWdpbldvcmtRdWV1ZTsKIH07CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSBib29sIFdlYkNvbnRleHQ6OnNlbmRUb0FsbFBy
b2Nlc3Nlcyhjb25zdCBVJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29udGV4dC5tZXNzYWdlcy5pbgppbmRleCBhMTM5N2YwLi45NTUwMTcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5pbgpAQCAtMzIsNyAr
MzIsNyBAQCBtZXNzYWdlcyAtPiBXZWJDb250ZXh0IHsKICAgICBBZGRWaXNpdGVkTGlua0hhc2go
dWludDY0X3QgbGlua0hhc2gpCiAgICAgCiAgICAgIyBQbHVnaW4gbWVzc2FnZXMuCi0gICAgR2V0
UGx1Z2lucyhib29sIHJlZnJlc2gpIC0+IChWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gcGx1
Z2lucykKKyAgICBHZXRQbHVnaW5zKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCByZWZyZXNoKSBE
aXNwYXRjaE9uQ29ubmVjdGlvblF1ZXVlCiAgICAgR2V0UGx1Z2luUGF0aChXVEY6OlN0cmluZyBt
aW1lVHlwZSwgV1RGOjpTdHJpbmcgdXJsU3RyaW5nKSAtPiAoV1RGOjpTdHJpbmcgcGx1Z2luUGF0
aCwgYm9vbCBibG9ja2VkKQogCiAjaWYgIUVOQUJMRShQTFVHSU5fUFJPQ0VTUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzYWUw
MGFmLi5hOGQ2NjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0yMDMsNyArMjAzLDYgQEAKIAkJMUFBRjBDNEIxMkIxNjMzNDAw
OEU0OUUyIC8qIEFyZ3VtZW50Q29kZXJzQ0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBRjBDNDkxMkIxNjMzNDAwOEU0OUUyIC8qIEFyZ3VtZW50
Q29kZXJzQ0YuY3BwICovOyB9OwogCQkxQUFGMjYzODE0Njg3QzM5MDA0QTFFOEEgLyogVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQUFGMjYzNjE0Njg3QzM5MDA0QTFFOEEgLyogVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEubW0gKi87IH07CiAJCTFBQUYyNjM5MTQ2ODdDMzkwMDRBMUU4QSAv
KiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBRjI2MzcxNDY4N0MzOTAwNEExRThBIC8qIFRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmggKi87IH07Ci0JCTFBQjQyRTg3MTRCQkJCQjIwMDQy
NzJGNyAvKiBLZXljaGFpblNoaW1SZXNwb25zZU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCNDJFODYxNEJCQkJCMjAwNDI3MkY3IC8qIEtleWNo
YWluU2hpbVJlc3BvbnNlTWFwLmggKi87IH07CiAJCTFBQjdENENBMTI4OEFBQTcwMENGRDA4QyAv
KiBEb3dubG9hZFByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQUI3RDRDODEyODhBQUE3MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eS5oICovOyB9
OwogCQkxQUI3RDRDQjEyODhBQUE3MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RDRDOTEyODhBQUE3
MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eS5jcHAgKi87IH07CiAJCTFBQjdENjE5MTI4OEI5RDkw
MENGRDA4QyAvKiBEb3dubG9hZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjdENjE3MTI4OEI5RDkwMENGRDA4
QyAvKiBEb3dubG9hZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKQEAgLTMyNyw2ICsz
MjYsNyBAQAogCQkzN0M0RTlGNjEzMUM2RTdFMDAyOUJENUEgLyogY29uZmlnLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMzk2RUE1NTEyRTBFRDJEMDBG
NEZFQjcgLyogY29uZmlnLmggKi87IH07CiAJCTM3RjYyM0I4MTJBNTdCNjIwMEUzRkRGNiAvKiBX
S0ZpbmRPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzN0Y2MjNCNzEyQTU3QjYyMDBFM0ZERjYgLyogV0tGaW5kT3B0aW9ucy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTM3RjkwREUzMTM3NjU2
MEUwMDUxQ0Y2OCAvKiBIVFRQQ29va2llQWNjZXB0UG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjM4OTU0RjEzM0JFRjM4MDA4OTQxRDUgLyog
SFRUUENvb2tpZUFjY2VwdFBvbGljeS5oICovOyB9OworCQk0RjYwMTQzMjE1NUM1QUEyMDAxRkJE
RTAgLyogQmxvY2tpbmdSZXNwb25zZU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEY2MDE0MzAxNTVDNUEzMjAwMUZCREUwIC8qIEJsb2NraW5nUmVz
cG9uc2VNYXAuaCAqLzsgfTsKIAkJNTEwMjFFOUMxMkIxNjc4ODAwNUMwMzNDIC8qIFdlYkNvbnRl
eHRNZW51Q2xpZW50TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTEwMjFFOUIxMkIxNjc4ODAwNUMwMzNDIC8qIFdlYkNvbnRleHRNZW51Q2xpZW50
TWFjLm1tICovOyB9OwogCQk1MTBGQkI5QTEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1l
bnVJdGVtRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTBGQkI5ODEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5j
cHAgKi87IH07CiAJCTUxMEZCQjlCMTI4OEM5NUUwMEFGRkRGNCAvKiBXZWJDb250ZXh0TWVudUl0
ZW1EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTBGQkI5OTEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oICovOyB9
OwpAQCAtMTIxMiw3ICsxMjEyLDYgQEAKIAkJMUFBRjBDNDkxMkIxNjMzNDAwOEU0OUUyIC8qIEFy
Z3VtZW50Q29kZXJzQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGgg
PSBBcmd1bWVudENvZGVyc0NGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFB
RjI2MzYxNDY4N0MzOTAwNEExRThBIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQUYyNjM3
MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQUI0MkU4NjE0QkJCQkIyMDA0Mjcy
RjcgLyogS2V5Y2hhaW5TaGltUmVzcG9uc2VNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gS2V5Y2hhaW5TaGltUmVzcG9uc2VNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUFCN0Q0QzgxMjg4QUFBNzAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG93bmxvYWRQcm94eS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQUI3RDRDOTEyODhBQUE3MDBDRkQwOEMgLyogRG93bmxvYWRQ
cm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb3dubG9hZFBy
b3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCN0Q1RTkxMjg4QjhDMDAw
Q0ZEMDhDIC8qIERvd25sb2FkUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTEzNDksNiArMTM0OCw3IEBACiAJCTM3OTQ4NDA2MTUwQzRCOTYwMEU1MkNFOSAvKiBXS1Jl
bmRlckxheWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUmVu
ZGVyTGF5ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzk0ODQwNzE1MEM0
Qjk2MDBFNTJDRTkgLyogV0tSZW5kZXJMYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS1JlbmRlckxheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3
RjYyM0I3MTJBNTdCNjIwMEUzRkRGNiAvKiBXS0ZpbmRPcHRpb25zLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdLRmluZE9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNEY2MDE0MzAxNTVDNUEzMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VNYXAu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmxvY2tpbmdSZXNwb25zZU1hcC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTAwMzFGNjEzNzlDQUNCMDBDOERGRTQg
LyogV2ViUHJvY2Vzc1NoaW0uZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhw
bGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBpbmNsdWRlSW5JbmRleCA9
IDA7IHBhdGggPSBXZWJQcm9jZXNzU2hpbS5keWxpYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKIAkJNTEwMjFFOUIxMkIxNjc4ODAwNUMwMzNDIC8qIFdlYkNvbnRleHRNZW51
Q2xpZW50TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vi
Q29udGV4dE1lbnVDbGllbnRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
MEZCQjk4MTI4OEM5NUUwMEFGRkRGNCAvKiBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbnRleHRNZW51SXRlbURhdGEu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjIyOCw3ICsyMjI4LDYgQEAKIAkJ
CWNoaWxkcmVuID0gKAogCQkJCTUxMkRGNkQ2MTM4QzE4MUEwMEEyMkZDNiAvKiBLZXljaGFpbkl0
ZW1TaGltTWV0aG9kcy5oICovLAogCQkJCTUxMkRGNkQ3MTM4QzE4MUEwMEEyMkZDNiAvKiBLZXlj
aGFpbkl0ZW1TaGltTWV0aG9kcy5tbSAqLywKLQkJCQkxQUI0MkU4NjE0QkJCQkIyMDA0MjcyRjcg
LyogS2V5Y2hhaW5TaGltUmVzcG9uc2VNYXAuaCAqLywKIAkJCQk1MTFGOEE3RDEzOEI0NkZFMDBB
OTVGNDQgLyogU2VjSXRlbVNoaW1NZXRob2RzLmggKi8sCiAJCQkJNTExRjhBN0UxMzhCNDZGRTAw
QTk1RjQ0IC8qIFNlY0l0ZW1TaGltTWV0aG9kcy5tbSAqLywKIAkJCQlCQzMwNjVDMzEyNTkyRjg5
MDBFNzEyNzggLyogV2ViUHJvY2Vzc01hYy5tbSAqLywKQEAgLTIzNDQsNiArMjM0Myw3IEBACiAJ
CQkJNUQ1MTg0NTQxM0JDRjlDQzAwQzdGRjRBIC8qIEFQSUNsaWVudFRyYWl0cy5oICovLAogCQkJ
CUI2MzQwM0Y4MTQ5MTBENTcwMDEwNzBCNSAvKiBBUElPYmplY3QuY3BwICovLAogCQkJCUJDRjA0
QzhDMTFGRjlCN0QwMEY4NkE1OCAvKiBBUElPYmplY3QuaCAqLywKKwkJCQk0RjYwMTQzMDE1NUM1
QTMyMDAxRkJERTAgLyogQmxvY2tpbmdSZXNwb25zZU1hcC5oICovLAogCQkJCUJDMzA2NUY5MTI1
OTM0NEUwMEU3MTI3OCAvKiBDYWNoZU1vZGVsLmggKi8sCiAJCQkJMUEyRDk1NkUxMjg0ODU2NDAw
MUVCOTYyIC8qIENoaWxkUHJvY2Vzcy5jcHAgKi8sCiAJCQkJMUEyRDk1NkQxMjg0ODU2NDAwMUVC
OTYyIC8qIENoaWxkUHJvY2Vzcy5oICovLApAQCAtMzg4OSw2ICszODg5LDcgQEAKIAkJCQkxQUVG
Q0MxMjExRDAxRjk2MDA4MjE5RDMgLyogUGx1Z2luSW5mb1N0b3JlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTNENjEwMjEzQTdDQzJBMDBGOTVENEUgLyogUGx1Z2luTW9kdWxlSW5mby5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUEwNDM5NzYxMjREMDM0ODAwRkZCRkI1IC8qIFBsdWdpblByb2Nlc3Mu
aCBpbiBIZWFkZXJzICovLAorCQkJCTRGNjAxNDMyMTU1QzVBQTIwMDFGQkRFMCAvKiBCbG9ja2lu
Z1Jlc3BvbnNlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTBFQzkwNjEyNEMwQUI4MDA3RUY0
QTUgLyogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMEVD
OTBGMTI0QzBBRjUwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBMkJCNkQxMTQxMTdCNEQwMDBGMzVENCAvKiBQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKQEAgLTQxOTMsNyArNDE5NCw2
IEBACiAJCQkJQkM4Njk5QjcxMTZBQURBQTAwMkE5MjVCIC8qIFdLVmlld0ludGVybmFsLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCRkE2MTc5RjEyRjBCOTlEMDAzM0UwQ0EgLyogV0tWaWV3UHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyRTZFOEUxMTQxOTcxNTAwQTYzQjFFIC8qIFdvcmtR
dWV1ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUFCNDJFODcxNEJCQkJCMjAwNDI3MkY3IC8qIEtl
eWNoYWluU2hpbVJlc3BvbnNlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTdCRjk5NjE0RDBB
NzNFMDBBNUEwNjkgLyogTmV0c2NhcGVTYW5kYm94RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0UwOTM3ODE0RkIxMjhDMDAxMTM4RDkgLyogTGF5ZXJIb3N0aW5nQ29udGV4dC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMjk2QkQ4NUQxNTAxOUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxp
dGllcy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAK
aW5kZXggNjYyMmNmNi4uYzE0Nzk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCiAK
KyNpbmNsdWRlICJCbG9ja2luZ1Jlc3BvbnNlTWFwLmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5mb1N0
b3JlLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29v
a2llTWFuYWdlci5oIgpAQCAtMzcsNiArMzgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1Q
YXN0ZWJvYXJkLmg+CisjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KIAogI2lmIFVTRShDRikKICNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC0xMDIsNiArMTA0LDIzIEBAIHZvaWQgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFdlYkNvcmU6OlBhZ2UqLCBWZWN0
b3I8V2ViQ29yZTo6CiAgICAgcGx1Z2lucyA9IG1fY2FjaGVkUGx1Z2luczsKIH0KIAorc3RhdGlj
IEJsb2NraW5nUmVzcG9uc2VNYXA8VmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+ID4mIHJlc3Bv
bnNlTWFwKCkKK3sKKyAgICBBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWMoQmxvY2tpbmdSZXNw
b25zZU1hcDxWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gPiYsIHJlc3BvbnNlTWFwID0gKm5l
dyBCbG9ja2luZ1Jlc3BvbnNlTWFwPFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiA+KTsKKyAg
ICByZXR1cm4gcmVzcG9uc2VNYXA7Cit9CisKK3ZvaWQgaGFuZGxlRGlkR2V0UGx1Z2lucyh1aW50
NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYgcGx1Z2lu
cykKK3sKKyAgICByZXNwb25zZU1hcCgpLmRpZFJlY2VpdmVSZXNwb25zZShyZXF1ZXN0SUQsIGFk
b3B0UHRyKG5ldyBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4ocGx1Z2lucykpKTsKK30KKwor
c3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlUmVxdWVzdElEKCkKK3sKKyAgICBzdGF0aWMgaW50IHVu
aXF1ZUlEOworICAgIHJldHVybiBhdG9taWNJbmNyZW1lbnQoJnVuaXF1ZUlEKTsKK30KKwogdm9p
ZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnBvcHVsYXRlUGx1Z2luQ2FjaGUoKQogewogICAgIGlm
IChtX3BsdWdpbkNhY2hlSXNQb3B1bGF0ZWQpCkBAIC0xMDksMTMgKzEyOCwxMSBAQCB2b2lkIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cG9wdWxhdGVQbHVnaW5DYWNoZSgpCiAKICAgICBBU1NFUlQo
bV9jYWNoZWRQbHVnaW5zLmlzRW1wdHkoKSk7CiAgICAgCi0gICAgVmVjdG9yPFBsdWdpbkluZm8+
IHBsdWdpbnM7Ci0gICAgCiAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBkbyBzb21ldGhpbmcgaW4g
Y2FzZSBvZiBlcnJvciBoZXJlPwotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYkNvbnRleHQ6OkdldFBsdWdpbnMobV9zaG91bGRSZWZy
ZXNoUGx1Z2lucyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBNZXNzYWdlczo6V2ViQ29udGV4dDo6R2V0UGx1Z2luczo6UmVwbHkocGx1Z2lucyksIDAp
OworICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IGdlbmVyYXRlUmVxdWVzdElEKCk7CisgICAgV2Vi
UHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJDb250ZXh0
OjpHZXRQbHVnaW5zKHJlcXVlc3RJRCwgbV9zaG91bGRSZWZyZXNoUGx1Z2lucyksIDApOwogCi0g
ICAgbV9jYWNoZWRQbHVnaW5zLnN3YXAocGx1Z2lucyk7CisgICAgbV9jYWNoZWRQbHVnaW5zID0g
KnJlc3BvbnNlTWFwKCkud2FpdEZvclJlc3BvbnNlKHJlcXVlc3RJRCk7CiAgICAgCiAgICAgbV9z
aG91bGRSZWZyZXNoUGx1Z2lucyA9IGZhbHNlOwogICAgIG1fcGx1Z2luQ2FjaGVJc1BvcHVsYXRl
ZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAwODZmZDBhLi40
MTJhNzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTg1LDYgKzg1LDgg
QEAgcHJpdmF0ZToKICAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gbV9jYWNoZWRQbHVn
aW5zOwogfTsKIAordm9pZCBoYW5kbGVEaWRHZXRQbHVnaW5zKHVpbnQ2NF90IHJlcXVlc3RJRCwg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jik7CisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAogCiAjZW5kaWYgLy8gVVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAyMGQ5MjYwLi5kNmUyYjI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTEwMzEsNCArMTAzMSwxMCBA
QCB2b2lkIFdlYlByb2Nlc3M6OnNldFRleHRDaGVja2VyU3RhdGUoY29uc3QgVGV4dENoZWNrZXJT
dGF0ZSYgdGV4dENoZWNrZXJTdGF0ZSkKICAgICB9CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6ZGlk
R2V0UGx1Z2lucyhDb3JlSVBDOjpDb25uZWN0aW9uKiwgdWludDY0X3QgcmVxdWVzdElELCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mIHBsdWdpbnMpCit7CisgICAgLy8gUGFzcyB0
aGlzIHRvIFdlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAuCisgICAgaGFuZGxlRGlkR2V0UGx1Z2lu
cyhyZXF1ZXN0SUQsIHBsdWdpbnMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggZWFmZTFkOS4uOTE5MTVkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJDaGlsZFByb2Nlc3MuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYS5oIgogI2luY2x1
ZGUgIkV2ZW50RGlzcGF0Y2hlci5oIgorI2luY2x1ZGUgIlBsdWdpbkluZm9TdG9yZS5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlQ2FjaGVzVG9DbGVhci5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNp
b24uaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKQEAgLTI0Myw2ICsyNDQsOCBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlByb2Nlc3NNZXNzYWdlKENvcmVJUEM6OkNvbm5l
Y3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlByb2Nlc3NNZXNzYWdlT25Db25uZWN0aW9uV29ya1F1ZXVl
KENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3Vt
ZW50RGVjb2RlciosIGJvb2wmIGRpZEhhbmRsZU1lc3NhZ2UpOwogCisgICAgdm9pZCBkaWRHZXRQ
bHVnaW5zKENvcmVJUEM6OkNvbm5lY3Rpb24qLCB1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOworCiAgICAgUmVmUHRyPFdlYkNvbm5lY3Rpb25U
b1VJUHJvY2Vzcz4gbV9jb25uZWN0aW9uOwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRy
PFdlYlBhZ2U+ID4gbV9wYWdlTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDNiNmExZjcuLmI3YmM3MjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTU0LDYg
KzU0LDggQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyB7CiAgICAgQ2xlYXJQbHVnaW5TaXRlRGF0
YShWZWN0b3I8V1RGOjpTdHJpbmc+IHBsdWdpblBhdGhzLCBWZWN0b3I8V1RGOjpTdHJpbmc+IHNp
dGVzLCB1aW50NjRfdCBmbGFncywgdWludDY0X3QgbWF4QWdlSW5TZWNvbmRzLCB1aW50NjRfdCBj
YWxsYmFja0lEKQogI2VuZGlmCiAKKyAgICBEaWRHZXRQbHVnaW5zKHVpbnQ2NF90IHJlcXVlc3RJ
RCwgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IHBsdWdpbnMpIERpc3BhdGNoT25Db25uZWN0
aW9uUXVldWUKKwogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKICAgICBQbHVnaW5Qcm9jZXNz
Q3Jhc2hlZChTdHJpbmcgcGx1Z2luUHJvY2VzcykgRGlzcGF0Y2hPbkNvbm5lY3Rpb25RdWV1ZQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9LZXljaGFp
bkl0ZW1TaGltTWV0aG9kcy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL0tleWNo
YWluSXRlbVNoaW1NZXRob2RzLm1tCmluZGV4IDVmNzFhZTQuLmZmMzA5ODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL0tleWNoYWluSXRlbVNoaW1NZXRob2RzLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL0tleWNoYWluSXRlbVNoaW1NZXRo
b2RzLm1tCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBkZWZpbmVkKEJVSUxESU5HX09OX1NOT1df
TEVPUEFSRCkKIAotI2ltcG9ydCAiS2V5Y2hhaW5TaGltUmVzcG9uc2VNYXAuaCIKKyNpbXBvcnQg
IkJsb2NraW5nUmVzcG9uc2VNYXAuaCIKICNpbXBvcnQgIlNlY0tleWNoYWluSXRlbVJlcXVlc3RE
YXRhLmgiCiAjaW1wb3J0ICJTZWNLZXljaGFpbkl0ZW1SZXNwb25zZURhdGEuaCIKICNpbXBvcnQg
IldlYlByb2Nlc3MuaCIKQEAgLTE0MSw5ICsxNDEsOSBAQCBzdGF0aWMgYm9vbCB3ZWJGcmVlS2V5
Y2hhaW5JdGVtQ29udGVudCh2b2lkKiBkYXRhKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0
aWMgS2V5Y2hhaW5TaGltUmVzcG9uc2VNYXA8U2VjS2V5Y2hhaW5JdGVtUmVzcG9uc2VEYXRhPiYg
cmVzcG9uc2VNYXAoKQorc3RhdGljIEJsb2NraW5nUmVzcG9uc2VNYXA8U2VjS2V5Y2hhaW5JdGVt
UmVzcG9uc2VEYXRhPiYgcmVzcG9uc2VNYXAoKQogewotICAgIEF0b21pY2FsbHlJbml0aWFsaXpl
ZFN0YXRpYyhLZXljaGFpblNoaW1SZXNwb25zZU1hcDxTZWNLZXljaGFpbkl0ZW1SZXNwb25zZURh
dGE+JiwgcmVzcG9uc2VNYXAgPSAqbmV3IEtleWNoYWluU2hpbVJlc3BvbnNlTWFwPFNlY0tleWNo
YWluSXRlbVJlc3BvbnNlRGF0YT4pOworICAgIEF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpYyhC
bG9ja2luZ1Jlc3BvbnNlTWFwPFNlY0tleWNoYWluSXRlbVJlc3BvbnNlRGF0YT4mLCByZXNwb25z
ZU1hcCA9ICpuZXcgQmxvY2tpbmdSZXNwb25zZU1hcDxTZWNLZXljaGFpbkl0ZW1SZXNwb25zZURh
dGE+KTsKICAgICByZXR1cm4gcmVzcG9uc2VNYXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvbWFjL0tleWNoYWluU2hpbVJlc3BvbnNlTWFwLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9LZXljaGFpblNoaW1SZXNwb25zZU1hcC5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNGE3OGU2Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvbWFjL0tleWNoYWluU2hpbVJlc3BvbnNlTWFwLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBLZXljaGFpblNoaW1SZXNw
b25zZU1hcF9oCi0jZGVmaW5lIEtleWNoYWluU2hpbVJlc3BvbnNlTWFwX2gKLQotI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KLQotdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIEtleWNoYWluU2hpbVJlc3BvbnNlTWFwIHsKLXB1Ymxp
YzoKLSAgICBQYXNzT3duUHRyPFQ+IHdhaXRGb3JSZXNwb25zZSh1aW50NjRfdCByZXF1ZXN0SUQp
Ci0gICAgewotICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fbXV0ZXgpOwotCi0gICAgICAgICAgICBpZiAoT3duUHRyPFQ+IHJlc3BvbnNlID0g
bV9yZXNwb25zZXMudGFrZShyZXF1ZXN0SUQpKQotICAgICAgICAgICAgICAgIHJldHVybiByZXNw
b25zZS5yZWxlYXNlKCk7Ci0KLSAgICAgICAgICAgIG1fY29uZGl0aW9uLndhaXQobV9tdXRleCk7
Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCByZXF1ZXN0SUQsIFBhc3NPd25QdHI8VD4gcmVz
cG9uc2UpCi0gICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7Ci0gICAg
ICAgIEFTU0VSVCghbV9yZXNwb25zZXMuY29udGFpbnMocmVxdWVzdElEKSk7Ci0KLSAgICAgICAg
bV9yZXNwb25zZXMuc2V0KHJlcXVlc3RJRCwgcmVzcG9uc2UpOwotICAgICAgICBtX2NvbmRpdGlv
bi5zaWduYWwoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgTXV0ZXggbV9tdXRleDsKLSAgICBU
aHJlYWRDb25kaXRpb24gbV9jb25kaXRpb247Ci0KLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBPd25Q
dHI8VD4gPiBtX3Jlc3BvbnNlczsKLX07Ci0KLQotCi0jZW5kaWYgLy8gS2V5Y2hhaW5TaGltUmVz
cG9uc2VNYXBfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvU2Vj
SXRlbVNoaW1NZXRob2RzLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvU2VjSXRl
bVNoaW1NZXRob2RzLm1tCmluZGV4IDQ2N2MzZTAuLmNmZTMzYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltTWV0aG9kcy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9TZWNJdGVtU2hpbU1ldGhvZHMubW0KQEAgLTI4LDcg
KzI4LDcgQEAKIAogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKIAotI2lt
cG9ydCAiS2V5Y2hhaW5TaGltUmVzcG9uc2VNYXAuaCIKKyNpbXBvcnQgIkJsb2NraW5nUmVzcG9u
c2VNYXAuaCIKICNpbXBvcnQgIlNlY0l0ZW1SZXF1ZXN0RGF0YS5oIgogI2ltcG9ydCAiU2VjSXRl
bVJlc3BvbnNlRGF0YS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgpAQCAtMzksOSArMzksOSBA
QAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIEtleWNoYWluU2hpbVJlc3BvbnNlTWFw
PFNlY0l0ZW1SZXNwb25zZURhdGE+JiByZXNwb25zZU1hcCgpCitzdGF0aWMgQmxvY2tpbmdSZXNw
b25zZU1hcDxTZWNJdGVtUmVzcG9uc2VEYXRhPiYgcmVzcG9uc2VNYXAoKQogewotICAgIEF0b21p
Y2FsbHlJbml0aWFsaXplZFN0YXRpYyhLZXljaGFpblNoaW1SZXNwb25zZU1hcDxTZWNJdGVtUmVz
cG9uc2VEYXRhPiYsIHJlc3BvbnNlTWFwID0gKm5ldyBLZXljaGFpblNoaW1SZXNwb25zZU1hcDxT
ZWNJdGVtUmVzcG9uc2VEYXRhPik7CisgICAgQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljKEJs
b2NraW5nUmVzcG9uc2VNYXA8U2VjSXRlbVJlc3BvbnNlRGF0YT4mLCByZXNwb25zZU1hcCA9ICpu
ZXcgQmxvY2tpbmdSZXNwb25zZU1hcDxTZWNJdGVtUmVzcG9uc2VEYXRhPik7CiAgICAgcmV0dXJu
IHJlc3BvbnNlTWFwOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141476</attachid>
            <date>2012-05-11 12:41:25 -0700</date>
            <delta_ts>2012-05-11 12:49:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86143-v4.diff</filename>
            <type>text/plain</type>
            <size>32888</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlZWRlNGY0Li4zNTdhOTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzgg
QEAKKzIwMTItMDUtMTEgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAg
ICAgIFdLMi9QbHVnaW5zOiBNb3ZlIGVudW1lcmF0aW9uIG9mIHBsdWdpbnMgdG8gYSBzZWNvbmRh
cnkgVUlQcm9jZXNzIHRocmVhZC4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvODYxNDM+
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDc3NzIxOD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBhdm9pZCBzcGlucyBiZW5lYXRoIFBsdWdp
bkluZm9TdG9yZTo6Z2V0UGx1Z2luSW5mbygpLCBkbyB0aGlzIHdvcmsgb24gYSBzZWNvbmRhcnkK
KyAgICAgICAgdGhyZWFkIGluIHRoZSBVSVByb2Nlc3MuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJ
T2JqZWN0Lmg6CisKKyAgICAgICAgICAgIE1hZGUgQVBJT2JqZWN0IGEgVGhyZWFkU2FmZVJlZkNv
dW50ZWQuIEluIHRoZSBjb250ZXh0IG9mIHRoaXMgcGF0Y2gsIHRoaXMgaXMgdG8KKyAgICAgICAg
ICAgIGJlIGFibGUgdG8gZGlzcGF0Y2ggYm91bmQgRnVuY3Rpb25zIG9uIFdlYkNvbnRleHQuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL21hYy9LZXljaGFpbkl0ZW1TaGltTWV0aG9kcy5tbToKKyAg
ICAgICAgKFdlYktpdDo6cmVzcG9uc2VNYXApOgorICAgICAgICAqIFdlYlByb2Nlc3MvbWFjL1Nl
Y0l0ZW1TaGltTWV0aG9kcy5tbToKKyAgICAgICAgKFdlYktpdDo6cmVzcG9uc2VNYXApOgorICAg
ICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTaGFy
ZWQvQmxvY2tpbmdSZXNwb25zZU1hcC5oOgorICAgICAgICAoQmxvY2tpbmdSZXNwb25zZU1hcCk6
CisgICAgICAgIChCbG9ja2luZ1Jlc3BvbnNlTWFwOjp3YWl0Rm9yUmVzcG9uc2UpOgorICAgICAg
ICAoQmxvY2tpbmdSZXNwb25zZU1hcDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKworICAgICAgICAg
ICAgIFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9LZXljaGFpblNo
aW1SZXNwb25zZU1hcC5oLgorICAgICAgICAgICAgIEdlbmVyYWxpemUgdGhpcyBzb21ld2hhdCBz
aW5jZSBpdCdzIHVzZWZ1bCBpbiBtb3JlIHRoYW4ganVzdCB0aGUga2V5Y2hhaW4gc2NlbmFyaW8u
CisgICAgICAgICAgICAgVGhpcyBjYW4vc2hvdWxkIGJlIGdlbmVyYWxpemVkIGZ1cnRoZXIsIGJ1
dCB0aGF0J3MgYSB0b3BpYyBmb3IgYW5vdGhlciBwYXRjaC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbkluZm9TdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkluZm9TdG9yZTo6
cGx1Z2lucyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkluZm9TdG9yZTo6ZmluZFBsdWdpbkZv
ck1JTUVUeXBlKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1Z2lu
Rm9yRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1
Z2luKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luSW5mb1N0b3JlOjppbmZvRm9yUGx1Z2luV2l0
aFBhdGgpOgorCisgICAgICAgICAgICBTbGFwIGEgbXV0ZXggb24gdGhlIFBsdWdpbkluZm9TdG9y
ZSBzaW5jZSBpdCBjYW4gbm93IGJlIGNhbGxlZCBmcm9tIGJvdGggdGhlCisgICAgICAgICAgICBt
YWluIHRocmVhZCAodmlhIFdLRnJhbWVDYW5TaG93TUlNRVR5cGUpIGFuZCB0aGUgR2V0UGx1Z2lu
IHdvcmsgcXVldWUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6V2ViQ29udGV4
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6On5XZWJDb250ZXh0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29udGV4dDo6cHJvY2Vzc0RpZEZpbmlzaExhdW5jaGluZyk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbnRleHQ6OnNlbmREaWRHZXRQbHVnaW5zKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGV4dDo6aGFuZGxlR2V0UGx1Z2lucyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bnRleHQ6OmdldFBsdWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpkaWRSZWNl
aXZlTWVzc2FnZU9uQ29ubmVjdGlvbldvcmtRdWV1ZSk6CisKKyAgICAgICAgICAgIE1ha2UgR2V0
UGx1Z2lucyBhIERpc3BhdGNoT25Db25uZWN0aW9uUXVldWUgbWVzc2FnZSBhbmQgZXhlY3V0ZSBp
dCBvbiBhIG5ldworICAgICAgICAgICAgcGx1Zy1pbiB3b3JrIHF1ZXVlLiBUaGlzIGVmZmVjdGl2
ZWx5IG1ha2VzIHRoZSBHZXRQbHVnaW4gY2FsbCBhc3luY2hyb25vdXMuCisgICAgICAgICAgICBP
biBNYWMsIHRoZSBidWlsdC1pbiBQREYgcmVhZGVyIGlzIHN0aWxsIHJlZ2lzdGVyZWQgb24gdGhl
IG1haW4gdGhyZWFkIGFzIHRoYXQKKyAgICAgICAgICAgIGVuZHMgdXAgY2FsbGluZyBpbnRvIGxv
Y2FsaXplZFN0cmluZygpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZGlkR2V0UGx1Z2lucyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICAgICBBZGQgYSBEaWRHZXRQbHVnaW5zIG1lc3NhZ2Ug
dG8gV2ViUHJvY2Vzcy4gVGhpcyBpcyBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlIGhhbmRsZXIKKyAg
ICAgICAgICAgIGluIFdlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6cmVzcG9uc2VNYXApOgorICAgICAgICAoV2ViS2l0OjpoYW5kbGVEaWRH
ZXRQbHVnaW5zKToKKyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVSZXF1ZXN0SUQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnBvcHVsYXRlUGx1Z2luQ2FjaGUpOgor
CisgICAgICAgICAgICBVc2UgYSBCbG9ja2luZ1Jlc3BvbnNlTWFwIHRvIGJsb2NrIHRoZSBXZWJQ
cm9jZXNzIG1haW4gdGhyZWFkIHVudGlsIHRoZSBVSVByb2Nlc3MKKyAgICAgICAgICAgIHJlc3Bv
bmRzIHdpdGggRGlkR2V0UGx1Z2lucy4KKwogMjAxMi0wNS0xMSAgR3VzdGF2byBOb3JvbmhhIFNp
bHZhICA8Z25zQGdub21lLm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxMTYyMDUpOiBbR1RL
XTogYnVpbGQgbm8gbG9uZ2VyIHN1cHBvcnRzIHRoaW4gYXJjaGl2ZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UElPYmplY3QuaAppbmRleCAyYWIzMzA0Li44OWU4ODc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9i
amVjdC5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBB
UElPYmplY3QgOiBwdWJsaWMgUmVmQ291bnRlZDxBUElPYmplY3Q+IHsKK2NsYXNzIEFQSU9iamVj
dCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBUElPYmplY3Q+IHsKIHB1YmxpYzoKICAg
ICBlbnVtIFR5cGUgewogICAgICAgICAvLyBCYXNlIHR5cGVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQmxvY2tpbmdSZXNwb25zZU1hcC5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Jsb2NraW5nUmVzcG9uc2VNYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5iMTQzNmY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Js
b2NraW5nUmVzcG9uc2VNYXAuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBCbG9ja2luZ1Jlc3BvbnNlTWFwX2gKKyNkZWZpbmUgQmxvY2tpbmdSZXNwb25zZU1hcF9oCisK
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVz
Lmg+CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBCbG9ja2luZ1Jlc3BvbnNlTWFwIHsK
K3B1YmxpYzoKKyAgICBQYXNzT3duUHRyPFQ+IHdhaXRGb3JSZXNwb25zZSh1aW50NjRfdCByZXF1
ZXN0SUQpCisgICAgeworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fbXV0ZXgpOworCisgICAgICAgICAgICBpZiAoT3duUHRyPFQ+IHJlc3Bv
bnNlID0gbV9yZXNwb25zZXMudGFrZShyZXF1ZXN0SUQpKQorICAgICAgICAgICAgICAgIHJldHVy
biByZXNwb25zZS5yZWxlYXNlKCk7CisKKyAgICAgICAgICAgIG1fY29uZGl0aW9uLndhaXQobV9t
dXRleCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCByZXF1ZXN0SUQsIFBhc3NPd25QdHI8
VD4gcmVzcG9uc2UpCisgICAgeworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7
CisgICAgICAgIEFTU0VSVCghbV9yZXNwb25zZXMuY29udGFpbnMocmVxdWVzdElEKSk7CisKKyAg
ICAgICAgbV9yZXNwb25zZXMuc2V0KHJlcXVlc3RJRCwgcmVzcG9uc2UpOworICAgICAgICBtX2Nv
bmRpdGlvbi5zaWduYWwoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTXV0ZXggbV9tdXRleDsK
KyAgICBUaHJlYWRDb25kaXRpb24gbV9jb25kaXRpb247CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90
LCBPd25QdHI8VD4gPiBtX3Jlc3BvbnNlczsKK307CisKKyNlbmRpZiAvLyBCbG9ja2luZ1Jlc3Bv
bnNlTWFwX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpbkluZm9TdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5JbmZvU3RvcmUuY3BwCmluZGV4IDk3Nzc1YzYuLmJhMzk0ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcApAQCAtMTEz
LDE1ICsxMTMsMTUgQEAgdm9pZCBQbHVnaW5JbmZvU3RvcmU6OmxvYWRQbHVnaW4oVmVjdG9yPFBs
dWdpbk1vZHVsZUluZm8+JiBwbHVnaW5zLCBjb25zdCBTdHJpbmcKIAogVmVjdG9yPFBsdWdpbk1v
ZHVsZUluZm8+IFBsdWdpbkluZm9TdG9yZTo6cGx1Z2lucygpCiB7CisgICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fcGx1Z2luc0xvY2spOwogICAgIGxvYWRQbHVnaW5zSWZOZWNlc3NhcnkoKTsKLQot
ICAgIFZlY3RvcjxQbHVnaW5Nb2R1bGVJbmZvPiBwbHVnaW5zKG1fcGx1Z2lucyk7Ci0KLSAgICBy
ZXR1cm4gcGx1Z2luczsKKyAgICByZXR1cm4gbV9wbHVnaW5zOwogfQogCiBQbHVnaW5Nb2R1bGVJ
bmZvIFBsdWdpbkluZm9TdG9yZTo6ZmluZFBsdWdpbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpIGNvbnN0CiB7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGx1Z2luc0xvY2sp
OworCiAgICAgQVNTRVJUKCFtaW1lVHlwZS5pc051bGwoKSk7CiAgICAgCiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX3BsdWdpbnMuc2l6ZSgpOyArK2kpIHsKQEAgLTEzOSw2ICsxMzksOCBA
QCBQbHVnaW5Nb2R1bGVJbmZvIFBsdWdpbkluZm9TdG9yZTo6ZmluZFBsdWdpbkZvck1JTUVUeXBl
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAKIFBsdWdpbk1vZHVsZUluZm8gUGx1Z2luSW5mb1N0
b3JlOjpmaW5kUGx1Z2luRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBTdHJp
bmcmIG1pbWVUeXBlKSBjb25zdAogeworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3BsdWdpbnNM
b2NrKTsKKwogICAgIEFTU0VSVCghZXh0ZW5zaW9uLmlzTnVsbCgpKTsKICAgICAKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fcGx1Z2lucy5zaXplKCk7ICsraSkgewpAQCAtMTg3LDcgKzE4
OSwxMCBAQCBTdHJpbmcgUGx1Z2luSW5mb1N0b3JlOjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihj
b25zdCBTdHJpbmcmIGV4dGVuc2lvbikKIAogUGx1Z2luTW9kdWxlSW5mbyBQbHVnaW5JbmZvU3Rv
cmU6OmZpbmRQbHVnaW4oU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgS1VSTCYgdXJsKQogewotICAg
IGxvYWRQbHVnaW5zSWZOZWNlc3NhcnkoKTsKKyAgICB7CisgICAgICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihtX3BsdWdpbnNMb2NrKTsKKyAgICAgICAgbG9hZFBsdWdpbnNJZk5lY2Vzc2FyeSgpOwor
ICAgIH0KICAgICAKICAgICAvLyBGaXJzdCwgY2hlY2sgaWYgd2UgY2FuIGdldCB0aGUgcGx1Zy1p
biBiYXNlZCBvbiBpdHMgTUlNRSB0eXBlLgogICAgIGlmICghbWltZVR5cGUuaXNOdWxsKCkpIHsK
QEAgLTIxOSw2ICsyMjQsOCBAQCBQbHVnaW5Nb2R1bGVJbmZvIFBsdWdpbkluZm9TdG9yZTo6Zmlu
ZFBsdWdpbihTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBLVVJMJiB1cmwpCiAKIFBsdWdpbk1vZHVs
ZUluZm8gUGx1Z2luSW5mb1N0b3JlOjppbmZvRm9yUGx1Z2luV2l0aFBhdGgoY29uc3QgU3RyaW5n
JiBwbHVnaW5QYXRoKSBjb25zdAogeworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3BsdWdpbnNM
b2NrKTsKKwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wbHVnaW5zLnNpemUoKTsgKytp
KSB7CiAgICAgICAgIGlmIChtX3BsdWdpbnNbaV0ucGF0aCA9PSBwbHVnaW5QYXRoKQogICAgICAg
ICAgICAgcmV0dXJuIG1fcGx1Z2luc1tpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmgKaW5kZXggZjMwMzAzYy4uNDJkZjY5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3Jl
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3Jl
LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgUGx1Z2luSW5mb1N0b3JlX2gKIAogI2luY2x1
ZGUgIlBsdWdpbk1vZHVsZUluZm8uaCIKKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZl
cy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgS1VSTDsKQEAgLTg3LDYgKzg4
LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiBtX2FkZGl0aW9uYWxQbHVnaW5zRGly
ZWN0b3JpZXM7CiAgICAgVmVjdG9yPFBsdWdpbk1vZHVsZUluZm8+IG1fcGx1Z2luczsKICAgICBi
b29sIG1fcGx1Z2luTGlzdElzVXBUb0RhdGU7CisKKyAgICBtdXRhYmxlIE11dGV4IG1fcGx1Z2lu
c0xvY2s7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggYjYyNThlYy4uMTdhYjVjMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApAQCAtMTQ3LDYgKzE0Nyw3IEBAIFdlYkNvbnRl
eHQ6OldlYkNvbnRleHQoUHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCwgY29uc3QgU3RyaW5nJiBp
bmplY3RlZEJ1bmRsZVBhCiAgICAgLCBtX2luaXRpYWxIVFRQQ29va2llQWNjZXB0UG9saWN5KEhU
VFBDb29raWVBY2NlcHRQb2xpY3lBbHdheXMpCiAjZW5kaWYKICAgICAsIG1fcHJvY2Vzc1Rlcm1p
bmF0aW9uRW5hYmxlZCh0cnVlKQorICAgICwgbV9wbHVnaW5Xb3JrUXVldWUoImNvbS5hcHBsZS5D
b3JlSVBDLlBsdWdpblF1ZXVlIikKIHsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgV2ViS2l0Ojpp
bml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeSgpOwpAQCAtMTY1LDYgKzE2Niw5IEBAIFdl
YkNvbnRleHQ6OldlYkNvbnRleHQoUHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCwgY29uc3QgU3Ry
aW5nJiBpbmplY3RlZEJ1bmRsZVBhCiAKIFdlYkNvbnRleHQ6On5XZWJDb250ZXh0KCkKIHsKKyAg
ICBpZiAobV9wcm9jZXNzICYmIG1fcHJvY2Vzcy0+aXNWYWxpZCgpKQorICAgICAgICBtX3Byb2Nl
c3MtPmNvbm5lY3Rpb24oKS0+cmVtb3ZlUXVldWVDbGllbnQodGhpcyk7CisKICAgICBBU1NFUlQo
Y29udGV4dHMoKS5maW5kKHRoaXMpICE9IG5vdEZvdW5kKTsKICAgICBjb250ZXh0cygpLnJlbW92
ZShjb250ZXh0cygpLmZpbmQodGhpcykpOwogCkBAIC0zNTQsNiArMzU4LDggQEAgdm9pZCBXZWJD
b250ZXh0Ojpwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKFdlYlByb2Nlc3NQcm94eSogcHJvY2Vz
cykKICAgICBBU1NFUlRfVU5VU0VEKHByb2Nlc3MsIHByb2Nlc3MgPT0gbV9wcm9jZXNzKTsKIAog
ICAgIG1fdmlzaXRlZExpbmtQcm92aWRlci5wcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKCk7CisK
KyAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+YWRkUXVldWVDbGllbnQodGhpcyk7CiAgICAg
CiAgICAgLy8gU29tZXRpbWVzIHRoZSBtZW1vcnlTYW1wbGVyIGdldHMgaW5pdGlhbGl6ZWQgYWZ0
ZXIgcHJvY2VzcyBpbml0aWFsaXphdGlvbiBoYXMgaGFwcGVuZWQgYnV0IGJlZm9yZSB0aGUgcHJv
Y2VzcyBoYXMgZmluaXNoZWQgbGF1bmNoaW5nCiAgICAgLy8gc28gY2hlY2sgaWYgaXQgbmVlZHMg
dG8gYmUgc3RhcnRlZCBoZXJlCkBAIC02MDQsMjAgKzYxMCwzOSBAQCB2b2lkIFdlYkNvbnRleHQ6
OmFkZFZpc2l0ZWRMaW5rSGFzaChMaW5rSGFzaCBsaW5rSGFzaCkKICAgICBtX3Zpc2l0ZWRMaW5r
UHJvdmlkZXIuYWRkVmlzaXRlZExpbmsobGlua0hhc2gpOwogfQogCi12b2lkIFdlYkNvbnRleHQ6
OmdldFBsdWdpbnMoYm9vbCByZWZyZXNoLCBWZWN0b3I8UGx1Z2luSW5mbz4mIHBsdWdpbkluZm9z
KQordm9pZCBXZWJDb250ZXh0OjpzZW5kRGlkR2V0UGx1Z2lucyh1aW50NjRfdCByZXF1ZXN0SUQs
IGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZvPiYgcGx1Z2luSW5mb3MpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKworICAgIFZlY3RvcjxQbHVnaW5JbmZvPiBwbHVnaW5zKHBsdWdpbklu
Zm9zKTsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAvLyBBZGQgYnVpbHQtaW4gUERGIGxhc3Qs
IHNvIHRoYXQgaXQncyBub3QgdXNlZCB3aGVuIGEgcmVhbCBwbHVnLWluIGlzIGluc3RhbGxlZC4K
KyAgICAvLyBOT1RFOiBUaGlzIGhhcyB0byBiZSBkb25lIG9uIHRoZSBtYWluIHRocmVhZCBhcyBp
dCBjYWxscyBsb2NhbGl6ZWRTdHJpbmcoKS4KKyAgICBpZiAoIW9taXRQREZTdXBwb3J0KCkpCisg
ICAgICAgIHBsdWdpbnMuYXBwZW5kKEJ1aWx0SW5QREZWaWV3OjpwbHVnaW5JbmZvKCkpOworI2Vu
ZGlmCisKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRpZEdldFBs
dWdpbnMocmVxdWVzdElELCBwbHVnaW5zKSwgMCk7Cit9CisKK3ZvaWQgV2ViQ29udGV4dDo6aGFu
ZGxlR2V0UGx1Z2lucyh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgcmVmcmVzaCkKIHsKICAgICBp
ZiAocmVmcmVzaCkKICAgICAgICAgbV9wbHVnaW5JbmZvU3RvcmUucmVmcmVzaCgpOwogCisgICAg
VmVjdG9yPFBsdWdpbkluZm8+IHBsdWdpbkluZm9zOworCiAgICAgVmVjdG9yPFBsdWdpbk1vZHVs
ZUluZm8+IHBsdWdpbnMgPSBtX3BsdWdpbkluZm9TdG9yZS5wbHVnaW5zKCk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBwbHVnaW5zLnNpemUoKTsgKytpKQogICAgICAgICBwbHVnaW5JbmZv
cy5hcHBlbmQocGx1Z2luc1tpXS5pbmZvKTsKIAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAvLyBB
ZGQgYnVpbHQtaW4gUERGIGxhc3QsIHNvIHRoYXQgaXQncyBub3QgdXNlZCB3aGVuIGEgcmVhbCBw
bHVnLWluIGlzIGluc3RhbGxlZC4KLSAgICBpZiAoIW9taXRQREZTdXBwb3J0KCkpCi0gICAgICAg
IHBsdWdpbkluZm9zLmFwcGVuZChCdWlsdEluUERGVmlldzo6cGx1Z2luSW5mbygpKTsKLSNlbmRp
ZgorICAgIFJ1bkxvb3A6Om1haW4oKS0+ZGlzcGF0Y2goYmluZCgmV2ViQ29udGV4dDo6c2VuZERp
ZEdldFBsdWdpbnMsIHRoaXMsIHJlcXVlc3RJRCwgcGx1Z2luSW5mb3MpKTsKK30KKwordm9pZCBX
ZWJDb250ZXh0OjpnZXRQbHVnaW5zKENvcmVJUEM6OkNvbm5lY3Rpb24qLCB1aW50NjRfdCByZXF1
ZXN0SUQsIGJvb2wgcmVmcmVzaCkKK3sKKyAgICBtX3BsdWdpbldvcmtRdWV1ZS5kaXNwYXRjaChi
aW5kKCZXZWJDb250ZXh0OjpoYW5kbGVHZXRQbHVnaW5zLCB0aGlzLCByZXF1ZXN0SUQsIHJlZnJl
c2gpKTsKIH0KIAogdm9pZCBXZWJDb250ZXh0OjpnZXRQbHVnaW5QYXRoKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBTdHJpbmcmIHBsdWdpblBhdGgsIGJv
b2wmIGJsb2NrZWQpCkBAIC05MjksNCArOTU0LDEyIEBAIHZvaWQgV2ViQ29udGV4dDo6Z2FyYmFn
ZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0cygpCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzOjpHYXJiYWdlQ29sbGVjdEphdmFTY3JpcHRPYmplY3RzKCkpOwogfQog
Cit2b2lkIFdlYkNvbnRleHQ6OmRpZFJlY2VpdmVNZXNzYWdlT25Db25uZWN0aW9uV29ya1F1ZXVl
KENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNz
YWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzLCBib29sJiBkaWRIYW5k
bGVNZXNzYWdlKQoreworICAgIGlmIChtZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNz
V2ViQ29udGV4dD4oKSkgeworICAgICAgICBkaWRSZWNlaXZlV2ViQ29udGV4dE1lc3NhZ2VPbkNv
bm5lY3Rpb25Xb3JrUXVldWUoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1bWVudHMsIGRpZEhh
bmRsZU1lc3NhZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCmluZGV4IGY5NGRjNGEu
LjUwYWE1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaApAQCAtNjYsNyAr
NjYsNyBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKICAgICAKIHR5cGVk
ZWYgR2VuZXJpY0NhbGxiYWNrPFdLRGljdGlvbmFyeVJlZj4gRGljdGlvbmFyeUNhbGxiYWNrOwog
Ci1jbGFzcyBXZWJDb250ZXh0IDogcHVibGljIEFQSU9iamVjdCB7CitjbGFzcyBXZWJDb250ZXh0
IDogcHVibGljIEFQSU9iamVjdCwgcHJpdmF0ZSBDb3JlSVBDOjpDb25uZWN0aW9uOjpRdWV1ZUNs
aWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVDb250
ZXh0OwogCkBAIC0yMTYsNyArMjE2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFVwZGF0ZUhp
c3RvcnlUaXRsZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0
cmluZyYgdXJsLCB1aW50NjRfdCBmcmFtZUlEKTsKIAogICAgIC8vIFBsdWdpbnMKLSAgICB2b2lk
IGdldFBsdWdpbnMoYm9vbCByZWZyZXNoLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mKTsK
KyAgICB2b2lkIGdldFBsdWdpbnMoQ29yZUlQQzo6Q29ubmVjdGlvbiosIHVpbnQ2NF90IHJlcXVl
c3RJRCwgYm9vbCByZWZyZXNoKTsKICAgICB2b2lkIGdldFBsdWdpblBhdGgoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIFN0cmluZyYgcGx1Z2luUGF0aCwg
Ym9vbCYgYmxvY2tlZCk7CiAjaWYgIUVOQUJMRShQTFVHSU5fUFJPQ0VTUykKICAgICB2b2lkIGRp
ZEdldFNpdGVzV2l0aFBsdWdpbkRhdGEoY29uc3QgVmVjdG9yPFN0cmluZz4mIHNpdGVzLCB1aW50
NjRfdCBjYWxsYmFja0lEKTsKQEAgLTI0NSw2ICsyNDUsOSBAQCBwcml2YXRlOgogICAgIC8vIElt
cGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJDb250ZXh0TWVzc2FnZVJlY2VpdmVyLmNwcAogICAg
IHZvaWQgZGlkUmVjZWl2ZVdlYkNvbnRleHRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBD
b3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVN5bmNXZWJDb250ZXh0TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29y
ZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBPd25QdHI8Q29yZUlQ
Qzo6QXJndW1lbnRFbmNvZGVyPiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVdlYkNvbnRleHRNZXNz
YWdlT25Db25uZWN0aW9uV29ya1F1ZXVlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpN
ZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIGJvb2wmIGRpZEhhbmRsZU1lc3Nh
Z2UpOworCisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlT25Db25uZWN0aW9uV29y
a1F1ZXVlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6
OkFyZ3VtZW50RGVjb2RlciosIGJvb2wmIGRpZEhhbmRsZU1lc3NhZ2UpIE9WRVJSSURFOwogCiAg
ICAgc3RhdGljIHZvaWQgbGFuZ3VhZ2VDaGFuZ2VkKHZvaWQqIGNvbnRleHQpOwogICAgIHZvaWQg
bGFuZ3VhZ2VDaGFuZ2VkKCk7CkBAIC0yNTcsNiArMjYwLDkgQEAgcHJpdmF0ZToKICAgICBTdHJp
bmcgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAgICAgU3RyaW5nIHBsYXRmb3JtRGVm
YXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OwogCisgICAgdm9pZCBoYW5kbGVHZXRQ
bHVnaW5zKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCByZWZyZXNoKTsKKyAgICB2b2lkIHNlbmRE
aWRHZXRQbHVnaW5zKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBs
dWdpbkluZm8+Jik7CisKICAgICBQcm9jZXNzTW9kZWwgbV9wcm9jZXNzTW9kZWw7CiAgICAgCiAg
ICAgLy8gRklYTUU6IEluIHRoZSBmdXR1cmUsIHRoaXMgc2hvdWxkIGJlIG9uZSBvciBtb3JlIFdl
YlByb2Nlc3NQcm94aWVzLgpAQCAtMzIyLDYgKzMyOCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X3Byb2Nlc3NUZXJtaW5hdGlvbkVuYWJsZWQ7CiAgICAgCiAgICAgSGFzaE1hcDx1aW50NjRfdCwg
UmVmUHRyPERpY3Rpb25hcnlDYWxsYmFjaz4gPiBtX2RpY3Rpb25hcnlDYWxsYmFja3M7CisKKyAg
ICBXb3JrUXVldWUgbV9wbHVnaW5Xb3JrUXVldWU7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBV
PiBpbmxpbmUgYm9vbCBXZWJDb250ZXh0OjpzZW5kVG9BbGxQcm9jZXNzZXMoY29uc3QgVSYgbWVz
c2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0Lm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMu
aW4KaW5kZXggYTEzOTdmMC4uOTU1MDE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4KQEAgLTMyLDcgKzMyLDcgQEAgbWVzc2FnZXMgLT4g
V2ViQ29udGV4dCB7CiAgICAgQWRkVmlzaXRlZExpbmtIYXNoKHVpbnQ2NF90IGxpbmtIYXNoKQog
ICAgIAogICAgICMgUGx1Z2luIG1lc3NhZ2VzLgotICAgIEdldFBsdWdpbnMoYm9vbCByZWZyZXNo
KSAtPiAoVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IHBsdWdpbnMpCisgICAgR2V0UGx1Z2lu
cyh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgcmVmcmVzaCkgRGlzcGF0Y2hPbkNvbm5lY3Rpb25R
dWV1ZQogICAgIEdldFBsdWdpblBhdGgoV1RGOjpTdHJpbmcgbWltZVR5cGUsIFdURjo6U3RyaW5n
IHVybFN0cmluZykgLT4gKFdURjo6U3RyaW5nIHBsdWdpblBhdGgsIGJvb2wgYmxvY2tlZCkKIAog
I2lmICFFTkFCTEUoUExVR0lOX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2FlMDBhZi4uYThkNjY4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MjAzLDcgKzIwMyw2IEBACiAJCTFBQUYwQzRCMTJCMTYzMzQwMDhFNDlFMiAvKiBBcmd1bWVudENv
ZGVyc0NGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBQUYwQzQ5MTJCMTYzMzQwMDhFNDlFMiAvKiBBcmd1bWVudENvZGVyc0NGLmNwcCAqLzsgfTsK
IAkJMUFBRjI2MzgxNDY4N0MzOTAwNEExRThBIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFB
RjI2MzYxNDY4N0MzOTAwNEExRThBIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1t
ICovOyB9OwogCQkxQUFGMjYzOTE0Njg3QzM5MDA0QTFFOEEgLyogVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBQUYyNjM3MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS5oICovOyB9OwotCQkxQUI0MkU4NzE0QkJCQkIyMDA0MjcyRjcgLyogS2V5Y2hhaW5TaGlt
UmVzcG9uc2VNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBQjQyRTg2MTRCQkJCQjIwMDQyNzJGNyAvKiBLZXljaGFpblNoaW1SZXNwb25zZU1hcC5o
ICovOyB9OwogCQkxQUI3RDRDQTEyODhBQUE3MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCN0Q0QzgxMjg4
QUFBNzAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHkuaCAqLzsgfTsKIAkJMUFCN0Q0Q0IxMjg4QUFB
NzAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCN0Q0QzkxMjg4QUFBNzAwQ0ZEMDhDIC8qIERvd25sb2Fk
UHJveHkuY3BwICovOyB9OwogCQkxQUI3RDYxOTEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQUI3RDYxNzEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CkBAIC0zMjcsNiArMzI2LDcgQEAKIAkJMzdDNEU5RjYx
MzFDNkU3RTAwMjlCRDVBIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjM5NkVBNTUxMkUwRUQyRDAwRjRGRUI3IC8qIGNvbmZpZy5oICov
OyB9OwogCQkzN0Y2MjNCODEyQTU3QjYyMDBFM0ZERjYgLyogV0tGaW5kT3B0aW9ucy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdGNjIzQjcxMkE1N0I2
MjAwRTNGREY2IC8qIFdLRmluZE9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkzN0Y5MERFMzEzNzY1NjBFMDA1MUNGNjggLyogSFRUUENv
b2tpZUFjY2VwdFBvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjYzODk1NEYxMzNCRUYzODAwODk0MUQ1IC8qIEhUVFBDb29raWVBY2NlcHRQb2xp
Y3kuaCAqLzsgfTsKKwkJNEY2MDE0MzIxNTVDNUFBMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9u
c2VNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRG
NjAxNDMwMTU1QzVBMzIwMDFGQkRFMCAvKiBCbG9ja2luZ1Jlc3BvbnNlTWFwLmggKi87IH07CiAJ
CTUxMDIxRTlDMTJCMTY3ODgwMDVDMDMzQyAvKiBXZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDIxRTlCMTJC
MTY3ODgwMDVDMDMzQyAvKiBXZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbSAqLzsgfTsKIAkJNTEw
RkJCOUExMjg4Qzk1RTAwQUZGREY0IC8qIFdlYkNvbnRleHRNZW51SXRlbURhdGEuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRkJCOTgxMjg4Qzk1
RTAwQUZGREY0IC8qIFdlYkNvbnRleHRNZW51SXRlbURhdGEuY3BwICovOyB9OwogCQk1MTBGQkI5
QjEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRkJCOTkxMjg4Qzk1RTAwQUZG
REY0IC8qIFdlYkNvbnRleHRNZW51SXRlbURhdGEuaCAqLzsgfTsKQEAgLTEyMTIsNyArMTIxMiw2
IEBACiAJCTFBQUYwQzQ5MTJCMTYzMzQwMDhFNDlFMiAvKiBBcmd1bWVudENvZGVyc0NGLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gQXJndW1lbnRDb2RlcnNDRi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQUYyNjM2MTQ2ODdDMzkwMDRBMUU4
QSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUFGMjYzNzE0Njg3QzM5MDA0QTFFOEEgLyog
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMUFCNDJFODYxNEJCQkJCMjAwNDI3MkY3IC8qIEtleWNoYWluU2hpbVJl
c3BvbnNlTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtleWNoYWluU2hp
bVJlc3BvbnNlTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjdENEM4MTI4
OEFBQTcwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERvd25sb2FkUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUFCN0Q0QzkxMjg4QUFBNzAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG93bmxvYWRQcm94eS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBQjdENUU5MTI4OEI4QzAwMENGRDA4QyAvKiBEb3dubG9hZFBy
b3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERvd25sb2FkUHJveHkubWVz
c2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzQ5LDYgKzEzNDgsNyBA
QAogCQkzNzk0ODQwNjE1MEM0Qjk2MDBFNTJDRTkgLyogV0tSZW5kZXJMYXllci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1JlbmRlckxheWVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzc5NDg0MDcxNTBDNEI5NjAwRTUyQ0U5IC8qIFdLUmVu
ZGVyTGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tSZW5kZXJMYXll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0Y2MjNCNzEyQTU3QjYyMDBFM0ZE
RjYgLyogV0tGaW5kT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
S0ZpbmRPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRGNjAxNDMwMTU1
QzVBMzIwMDFGQkRFMCAvKiBCbG9ja2luZ1Jlc3BvbnNlTWFwLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEJsb2NraW5nUmVzcG9uc2VNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTEwMDMxRjYxMzc5Q0FDQjAwQzhERkU0IC8qIFdlYlByb2Nlc3NTaGltLmR5
bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29t
cGlsZWQubWFjaC1vLmR5bGliIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gV2ViUHJvY2Vz
c1NoaW0uZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTUxMDIx
RTlCMTJCMTY3ODgwMDVDMDMzQyAvKiBXZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvbnRleHRNZW51Q2xpZW50TWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBGQkI5ODEyODhDOTVFMDBBRkZE
RjQgLyogV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTIyMjgsNyArMjIyOCw2IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1
MTJERjZENjEzOEMxODFBMDBBMjJGQzYgLyogS2V5Y2hhaW5JdGVtU2hpbU1ldGhvZHMuaCAqLywK
IAkJCQk1MTJERjZENzEzOEMxODFBMDBBMjJGQzYgLyogS2V5Y2hhaW5JdGVtU2hpbU1ldGhvZHMu
bW0gKi8sCi0JCQkJMUFCNDJFODYxNEJCQkJCMjAwNDI3MkY3IC8qIEtleWNoYWluU2hpbVJlc3Bv
bnNlTWFwLmggKi8sCiAJCQkJNTExRjhBN0QxMzhCNDZGRTAwQTk1RjQ0IC8qIFNlY0l0ZW1TaGlt
TWV0aG9kcy5oICovLAogCQkJCTUxMUY4QTdFMTM4QjQ2RkUwMEE5NUY0NCAvKiBTZWNJdGVtU2hp
bU1ldGhvZHMubW0gKi8sCiAJCQkJQkMzMDY1QzMxMjU5MkY4OTAwRTcxMjc4IC8qIFdlYlByb2Nl
c3NNYWMubW0gKi8sCkBAIC0yMzQ0LDYgKzIzNDMsNyBAQAogCQkJCTVENTE4NDU0MTNCQ0Y5Q0Mw
MEM3RkY0QSAvKiBBUElDbGllbnRUcmFpdHMuaCAqLywKIAkJCQlCNjM0MDNGODE0OTEwRDU3MDAx
MDcwQjUgLyogQVBJT2JqZWN0LmNwcCAqLywKIAkJCQlCQ0YwNEM4QzExRkY5QjdEMDBGODZBNTgg
LyogQVBJT2JqZWN0LmggKi8sCisJCQkJNEY2MDE0MzAxNTVDNUEzMjAwMUZCREUwIC8qIEJsb2Nr
aW5nUmVzcG9uc2VNYXAuaCAqLywKIAkJCQlCQzMwNjVGOTEyNTkzNDRFMDBFNzEyNzggLyogQ2Fj
aGVNb2RlbC5oICovLAogCQkJCTFBMkQ5NTZFMTI4NDg1NjQwMDFFQjk2MiAvKiBDaGlsZFByb2Nl
c3MuY3BwICovLAogCQkJCTFBMkQ5NTZEMTI4NDg1NjQwMDFFQjk2MiAvKiBDaGlsZFByb2Nlc3Mu
aCAqLywKQEAgLTM4ODksNiArMzg4OSw3IEBACiAJCQkJMUFFRkNDMTIxMUQwMUY5NjAwODIxOUQz
IC8qIFBsdWdpbkluZm9TdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzRDYxMDIxM0E3Q0My
QTAwRjk1RDRFIC8qIFBsdWdpbk1vZHVsZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDQz
OTc2MTI0RDAzNDgwMEZGQkZCNSAvKiBQbHVnaW5Qcm9jZXNzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0RjYwMTQzMjE1NUM1QUEyMDAxRkJERTAgLyogQmxvY2tpbmdSZXNwb25zZU1hcC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUEwRUM5MDYxMjRDMEFCODAwN0VGNEE1IC8qIFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTBFQzkwRjEyNEMwQUY1MDA3RUY0QTUg
LyogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTJCQjZEMTE0MTE3QjREMDAwRjM1RDQgLyogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8sCkBAIC00MTkzLDcgKzQxOTQsNiBAQAogCQkJCUJDODY5OUI3MTE2
QUFEQUEwMDJBOTI1QiAvKiBXS1ZpZXdJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkZB
NjE3OUYxMkYwQjk5RDAwMzNFMENBIC8qIFdLVmlld1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMkU2RThFMTE0MTk3MTUwMEE2M0IxRSAvKiBXb3JrUXVldWUuaCBpbiBIZWFkZXJzICov
LAotCQkJCTFBQjQyRTg3MTRCQkJCQjIwMDQyNzJGNyAvKiBLZXljaGFpblNoaW1SZXNwb25zZU1h
cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE3QkY5OTYxNEQwQTczRTAwQTVBMDY5IC8qIE5ldHNj
YXBlU2FuZGJveEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFMDkzNzgxNEZCMTI4
QzAwMTEzOEQ5IC8qIExheWVySG9zdGluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5
NkJEODVEMTUwMTlCQzMwMDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDY2MjJjZjYuLmMxNDc5
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQogCisjaW5jbHVkZSAiQmxvY2tpbmdS
ZXNwb25zZU1hcC5oIgogI2luY2x1ZGUgIlBsdWdpbkluZm9TdG9yZS5oIgogI2luY2x1ZGUgIldl
YkNvbnRleHRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIKQEAgLTM3
LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtUGFzdGVib2FyZC5oPgorI2luY2x1
ZGUgPHd0Zi9BdG9taWNzLmg+CiAKICNpZiBVU0UoQ0YpCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgpAQCAtMTAyLDYgKzEwNCwyMyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0
UGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdlYkNvcmU6OgogICAgIHBs
dWdpbnMgPSBtX2NhY2hlZFBsdWdpbnM7CiB9CiAKK3N0YXRpYyBCbG9ja2luZ1Jlc3BvbnNlTWFw
PFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiA+JiByZXNwb25zZU1hcCgpCit7CisgICAgQXRv
bWljYWxseUluaXRpYWxpemVkU3RhdGljKEJsb2NraW5nUmVzcG9uc2VNYXA8VmVjdG9yPFdlYkNv
cmU6OlBsdWdpbkluZm8+ID4mLCByZXNwb25zZU1hcCA9ICpuZXcgQmxvY2tpbmdSZXNwb25zZU1h
cDxWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gPik7CisgICAgcmV0dXJuIHJlc3BvbnNlTWFw
OworfQorCit2b2lkIGhhbmRsZURpZEdldFBsdWdpbnModWludDY0X3QgcmVxdWVzdElELCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mIHBsdWdpbnMpCit7CisgICAgcmVzcG9uc2VN
YXAoKS5kaWRSZWNlaXZlUmVzcG9uc2UocmVxdWVzdElELCBhZG9wdFB0cihuZXcgVmVjdG9yPFdl
YkNvcmU6OlBsdWdpbkluZm8+KHBsdWdpbnMpKSk7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBnZW5l
cmF0ZVJlcXVlc3RJRCgpCit7CisgICAgc3RhdGljIGludCB1bmlxdWVJRDsKKyAgICByZXR1cm4g
YXRvbWljSW5jcmVtZW50KCZ1bmlxdWVJRCk7Cit9CisKIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpwb3B1bGF0ZVBsdWdpbkNhY2hlKCkKIHsKICAgICBpZiAobV9wbHVnaW5DYWNoZUlzUG9w
dWxhdGVkKQpAQCAtMTA5LDEzICsxMjgsMTEgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnBvcHVsYXRlUGx1Z2luQ2FjaGUoKQogCiAgICAgQVNTRVJUKG1fY2FjaGVkUGx1Z2lucy5pc0Vt
cHR5KCkpOwogICAgIAotICAgIFZlY3RvcjxQbHVnaW5JbmZvPiBwbHVnaW5zOwotICAgIAogICAg
IC8vIEZJWE1FOiBTaG91bGQgd2UgZG8gc29tZXRoaW5nIGluIGNhc2Ugb2YgZXJyb3IgaGVyZT8K
LSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJDb250ZXh0OjpHZXRQbHVnaW5zKG1fc2hvdWxkUmVmcmVzaFBsdWdpbnMpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZXM6OldlYkNv
bnRleHQ6OkdldFBsdWdpbnM6OlJlcGx5KHBsdWdpbnMpLCAwKTsKKyAgICB1aW50NjRfdCByZXF1
ZXN0SUQgPSBnZW5lcmF0ZVJlcXVlc3RJRCgpOworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQ29udGV4dDo6R2V0UGx1Z2lucyhyZXF1ZXN0
SUQsIG1fc2hvdWxkUmVmcmVzaFBsdWdpbnMpLCAwKTsKIAotICAgIG1fY2FjaGVkUGx1Z2lucy5z
d2FwKHBsdWdpbnMpOworICAgIG1fY2FjaGVkUGx1Z2lucyA9ICpyZXNwb25zZU1hcCgpLndhaXRG
b3JSZXNwb25zZShyZXF1ZXN0SUQpOwogICAgIAogICAgIG1fc2hvdWxkUmVmcmVzaFBsdWdpbnMg
PSBmYWxzZTsKICAgICBtX3BsdWdpbkNhY2hlSXNQb3B1bGF0ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggMDg2ZmQwYS4uNDEyYTc1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC04NSw2ICs4NSw4IEBAIHByaXZhdGU6CiAgICAgVmVj
dG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+IG1fY2FjaGVkUGx1Z2luczsKIH07CiAKK3ZvaWQgaGFu
ZGxlRGlkR2V0UGx1Z2lucyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpQbHVnaW5JbmZvPiYpOworCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFVT
RShQTEFURk9STV9TVFJBVEVHSUVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggMjBkOTI2MC4uZDZlMmIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCkBAIC0xMDMxLDQgKzEwMzEsMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjpz
ZXRUZXh0Q2hlY2tlclN0YXRlKGNvbnN0IFRleHRDaGVja2VyU3RhdGUmIHRleHRDaGVja2VyU3Rh
dGUpCiAgICAgfQogfQogCit2b2lkIFdlYlByb2Nlc3M6OmRpZEdldFBsdWdpbnMoQ29yZUlQQzo6
Q29ubmVjdGlvbiosIHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBs
dWdpbkluZm8+JiBwbHVnaW5zKQoreworICAgIC8vIFBhc3MgdGhpcyB0byBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwLgorICAgIGhhbmRsZURpZEdldFBsdWdpbnMocmVxdWVzdElELCBwbHVnaW5z
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCmluZGV4IGVhZmUxZDkuLjkxOTE1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNz
LmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWEuaCIKICNpbmNsdWRlICJFdmVudERpc3BhdGNoZXIu
aCIKKyNpbmNsdWRlICJQbHVnaW5JbmZvU3RvcmUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUNhY2hl
c1RvQ2xlYXIuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU2hh
cmVkTWVtb3J5LmgiCkBAIC0yNDMsNiArMjQ0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJl
Y2VpdmVXZWJQcm9jZXNzTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVz
c2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKICAgICB2b2lkIGRpZFJlY2VpdmVX
ZWJQcm9jZXNzTWVzc2FnZU9uQ29ubmVjdGlvbldvcmtRdWV1ZShDb3JlSVBDOjpDb25uZWN0aW9u
KiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBib29sJiBk
aWRIYW5kbGVNZXNzYWdlKTsKIAorICAgIHZvaWQgZGlkR2V0UGx1Z2lucyhDb3JlSVBDOjpDb25u
ZWN0aW9uKiwgdWludDY0X3QgcmVxdWVzdElELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2lu
SW5mbz4mKTsKKwogICAgIFJlZlB0cjxXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M+IG1fY29ubmVj
dGlvbjsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlPiA+IG1fcGFnZU1h
cDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgppbmRleCAzYjZhMWY3Li5iN2JjNzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC01NCw2ICs1NCw4IEBAIG1lc3NhZ2VzIC0+
IFdlYlByb2Nlc3MgewogICAgIENsZWFyUGx1Z2luU2l0ZURhdGEoVmVjdG9yPFdURjo6U3RyaW5n
PiBwbHVnaW5QYXRocywgVmVjdG9yPFdURjo6U3RyaW5nPiBzaXRlcywgdWludDY0X3QgZmxhZ3Ms
IHVpbnQ2NF90IG1heEFnZUluU2Vjb25kcywgdWludDY0X3QgY2FsbGJhY2tJRCkKICNlbmRpZgog
CisgICAgRGlkR2V0UGx1Z2lucyh1aW50NjRfdCByZXF1ZXN0SUQsIFZlY3RvcjxXZWJDb3JlOjpQ
bHVnaW5JbmZvPiBwbHVnaW5zKSBEaXNwYXRjaE9uQ29ubmVjdGlvblF1ZXVlCisKICNpZiBFTkFC
TEUoUExVR0lOX1BST0NFU1MpCiAgICAgUGx1Z2luUHJvY2Vzc0NyYXNoZWQoU3RyaW5nIHBsdWdp
blByb2Nlc3MpIERpc3BhdGNoT25Db25uZWN0aW9uUXVldWUKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvS2V5Y2hhaW5JdGVtU2hpbU1ldGhvZHMubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9LZXljaGFpbkl0ZW1TaGltTWV0aG9kcy5t
bQppbmRleCA1ZjcxYWU0Li5mZjMwOTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL21hYy9LZXljaGFpbkl0ZW1TaGltTWV0aG9kcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL21hYy9LZXljaGFpbkl0ZW1TaGltTWV0aG9kcy5tbQpAQCAtMjgsNyArMjgs
NyBAQAogCiAjaWYgZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCiAKLSNpbXBvcnQg
IktleWNoYWluU2hpbVJlc3BvbnNlTWFwLmgiCisjaW1wb3J0ICJCbG9ja2luZ1Jlc3BvbnNlTWFw
LmgiCiAjaW1wb3J0ICJTZWNLZXljaGFpbkl0ZW1SZXF1ZXN0RGF0YS5oIgogI2ltcG9ydCAiU2Vj
S2V5Y2hhaW5JdGVtUmVzcG9uc2VEYXRhLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCkBAIC0x
NDEsOSArMTQxLDkgQEAgc3RhdGljIGJvb2wgd2ViRnJlZUtleWNoYWluSXRlbUNvbnRlbnQodm9p
ZCogZGF0YSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIEtleWNoYWluU2hpbVJlc3Bv
bnNlTWFwPFNlY0tleWNoYWluSXRlbVJlc3BvbnNlRGF0YT4mIHJlc3BvbnNlTWFwKCkKK3N0YXRp
YyBCbG9ja2luZ1Jlc3BvbnNlTWFwPFNlY0tleWNoYWluSXRlbVJlc3BvbnNlRGF0YT4mIHJlc3Bv
bnNlTWFwKCkKIHsKLSAgICBBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWMoS2V5Y2hhaW5TaGlt
UmVzcG9uc2VNYXA8U2VjS2V5Y2hhaW5JdGVtUmVzcG9uc2VEYXRhPiYsIHJlc3BvbnNlTWFwID0g
Km5ldyBLZXljaGFpblNoaW1SZXNwb25zZU1hcDxTZWNLZXljaGFpbkl0ZW1SZXNwb25zZURhdGE+
KTsKKyAgICBBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWMoQmxvY2tpbmdSZXNwb25zZU1hcDxT
ZWNLZXljaGFpbkl0ZW1SZXNwb25zZURhdGE+JiwgcmVzcG9uc2VNYXAgPSAqbmV3IEJsb2NraW5n
UmVzcG9uc2VNYXA8U2VjS2V5Y2hhaW5JdGVtUmVzcG9uc2VEYXRhPik7CiAgICAgcmV0dXJuIHJl
c3BvbnNlTWFwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21h
Yy9LZXljaGFpblNoaW1SZXNwb25zZU1hcC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9t
YWMvS2V5Y2hhaW5TaGltUmVzcG9uc2VNYXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYjRhNzhlNi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9L
ZXljaGFpblNoaW1SZXNwb25zZU1hcC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpZm5kZWYgS2V5Y2hhaW5TaGltUmVzcG9uc2VNYXBfaAotI2RlZmluZSBL
ZXljaGFpblNoaW1SZXNwb25zZU1hcF9oCi0KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1j
bGFzcyBLZXljaGFpblNoaW1SZXNwb25zZU1hcCB7Ci1wdWJsaWM6Ci0gICAgUGFzc093blB0cjxU
PiB3YWl0Rm9yUmVzcG9uc2UodWludDY0X3QgcmVxdWVzdElEKQotICAgIHsKLSAgICAgICAgd2hp
bGUgKHRydWUpIHsKLSAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKLQot
ICAgICAgICAgICAgaWYgKE93blB0cjxUPiByZXNwb25zZSA9IG1fcmVzcG9uc2VzLnRha2UocmVx
dWVzdElEKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UucmVsZWFzZSgpOwotCi0g
ICAgICAgICAgICBtX2NvbmRpdGlvbi53YWl0KG1fbXV0ZXgpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
dWludDY0X3QgcmVxdWVzdElELCBQYXNzT3duUHRyPFQ+IHJlc3BvbnNlKQotICAgIHsKLSAgICAg
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwotICAgICAgICBBU1NFUlQoIW1fcmVzcG9u
c2VzLmNvbnRhaW5zKHJlcXVlc3RJRCkpOwotCi0gICAgICAgIG1fcmVzcG9uc2VzLnNldChyZXF1
ZXN0SUQsIHJlc3BvbnNlKTsKLSAgICAgICAgbV9jb25kaXRpb24uc2lnbmFsKCk7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIE11dGV4IG1fbXV0ZXg7Ci0gICAgVGhyZWFkQ29uZGl0aW9uIG1fY29u
ZGl0aW9uOwotCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgT3duUHRyPFQ+ID4gbV9yZXNwb25zZXM7
Ci19OwotCi0KLQotI2VuZGlmIC8vIEtleWNoYWluU2hpbVJlc3BvbnNlTWFwX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltTWV0aG9kcy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltTWV0aG9kcy5tbQppbmRl
eCA0NjdjM2UwLi5jZmUzM2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L21hYy9TZWNJdGVtU2hpbU1ldGhvZHMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9tYWMvU2VjSXRlbVNoaW1NZXRob2RzLm1tCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiAhZGVm
aW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCiAKLSNpbXBvcnQgIktleWNoYWluU2hpbVJl
c3BvbnNlTWFwLmgiCisjaW1wb3J0ICJCbG9ja2luZ1Jlc3BvbnNlTWFwLmgiCiAjaW1wb3J0ICJT
ZWNJdGVtUmVxdWVzdERhdGEuaCIKICNpbXBvcnQgIlNlY0l0ZW1SZXNwb25zZURhdGEuaCIKICNp
bXBvcnQgIldlYlByb2Nlc3MuaCIKQEAgLTM5LDkgKzM5LDkgQEAKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLXN0YXRpYyBLZXljaGFpblNoaW1SZXNwb25zZU1hcDxTZWNJdGVtUmVzcG9uc2VEYXRh
PiYgcmVzcG9uc2VNYXAoKQorc3RhdGljIEJsb2NraW5nUmVzcG9uc2VNYXA8U2VjSXRlbVJlc3Bv
bnNlRGF0YT4mIHJlc3BvbnNlTWFwKCkKIHsKLSAgICBBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0
aWMoS2V5Y2hhaW5TaGltUmVzcG9uc2VNYXA8U2VjSXRlbVJlc3BvbnNlRGF0YT4mLCByZXNwb25z
ZU1hcCA9ICpuZXcgS2V5Y2hhaW5TaGltUmVzcG9uc2VNYXA8U2VjSXRlbVJlc3BvbnNlRGF0YT4p
OworICAgIEF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpYyhCbG9ja2luZ1Jlc3BvbnNlTWFwPFNl
Y0l0ZW1SZXNwb25zZURhdGE+JiwgcmVzcG9uc2VNYXAgPSAqbmV3IEJsb2NraW5nUmVzcG9uc2VN
YXA8U2VjSXRlbVJlc3BvbnNlRGF0YT4pOwogICAgIHJldHVybiByZXNwb25zZU1hcDsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>