<?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>100710</bug_id>
          
          <creation_ts>2012-10-29 16:22:44 -0700</creation_ts>
          <short_desc>ENABLE(NEW_XML) isn&apos;t used by anyone and no one is actively working on it</short_desc>
          <delta_ts>2013-01-22 11:16:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>107522</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>buildbot</cc>
    
    <cc>eric</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mifenton</cc>
    
    <cc>mjs</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rniwa</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>753844</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-29 16:22:44 -0700</bug_when>
    <thetext>ENABLE(NEW_XML) isn&apos;t used by anyone and no one is actively working on it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753846</commentid>
    <comment_count>1</comment_count>
      <attachid>171333</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-29 16:25:03 -0700</bug_when>
    <thetext>Created attachment 171333
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754051</commentid>
    <comment_count>2</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2012-10-30 01:24:40 -0700</bug_when>
    <thetext>Last time we discussed this on webkit-dev, the conclusion was:

&quot;There&apos;s no urgency in removing it.  If you&apos;re serious about working on
it, perhaps we should keep it around for another six months.&quot;

&lt;http://lists.webkit.org/pipermail/webkit-dev/2012-August/022088.html&gt;

Has something changed to make it more urgent to remove this code faster?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754447</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-30 09:40:03 -0700</bug_when>
    <thetext>Oh, I didn&apos;t realize that was the conclusion of the thread.  I&apos;m happy to wait until the end of February to remove this code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754461</commentid>
    <comment_count>4</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2012-10-30 09:57:12 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Oh, I didn&apos;t realize that was the conclusion of the thread.  I&apos;m happy to wait until the end of February to remove this code.

I&apos;d assumed it was your conclusion and did not comment further because it seemed like a fine approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810028</commentid>
    <comment_count>5</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2013-01-17 18:00:49 -0800</bug_when>
    <thetext>I&apos;m fine with doing this now and not waiting til February.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810029</commentid>
    <comment_count>6</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2013-01-17 18:01:09 -0800</bug_when>
    <thetext>Reopening based on previous comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810270</commentid>
    <comment_count>7</comment_count>
      <attachid>171333</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-17 22:55:14 -0800</bug_when>
    <thetext>Comment on attachment 171333
Patch

Wow.  So much code.  This is obviously only the added files, and none of the abstractions which make the HTML parser so ugly. ;(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810286</commentid>
    <comment_count>8</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2013-01-17 23:20:09 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 171333 [details])
&gt; Wow.  So much code.  This is obviously only the added files, and none of the abstractions which make the HTML parser so ugly. ;(

Note that a number of these abstractions are used by WebVTT too, so let&apos;s not be too hasty in getting rid of them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810287</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-17 23:25:35 -0800</bug_when>
    <thetext>&gt; Note that a number of these abstractions are used by WebVTT too, so let&apos;s not be too hasty in getting rid of them.

Yes, we&apos;ll need to refactor the VTT parser a bit as we continue to untangle things.  The good news is that the VTT parser doesn&apos;t really require all this machinery.  We just used it because it was convenient at the time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812666</commentid>
    <comment_count>10</comment_count>
      <attachid>183901</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-21 23:55:33 -0800</bug_when>
    <thetext>Created attachment 183901
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812672</commentid>
    <comment_count>11</comment_count>
      <attachid>183901</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-21 23:59:00 -0800</bug_when>
    <thetext>Comment on attachment 183901
Patch for landing

Attachment 183901 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16031463</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812683</commentid>
    <comment_count>12</comment_count>
      <attachid>183901</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-01-22 00:06:46 -0800</bug_when>
    <thetext>Comment on attachment 183901
Patch for landing

Attachment 183901 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/16036443</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812685</commentid>
    <comment_count>13</comment_count>
      <attachid>183906</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-22 00:09:04 -0800</bug_when>
    <thetext>Created attachment 183906
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812739</commentid>
    <comment_count>14</comment_count>
      <attachid>183906</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-22 00:58:36 -0800</bug_when>
    <thetext>Comment on attachment 183906
Patch for landing

Rejecting attachment 183906 from commit-queue.

New failing tests:
fast/forms/formmethod-attribute-input-html.html
Full output: http://queues.webkit.org/results/16045425</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812761</commentid>
    <comment_count>15</comment_count>
      <attachid>183906</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-22 01:17:49 -0800</bug_when>
    <thetext>Comment on attachment 183906
Patch for landing

Clearing flags on attachment: 183906

Committed r140399: &lt;http://trac.webkit.org/changeset/140399&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812762</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-22 01:17:54 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812876</commentid>
    <comment_count>17</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-01-22 03:39:00 -0800</bug_when>
    <thetext>r140399: &lt;http://trac.webkit.org/changeset/140399&gt; broke mac builds (depending on the environment set up on the bot).  See:
http://build.webkit.org/builders/Apple%20Lion%20Debug%20%28Build%29/builds/10816

The breakage is due to a change in the path for finding CharacterReferenceParserInlines.h in the Xcode project file.  The entry for CharacterReferenceParserInlines.h  was removed and readied with a different path that cause the breakage.  I&apos;m now doing a local build to verify the fix (i.e. to restore the path before the change in  r140399).  Once verified, I&apos;ll land it to green the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812910</commentid>
    <comment_count>18</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-01-22 04:13:48 -0800</bug_when>
    <thetext>Build breakage fix landed in r140410: &lt;http://trac.webkit.org/changeset/140410&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813098</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-22 09:40:46 -0800</bug_when>
    <thetext>Sorry about the breakage.  I must have messed up the xcodeproj file when I was trying to remove these files.  Thanks for fixing my mess...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813243</commentid>
    <comment_count>20</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-22 11:16:02 -0800</bug_when>
    <thetext>Thank you Mark.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171333</attachid>
            <date>2012-10-29 16:25:03 -0700</date>
            <delta_ts>2013-01-21 23:55:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100710-20121029162330.patch</filename>
            <type>text/plain</type>
            <size>118702</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWEzYWI0N2UxMjk0YzM3
ZDA1NjJjNTQxNzJkNGRjZmFkZjgyMjJjMy4uNTRkMzg2ZGE4NzBkMDNmYzI2YjRiNjY4Y2RmNzg5
ZGUzZDZiNDIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTEwLTI5ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRU5BQkxFKE5FV19YTUwpIGlz
bid0IHVzZWQgYnkgYW55b25lIGFuZCBubyBvbmUgaXMgYWN0aXZlbHkgd29ya2luZyBvbiBpdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNzEwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXMgZGlzY3Vz
c2VkIG9uIHdlYmtpdC1kZXYKKyAgICAgICAgPGh0dHA6Ly9saXN0cy53ZWJraXQub3JnL3BpcGVy
bWFpbC93ZWJraXQtZGV2LzIwMTItQXVndXN0LzAyMjEwMy5odG1sPiwKKyAgICAgICAgRU5BQkxF
KE5FV19YTUwpIGlzbid0IHVzZWQgYnkgYW55b25lIGFuZCBubyBvbmUgaXMgYWN0aXZlbHkgd29y
a2luZyBvbgorICAgICAgICBpdC4gV2Ugc2hvdWxkIHJlbW92ZSBpdCBmcm9tIHRoZSBjb2RlIGJh
c2UgZm9yIHRoZSB0aW1lIGJlaW5nLiBJZiBmb2xrcworICAgICAgICB3YW50IHRvIHdvcmsgb24g
aXQgYWdhaW4sIHdlIGNhbiByZXN0b3JlIGl0IGZyb20gU1ZOIGhpc3RvcnkuCisKKyAgICAgICAg
T24gdGhlIHRocmVhZCwgdGhlcmUgd2VyZSBzb21lIHBlb3BsZSB3aG8gYXNrZWQgdGhhdCB3ZSBr
ZWVwIHRoZSBjb2RlCisgICAgICAgIGFyb3VuZCBmb3IgYSBiaXQgbG9uZ2VyLiBHaXZlbiB0aGF0
IGl0J3MgYmVlbiBhbm90aGVyIHR3byBtb250aHMgYW5kIG5vCisgICAgICAgIG9uZSBoYXMgc3Rh
cnRlZCB3b3JraW5nIG9uIGl0IGFnYWluLCBpdCBzZWVtcyBsaWtlbHkgdGhhdCBpdCB3aWxsIGJl
IGEKKyAgICAgICAgbnVtYmVyIG9mIG1vbnRocyBiZWZvcmUgYW55b25lIHdvcmtzIG9uIHRoaXMg
Y29kZSBhZ2Fpbi4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICog
VGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6Y3JlYXRlUGFyc2VyKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRGcmFnbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50OjpwYXJzZVhNTCk6Cisg
ICAgICAgICogeG1sL3BhcnNlci9OZXdYTUxEb2N1bWVudFBhcnNlci5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogeG1sL3BhcnNlci9OZXdYTUxEb2N1bWVudFBhcnNlci5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHhtbC9wYXJzZXIvWE1MQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VyLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNlci5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MVG9rZW4uaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB4bWwvcGFyc2VyL1hNTFRva2VuaXplci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogeG1s
L3BhcnNlci9YTUxUb2tlbml6ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiB4bWwvcGFyc2VyL1hN
TFRyZWVCdWlsZGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTFRyZWVC
dWlsZGVyLmg6IFJlbW92ZWQuCisKIDIwMTItMTAtMjkgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFw
cGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTI1OTI3MTY+IFJFR1JFU1NJT04g
KHIxMzI1NDUpOiBXaXRoIGZ1bGwtcGFnZSBhY2NlbGVyYXRlZCBkcmF3aW5nLCBhCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0NoYW5nZUxvZwppbmRleCAxMTU4MGY0NmI0MDUyMDQ1YjQ4ZGRiNmNhNTU5OTNi
MGQ4NmRkMDRlLi41ZjljMGVhZGY2NGUwZDlkN2E0MzEyOGRjZDVhOTgwYzJhODA4YWEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0xMC0yOSAg
QWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIEVOQUJMRShORVdfWE1M
KSBpc24ndCB1c2VkIGJ5IGFueW9uZSBhbmQgbm8gb25lIGlzIGFjdGl2ZWx5IHdvcmtpbmcgb24g
aXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDcx
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvQWJvdXREYXRhRW5hYmxlRmVhdHVyZXMuaW46CisKIDIwMTItMTAtMjkgIFJv
YiBCdWlzICA8cmJ1aXNAcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gU2ltcGxpZnkg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyOjppbnN0YW5jZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KaW5kZXggYjBiZGQyZWJhYjczYmE5ZmIyNjEyOTM1MTkyY2IzZjU0OTIzNzAz
Yi4uZjkxZTY1YjUwY2M5NjMwOGNhODM0ZmIxMTk2NDEzM2M2MWZiOTA4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCkBAIC01ODI2LDIwICs1ODI2LDExIEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaCBcCiAJ
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbml6ZXJCYXNlLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5pemVySW5saW5lTWV0aG9kcy5oIFwKLQlT
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL05ld1hNTERvY3VtZW50UGFyc2VyLmNwcCBcCi0JU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9OZXdYTUxEb2N1bWVudFBhcnNlci5oIFwKLQlTb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNlci5jcHAgXAotCVNv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VyLmggXAog
CVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmggXAogCVNvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlclNjb3BlLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlclNjb3BlLmggXAotCVNvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MVG9rZW5pemVyLmNwcCBcCi0JU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9YTUxUb2tlbml6ZXIuaCBcCi0JU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tl
bi5oIFwKLQlTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRyZWVCdWlsZGVyLmNwcCBcCi0J
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUcmVlQnVpbGRlci5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS94bWwvRE9NUGFyc2VyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUveG1sL0RPTVBhcnNlci5o
IFwKIAlTb3VyY2UvV2ViQ29yZS94bWwvTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmNwcCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQppbmRleCA0MDA0ZDFjOWU5NTBhZDM1Y2I2ZTkyNWI4M2I4ZWRmZjRiZWRiZGQ1Li5kNjI0
NDQ4YzdmMmYzZDQ4YTE4NTg1NzhlYWNhNTZhYTc2ODViNWU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTEy
NzUsMTEgKzEyNzUsNyBAQCBTT1VSQ0VTICs9IFwKICAgICB4bWwvWFBhdGhVdGlsLmNwcCBcCiAg
ICAgeG1sL1hQYXRoVmFsdWUuY3BwIFwKICAgICB4bWwvWFBhdGhWYXJpYWJsZVJlZmVyZW5jZS5j
cHAgXAotICAgIHhtbC9wYXJzZXIvTmV3WE1MRG9jdW1lbnRQYXJzZXIuY3BwIFwKLSAgICB4bWwv
cGFyc2VyL1hNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNlci5jcHAgXAogICAgIHhtbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXIuY3BwIFwKLSAgICB4bWwvcGFyc2VyL1hNTFRva2VuaXplci5jcHAg
XAotICAgIHhtbC9wYXJzZXIvWE1MVHJlZUJ1aWxkZXIuY3BwCiAKIEhFQURFUlMgKz0gXAogICAg
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCA4OTBjMGI4ZDk5YzRkMWFkYWE3YzQ5NGM0NjYwMGYyNTFjZGRkMTkwLi4zMzI2YzVi
MThiYjdjMjg2N2JlOWIwNjkzMGNiMDYwZmRhMTNhNWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0z
Njg4LDIxICszNjg4LDEyIEBACiAgICAgICAgICAgICAneG1sL3BhcnNlci9NYXJrdXBUb2tlbkJh
c2UuaCcsCiAgICAgICAgICAgICAneG1sL3BhcnNlci9NYXJrdXBUb2tlbml6ZXJCYXNlLmgnLAog
ICAgICAgICAgICAgJ3htbC9wYXJzZXIvTWFya3VwVG9rZW5pemVySW5saW5lTWV0aG9kcy5oJywK
LSAgICAgICAgICAgICd4bWwvcGFyc2VyL05ld1hNTERvY3VtZW50UGFyc2VyLmNwcCcsCi0gICAg
ICAgICAgICAneG1sL3BhcnNlci9OZXdYTUxEb2N1bWVudFBhcnNlci5oJywKLSAgICAgICAgICAg
ICd4bWwvcGFyc2VyL1hNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNlci5jcHAnLAotICAgICAgICAg
ICAgJ3htbC9wYXJzZXIvWE1MQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VyLmgnLAogICAgICAgICAg
ICAgJ3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwJywKICAgICAgICAgICAgICd4bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmgnLAogICAgICAgICAgICAgJ3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCcsCiAgICAgICAgICAgICAneG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlclF0LmNwcCcsCiAgICAgICAgICAgICAneG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlclNjb3BlLmNwcCcsCiAgICAgICAgICAgICAneG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlclNjb3BlLmgnLAotICAgICAgICAgICAgJ3htbC9wYXJzZXIvWE1MVG9rZW5pemVyLmNwcCcs
Ci0gICAgICAgICAgICAneG1sL3BhcnNlci9YTUxUb2tlbml6ZXIuaCcsCi0gICAgICAgICAgICAn
eG1sL3BhcnNlci9YTUxUb2tlbi5oJywKLSAgICAgICAgICAgICd4bWwvcGFyc2VyL1hNTFRyZWVC
dWlsZGVyLmNwcCcsCi0gICAgICAgICAgICAneG1sL3BhcnNlci9YTUxUcmVlQnVpbGRlci5oJywK
ICAgICAgICAgICAgICd4bWwvRE9NUGFyc2VyLmNwcCcsCiAgICAgICAgICAgICAneG1sL0RPTVBh
cnNlci5oJywKICAgICAgICAgICAgICd4bWwvTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmNwcCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGI1NjAx
OWJjODQwODBhYmZiYjUzMzk5M2JhMGU0NTg4MWNhOGNjYzQuLjMxZjExN2I1YzY5YTg0MWU1M2Q0
MzY5OTFmYzUwMTliODY5Nzc4NDYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCkBAIC00ODQzNCwxNCArNDg0MzQsNiBAQAogCQkJCQk+CiAJCQkJPC9G
aWxlPgogCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5ceG1sXHBhcnNlclxOZXdYTUxE
b2N1bWVudFBhcnNlci5jcHAiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUKLQkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlx4bWxccGFyc2VyXE5ld1hNTERvY3VtZW50UGFyc2VyLmgiCi0JCQkJ
CT4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlx4bWxccGFy
c2VyXFhNTERvY3VtZW50UGFyc2VyLmNwcCIKIAkJCQkJPgogCQkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KQEAgLTQ4NTU3LDIyICs0ODU0OSw2IEBACiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ceG1sXHBh
cnNlclxYTUxEb2N1bWVudFBhcnNlclNjb3BlLmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+Ci0JCQkJ
PEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlx4bWxccGFyc2VyXFhNTFRva2VuLmgiCi0JCQkJ
CT4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlx4bWxccGFy
c2VyXFhNTFRva2VuaXplci5oIgotCQkJCQk+Ci0JCQkJPC9GaWxlPgotCQkJCTxGaWxlCi0JCQkJ
CVJlbGF0aXZlUGF0aD0iLi5ceG1sXHBhcnNlclxYTUxUcmVlQnVpbGRlci5jcHAiCi0JCQkJCT4K
LQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlx4bWxccGFyc2Vy
XFhNTFRyZWVCdWlsZGVyLmgiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+CiAJCQk8L0ZpbHRlcj4KIAkJ
PC9GaWx0ZXI+CiAJCTxGaWx0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4MjJjMGVjZWFlY2UyZGI3YTYyY2RmNDgxZjdiYWNl
MTgxOWJiYjAyLi40ZWVhNWM4ZWEzYjVjMTlkZjgxODBkNmI5MzE3NmYxYzQzZWQwODM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC00NiwxMyArNDYsOCBAQAogCiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCQkw
MDAyMkU2OTEzQ0UxQkJBMDAyODJENUIgLyogQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5l
TWV0aG9kcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDAwMjJFNjgxM0NFMUJCQTAwMjgyRDVCIC8qIENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGlu
ZU1ldGhvZHMuaCAqLzsgfTsKLQkJMDAwMkVDNTgxM0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRva2Vu
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMDAyRUM1
NTEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9rZW4uaCAqLzsgfTsKLQkJMDAwMkVDNTkxM0MzRjY3
RDAwMDQwRDQ3IC8qIFhNTFRva2VuaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwMDAyRUM1NjEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9rZW5p
emVyLmNwcCAqLzsgfTsKLQkJMDAwMkVDNUExM0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRva2VuaXpl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDAwMkVD
NTcxM0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRva2VuaXplci5oICovOyB9OwogCQkwMDE0NjI4QTEw
M0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDAxNDYyODgxMDNDRDFERTAwMEIyMERCIC8q
IE9yaWdpbkFjY2Vzc0VudHJ5LmNwcCAqLzsgfTsKIAkJMDAxNDYyOEIxMDNDRDFERTAwMEIyMERC
IC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwMDE0NjI4OTEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50
cnkuaCAqLzsgfTsKLQkJMDAzNUVCQkIxM0YwNkZGMjAwQTU2MDg5IC8qIFhNTFRyZWVCdWlsZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMDM1RUJC
QTEzRjA2RkYyMDBBNTYwODkgLyogWE1MVHJlZUJ1aWxkZXIuaCAqLzsgfTsKLQkJMDAzNUVCQkUx
M0YwNzEzQzAwQTU2MDg5IC8qIFhNTFRyZWVCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwMzVFQkJEMTNGMDcxM0MwMEE1NjA4OSAvKiBY
TUxUcmVlQnVpbGRlci5jcHAgKi87IH07CiAJCTAwM0YxRkVBMTFFNkFCNDMwMDgyNThEOSAvKiBV
c2VyQ29udGVudFR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwMDNGMUZFOTExRTZBQjQzMDA4MjU4RDkgLyogVXNlckNvbnRlbnRUeXBlcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTAwQTYyOUMx
MTNEMEJFQzcwMDUwQUM1MiAvKiBNYXJrdXBUb2tlbkJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwQTYyOUMwMTNEMEJFQzcwMDUwQUM1MiAvKiBN
YXJrdXBUb2tlbkJhc2UuaCAqLzsgfTsKIAkJMDBCOTMxODcxM0JBOERCMzAwMzVBOTQ4IC8qIFhN
TERvY3VtZW50UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDAwQjkzMTgxMTNCQTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlci5j
cHAgKi87IH07CkBAIC02MiwxMCArNTcsNiBAQAogCQkwMEI5MzE4QzEzQkE4RENDMDAzNUE5NDgg
LyogWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDBCOTMxODYxM0JBODY3RjAwMzVBOTQ4IC8qIFhNTERvY3VtZW50
UGFyc2VyU2NvcGUuaCAqLzsgfTsKIAkJMDBDNjBFM0YxM0Q3NkQ3RTAwOTJBMjc1IC8qIE1hcmt1
cFRva2VuaXplcklubGluZU1ldGhvZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDAwQzYwRTNFMTNENzZEN0UwMDkyQTI3NSAvKiBNYXJrdXBUb2tlbml6
ZXJJbmxpbmVNZXRob2RzLmggKi87IH07CiAJCTAwQzYwRTQyMTNENzk3QUUwMDkyQTI3NSAvKiBN
YXJrdXBUb2tlbml6ZXJCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwMEM2MEU0MTEzRDc5N0FFMDA5MkEyNzUgLyogTWFya3VwVG9rZW5pemVyQmFz
ZS5oICovOyB9OwotCQkwMENBOTNCMjEzQzY2OTE2MDBGN0ZFOTUgLyogTmV3WE1MRG9jdW1lbnRQ
YXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAw
Q0E5M0IxMTNDNjY5MTYwMEY3RkU5NSAvKiBOZXdYTUxEb2N1bWVudFBhcnNlci5oICovOyB9Owot
CQkwMENBOTNCNTEzQzY2OTdDMDBGN0ZFOTUgLyogTmV3WE1MRG9jdW1lbnRQYXJzZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBDQTkzQjQxM0M2
Njk3QzAwRjdGRTk1IC8qIE5ld1hNTERvY3VtZW50UGFyc2VyLmNwcCAqLzsgfTsKLQkJMDBEMDQ2
NEExM0M0RDE0NTAwMzI2RkNDIC8qIFhNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMEQwNDY0ODEzQzRE
MTQ1MDAzMjZGQ0MgLyogWE1MQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VyLmNwcCAqLzsgfTsKLQkJ
MDBEMDQ2NEIxM0M0RDE0NTAwMzI2RkNDIC8qIFhNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBEMDQ2NDkx
M0M0RDE0NTAwMzI2RkNDIC8qIFhNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNlci5oICovOyB9Owog
CQkwMUQzQ0Y4MjE0QkQwQTMwMDBGRTk5NzAgLyogV2ViR0xDb250ZXh0R3JvdXAuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDFEM0NGN0MxNEJEMEEz
MDAwRkU5OTcwIC8qIFdlYkdMQ29udGV4dEdyb3VwLmNwcCAqLzsgfTsKIAkJMDFEM0NGODMxNEJE
MEEzMDAwRkU5OTcwIC8qIFdlYkdMQ29udGV4dEdyb3VwLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMUQzQ0Y3RDE0QkQwQTMwMDBGRTk5NzAgLyogV2Vi
R0xDb250ZXh0R3JvdXAuaCAqLzsgfTsKIAkJMDFEM0NGODQxNEJEMEEzMDAwRkU5OTcwIC8qIFdl
YkdMQ29udGV4dE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwMUQzQ0Y3RTE0QkQwQTMwMDBGRTk5NzAgLyogV2ViR0xDb250ZXh0T2JqZWN0
LmNwcCAqLzsgfTsKQEAgLTcwODksMTMgKzcwODAsOCBAQAogCiAvKiBCZWdpbiBQQlhGaWxlUmVm
ZXJlbmNlIHNlY3Rpb24gKi8KIAkJMDAwMjJFNjgxM0NFMUJCQTAwMjgyRDVCIC8qIENoYXJhY3Rl
clJlZmVyZW5jZVBhcnNlcklubGluZU1ldGhvZHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5lTWV0aG9kcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkwMDAyRUM1NTEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9r
ZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWE1MVG9rZW4uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDAwMkVDNTYxM0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRv
a2VuaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYTUxUb2tl
bml6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwMDAyRUM1NzEzQzNGNjdE
MDAwNDBENDcgLyogWE1MVG9rZW5pemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFhNTFRva2VuaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMDE0NjI4
ODEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT3JpZ2luQWNjZXNzRW50cnkuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwMDE0NjI4OTEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNj
ZXNzRW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3JpZ2luQWNjZXNz
RW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDAzNUVCQkExM0YwNkZGMjAw
QTU2MDg5IC8qIFhNTFRyZWVCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFhNTFRyZWVCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTAwMzVF
QkJEMTNGMDcxM0MwMEE1NjA4OSAvKiBYTUxUcmVlQnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYTUxUcmVlQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTAwM0YxRkU5MTFFNkFCNDMwMDgyNThEOSAvKiBVc2VyQ29udGVudFR5
cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJDb250ZW50VHlwZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDBBNjI5QzAxM0QwQkVDNzAwNTBBQzUy
IC8qIE1hcmt1cFRva2VuQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
YXJrdXBUb2tlbkJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDBCOTMxODEx
M0JBODY3RjAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhNTERvY3VtZW50UGFyc2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTcxMDUsMTAgKzcwOTEsNiBAQAogCQkwMEI5MzE4NjEzQkE4NjdG
MDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBYTUxEb2N1bWVudFBhcnNlclNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTAwQzYwRTNFMTNENzZEN0UwMDkyQTI3NSAvKiBNYXJrdXBUb2tlbml6ZXJJ
bmxpbmVNZXRob2RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmt1cFRv
a2VuaXplcklubGluZU1ldGhvZHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDBD
NjBFNDExM0Q3OTdBRTAwOTJBMjc1IC8qIE1hcmt1cFRva2VuaXplckJhc2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFya3VwVG9rZW5pemVyQmFzZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkwMENBOTNCMTEzQzY2OTE2MDBGN0ZFOTUgLyogTmV3WE1MRG9j
dW1lbnRQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV3WE1MRG9j
dW1lbnRQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDBDQTkzQjQxM0M2
Njk3QzAwRjdGRTk1IC8qIE5ld1hNTERvY3VtZW50UGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ld1hNTERvY3VtZW50UGFyc2VyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDBEMDQ2NDgxM0M0RDE0NTAwMzI2RkNDIC8qIFhNTENoYXJh
Y3RlclJlZmVyZW5jZVBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBYTUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkwMEQwNDY0OTEzQzREMTQ1MDAzMjZGQ0MgLyogWE1MQ2hhcmFjdGVyUmVmZXJl
bmNlUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhNTENoYXJhY3Rl
clJlZmVyZW5jZVBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMUQzQ0Y3
QzE0QkQwQTMwMDBGRTk5NzAgLyogV2ViR0xDb250ZXh0R3JvdXAuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViR0xDb250ZXh0R3JvdXAuY3BwOyBwYXRoID0gY2Fu
dmFzL1dlYkdMQ29udGV4dEdyb3VwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDFEM0NGN0QxNEJEMEEzMDAwRkU5OTcwIC8qIFdlYkdMQ29udGV4dEdyb3VwLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkdMQ29udGV4dEdyb3VwLmg7IHBhdGggPSBjYW52
YXMvV2ViR0xDb250ZXh0R3JvdXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDFE
M0NGN0UxNEJEMEEzMDAwRkU5OTcwIC8qIFdlYkdMQ29udGV4dE9iamVjdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJHTENvbnRleHRPYmplY3QuY3BwOyBwYXRo
ID0gY2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNDEzMiwyMCArMTQxMTQsMTEgQEAKIAkJCQkwMEE2MjlDMDEzRDBCRUM3MDA1MEFD
NTIgLyogTWFya3VwVG9rZW5CYXNlLmggKi8sCiAJCQkJMDBDNjBFNDExM0Q3OTdBRTAwOTJBMjc1
IC8qIE1hcmt1cFRva2VuaXplckJhc2UuaCAqLywKIAkJCQkwMEM2MEUzRTEzRDc2RDdFMDA5MkEy
NzUgLyogTWFya3VwVG9rZW5pemVySW5saW5lTWV0aG9kcy5oICovLAotCQkJCTAwQ0E5M0I0MTND
NjY5N0MwMEY3RkU5NSAvKiBOZXdYTUxEb2N1bWVudFBhcnNlci5jcHAgKi8sCi0JCQkJMDBDQTkz
QjExM0M2NjkxNjAwRjdGRTk1IC8qIE5ld1hNTERvY3VtZW50UGFyc2VyLmggKi8sCi0JCQkJMDBE
MDQ2NDgxM0M0RDE0NTAwMzI2RkNDIC8qIFhNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNlci5jcHAg
Ki8sCi0JCQkJMDBEMDQ2NDkxM0M0RDE0NTAwMzI2RkNDIC8qIFhNTENoYXJhY3RlclJlZmVyZW5j
ZVBhcnNlci5oICovLAogCQkJCTAwQjkzMTgxMTNCQTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVu
dFBhcnNlci5jcHAgKi8sCiAJCQkJMDBCOTMxODIxM0JBODY3RjAwMzVBOTQ4IC8qIFhNTERvY3Vt
ZW50UGFyc2VyLmggKi8sCiAJCQkJMDBCOTMxODMxM0JBODY3RjAwMzVBOTQ4IC8qIFhNTERvY3Vt
ZW50UGFyc2VyTGlieG1sMi5jcHAgKi8sCiAJCQkJMDBCOTMxODUxM0JBODY3RjAwMzVBOTQ4IC8q
IFhNTERvY3VtZW50UGFyc2VyU2NvcGUuY3BwICovLAogCQkJCTAwQjkzMTg2MTNCQTg2N0YwMDM1
QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlclNjb3BlLmggKi8sCi0JCQkJMDAwMkVDNTUxM0MzRjY3
RDAwMDQwRDQ3IC8qIFhNTFRva2VuLmggKi8sCi0JCQkJMDAwMkVDNTYxM0MzRjY3RDAwMDQwRDQ3
IC8qIFhNTFRva2VuaXplci5jcHAgKi8sCi0JCQkJMDAwMkVDNTcxM0MzRjY3RDAwMDQwRDQ3IC8q
IFhNTFRva2VuaXplci5oICovLAotCQkJCTAwMzVFQkJEMTNGMDcxM0MwMEE1NjA4OSAvKiBYTUxU
cmVlQnVpbGRlci5jcHAgKi8sCi0JCQkJMDAzNUVCQkExM0YwNkZGMjAwQTU2MDg5IC8qIFhNTFRy
ZWVCdWlsZGVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHBhcnNlcjsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CkBAIC0yNDYwMSw3ICsyNDU3NCw2IEBACiAJCQkJNjI4RDIxNEMxMjEzMUVE
MTAwNTVEQ0ZDIC8qIE5ldHdvcmtpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1OUMy
N0YwNzEzOEQyOENGMDA3OUI3RTIgLyogTmV0d29ya1Jlc291cmNlc0RhdGEuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBN0ZBNjE5MEREQTNCM0EwMDI4RjhBNSAvKiBOZXR3b3JrU3RhdGVOb3RpZmll
ci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDBDQTkzQjIxM0M2NjkxNjAwRjdGRTk1IC8qIE5ld1hN
TERvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VGNDNERDBFNjc0MDEyMDAx
QzEyODcgLyogTmluZVBpZWNlSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MTE1QjUyMDlG
ODRCNzEwMENBNEZDMSAvKiBOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTRGRTczMTBBMjI5
N0JFMDA1OEQ3QUQgLyogTm9kZUZpbHRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTYzOCw3ICsy
NTYxMCw2IEBACiAJCQkJOUJBRjNCMjQxMkMxQTM5ODAwMDE0QkYxIC8qIFdyaXRpbmdEaXJlY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NDc2QUE4MTVEQzRCQjEwMDMwNURCMiAvKiBXcml0
aW5nTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU2NTgyMDIwOUQxNTA4RDAwMEU2MUQ3IC8q
IFhMaW5rTmFtZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTAwRDA0NjRCMTNDNEQxNDUwMDMyNkZD
QyAvKiBYTUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTAw
QjkzMTg4MTNCQThEQkEwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDBCOTMxOEMxM0JBOERDQzAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyU2Nv
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTU5QzI4MDQ2MTM4REMyNDEwMDc5QjdFMiAvKiBYTUxF
cnJvcnMuaCBpbiBIZWFkZXJzICovLApAQCAtMjU2NTAsMTAgKzI1NjIxLDYgQEAKIAkJCQlBODMz
QzgwRDBBMkNGMjU2MDBENTc2NjQgLyogWE1MTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
NUEzNkQ3MTEwNDU3MjAwMEI3QjYzOSAvKiBYTUxOU05hbWVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQUNFNTNFQjBBOEQxOEU3MDAyMjk0N0QgLyogWE1MU2VyaWFsaXplci5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMDAwMkVDNTgxM0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRva2VuLmggaW4gSGVhZGVy
cyAqLywKLQkJCQkwMDAyRUM1QTEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9rZW5pemVyLmggaW4g
SGVhZGVycyAqLywKLQkJCQkwMDM1RUJCQjEzRjA2RkYyMDBBNTYwODkgLyogWE1MVHJlZUJ1aWxk
ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTU5MDVBREMwMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxU
cmVlVmlld2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI3RkM2OTBBOEI5MkVDMDBEOUQzN0Ig
LyogWFBhdGhFdmFsdWF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjBEQTVCMEQyQTMxRjcw
MEI5OTE4RiAvKiBYUGF0aEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCN0ZDNkMw
QThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXhwcmVzc2lvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
NzkyNCw3ICsyNzg5MSw2IEBACiAJCQkJNTlDMjdGMDUxMzhEMjhDMTAwNzlCN0UyIC8qIE5ldHdv
cmtSZXNvdXJjZXNEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBN0ZBNjFCMEREQTNCQkUw
MDI4RjhBNSAvKiBOZXR3b3JrU3RhdGVOb3RpZmllci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
QTdGQTY0OTBEREEzQ0JBMDAyOEY4QTUgLyogTmV0d29ya1N0YXRlTm90aWZpZXJNYWMuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJMDBDQTkzQjUxM0M2Njk3QzAwRjdGRTk1IC8qIE5ld1hNTERvY3Vt
ZW50UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUY0M0UwMEU2NzQxMTAwMDFDMTI4
NyAvKiBOaW5lUGllY2VJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEM0QTgwMDA5RDU2
MzI3MDAwM0FDOEQgLyogTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTRGRTczMDBBMjI5
N0JFMDA1OEQ3QUQgLyogTm9kZUZpbHRlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI4NzUxLDcg
KzI4NzE3LDYgQEAKIAkJCQk5N0FBQkQyQzE0RkEwOUQ1MDA3NDU3QUUgLyogV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMjMwOTlF
NjQ5MjAwNTZFNTgxIC8qIFdyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBODMzQzdDQzBBMkNGMDc0MDBENTc2NjQgLyogWExpbmtOYW1lcy5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQkwMEQwNDY0QTEzQzREMTQ1MDAzMjZGQ0MgLyogWE1MQ2hhcmFj
dGVyUmVmZXJlbmNlUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTAwQjkzMTg3MTNCQThE
QjMwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
MEI5MzE4OTEzQkE4REJDMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTAwQjkzMThCMTNCQThEQzkwMDM1QTk0OCAvKiBYTUxEb2N1bWVu
dFBhcnNlclNjb3BlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjg3NjMsOCArMjg3MjgsNiBAQAog
CQkJCUE4MzNDODBDMEEyQ0YyNTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlFMTVBMzZEOTExMDQ1NzI3MDBCN0I2MzkgLyogWE1MTlNOYW1lcy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQUNFNTNFQTBBOEQxOEU3MDAyMjk0N0QgLyogWE1MU2VyaWFsaXplci5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQkwMDAyRUM1OTEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9r
ZW5pemVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTAwMzVFQkJFMTNGMDcxM0MwMEE1NjA4OSAv
KiBYTUxUcmVlQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1OTA1QURCRjEzMDJGM0NF
MDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI3RkM2
ODBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTc4RDA3Q0MxNDVBMTAyRTAwOTY5MDhEIC8qIFhQYXRoRXhjZXB0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYTY5ZTEyZWM3OTE1NmVhODViODcw
ZGNmNTNhN2QwN2I3MDExMTAzMi4uNzlmMGRhMzVmYzg2ZGJlYThjMmM3Y2RkMzBkMWNiMWJlMTc5
ZDA2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMTUsNyArMTE1LDYgQEAKICNpbmNs
dWRlICJOYW1lTm9kZUxpc3QuaCIKICNpbmNsdWRlICJOYW1lZEZsb3dDb2xsZWN0aW9uLmgiCiAj
aW5jbHVkZSAiTmVzdGluZ0xldmVsSW5jcmVtZW50ZXIuaCIKLSNpbmNsdWRlICJOZXdYTUxEb2N1
bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIk5vZGVGaWx0ZXIuaCIKICNpbmNsdWRlICJOb2RlSXRl
cmF0b3IuaCIKICNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKQEAgLTIyODQsMTEgKzIyODMsNyBA
QCB2b2lkIERvY3VtZW50OjpzZXRWaXN1YWxseU9yZGVyZWQoKQogUGFzc1JlZlB0cjxEb2N1bWVu
dFBhcnNlcj4gRG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCiB7CiAgICAgLy8gRklYTUU6IHRoaXMg
c2hvdWxkIHByb2JhYmx5IHBhc3MgdGhlIGZyYW1lIGluc3RlYWQKLSNpZiBFTkFCTEUoTkVXX1hN
TCkKLSAgICByZXR1cm4gTmV3WE1MRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZSh0aGlzKTsKLSNlbHNl
CiAgICAgcmV0dXJuIFhNTERvY3VtZW50UGFyc2VyOjpjcmVhdGUodGhpcywgdmlldygpKTsKLSNl
bmRpZgogfQogCiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIqIERvY3VtZW50OjpzY3JpcHRhYmxl
RG9jdW1lbnRQYXJzZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50RnJhZ21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQu
Y3BwCmluZGV4IGY3Y2ZhZGZjYzc5ZjMxZDUxNjYzZWFhYzA0MmIzNDVkYTczNGMxOWEuLjE3Zjg1
ZTViYzEwMjk1MzQ3MTVmMTY4MzljM2ZjM2I3ZjAwZjkxZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRGcmFnbWVudC5jcHAKQEAgLTI1LDcgKzI1LDYgQEAKIAogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50UGFyc2VyLmgiCi0jaW5jbHVkZSAiTmV3WE1M
RG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJYTUxEb2N1bWVudFBhcnNlci5oIgpAQCAtODMsMTEgKzgyLDcgQEAgdm9p
ZCBEb2N1bWVudEZyYWdtZW50OjpwYXJzZUhUTUwoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEVsZW1l
bnQqIGNvbnRleHRFbGVtZW50LAogCiBib29sIERvY3VtZW50RnJhZ21lbnQ6OnBhcnNlWE1MKGNv
bnN0IFN0cmluZyYgc291cmNlLCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgRnJhZ21lbnRTY3Jp
cHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCiB7Ci0jaWYgRU5BQkxFKE5FV19Y
TUwpCi0gICAgcmV0dXJuIE5ld1hNTERvY3VtZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJhZ21l
bnQoc291cmNlLCB0aGlzLCBjb250ZXh0RWxlbWVudCwgc2NyaXB0aW5nUGVybWlzc2lvbik7Ci0j
ZWxzZQogICAgIHJldHVybiBYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZyYWdtZW50
KHNvdXJjZSwgdGhpcywgY29udGV4dEVsZW1lbnQsIHNjcmlwdGluZ1Blcm1pc3Npb24pOwotI2Vu
ZGlmCiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTmV3WE1M
RG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9OZXdYTUxEb2N1
bWVudFBhcnNlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzYzMzZDZiNzMy
NWUwMDI0NTU0MGQ4NDYyM2UzMmJlMGU0MDZlMGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9OZXdYTUxEb2N1
bWVudFBhcnNlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjAgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJOZXdYTUxEb2N1bWVudFBhcnNlci5oIgotCi0jaW5jbHVkZSAiRG9jdW1lbnRG
cmFnbWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnQuaCIKLSNpbmNsdWRlICJTY3JpcHRFbGVtZW50
LmgiCi0jaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNlZ21lbnRlZFN0
cmluZy5oIgotI2luY2x1ZGUgIlhNTFRyZWVCdWlsZGVyLmgiCi0jaW5jbHVkZSAiWE1MVHJlZVZp
ZXdlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLU5ld1hNTERvY3VtZW50UGFyc2VyOjpO
ZXdYTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBTY3JpcHRhYmxl
RG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQpCi0gICAgLCBtX3Rva2VuaXplcihYTUxUb2tlbml6ZXI6
OmNyZWF0ZSgpKQotICAgICwgbV9wYXJzZXJQYXVzZWQoZmFsc2UpCi0gICAgLCBtX2ZpbmlzaFdh
c0NhbGxlZChmYWxzZSkKLSAgICAsIG1fcGVuZGluZ1NjcmlwdCgwKQotICAgICwgbV9zY3JpcHRF
bGVtZW50KDApCi0gICAgLCBtX3RyZWVCdWlsZGVyKFhNTFRyZWVCdWlsZGVyOjpjcmVhdGUodGhp
cywgZG9jdW1lbnQpKQotewotfQotCi1OZXdYTUxEb2N1bWVudFBhcnNlcjo6TmV3WE1MRG9jdW1l
bnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIEVsZW1lbnQqIHBhcmVudCwgRnJh
Z21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uKQotICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2Vy
KGZyYWdtZW50LT5kb2N1bWVudCgpKQotICAgICwgbV90b2tlbml6ZXIoWE1MVG9rZW5pemVyOjpj
cmVhdGUoKSkKLSAgICAsIG1fcGFyc2VyUGF1c2VkKGZhbHNlKQotICAgICwgbV9maW5pc2hXYXND
YWxsZWQoZmFsc2UpCi0gICAgLCBtX3BlbmRpbmdTY3JpcHQoMCkKLSAgICAsIG1fc2NyaXB0RWxl
bWVudCgwKQotICAgICwgbV90cmVlQnVpbGRlcihYTUxUcmVlQnVpbGRlcjo6Y3JlYXRlKHRoaXMs
IGZyYWdtZW50LCBwYXJlbnQpKQotewotfQotCi1ib29sIE5ld1hNTERvY3VtZW50UGFyc2VyOjpw
YXJzZURvY3VtZW50RnJhZ21lbnQoY29uc3QgU3RyaW5nJiBjaHVuaywgRG9jdW1lbnRGcmFnbWVu
dCogZnJhZ21lbnQsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Bl
cm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKLXsKLSAgICBpZiAoIWNodW5rLmxlbmd0aCgp
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIFJlZlB0cjxOZXdYTUxEb2N1bWVudFBhcnNl
cj4gcGFyc2VyID0gTmV3WE1MRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZShmcmFnbWVudCwgY29udGV4
dEVsZW1lbnQsIHNjcmlwdGluZ1Blcm1pc3Npb24pOwotICAgIHBhcnNlci0+YXBwZW5kKFNlZ21l
bnRlZFN0cmluZyhjaHVuaykpOwotICAgIC8vIERvIG5vdCBjYWxsIGZpbmlzaCgpLiBDdXJyZW50
IGZpbmlzaCgpIGltcGxlbWVudGF0aW9uIHRvdWNoZXMgdGhlIG1haW4gRG9jdW1lbnQvbG9hZGVy
Ci0gICAgLy8gYW5kIGNhbiBjYXVzZSBjcmFzaGVzIGluIHRoZSBmcmFnbWVudCBjYXNlLgotICAg
IHBhcnNlci0+ZGV0YWNoKCk7IC8vIEFsbG93cyB+RG9jdW1lbnRQYXJzZXIgdG8gYXNzZXJ0IGl0
IHdhcyBkZXRhY2hlZCBiZWZvcmUgZGVzdHJ1Y3Rpb24uCi0KLSAgICAvLyBGSVhNRTogcmV0dXJu
IGZhbHNlIGlmIG5vdCB3ZWxsLWZvcm1lZAotICAgIHJldHVybiB0cnVlOwotfQotCi1OZXdYTUxE
b2N1bWVudFBhcnNlcjo6fk5ld1hNTERvY3VtZW50UGFyc2VyKCkKLXsKLX0KLQotdm9pZCBOZXdY
TUxEb2N1bWVudFBhcnNlcjo6cmVzdW1lUGFyc2luZygpCi17Ci0gICAgbV9wYXJzZXJQYXVzZWQg
PSBmYWxzZTsKLSAgICBhcHBlbmQobV9pbnB1dCk7Ci19Ci0KLXZvaWQgTmV3WE1MRG9jdW1lbnRQ
YXJzZXI6OnByb2Nlc3NTY3JpcHQoU2NyaXB0RWxlbWVudCogc2NyaXB0RWxlbWVudCkKLXsKLSAg
ICBpZiAoc2NyaXB0RWxlbWVudC0+cHJlcGFyZVNjcmlwdChUZXh0UG9zaXRpb24oKSwgU2NyaXB0
RWxlbWVudDo6QWxsb3dMZWdhY3lUeXBlSW5UeXBlQXR0cmlidXRlKSkgewotICAgICAgICBpZiAo
c2NyaXB0RWxlbWVudC0+cmVhZHlUb0JlUGFyc2VyRXhlY3V0ZWQoKSkKLSAgICAgICAgICAgIHNj
cmlwdEVsZW1lbnQtPmV4ZWN1dGVTY3JpcHQoU2NyaXB0U291cmNlQ29kZShzY3JpcHRFbGVtZW50
LT5zY3JpcHRDb250ZW50KCksIGRvY3VtZW50KCktPnVybCgpLCBUZXh0UG9zaXRpb24oKSkpOwot
ICAgICAgICBlbHNlIGlmIChzY3JpcHRFbGVtZW50LT53aWxsQmVQYXJzZXJFeGVjdXRlZCgpKSB7
Ci0gICAgICAgICAgICBtX3BlbmRpbmdTY3JpcHQgPSBzY3JpcHRFbGVtZW50LT5jYWNoZWRTY3Jp
cHQoKTsKLSAgICAgICAgICAgIG1fc2NyaXB0RWxlbWVudCA9IHNjcmlwdEVsZW1lbnQtPmVsZW1l
bnQoKTsKLSAgICAgICAgICAgIG1fcGVuZGluZ1NjcmlwdC0+YWRkQ2xpZW50KHRoaXMpOwotCi0g
ICAgICAgICAgICAvLyBtX3BlbmRpbmdTY3JpcHQgd2lsbCBiZSAwIGlmIHNjcmlwdCB3YXMgYWxy
ZWFkeSBsb2FkZWQgYW5kIGFkZENsaWVudCgpIGV4ZWN1dGVkIGl0LgotICAgICAgICAgICAgaWYg
KG1fcGVuZGluZ1NjcmlwdCkKLSAgICAgICAgICAgICAgICBwYXVzZVBhcnNpbmcoKTsKLSAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBtX3NjcmlwdEVsZW1lbnQgPSAwOwotICAgIH0KLX0KLQot
VGV4dFBvc2l0aW9uIE5ld1hNTERvY3VtZW50UGFyc2VyOjp0ZXh0UG9zaXRpb24oKSBjb25zdAot
ewotICAgIHJldHVybiBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpOwotfQotCi1PcmRp
bmFsTnVtYmVyIE5ld1hNTERvY3VtZW50UGFyc2VyOjpsaW5lTnVtYmVyKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gT3JkaW5hbE51bWJlcjo6Zmlyc3QoKTsKLX0KLQotdm9pZCBOZXdYTUxEb2N1bWVu
dFBhcnNlcjo6aW5zZXJ0KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYpCi17Ci0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgTmV3WE1MRG9jdW1lbnRQYXJzZXI6OmFwcGVuZChjb25z
dCBTZWdtZW50ZWRTdHJpbmcmIHN0cmluZykKLXsKLSAgICBtX2lucHV0ID0gc3RyaW5nOwotICAg
IHdoaWxlICghbV9pbnB1dC5pc0VtcHR5KCkgJiYgaXNQYXJzaW5nKCkgJiYgIW1fcGFyc2VyUGF1
c2VkKSB7Ci0gICAgICAgIGlmICghbV90b2tlbml6ZXItPm5leHRUb2tlbihtX2lucHV0LCBtX3Rv
a2VuKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0jaWZuZGVmIE5ERUJVRwotICAgICAgICBt
X3Rva2VuLnByaW50KCk7Ci0jZW5kaWYKLQotICAgICAgICBBdG9taWNYTUxUb2tlbiB0b2tlbiht
X3Rva2VuKTsKLSAgICAgICAgbV90cmVlQnVpbGRlci0+cHJvY2Vzc1Rva2VuKHRva2VuKTsKLQot
ICAgICAgICBpZiAobV90b2tlbi50eXBlKCkgPT0gWE1MVG9rZW5UeXBlczo6RW5kT2ZGaWxlKQot
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgbV90b2tlbi5jbGVhcigpOwotICAgICAgICBB
U1NFUlQobV90b2tlbi5pc1VuaW5pdGlhbGl6ZWQoKSk7Ci0gICAgfQotfQotCi12b2lkIE5ld1hN
TERvY3VtZW50UGFyc2VyOjpmaW5pc2goKQotewotICAgIEFTU0VSVCghbV9maW5pc2hXYXNDYWxs
ZWQpOwotCi0gICAgaWYgKG1fcGFyc2VyUGF1c2VkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X3RyZWVCdWlsZGVyLT5maW5pc2goKTsKLQotICAgIG1fZmluaXNoV2FzQ2FsbGVkID0gdHJ1ZTsK
LSAgICBpZiAoaXNQYXJzaW5nKCkpIHsKLSNpZiBFTkFCTEUoWFNMVCkKLSAgICAgICAgWE1MVHJl
ZVZpZXdlciB4bWxUcmVlVmlld2VyKGRvY3VtZW50KCkpOwotICAgICAgICBpZiAoeG1sVHJlZVZp
ZXdlci5oYXNOb1N0eWxlSW5mb3JtYXRpb24oKSkKLSAgICAgICAgICAgIHhtbFRyZWVWaWV3ZXIu
dHJhbnNmb3JtRG9jdW1lbnRUb1RyZWVWaWV3KCk7Ci0jZW5kaWYgLy8gRU5BQkxFKFhTTFQpCi0K
LSAgICAgICAgcHJlcGFyZVRvU3RvcFBhcnNpbmcoKTsKLSAgICB9Ci0gICAgZG9jdW1lbnQoKS0+
c2V0UmVhZHlTdGF0ZShEb2N1bWVudDo6SW50ZXJhY3RpdmUpOwotICAgIGRvY3VtZW50KCktPmZp
bmlzaGVkUGFyc2luZygpOwotfQotCi1ib29sIE5ld1hNTERvY3VtZW50UGFyc2VyOjpoYXNJbnNl
cnRpb25Qb2ludCgpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIE5ld1hNTERvY3Vt
ZW50UGFyc2VyOjpmaW5pc2hXYXNDYWxsZWQoKQotewotICAgIHJldHVybiBtX2ZpbmlzaFdhc0Nh
bGxlZDsKLX0KLQotYm9vbCBOZXdYTUxEb2N1bWVudFBhcnNlcjo6aXNXYWl0aW5nRm9yU2NyaXB0
cygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIE5ld1hNTERvY3VtZW50
UGFyc2VyOjppc0V4ZWN1dGluZ1NjcmlwdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi12b2lkIE5ld1hNTERvY3VtZW50UGFyc2VyOjpleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JT
dHlsZXNoZWV0cygpCi17Ci19Ci0KLXZvaWQgTmV3WE1MRG9jdW1lbnRQYXJzZXI6Om5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlKiB1bnVzZWRSZXNvdXJjZSkKLXsKLSAgICBBU1NFUlRfVU5V
U0VEKHVudXNlZFJlc291cmNlLCB1bnVzZWRSZXNvdXJjZSA9PSBtX3BlbmRpbmdTY3JpcHQpOwot
ICAgIEFTU0VSVChtX3BlbmRpbmdTY3JpcHQtPmFjY2Vzc0NvdW50KCkgPiAwKTsKLQotICAgIFNj
cmlwdFNvdXJjZUNvZGUgc291cmNlQ29kZShtX3BlbmRpbmdTY3JpcHQuZ2V0KCkpOwotICAgIGJv
b2wgZXJyb3JPY2N1cnJlZCA9IG1fcGVuZGluZ1NjcmlwdC0+ZXJyb3JPY2N1cnJlZCgpOwotICAg
IGJvb2wgd2FzQ2FuY2VsZWQgPSBtX3BlbmRpbmdTY3JpcHQtPndhc0NhbmNlbGVkKCk7Ci0KLSAg
ICBtX3BlbmRpbmdTY3JpcHQtPnJlbW92ZUNsaWVudCh0aGlzKTsKLSAgICBtX3BlbmRpbmdTY3Jp
cHQgPSAwOwotCi0gICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBtX3NjcmlwdEVsZW1lbnQ7
Ci0gICAgU2NyaXB0RWxlbWVudCogc2NyaXB0RWxlbWVudCA9IHRvU2NyaXB0RWxlbWVudChtX3Nj
cmlwdEVsZW1lbnQuZ2V0KCkpOwotICAgIG1fc2NyaXB0RWxlbWVudCA9IDA7Ci0KLSAgICBBU1NF
UlQoc2NyaXB0RWxlbWVudCk7Ci0KLSAgICAvLyBKYXZhU2NyaXB0IGNhbiBkZXRhY2ggdGhpcyBw
YXJzZXIsIG1ha2Ugc3VyZSBpdCdzIGtlcHQgYWxpdmUgZXZlbiBpZiBkZXRhY2hlZC4KLSAgICBS
ZWZQdHI8TmV3WE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QodGhpcyk7Ci0KLSAgICBpZiAoZXJy
b3JPY2N1cnJlZCkKLSAgICAgICAgc2NyaXB0RWxlbWVudC0+ZGlzcGF0Y2hFcnJvckV2ZW50KCk7
Ci0gICAgZWxzZSBpZiAoIXdhc0NhbmNlbGVkKSB7Ci0gICAgICAgIHNjcmlwdEVsZW1lbnQtPmV4
ZWN1dGVTY3JpcHQoc291cmNlQ29kZSk7Ci0gICAgICAgIHNjcmlwdEVsZW1lbnQtPmRpc3BhdGNo
TG9hZEV2ZW50KCk7Ci0gICAgfQotCi0gICAgaWYgKCFpc0RldGFjaGVkKCkgJiYgbV9wYXJzZXJQ
YXVzZWQpCi0gICAgICAgIHJlc3VtZVBhcnNpbmcoKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9OZXdYTUxEb2N1bWVudFBhcnNlci5oIGIvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9OZXdYTUxEb2N1bWVudFBhcnNlci5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA5NzVkNjdiOTY1Mzc5YzUyYzdhZTY0NmIyZDU3YzAyMmY3MDZjNzA3Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvTmV3WE1MRG9jdW1lbnRQYXJzZXIuaAorKysgL2Rldi9udWxsCkBAIC0x
LDEwNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBOZXdYTUxEb2N1bWVudFBhcnNlcl9oCi0jZGVmaW5lIE5ld1hNTERvY3VtZW50
UGFyc2VyX2gKLQotI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCi0jaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKLSNpbmNsdWRlICJDYWNoZWRTY3JpcHQuaCIKLSNpbmNs
dWRlICJGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24uaCIKLSNpbmNsdWRlICJTY3JpcHRhYmxl
RG9jdW1lbnRQYXJzZXIuaCIKLSNpbmNsdWRlICJYTUxUb2tlbi5oIgotI2luY2x1ZGUgIlhNTFRv
a2VuaXplci5oIgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENvbnRhaW5lck5vZGU7Ci1j
bGFzcyBEb2N1bWVudDsKLWNsYXNzIERvY3VtZW50RnJhZ21lbnQ7Ci1jbGFzcyBTY3JpcHRFbGVt
ZW50OwotY2xhc3MgWE1MVHJlZUJ1aWxkZXI7Ci0KLWNsYXNzIE5ld1hNTERvY3VtZW50UGFyc2Vy
IDogcHVibGljIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciwgcHVibGljIENhY2hlZFJlc291cmNl
Q2xpZW50IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxOZXdYTUxEb2N1bWVudFBhcnNlcj4gY3JlYXRlKERvY3VtZW50KiBkb2N1
bWVudCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTmV3WE1MRG9jdW1lbnRQ
YXJzZXIoZG9jdW1lbnQpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxOZXdYTUxE
b2N1bWVudFBhcnNlcj4gY3JlYXRlKERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBFbGVtZW50
KiBwYXJlbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9u
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOZXdYTUxEb2N1bWVudFBhcnNl
cihmcmFnbWVudCwgcGFyZW50LCBzY3JpcHRpbmdQZXJtaXNzaW9uKSk7Ci0gICAgfQotCi0gICAg
c3RhdGljIGJvb2wgcGFyc2VEb2N1bWVudEZyYWdtZW50KGNvbnN0IFN0cmluZyYsIERvY3VtZW50
RnJhZ21lbnQqLCBFbGVtZW50KiBwYXJlbnQgPSAwLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Np
b24gPSBBbGxvd1NjcmlwdGluZ0NvbnRlbnQpOwotCi0gICAgdm9pZCBwYXVzZVBhcnNpbmcoKSB7
IG1fcGFyc2VyUGF1c2VkID0gdHJ1ZTsgfQotICAgIHZvaWQgcmVzdW1lUGFyc2luZygpOwotICAg
IHZvaWQgcHJvY2Vzc1NjcmlwdChTY3JpcHRFbGVtZW50Kik7Ci0KLSAgICB2aXJ0dWFsIFRleHRQ
b3NpdGlvbiB0ZXh0UG9zaXRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIE9yZGluYWxOdW1iZXIg
bGluZU51bWJlcigpIGNvbnN0OwotCi0gICAgLy8gRG9jdW1lbnRQYXJzZXIKLSAgICB2aXJ0dWFs
IGJvb2wgaGFzSW5zZXJ0aW9uUG9pbnQoKTsKLSAgICB2aXJ0dWFsIGJvb2wgZmluaXNoV2FzQ2Fs
bGVkKCk7Ci0gICAgdmlydHVhbCBib29sIGlzV2FpdGluZ0ZvclNjcmlwdHMoKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNFeGVjdXRpbmdTY3JpcHQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZv
aWQgZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKTsKLQotICAgIC8vIENhY2hl
ZFJlc291cmNlQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlKik7Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0KGNvbnN0IFNl
Z21lbnRlZFN0cmluZyYpOwotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoY29uc3QgU2VnbWVudGVk
U3RyaW5nJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaCgpOwotCi1wcml2YXRlOgotICAgIE5l
d1hNTERvY3VtZW50UGFyc2VyKERvY3VtZW50Kik7Ci0gICAgTmV3WE1MRG9jdW1lbnRQYXJzZXIo
RG9jdW1lbnRGcmFnbWVudCosIEVsZW1lbnQqIHBhcmVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJt
aXNzaW9uKTsKLSAgICB2aXJ0dWFsIH5OZXdYTUxEb2N1bWVudFBhcnNlcigpOwotCi0gICAgU2Vn
bWVudGVkU3RyaW5nIG1faW5wdXQ7Ci0gICAgT3duUHRyPFhNTFRva2VuaXplcj4gbV90b2tlbml6
ZXI7Ci0gICAgWE1MVG9rZW4gbV90b2tlbjsKLQotICAgIGJvb2wgbV9wYXJzZXJQYXVzZWQ7Ci0g
ICAgYm9vbCBtX2ZpbmlzaFdhc0NhbGxlZDsKLQotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFNjcmlwdD4gbV9wZW5kaW5nU2NyaXB0OwotICAgIFJlZlB0cjxFbGVtZW50PiBtX3Njcmlw
dEVsZW1lbnQ7Ci0KLSAgICBPd25QdHI8WE1MVHJlZUJ1aWxkZXI+IG1fdHJlZUJ1aWxkZXI7Ci19
OwotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA5NjJjYTFkNDRhNTg3ZjQyZjA4M2QxZDdiYWYwYWIyMTZkM2U3YmQ4Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvWE1MQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VyLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDc3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSwgSW5j
LiBodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8KLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJYTUxDaGFy
YWN0ZXJSZWZlcmVuY2VQYXJzZXIuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdURjsKLQotI2luY2x1
ZGUgIkNoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZU1ldGhvZHMuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1uYW1lc3BhY2UgewotCi1jbGFzcyBYTUxDaGFyYWN0ZXJSZWZlcmVuY2VQ
YXJzZXIgewotcHVibGljOgotICAgIGlubGluZSBzdGF0aWMgVUNoYXIzMiBsZWdhbEVudGl0eUZv
cihVQ2hhcjMyIHZhbHVlKQotICAgIHsKLSAgICAgICAgLy8gRklYTUU6IEEgbnVtYmVyIG9mIHNw
ZWNpZmljIGVudGl0eSB2YWx1ZXMgZ2VuZXJhdGUgcGFyc2UgZXJyb3JzLgotICAgICAgICBpZiAo
IXZhbHVlIHx8IHZhbHVlID4gMHgxMEZGRkYgfHwgKHZhbHVlID49IDB4RDgwMCAmJiB2YWx1ZSA8
PSAweERGRkYpKQotICAgICAgICByZXR1cm4gMHhGRkZEOwotICAgICAgICByZXR1cm4gdmFsdWU7
Ci0gICAgfQotCi0gICAgaW5saW5lIHN0YXRpYyB2b2lkIGNvbnZlcnRUb1VURjE2KFVDaGFyMzIg
dmFsdWUsIFN0cmluZ0J1aWxkZXImIGRlY29kZWRDaGFyYWN0ZXIpCi0gICAgewotICAgICAgICBp
ZiAoVV9JU19CTVAodmFsdWUpKSB7Ci0gICAgICAgICAgICBVQ2hhciBjaGFyYWN0ZXIgPSBzdGF0
aWNfY2FzdDxVQ2hhcj4odmFsdWUpOwotICAgICAgICAgICAgQVNTRVJUKGNoYXJhY3RlciA9PSB2
YWx1ZSk7Ci0gICAgICAgICAgICBkZWNvZGVkQ2hhcmFjdGVyLmFwcGVuZChjaGFyYWN0ZXIpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGRlY29kZWRDaGFyYWN0ZXIu
YXBwZW5kKFUxNl9MRUFEKHZhbHVlKSk7Ci0gICAgICAgIGRlY29kZWRDaGFyYWN0ZXIuYXBwZW5k
KFUxNl9UUkFJTCh2YWx1ZSkpOwotICAgIH0KLQotICAgIGlubGluZSBzdGF0aWMgYm9vbCBhY2Nl
cHRNYWxmb3JtZWQoKSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgaW5saW5lIHN0YXRpYyBib29s
IGNvbnN1bWVOYW1lZEVudGl0eShTZWdtZW50ZWRTdHJpbmcmLCBTdHJpbmdCdWlsZGVyJiwgYm9v
bCYsIFVDaGFyLCBVQ2hhciYpCi0gICAgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX07Ci0KLX0KLQotYm9vbCBjb25zdW1lWE1M
Q2hhcmFjdGVyUmVmZXJlbmNlKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBTdHJpbmdCdWlsZGVy
JiBkZWNvZGVkQ2hhcmFjdGVyLCBib29sJiBub3RFbm91Z2hDaGFyYWN0ZXJzKQotewotICAgIHJl
dHVybiBjb25zdW1lQ2hhcmFjdGVyUmVmZXJlbmNlPFhNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNl
cj4oc291cmNlLCBkZWNvZGVkQ2hhcmFjdGVyLCBub3RFbm91Z2hDaGFyYWN0ZXJzLCAwKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9YTUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvWE1MQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDVlYzNhMDAzOTc3NGI4NGE5ODkyNjA4YWVhY2FjNmQ2MmRmZTM1MTIuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIuaAorKysgL2Rldi9udWxs
CkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSwgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI2lmbmRlZiBYTUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXJfaAotI2RlZmluZSBY
TUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXJfaAotCi0jaW5jbHVkZSAiU2VnbWVudGVkU3RyaW5n
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLWJvb2wgY29uc3VtZVhNTENoYXJhY3Rl
clJlZmVyZW5jZShTZWdtZW50ZWRTdHJpbmcmLCBTdHJpbmdCdWlsZGVyJiBkZWNvZGVkQ2hhcmFj
dGVyLCBib29sJiBub3RFbm91Z2hDaGFyYWN0ZXJzKTsKLQotfQotCi0jZW5kaWYgLy8gWE1MQ2hh
cmFjdGVyUmVmZXJlbmNlUGFyc2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9rZW4uaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU5NWE2ZjAwOWUwNzI1NjVmMzFkODZlZWRj
OWQwOThmZjI3ZjNiOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRva2VuLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw0NzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgWE1MVG9rZW5faAotI2RlZmluZSBYTUxUb2tlbl9oCi0KLSNpbmNsdWRl
ICJNYXJrdXBUb2tlbkJhc2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBYTUxU
b2tlblR5cGVzIHsKLXB1YmxpYzoKLSAgICBlbnVtIFR5cGUgewotICAgICAgICBVbmluaXRpYWxp
emVkLAotICAgICAgICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24sCi0gICAgICAgIFhNTERlY2xhcmF0
aW9uLAotICAgICAgICBET0NUWVBFLAotICAgICAgICBDREFUQSwKLSAgICAgICAgU3RhcnRUYWcs
Ci0gICAgICAgIEVuZFRhZywKLSAgICAgICAgQ29tbWVudCwKLSAgICAgICAgQ2hhcmFjdGVyLAot
ICAgICAgICBFbnRpdHksCi0gICAgICAgIEVuZE9mRmlsZSwKLSAgICB9OwotfTsKLQotY2xhc3Mg
UHJlZml4ZWRBdHRyaWJ1dGUgOiBwdWJsaWMgQXR0cmlidXRlQmFzZSB7Ci1wdWJsaWM6Ci0gICAg
UmFuZ2UgbV9wcmVmaXhSYW5nZTsKLSAgICBXVEY6OlZlY3RvcjxVQ2hhciwgMzI+IG1fcHJlZml4
OwotfTsKLQotY2xhc3MgWE1MVG9rZW4gOiBwdWJsaWMgTWFya3VwVG9rZW5CYXNlPFhNTFRva2Vu
VHlwZXMsIERvY3R5cGVEYXRhQmFzZSwgUHJlZml4ZWRBdHRyaWJ1dGU+IHsKLXB1YmxpYzoKLSAg
ICBjbGFzcyBYTUxEZWNsYXJhdGlvbkRhdGEgewotICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShYTUxEZWNsYXJhdGlvbkRhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBwdWJs
aWM6Ci0gICAgICAgIFhNTERlY2xhcmF0aW9uRGF0YSgpCi0gICAgICAgICAgICA6IG1faGFzU3Rh
bmRhbG9uZShmYWxzZSkKLSAgICAgICAgICAgICwgbV9oYXNFbmNvZGluZyhmYWxzZSkKLSAgICAg
ICAgICAgICwgbV9zdGFuZGFsb25lKGZhbHNlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAg
ICAgICBib29sIG1faGFzU3RhbmRhbG9uZTsKLSAgICAgICAgYm9vbCBtX2hhc0VuY29kaW5nOwot
ICAgICAgICBib29sIG1fc3RhbmRhbG9uZTsKLSAgICAgICAgV1RGOjpWZWN0b3I8VUNoYXI+IG1f
ZW5jb2Rpbmc7Ci0gICAgICAgIFdURjo6VmVjdG9yPFVDaGFyPiBtX3ZlcnNpb247Ci0gICAgfTsK
LQotICAgIHZpcnR1YWwgdm9pZCBjbGVhcigpCi0gICAgewotICAgICAgICBNYXJrdXBUb2tlbkJh
c2U8WE1MVG9rZW5UeXBlcywgRG9jdHlwZURhdGFCYXNlLCBQcmVmaXhlZEF0dHJpYnV0ZT46OmNs
ZWFyKCk7Ci0gICAgICAgIG1fdGFyZ2V0LmNsZWFyKCk7Ci0gICAgfQotCi0gICAgdm9pZCBhcHBl
bmRUb05hbWUoVUNoYXIgY2hhcmFjdGVyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBYTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6RW5k
VGFnIHx8IG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpET0NUWVBFIHx8IG1fdHlwZSA9PSBYTUxU
b2tlblR5cGVzOjpFbnRpdHkpOwotICAgICAgICBNYXJrdXBUb2tlbkJhc2U8WE1MVG9rZW5UeXBl
cywgRG9jdHlwZURhdGFCYXNlLCBQcmVmaXhlZEF0dHJpYnV0ZT46OmFwcGVuZFRvTmFtZShjaGFy
YWN0ZXIpOwotICAgIH0KLQotICAgIGNvbnN0IERhdGFWZWN0b3ImIG5hbWUoKSBjb25zdAotICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBt
X3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6RW5kVGFnIHx8IG1fdHlwZSA9PSBYTUxUb2tlblR5cGVz
OjpET0NUWVBFIHx8IG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpFbnRpdHkpOwotICAgICAgICBy
ZXR1cm4gTWFya3VwVG9rZW5CYXNlPFhNTFRva2VuVHlwZXMsIERvY3R5cGVEYXRhQmFzZSwgUHJl
Zml4ZWRBdHRyaWJ1dGU+OjpuYW1lKCk7Ci0gICAgfQotCi0gICAgY29uc3QgRGF0YVZlY3RvciYg
dGFyZ2V0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5U
eXBlczo6UHJvY2Vzc2luZ0luc3RydWN0aW9uKTsKLSAgICAgICAgcmV0dXJuIG1fdGFyZ2V0Owot
ICAgIH0KLQotICAgIGNvbnN0IERhdGFWZWN0b3ImIGRhdGEoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpDREFUQSB8fCBtX3R5cGUgPT0gWE1M
VG9rZW5UeXBlczo6UHJvY2Vzc2luZ0luc3RydWN0aW9uKTsKLSAgICAgICAgcmV0dXJuIG1fZGF0
YTsKLSAgICB9Ci0KLSAgICBjb25zdCBEYXRhVmVjdG9yJiBwcmVmaXgoKSBjb25zdAotICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5
cGUgPT0gWE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKLSAgICAgICAgcmV0dXJuIG1fdGFyZ2V0Owot
ICAgIH0KLQotICAgIGNvbnN0IFhNTERlY2xhcmF0aW9uRGF0YSYgeG1sRGVjbGFyYXRpb25EYXRh
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6
WE1MRGVjbGFyYXRpb24pOwotICAgICAgICBBU1NFUlQobV94bWxEZWNsYXJhdGlvbkRhdGEpOwot
ICAgICAgICByZXR1cm4gKm1feG1sRGVjbGFyYXRpb25EYXRhLmdldCgpOwotICAgIH0KLQotICAg
IHZvaWQgYmVnaW5ET0NUWVBFKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1M
VG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCk7Ci0gICAgICAgIG1fdHlwZSA9IFhNTFRva2VuVHlw
ZXM6OkRPQ1RZUEU7Ci0gICAgICAgIG1fZG9jdHlwZURhdGEgPSBhZG9wdFB0cihuZXcgRG9jdHlw
ZURhdGEoKSk7Ci0gICAgfQotCi0gICAgdm9pZCBiZWdpbkRPQ1RZUEUoVUNoYXIgY2hhcmFjdGVy
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7Ci0gICAgICAgIGJlZ2luRE9DVFlQ
RSgpOwotICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgfQotCi0gICAgdm9p
ZCBiZWdpblhNTERlY2xhcmF0aW9uKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
WE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCk7Ci0gICAgICAgIG1fdHlwZSA9IFhNTFRva2Vu
VHlwZXM6OlhNTERlY2xhcmF0aW9uOwotICAgICAgICBtX3htbERlY2xhcmF0aW9uRGF0YSA9IGFk
b3B0UHRyKG5ldyBYTUxEZWNsYXJhdGlvbkRhdGEoKSk7Ci0gICAgfQotCi0gICAgdm9pZCBhcHBl
bmRUb1hNTFZlcnNpb24oVUNoYXIgY2hhcmFjdGVyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNo
YXJhY3Rlcik7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6WE1MRGVj
bGFyYXRpb24pOwotICAgICAgICBBU1NFUlQobV94bWxEZWNsYXJhdGlvbkRhdGEpOwotICAgICAg
ICBtX3htbERlY2xhcmF0aW9uRGF0YS0+bV92ZXJzaW9uLmFwcGVuZChjaGFyYWN0ZXIpOwotICAg
IH0KLQotICAgIHZvaWQgYmVnaW5YTUxFbmNvZGluZyhVQ2hhciBjaGFyYWN0ZXIpCi0gICAgewot
ICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxU
b2tlblR5cGVzOjpYTUxEZWNsYXJhdGlvbik7Ci0gICAgICAgIEFTU0VSVChtX3htbERlY2xhcmF0
aW9uRGF0YSk7Ci0gICAgICAgIG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX2hhc0VuY29kaW5nID0g
dHJ1ZTsKLSAgICAgICAgbV94bWxEZWNsYXJhdGlvbkRhdGEtPm1fZW5jb2RpbmcuYXBwZW5kKGNo
YXJhY3Rlcik7Ci0gICAgfQotCi0gICAgdm9pZCBhcHBlbmRUb1hNTEVuY29kaW5nKFVDaGFyIGNo
YXJhY3RlcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOwotICAgICAgICBBU1NF
UlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlhNTERlY2xhcmF0aW9uKTsKLSAgICAgICAgQVNT
RVJUKG1feG1sRGVjbGFyYXRpb25EYXRhKTsKLSAgICAgICAgQVNTRVJUKG1feG1sRGVjbGFyYXRp
b25EYXRhLT5tX2hhc0VuY29kaW5nKTsKLSAgICAgICAgbV94bWxEZWNsYXJhdGlvbkRhdGEtPm1f
ZW5jb2RpbmcuYXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRYTUxTdGFu
ZGFsb25lKGJvb2wgc3RhbmRhbG9uZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
WE1MVG9rZW5UeXBlczo6WE1MRGVjbGFyYXRpb24pOwotICAgICAgICBBU1NFUlQobV94bWxEZWNs
YXJhdGlvbkRhdGEpOwotICAgICAgICBtX3htbERlY2xhcmF0aW9uRGF0YS0+bV9oYXNTdGFuZGFs
b25lID0gdHJ1ZTsKLSAgICAgICAgbV94bWxEZWNsYXJhdGlvbkRhdGEtPm1fc3RhbmRhbG9uZSA9
IHN0YW5kYWxvbmU7Ci0gICAgfQotCi0gICAgdm9pZCBiZWdpblByb2Nlc3NpbmdJbnN0cnVjdGlv
bigpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlVuaW5p
dGlhbGl6ZWQpOwotICAgICAgICBtX3R5cGUgPSBYTUxUb2tlblR5cGVzOjpQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb247Ci0gICAgfQotCi0gICAgdm9pZCBiZWdpblByb2Nlc3NpbmdJbnN0cnVjdGlvbihV
Q2hhciBjaGFyYWN0ZXIpCi0gICAgewotICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKLSAgICAg
ICAgYmVnaW5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oKTsKLSAgICAgICAgbV90YXJnZXQuYXBwZW5k
KGNoYXJhY3Rlcik7Ci0gICAgfQotCi0gICAgdm9pZCBhcHBlbmRUb1Byb2Nlc3NpbmdJbnN0cnVj
dGlvblRhcmdldChVQ2hhciBjaGFyYWN0ZXIpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBl
ID09IFhNTFRva2VuVHlwZXM6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbik7Ci0gICAgICAgIEFTU0VS
VChjaGFyYWN0ZXIpOwotICAgICAgICBtX3RhcmdldC5hcHBlbmQoY2hhcmFjdGVyKTsKLSAgICB9
Ci0KLSAgICB2b2lkIGFwcGVuZFRvUHJvY2Vzc2luZ0luc3RydWN0aW9uRGF0YShVQ2hhciBjaGFy
YWN0ZXIpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlBy
b2Nlc3NpbmdJbnN0cnVjdGlvbik7Ci0gICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOwotICAgICAg
ICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgfQotCi0gICAgdm9pZCBlbmRQcmVmaXgo
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpTdGFydFRh
ZyB8fCBtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKLSAgICAgICAgQVNTRVJUKG1f
dGFyZ2V0LmlzRW1wdHkoKSk7Ci0gICAgICAgIC8vIEZJWE1FOiBzZWUgaWYgd2UgY2FuIGF2b2lk
IHRoZSBjb3B5IGluaGVyZW50IHdpdGggdGhpcyBzd2FwCi0gICAgICAgIG1fdGFyZ2V0LnN3YXAo
bV9kYXRhKTsKLSAgICB9Ci0KLSAgICBib29sIGhhc1ByZWZpeCgpIGNvbnN0Ci0gICAgewotICAg
ICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9
PSBYTUxUb2tlblR5cGVzOjpFbmRUYWcpOwotICAgICAgICByZXR1cm4gbV90YXJnZXQuc2l6ZSgp
OwotICAgIH0KLQotICAgIHZvaWQgYmVnaW5DREFUQSgpCi0gICAgewotICAgICAgICBBU1NFUlQo
bV90eXBlID09IFhNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQpOwotICAgICAgICBtX3R5cGUg
PSBYTUxUb2tlblR5cGVzOjpDREFUQTsKLSAgICB9Ci0KLSAgICB2b2lkIGFwcGVuZFRvQ0RBVEEo
VUNoYXIgY2hhcmFjdGVyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tl
blR5cGVzOjpDREFUQSk7Ci0gICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOwotICAgICAgICBtX2Rh
dGEuYXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgfQotCi0gICAgdm9pZCBiZWdpbkVudGl0eSgpCi0g
ICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6
ZWQpOwotICAgICAgICBtX3R5cGUgPSBYTUxUb2tlblR5cGVzOjpFbnRpdHk7Ci0gICAgfQotCi0g
ICAgdm9pZCBiZWdpbkVudGl0eShVQ2hhciBjaGFyYWN0ZXIpCi0gICAgewotICAgICAgICBBU1NF
UlQoY2hhcmFjdGVyKTsKLSAgICAgICAgYmVnaW5FbnRpdHkoKTsKLSAgICAgICAgbV9kYXRhLmFw
cGVuZChjaGFyYWN0ZXIpOwotICAgIH0KLQotICAgIHZvaWQgZW5kQXR0cmlidXRlUHJlZml4KGlu
dCBvZmZzZXQpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6
OlN0YXJ0VGFnKTsKLSAgICAgICAgaW50IGluZGV4ID0gb2Zmc2V0IC0gbV9iYXNlT2Zmc2V0Owot
ICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fcHJlZml4LnN3YXAobV9jdXJyZW50QXR0cmli
dXRlLT5tX25hbWUpOwotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fcHJlZml4UmFuZ2Uu
bV9zdGFydCA9IG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fc3RhcnQ7Ci0gICAg
ICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV9wcmVmaXhSYW5nZS5tX2VuZCA9IGluZGV4OwotICAg
ICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZVJhbmdlLm1fc3RhcnQgPSBpbmRleDsKLSAg
ICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX25hbWVSYW5nZS5tX2VuZCA9IGluZGV4OwotICAg
IH0KLQotICAgIGJvb2wgYXR0cmlidXRlSGFzUHJlZml4KCkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwotICAgICAgICByZXR1cm4gIW1f
Y3VycmVudEF0dHJpYnV0ZS0+bV9wcmVmaXguaXNFbXB0eSgpOwotICAgIH0KLQotI2lmbmRlZiBO
REVCVUcKLSAgICB2b2lkIHByaW50QXR0cnMoKSBjb25zdAotICAgIHsKLSAgICAgICAgQXR0cmli
dXRlTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fYXR0cmlidXRlcy5iZWdpbigpOwotICAg
ICAgICBmb3IgKDsgaXRlciAhPSBtX2F0dHJpYnV0ZXMuZW5kKCk7ICsraXRlcikgewotICAgICAg
ICAgICAgZnByaW50ZihzdGRlcnIsICIgIik7Ci0gICAgICAgICAgICBpZiAoIWl0ZXItPm1fcHJl
Zml4LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIHByaW50U3RyaW5nKGl0ZXItPm1fcHJl
Zml4KTsKLSAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIjoiKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHByaW50U3RyaW5nKGl0ZXItPm1fbmFtZSk7Ci0gICAgICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIj1cIiIpOwotICAgICAgICAgICAgcHJpbnRTdHJpbmcoaXRlci0+bV92
YWx1ZSk7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlwiIik7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICB2b2lkIHByaW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAobV90
eXBlKSB7Ci0gICAgICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZDoKLSAgICAg
ICAgICAgIGZwcmludGYoc3RkZXJyLCAiVU5JVElBTElaRUQiKTsKLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOgot
ICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246ICIpOwot
ICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICI8PyIpOwotICAgICAgICAgICAgcHJpbnRTdHJp
bmcobV90YXJnZXQpOwotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgIik7Ci0gICAgICAg
ICAgICBwcmludFN0cmluZyhtX2RhdGEpOwotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICI/
PiIpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpY
TUxEZWNsYXJhdGlvbjoKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiWE1MIERlY2xhcmF0
aW9uOiAiKTsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiPD94bWwgdmVyc2lvbj1cIiIp
OwotICAgICAgICAgICAgQVNTRVJUKG1feG1sRGVjbGFyYXRpb25EYXRhKTsKLSAgICAgICAgICAg
IHByaW50U3RyaW5nKG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX3ZlcnNpb24pOwotICAgICAgICAg
ICAgZnByaW50ZihzdGRlcnIsICJcIiIpOwotICAgICAgICAgICAgaWYgKG1feG1sRGVjbGFyYXRp
b25EYXRhLT5tX2hhc0VuY29kaW5nKSB7Ci0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIs
ICIgZW5jb2Rpbmc9XCIiKTsKLSAgICAgICAgICAgICAgICBwcmludFN0cmluZyhtX3htbERlY2xh
cmF0aW9uRGF0YS0+bV9lbmNvZGluZyk7Ci0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIs
ICJcIiIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG1feG1sRGVjbGFyYXRpb25E
YXRhLT5tX2hhc1N0YW5kYWxvbmUpCi0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIg
c3RhbmRhbG9uZT1cIiVzXCIiLCBtX3htbERlY2xhcmF0aW9uRGF0YS0+bV9zdGFuZGFsb25lID8g
InllcyIgOiAibm8iKTsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiPz4iKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6RE9DVFlQRToKLSAg
ICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRE9DVFlQRTogIik7Ci0gICAgICAgICAgICBBU1NF
UlQobV9kb2N0eXBlRGF0YSk7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIjwhRE9DVFlQ
RSAiKTsKLSAgICAgICAgICAgIHByaW50U3RyaW5nKG1fZGF0YSk7Ci0gICAgICAgICAgICBpZiAo
bV9kb2N0eXBlRGF0YS0+bV9oYXNQdWJsaWNJZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICAgICAg
ZnByaW50ZihzdGRlcnIsICIgUFVCTElDIFwiIik7Ci0gICAgICAgICAgICAgICAgcHJpbnRTdHJp
bmcobV9kb2N0eXBlRGF0YS0+bV9wdWJsaWNJZGVudGlmaWVyKTsKLSAgICAgICAgICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIlwiIik7Ci0gICAgICAgICAgICAgICAgaWYgKG1fZG9jdHlwZURhdGEt
Pm1faGFzU3lzdGVtSWRlbnRpZmllcikgewotICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0
ZGVyciwgIiBcIiIpOwotICAgICAgICAgICAgICAgICAgICBwcmludFN0cmluZyhtX2RvY3R5cGVE
YXRhLT5tX3N5c3RlbUlkZW50aWZpZXIpOwotICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0
ZGVyciwgIlwiIik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIGlmICht
X2RvY3R5cGVEYXRhLT5tX2hhc1N5c3RlbUlkZW50aWZpZXIpIHsKLSAgICAgICAgICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIiBTWVNURU0gXCIiKTsKLSAgICAgICAgICAgICAgICBwcmludFN0cmlu
ZyhtX2RvY3R5cGVEYXRhLT5tX3N5c3RlbUlkZW50aWZpZXIpOwotICAgICAgICAgICAgICAgIGZw
cmludGYoc3RkZXJyLCAiXCIiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZwcmludGYo
c3RkZXJyLCAiPiIpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBYTUxUb2tl
blR5cGVzOjpDREFUQToKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ0RBVEE6ICIpOwot
ICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICI8IVtDREFUQVsiKTsKLSAgICAgICAgICAgIHBy
aW50U3RyaW5nKG1fZGF0YSk7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIl1dPiIpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpTdGFydFRh
ZzoKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiU3RhcnQgVGFnOiAiKTsKLSAgICAgICAg
ICAgIGZwcmludGYoc3RkZXJyLCAiPCIpOwotICAgICAgICAgICAgaWYgKGhhc1ByZWZpeCgpKSB7
Ci0gICAgICAgICAgICAgICAgcHJpbnRTdHJpbmcobV90YXJnZXQpOwotICAgICAgICAgICAgICAg
IGZwcmludGYoc3RkZXJyLCAiOiIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcHJpbnRT
dHJpbmcobV9kYXRhKTsKLSAgICAgICAgICAgIHByaW50QXR0cnMoKTsKLSAgICAgICAgICAgIGlm
IChzZWxmQ2xvc2luZygpKQotICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiLyIpOwot
ICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICI+Iik7Ci0gICAgICAgICAgICBicmVhazsKLQot
ICAgICAgICBjYXNlIFhNTFRva2VuVHlwZXM6OkVuZFRhZzoKLSAgICAgICAgICAgIGZwcmludGYo
c3RkZXJyLCAiRW5kIFRhZzogIik7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIjwvIik7
Ci0gICAgICAgICAgICBpZiAoaGFzUHJlZml4KCkpIHsKLSAgICAgICAgICAgICAgICBwcmludFN0
cmluZyhtX3RhcmdldCk7Ci0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICI6Iik7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBwcmludFN0cmluZyhtX2RhdGEpOwotICAgICAgICAg
ICAgZnByaW50ZihzdGRlcnIsICI+Iik7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBj
YXNlIFhNTFRva2VuVHlwZXM6OkNvbW1lbnQ6Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwg
IkNvbW1lbnQ6ICIpOwotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICI8IS0tIik7Ci0gICAg
ICAgICAgICBwcmludFN0cmluZyhtX2RhdGEpOwotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIs
ICItLT4iKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgWE1MVG9rZW5UeXBl
czo6Q2hhcmFjdGVyOgotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJDaGFyYWN0ZXJzOiAi
KTsKLSAgICAgICAgICAgIHByaW50U3RyaW5nKG1fZGF0YSk7Ci0gICAgICAgICAgICBicmVhazsK
LQotICAgICAgICBjYXNlIFhNTFRva2VuVHlwZXM6OkVudGl0eToKLSAgICAgICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiRW50aXR5OiAiKTsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJiIp
OwotICAgICAgICAgICAgcHJpbnRTdHJpbmcobV9kYXRhKTsKLSAgICAgICAgICAgIGZwcmludGYo
c3RkZXJyLCAiOyIpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBYTUxUb2tl
blR5cGVzOjpFbmRPZkZpbGU6Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVPRiIpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwg
IlxuIik7Ci0gICAgfQotI2VuZGlmIC8vIE5ERUJVRwotCi1wcml2YXRlOgotICAgIC8vIEF0b21p
Y1hNTFRva2VuIG5lZWRzIHRvIHN0ZWFsIHNvbWUgb2Ygb3VyIHBvaW50ZXJzIGZyb20gdXMKLSAg
ICAvLyBGSVhNRTogYWRkIHRha2UqIGZ1bmN0aW9ucwotICAgIGZyaWVuZCBjbGFzcyBBdG9taWNY
TUxUb2tlbjsKLQotICAgIC8vICJ0YXJnZXQiIGZvciBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24sICJw
cmVmaXgiIGZvciBTdGFydFRhZyBhbmQgRW5kVGFnCi0gICAgRGF0YVZlY3RvciBtX3RhcmdldDsK
LQotICAgIC8vIEZvciBYTUwgRGVjbGFyYXRpb24KLSAgICBPd25QdHI8WE1MRGVjbGFyYXRpb25E
YXRhPiBtX3htbERlY2xhcmF0aW9uRGF0YTsKLX07Ci0KLWNsYXNzIEF0b21pY1hNTFRva2VuIDog
cHVibGljIEF0b21pY01hcmt1cFRva2VuQmFzZTxYTUxUb2tlbj4gewotICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEF0b21pY1hNTFRva2VuKTsKLXB1YmxpYzoKLSAgICBBdG9taWNYTUxUb2tlbihY
TUxUb2tlbiYgdG9rZW4pCi0gICAgICAgIDogQXRvbWljTWFya3VwVG9rZW5CYXNlPFhNTFRva2Vu
PigmdG9rZW4pCi0gICAgewotICAgICAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgICAgICBjYXNl
IFhNTFRva2VuVHlwZXM6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjoKLSAgICAgICAgICAgIG1fbmFt
ZSA9IEF0b21pY1N0cmluZyh0b2tlbi50YXJnZXQoKS5kYXRhKCksIHRva2VuLnRhcmdldCgpLnNp
emUoKSk7Ci0gICAgICAgICAgICBtX2RhdGEgPSBTdHJpbmcodG9rZW4uZGF0YSgpLmRhdGEoKSwg
dG9rZW4uZGF0YSgpLnNpemUoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBY
TUxUb2tlblR5cGVzOjpYTUxEZWNsYXJhdGlvbjoKLSAgICAgICAgICAgIG1feG1sRGVjbGFyYXRp
b25EYXRhID0gdG9rZW4ubV94bWxEZWNsYXJhdGlvbkRhdGEucmVsZWFzZSgpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6U3RhcnRUYWc6Ci0gICAgICAg
IGNhc2UgWE1MVG9rZW5UeXBlczo6RW5kVGFnOiB7Ci0gICAgICAgICAgICBpZiAodG9rZW4ucHJl
Zml4KCkuc2l6ZSgpKQotICAgICAgICAgICAgICAgIG1fcHJlZml4ID0gQXRvbWljU3RyaW5nKHRv
a2VuLnByZWZpeCgpLmRhdGEoKSwgdG9rZW4ucHJlZml4KCkuc2l6ZSgpKTsKLSAgICAgICAgICAg
IGluaXRpYWxpemVBdHRyaWJ1dGVzKHRva2VuLmF0dHJpYnV0ZXMoKSk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFhNTFRva2VuVHlwZXM6OkNEQVRBOgotICAg
ICAgICAgICAgbV9kYXRhID0gU3RyaW5nKHRva2VuLmRhdGEoKS5kYXRhKCksIHRva2VuLmRhdGEo
KS5zaXplKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgWE1MVG9rZW5UeXBl
czo6RW50aXR5OgotICAgICAgICAgICAgbV9uYW1lID0gQXRvbWljU3RyaW5nKHRva2VuLm5hbWUo
KS5kYXRhKCksIHRva2VuLm5hbWUoKS5zaXplKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IEF0b21pY1hNTFRva2VuKFhNTFRva2VuVHlwZXM6OlR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcyA9IFZlY3RvcjxB
dHRyaWJ1dGU+KCkpCi0gICAgICAgIDogQXRvbWljTWFya3VwVG9rZW5CYXNlPFhNTFRva2VuPih0
eXBlLCBuYW1lLCBhdHRyaWJ1dGVzKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBdG9taWNT
dHJpbmcmIHByZWZpeCgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFhN
TFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpFbmRUYWcp
OwotICAgICAgICByZXR1cm4gbV9wcmVmaXg7Ci0gICAgfQotCi0gICAgY29uc3QgQXRvbWljU3Ry
aW5nJiB0YXJnZXQoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxU
b2tlblR5cGVzOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pOwotICAgICAgICByZXR1cm4gbV9uYW1l
OwotICAgIH0KLQotICAgIGNvbnN0IFN0cmluZyYgZGF0YSgpIGNvbnN0Ci0gICAgewotICAgICAg
ICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OkNEQVRBIHx8IG1fdHlwZSA9PSBYTUxU
b2tlblR5cGVzOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pOwotICAgICAgICByZXR1cm4gbV9kYXRh
OwotICAgIH0KLQotICAgIFdURjo6VmVjdG9yPFVDaGFyPiYgeG1sVmVyc2lvbigpIGNvbnN0Ci0g
ICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlhNTERlY2xhcmF0
aW9uKTsKLSAgICAgICAgcmV0dXJuIG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX3ZlcnNpb247Ci0g
ICAgfQotCi0gICAgYm9vbCB4bWxTdGFuZGFsb25lKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6WE1MRGVjbGFyYXRpb24pOwotICAgICAgICBy
ZXR1cm4gbV94bWxEZWNsYXJhdGlvbkRhdGEtPm1faGFzU3RhbmRhbG9uZSAmJiBtX3htbERlY2xh
cmF0aW9uRGF0YS0+bV9zdGFuZGFsb25lOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICAvLyAicHJl
Zml4IiBmb3IgU3RhcnRUYWcsIEVuZFRhZwotICAgIEF0b21pY1N0cmluZyBtX3ByZWZpeDsKLQot
ICAgIC8vIEZvciBYTUwgZGVjbGFyYXRpb24KLSAgICBPd25QdHI8WE1MVG9rZW46OlhNTERlY2xh
cmF0aW9uRGF0YT4gbV94bWxEZWNsYXJhdGlvbkRhdGE7Ci19OwotCi19Ci0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbml6ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbml6ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBiYjNlNjhjZDhiZWUzODU1OWM1N2NhNWJiYzlmNDg5MDRhNmU4ZDZmLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MVG9rZW5pemVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNjEg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuIGh0dHA6
Ly93d3cudG9yY2htb2JpbGUuY29tLwotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSwgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlhNTFRva2VuaXplci5o
IgotCi0jaW5jbHVkZSAiTWFya3VwVG9rZW5pemVySW5saW5lTWV0aG9kcy5oIgotI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiWE1MQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2Vy
LmgiCi0jaW5jbHVkZSAiWE1MVG9rZW4uaCIKLSNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgot
I2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgotI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLXVzaW5n
IG5hbWVzcGFjZSBXVEY7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gVGhpcyBoYXMgdG8g
Z28gaW4gYSAuY3BwIGZpbGUsIGFzIHRoZSBsaW5rZXIgZG9lc24ndCBsaWtlIGl0IGJlaW5nIGlu
Y2x1ZGVkIG1vcmUgdGhhbiBvbmNlLgotLy8gV2UgZG9uJ3QgaGF2ZSBhbiBYTUxUb2tlbi5jcHAg
dGhvdWdoLCBzbyB0aGlzIGlzIHRoZSBuZXh0IGJlc3QgcGxhY2UuCi10ZW1wbGF0ZTw+Ci1RdWFs
aWZpZWROYW1lIEF0b21pY01hcmt1cFRva2VuQmFzZTxYTUxUb2tlbj46Om5hbWVGb3JBdHRyaWJ1
dGUoY29uc3QgWE1MVG9rZW46OkF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdAotewotICAgIHJl
dHVybiBRdWFsaWZpZWROYW1lKGF0dHJpYnV0ZS5tX3ByZWZpeC5pc0VtcHR5KCkgPyBudWxsQXRv
bSA6IEF0b21pY1N0cmluZyhhdHRyaWJ1dGUubV9wcmVmaXguZGF0YSgpLCBhdHRyaWJ1dGUubV9w
cmVmaXguc2l6ZSgpKSwgQXRvbWljU3RyaW5nKGF0dHJpYnV0ZS5tX25hbWUuZGF0YSgpLCBhdHRy
aWJ1dGUubV9uYW1lLnNpemUoKSksIG51bGxBdG9tKTsKLX0KLQotdGVtcGxhdGU8PgotYm9vbCBB
dG9taWNNYXJrdXBUb2tlbkJhc2U8WE1MVG9rZW4+Ojp1c2VzTmFtZSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gWE1M
VG9rZW5UeXBlczo6RW5kVGFnIHx8IG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpET0NUWVBFIHx8
IG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpFbnRpdHk7Ci19Ci0KLXRlbXBsYXRlPD4KLWJvb2wg
QXRvbWljTWFya3VwVG9rZW5CYXNlPFhNTFRva2VuPjo6dXNlc0F0dHJpYnV0ZXMoKSBjb25zdAot
ewotICAgIHJldHVybiBtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBl
ID09IFhNTFRva2VuVHlwZXM6OkVuZFRhZzsKLX0KLQotbmFtZXNwYWNlIHsKLQotaW5saW5lIGJv
b2wgaXNWYWxpZE5hbWVTdGFydChVQ2hhciBjYykKLXsKLSAgICBpZiAoY2MgPD0gMHg0MCkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChjYyA8PSAweDVBKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICBpZiAoY2MgPT0gMHg1RikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYg
KGNjIDw9IDB4NjApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoY2MgPD0gMHg3QSkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGNjIDwgMHhDMCkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmIChjYyA8PSAweEQ2KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBp
ZiAoY2MgPT0gMHhEOCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChjYyA8PSAweEY2
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoY2MgPT0gMHhGNykKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmIChjYyA8PSAweDJGRikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgaWYgKGNjIDwgMHgzNzApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoY2MgPD0g
MHgzN0QpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChjYyA9PSAweDM3RSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChjYyA8PSAweDFGRkYpCi0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIGlmIChjYyA8IDB4MjAwQykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
IChjYyA8PSAweDIwMEQpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChjYyA8IDB4MjA3
MCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChjYyA8PSAweDIxOEYpCi0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIGlmIChjYyA8IDB4MkMwMCkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmIChjYyA8PSAweDJGRUYpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChj
YyA8IDB4MzAwMSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChjYyA8PSAweEQ3RkYp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChjYyA8IDB4RjkwMCkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmIChjYyA8PSAweEZEQ0YpCi0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIGlmIChjYyA8IDB4RkRGMCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChjYyA8
PSAweEZGRkQpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gRklYTUU6IHN1cHBvcnQg
bm9uLUJNUCBwbGFuZXMKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotaW5saW5lIGJvb2wgaXNW
YWxpZE5hbWVDaGFyKFVDaGFyIGNjKQotewotICAgIGlmIChpc1ZhbGlkTmFtZVN0YXJ0KGNjKSkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGNjID09ICctJyB8fCBjYyA9PSAnLicpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChjYyA8IDB4MzApCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAoY2MgPCAweDNBKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAo
Y2MgPCAweDAzMDApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoY2MgPD0gMHgwMzZG
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoY2MgPCAweDIwM0YpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpZiAoY2MgPD0gMHgyMDQwKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotaW5saW5lIGJvb2wgaXNWYWxpZExpdGVyYWxDaGFy
KFVDaGFyIGNjKQotewotICAgIGlmIChjYyA9PSAweEQgfHwgY2MgPT0gMHhBKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICBpZiAoY2MgPCAweDIwKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgaWYgKGNjID09ICciJyB8fCBjYyA9PSAnJicpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBpZiAoY2MgPCAweDNDKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoY2MgPT0gJzwn
IHx8IGNjID09ICc+JykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChjYyA8IDB4NUIp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChjYyA9PSAnXycpCi0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIGlmIChjYyA8PSAweDYwKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKGNjIDwgMHg3QikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLX0KLQotI2RlZmluZSBYTUxfQkVHSU5fU1RBVEUoc3RhdGVOYW1lKSBCRUdJTl9TVEFU
RShYTUxUb2tlbml6ZXJTdGF0ZSwgc3RhdGVOYW1lKQotI2RlZmluZSBYTUxfQURWQU5DRV9UTyhz
dGF0ZU5hbWUpIEFEVkFOQ0VfVE8oWE1MVG9rZW5pemVyU3RhdGUsIHN0YXRlTmFtZSkKLSNkZWZp
bmUgWE1MX1NXSVRDSF9UTyhzdGF0ZU5hbWUpIFNXSVRDSF9UTyhYTUxUb2tlbml6ZXJTdGF0ZSwg
c3RhdGVOYW1lKQotCi0jZGVmaW5lIEVRX1NUQVRFKEN1cnJlbnRTdGF0ZSwgTmV4dFN0YXRlKSBc
Ci0gICAgWE1MX0JFR0lOX1NUQVRFKEN1cnJlbnRTdGF0ZSkgeyAgICAgICBcCi0gICAgICAgIGlm
IChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKSAgICBcCi0gICAgICAgICAgICBYTUxfQURWQU5D
RV9UTyhDdXJyZW50U3RhdGUpOyBcCi0gICAgICAgIGVsc2UgaWYgKGNjID09ICc9JykgICAgICAg
ICAgICAgICBcCi0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhOZXh0U3RhdGUpOyAgICBcCi0g
ICAgICAgIGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBw
YXJzZUVycm9yKCk7ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICByZXR1cm4gZW1pdEVu
ZE9mRmlsZShzb3VyY2UpOyBcCi0gICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
RU5EX1NUQVRFKCkKLQotI2RlZmluZSBFUV9CRUZPUkVfVkFMVUVfU1RBVEVTKEVxdWFsc1N0YXRl
LCBCZWZvcmVWYWx1ZVN0YXRlLCBWYWx1ZVN0YXRlKSBcCi0gICAgRVFfU1RBVEUoRXF1YWxzU3Rh
dGUsIEJlZm9yZVZhbHVlU3RhdGUpICAgIFwKLSAgICBYTUxfQkVHSU5fU1RBVEUoQmVmb3JlVmFs
dWVTdGF0ZSkgeyAgICAgICAgXAotICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNj
KSkgICAgICAgICBcCi0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhCZWZvcmVWYWx1ZVN0YXRl
KTsgIFwKLSAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyInIHx8IGNjID09ICdcJycpIHsgICAgXAot
ICAgICAgICAgICAgbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9IGNjOyBcCi0gICAgICAg
ICAgICBYTUxfQURWQU5DRV9UTyhWYWx1ZVN0YXRlKTsgICAgICAgIFwKLSAgICAgICAgfSBlbHNl
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgcGFyc2VFcnJv
cigpOyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9m
RmlsZShzb3VyY2UpOyAgICAgIFwKLSAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgRU5EX1NUQVRFKCkKLQotWE1MVG9rZW5pemVyOjpYTUxUb2tlbml6ZXIoKQot
ewotICAgIHJlc2V0KCk7Ci19Ci0KLXRlbXBsYXRlPD4KLWlubGluZSBib29sIE1hcmt1cFRva2Vu
aXplckJhc2U8WE1MVG9rZW4sIFhNTFRva2VuaXplclN0YXRlPjo6c2hvdWxkU2tpcE51bGxDaGFy
YWN0ZXJzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgWE1MVG9rZW5p
emVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIFhNTFRva2VuJiB0b2tlbikK
LXsKLSAgICAvLyBJZiB3ZSBoYXZlIGEgdG9rZW4gaW4gcHJvZ3Jlc3MsIHRoZW4gd2UncmUgc3Vw
cG9zZWQgdG8gYmUgY2FsbGVkIGJhY2sKLSAgICAvLyB3aXRoIHRoZSBzYW1lIHRva2VuIHNvIHdl
IGNhbiBmaW5pc2ggaXQuCi0gICAgQVNTRVJUKCFtX3Rva2VuIHx8IG1fdG9rZW4gPT0gJnRva2Vu
IHx8IHRva2VuLnR5cGUoKSA9PSBYTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkKTsKLSAgICBt
X3Rva2VuID0gJnRva2VuOwotCi0gICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkgfHwgIW1faW5wdXRT
dHJlYW1QcmVwcm9jZXNzb3IucGVlayhzb3VyY2UpKQotICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZl
cmVkQ2hhcmFjdGVyVG9rZW4oKTsKLSAgICBVQ2hhciBjYyA9IG1faW5wdXRTdHJlYW1QcmVwcm9j
ZXNzb3IubmV4dElucHV0Q2hhcmFjdGVyKCk7Ci0KLSAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKLSAg
ICBYTUxfQkVHSU5fU1RBVEUoRGF0YVN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA9PSAnJicpCi0g
ICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhDaGFyYWN0ZXJSZWZlcmVuY2VTdGFydFN0YXRlKTsK
LSAgICAgICAgZWxzZSBpZiAoY2MgPT0gJzwnKSB7Ci0gICAgICAgICAgICBpZiAobV90b2tlbi0+
dHlwZSgpID09IFhNTFRva2VuVHlwZXM6OkNoYXJhY3RlcikgewotICAgICAgICAgICAgICAgIC8v
IFdlIGhhdmUgYSBidW5jaCBvZiBjaGFyYWN0ZXIgdG9rZW5zIHF1ZXVlZCB1cCB0aGF0IHdlCi0g
ICAgICAgICAgICAgICAgLy8gYXJlIGVtaXR0aW5nIGxhemlseSBoZXJlLgotICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgWE1MX0FEVkFOQ0Vf
VE8oVGFnT3BlblN0YXRlKTsKLSAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVBy
ZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKQotICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRP
ZkZpbGUoc291cmNlKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBidWZmZXJDaGFyYWN0
ZXIoY2MpOwotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oRGF0YVN0YXRlKTsKLSAgICAgICAg
fQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKENoYXJhY3Rl
clJlZmVyZW5jZVN0YXJ0U3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICcjJykgewotICAgICAg
ICAgICAgYm9vbCBub3RFbm91Z2hDaGFyYWN0ZXJzID0gZmFsc2U7Ci0gICAgICAgICAgICBTdHJp
bmdCdWlsZGVyIGRlY29kZWRDaGFyYWN0ZXI7Ci0gICAgICAgICAgICBpZiAoY29uc3VtZVhNTENo
YXJhY3RlclJlZmVyZW5jZShzb3VyY2UsIGRlY29kZWRDaGFyYWN0ZXIsIG5vdEVub3VnaENoYXJh
Y3RlcnMpKSB7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRlY29k
ZWRDaGFyYWN0ZXIubGVuZ3RoKCk7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgYnVmZmVyQ2hh
cmFjdGVyKGRlY29kZWRDaGFyYWN0ZXJbaV0pOwotICAgICAgICAgICAgICAgIFhNTF9TV0lUQ0hf
VE8oRGF0YVN0YXRlKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAobm90RW5vdWdoQ2hhcmFjdGVy
cykKLSAgICAgICAgICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsK
LSAgICAgICAgfSBlbHNlIGlmIChpc1ZhbGlkTmFtZVN0YXJ0KGNjKSkgewotICAgICAgICAgICAg
aWYgKG1fdG9rZW4tPnR5cGUoKSA9PSBYTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIFhNTFRva2VuaXplclN0
YXRlOjpDaGFyYWN0ZXJSZWZlcmVuY2VTdGFydFN0YXRlKTsKLSAgICAgICAgICAgIG1fdG9rZW4t
PmJlZ2luRW50aXR5KGNjKTsKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEVudGl0eVJlZmVy
ZW5jZVN0YXRlKTsKLSAgICAgICAgfQotICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgIHJl
dHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAg
ICBYTUxfQkVHSU5fU1RBVEUoRW50aXR5UmVmZXJlbmNlU3RhdGUpIHsKLSAgICAgICAgaWYgKGlz
VmFsaWROYW1lQ2hhcihjYykpIHsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvTmFtZShj
Yyk7Ci0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhFbnRpdHlSZWZlcmVuY2VTdGF0ZSk7Ci0g
ICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJzsnKQotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRS
ZXN1bWVJbihzb3VyY2UsIFhNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwotICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0
RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQot
ICAgIFhNTF9CRUdJTl9TVEFURShUYWdPcGVuU3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICch
JykKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKE1hcmt1cERlY2xhcmF0aW9uT3BlblN0YXRl
KTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPT0gJy8nKQotICAgICAgICAgICAgWE1MX0FEVkFOQ0Vf
VE8oRW5kVGFnT3BlblN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoaXNWYWxpZE5hbWVTdGFydChj
YykpIHsKLSAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luU3RhcnRUYWcoY2MpOwotICAgICAgICAg
ICAgWE1MX0FEVkFOQ0VfVE8oVGFnTmFtZVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIGlmIChjYyA9
PSAnPycpCi0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25U
YXJnZXRTdGFydFN0YXRlKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBwYXJzZUVycm9y
KCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAgICAgICB9
Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUoRW5kVGFnT3Bl
blN0YXRlKSB7Ci0gICAgICAgIGlmIChpc1ZhbGlkTmFtZVN0YXJ0KGNjKSkgewotICAgICAgICAg
ICAgbV90b2tlbi0+YmVnaW5FbmRUYWcoY2MpOwotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8o
RW5kVGFnTmFtZVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBhcnNlRXJy
b3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIFhNTF9CRUdJTl9TVEFURShUYWdOYW1l
U3RhdGUpIHsKLSAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCi0gICAgICAg
ICAgICBYTUxfQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOwotICAgICAgICBl
bHNlIGlmIChjYyA9PSAnLycpCi0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhTZWxmQ2xvc2lu
Z1N0YXJ0VGFnU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCi0gICAgICAgICAg
ICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgWE1MVG9rZW5pemVyU3RhdGU6OkRhdGFT
dGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGlzVmFsaWROYW1lQ2hhcihjYykpIHsKLSAgICAgICAg
ICAgIG1fdG9rZW4tPmFwcGVuZFRvTmFtZShjYyk7Ci0gICAgICAgICAgICBYTUxfQURWQU5DRV9U
TyhUYWdOYW1lU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc6JyAmJiAhbV90b2tl
bi0+aGFzUHJlZml4KCkpIHsKLSAgICAgICAgICAgIG1fdG9rZW4tPmVuZFByZWZpeCgpOwotICAg
ICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oVGFnTmFtZVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZG
aWxlKHNvdXJjZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIFhN
TF9CRUdJTl9TVEFURShFbmRUYWdOYW1lU3RhdGUpIHsKLSAgICAgICAgaWYgKGlzVG9rZW5pemVy
V2hpdGVzcGFjZShjYykpCi0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhFbmRUYWdTcGFjZVN0
YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQotICAgICAgICAgICAgcmV0dXJuIGVt
aXRBbmRSZXN1bWVJbihzb3VyY2UsIFhNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwotICAg
ICAgICBlbHNlIGlmIChpc1ZhbGlkTmFtZUNoYXIoY2MpKSB7Ci0gICAgICAgICAgICBtX3Rva2Vu
LT5hcHBlbmRUb05hbWUoY2MpOwotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oRW5kVGFnTmFt
ZVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnOicgJiYgIW1fdG9rZW4tPmhhc1By
ZWZpeCgpKSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5lbmRQcmVmaXgoKTsKLSAgICAgICAgICAg
IFhNTF9BRFZBTkNFX1RPKEVuZFRhZ05hbWVTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShz
b3VyY2UpOwotICAgICAgICB9Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBYTUxfQkVH
SU5fU1RBVEUoRW5kVGFnU3BhY2VTdGF0ZSkgewotICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0
ZXNwYWNlKGNjKSkKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEVuZFRhZ1NwYWNlU3RhdGUp
OwotICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFu
ZFJlc3VtZUluKHNvdXJjZSwgWE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7Ci0gICAgICAg
IGVsc2UgewotICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJuIGVt
aXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQot
Ci0gICAgWE1MX0JFR0lOX1NUQVRFKEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSkgewotICAgICAg
ICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKLSAgICAgICAgICAgIFhNTF9BRFZBTkNF
X1RPKEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICcv
JykKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7
Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5k
UmVzdW1lSW4oc291cmNlLCBYTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKLSAgICAgICAg
ZWxzZSBpZiAoaXNWYWxpZE5hbWVTdGFydChjYykpIHsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFk
ZE5ld0F0dHJpYnV0ZSgpOwotICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5BdHRyaWJ1dGVOYW1l
KHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKLSAgICAgICAgICAgIG1fdG9r
ZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFtZShjYyk7Ci0gICAgICAgICAgICBYTUxfQURWQU5DRV9U
TyhBdHRyaWJ1dGVOYW1lU3RhdGUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcGFy
c2VFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAg
ICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKEF0
dHJpYnV0ZU5hbWVTdGF0ZSkgewotICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNj
KSkgewotICAgICAgICAgICAgbV90b2tlbi0+ZW5kQXR0cmlidXRlTmFtZShzb3VyY2UubnVtYmVy
T2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7Ci0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhBZnRl
ckF0dHJpYnV0ZU5hbWVTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz0nKSB7Ci0g
ICAgICAgICAgICBtX3Rva2VuLT5lbmRBdHRyaWJ1dGVOYW1lKHNvdXJjZS5udW1iZXJPZkNoYXJh
Y3RlcnNDb25zdW1lZCgpKTsKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEJlZm9yZUF0dHJp
YnV0ZVZhbHVlU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKGlzVmFsaWROYW1lQ2hhcihjYykp
IHsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFtZShjYyk7Ci0gICAg
ICAgICAgICBYTUxfQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOwotICAgICAgICB9IGVs
c2UgaWYgKGNjID09ICc6JyAmJiAhbV90b2tlbi0+YXR0cmlidXRlSGFzUHJlZml4KCkpIHsKLSAg
ICAgICAgICAgIG1fdG9rZW4tPmVuZEF0dHJpYnV0ZVByZWZpeChzb3VyY2UubnVtYmVyT2ZDaGFy
YWN0ZXJzQ29uc3VtZWQoKSk7Ci0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhBdHRyaWJ1dGVO
YW1lU3RhdGUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcGFyc2VFcnJvcigpOwot
ICAgICAgICAgICAgbV90b2tlbi0+ZW5kQXR0cmlidXRlTmFtZShzb3VyY2UubnVtYmVyT2ZDaGFy
YWN0ZXJzQ29uc3VtZWQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3Vy
Y2UpOwotICAgICAgICB9Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBFUV9TVEFURShB
ZnRlckF0dHJpYnV0ZU5hbWVTdGF0ZSwgQmVmb3JlQXR0cmlidXRlVmFsdWVTdGF0ZSkKLQotICAg
IFhNTF9CRUdJTl9TVEFURShCZWZvcmVBdHRyaWJ1dGVWYWx1ZVN0YXRlKSB7Ci0gICAgICAgIGlm
IChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8o
QmVmb3JlQXR0cmlidXRlVmFsdWVTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICciJyB8
fCBjYyA9PSAnXCcnKSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkF0dHJpYnV0ZVZhbHVl
KHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpICsgMSk7Ci0gICAgICAgICAgICBt
X2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID0gY2M7Ci0gICAgICAgICAgICBYTUxfQURWQU5D
RV9UTyhBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNv
dXJjZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIFhNTF9CRUdJ
Tl9TVEFURShBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA9PSBt
X2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyKSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5lbmRB
dHRyaWJ1dGVWYWx1ZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7Ci0gICAg
ICAgICAgICBYTUxfQURWQU5DRV9UTyhBZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGUpOwot
ICAgICAgICB9IGVsc2UgaWYgKGNjID09ICcmJykKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RP
KENoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlVmFsdWVTdGF0ZSk7Ci0gICAgICAgIGVsc2Ug
aWYgKGNjID09ICc8JyB8fCBjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxl
TWFya2VyKSB7Ci0gICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBtX3Rva2Vu
LT5lbmRBdHRyaWJ1dGVWYWx1ZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7
Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShjYyk7Ci0g
ICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlKTsKLSAg
ICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKENo
YXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlVmFsdWVTdGF0ZSkgewotICAgICAgICBpZiAoY2Mg
PT0gJyMnKSB7Ci0gICAgICAgICAgICBib29sIG5vdEVub3VnaENoYXJhY3RlcnMgPSBmYWxzZTsK
LSAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgZGVjb2RlZENoYXJhY3RlcjsKLSAgICAgICAgICAg
IHNvdXJjZS5wdXNoKGNjKTsKLSAgICAgICAgICAgIGlmIChjb25zdW1lWE1MQ2hhcmFjdGVyUmVm
ZXJlbmNlKHNvdXJjZSwgZGVjb2RlZENoYXJhY3Rlciwgbm90RW5vdWdoQ2hhcmFjdGVycykpIHsK
LSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGVjb2RlZENoYXJhY3Rl
ci5sZW5ndGgoKTsgKytpKQotICAgICAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0
dHJpYnV0ZVZhbHVlKGRlY29kZWRDaGFyYWN0ZXJbaV0pOwotICAgICAgICAgICAgICAgIFhNTF9B
RFZBTkNFX1RPKEF0dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGUpOwotICAgICAgICAgICAgfSBlbHNl
IGlmIChub3RFbm91Z2hDaGFyYWN0ZXJzKQotICAgICAgICAgICAgICAgIHJldHVybiBoYXZlQnVm
ZmVyZWRDaGFyYWN0ZXJUb2tlbigpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNv
dXJjZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3Rv
a2VuLT5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKCcmJyk7Ci0gICAgICAgICAgICBtX3Rva2VuLT5h
cHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGNjKTsKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEF0
dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGUpOwotICAgICAgICB9Ci0gICAgfQotICAgIEVORF9TVEFU
RSgpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUoQWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRl
KSB7Ci0gICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQotICAgICAgICAgICAg
WE1MX0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKLSAgICAgICAgZWxzZSBp
ZiAoY2MgPT0gJy8nKQotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFy
dFRhZ1N0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQotICAgICAgICAgICAgcmV0
dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIFhNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUp
OwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAg
IHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5E
X1NUQVRFKCkKLQotICAgIFhNTF9CRUdJTl9TVEFURShTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUp
IHsKLSAgICAgICAgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgbV90b2tlbi0+c2V0U2Vs
ZkNsb3NpbmcoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBY
TUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKLSAgICAgICAgfQotICAgICAgICBwYXJzZUVy
cm9yKCk7Ci0gICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgfQotICAg
IEVORF9TVEFURSgpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUoUHJvY2Vzc2luZ0luc3RydWN0aW9u
VGFyZ2V0U3RhcnRTdGF0ZSkgewotICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywg
eG1sU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJ4bWwiKSkpOwotICAgICAgICAvLyBGSVhNRTogdGhp
cyBwcm9iYWJseSBzaG91bGRuJ3QgYmUgY2FzZS1pbnNlbnNpdGl2ZSwgYnV0IEkgZG9uJ3Qga25v
dyBpZiBwZW9wbGUgdHJ5IGNhcGl0YWxpemluZyBpdCBldmVyLgotICAgICAgICBpZiAoY2MgPT0g
J3gnIHx8IGNjID09ICdYJykgewotICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhl
YWRSZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZElnbm9yaW5nQ2FzZSh4bWxTdHJpbmcp
OwotICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7
Ci0gICAgICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVElnbm9yaW5nQ2FzZShzb3Vy
Y2UsICJ4bWwiKTsKLSAgICAgICAgICAgICAgICBYTUxfU1dJVENIX1RPKFhNTERlY2xBZnRlclhN
TFN0YXRlKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmlu
Zzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKLSAgICAgICAgICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZl
cmVkQ2hhcmFjdGVyVG9rZW4oKTsKLSAgICAgICAgfQotICAgICAgICBpZiAobV90b2tlbi0+dHlw
ZSgpID09IFhNTFRva2VuVHlwZXM6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbiAmJiBpc1ZhbGlkTmFt
ZUNoYXIoY2MpKQotICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb25UYXJnZXQoY2MpOwotICAgICAgICBlbHNlIGlmIChpc1ZhbGlkTmFtZVN0YXJ0KGNjKSkK
LSAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luUHJvY2Vzc2luZ0luc3RydWN0aW9uKGNjKTsKLSAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1
cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAgICAgICB9Ci0gICAgICAgIFhNTF9BRFZBTkNF
X1RPKFByb2Nlc3NpbmdJbnN0cnVjdGlvblRhcmdldFN0YXRlKTsKLSAgICB9Ci0gICAgRU5EX1NU
QVRFKCkKLQotICAgIFhNTF9CRUdJTl9TVEFURShYTUxEZWNsQWZ0ZXJYTUxTdGF0ZSkgewotICAg
ICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkgewotICAgICAgICAgICAgbV90b2tl
bi0+YmVnaW5YTUxEZWNsYXJhdGlvbigpOwotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oWE1M
RGVjbEJlZm9yZVZlcnNpb25OYW1lU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKGlzVmFsaWRO
YW1lQ2hhcihjYykpIHsKLSAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uKCd4Jyk7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1Byb2Nlc3NpbmdJbnN0
cnVjdGlvblRhcmdldCgnbScpOwotICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Qcm9jZXNz
aW5nSW5zdHJ1Y3Rpb25UYXJnZXQoJ2wnKTsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRv
UHJvY2Vzc2luZ0luc3RydWN0aW9uVGFyZ2V0KGNjKTsKLSAgICAgICAgICAgIFhNTF9BRFZBTkNF
X1RPKFByb2Nlc3NpbmdJbnN0cnVjdGlvblRhcmdldFN0YXRlKTsKLSAgICAgICAgfQotICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBl
bWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkK
LQotICAgIFhNTF9CRUdJTl9TVEFURShYTUxEZWNsQmVmb3JlVmVyc2lvbk5hbWVTdGF0ZSkgewot
ICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgdmVyc2lvblN0cmluZywgKEFTQ0lJ
TGl0ZXJhbCgidmVyc2lvbiIpKSk7Ci0gICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2Uo
Y2MpKQotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oWE1MRGVjbEJlZm9yZVZlcnNpb25OYW1l
U3RhdGUpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9v
a0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWQodmVyc2lvblN0cmluZyk7Ci0g
ICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKLSAg
ICAgICAgICAgICAgICBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUKHNvdXJjZSwgInZlcnNpb24iKTsK
LSAgICAgICAgICAgICAgICBYTUxfU1dJVENIX1RPKFhNTERlY2xBZnRlclZlcnNpb25OYW1lU3Rh
dGUpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpO
b3RFbm91Z2hDaGFyYWN0ZXJzKQotICAgICAgICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVyZWRD
aGFyYWN0ZXJUb2tlbigpOwotICAgICAgICB9Ci0gICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAg
ICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkK
LQotICAgIEVRX0JFRk9SRV9WQUxVRV9TVEFURVMoWE1MRGVjbEFmdGVyVmVyc2lvbk5hbWVTdGF0
ZSwgWE1MRGVjbEJlZm9yZVZlcnNpb25WYWx1ZVN0YXRlLCBYTUxEZWNsQmVmb3JlVmVyc2lvbk9u
ZVBvaW50U3RhdGUpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUoWE1MRGVjbEJlZm9yZVZlcnNpb25P
bmVQb2ludFN0YXRlKSB7Ci0gICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBvbmVQ
b2ludFN0cmluZywgKEFTQ0lJTGl0ZXJhbCgiMS4iKSkpOwotICAgICAgICBTZWdtZW50ZWRTdHJp
bmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkKG9uZVBvaW50U3Ry
aW5nKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7
Ci0gICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVCgnMScpOwotICAgICAgICAgICAg
c291cmNlLmFkdmFuY2VBbmRBU1NFUlQoJy4nKTsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVu
ZFRvWE1MVmVyc2lvbignMScpOwotICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9YTUxWZXJz
aW9uKCcuJyk7Ci0gICAgICAgICAgICBYTUxfU1dJVENIX1RPKFhNTERlY2xWZXJzaW9uVmFsdWVR
dW90ZWRTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmlu
Zzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKLSAgICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVyZWRD
aGFyYWN0ZXJUb2tlbigpOwotICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgIHJldHVybiBl
bWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBYTUxf
QkVHSU5fU1RBVEUoWE1MRGVjbFZlcnNpb25WYWx1ZVF1b3RlZFN0YXRlKSB7Ci0gICAgICAgIGlm
IChjYyA9PSBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyKSB7Ci0gICAgICAgICAgICBYTUxf
QURWQU5DRV9UTyhYTUxEZWNsQWZ0ZXJWZXJzaW9uU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYg
KGlzQVNDSUlEaWdpdChjYykpIHsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvWE1MVmVy
c2lvbihjYyk7Ci0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhYTUxEZWNsVmVyc2lvblZhbHVl
UXVvdGVkU3RhdGUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcGFyc2VFcnJvcigp
OwotICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICAgICAgfQot
ICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKFhNTERlY2xBZnRl
clZlcnNpb25TdGF0ZSkgewotICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkK
LSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFhNTERlY2xCZWZvcmVFbmNvZGluZ05hbWVTdGF0
ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICc/JykKLSAgICAgICAgICAgIFhNTF9BRFZBTkNF
X1RPKFhNTERlY2xDbG9zZVN0YXRlKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBwYXJz
ZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAg
ICAgICB9Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUoWE1M
RGVjbEJlZm9yZUVuY29kaW5nTmFtZVN0YXRlKSB7Ci0gICAgICAgIERFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBlbmNvZGluZ1N0cmluZywgKEFTQ0lJTGl0ZXJhbCgiZW5jb2RpbmciKSkpOwot
ICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc3RhbmRhbG9uZVN0cmluZywgKEFT
Q0lJTGl0ZXJhbCgic3RhbmRhbG9uZSIpKSk7Ci0gICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRl
c3BhY2UoY2MpKQotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oWE1MRGVjbEJlZm9yZUVuY29k
aW5nTmFtZVN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPT0gJ2UnKSB7Ci0gICAgICAgICAg
ICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0Fo
ZWFkKGVuY29kaW5nU3RyaW5nKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVk
U3RyaW5nOjpEaWRNYXRjaCkgewotICAgICAgICAgICAgICAgIGFkdmFuY2VTdHJpbmdBbmRBU1NF
UlQoc291cmNlLCAiZW5jb2RpbmciKTsKLSAgICAgICAgICAgICAgICBYTUxfU1dJVENIX1RPKFhN
TERlY2xBZnRlckVuY29kaW5nTmFtZVN0YXRlKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAocmVz
dWx0ID09IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKLSAgICAgICAgICAg
ICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKLSAgICAgICAgfSBlbHNl
IGlmIChjYyA9PSAncycpIHsKLSAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFk
UmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWQoc3RhbmRhbG9uZVN0cmluZyk7Ci0gICAg
ICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKLSAgICAg
ICAgICAgICAgICBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUKHNvdXJjZSwgInN0YW5kYWxvbmUiKTsK
LSAgICAgICAgICAgICAgICBYTUxfU1dJVENIX1RPKFhNTERlY2xBZnRlclN0YW5kYWxvbmVOYW1l
U3RhdGUpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5n
OjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQotICAgICAgICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVy
ZWRDaGFyYWN0ZXJUb2tlbigpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc/JykKLSAgICAg
ICAgICAgIFhNTF9BRFZBTkNFX1RPKFhNTERlY2xDbG9zZVN0YXRlKTsKLSAgICAgICAgcGFyc2VF
cnJvcigpOwotICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAgIH0KLSAg
ICBFTkRfU1RBVEUoKQotCi0gICAgRVFfQkVGT1JFX1ZBTFVFX1NUQVRFUyhYTUxEZWNsQWZ0ZXJF
bmNvZGluZ05hbWVTdGF0ZSwgWE1MRGVjbEJlZm9yZUVuY29kaW5nVmFsdWVTdGF0ZSwgWE1MRGVj
bEVuY29kaW5nVmFsdWVTdGFydFF1b3RlZFN0YXRlKQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKFhN
TERlY2xFbmNvZGluZ1ZhbHVlU3RhcnRRdW90ZWRTdGF0ZSkgewotICAgICAgICBpZiAoaXNBU0NJ
SUFscGhhKGNjKSkgewotICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5YTUxFbmNvZGluZyhjYyk7
Ci0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhYTUxEZWNsRW5jb2RpbmdWYWx1ZVF1b3RlZFN0
YXRlKTsKLSAgICAgICAgfQotICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgIHJldHVybiBl
bWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBYTUxf
QkVHSU5fU1RBVEUoWE1MRGVjbEVuY29kaW5nVmFsdWVRdW90ZWRTdGF0ZSkgewotICAgICAgICBp
ZiAoY2MgPT0gbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlcikgewotICAgICAgICAgICAgWE1M
X0FEVkFOQ0VfVE8oWE1MRGVjbEFmdGVyRW5jb2RpbmdTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAoaXNBU0NJSUFscGhhbnVtZXJpYyhjYykgfHwgY2MgPT0gJy0nKSB7Ci0gICAgICAgICAgICBt
X3Rva2VuLT5hcHBlbmRUb1hNTEVuY29kaW5nKGNjKTsKLSAgICAgICAgICAgIFhNTF9BRFZBTkNF
X1RPKFhNTERlY2xFbmNvZGluZ1ZhbHVlUXVvdGVkU3RhdGUpOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZp
bGUoc291cmNlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgWE1M
X0JFR0lOX1NUQVRFKFhNTERlY2xBZnRlckVuY29kaW5nU3RhdGUpIHsKLSAgICAgICAgaWYgKGlz
VG9rZW5pemVyV2hpdGVzcGFjZShjYykpCi0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhYTUxE
ZWNsQmVmb3JlU3RhbmRhbG9uZU5hbWVTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICc/
JykKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFhNTERlY2xDbG9zZVN0YXRlKTsKLSAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1cm4g
ZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAgICAgICB9Ci0gICAgfQotICAgIEVORF9TVEFURSgp
Ci0KLSAgICBYTUxfQkVHSU5fU1RBVEUoWE1MRGVjbEJlZm9yZVN0YW5kYWxvbmVOYW1lU3RhdGUp
IHsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHN0YW5kYWxvbmVTdHJpbmcs
IChBU0NJSUxpdGVyYWwoInN0YW5kYWxvbmUiKSkpOwotICAgICAgICBpZiAoaXNUb2tlbml6ZXJX
aGl0ZXNwYWNlKGNjKSkKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFhNTERlY2xCZWZvcmVT
dGFuZGFsb25lTmFtZVN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPT0gJ3MnKSB7Ci0gICAg
ICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2Uu
bG9va0FoZWFkKHN0YW5kYWxvbmVTdHJpbmcpOwotICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBT
ZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7Ci0gICAgICAgICAgICAgICAgYWR2YW5jZVN0cmlu
Z0FuZEFTU0VSVChzb3VyY2UsICJzdGFuZGFsb25lIik7Ci0gICAgICAgICAgICAgICAgWE1MX1NX
SVRDSF9UTyhYTUxEZWNsQWZ0ZXJTdGFuZGFsb25lTmFtZVN0YXRlKTsKLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykK
LSAgICAgICAgICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKLSAg
ICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPycpCi0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhY
TUxEZWNsQ2xvc2VTdGF0ZSk7Ci0gICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgcmV0dXJu
IGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIEVR
X0JFRk9SRV9WQUxVRV9TVEFURVMoWE1MRGVjbEFmdGVyU3RhbmRhbG9uZU5hbWVTdGF0ZSwgWE1M
RGVjbEJlZm9yZVN0YW5kYWxvbmVWYWx1ZVN0YXRlLCBYTUxEZWNsU3RhbmRhbG9uZVZhbHVlUXVv
dGVkU3RhdGUpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUoWE1MRGVjbFN0YW5kYWxvbmVWYWx1ZVF1
b3RlZFN0YXRlKSB7Ci0gICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB5ZXNTdHJp
bmcsIChBU0NJSUxpdGVyYWwoInllc1wiIikpKTsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIG5vU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJub1wiIikpKTsKLSAgICAgICAgaWYg
KGNjID09ICd5JykgewotICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1
bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZCh5ZXNTdHJpbmcpOwotICAgICAgICAgICAgaWYg
KHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7Ci0gICAgICAgICAgICAgICAg
YWR2YW5jZVN0cmluZ0FuZEFTU0VSVChzb3VyY2UsICJ5ZXNcIiIpOwotICAgICAgICAgICAgICAg
IG1fdG9rZW4tPnNldFhNTFN0YW5kYWxvbmUodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgWE1MX1NX
SVRDSF9UTyhYTUxEZWNsQWZ0ZXJTdGFuZGFsb25lU3RhdGUpOwotICAgICAgICAgICAgfSBlbHNl
IGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQotICAg
ICAgICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOwotICAgICAg
ICB9IGVsc2UgaWYgKGNjID09ICduJykgewotICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpM
b29rQWhlYWRSZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZChub1N0cmluZyk7Ci0gICAg
ICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKLSAgICAg
ICAgICAgICAgICBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUKHNvdXJjZSwgIm5vXCIiKTsKLSAgICAg
ICAgICAgICAgICBtX3Rva2VuLT5zZXRYTUxTdGFuZGFsb25lKGZhbHNlKTsKLSAgICAgICAgICAg
ICAgICBYTUxfU1dJVENIX1RPKFhNTERlY2xBZnRlclN0YW5kYWxvbmVTdGF0ZSk7Ci0gICAgICAg
ICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJh
Y3RlcnMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2Vu
KCk7Ci0gICAgICAgIH0KLSAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICByZXR1cm4gZW1p
dEVuZE9mRmlsZShzb3VyY2UpOwotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgWE1MX0JF
R0lOX1NUQVRFKFhNTERlY2xBZnRlclN0YW5kYWxvbmVTdGF0ZSkgewotICAgICAgICBpZiAoaXNU
b2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFhNTERl
Y2xBZnRlclN0YW5kYWxvbmVTdGF0ZSk7Ci0gICAgICAgIGlmIChjYyA9PSAnPycpCi0gICAgICAg
ICAgICBYTUxfQURWQU5DRV9UTyhYTUxEZWNsQ2xvc2VTdGF0ZSk7Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZp
bGUoc291cmNlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgWE1M
X0JFR0lOX1NUQVRFKFhNTERlY2xDbG9zZVN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA9PSAnPicp
Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgWE1MVG9rZW5pemVy
U3RhdGU6OkRhdGFTdGF0ZSk7Ci0gICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgcmV0dXJu
IGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIFhN
TF9CRUdJTl9TVEFURShQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UYXJnZXRTdGF0ZSkgewotICAgICAg
ICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkgewotICAgICAgICAgICAgWE1MX0FEVkFO
Q0VfVE8oUHJvY2Vzc2luZ0luc3RydWN0aW9uQWZ0ZXJUYXJnZXRTdGF0ZSk7Ci0gICAgICAgIH0g
ZWxzZSBpZiAoaXNWYWxpZE5hbWVDaGFyKGNjKSkgewotICAgICAgICAgICAgbV90b2tlbi0+YXBw
ZW5kVG9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UYXJnZXQoY2MpOwotICAgICAgICAgICAgWE1MX0FE
VkFOQ0VfVE8oUHJvY2Vzc2luZ0luc3RydWN0aW9uVGFyZ2V0U3RhdGUpOwotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRF
bmRPZkZpbGUoc291cmNlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0g
ICAgWE1MX0JFR0lOX1NUQVRFKFByb2Nlc3NpbmdJbnN0cnVjdGlvbkFmdGVyVGFyZ2V0U3RhdGUp
IHsKLSAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCi0gICAgICAgICAgICBY
TUxfQURWQU5DRV9UTyhQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25BZnRlclRhcmdldFN0YXRlKTsKLSAg
ICAgICAgZWxzZSBpZiAoY2MgPT0gJz8nKQotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oUHJv
Y2Vzc2luZ0luc3RydWN0aW9uQ2xvc2VTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09IElu
cHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKLSAgICAgICAgICAgIHBh
cnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1Byb2Nlc3NpbmdJ
bnN0cnVjdGlvbkRhdGEoY2MpOwotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oUHJvY2Vzc2lu
Z0luc3RydWN0aW9uRGF0YVN0YXRlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUo
KQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKFByb2Nlc3NpbmdJbnN0cnVjdGlvbkRhdGFTdGF0ZSkg
ewotICAgICAgICBpZiAoY2MgPT0gJz8nKQotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oUHJv
Y2Vzc2luZ0luc3RydWN0aW9uQ2xvc2VTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09IElu
cHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKLSAgICAgICAgICAgIHBh
cnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1Byb2Nlc3NpbmdJ
bnN0cnVjdGlvbkRhdGEoY2MpOwotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oUHJvY2Vzc2lu
Z0luc3RydWN0aW9uRGF0YVN0YXRlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUo
KQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKFByb2Nlc3NpbmdJbnN0cnVjdGlvbkNsb3NlU3RhdGUp
IHsKLSAgICAgICAgaWYgKGNjID09ICc+JykKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVz
dW1lSW4oc291cmNlLCBYTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKLSAgICAgICAgaWYg
KGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKLSAgICAg
ICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNv
dXJjZSk7Ci0gICAgICAgIH0KLSAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb25EYXRhKCc/Jyk7Ci0gICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvUHJvY2Vzc2luZ0lu
c3RydWN0aW9uRGF0YShjYyk7Ci0gICAgICAgIFhNTF9BRFZBTkNFX1RPKFByb2Nlc3NpbmdJbnN0
cnVjdGlvbkRhdGFTdGF0ZSk7Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBYTUxfQkVH
SU5fU1RBVEUoTWFya3VwRGVjbGFyYXRpb25PcGVuU3RhdGUpIHsKLSAgICAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIGRhc2hEYXNoU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCItLSIpKSk7
Ci0gICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBkb2N0eXBlU3RyaW5nLCAoQVND
SUlMaXRlcmFsKCJkb2N0eXBlIikpKTsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJp
bmcsIGNkYXRhU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJbQ0RBVEFbIikpKTsKLSAgICAgICAgaWYg
KGNjID09ICctJykgewotICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1
bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZChkYXNoRGFzaFN0cmluZyk7Ci0gICAgICAgICAg
ICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKLSAgICAgICAgICAg
ICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVCgnLScpOwotICAgICAgICAgICAgICAgIHNvdXJj
ZS5hZHZhbmNlQW5kQVNTRVJUKCctJyk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5D
b21tZW50KCk7Ci0gICAgICAgICAgICAgICAgWE1MX1NXSVRDSF9UTyhDb21tZW50U3RhdGUpOwot
ICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91
Z2hDaGFyYWN0ZXJzKQotICAgICAgICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVyZWRDaGFyYWN0
ZXJUb2tlbigpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdEJyB8fCBjYyA9PSAnZCcpIHsK
LSAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNv
dXJjZS5sb29rQWhlYWRJZ25vcmluZ0Nhc2UoZG9jdHlwZVN0cmluZyk7Ci0gICAgICAgICAgICBp
ZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKLSAgICAgICAgICAgICAg
ICBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUSWdub3JpbmdDYXNlKHNvdXJjZSwgImRvY3R5cGUiKTsK
LSAgICAgICAgICAgICAgICBYTUxfU1dJVENIX1RPKEJlZm9yZURPQ1RZUEVOYW1lU3RhdGUpOwot
ICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91
Z2hDaGFyYWN0ZXJzKQotICAgICAgICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVyZWRDaGFyYWN0
ZXJUb2tlbigpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdbJykgewotICAgICAgICAgICAg
U2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVh
ZChjZGF0YVN0cmluZyk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmlu
Zzo6RGlkTWF0Y2gpIHsKLSAgICAgICAgICAgICAgICBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUKHNv
dXJjZSwgIltDREFUQVsiKTsKLSAgICAgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkNEQVRBKCk7
Ci0gICAgICAgICAgICAgICAgWE1MX1NXSVRDSF9UTyhDREFUQVNlY3Rpb25TdGF0ZSk7Ci0gICAg
ICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENo
YXJhY3RlcnMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRv
a2VuKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICByZXR1cm4g
ZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgWE1M
X0JFR0lOX1NUQVRFKENvbW1lbnRTdGF0ZSkgewotICAgICAgICBpZiAoY2MgPT0gJy0nKQotICAg
ICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQ29tbWVudERhc2hTdGF0ZSk7Ci0gICAgICAgIGVsc2Ug
aWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKLSAg
ICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxl
KHNvdXJjZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRU
b0NvbW1lbnQoY2MpOwotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsK
LSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgWE1MX0JFR0lOX1NUQVRF
KENvbW1lbnREYXNoU3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICctJykKLSAgICAgICAgICAg
IFhNTF9BRFZBTkNFX1RPKENvbW1lbnRFbmRTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09
IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKLSAgICAgICAgICAg
IHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQo
Jy0nKTsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7Ci0gICAgICAg
ICAgICBYTUxfQURWQU5DRV9UTyhDb21tZW50U3RhdGUpOwotICAgICAgICB9Ci0gICAgfQotICAg
IEVORF9TVEFURSgpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUoQ29tbWVudEVuZFN0YXRlKSB7Ci0g
ICAgICAgIGlmIChjYyA9PSAnPicpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUlu
KHNvdXJjZSwgWE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7Ci0gICAgICAgIGlmIChjYyA9
PSAnLScpIHsKLSAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBl
bWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgICAgIH0KLSAgICAgICAgcGFyc2VFcnJvcigpOwot
ICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgWE1MVG9rZW5pemVyU3Rh
dGU6OkRhdGFTdGF0ZSk7Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBYTUxfQkVHSU5f
U1RBVEUoQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSkgewotICAgICAgICBpZiAoaXNUb2tlbml6ZXJX
aGl0ZXNwYWNlKGNjKSkKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVO
YW1lU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChpc1ZhbGlkTmFtZVN0YXJ0KGNjKSkgewotICAg
ICAgICAgICAgbV90b2tlbi0+YmVnaW5ET0NUWVBFKGNjKTsKLSAgICAgICAgICAgIFhNTF9BRFZB
TkNFX1RPKERPQ1RZUEVOYW1lU3RhdGUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
cGFyc2VFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsK
LSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgWE1MX0JFR0lOX1NUQVRF
KERPQ1RZUEVOYW1lU3RhdGUpIHsKLSAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShj
YykpCi0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVOYW1lU3RhdGUpOwot
ICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJl
c3VtZUluKHNvdXJjZSwgWE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7Ci0gICAgICAgIGVs
c2UgaWYgKGlzVmFsaWROYW1lQ2hhcihjYykpIHsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVu
ZFRvTmFtZShjYyk7Ci0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhET0NUWVBFTmFtZVN0YXRl
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAg
ICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
RU5EX1NUQVRFKCkKLQotICAgIFhNTF9CRUdJTl9TVEFURShBZnRlckRPQ1RZUEVOYW1lU3RhdGUp
IHsKLSAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCi0gICAgICAgICAgICBY
TUxfQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVOYW1lU3RhdGUpOwotICAgICAgICBpZiAoY2MgPT0g
Jz4nKQotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIFhNTFRva2Vu
aXplclN0YXRlOjpEYXRhU3RhdGUpOwotICAgICAgICBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVw
cm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewotICAgICAgICAgICAgcGFyc2VFcnJvcigpOwot
ICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICAgICAgfQotICAg
ICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcHVibGljU3RyaW5nLCAoQVNDSUlMaXRl
cmFsKCJwdWJsaWMiKSkpOwotICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc3lz
dGVtU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJzeXN0ZW0iKSkpOwotICAgICAgICBpZiAoY2MgPT0g
J1AnIHx8IGNjID09ICdwJykgewotICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhl
YWRSZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZElnbm9yaW5nQ2FzZShwdWJsaWNTdHJp
bmcpOwotICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNo
KSB7Ci0gICAgICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVElnbm9yaW5nQ2FzZShz
b3VyY2UsICJwdWJsaWMiKTsKLSAgICAgICAgICAgICAgICBYTUxfU1dJVENIX1RPKEFmdGVyRE9D
VFlQRVB1YmxpY0tleXdvcmRTdGF0ZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9
PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAo
Y2MgPT0gJ1MnIHx8IGNjID09ICdzJykgewotICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpM
b29rQWhlYWRSZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZElnbm9yaW5nQ2FzZShzeXN0
ZW1TdHJpbmcpOwotICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRp
ZE1hdGNoKSB7Ci0gICAgICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVElnbm9yaW5n
Q2FzZShzb3VyY2UsICJzeXN0ZW0iKTsKLSAgICAgICAgICAgICAgICBYTUxfU1dJVENIX1RPKEFm
dGVyRE9DVFlQRVN5c3RlbUtleXdvcmRTdGF0ZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHJl
c3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoY2MgPT0gJ1snKQotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQ
RUludGVybmFsU3Vic2V0U3RhdGUpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHBhcnNl
RXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIFhNTF9CRUdJTl9TVEFURShBZnRl
ckRPQ1RZUEVQdWJsaWNLZXl3b3JkU3RhdGUpIHsKLSAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hp
dGVzcGFjZShjYykpCi0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFUHVi
bGljSWRlbnRpZmllclN0YXRlKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBwYXJzZUVy
cm9yKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAgICAg
ICB9Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUoQmVmb3Jl
RE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSkgewotICAgICAgICBpZiAoaXNUb2tlbml6ZXJX
aGl0ZXNwYWNlKGNjKSkKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVQ
dWJsaWNJZGVudGlmaWVyU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicgfHwgY2Mg
PT0gJ1wnJykgewotICAgICAgICAgICAgbV90b2tlbi0+c2V0UHVibGljSWRlbnRpZmllclRvRW1w
dHlTdHJpbmcoKTsKLSAgICAgICAgICAgIG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPSBj
YzsKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyUXVv
dGVkU3RhdGUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcGFyc2VFcnJvcigpOwot
ICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICAgICAgfQotICAg
IH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKERPQ1RZUEVQdWJsaWNJ
ZGVudGlmaWVyUXVvdGVkU3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09IG1fYWRkaXRpb25hbEFs
bG93ZWRDaGFyYWN0ZXIpCi0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVQ
dWJsaWNJZGVudGlmaWVyU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVh
bVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7Ci0gICAgICAgICAgICBwYXJzZUVycm9y
KCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9QdWJsaWNJZGVudGlmaWVyKGNj
KTsKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyUXVv
dGVkU3RhdGUpOwotICAgICAgICB9Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBYTUxf
QkVHSU5fU1RBVEUoQWZ0ZXJET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlKSB7Ci0gICAgICAg
IGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQotICAgICAgICAgICAgWE1MX0FEVkFOQ0Vf
VE8oQmVmb3JlRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSk7Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZp
bGUoc291cmNlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgWE1M
X0JFR0lOX1NUQVRFKEFmdGVyRE9DVFlQRVN5c3RlbUtleXdvcmRTdGF0ZSkgewotICAgICAgICBp
ZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RP
KEJlZm9yZURPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUpOwotICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxl
KHNvdXJjZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIFhNTF9C
RUdJTl9TVEFURShCZWZvcmVET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKSB7Ci0gICAgICAg
IGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQotICAgICAgICAgICAgWE1MX0FEVkFOQ0Vf
VE8oQmVmb3JlRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYg
KGNjID09ICciJyB8fCBjYyA9PSAnXCcnKSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5zZXRTeXN0
ZW1JZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwotICAgICAgICAgICAgbV9hZGRpdGlvbmFsQWxs
b3dlZENoYXJhY3RlciA9IGNjOwotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oRE9DVFlQRVN5
c3RlbUlkZW50aWZpZXJRdW90ZWRTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2Up
OwotICAgICAgICB9Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBYTUxfQkVHSU5fU1RB
VEUoRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJRdW90ZWRTdGF0ZSkgewotICAgICAgICBpZiAoY2Mg
PT0gbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlcikKLSAgICAgICAgICAgIFhNTF9BRFZBTkNF
X1RPKEFmdGVyRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYg
KGlzVmFsaWRMaXRlcmFsQ2hhcihjYykpIHsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRv
U3lzdGVtSWRlbnRpZmllcihjYyk7Ci0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhET0NUWVBF
U3lzdGVtSWRlbnRpZmllclF1b3RlZFN0YXRlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJj
ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIFhNTF9CRUdJTl9T
VEFURShBZnRlckRPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUpIHsKLSAgICAgICAgaWYgKGlz
VG9rZW5pemVyV2hpdGVzcGFjZShjYykpCi0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhBZnRl
ckRPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSAn
PicpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgWE1MVG9rZW5p
emVyU3RhdGU6OkRhdGFTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICdbJykKLSAgICAg
ICAgICAgIFhNTF9BRFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVJbnRlcm5hbFN1YnNldFN0YXRlKTsK
LSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAgICAgICB9Ci0gICAgfQotICAgIEVORF9T
VEFURSgpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUoQmVmb3JlRE9DVFlQRUludGVybmFsU3Vic2V0
U3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICddJykKLSAgICAgICAgICAgIFhNTF9BRFZBTkNF
X1RPKEFmdGVyRE9DVFlQRUludGVybmFsU3Vic2V0U3RhdGUpOwotICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIC8vIEZJWE1FIGltcGxlbWVudCBpbnRlcm5hbCBzdWJzZXQKLSAgICAgICAgICAg
IHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIFhNTF9CRUdJTl9TVEFU
RShBZnRlckRPQ1RZUEVJbnRlcm5hbFN1YnNldFN0YXRlKSB7Ci0gICAgICAgIGlmIChpc1Rva2Vu
aXplcldoaXRlc3BhY2UoY2MpKQotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQWZ0ZXJET0NU
WVBFSW50ZXJuYWxTdWJzZXRTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKLSAg
ICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBYTUxUb2tlbml6ZXJTdGF0
ZTo6RGF0YVN0YXRlKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBwYXJzZUVycm9yKCk7
Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAgICAgICB9Ci0g
ICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUoQ0RBVEFTZWN0aW9u
U3RhdGUpIHsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNsb3NlU3RyaW5n
LCAoQVNDSUlMaXRlcmFsKCJdXT4iKSkpOwotICAgICAgICBpZiAoY2MgPT0gJ10nKSB7Ci0gICAg
ICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2Uu
bG9va0FoZWFkKGNsb3NlU3RyaW5nKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVu
dGVkU3RyaW5nOjpEaWRNYXRjaCkgewotICAgICAgICAgICAgICAgIGFkdmFuY2VTdHJpbmdBbmRB
U1NFUlQoc291cmNlLCAiXV0+Iik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNv
bnN1bWVJbihzb3VyY2UsIFhNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3Vn
aENoYXJhY3RlcnMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3Rl
clRva2VuKCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJv
Y2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKLSAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAg
ICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgbV90b2tlbi0+YXBwZW5kVG9DREFUQShjYyk7Ci0gICAgICAgIFhNTF9BRFZBTkNFX1RPKENE
QVRBU2VjdGlvblN0YXRlKTsKLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIH0KLQotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotaW5saW5lIHZv
aWQgWE1MVG9rZW5pemVyOjpidWZmZXJDaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyKQotewotICAg
IEFTU0VSVChjaGFyYWN0ZXIgIT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1h
cmtlcik7Ci0gICAgbV90b2tlbi0+ZW5zdXJlSXNDaGFyYWN0ZXJUb2tlbigpOwotICAgIG1fdG9r
ZW4tPmFwcGVuZFRvQ2hhcmFjdGVyKGNoYXJhY3Rlcik7Ci19Ci0KLWlubGluZSB2b2lkIFhNTFRv
a2VuaXplcjo6cGFyc2VFcnJvcigpCi17Ci0gICAgbV9lcnJvckR1cmluZ1BhcnNpbmcgPSB0cnVl
OwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRva2Vu
aXplci5oIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbml6ZXIuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I5NDlhODQzMWVkZDU0NDk4Y2RjNjQzOTRhODIzZDMz
YTVkODdlMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRva2VuaXplci5oCisrKyAvZGV2L251bGwKQEAg
LTEsMTI0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI2lmbmRlZiBYTUxUb2tlbml6ZXJfaAotI2RlZmluZSBYTUxUb2tlbml6ZXJfaAotCi0j
aW5jbHVkZSAiTWFya3VwVG9rZW5pemVyQmFzZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIFhNTFRva2VuOwotCi1jbGFzcyBYTUxUb2tlbml6ZXJTdGF0ZSB7Ci1wdWJsaWM6Ci0g
ICAgZW51bSBTdGF0ZSB7Ci0gICAgICAgIERhdGFTdGF0ZSwKLSAgICAgICAgQ2hhcmFjdGVyUmVm
ZXJlbmNlU3RhcnRTdGF0ZSwKLSAgICAgICAgRW50aXR5UmVmZXJlbmNlU3RhdGUsCi0gICAgICAg
IFRhZ09wZW5TdGF0ZSwKLSAgICAgICAgRW5kVGFnT3BlblN0YXRlLAotICAgICAgICBUYWdOYW1l
U3RhdGUsCi0gICAgICAgIEVuZFRhZ05hbWVTdGF0ZSwKLSAgICAgICAgRW5kVGFnU3BhY2VTdGF0
ZSwKLSAgICAgICAgWE1MRGVjbEFmdGVyWE1MU3RhdGUsCi0gICAgICAgIFhNTERlY2xCZWZvcmVW
ZXJzaW9uTmFtZVN0YXRlLAotICAgICAgICBYTUxEZWNsQWZ0ZXJWZXJzaW9uTmFtZVN0YXRlLAot
ICAgICAgICBYTUxEZWNsQmVmb3JlVmVyc2lvblZhbHVlU3RhdGUsCi0gICAgICAgIFhNTERlY2xC
ZWZvcmVWZXJzaW9uT25lUG9pbnRTdGF0ZSwKLSAgICAgICAgWE1MRGVjbFZlcnNpb25WYWx1ZVF1
b3RlZFN0YXRlLAotICAgICAgICBYTUxEZWNsQWZ0ZXJWZXJzaW9uU3RhdGUsCi0gICAgICAgIFhN
TERlY2xCZWZvcmVFbmNvZGluZ05hbWVTdGF0ZSwKLSAgICAgICAgWE1MRGVjbEFmdGVyRW5jb2Rp
bmdOYW1lU3RhdGUsCi0gICAgICAgIFhNTERlY2xCZWZvcmVFbmNvZGluZ1ZhbHVlU3RhdGUsCi0g
ICAgICAgIFhNTERlY2xFbmNvZGluZ1ZhbHVlU3RhcnRRdW90ZWRTdGF0ZSwKLSAgICAgICAgWE1M
RGVjbEVuY29kaW5nVmFsdWVRdW90ZWRTdGF0ZSwKLSAgICAgICAgWE1MRGVjbEFmdGVyRW5jb2Rp
bmdTdGF0ZSwKLSAgICAgICAgWE1MRGVjbEJlZm9yZVN0YW5kYWxvbmVOYW1lU3RhdGUsCi0gICAg
ICAgIFhNTERlY2xBZnRlclN0YW5kYWxvbmVOYW1lU3RhdGUsCi0gICAgICAgIFhNTERlY2xCZWZv
cmVTdGFuZGFsb25lVmFsdWVTdGF0ZSwKLSAgICAgICAgWE1MRGVjbFN0YW5kYWxvbmVWYWx1ZVF1
b3RlZFN0YXRlLAotICAgICAgICBYTUxEZWNsQWZ0ZXJTdGFuZGFsb25lU3RhdGUsCi0gICAgICAg
IFhNTERlY2xDbG9zZVN0YXRlLAotICAgICAgICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UYXJnZXRT
dGFydFN0YXRlLAotICAgICAgICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UYXJnZXRTdGF0ZSwKLSAg
ICAgICAgUHJvY2Vzc2luZ0luc3RydWN0aW9uQWZ0ZXJUYXJnZXRTdGF0ZSwKLSAgICAgICAgUHJv
Y2Vzc2luZ0luc3RydWN0aW9uRGF0YVN0YXRlLAotICAgICAgICBQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b25DbG9zZVN0YXRlLAotICAgICAgICBNYXJrdXBEZWNsYXJhdGlvbk9wZW5TdGF0ZSwKLSAgICAg
ICAgQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlLAotICAgICAgICBBdHRyaWJ1dGVOYW1lU3RhdGUs
Ci0gICAgICAgIEFmdGVyQXR0cmlidXRlTmFtZVN0YXRlLAotICAgICAgICBCZWZvcmVBdHRyaWJ1
dGVWYWx1ZVN0YXRlLAotICAgICAgICBBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlLAotICAgICAg
ICBDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZVZhbHVlU3RhdGUsCi0gICAgICAgIEFmdGVy
QXR0cmlidXRlVmFsdWVRdW90ZWRTdGF0ZSwKLSAgICAgICAgU2VsZkNsb3NpbmdTdGFydFRhZ1N0
YXRlLAotICAgICAgICBDb21tZW50U3RhdGUsCi0gICAgICAgIENvbW1lbnREYXNoU3RhdGUsCi0g
ICAgICAgIENvbW1lbnRFbmRTdGF0ZSwKLSAgICAgICAgQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSwK
LSAgICAgICAgRE9DVFlQRU5hbWVTdGF0ZSwKLSAgICAgICAgQWZ0ZXJET0NUWVBFTmFtZVN0YXRl
LAotICAgICAgICBBZnRlckRPQ1RZUEVQdWJsaWNLZXl3b3JkU3RhdGUsCi0gICAgICAgIEJlZm9y
ZURPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUsCi0gICAgICAgIERPQ1RZUEVQdWJsaWNJZGVu
dGlmaWVyUXVvdGVkU3RhdGUsCi0gICAgICAgIEFmdGVyRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJT
dGF0ZSwKLSAgICAgICAgQWZ0ZXJET0NUWVBFU3lzdGVtS2V5d29yZFN0YXRlLAotICAgICAgICBC
ZWZvcmVET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlLAotICAgICAgICBET0NUWVBFU3lzdGVt
SWRlbnRpZmllclF1b3RlZFN0YXRlLAotICAgICAgICBBZnRlckRPQ1RZUEVTeXN0ZW1JZGVudGlm
aWVyU3RhdGUsCi0gICAgICAgIEJlZm9yZURPQ1RZUEVJbnRlcm5hbFN1YnNldFN0YXRlLAotICAg
ICAgICBBZnRlckRPQ1RZUEVJbnRlcm5hbFN1YnNldFN0YXRlLAotICAgICAgICBDREFUQVNlY3Rp
b25TdGF0ZSwKLSAgICB9OwotfTsKLQotY2xhc3MgWE1MVG9rZW5pemVyIDogcHVibGljIE1hcmt1
cFRva2VuaXplckJhc2U8WE1MVG9rZW4sIFhNTFRva2VuaXplclN0YXRlPiB7Ci0gICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoWE1MVG9rZW5pemVyKTsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxYTUxUb2tlbml6ZXI+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBYTUxUb2tlbml6ZXIpOyB9Ci0KLSAgICAvLyBUaGlzIGZ1
bmN0aW9uIHJldHVybnMgdHJ1ZSBpZiBpdCBlbWl0cyBhIHRva2VuLiBPdGhlcndpc2UsIGNhbGxl
cnMKLSAgICAvLyBtdXN0IHByb3ZpZGUgdGhlIHNhbWUgKGluIHByb2dyZXNzKSB0b2tlbiBvbiB0
aGUgbmV4dCBjYWxsICh1bmxlc3MKLSAgICAvLyB0aGV5IGNhbGwgcmVzZXQoKSBmaXJzdCkuCi0g
ICAgYm9vbCBuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiwgWE1MVG9rZW4mKTsKLQotICAgIGJv
b2wgZXJyb3JEdXJpbmdQYXJzaW5nKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvckR1cmluZ1BhcnNp
bmc7IH0KLQotcHJpdmF0ZToKLSAgICBYTUxUb2tlbml6ZXIoKTsKLQotICAgIGlubGluZSB2b2lk
IHBhcnNlRXJyb3IoKTsKLSAgICBpbmxpbmUgdm9pZCBidWZmZXJDaGFyYWN0ZXIoVUNoYXIpOwot
Ci0gICAgYm9vbCBtX2Vycm9yRHVyaW5nUGFyc2luZzsKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRyZWVCdWlsZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVHJlZUJ1aWxkZXIuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxMmRlZmU1ODY3NzVmMDBhZTk0ZGNiNmQ1ZjU5MzM5NDMwYzFhNGFk
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MVHJlZUJ1aWxkZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
NDc4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiWE1MVHJlZUJ1aWxkZXIuaCIKLQotI2lu
Y2x1ZGUgIkNhY2hlZFNjcmlwdC5oIgotI2luY2x1ZGUgIkNEQVRBU2VjdGlvbi5oIgotI2luY2x1
ZGUgIkNvbW1lbnQuaCIKLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkRvY3VtZW50
RnJhZ21lbnQuaCIKLSNpbmNsdWRlICJEb2N1bWVudFR5cGUuaCIKLSNpbmNsdWRlICJFbGVtZW50
LmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLS8vIEZJWE1FOiBXaHkgYXJlIHdlIGluY2x1ZGluZyBI
VE1MIGVudGl0eSBpbmZvcm1hdGlvbiBpbiB0aGUgWE1MIHBhcnNlcj8KLSNpbmNsdWRlICJIVE1M
RW50aXR5U2VhcmNoLmgiCi0jaW5jbHVkZSAiSFRNTEVudGl0eVRhYmxlLmgiCi0jaW5jbHVkZSAi
TmV3WE1MRG9jdW1lbnRQYXJzZXIuaCIKLSNpbmNsdWRlICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
aCIKLSNpbmNsdWRlICJTY3JpcHRFbGVtZW50LmgiCi0jaW5jbHVkZSAiU2NyaXB0U291cmNlQ29k
ZS5oIgotI2luY2x1ZGUgIlhNTE5TTmFtZXMuaCIKLSNpbmNsdWRlICJYTUxOYW1lcy5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVhNTFRyZWVCdWlsZGVyOjpYTUxUcmVlQnVpbGRlcihOZXdY
TUxEb2N1bWVudFBhcnNlciogcGFyc2VyLCBEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBtX2Rv
Y3VtZW50KGRvY3VtZW50KQotICAgICwgbV9wYXJzZXIocGFyc2VyKQotICAgICwgbV9pc1hIVE1M
KGZhbHNlKQotICAgICwgbV9zYXdGaXJzdEVsZW1lbnQoZmFsc2UpCi17Ci0gICAgbV9jdXJyZW50
Tm9kZVN0YWNrLmFwcGVuZChOb2RlU3RhY2tJdGVtKGRvY3VtZW50KSk7Ci19Ci0KLVhNTFRyZWVC
dWlsZGVyOjpYTUxUcmVlQnVpbGRlcihOZXdYTUxEb2N1bWVudFBhcnNlciogcGFyc2VyLCBEb2N1
bWVudEZyYWdtZW50KiBmcmFnbWVudCwgRWxlbWVudCogcGFyZW50KQotICAgIDogbV9kb2N1bWVu
dChmcmFnbWVudC0+ZG9jdW1lbnQoKSkKLSAgICAsIG1fcGFyc2VyKHBhcnNlcikKLSAgICAsIG1f
aXNYSFRNTChmYWxzZSkKLSAgICAsIG1fc2F3Rmlyc3RFbGVtZW50KHRydWUpCi17Ci0gICAgTm9k
ZVN0YWNrSXRlbSBzdGFja0l0ZW0oZnJhZ21lbnQpOwotCi0gICAgLy8gRmlndXJlIG91dCBuYW1l
c3BhY2VzCi0gICAgVmVjdG9yPEVsZW1lbnQqPiBub2RlU3RhY2s7Ci0gICAgd2hpbGUgKHBhcmVu
dCkgewotICAgICAgICBub2RlU3RhY2suYXBwZW5kKHBhcmVudCk7Ci0KLSAgICAgICAgQ29udGFp
bmVyTm9kZSogbm9kZSA9IHBhcmVudC0+cGFyZW50Tm9kZSgpOwotICAgICAgICBpZiAoIW5vZGUg
fHwgIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBw
YXJlbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSk7Ci0gICAgfQotCi0gICAgaWYgKG5v
ZGVTdGFjay5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9jdXJyZW50Tm9kZVN0YWNrLmFwcGVuZChz
dGFja0l0ZW0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZm9yIChFbGVtZW50KiBl
bGVtZW50OyAhbm9kZVN0YWNrLmlzRW1wdHkoKTsgbm9kZVN0YWNrLnJlbW92ZUxhc3QoKSkgewot
ICAgICAgICBlbGVtZW50ID0gbm9kZVN0YWNrLmxhc3QoKTsKLSAgICAgICAgaWYgKGVsZW1lbnQt
Pmhhc0F0dHJpYnV0ZXMoKSkgewotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBl
bGVtZW50LT5hdHRyaWJ1dGVDb3VudCgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBB
dHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGVsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0oaSk7Ci0gICAgICAg
ICAgICAgICAgaWYgKGF0dHJpYnV0ZS0+bG9jYWxOYW1lKCkgPT0geG1sbnNBdG9tKQotICAgICAg
ICAgICAgICAgICAgICBzdGFja0l0ZW0uc2V0TmFtZXNwYWNlVVJJKGF0dHJpYnV0ZS0+dmFsdWUo
KSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlLT5wcmVmaXgoKSA9PSB4bWxu
c0F0b20pCi0gICAgICAgICAgICAgICAgICAgIHN0YWNrSXRlbS5zZXROYW1lc3BhY2VVUkkoYXR0
cmlidXRlLT5sb2NhbE5hbWUoKSwgYXR0cmlidXRlLT52YWx1ZSgpKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIElmIHRoZSBwYXJlbnQgZWxlbWVudCBpcyBub3Qg
aW4gZG9jdW1lbnQgdHJlZSwgdGhlcmUgbWF5IGJlIG5vIHhtbG5zIGF0dHJpYnV0ZTsganVzdCBk
ZWZhdWx0IHRvIHRoZSBwYXJlbnQncyBuYW1lc3BhY2UuCi0gICAgaWYgKHN0YWNrSXRlbS5uYW1l
c3BhY2VVUkkoKS5pc051bGwoKSAmJiAhcGFyZW50LT5pbkRvY3VtZW50KCkpCi0gICAgICAgIHN0
YWNrSXRlbS5zZXROYW1lc3BhY2VVUkkocGFyZW50LT5uYW1lc3BhY2VVUkkoKSk7Ci0KLSAgICBt
X2N1cnJlbnROb2RlU3RhY2suYXBwZW5kKHN0YWNrSXRlbSk7Ci19Ci0KLXZvaWQgWE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NUb2tlbihjb25zdCBBdG9taWNYTUxUb2tlbiYgdG9rZW4pCi17Ci0gICAg
c3dpdGNoICh0b2tlbi50eXBlKCkpIHsKLSAgICBjYXNlIFhNTFRva2VuVHlwZXM6OlVuaW5pdGlh
bGl6ZWQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFhNTFRva2VuVHlwZXM6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjoKLSAgICAgICAgcHJv
Y2Vzc1Byb2Nlc3NpbmdJbnN0cnVjdGlvbih0b2tlbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgWE1MVG9rZW5UeXBlczo6WE1MRGVjbGFyYXRpb246Ci0gICAgICAgIHByb2Nlc3NYTUxEZWNs
YXJhdGlvbih0b2tlbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6
RE9DVFlQRToKLSAgICAgICAgcHJvY2Vzc0RPQ1RZUEUodG9rZW4pOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIFhNTFRva2VuVHlwZXM6OlN0YXJ0VGFnOgotICAgICAgICBwcm9jZXNzU3RhcnRU
YWcodG9rZW4pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFhNTFRva2VuVHlwZXM6OkVuZFRh
ZzoKLSAgICAgICAgcHJvY2Vzc0VuZFRhZyh0b2tlbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgWE1MVG9rZW5UeXBlczo6Q0RBVEE6Ci0gICAgICAgIHByb2Nlc3NDREFUQSh0b2tlbik7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyOgotICAgICAg
ICBwcm9jZXNzQ2hhcmFjdGVyKHRva2VuKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBYTUxU
b2tlblR5cGVzOjpDb21tZW50OgotICAgICAgICBwcm9jZXNzQ29tbWVudCh0b2tlbik7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6RW50aXR5OgotICAgICAgICBwcm9j
ZXNzRW50aXR5KHRva2VuKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBYTUxUb2tlblR5cGVz
OjpFbmRPZkZpbGU6Ci0gICAgICAgIGV4aXRUZXh0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci19Ci0KLXZvaWQgWE1MVHJlZUJ1aWxkZXI6OmZpbmlzaCgpCi17Ci0gICAgZXhpdFRleHQoKTsK
LX0KLQotdm9pZCBYTUxUcmVlQnVpbGRlcjo6cHVzaEN1cnJlbnROb2RlKGNvbnN0IE5vZGVTdGFj
a0l0ZW0mIHN0YWNrSXRlbSkKLXsKLSAgICBBU1NFUlQoc3RhY2tJdGVtLm5vZGUoKSk7Ci0gICAg
bV9jdXJyZW50Tm9kZVN0YWNrLmFwcGVuZChzdGFja0l0ZW0pOwotICAgIC8vIEZJWE1FOiBpcyB0
aGVyZSBhIG1heGltdW0gRE9NIGRlcHRoPwotfQotCi12b2lkIFhNTFRyZWVCdWlsZGVyOjpwb3BD
dXJyZW50Tm9kZSgpCi17Ci0gICAgQVNTRVJUKG1fY3VycmVudE5vZGVTdGFjay5zaXplKCkpOwot
Ci0gICAgbV9jdXJyZW50Tm9kZVN0YWNrLnJlbW92ZUxhc3QoKTsKLX0KLQotdm9pZCBYTUxUcmVl
QnVpbGRlcjo6Y2xvc2VFbGVtZW50KFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCkKLXsKLSAg
ICBlbGVtZW50LT5maW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKLQotICAgIFNjcmlwdEVsZW1lbnQq
IHNjcmlwdEVsZW1lbnQgPSB0b1NjcmlwdEVsZW1lbnQoZWxlbWVudC5nZXQoKSk7Ci0gICAgaWYg
KHNjcmlwdEVsZW1lbnQpCi0gICAgICAgIG1fcGFyc2VyLT5wcm9jZXNzU2NyaXB0KHNjcmlwdEVs
ZW1lbnQpOwotCi0gICAgcG9wQ3VycmVudE5vZGUoKTsKLX0KLQotdm9pZCBYTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc1Byb2Nlc3NpbmdJbnN0cnVjdGlvbihjb25zdCBBdG9taWNYTUxUb2tlbiYgdG9r
ZW4pCi17Ci0gICAgaWYgKCFmYWlsT25UZXh0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8v
IEZJWE1FOiBmYWxsIGJhY2sgaWYgd2UgY2FuJ3QgaGFuZGxlIHRoZSBQSSBvdXJzZWxmLgotCi0g
ICAgYWRkKFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y3JlYXRlKG1fZG9jdW1lbnQsIHRva2VuLnRh
cmdldCgpLCB0b2tlbi5kYXRhKCkpKTsKLX0KLQotdm9pZCBYTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c1hNTERlY2xhcmF0aW9uKGNvbnN0IEF0b21pY1hNTFRva2VuJiB0b2tlbikKLXsKLSAgICBpZiAo
IWZhaWxPblRleHQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0KLSAgICBtX2RvY3VtZW50LT5zZXRYTUxWZXJzaW9uKFN0cmluZyh0b2tlbi54bWxWZXJz
aW9uKCkpLCBlYyk7Ci0gICAgaWYgKGVjKQotICAgICAgICBtX3BhcnNlci0+c3RvcFBhcnNpbmco
KTsKLQotICAgIG1fZG9jdW1lbnQtPnNldFhNTFN0YW5kYWxvbmUodG9rZW4ueG1sU3RhbmRhbG9u
ZSgpLCBlYyk7Ci0gICAgaWYgKGVjKQotICAgICAgICBtX3BhcnNlci0+c3RvcFBhcnNpbmcoKTsK
LSAgICAvLyBGSVhNRTogaG93IHNob3VsZCB0aGlzIGJlaGF2ZSBpZiBzdGFuZGFsb25lIGlzIG5v
dCBzcGVjaWZpZWQ/Ci0gICAgLy8gRklYTUU6IHNldCBlbmNvZGluZy4KLX0KLQotdm9pZCBYTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc0RPQ1RZUEUoY29uc3QgQXRvbWljWE1MVG9rZW4mIHRva2VuKQot
ewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB4aHRtbFRyYW5zaXRpb25h
bCwgKCItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIpKTsKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgeGh0bWwxMSwgKCItLy9XM0MvL0RURCBYSFRN
TCAxLjEvL0VOIikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB4aHRt
bFN0cmljdCwgKCItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIpKTsKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgeGh0bWxGcmFtZXNldCwgKCItLy9XM0MvL0RU
RCBYSFRNTCAxLjAgRnJhbWVzZXQvL0VOIikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCB4aHRtbEJhc2ljLCAoIi0vL1czQy8vRFREIFhIVE1MIEJhc2ljIDEuMC8vRU4i
KSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHhodG1sTWF0aE1MLCAo
Ii0vL1czQy8vRFREIFhIVE1MIDEuMSBwbHVzIE1hdGhNTCAyLjAvL0VOIikpOwotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB4aHRtbE1hdGhNTFNWRywgKCItLy9XM0MvL0RU
RCBYSFRNTCAxLjEgcGx1cyBNYXRoTUwgMi4wIHBsdXMgU1ZHIDEuMS8vRU4iKSk7Ci0gICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHhodG1sTW9iaWxlLCAoIi0vL1dBUEZPUlVN
Ly9EVEQgWEhUTUwgTW9iaWxlIDEuMC8vRU4iKSk7Ci0KLSAgICBpZiAoIWZhaWxPblRleHQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgQXRvbWljU3RyaW5nIHB1YmxpY0lkZW50aWZpZXIodG9r
ZW4ucHVibGljSWRlbnRpZmllcigpLmRhdGEoKSwgdG9rZW4ucHVibGljSWRlbnRpZmllcigpLnNp
emUoKSk7Ci0gICAgQXRvbWljU3RyaW5nIHN5c3RlbUlkZW50aWZpZXIodG9rZW4uc3lzdGVtSWRl
bnRpZmllcigpLmRhdGEoKSwgdG9rZW4uc3lzdGVtSWRlbnRpZmllcigpLnNpemUoKSk7Ci0gICAg
UmVmUHRyPERvY3VtZW50VHlwZT4gZG9jdHlwZSA9IERvY3VtZW50VHlwZTo6Y3JlYXRlKG1fZG9j
dW1lbnQsIHRva2VuLm5hbWUoKSwgcHVibGljSWRlbnRpZmllciwgc3lzdGVtSWRlbnRpZmllcik7
Ci0gICAgbV9kb2N1bWVudC0+c2V0RG9jVHlwZShkb2N0eXBlKTsKLSAgICBtX2RvY3VtZW50LT5w
YXJzZXJBcHBlbmRDaGlsZChkb2N0eXBlKTsKLQotICAgIGlmICgocHVibGljSWRlbnRpZmllciA9
PSB4aHRtbFRyYW5zaXRpb25hbCkKLSAgICAgICAgfHwgKHB1YmxpY0lkZW50aWZpZXIgPT0geGh0
bWwxMSkKLSAgICAgICAgfHwgKHB1YmxpY0lkZW50aWZpZXIgPT0geGh0bWxTdHJpY3QpCi0gICAg
ICAgIHx8IChwdWJsaWNJZGVudGlmaWVyID09IHhodG1sRnJhbWVzZXQpCi0gICAgICAgIHx8IChw
dWJsaWNJZGVudGlmaWVyID09IHhodG1sQmFzaWMpCi0gICAgICAgIHx8IChwdWJsaWNJZGVudGlm
aWVyID09IHhodG1sTWF0aE1MKQotICAgICAgICB8fCAocHVibGljSWRlbnRpZmllciA9PSB4aHRt
bE1hdGhNTFNWRykKLSAgICAgICAgfHwgKHB1YmxpY0lkZW50aWZpZXIgPT0geGh0bWxNb2JpbGUp
KQotICAgICAgICBtX2lzWEhUTUwgPSB0cnVlOwotfQotCi12b2lkIFhNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzU3RhcnRUYWcoY29uc3QgQXRvbWljWE1MVG9rZW4mIHRva2VuKQotewotICAgIGV4aXRU
ZXh0KCk7Ci0KLSAgICBib29sIGlzRmlyc3RFbGVtZW50ID0gIW1fc2F3Rmlyc3RFbGVtZW50Owot
ICAgIG1fc2F3Rmlyc3RFbGVtZW50ID0gdHJ1ZTsKLQotICAgIE5vZGVTdGFja0l0ZW0gdG9wID0g
bV9jdXJyZW50Tm9kZVN0YWNrLmxhc3QoKTsKLQotICAgIHByb2Nlc3NOYW1lc3BhY2VzKHRva2Vu
LCB0b3ApOwotCi0gICAgUXVhbGlmaWVkTmFtZSBxTmFtZSh0b2tlbi5wcmVmaXgoKSwgdG9rZW4u
bmFtZSgpLCB0b3AubmFtZXNwYWNlRm9yUHJlZml4KHRva2VuLnByZWZpeCgpLCB0b3AubmFtZXNw
YWNlVVJJKCkpKTsKLSAgICBSZWZQdHI8RWxlbWVudD4gbmV3RWxlbWVudCA9IG1fZG9jdW1lbnQt
PmNyZWF0ZUVsZW1lbnQocU5hbWUsIHRydWUpOwotCi0gICAgcHJvY2Vzc0F0dHJpYnV0ZXModG9r
ZW4sIHRvcCwgbmV3RWxlbWVudCk7Ci0KLSAgICBuZXdFbGVtZW50LT5iZWdpblBhcnNpbmdDaGls
ZHJlbigpOwotICAgIG1fY3VycmVudE5vZGVTdGFjay5sYXN0KCkubm9kZSgpLT5wYXJzZXJBcHBl
bmRDaGlsZChuZXdFbGVtZW50LmdldCgpKTsKLQotICAgIHRvcC5zZXROb2RlKG5ld0VsZW1lbnQp
OwotICAgIHB1c2hDdXJyZW50Tm9kZSh0b3ApOwotCi0gICAgaWYgKCFuZXdFbGVtZW50LT5hdHRh
Y2hlZCgpKQotICAgICAgICBuZXdFbGVtZW50LT5hdHRhY2goKTsKLQotICAgIGlmIChpc0ZpcnN0
RWxlbWVudCAmJiBtX2RvY3VtZW50LT5mcmFtZSgpKQotICAgICAgICBtX2RvY3VtZW50LT5mcmFt
ZSgpLT5sb2FkZXIoKS0+ZGlzcGF0Y2hEb2N1bWVudEVsZW1lbnRBdmFpbGFibGUoKTsKLQotICAg
IGlmICh0b2tlbi5zZWxmQ2xvc2luZygpKQotICAgICAgICBjbG9zZUVsZW1lbnQobmV3RWxlbWVu
dCk7Ci19Ci0KLXZvaWQgWE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcoY29uc3QgQXRvbWlj
WE1MVG9rZW4mIHRva2VuKQotewotICAgIGV4aXRUZXh0KCk7Ci0KLSAgICBSZWZQdHI8Q29udGFp
bmVyTm9kZT4gbm9kZSA9IG1fY3VycmVudE5vZGVTdGFjay5sYXN0KCkubm9kZSgpOwotCi0gICAg
aWYgKCFub2RlLT5oYXNUYWdOYW1lKFF1YWxpZmllZE5hbWUodG9rZW4ucHJlZml4KCksIHRva2Vu
Lm5hbWUoKSwgbV9jdXJyZW50Tm9kZVN0YWNrLmxhc3QoKS5uYW1lc3BhY2VGb3JQcmVmaXgodG9r
ZW4ucHJlZml4KCksIG1fY3VycmVudE5vZGVTdGFjay5sYXN0KCkubmFtZXNwYWNlVVJJKCkpKSkp
Ci0gICAgICAgIG1fcGFyc2VyLT5zdG9wUGFyc2luZygpOwotCi0gICAgY2xvc2VFbGVtZW50KHRv
RWxlbWVudChub2RlLmdldCgpKSk7Ci19Ci0KLXZvaWQgWE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3ND
aGFyYWN0ZXIoY29uc3QgQXRvbWljWE1MVG9rZW4mIHRva2VuKQotewotICAgIGFwcGVuZFRvVGV4
dCh0b2tlbi5jaGFyYWN0ZXJzKCkuZGF0YSgpLCB0b2tlbi5jaGFyYWN0ZXJzKCkuc2l6ZSgpKTsK
LX0KLQotdm9pZCBYTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NEQVRBKGNvbnN0IEF0b21pY1hNTFRv
a2VuJiB0b2tlbikKLXsKLSAgICBleGl0VGV4dCgpOwotICAgIGFkZChDREFUQVNlY3Rpb246OmNy
ZWF0ZShtX2RvY3VtZW50LCB0b2tlbi5kYXRhKCkpKTsKLX0KLQotdm9pZCBYTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc0NvbW1lbnQoY29uc3QgQXRvbWljWE1MVG9rZW4mIHRva2VuKQotewotICAgIGV4
aXRUZXh0KCk7Ci0gICAgYWRkKENvbW1lbnQ6OmNyZWF0ZShtX2RvY3VtZW50LCB0b2tlbi5jb21t
ZW50KCkpKTsKLX0KLQotdm9pZCBYTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VudGl0eShjb25zdCBB
dG9taWNYTUxUb2tlbiYgdG9rZW4pCi17Ci0gICAgLy8gRklYTUU6IHdlIHNob3VsZCBzdXBwb3J0
IGludGVybmFsIHN1YnNldC4KLSAgICBpZiAobV9pc1hIVE1MKQotICAgICAgICBwcm9jZXNzSFRN
TEVudGl0eSh0b2tlbik7Ci0gICAgZWxzZQotICAgICAgICBwcm9jZXNzWE1MRW50aXR5KHRva2Vu
KTsKLX0KLQotdm9pZCBYTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc05hbWVzcGFjZXMoY29uc3QgQXRv
bWljWE1MVG9rZW4mIHRva2VuLCBOb2RlU3RhY2tJdGVtJiBzdGFja0l0ZW0pCi17Ci0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHRva2VuLmF0dHJpYnV0ZXMoKS5zaXplKCk7ICsraSkgewot
ICAgICAgICBjb25zdCBBdHRyaWJ1dGUmIHRva2VuQXR0cmlidXRlID0gdG9rZW4uYXR0cmlidXRl
cygpLmF0KGkpOwotICAgICAgICBpZiAodG9rZW5BdHRyaWJ1dGUubmFtZSgpLnByZWZpeCgpID09
IHhtbG5zQXRvbSkKLSAgICAgICAgICAgIHN0YWNrSXRlbS5zZXROYW1lc3BhY2VVUkkodG9rZW5B
dHRyaWJ1dGUubmFtZSgpLmxvY2FsTmFtZSgpLCB0b2tlbkF0dHJpYnV0ZS52YWx1ZSgpKTsKLSAg
ICAgICAgZWxzZSBpZiAodG9rZW5BdHRyaWJ1dGUubmFtZSgpID09IHhtbG5zQXRvbSkKLSAgICAg
ICAgICAgIHN0YWNrSXRlbS5zZXROYW1lc3BhY2VVUkkodG9rZW5BdHRyaWJ1dGUudmFsdWUoKSk7
Ci0gICAgfQotfQotCi12b2lkIFhNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQXR0cmlidXRlcyhjb25z
dCBBdG9taWNYTUxUb2tlbiYgdG9rZW4sIE5vZGVTdGFja0l0ZW0mIHN0YWNrSXRlbSwgUGFzc1Jl
ZlB0cjxFbGVtZW50PiBuZXdFbGVtZW50KQotewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0b2tlbi5hdHRyaWJ1dGVzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgY29uc3QgQXR0cmli
dXRlJiB0b2tlbkF0dHJpYnV0ZSA9IHRva2VuLmF0dHJpYnV0ZXMoKS5hdChpKTsKLSAgICAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIGlmICh0b2tlbkF0dHJpYnV0ZS5uYW1lKCku
cHJlZml4KCkgPT0geG1sbnNBdG9tKQotICAgICAgICAgICAgbmV3RWxlbWVudC0+c2V0QXR0cmli
dXRlTlMoWE1MTlNOYW1lczo6eG1sbnNOYW1lc3BhY2VVUkksICJ4bWxuczoiICsgdG9rZW5BdHRy
aWJ1dGUubmFtZSgpLmxvY2FsTmFtZSgpLCB0b2tlbkF0dHJpYnV0ZS52YWx1ZSgpLCBlYyk7Ci0g
ICAgICAgIGVsc2UgaWYgKHRva2VuQXR0cmlidXRlLm5hbWUoKSA9PSB4bWxuc0F0b20pCi0gICAg
ICAgICAgICBuZXdFbGVtZW50LT5zZXRBdHRyaWJ1dGVOUyhYTUxOU05hbWVzOjp4bWxuc05hbWVz
cGFjZVVSSSwgeG1sbnNBdG9tLCB0b2tlbkF0dHJpYnV0ZS52YWx1ZSgpLCBlYyk7Ci0gICAgICAg
IGVsc2UgewotICAgICAgICAgICAgUXVhbGlmaWVkTmFtZSBxTmFtZSh0b2tlbkF0dHJpYnV0ZS5w
cmVmaXgoKSwgdG9rZW5BdHRyaWJ1dGUubG9jYWxOYW1lKCksIHN0YWNrSXRlbS5uYW1lc3BhY2VG
b3JQcmVmaXgodG9rZW5BdHRyaWJ1dGUucHJlZml4KCksIG51bGxBdG9tKSk7Ci0gICAgICAgICAg
ICBuZXdFbGVtZW50LT5zZXRBdHRyaWJ1dGUocU5hbWUsIHRva2VuQXR0cmlidXRlLnZhbHVlKCkp
OwotICAgICAgICB9Ci0gICAgICAgIGlmIChlYykgewotICAgICAgICAgICAgbV9wYXJzZXItPnN0
b3BQYXJzaW5nKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0K
LXZvaWQgWE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NYTUxFbnRpdHkoY29uc3QgQXRvbWljWE1MVG9r
ZW4mIHRva2VuKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBhbXAs
ICgiYW1wIikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBhcG9zLCAo
ImFwb3MiKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGd0LCAoImd0
IikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBsdCwgKCJsdCIpKTsK
LSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcXVvdCwgKCJxdW90IikpOwot
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBhbXBTLCAoQVNDSUlMaXRlcmFsKCImIikp
KTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgYXBvc1MsIChBU0NJSUxpdGVyYWwo
IiciKSkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBndFMsIChBU0NJSUxpdGVy
YWwoIj4iKSkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBsdFMsIChBU0NJSUxp
dGVyYWwoIjwiKSkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBxdW90UywgKEFT
Q0lJTGl0ZXJhbCgiXCIiKSkpOwotCi0gICAgaWYgKHRva2VuLm5hbWUoKSA9PSBhbXApCi0gICAg
ICAgIGFwcGVuZFRvVGV4dChhbXBTLmNoYXJhY3RlcnMoKSwgMSk7Ci0gICAgZWxzZSBpZiAodG9r
ZW4ubmFtZSgpID09IGFwb3MpCi0gICAgICAgIGFwcGVuZFRvVGV4dChhcG9zUy5jaGFyYWN0ZXJz
KCksIDEpOwotICAgIGVsc2UgaWYgKHRva2VuLm5hbWUoKSA9PSBndCkKLSAgICAgICAgYXBwZW5k
VG9UZXh0KGd0Uy5jaGFyYWN0ZXJzKCksIDEpOwotICAgIGVsc2UgaWYgKHRva2VuLm5hbWUoKSA9
PSBsdCkKLSAgICAgICAgYXBwZW5kVG9UZXh0KGx0Uy5jaGFyYWN0ZXJzKCksIDEpOwotICAgIGVs
c2UgaWYgKHRva2VuLm5hbWUoKSA9PSBxdW90KQotICAgICAgICBhcHBlbmRUb1RleHQocXVvdFMu
Y2hhcmFjdGVycygpLCAxKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcGFyc2VyLT5zdG9wUGFyc2lu
ZygpOwotfQotCi12b2lkIFhNTFRyZWVCdWlsZGVyOjpwcm9jZXNzSFRNTEVudGl0eShjb25zdCBB
dG9taWNYTUxUb2tlbiYgdG9rZW4pCi17Ci0gICAgSFRNTEVudGl0eVNlYXJjaCBzZWFyY2g7Ci0g
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gdG9rZW4ubmFtZSgpOwotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbmFtZS5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIHNlYXJjaC5hZHZh
bmNlKG5hbWVbaV0pOwotICAgICAgICBpZiAoIXNlYXJjaC5pc0VudGl0eVByZWZpeCgpKSB7Ci0g
ICAgICAgICAgICBtX3BhcnNlci0+c3RvcFBhcnNpbmcoKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgIH0KLSAgICBzZWFyY2guYWR2YW5jZSgnOycpOwotICAgIGlmICghc2Vh
cmNoLmlzRW50aXR5UHJlZml4KCkpIHsKLSAgICAgICAgbV9wYXJzZXItPnN0b3BQYXJzaW5nKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgVUNoYXIzMiBlbnRpdHlWYWx1ZSA9IHNlYXJj
aC5tb3N0UmVjZW50TWF0Y2goKS0+Zmlyc3RWYWx1ZTsKLSAgICAvLyBGSVhNRTogV2UgbmVlZCB0
byBhY2NvdW50IGZvciBzZWNvbmRWYWx1ZSBpZiBhbnkgWE1MIGVudGl0aWVzIGFyZSBsb25nZXIK
LSAgICAvLyB0aGFuIG9uZSB1bmljb2RlIGNoYXJhY3Rlci4KLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAvLyBEYXJpbiBBZGxlciB3cml0ZXM6Ci0gICAgLy8gICBZb3UgY2FuIHNlZSBn
aXZlbiB0aGUgY29kZSBhYm92ZSB0aGF0IHRoaXMgZWxzZSBpcyBkZWFkIGNvZGUuIFRoaXMgY29k
ZSBpcyBpbiBhIHN0cmFuZ2Ugc3RhdGUuCi0gICAgLy8gICBBbmQgdGhlIHJlaW50ZXJwcmV0X2Nh
c3QgdG8gVUNoYXIqIG1ha2VzIHRoZSBjb2RlIGxpdHRsZS1lbmRpYW4tc3BlY2lmaWMuIFRoYXQg
aXMgbm90IGdvb2QhCi0gICAgaWYgKGVudGl0eVZhbHVlIDw9IDB4RkZGRikKLSAgICAgICAgYXBw
ZW5kVG9UZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPigmZW50aXR5VmFsdWUpLCAxKTsKLSAg
ICBlbHNlIHsKLSAgICAgICAgVUNoYXIgdXRmMTZQYWlyWzJdID0geyBVMTZfTEVBRChlbnRpdHlW
YWx1ZSksIFUxNl9UUkFJTChlbnRpdHlWYWx1ZSkgfTsKLSAgICAgICAgYXBwZW5kVG9UZXh0KHV0
ZjE2UGFpciwgMik7Ci0gICAgfQotfQotCi1pbmxpbmUgdm9pZCBYTUxUcmVlQnVpbGRlcjo6YWRk
KFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSkKLXsKLSAgICBtX2N1cnJlbnROb2RlU3RhY2subGFzdCgp
Lm5vZGUoKS0+cGFyc2VyQXBwZW5kQ2hpbGQobm9kZS5nZXQoKSk7Ci0gICAgaWYgKCFub2RlLT5h
dHRhY2hlZCgpKQotICAgICAgICBub2RlLT5hdHRhY2goKTsKLX0KLQotdm9pZCBYTUxUcmVlQnVp
bGRlcjo6YXBwZW5kVG9UZXh0KGNvbnN0IFVDaGFyKiB0ZXh0LCBzaXplX3QgbGVuZ3RoKQotewot
ICAgIGVudGVyVGV4dCgpOwotCi0gICAgaWYgKCFtX2xlYWZUZXh0KQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX2xlYWZUZXh0LT5hcHBlbmQodGV4dCwgbGVuZ3RoKTsKLX0KLQotdm9pZCBYTUxU
cmVlQnVpbGRlcjo6ZW50ZXJUZXh0KCkKLXsKLSAgICBpZiAoIW1fc2F3Rmlyc3RFbGVtZW50KSB7
Ci0gICAgICAgIC8vIEZJWE1FOiBHdWFyYW50ZWUgdGhlIHRleHQgaXMgb25seSB3aGl0ZXNwYWNl
LgotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFtX2xlYWZUZXh0KQotICAgICAg
ICBtX2xlYWZUZXh0ID0gYWRvcHRQdHIobmV3IFN0cmluZ0J1aWxkZXIoKSk7Ci19Ci0KLXZvaWQg
WE1MVHJlZUJ1aWxkZXI6OmV4aXRUZXh0KCkKLXsKLSAgICBpZiAoIW1fbGVhZlRleHQuZ2V0KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGFkZChUZXh0OjpjcmVhdGUobV9kb2N1bWVudCwgbV9s
ZWFmVGV4dC0+dG9TdHJpbmcoKSkpOwotCi0gICAgbV9sZWFmVGV4dC5jbGVhcigpOwotfQotCi1i
b29sIFhNTFRyZWVCdWlsZGVyOjpmYWlsT25UZXh0KCkKLXsKLSAgICBpZiAoIW1fbGVhZlRleHQp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gRklYTUU6IEd1YXJhbnRlZSB0aGUgdGV4
dCBpcyBvbmx5IHdoaXRlc3BhY2UuCi0KLSAgICBtX2xlYWZUZXh0LmNsZWFyKCk7Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLVhNTFRyZWVCdWlsZGVyOjpOb2RlU3RhY2tJdGVtOjpOb2RlU3RhY2tJ
dGVtKFBhc3NSZWZQdHI8Q29udGFpbmVyTm9kZT4gbiwgTm9kZVN0YWNrSXRlbSogcGFyZW50KQot
ICAgIDogbV9ub2RlKG4pCi17Ci0gICAgaWYgKCFwYXJlbnQpIHsKLSAgICAgICAgbV9zY29wZWRO
YW1lc3BhY2VzLnNldCh4bWxBdG9tLCBYTUxOYW1lczo6eG1sTmFtZXNwYWNlVVJJKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fbmFtZXNwYWNlID0gcGFyZW50LT5tX25hbWVzcGFj
ZTsKLSAgICBtX3Njb3BlZE5hbWVzcGFjZXMgPSBwYXJlbnQtPm1fc2NvcGVkTmFtZXNwYWNlczsK
LX0KLQotYm9vbCBYTUxUcmVlQnVpbGRlcjo6Tm9kZVN0YWNrSXRlbTo6aGFzTmFtZXNwYWNlVVJJ
KEF0b21pY1N0cmluZyBwcmVmaXgpCi17Ci0gICAgQVNTRVJUKCFwcmVmaXguaXNOdWxsKCkpOwot
ICAgIHJldHVybiBtX3Njb3BlZE5hbWVzcGFjZXMuY29udGFpbnMocHJlZml4KTsKLX0KLQotQXRv
bWljU3RyaW5nIFhNTFRyZWVCdWlsZGVyOjpOb2RlU3RhY2tJdGVtOjpuYW1lc3BhY2VVUkkoQXRv
bWljU3RyaW5nIHByZWZpeCkKLXsKLSAgICBBU1NFUlQoIXByZWZpeC5pc051bGwoKSk7Ci0gICAg
aWYgKG1fc2NvcGVkTmFtZXNwYWNlcy5jb250YWlucyhwcmVmaXgpKQotICAgICAgICByZXR1cm4g
bV9zY29wZWROYW1lc3BhY2VzLmdldChwcmVmaXgpOwotICAgIHJldHVybiBudWxsQXRvbTsKLX0K
LQotdm9pZCBYTUxUcmVlQnVpbGRlcjo6Tm9kZVN0YWNrSXRlbTo6c2V0TmFtZXNwYWNlVVJJKEF0
b21pY1N0cmluZyBwcmVmaXgsIEF0b21pY1N0cmluZyB1cmkpCi17Ci0gICAgbV9zY29wZWROYW1l
c3BhY2VzLnNldChwcmVmaXgsIHVyaSk7Ci19Ci0KLUF0b21pY1N0cmluZyBYTUxUcmVlQnVpbGRl
cjo6Tm9kZVN0YWNrSXRlbTo6bmFtZXNwYWNlRm9yUHJlZml4KEF0b21pY1N0cmluZyBwcmVmaXgs
IEF0b21pY1N0cmluZyBmYWxsYmFjaykKLXsKLSAgICBBdG9taWNTdHJpbmcgdXJpID0gZmFsbGJh
Y2s7Ci0gICAgaWYgKCFwcmVmaXguaXNOdWxsKCkgJiYgaGFzTmFtZXNwYWNlVVJJKHByZWZpeCkp
Ci0gICAgICAgIHVyaSA9IG5hbWVzcGFjZVVSSShwcmVmaXgpOwotCi0gICAgcmV0dXJuIHVyaTsK
LX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUcmVlQnVp
bGRlci5oIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUcmVlQnVpbGRlci5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzkxODZlOGExZGEyMjQ1NzVkNzhmNDA4NmQ2MzE5
NWM2MmJlNmQ5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVHJlZUJ1aWxkZXIuaAorKysgL2Rldi9udWxs
CkBAIC0xLDEyNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEdPT0dMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
R09PR0xFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCi0gKi8KLQotI2lmbmRlZiBYTUxUcmVlQnVpbGRlcl9oCi0jZGVmaW5lIFhNTFRyZWVCdWls
ZGVyX2gKLQotI2luY2x1ZGUgIlRleHQuaCIKLSNpbmNsdWRlICJYTUxUb2tlbi5oIgotI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBDb250YWluZXJOb2RlOwotY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBEb2N1bWVudEZyYWdtZW50
OwotY2xhc3MgTmV3WE1MRG9jdW1lbnRQYXJzZXI7Ci0KLWNsYXNzIFhNTFRyZWVCdWlsZGVyIHsK
LSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShYTUxUcmVlQnVpbGRlcik7Ci0gICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8WE1MVHJlZUJ1
aWxkZXI+IGNyZWF0ZShOZXdYTUxEb2N1bWVudFBhcnNlciogcGFyc2VyLCBEb2N1bWVudCogZG9j
dW1lbnQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFhNTFRyZWVCdWlsZGVy
KHBhcnNlciwgZG9jdW1lbnQpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUGFzc093blB0cjxYTUxU
cmVlQnVpbGRlcj4gY3JlYXRlKE5ld1hNTERvY3VtZW50UGFyc2VyKiBwYXJzZXIsIERvY3VtZW50
RnJhZ21lbnQqIGRvY3VtZW50LCBFbGVtZW50KiBwYXJlbnQpCi0gICAgewotICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IFhNTFRyZWVCdWlsZGVyKHBhcnNlciwgZG9jdW1lbnQsIHBhcmVudCkp
OwotICAgIH0KLQotICAgIHZvaWQgcHJvY2Vzc1Rva2VuKGNvbnN0IEF0b21pY1hNTFRva2VuJik7
Ci0gICAgdm9pZCBmaW5pc2goKTsKLQotcHJpdmF0ZToKLSAgICBYTUxUcmVlQnVpbGRlcihOZXdY
TUxEb2N1bWVudFBhcnNlciosIERvY3VtZW50Kik7Ci0gICAgWE1MVHJlZUJ1aWxkZXIoTmV3WE1M
RG9jdW1lbnRQYXJzZXIqLCBEb2N1bWVudEZyYWdtZW50KiwgRWxlbWVudCogcGFyZW50KTsKLQot
ICAgIGNsYXNzIE5vZGVTdGFja0l0ZW0gewotICAgIHB1YmxpYzoKLSAgICAgICAgTm9kZVN0YWNr
SXRlbShQYXNzUmVmUHRyPENvbnRhaW5lck5vZGU+IGl0ZW0sIE5vZGVTdGFja0l0ZW0qIHBhcmVu
dCA9IDApOwotCi0gICAgICAgIGJvb2wgaGFzTmFtZXNwYWNlVVJJKEF0b21pY1N0cmluZyBwcmVm
aXgpOwotICAgICAgICBBdG9taWNTdHJpbmcgbmFtZXNwYWNlVVJJKEF0b21pY1N0cmluZyBwcmVm
aXgpOwotICAgICAgICBBdG9taWNTdHJpbmcgbmFtZXNwYWNlVVJJKCkgeyByZXR1cm4gbV9uYW1l
c3BhY2U7IH0KLSAgICAgICAgdm9pZCBzZXROYW1lc3BhY2VVUkkoQXRvbWljU3RyaW5nIHByZWZp
eCwgQXRvbWljU3RyaW5nIHVyaSk7Ci0gICAgICAgIHZvaWQgc2V0TmFtZXNwYWNlVVJJKEF0b21p
Y1N0cmluZyB1cmkpIHsgbV9uYW1lc3BhY2UgPSB1cmk7IH0KLSAgICAgICAgQXRvbWljU3RyaW5n
IG5hbWVzcGFjZUZvclByZWZpeChBdG9taWNTdHJpbmcgcHJlZml4LCBBdG9taWNTdHJpbmcgZmFs
bGJhY2spOwotCi0gICAgICAgIFBhc3NSZWZQdHI8Q29udGFpbmVyTm9kZT4gbm9kZSgpIHsgcmV0
dXJuIG1fbm9kZTsgfQotICAgICAgICBjb25zdCBDb250YWluZXJOb2RlKiBub2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9ub2RlLmdldCgpOyB9Ci0gICAgICAgIHZvaWQgc2V0Tm9kZShQYXNzUmVmUHRy
PENvbnRhaW5lck5vZGU+IG5vZGUpIHsgbV9ub2RlID0gbm9kZTsgfQotCi0gICAgcHJpdmF0ZToK
LSAgICAgICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIEF0b21pY1N0cmluZz4gbV9zY29wZWROYW1l
c3BhY2VzOwotICAgICAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gbV9ub2RlOwotICAgICAgICBB
dG9taWNTdHJpbmcgbV9uYW1lc3BhY2U7Ci0gICAgfTsKLQotICAgIHZvaWQgcHVzaEN1cnJlbnRO
b2RlKGNvbnN0IE5vZGVTdGFja0l0ZW0mKTsKLSAgICB2b2lkIHBvcEN1cnJlbnROb2RlKCk7Ci0g
ICAgdm9pZCBjbG9zZUVsZW1lbnQoUGFzc1JlZlB0cjxFbGVtZW50Pik7Ci0KLSAgICB2b2lkIHBy
b2Nlc3NQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oY29uc3QgQXRvbWljWE1MVG9rZW4mKTsKLSAgICB2
b2lkIHByb2Nlc3NYTUxEZWNsYXJhdGlvbihjb25zdCBBdG9taWNYTUxUb2tlbiYpOwotICAgIHZv
aWQgcHJvY2Vzc0RPQ1RZUEUoY29uc3QgQXRvbWljWE1MVG9rZW4mKTsKLSAgICB2b2lkIHByb2Nl
c3NTdGFydFRhZyhjb25zdCBBdG9taWNYTUxUb2tlbiYpOwotICAgIHZvaWQgcHJvY2Vzc0VuZFRh
Zyhjb25zdCBBdG9taWNYTUxUb2tlbiYpOwotICAgIHZvaWQgcHJvY2Vzc0NEQVRBKGNvbnN0IEF0
b21pY1hNTFRva2VuJik7Ci0gICAgdm9pZCBwcm9jZXNzQ2hhcmFjdGVyKGNvbnN0IEF0b21pY1hN
TFRva2VuJik7Ci0gICAgdm9pZCBwcm9jZXNzQ29tbWVudChjb25zdCBBdG9taWNYTUxUb2tlbiYp
OwotICAgIHZvaWQgcHJvY2Vzc0VudGl0eShjb25zdCBBdG9taWNYTUxUb2tlbiYpOwotCi0gICAg
dm9pZCBwcm9jZXNzTmFtZXNwYWNlcyhjb25zdCBBdG9taWNYTUxUb2tlbiYsIE5vZGVTdGFja0l0
ZW0mKTsKLSAgICB2b2lkIHByb2Nlc3NBdHRyaWJ1dGVzKGNvbnN0IEF0b21pY1hNTFRva2VuJiwg
Tm9kZVN0YWNrSXRlbSYsIFBhc3NSZWZQdHI8RWxlbWVudD4gbmV3RWxlbWVudCk7Ci0gICAgdm9p
ZCBwcm9jZXNzWE1MRW50aXR5KGNvbnN0IEF0b21pY1hNTFRva2VuJik7Ci0gICAgdm9pZCBwcm9j
ZXNzSFRNTEVudGl0eShjb25zdCBBdG9taWNYTUxUb2tlbiYpOwotCi0gICAgaW5saW5lIHZvaWQg
YWRkKFBhc3NSZWZQdHI8Tm9kZT4pOwotCi0gICAgdm9pZCBhcHBlbmRUb1RleHQoY29uc3QgVUNo
YXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpOwotICAgIHZvaWQgZW50ZXJUZXh0KCk7Ci0g
ICAgdm9pZCBleGl0VGV4dCgpOwotICAgIGJvb2wgZmFpbE9uVGV4dCgpOwotCi0gICAgQXRvbWlj
U3RyaW5nIG5hbWVzcGFjZUZvclByZWZpeChBdG9taWNTdHJpbmcgcHJlZml4LCBBdG9taWNTdHJp
bmcgZmFsbGJhY2spOwotCi0gICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7Ci0gICAgTmV3WE1MRG9j
dW1lbnRQYXJzZXIqIG1fcGFyc2VyOwotCi0gICAgYm9vbCBtX2lzWEhUTUw7Ci0KLSAgICBib29s
IG1fc2F3Rmlyc3RFbGVtZW50OwotICAgIFZlY3RvcjxOb2RlU3RhY2tJdGVtPiBtX2N1cnJlbnRO
b2RlU3RhY2s7Ci0KLSAgICBPd25QdHI8U3RyaW5nQnVpbGRlcj4gbV9sZWFmVGV4dDsKLX07Ci0K
LX0KLQotI2VuZGlmIC8vIFhNTFRyZWVCdWlsZGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9BYm91dERhdGFFbmFibGVGZWF0dXJlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9BYm91dERhdGFFbmFibGVG
ZWF0dXJlcy5pbgppbmRleCAyMzVjMTYzZTIzOTI2YzVhM2JlNTEwMTQ2OTU1NDM5NmJhODIxNDg2
Li5iNTRhNjliMmNkODUzOTExZDlmNmYyOTg3YzQwNDgyMzllNzVhYzczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQWJvdXREYXRhRW5hYmxlRmVh
dHVyZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Fi
b3V0RGF0YUVuYWJsZUZlYXR1cmVzLmluCkBAIC0xMjAsNyArMTIwLDYgQEAgTVlTVEVSSU9VU19G
RUFUVVJFCiBOQVZJR0FUT1JfQ09OVEVOVF9VVElMUwogTkVUU0NBUEVfUExVR0lOX01FVEFEQVRB
X0NBQ0hFCiBORVRXT1JLX0lORk8KLU5FV19YTUwKIE5vdGlmaWNhdGlvbgogTk9USUZJQ0FUSU9O
UwogT0ZGTElORV9XRUJfQVBQTElDQVRJT05TCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183901</attachid>
            <date>2013-01-21 23:55:33 -0800</date>
            <delta_ts>2013-01-22 00:08:59 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-100710-20130121235227.patch</filename>
            <type>text/plain</type>
            <size>141607</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMzg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDU2NmYxZjVlNWQ3MjQz
YThmODg1YTZjOWM1MmVhNjIwNThkOWVhOS4uNDVmYzQwODUwNmVhNjRjZDdlMjUwN2ZkOGQ3YzY0
OGY1YzZjYTYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEzLTAxLTIxICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRU5BQkxFKE5FV19YTUwpIGlz
bid0IHVzZWQgYnkgYW55b25lIGFuZCBubyBvbmUgaXMgYWN0aXZlbHkgd29ya2luZyBvbiBpdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNzEwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgQXMgZGlzY3Vzc2Vk
IG9uIHdlYmtpdC1kZXYKKyAgICAgICAgPGh0dHA6Ly9saXN0cy53ZWJraXQub3JnL3BpcGVybWFp
bC93ZWJraXQtZGV2LzIwMTItQXVndXN0LzAyMjEwMy5odG1sPiwKKyAgICAgICAgRU5BQkxFKE5F
V19YTUwpIGlzbid0IHVzZWQgYnkgYW55b25lIGFuZCBubyBvbmUgaXMgYWN0aXZlbHkgd29ya2lu
ZyBvbgorICAgICAgICBpdC4gV2Ugc2hvdWxkIHJlbW92ZSBpdCBmcm9tIHRoZSBjb2RlIGJhc2Ug
Zm9yIHRoZSB0aW1lIGJlaW5nLiBJZiBmb2xrcworICAgICAgICB3YW50IHRvIHdvcmsgb24gaXQg
YWdhaW4sIHdlIGNhbiByZXN0b3JlIGl0IGZyb20gU1ZOIGhpc3RvcnkuCisKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2Vi
Q29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcik6
CisgICAgICAgICogZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRGcmFnbWVudDo6cGFyc2VYTUwpOgorICAgICAgICAqIHhtbC9wYXJzZXIvQ2hhcmFj
dGVyUmVmZXJlbmNlUGFyc2VySW5saW5lcy5oOiBSZW1vdmVkLgorICAgICAgICAqIHhtbC9wYXJz
ZXIvTmV3WE1MRG9jdW1lbnRQYXJzZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHhtbC9wYXJz
ZXIvTmV3WE1MRG9jdW1lbnRQYXJzZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiB4bWwvcGFyc2Vy
L1hNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogeG1s
L3BhcnNlci9YTUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiB4bWwvcGFyc2VyL1hNTFRva2VuLmg6IFJlbW92ZWQuCisgICAgICAgICogeG1sL3BhcnNlci9Y
TUxUb2tlbml6ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MVG9rZW5p
emVyLmg6IFJlbW92ZWQuCisgICAgICAgICogeG1sL3BhcnNlci9YTUxUcmVlQnVpbGRlci5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogeG1sL3BhcnNlci9YTUxUcmVlQnVpbGRlci5oOiBSZW1vdmVk
LgorCiAyMDEzLTAxLTIxICBNaWNoYcWCIFBha3XFgmEgdmVsIFJ1dGthICA8bS5wYWt1bGFAc2Ft
c3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gTWlzc2luZyBjb250ZXh0IG1lbnVzIHN0cmluZ3MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDQwZTliNDY4YzliMDUyYjhlNDVkYzA0
ODE3NzE4ZTc5YmMzMTgwNjguLmE0Y2ExYjBiYzhhNjU5Yzc4ZTcxYzhkMDVmOWI4MzVlNDUwOTRh
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDY2NiwyMCArNDY2NiwxMSBA
QCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3Vw
VG9rZW5CYXNlLmggXAogCVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5pemVy
QmFzZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01hcmt1cFRva2VuaXplcklubGlu
ZXMuaCBcCi0JU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9OZXdYTUxEb2N1bWVudFBhcnNlci5j
cHAgXAotCVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTmV3WE1MRG9jdW1lbnRQYXJzZXIuaCBc
Ci0JU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIu
Y3BwIFwKLQlTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTENoYXJhY3RlclJlZmVyZW5jZVBh
cnNlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5oIFwKIAlT
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5oIFwKLQlT
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRva2VuaXplci5jcHAgXAotCVNvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MVG9rZW5pemVyLmggXAotCVNvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MVG9rZW4uaCBcCi0JU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUcmVlQnVpbGRl
ci5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVHJlZUJ1aWxkZXIuaCBcCiAJ
U291cmNlL1dlYkNvcmUveG1sL0RPTVBhcnNlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3htbC9E
T01QYXJzZXIuaCBcCiAJU291cmNlL1dlYkNvcmUveG1sL05hdGl2ZVhQYXRoTlNSZXNvbHZlci5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKaW5kZXggY2Y3MDIwMzllZjY3YmRkZjlhYzBiMWZjYmU1NTUxMTk5NmFl
NjE4Ny4uM2E5ZDhmOThmM2NiNmE0ZTRmNDIxODZiMDUxYTQ2NmU0MWI0MzE4ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCkBAIC0xMzAyLDExICsxMzAyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgeG1sL1hQYXRoVXRp
bC5jcHAgXAogICAgIHhtbC9YUGF0aFZhbHVlLmNwcCBcCiAgICAgeG1sL1hQYXRoVmFyaWFibGVS
ZWZlcmVuY2UuY3BwIFwKLSAgICB4bWwvcGFyc2VyL05ld1hNTERvY3VtZW50UGFyc2VyLmNwcCBc
Ci0gICAgeG1sL3BhcnNlci9YTUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIuY3BwIFwKICAgICB4
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBcCi0gICAgeG1sL3BhcnNlci9YTUxUb2tl
bml6ZXIuY3BwIFwKLSAgICB4bWwvcGFyc2VyL1hNTFRyZWVCdWlsZGVyLmNwcAogCiBIRUFERVJT
ICs9IFwKICAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKaW5kZXggZTQ2YjgxNjU4YTgyMTdhZThhYTVkZWIyN2NiZTk4OTdkMjQ4NGVj
Ny4uNjFjNmU1NWE2MWZjMDdjNjVlNTc0NTg1OTIzMmY0ODYwZGQwNWNmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQpAQCAtMjY0MCwyNCArMjY0MCwxNCBAQAogICAgICAgICAgICAgJ3dvcmtlcnMvV29ya2Vy
U2NyaXB0TG9hZGVyLmgnLAogICAgICAgICAgICAgJ3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVy
Q2xpZW50LmgnLAogICAgICAgICAgICAgJ3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCcsCi0gICAg
ICAgICAgICAneG1sL3BhcnNlci9DaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVzLmgnLAog
ICAgICAgICAgICAgJ3htbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmgnLAogICAgICAgICAgICAg
J3htbC9wYXJzZXIvTWFya3VwVG9rZW5pemVyQmFzZS5oJywKICAgICAgICAgICAgICd4bWwvcGFy
c2VyL01hcmt1cFRva2VuaXplcklubGluZXMuaCcsCi0gICAgICAgICAgICAneG1sL3BhcnNlci9O
ZXdYTUxEb2N1bWVudFBhcnNlci5jcHAnLAotICAgICAgICAgICAgJ3htbC9wYXJzZXIvTmV3WE1M
RG9jdW1lbnRQYXJzZXIuaCcsCi0gICAgICAgICAgICAneG1sL3BhcnNlci9YTUxDaGFyYWN0ZXJS
ZWZlcmVuY2VQYXJzZXIuY3BwJywKLSAgICAgICAgICAgICd4bWwvcGFyc2VyL1hNTENoYXJhY3Rl
clJlZmVyZW5jZVBhcnNlci5oJywKICAgICAgICAgICAgICd4bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyLmNwcCcsCiAgICAgICAgICAgICAneG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5o
JywKICAgICAgICAgICAgICd4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAn
LAogICAgICAgICAgICAgJ3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5jcHAnLAog
ICAgICAgICAgICAgJ3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5oJywKLSAgICAg
ICAgICAgICd4bWwvcGFyc2VyL1hNTFRva2VuaXplci5jcHAnLAotICAgICAgICAgICAgJ3htbC9w
YXJzZXIvWE1MVG9rZW5pemVyLmgnLAotICAgICAgICAgICAgJ3htbC9wYXJzZXIvWE1MVG9rZW4u
aCcsCi0gICAgICAgICAgICAneG1sL3BhcnNlci9YTUxUcmVlQnVpbGRlci5jcHAnLAotICAgICAg
ICAgICAgJ3htbC9wYXJzZXIvWE1MVHJlZUJ1aWxkZXIuaCcsCiAgICAgICAgICAgICAneG1sL0RP
TVBhcnNlci5jcHAnLAogICAgICAgICAgICAgJ3htbC9ET01QYXJzZXIuaCcsCiAgICAgICAgICAg
ICAneG1sL05hdGl2ZVhQYXRoTlNSZXNvbHZlci5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBjMjVkZjJlMGM3MjkzODk2OGI0ODNkOTY5
NTk1Yzk5NzY2Mzk5NzI3Li40NDkyNmE0YzQwMTQxOTUxYmExYmI2ZDhlYjk4OGE4Y2EwN2Y2N2Uy
IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAt
NDkwNjksMTAgKzQ5MDY5LDYgQEAKIAkJCQlOYW1lPSJwYXJzZXIiCiAJCQkJPgogCQkJCTxGaWxl
Ci0JCQkJCVJlbGF0aXZlUGF0aD0iLi5ceG1sXHBhcnNlclxDaGFyYWN0ZXJSZWZlcmVuY2VJbmxp
bmVzLmgiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRo
PSIuLlx4bWxccGFyc2VyXE1hcmt1cFRva2VuQmFzZS5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpA
QCAtNDkwODUsMTQgKzQ5MDgxLDYgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQot
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHhtbFxwYXJzZXJcTmV3WE1MRG9jdW1lbnRQYXJzZXIuY3Bw
IgotCQkJCQk+Ci0JCQkJPC9GaWxlPgotCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5c
eG1sXHBhcnNlclxOZXdYTUxEb2N1bWVudFBhcnNlci5oIgotCQkJCQk+Ci0JCQkJPC9GaWxlPgot
CQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ceG1sXHBhcnNlclxYTUxEb2N1bWVudFBh
cnNlci5jcHAiCiAJCQkJCT4KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBAIC00OTIwOCwyMiAr
NDkxOTYsNiBAQAogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHhtbFxwYXJzZXJcWE1MRG9jdW1lbnRQ
YXJzZXJTY29wZS5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgotCQkJCTxGaWxlCi0JCQkJCVJlbGF0
aXZlUGF0aD0iLi5ceG1sXHBhcnNlclxYTUxUb2tlbi5oIgotCQkJCQk+Ci0JCQkJPC9GaWxlPgot
CQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5ceG1sXHBhcnNlclxYTUxUb2tlbml6ZXIu
aCIKLQkJCQkJPgotCQkJCTwvRmlsZT4KLQkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHhtbFxwYXJzZXJcWE1MVHJlZUJ1aWxkZXIuY3BwIgotCQkJCQk+Ci0JCQkJPC9GaWxlPgotCQkJ
CTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5ceG1sXHBhcnNlclxYTUxUcmVlQnVpbGRlci5o
IgotCQkJCQk+Ci0JCQkJPC9GaWxlPgogCQkJPC9GaWx0ZXI+CiAJCTwvRmlsdGVyPgogCQk8Rmls
dGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggOWVhZjZlZjEwYTcxMjMwMDYyZWZiOTdlZjI0ZTg5ZDY3ZGFmMjM2MC4uNDNiM2Zi
YzMyNGU5MDcwMGIzZWU0MTRhZTgxNDVlMzdmODgwMzI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDUsMTQgKzQ1LDggQEAK
IC8qIEVuZCBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhCdWls
ZEZpbGUgc2VjdGlvbiAqLwotCQkwMDAyMkU2OTEzQ0UxQkJBMDAyODJENUIgLyogQ2hhcmFjdGVy
UmVmZXJlbmNlUGFyc2VySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDAwMjJFNjgxM0NFMUJCQTAwMjgyRDVCIC8qIENoYXJhY3RlclJlZmVy
ZW5jZVBhcnNlcklubGluZXMuaCAqLzsgfTsKLQkJMDAwMkVDNTgxM0MzRjY3RDAwMDQwRDQ3IC8q
IFhNTFRva2VuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwMDAyRUM1NTEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9rZW4uaCAqLzsgfTsKLQkJMDAwMkVD
NTkxM0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRva2VuaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMDAyRUM1NjEzQzNGNjdEMDAwNDBENDcgLyog
WE1MVG9rZW5pemVyLmNwcCAqLzsgfTsKLQkJMDAwMkVDNUExM0MzRjY3RDAwMDQwRDQ3IC8qIFhN
TFRva2VuaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDAwMkVDNTcxM0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRva2VuaXplci5oICovOyB9OwogCQkw
MDE0NjI4QTEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnkuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDAxNDYyODgxMDNDRDFERTAw
MEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmNwcCAqLzsgfTsKIAkJMDAxNDYyOEIxMDNDRDFE
RTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMDE0NjI4OTEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2lu
QWNjZXNzRW50cnkuaCAqLzsgfTsKLQkJMDAzNUVCQkIxM0YwNkZGMjAwQTU2MDg5IC8qIFhNTFRy
ZWVCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwMDM1RUJCQTEzRjA2RkYyMDBBNTYwODkgLyogWE1MVHJlZUJ1aWxkZXIuaCAqLzsgfTsKLQkJ
MDAzNUVCQkUxM0YwNzEzQzAwQTU2MDg5IC8qIFhNTFRyZWVCdWlsZGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwMzVFQkJEMTNGMDcxM0MwMEE1
NjA4OSAvKiBYTUxUcmVlQnVpbGRlci5jcHAgKi87IH07CiAJCTAwM0YxRkVBMTFFNkFCNDMwMDgy
NThEOSAvKiBVc2VyQ29udGVudFR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwMDNGMUZFOTExRTZBQjQzMDA4MjU4RDkgLyogVXNlckNvbnRlbnRU
eXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTAwQTYyOUMxMTNEMEJFQzcwMDUwQUM1MiAvKiBNYXJrdXBUb2tlbkJhc2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwQTYyOUMwMTNEMEJFQzcwMDUw
QUM1MiAvKiBNYXJrdXBUb2tlbkJhc2UuaCAqLzsgfTsKIAkJMDBCOTMxODcxM0JBOERCMzAwMzVB
OTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDAwQjkzMTgxMTNCQTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVu
dFBhcnNlci5jcHAgKi87IH07CkBAIC02MiwxMCArNTYsNiBAQAogCQkwMEI5MzE4QzEzQkE4REND
MDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBCOTMxODYxM0JBODY3RjAwMzVBOTQ4IC8qIFhN
TERvY3VtZW50UGFyc2VyU2NvcGUuaCAqLzsgfTsKIAkJMDBDNjBFM0YxM0Q3NkQ3RTAwOTJBMjc1
IC8qIE1hcmt1cFRva2VuaXplcklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDAwQzYwRTNFMTNENzZEN0UwMDkyQTI3NSAvKiBNYXJrdXBUb2tl
bml6ZXJJbmxpbmVzLmggKi87IH07CiAJCTAwQzYwRTQyMTNENzk3QUUwMDkyQTI3NSAvKiBNYXJr
dXBUb2tlbml6ZXJCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwMEM2MEU0MTEzRDc5N0FFMDA5MkEyNzUgLyogTWFya3VwVG9rZW5pemVyQmFzZS5o
ICovOyB9OwotCQkwMENBOTNCMjEzQzY2OTE2MDBGN0ZFOTUgLyogTmV3WE1MRG9jdW1lbnRQYXJz
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwQ0E5
M0IxMTNDNjY5MTYwMEY3RkU5NSAvKiBOZXdYTUxEb2N1bWVudFBhcnNlci5oICovOyB9OwotCQkw
MENBOTNCNTEzQzY2OTdDMDBGN0ZFOTUgLyogTmV3WE1MRG9jdW1lbnRQYXJzZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBDQTkzQjQxM0M2Njk3
QzAwRjdGRTk1IC8qIE5ld1hNTERvY3VtZW50UGFyc2VyLmNwcCAqLzsgfTsKLQkJMDBEMDQ2NEEx
M0M0RDE0NTAwMzI2RkNDIC8qIFhNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMEQwNDY0ODEzQzREMTQ1
MDAzMjZGQ0MgLyogWE1MQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VyLmNwcCAqLzsgfTsKLQkJMDBE
MDQ2NEIxM0M0RDE0NTAwMzI2RkNDIC8qIFhNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBEMDQ2NDkxM0M0
RDE0NTAwMzI2RkNDIC8qIFhNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNlci5oICovOyB9OwogCQkw
MUQzQ0Y4MjE0QkQwQTMwMDBGRTk5NzAgLyogV2ViR0xDb250ZXh0R3JvdXAuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDFEM0NGN0MxNEJEMEEzMDAw
RkU5OTcwIC8qIFdlYkdMQ29udGV4dEdyb3VwLmNwcCAqLzsgfTsKIAkJMDFEM0NGODMxNEJEMEEz
MDAwRkU5OTcwIC8qIFdlYkdMQ29udGV4dEdyb3VwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMUQzQ0Y3RDE0QkQwQTMwMDBGRTk5NzAgLyogV2ViR0xD
b250ZXh0R3JvdXAuaCAqLzsgfTsKIAkJMDFEM0NGODQxNEJEMEEzMDAwRkU5OTcwIC8qIFdlYkdM
Q29udGV4dE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwMUQzQ0Y3RTE0QkQwQTMwMDBGRTk5NzAgLyogV2ViR0xDb250ZXh0T2JqZWN0LmNw
cCAqLzsgfTsKQEAgLTI0ODcsMTMgKzI0NzcsMTMgQEAKIAkJODU1OUYxMTYwQUM5QkU5OTAwQTM0
MzlDIC8qIERPTVNWR01ldGFkYXRhRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODU1OUYxMTAwQUM5QkU5OTAwQTM0MzlDIC8qIERPTVNWR01l
dGFkYXRhRWxlbWVudC5oICovOyB9OwogCQk4NTU5RjExNzBBQzlCRTk5MDBBMzQzOUMgLyogRE9N
U1ZHTWV0YWRhdGFFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODU1OUYxMTEwQUM5QkU5OTAwQTM0MzlDIC8qIERPTVNWR01ldGFkYXRhRWxl
bWVudC5tbSAqLzsgfTsKIAkJODU1OUYxMTgwQUM5QkU5OTAwQTM0MzlDIC8qIERPTVNWR1N0eWxl
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODU1OUYxMTIwQUM5QkU5OTAwQTM0MzlDIC8qIERPTVNWR1N0eWxlRWxlbWVudC5oICovOyB9Owot
CQk4NTU5RjExOTBBQzlCRTk5MDBBMzQzOUMgLyogRE9NU1ZHU3R5bGVFbGVtZW50Lm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU1OUYxMTMwQUM5QkU5
OTAwQTM0MzlDIC8qIERPTVNWR1N0eWxlRWxlbWVudC5tbSAqLzsgfTsKLQkJODU1OUYxMjIwQUM5
QkY0MjAwQTM0MzlDIC8qIERPTVNWR1N0eWxlRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTU5RjExRjBBQzlCRjQyMDBBMzQz
OUMgLyogRE9NU1ZHU3R5bGVFbGVtZW50SW50ZXJuYWwuaCAqLzsgfTsKIAkJODU1OUYxMTgwQUM5
QkU5OTAwQTM0MzlEIC8qIERPTVNWR1N0eWxlZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NTlGMTEyMEFDOUJFOTkwMEEzNDM5RCAvKiBE
T01TVkdTdHlsZWRFbGVtZW50LmggKi87IH07CisJCTg1NTlGMTE5MEFDOUJFOTkwMEEzNDM5QyAv
KiBET01TVkdTdHlsZUVsZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NTU5RjExMzBBQzlCRTk5MDBBMzQzOUMgLyogRE9NU1ZHU3R5bGVFbGVt
ZW50Lm1tICovOyB9OwogCQk4NTU5RjExOTBBQzlCRTk5MDBBMzQzOUQgLyogRE9NU1ZHU3R5bGVk
RWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg1NTlGMTEzMEFDOUJFOTkwMEEzNDM5RCAvKiBET01TVkdTdHlsZWRFbGVtZW50Lm1tICovOyB9
OwotCQk4NTU5RjEyMjBBQzlCRjQyMDBBMzQzOUQgLyogRE9NU1ZHU3R5bGVkRWxlbWVudEludGVy
bmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTU5
RjExRjBBQzlCRjQyMDBBMzQzOUQgLyogRE9NU1ZHU3R5bGVkRWxlbWVudEludGVybmFsLmggKi87
IH07CiAJCTg1NTlGMTIwMEFDOUJGNDIwMEEzNDM5QyAvKiBET01TVkdBbmltYXRlZE51bWJlcklu
dGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NTU5RjExRDBBQzlCRjQxMDBBMzQzOUMgLyogRE9NU1ZHQW5pbWF0ZWROdW1iZXJJbnRlcm5hbC5o
ICovOyB9OwogCQk4NTU5RjEyMTBBQzlCRjQyMDBBMzQzOUMgLyogRE9NU1ZHTWV0YWRhdGFFbGVt
ZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg1NTlGMTFFMEFDOUJGNDEwMEEzNDM5QyAvKiBET01TVkdNZXRhZGF0YUVsZW1lbnRJbnRl
cm5hbC5oICovOyB9OworCQk4NTU5RjEyMjBBQzlCRjQyMDBBMzQzOUMgLyogRE9NU1ZHU3R5bGVF
bGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg1NTlGMTFGMEFDOUJGNDIwMEEzNDM5QyAvKiBET01TVkdTdHlsZUVsZW1lbnRJbnRl
cm5hbC5oICovOyB9OworCQk4NTU5RjEyMjBBQzlCRjQyMDBBMzQzOUQgLyogRE9NU1ZHU3R5bGVk
RWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NTU5RjExRjBBQzlCRjQyMDBBMzQzOUQgLyogRE9NU1ZHU3R5bGVkRWxlbWVudElu
dGVybmFsLmggKi87IH07CiAJCTg1NUQzNThBMEFENzA3MzEwMDE5QUFDNyAvKiBET01SR0JDb2xv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU1RDM1
ODkwQUQ3MDczMTAwMTlBQUM3IC8qIERPTVJHQkNvbG9yLmggKi87IH07CiAJCTg1NUQzNThEMEFE
NzA3Q0MwMDE5QUFDNyAvKiBET01SR0JDb2xvci5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU1RDM1ODkwQUQ3MDczMTAwMTlB
QUM3IC8qIERPTVJHQkNvbG9yLmggKi87IH07CiAJCTg1NkM4QUU0MEE5MTI2NDkwMDVDNjg3QiAv
KiBET01PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg1NkM4QUUyMEE5MTI2NDkwMDVDNjg3QiAvKiBET01PYmplY3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDg3MCwxNCArNDg2MCwxNCBA
QAogCQlCMjIyN0FBOTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3RvcEVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTEzMEQwMEJGMjEw
MDcxQjc4MiAvKiBTVkdTdG9wRWxlbWVudC5oICovOyB9OwogCQlCMjIyN0FBQjBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHU3RyaW5nTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzkxNTBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU3RyaW5nTGlz
dC5jcHAgKi87IH07CiAJCUIyMjI3QUFDMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTdHJpbmdMaXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzkx
NjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU3RyaW5nTGlzdC5oICovOyB9OwotCQlCMjIyN0FCNzBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHU3R5bGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTIxMEQwMEJGMjEwMDcxQjc4MiAvKiBT
VkdTdHlsZUVsZW1lbnQuY3BwICovOyB9OwotCQlCMjIyN0FCODBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHU3R5bGVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMjIyNzkyMjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU3R5bGVFbGVtZW50LmggKi87
IH07Ci0JCUIyMjI3QUI3MEQwMEJGMjIwMDcxQjc4MyAvKiBTVkdTdHlsZWRFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTIxMEQw
MEJGMjEwMDcxQjc4MyAvKiBTVkdTdHlsZWRFbGVtZW50LmNwcCAqLzsgfTsKLQkJQjIyMjdBQjgw
RDAwQkYyMjAwNzFCNzgzIC8qIFNWR1N0eWxlZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTIyMEQwMEJGMjEwMDcxQjc4MyAvKiBT
VkdTdHlsZWRFbGVtZW50LmggKi87IH07CiAJCUIyMjI3QUIzMEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTFEMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTdHlsZWRM
b2NhdGFibGVFbGVtZW50LmNwcCAqLzsgfTsKIAkJQjIyMjdBQjQwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTFFMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTdHlsZWRM
b2NhdGFibGVFbGVtZW50LmggKi87IH07CiAJCUIyMjI3QUI1MEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzkxRjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuY3BwICovOyB9OwogCQlCMjIyN0FCNjBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTIwMEQwMEJGMjEwMDcxQjc4MiAv
KiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oICovOyB9OworCQlCMjIyN0FCNzBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHU3R5bGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTIxMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdT
dHlsZUVsZW1lbnQuY3BwICovOyB9OworCQlCMjIyN0FCNzBEMDBCRjIyMDA3MUI3ODMgLyogU1ZH
U3R5bGVkRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMjIyNzkyMTBEMDBCRjIxMDA3MUI3ODMgLyogU1ZHU3R5bGVkRWxlbWVudC5jcHAg
Ki87IH07CisJCUIyMjI3QUI4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTIyMEQw
MEJGMjEwMDcxQjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuaCAqLzsgfTsKKwkJQjIyMjdBQjgwRDAw
QkYyMjAwNzFCNzgzIC8qIFNWR1N0eWxlZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTIyMEQwMEJGMjEwMDcxQjc4MyAvKiBTVkdT
dHlsZWRFbGVtZW50LmggKi87IH07CiAJCUIyMjI3QUJBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdT
VkdFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIyMjI3OTI0MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTVkdFbGVtZW50LmNwcCAqLzsgfTsK
IAkJQjIyMjdBQkIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1NWR0VsZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTI1MEQwMEJGMjEwMDcx
Qjc4MiAvKiBTVkdTVkdFbGVtZW50LmggKi87IH07CiAJCUIyMjI3QUJEMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdTd2l0Y2hFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIyMjI3OTI3MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTd2l0Y2hFbGVt
ZW50LmNwcCAqLzsgfTsKQEAgLTUyODksOCArNTI3OSw4IEBACiAJCUIyRkEzREY4MEFCNzVBNkYw
MDBFNUFDNCAvKiBKU1NWR1N0cmluZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjJGQTNEMTAwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHU3Ry
aW5nTGlzdC5jcHAgKi87IH07CiAJCUIyRkEzREY5MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1N0
cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIyRkEzRDExMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR1N0cmluZ0xpc3QuaCAqLzsgfTsKIAkJ
QjJGQTNERkEwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHU3R5bGVFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyRkEzRDEyMEFCNzVBNkUw
MDBFNUFDNCAvKiBKU1NWR1N0eWxlRWxlbWVudC5jcHAgKi87IH07Ci0JCUIyRkEzREZCMEFCNzVB
NkYwMDBFNUFDNCAvKiBKU1NWR1N0eWxlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJGQTNEMTMwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZH
U3R5bGVFbGVtZW50LmggKi87IH07CiAJCUIyRkEzREZBMEFCNzVBNkYwMDBFNUFDNSAvKiBKU1NW
R1N0eWxlZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjJGQTNEMTIwQUI3NUE2RTAwMEU1QUM1IC8qIEpTU1ZHU3R5bGVkRWxlbWVudC5j
cHAgKi87IH07CisJCUIyRkEzREZCMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1N0eWxlRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJGQTNE
MTMwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHU3R5bGVFbGVtZW50LmggKi87IH07CiAJCUIyRkEz
REZCMEFCNzVBNkYwMDBFNUFDNSAvKiBKU1NWR1N0eWxlZEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyRkEzRDEzMEFCNzVBNkUwMDBFNUFD
NSAvKiBKU1NWR1N0eWxlZEVsZW1lbnQuaCAqLzsgfTsKIAkJQjJGQTNERkMwQUI3NUE2RjAwMEU1
QUM0IC8qIEpTU1ZHU1ZHRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMkZBM0QxNDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdTVkdFbGVt
ZW50LmNwcCAqLzsgfTsKIAkJQjJGQTNERkQwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHU1ZHRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJG
QTNEMTUwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHU1ZHRWxlbWVudC5oICovOyB9OwpAQCAtNzIz
NywxNCArNzIyNyw4IEBACiAvKiBFbmQgUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICov
CiAKIC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwotCQkwMDAyMkU2ODEzQ0Ux
QkJBMDAyODJENUIgLyogQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTAwMDJFQzU1MTNDM0Y2N0QwMDA0MEQ0
NyAvKiBYTUxUb2tlbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYTUxUb2tl
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwMDAyRUM1NjEzQzNGNjdEMDAwNDBE
NDcgLyogWE1MVG9rZW5pemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFhNTFRva2VuaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTAwMDJF
QzU3MTNDM0Y2N0QwMDA0MEQ0NyAvKiBYTUxUb2tlbml6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gWE1MVG9rZW5pemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTAwMTQ2Mjg4MTAzQ0QxREUwMDBCMjBEQiAvKiBPcmlnaW5BY2Nlc3NFbnRyeS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPcmlnaW5BY2Nlc3NFbnRyeS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwMTQ2Mjg5MTAzQ0QxREUwMDBCMjBEQiAv
KiBPcmlnaW5BY2Nlc3NFbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBP
cmlnaW5BY2Nlc3NFbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwMDM1RUJC
QTEzRjA2RkYyMDBBNTYwODkgLyogWE1MVHJlZUJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gWE1MVHJlZUJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMDAzNUVCQkQxM0YwNzEzQzAwQTU2MDg5IC8qIFhNTFRyZWVCdWlsZGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhNTFRyZWVCdWlsZGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDAzRjFGRTkxMUU2QUI0MzAwODI1OEQ5IC8qIFVz
ZXJDb250ZW50VHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckNv
bnRlbnRUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMEE2MjlDMDEzRDBC
RUM3MDA1MEFDNTIgLyogTWFya3VwVG9rZW5CYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1hcmt1cFRva2VuQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwMEI5MzE4MTEzQkE4NjdGMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWE1MRG9jdW1lbnRQYXJzZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzI1NCwxMCArNzIzOCw2IEBACiAJCTAwQjkz
MTg2MTNCQTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlclNjb3BlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhNTERvY3VtZW50UGFyc2VyU2NvcGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDBDNjBFM0UxM0Q3NkQ3RTAwOTJBMjc1IC8qIE1hcmt1
cFRva2VuaXplcklubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFy
a3VwVG9rZW5pemVySW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMEM2
MEU0MTEzRDc5N0FFMDA5MkEyNzUgLyogTWFya3VwVG9rZW5pemVyQmFzZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNYXJrdXBUb2tlbml6ZXJCYXNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTAwQ0E5M0IxMTNDNjY5MTYwMEY3RkU5NSAvKiBOZXdYTUxEb2N1
bWVudFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXdYTUxEb2N1
bWVudFBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwMENBOTNCNDEzQzY2
OTdDMDBGN0ZFOTUgLyogTmV3WE1MRG9jdW1lbnRQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTmV3WE1MRG9jdW1lbnRQYXJzZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkwMEQwNDY0ODEzQzREMTQ1MDAzMjZGQ0MgLyogWE1MQ2hhcmFj
dGVyUmVmZXJlbmNlUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFhNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTAwRDA0NjQ5MTNDNEQxNDUwMDMyNkZDQyAvKiBYTUxDaGFyYWN0ZXJSZWZlcmVu
Y2VQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWE1MQ2hhcmFjdGVy
UmVmZXJlbmNlUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAxRDNDRjdD
MTRCRDBBMzAwMEZFOTk3MCAvKiBXZWJHTENvbnRleHRHcm91cC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJHTENvbnRleHRHcm91cC5jcHA7IHBhdGggPSBjYW52
YXMvV2ViR0xDb250ZXh0R3JvdXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
MUQzQ0Y3RDE0QkQwQTMwMDBGRTk5NzAgLyogV2ViR0xDb250ZXh0R3JvdXAuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViR0xDb250ZXh0R3JvdXAuaDsgcGF0aCA9IGNhbnZh
cy9XZWJHTENvbnRleHRHcm91cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMUQz
Q0Y3RTE0QkQwQTMwMDBGRTk5NzAgLyogV2ViR0xDb250ZXh0T2JqZWN0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkdMQ29udGV4dE9iamVjdC5jcHA7IHBhdGgg
PSBjYW52YXMvV2ViR0xDb250ZXh0T2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTk4ODYsMTMgKzk4NjYsMTMgQEAKIAkJODU1OUYxMTAwQUM5QkU5OTAwQTM0MzlDIC8q
IERPTVNWR01ldGFkYXRhRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRE9NU1ZHTWV0YWRhdGFFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg1NTlGMTExMEFDOUJFOTkwMEEzNDM5QyAvKiBET01TVkdNZXRhZGF0YUVsZW1lbnQubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NU1ZHTWV0YWRhdGFFbGVt
ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NTU5RjExMjBBQzlCRTk5MDBB
MzQzOUMgLyogRE9NU1ZHU3R5bGVFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBET01TVkdTdHlsZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJODU1OUYxMTMwQUM5QkU5OTAwQTM0MzlDIC8qIERPTVNWR1N0eWxlRWxlbWVudC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01TVkdTdHlsZUVsZW1lbnQu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg1NTlGMTFGMEFDOUJGNDIwMEEzNDM5
QyAvKiBET01TVkdTdHlsZUVsZW1lbnRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NU1ZHU3R5bGVFbGVtZW50SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODU1OUYxMTIwQUM5QkU5OTAwQTM0MzlEIC8qIERPTVNWR1N0eWxlZEVs
ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVNWR1N0eWxlZEVs
ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU1OUYxMTMwQUM5QkU5OTAw
QTM0MzlDIC8qIERPTVNWR1N0eWxlRWxlbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBET01TVkdTdHlsZUVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTg1NTlGMTEzMEFDOUJFOTkwMEEzNDM5RCAvKiBET01TVkdTdHlsZWRFbGVt
ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTVNWR1N0
eWxlZEVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg1NTlGMTFGMEFD
OUJGNDIwMEEzNDM5RCAvKiBET01TVkdTdHlsZWRFbGVtZW50SW50ZXJuYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVNWR1N0eWxlZEVsZW1lbnRJbnRlcm5hbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NTU5RjExRDBBQzlCRjQxMDBBMzQzOUMgLyog
RE9NU1ZHQW5pbWF0ZWROdW1iZXJJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NU1ZHQW5pbWF0ZWROdW1iZXJJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4NTU5RjExRTBBQzlCRjQxMDBBMzQzOUMgLyogRE9NU1ZHTWV0YWRhdGFF
bGVtZW50SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVNW
R01ldGFkYXRhRWxlbWVudEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTg1NTlGMTFGMEFDOUJGNDIwMEEzNDM5QyAvKiBET01TVkdTdHlsZUVsZW1lbnRJbnRlcm5hbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NU1ZHU3R5bGVFbGVtZW50SW50
ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU1OUYxMUYwQUM5QkY0MjAw
QTM0MzlEIC8qIERPTVNWR1N0eWxlZEVsZW1lbnRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRE9NU1ZHU3R5bGVkRWxlbWVudEludGVybmFsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1NUQzNTg5MEFENzA3MzEwMDE5QUFDNyAvKiBET01SR0JD
b2xvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NUkdCQ29sb3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODU2QzhBRTIwQTkxMjY0OTAwNUM2ODdCIC8q
IERPTU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NT2JqZWN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1NkM4QUUzMEE5MTI2NDkwMDVDNjg3
QiAvKiBET01PYmplY3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gRE9NT2JqZWN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIzMjUsMTYg
KzEyMzA1LDE2IEBACiAJCUIyMjI3OTE1MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTdHJpbmdMaXN0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdTdHJpbmdMaXN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc5MTYwRDAwQkYyMTAwNzFC
NzgyIC8qIFNWR1N0cmluZ0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNWR1N0cmluZ0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc5MTcw
RDAwQkYyMTAwNzFCNzgyIC8qIFNWR1N0cmluZ0xpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBTVkdTdHJpbmdMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjIy
Mjc5MjEwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1N0eWxlRWxlbWVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHU3R5bGVFbGVtZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjIyMjc5MjIwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1N0eWxl
RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHU3R5bGVFbGVt
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyMjI3OTIzMEQwMEJGMjEwMDcx
Qjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTVkdT
dHlsZUVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjIyNzkyMTBE
MDBCRjIxMDA3MUI3ODMgLyogU1ZHU3R5bGVkRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHU3R5bGVkRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUIyMjI3OTIyMEQwMEJGMjEwMDcxQjc4MyAvKiBTVkdTdHlsZWRFbGVt
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdTdHlsZWRFbGVtZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyMjI3OTIzMEQwMEJGMjEwMDcxQjc4
MyAvKiBTVkdTdHlsZWRFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHU3R5
bGVkRWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3OTFEMEQw
MEJGMjEwMDcxQjc4MiAvKiBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc5MUUwRDAwQkYyMTAwNzFCNzgy
IC8qIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQjIyMjc5MUYwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUIyMjI3OTIwMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjIyMjc5
MjEwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1N0eWxlRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHU3R5bGVFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQjIyMjc5MjEwRDAwQkYyMTAwNzFCNzgzIC8qIFNWR1N0eWxlZEVs
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1N0eWxl
ZEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCMjIyNzkyMjBEMDBC
RjIxMDA3MUI3ODIgLyogU1ZHU3R5bGVFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTVkdTdHlsZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQjIyMjc5MjIwRDAwQkYyMTAwNzFCNzgzIC8qIFNWR1N0eWxlZEVsZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1N0eWxlZEVsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjIyMjc5MjMwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1N0eWxl
RWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNWR1N0eWxlRWxlbWVudC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyMjI3OTIzMEQwMEJGMjEwMDcxQjc4MyAv
KiBTVkdTdHlsZWRFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHU3R5bGVk
RWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3OTI0MEQwMEJG
MjEwMDcxQjc4MiAvKiBTVkdTVkdFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTVkdTVkdFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjIyMjc5MjUwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1NWR0VsZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1NWR0VsZW1lbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc5MjYwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1NWR0VsZW1l
bnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTVkdTVkdFbGVtZW50LmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNzc0LDggKzEyNzU0LDggQEAKIAkJQjJGQTNEMTAw
QUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHU3RyaW5nTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdTdHJpbmdMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQjJGQTNEMTEwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHU3RyaW5nTGlz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdTdHJpbmdMaXN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRkEzRDEyMEFCNzVBNkUwMDBFNUFDNCAv
KiBKU1NWR1N0eWxlRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNTVkdTdHlsZUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlCMkZBM0QxMzBBQjc1QTZFMDAwRTVBQzQgLyogSlNTVkdTdHlsZUVsZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHU3R5bGVFbGVtZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRkEzRDEyMEFCNzVBNkUwMDBFNUFDNSAvKiBKU1NWR1N0
eWxlZEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
U1ZHU3R5bGVkRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyRkEz
RDEzMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR1N0eWxlRWxlbWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdTdHlsZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQjJGQTNEMTMwQUI3NUE2RTAwMEU1QUM1IC8qIEpTU1ZHU3R5bGVkRWxl
bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdTdHlsZWRFbGVt
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRkEzRDE0MEFCNzVBNkYwMDBF
NUFDNCAvKiBKU1NWR1NWR0VsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTU1ZHU1ZHRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUIyRkEzRDE1MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1NWR0VsZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHU1ZHRWxlbWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTQ0NDYsMjQgKzE0NDI2LDE0IEBACiAJCTAwQjkzMTgwMTNC
QTg2N0YwMDM1QTk0OCAvKiBwYXJzZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAotCQkJCTAwMDIyRTY4MTNDRTFCQkEwMDI4MkQ1QiAvKiBDaGFyYWN0ZXJSZWZl
cmVuY2VQYXJzZXJJbmxpbmVzLmggKi8sCiAJCQkJMDBBNjI5QzAxM0QwQkVDNzAwNTBBQzUyIC8q
IE1hcmt1cFRva2VuQmFzZS5oICovLAogCQkJCTAwQzYwRTQxMTNENzk3QUUwMDkyQTI3NSAvKiBN
YXJrdXBUb2tlbml6ZXJCYXNlLmggKi8sCiAJCQkJMDBDNjBFM0UxM0Q3NkQ3RTAwOTJBMjc1IC8q
IE1hcmt1cFRva2VuaXplcklubGluZXMuaCAqLywKLQkJCQkwMENBOTNCNDEzQzY2OTdDMDBGN0ZF
OTUgLyogTmV3WE1MRG9jdW1lbnRQYXJzZXIuY3BwICovLAotCQkJCTAwQ0E5M0IxMTNDNjY5MTYw
MEY3RkU5NSAvKiBOZXdYTUxEb2N1bWVudFBhcnNlci5oICovLAotCQkJCTAwRDA0NjQ4MTNDNEQx
NDUwMDMyNkZDQyAvKiBYTUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIuY3BwICovLAotCQkJCTAw
RDA0NjQ5MTNDNEQxNDUwMDMyNkZDQyAvKiBYTUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIuaCAq
LywKIAkJCQkwMEI5MzE4MTEzQkE4NjdGMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXIuY3Bw
ICovLAogCQkJCTAwQjkzMTgyMTNCQTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlci5o
ICovLAogCQkJCTAwQjkzMTgzMTNCQTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlckxp
YnhtbDIuY3BwICovLAogCQkJCTAwQjkzMTg1MTNCQTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVu
dFBhcnNlclNjb3BlLmNwcCAqLywKIAkJCQkwMEI5MzE4NjEzQkE4NjdGMDAzNUE5NDggLyogWE1M
RG9jdW1lbnRQYXJzZXJTY29wZS5oICovLAotCQkJCTAwMDJFQzU1MTNDM0Y2N0QwMDA0MEQ0NyAv
KiBYTUxUb2tlbi5oICovLAotCQkJCTAwMDJFQzU2MTNDM0Y2N0QwMDA0MEQ0NyAvKiBYTUxUb2tl
bml6ZXIuY3BwICovLAotCQkJCTAwMDJFQzU3MTNDM0Y2N0QwMDA0MEQ0NyAvKiBYTUxUb2tlbml6
ZXIuaCAqLywKLQkJCQkwMDM1RUJCRDEzRjA3MTNDMDBBNTYwODkgLyogWE1MVHJlZUJ1aWxkZXIu
Y3BwICovLAotCQkJCTAwMzVFQkJBMTNGMDZGRjIwMEE1NjA4OSAvKiBYTUxUcmVlQnVpbGRlci5o
ICovLAogCQkJKTsKIAkJCXBhdGggPSBwYXJzZXI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwpAQCAtMjMwOTQsNyArMjMwNjQsNiBAQAogCQkJCUZEMzE1RkZGMTJCMDI2NzYwMEMxQTM1OSAv
KiBDaGFubmVsTWVyZ2VyTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMDIxMkIwMjY3
NjAwQzFBMzU5IC8qIENoYW5uZWxTcGxpdHRlck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1
NTBCNkEwMDk5REYwMjcwMDkwRDc4MSAvKiBDaGFyYWN0ZXJEYXRhLmggaW4gSGVhZGVycyAqLywK
LQkJCQkwMDAyMkU2OTEzQ0UxQkJBMDAyODJENUIgLyogQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2Vy
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBMkEwRDAwNkMxRDAwRUY2RjI2IC8q
IENoYXJzZXREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RCMjEyNTFGMTJEMDAzRUYy
NjkgLyogQ2hlY2tib3hJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUEwMEI3MjFBMTFE
RTY0MjgwMDhBQjlGRiAvKiBDaGVja2VkSW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI1MTY1LDcg
KzI1MTM0LDYgQEAKIAkJCQk1OUMyN0YwNzEzOEQyOENGMDA3OUI3RTIgLyogTmV0d29ya1Jlc291
cmNlc0RhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBN0ZBNjE5MEREQTNCM0EwMDI4RjhBNSAv
KiBOZXR3b3JrU3RhdGVOb3RpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEzRUYzNDQxNjg0
RUNGNDAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJMDBDQTkzQjIxM0M2NjkxNjAwRjdGRTk1IC8qIE5ld1hNTERvY3VtZW50UGFyc2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQ0VGNDNERDBFNjc0MDEyMDAxQzEyODcgLyogTmluZVBpZWNlSW1h
Z2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MTE1QjUyMDlGODRCNzEwMENBNEZDMSAvKiBOb2Rl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTRGRTczMTBBMjI5N0JFMDA1OEQ3QUQgLyogTm9kZUZp
bHRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjIzNiw3ICsyNjIwNCw2IEBACiAJCQkJOUJBRjNC
MjQxMkMxQTM5ODAwMDE0QkYxIC8qIFdyaXRpbmdEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTE0NDc2QUE4MTVEQzRCQjEwMDMwNURCMiAvKiBXcml0aW5nTW9kZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNjU2NTgyMDIwOUQxNTA4RDAwMEU2MUQ3IC8qIFhMaW5rTmFtZXMuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTAwRDA0NjRCMTNDNEQxNDUwMDMyNkZDQyAvKiBYTUxDaGFyYWN0ZXJSZWZl
cmVuY2VQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTAwQjkzMTg4MTNCQThEQkEwMDM1QTk0
OCAvKiBYTUxEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDBCOTMxOEMxM0JB
OERDQzAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyU2NvcGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTU5QzI4MDQ2MTM4REMyNDEwMDc5QjdFMiAvKiBYTUxFcnJvcnMuaCBpbiBIZWFkZXJzICov
LApAQCAtMjYyNDgsOSArMjYyMTUsNiBAQAogCQkJCUE4MzNDODBEMEEyQ0YyNTYwMEQ1NzY2NCAv
KiBYTUxOYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE1QTM2RDcxMTA0NTcyMDAwQjdCNjM5
IC8qIFhNTE5TTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQ0U1M0VCMEE4RDE4RTcwMDIy
OTQ3RCAvKiBYTUxTZXJpYWxpemVyLmggaW4gSGVhZGVycyAqLywKLQkJCQkwMDAyRUM1ODEzQzNG
NjdEMDAwNDBENDcgLyogWE1MVG9rZW4uaCBpbiBIZWFkZXJzICovLAotCQkJCTAwMDJFQzVBMTND
M0Y2N0QwMDA0MEQ0NyAvKiBYTUxUb2tlbml6ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTAwMzVF
QkJCMTNGMDZGRjIwMEE1NjA4OSAvKiBYTUxUcmVlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTkwNUFEQzAxMzAyRjNDRTAwRjExNkRGIC8qIFhNTFRyZWVWaWV3ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBQjdGQzY5MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aEV2YWx1YXRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkM2MERBNUIwRDJBMzFGNzAwQjk5MThGIC8qIFhQYXRoRXhjZXB0
aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTI4NTMyLDcgKzI4NDk2LDYgQEAKIAkJCQkxQTdGQTYx
QjBEREEzQkJFMDAyOEY4QTUgLyogTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUE3RkE2NDkwRERBM0NCQTAwMjhGOEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVy
TWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxM0VGMzQ5MTY4NTBDNDcwMDM0QzgzRiAvKiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwMENBOTNC
NTEzQzY2OTdDMDBGN0ZFOTUgLyogTmV3WE1MRG9jdW1lbnRQYXJzZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkNFRjQzRTAwRTY3NDExMDAwMUMxMjg3IC8qIE5pbmVQaWVjZUltYWdlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE4QzRBODAwMDlENTYzMjcwMDAzQUM4RCAvKiBOb2RlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTg1NEZFNzMwMEEyMjk3QkUwMDU4RDdBRCAvKiBOb2RlRmlsdGVy
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjkzODgsNyArMjkzNTEsNiBAQAogCQkJCTk3QUFCRDJD
MTRGQTA5RDUwMDc0NTdBRSAvKiBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUyMzA5OUU2NDkyMDA1NkU1ODEgLyogV3JhcENvbnRl
bnRzSW5EdW1teVNwYW5Db21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MzNDN0NDMEEy
Q0YwNzQwMEQ1NzY2NCAvKiBYTGlua05hbWVzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTAwRDA0
NjRBMTNDNEQxNDUwMDMyNkZDQyAvKiBYTUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMDBCOTMxODcxM0JBOERCMzAwMzVBOTQ4IC8qIFhNTERvY3VtZW50
UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTAwQjkzMTg5MTNCQThEQkMwMDM1QTk0OCAv
KiBYTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDBCOTMx
OEIxM0JBOERDOTAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyU2NvcGUuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0yOTQwMCw4ICsyOTM2Miw2IEBACiAJCQkJQTgzM0M4MEMwQTJDRjI1NjAwRDU3
NjY0IC8qIFhNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNUEzNkQ5MTEwNDU3Mjcw
MEI3QjYzOSAvKiBYTUxOU05hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQ0U1M0VBMEE4
RDE4RTcwMDIyOTQ3RCAvKiBYTUxTZXJpYWxpemVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTAw
MDJFQzU5MTNDM0Y2N0QwMDA0MEQ0NyAvKiBYTUxUb2tlbml6ZXIuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJMDAzNUVCQkUxM0YwNzEzQzAwQTU2MDg5IC8qIFhNTFRyZWVCdWlsZGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTU5MDVBREJGMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVlVmlld2Vy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQjdGQzY4MEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0
aEV2YWx1YXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzhEMDdDQzE0NUExMDJFMDA5Njkw
OEQgLyogWFBhdGhFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAppbmRleCA0NzgzMzc1MDI2NWM3OGFiNjgyZDM0NjYzMzVmMzE0NTk5N2ExOTA5Li4xZDYx
NWQ3M2I3Yzk2YmI3MDU4Mjc2ZWYyZWNlNWM3NDkwZTFiOTdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKQEAgLTExNCw3ICsxMTQsNiBAQAogI2luY2x1ZGUgIk5hbWVOb2RlTGlzdC5oIgogI2lu
Y2x1ZGUgIk5hbWVkRmxvd0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJOZXN0aW5nTGV2ZWxJbmNy
ZW1lbnRlci5oIgotI2luY2x1ZGUgIk5ld1hNTERvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAi
Tm9kZUZpbHRlci5oIgogI2luY2x1ZGUgIk5vZGVJdGVyYXRvci5oIgogI2luY2x1ZGUgIk5vZGVS
YXJlRGF0YS5oIgpAQCAtMjE3NCwxMSArMjE3Myw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFZpc3Vh
bGx5T3JkZXJlZCgpCiBQYXNzUmVmUHRyPERvY3VtZW50UGFyc2VyPiBEb2N1bWVudDo6Y3JlYXRl
UGFyc2VyKCkKIHsKICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgcHJvYmFibHkgcGFzcyB0aGUg
ZnJhbWUgaW5zdGVhZAotI2lmIEVOQUJMRShORVdfWE1MKQotICAgIHJldHVybiBOZXdYTUxEb2N1
bWVudFBhcnNlcjo6Y3JlYXRlKHRoaXMpOwotI2Vsc2UKICAgICByZXR1cm4gWE1MRG9jdW1lbnRQ
YXJzZXI6OmNyZWF0ZSh0aGlzLCB2aWV3KCkpOwotI2VuZGlmCiB9CiAKIFNjcmlwdGFibGVEb2N1
bWVudFBhcnNlciogRG9jdW1lbnQ6OnNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKaW5kZXggNDhhZjEwZmUxZWE3ZDJl
YWJmMjNiOGFmYzgwYTI1Y2FhZTAwYmViZS4uODUwMTViMmY0YWFlZDc5MmQ1NWU1MzA3NDRhNGVk
MTNiNTI3ZGQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcApAQCAt
MjUsNyArMjUsNiBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRG9j
dW1lbnRQYXJzZXIuaCIKLSNpbmNsdWRlICJOZXdYTUxEb2N1bWVudFBhcnNlci5oIgogI2luY2x1
ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlhNTERvY3VtZW50
UGFyc2VyLmgiCkBAIC04MywxMSArODIsNyBAQCB2b2lkIERvY3VtZW50RnJhZ21lbnQ6OnBhcnNl
SFRNTChjb25zdCBTdHJpbmcmIHNvdXJjZSwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsCiAKIGJv
b2wgRG9jdW1lbnRGcmFnbWVudDo6cGFyc2VYTUwoY29uc3QgU3RyaW5nJiBzb3VyY2UsIEVsZW1l
bnQqIGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5n
UGVybWlzc2lvbikKIHsKLSNpZiBFTkFCTEUoTkVXX1hNTCkKLSAgICByZXR1cm4gTmV3WE1MRG9j
dW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1lbnRGcmFnbWVudChzb3VyY2UsIHRoaXMsIGNvbnRleHRF
bGVtZW50LCBzY3JpcHRpbmdQZXJtaXNzaW9uKTsKLSNlbHNlCiAgICAgcmV0dXJuIFhNTERvY3Vt
ZW50UGFyc2VyOjpwYXJzZURvY3VtZW50RnJhZ21lbnQoc291cmNlLCB0aGlzLCBjb250ZXh0RWxl
bWVudCwgc2NyaXB0aW5nUGVybWlzc2lvbik7Ci0jZW5kaWYKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9DaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVz
LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL0NoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklu
bGluZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU5Y2Y5M2E2MmJkODQ1ODdi
ODU1OGM3MzBhMTcyYzVmMTRlYWMzZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL0NoYXJhY3RlclJlZmVyZW5j
ZVBhcnNlcklubGluZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDE3MyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgQ2hhcmFjdGVy
UmVmZXJlbmNlUGFyc2VySW5saW5lc19oCi0jZGVmaW5lIENoYXJhY3RlclJlZmVyZW5jZVBhcnNl
cklubGluZXNfaAotCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWlubGluZSBib29sIGlzSGV4RGlnaXQoVUNoYXIgY2MpCi17Ci0g
ICAgcmV0dXJuIChjYyA+PSAnMCcgJiYgY2MgPD0gJzknKSB8fCAoY2MgPj0gJ2EnICYmIGNjIDw9
ICdmJykgfHwgKGNjID49ICdBJyAmJiBjYyA8PSAnRicpOwotfQotCi1pbmxpbmUgdm9pZCB1bmNv
bnN1bWVDaGFyYWN0ZXJzKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmdCdWls
ZGVyJiBjb25zdW1lZENoYXJhY3RlcnMpCi17Ci0gICAgaWYgKGNvbnN1bWVkQ2hhcmFjdGVycy5s
ZW5ndGgoKSA9PSAxKQotICAgICAgICBzb3VyY2UucHVzaChjb25zdW1lZENoYXJhY3RlcnNbMF0p
OwotICAgIGVsc2UgaWYgKGNvbnN1bWVkQ2hhcmFjdGVycy5sZW5ndGgoKSA9PSAyKSB7Ci0gICAg
ICAgIHNvdXJjZS5wdXNoKGNvbnN1bWVkQ2hhcmFjdGVyc1swXSk7Ci0gICAgICAgIHNvdXJjZS5w
dXNoKGNvbnN1bWVkQ2hhcmFjdGVyc1sxXSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHNvdXJjZS5w
cmVwZW5kKFNlZ21lbnRlZFN0cmluZyhjb25zdW1lZENoYXJhY3RlcnMudG9TdHJpbmdQcmVzZXJ2
ZUNhcGFjaXR5KCkpKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFBhcnNlckZ1bmN0aW9ucz4K
LWJvb2wgY29uc3VtZUNoYXJhY3RlclJlZmVyZW5jZShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwg
U3RyaW5nQnVpbGRlciYgZGVjb2RlZENoYXJhY3RlciwgYm9vbCYgbm90RW5vdWdoQ2hhcmFjdGVy
cywgVUNoYXIgYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIpCi17Ci0gICAgQVNTRVJUKCFhZGRp
dGlvbmFsQWxsb3dlZENoYXJhY3RlciB8fCBhZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9PSAn
IicgfHwgYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPT0gJ1wnJyB8fCBhZGRpdGlvbmFsQWxs
b3dlZENoYXJhY3RlciA9PSAnPicpOwotICAgIEFTU0VSVCghbm90RW5vdWdoQ2hhcmFjdGVycyk7
Ci0gICAgQVNTRVJUKGRlY29kZWRDaGFyYWN0ZXIuaXNFbXB0eSgpKTsKLSAgICAKLSAgICBlbnVt
IEVudGl0eVN0YXRlIHsKLSAgICAgICAgSW5pdGlhbCwKLSAgICAgICAgTnVtYmVyLAotICAgICAg
ICBNYXliZUhleExvd2VyQ2FzZVgsCi0gICAgICAgIE1heWJlSGV4VXBwZXJDYXNlWCwKLSAgICAg
ICAgSGV4LAotICAgICAgICBEZWNpbWFsLAotICAgICAgICBOYW1lZAotICAgIH07Ci0gICAgRW50
aXR5U3RhdGUgZW50aXR5U3RhdGUgPSBJbml0aWFsOwotICAgIFVDaGFyMzIgcmVzdWx0ID0gMDsK
LSAgICBTdHJpbmdCdWlsZGVyIGNvbnN1bWVkQ2hhcmFjdGVyczsKLSAgICAKLSAgICB3aGlsZSAo
IXNvdXJjZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgVUNoYXIgY2MgPSBzb3VyY2UuY3VycmVudENo
YXIoKTsKLSAgICAgICAgc3dpdGNoIChlbnRpdHlTdGF0ZSkgewotICAgICAgICBjYXNlIEluaXRp
YWw6IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNj
ID09ICdceDBDJyB8fCBjYyA9PSAnICcgfHwgY2MgPT0gJzwnIHx8IGNjID09ICcmJykKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoYWRkaXRpb25hbEFsbG93
ZWRDaGFyYWN0ZXIgJiYgY2MgPT0gYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKGNjID09ICcjJykgewotICAg
ICAgICAgICAgICAgIGVudGl0eVN0YXRlID0gTnVtYmVyOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKChjYyA+PSAnYScgJiYgY2MgPD0gJ3on
KSB8fCAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykpIHsKLSAgICAgICAgICAgICAgICBlbnRpdHlT
dGF0ZSA9IE5hbWVkOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgTnVtYmVy
OiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJ3gnKSB7Ci0gICAgICAgICAgICAgICAgZW50aXR5
U3RhdGUgPSBNYXliZUhleExvd2VyQ2FzZVg7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJ1gnKSB7Ci0gICAgICAgICAgICAgICAg
ZW50aXR5U3RhdGUgPSBNYXliZUhleFVwcGVyQ2FzZVg7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoY2MgPj0gJzAnICYmIGNjIDw9ICc5Jykg
ewotICAgICAgICAgICAgICAgIGVudGl0eVN0YXRlID0gRGVjaW1hbDsKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNvdXJjZS5wdXNoKCcjJyk7
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBNYXli
ZUhleExvd2VyQ2FzZVg6IHsKLSAgICAgICAgICAgIGlmIChpc0hleERpZ2l0KGNjKSkgewotICAg
ICAgICAgICAgICAgIGVudGl0eVN0YXRlID0gSGV4OwotICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc291cmNlLnB1c2goJyMnKTsKLSAgICAgICAg
ICAgIHNvdXJjZS5wdXNoKCd4Jyk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBNYXliZUhleFVwcGVyQ2FzZVg6IHsKLSAgICAgICAgICAgIGlmIChp
c0hleERpZ2l0KGNjKSkgewotICAgICAgICAgICAgICAgIGVudGl0eVN0YXRlID0gSGV4OwotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc291cmNl
LnB1c2goJyMnKTsKLSAgICAgICAgICAgIHNvdXJjZS5wdXNoKCdYJyk7Ci0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBIZXg6IHsKLSAgICAgICAgICAg
IGlmIChjYyA+PSAnMCcgJiYgY2MgPD0gJzknKQotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJl
c3VsdCAqIDE2ICsgY2MgLSAnMCc7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA+PSAnYScgJiYg
Y2MgPD0gJ2YnKQotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDE2ICsgMTAgKyBj
YyAtICdhJzsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnRicpCi0g
ICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogMTYgKyAxMCArIGNjIC0gJ0EnOwotICAg
ICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJzsnKSB7Ci0gICAgICAgICAgICAgICAgc291cmNlLmFk
dmFuY2VBbmRBU1NFUlQoY2MpOwotICAgICAgICAgICAgICAgIFBhcnNlckZ1bmN0aW9uczo6Y29u
dmVydFRvVVRGMTYoUGFyc2VyRnVuY3Rpb25zOjpsZWdhbEVudGl0eUZvcihyZXN1bHQpLCBkZWNv
ZGVkQ2hhcmFjdGVyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAg
IH0gZWxzZSBpZiAoUGFyc2VyRnVuY3Rpb25zOjphY2NlcHRNYWxmb3JtZWQoKSkgewotICAgICAg
ICAgICAgICAgIFBhcnNlckZ1bmN0aW9uczo6Y29udmVydFRvVVRGMTYoUGFyc2VyRnVuY3Rpb25z
OjpsZWdhbEVudGl0eUZvcihyZXN1bHQpLCBkZWNvZGVkQ2hhcmFjdGVyKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
dW5jb25zdW1lQ2hhcmFjdGVycyhzb3VyY2UsIGNvbnN1bWVkQ2hhcmFjdGVycyk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBEZWNpbWFsOiB7Ci0gICAgICAgICAgICBpZiAoY2Mg
Pj0gJzAnICYmIGNjIDw9ICc5JykKLSAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKiAx
MCArIGNjIC0gJzAnOwotICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJzsnKSB7Ci0gICAgICAg
ICAgICAgICAgc291cmNlLmFkdmFuY2VBbmRBU1NFUlQoY2MpOwotICAgICAgICAgICAgICAgIFBh
cnNlckZ1bmN0aW9uczo6Y29udmVydFRvVVRGMTYoUGFyc2VyRnVuY3Rpb25zOjpsZWdhbEVudGl0
eUZvcihyZXN1bHQpLCBkZWNvZGVkQ2hhcmFjdGVyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoUGFyc2VyRnVuY3Rpb25zOjphY2NlcHRNYWxm
b3JtZWQoKSkgewotICAgICAgICAgICAgICAgIFBhcnNlckZ1bmN0aW9uczo6Y29udmVydFRvVVRG
MTYoUGFyc2VyRnVuY3Rpb25zOjpsZWdhbEVudGl0eUZvcihyZXN1bHQpLCBkZWNvZGVkQ2hhcmFj
dGVyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgdW5jb25zdW1lQ2hhcmFjdGVycyhzb3VyY2UsIGNvbnN1bWVkQ2hh
cmFjdGVycyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBOYW1lZDogewotICAg
ICAgICAgICAgcmV0dXJuIFBhcnNlckZ1bmN0aW9uczo6Y29uc3VtZU5hbWVkRW50aXR5KHNvdXJj
ZSwgZGVjb2RlZENoYXJhY3Rlciwgbm90RW5vdWdoQ2hhcmFjdGVycywgYWRkaXRpb25hbEFsbG93
ZWRDaGFyYWN0ZXIsIGNjKTsKLSAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNvbnN1bWVk
Q2hhcmFjdGVycy5hcHBlbmQoY2MpOwotICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVChj
Yyk7Ci0gICAgfQotICAgIEFTU0VSVChzb3VyY2UuaXNFbXB0eSgpKTsKLSAgICBub3RFbm91Z2hD
aGFyYWN0ZXJzID0gdHJ1ZTsKLSAgICB1bmNvbnN1bWVDaGFyYWN0ZXJzKHNvdXJjZSwgY29uc3Vt
ZWRDaGFyYWN0ZXJzKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIENo
YXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9OZXdYTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL05ld1hNTERvY3VtZW50UGFyc2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNzMzODJhNWU3M2E3ZDU2ZDY5ZWRjYWViZDM1ZGM2MjRlZTU5NjY4OC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL05ld1hNTERvY3VtZW50UGFyc2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIy
MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk5ld1hNTERvY3VtZW50UGFyc2VyLmgiCi0K
LSNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCi0jaW5jbHVkZSAiRWxlbWVudC5oIgotI2lu
Y2x1ZGUgIlNjcmlwdEVsZW1lbnQuaCIKLSNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0j
aW5jbHVkZSAiU2VnbWVudGVkU3RyaW5nLmgiCi0jaW5jbHVkZSAiWE1MVHJlZUJ1aWxkZXIuaCIK
LSNpbmNsdWRlICJYTUxUcmVlVmlld2VyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotTmV3
WE1MRG9jdW1lbnRQYXJzZXI6Ok5ld1hNTERvY3VtZW50UGFyc2VyKERvY3VtZW50KiBkb2N1bWVu
dCkKLSAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihkb2N1bWVudCkKLSAgICAsIG1fdG9r
ZW5pemVyKFhNTFRva2VuaXplcjo6Y3JlYXRlKCkpCi0gICAgLCBtX3BhcnNlclBhdXNlZChmYWxz
ZSkKLSNpZm5kZWYgTkRFQlVHCi0gICAgLCBtX2ZpbmlzaFdhc0NhbGxlZChmYWxzZSkKLSNlbmRp
ZgotICAgICwgbV9wZW5kaW5nU2NyaXB0KDApCi0gICAgLCBtX3NjcmlwdEVsZW1lbnQoMCkKLSAg
ICAsIG1fdHJlZUJ1aWxkZXIoWE1MVHJlZUJ1aWxkZXI6OmNyZWF0ZSh0aGlzLCBkb2N1bWVudCkp
Ci17Ci19Ci0KLU5ld1hNTERvY3VtZW50UGFyc2VyOjpOZXdYTUxEb2N1bWVudFBhcnNlcihEb2N1
bWVudEZyYWdtZW50KiBmcmFnbWVudCwgRWxlbWVudCogcGFyZW50LCBGcmFnbWVudFNjcmlwdGlu
Z1Blcm1pc3Npb24pCi0gICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoZnJhZ21lbnQtPmRv
Y3VtZW50KCkpCi0gICAgLCBtX3Rva2VuaXplcihYTUxUb2tlbml6ZXI6OmNyZWF0ZSgpKQotICAg
ICwgbV9wYXJzZXJQYXVzZWQoZmFsc2UpCi0jaWZuZGVmIE5ERUJVRwotICAgICwgbV9maW5pc2hX
YXNDYWxsZWQoZmFsc2UpCi0jZW5kaWYKLSAgICAsIG1fcGVuZGluZ1NjcmlwdCgwKQotICAgICwg
bV9zY3JpcHRFbGVtZW50KDApCi0gICAgLCBtX3RyZWVCdWlsZGVyKFhNTFRyZWVCdWlsZGVyOjpj
cmVhdGUodGhpcywgZnJhZ21lbnQsIHBhcmVudCkpCi17Ci19Ci0KLWJvb2wgTmV3WE1MRG9jdW1l
bnRQYXJzZXI6OnBhcnNlRG9jdW1lbnRGcmFnbWVudChjb25zdCBTdHJpbmcmIGNodW5rLCBEb2N1
bWVudEZyYWdtZW50KiBmcmFnbWVudCwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsIEZyYWdtZW50
U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQotewotICAgIGlmICghY2h1
bmsubGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgUmVmUHRyPE5ld1hNTERv
Y3VtZW50UGFyc2VyPiBwYXJzZXIgPSBOZXdYTUxEb2N1bWVudFBhcnNlcjo6Y3JlYXRlKGZyYWdt
ZW50LCBjb250ZXh0RWxlbWVudCwgc2NyaXB0aW5nUGVybWlzc2lvbik7Ci0gICAgcGFyc2VyLT5h
cHBlbmQoU2VnbWVudGVkU3RyaW5nKGNodW5rKSk7Ci0gICAgLy8gRG8gbm90IGNhbGwgZmluaXNo
KCkuIEN1cnJlbnQgZmluaXNoKCkgaW1wbGVtZW50YXRpb24gdG91Y2hlcyB0aGUgbWFpbiBEb2N1
bWVudC9sb2FkZXIKLSAgICAvLyBhbmQgY2FuIGNhdXNlIGNyYXNoZXMgaW4gdGhlIGZyYWdtZW50
IGNhc2UuCi0gICAgcGFyc2VyLT5kZXRhY2goKTsgLy8gQWxsb3dzIH5Eb2N1bWVudFBhcnNlciB0
byBhc3NlcnQgaXQgd2FzIGRldGFjaGVkIGJlZm9yZSBkZXN0cnVjdGlvbi4KLQotICAgIC8vIEZJ
WE1FOiByZXR1cm4gZmFsc2UgaWYgbm90IHdlbGwtZm9ybWVkCi0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLU5ld1hNTERvY3VtZW50UGFyc2VyOjp+TmV3WE1MRG9jdW1lbnRQYXJzZXIoKQotewotfQot
Ci12b2lkIE5ld1hNTERvY3VtZW50UGFyc2VyOjpyZXN1bWVQYXJzaW5nKCkKLXsKLSAgICBtX3Bh
cnNlclBhdXNlZCA9IGZhbHNlOwotICAgIGFwcGVuZChtX2lucHV0KTsKLX0KLQotdm9pZCBOZXdY
TUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc1NjcmlwdChTY3JpcHRFbGVtZW50KiBzY3JpcHRFbGVt
ZW50KQotewotICAgIGlmIChzY3JpcHRFbGVtZW50LT5wcmVwYXJlU2NyaXB0KFRleHRQb3NpdGlv
bigpLCBTY3JpcHRFbGVtZW50OjpBbGxvd0xlZ2FjeVR5cGVJblR5cGVBdHRyaWJ1dGUpKSB7Ci0g
ICAgICAgIGlmIChzY3JpcHRFbGVtZW50LT5yZWFkeVRvQmVQYXJzZXJFeGVjdXRlZCgpKQotICAg
ICAgICAgICAgc2NyaXB0RWxlbWVudC0+ZXhlY3V0ZVNjcmlwdChTY3JpcHRTb3VyY2VDb2RlKHNj
cmlwdEVsZW1lbnQtPnNjcmlwdENvbnRlbnQoKSwgZG9jdW1lbnQoKS0+dXJsKCksIFRleHRQb3Np
dGlvbigpKSk7Ci0gICAgICAgIGVsc2UgaWYgKHNjcmlwdEVsZW1lbnQtPndpbGxCZVBhcnNlckV4
ZWN1dGVkKCkpIHsKLSAgICAgICAgICAgIG1fcGVuZGluZ1NjcmlwdCA9IHNjcmlwdEVsZW1lbnQt
PmNhY2hlZFNjcmlwdCgpOwotICAgICAgICAgICAgbV9zY3JpcHRFbGVtZW50ID0gc2NyaXB0RWxl
bWVudC0+ZWxlbWVudCgpOwotICAgICAgICAgICAgbV9wZW5kaW5nU2NyaXB0LT5hZGRDbGllbnQo
dGhpcyk7Ci0KLSAgICAgICAgICAgIC8vIG1fcGVuZGluZ1NjcmlwdCB3aWxsIGJlIDAgaWYgc2Ny
aXB0IHdhcyBhbHJlYWR5IGxvYWRlZCBhbmQgYWRkQ2xpZW50KCkgZXhlY3V0ZWQgaXQuCi0gICAg
ICAgICAgICBpZiAobV9wZW5kaW5nU2NyaXB0KQotICAgICAgICAgICAgICAgIHBhdXNlUGFyc2lu
ZygpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fc2NyaXB0RWxlbWVudCA9IDA7Ci0g
ICAgfQotfQotCi1UZXh0UG9zaXRpb24gTmV3WE1MRG9jdW1lbnRQYXJzZXI6OnRleHRQb3NpdGlv
bigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCk7
Ci19Ci0KLU9yZGluYWxOdW1iZXIgTmV3WE1MRG9jdW1lbnRQYXJzZXI6OmxpbmVOdW1iZXIoKSBj
b25zdAotewotICAgIHJldHVybiBPcmRpbmFsTnVtYmVyOjpmaXJzdCgpOwotfQotCi12b2lkIE5l
d1hNTERvY3VtZW50UGFyc2VyOjppbnNlcnQoY29uc3QgU2VnbWVudGVkU3RyaW5nJikKLXsKLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBOZXdYTUxEb2N1bWVudFBhcnNlcjo6
YXBwZW5kKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc3RyaW5nKQotewotICAgIG1faW5wdXQgPSBz
dHJpbmc7Ci0gICAgd2hpbGUgKCFtX2lucHV0LmlzRW1wdHkoKSAmJiBpc1BhcnNpbmcoKSAmJiAh
bV9wYXJzZXJQYXVzZWQpIHsKLSAgICAgICAgaWYgKCFtX3Rva2VuaXplci0+bmV4dFRva2VuKG1f
aW5wdXQsIG1fdG9rZW4pKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSNpZm5kZWYgTkRFQlVH
Ci0gICAgICAgIG1fdG9rZW4ucHJpbnQoKTsKLSNlbmRpZgotCi0gICAgICAgIEF0b21pY1hNTFRv
a2VuIHRva2VuKG1fdG9rZW4pOwotICAgICAgICBtX3RyZWVCdWlsZGVyLT5wcm9jZXNzVG9rZW4o
dG9rZW4pOwotCi0gICAgICAgIGlmIChtX3Rva2VuLnR5cGUoKSA9PSBYTUxUb2tlblR5cGVzOjpF
bmRPZkZpbGUpCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBtX3Rva2VuLmNsZWFyKCk7
Ci0gICAgICAgIEFTU0VSVChtX3Rva2VuLmlzVW5pbml0aWFsaXplZCgpKTsKLSAgICB9Ci19Ci0K
LXZvaWQgTmV3WE1MRG9jdW1lbnRQYXJzZXI6OmZpbmlzaCgpCi17Ci0gICAgQVNTRVJUKCFtX2Zp
bmlzaFdhc0NhbGxlZCk7Ci0KLSAgICBpZiAobV9wYXJzZXJQYXVzZWQpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIG1fdHJlZUJ1aWxkZXItPmZpbmlzaCgpOwotCi0jaWZuZGVmIE5ERUJVRwotICAg
IG1fZmluaXNoV2FzQ2FsbGVkID0gdHJ1ZTsKLSNlbmRpZgotICAgIGlmIChpc1BhcnNpbmcoKSkg
ewotI2lmIEVOQUJMRShYU0xUKQotICAgICAgICBYTUxUcmVlVmlld2VyIHhtbFRyZWVWaWV3ZXIo
ZG9jdW1lbnQoKSk7Ci0gICAgICAgIGlmICh4bWxUcmVlVmlld2VyLmhhc05vU3R5bGVJbmZvcm1h
dGlvbigpKQotICAgICAgICAgICAgeG1sVHJlZVZpZXdlci50cmFuc2Zvcm1Eb2N1bWVudFRvVHJl
ZVZpZXcoKTsKLSNlbmRpZiAvLyBFTkFCTEUoWFNMVCkKLQotICAgICAgICBwcmVwYXJlVG9TdG9w
UGFyc2luZygpOwotICAgIH0KLSAgICBkb2N1bWVudCgpLT5zZXRSZWFkeVN0YXRlKERvY3VtZW50
OjpJbnRlcmFjdGl2ZSk7Ci0gICAgZG9jdW1lbnQoKS0+ZmluaXNoZWRQYXJzaW5nKCk7Ci19Ci0K
LWJvb2wgTmV3WE1MRG9jdW1lbnRQYXJzZXI6Omhhc0luc2VydGlvblBvaW50KCkKLXsKLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgTmV3WE1MRG9jdW1lbnRQYXJzZXI6OmlzV2FpdGluZ0Zv
clNjcmlwdHMoKSBjb25zdAotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBOZXdYTUxE
b2N1bWVudFBhcnNlcjo6aXNFeGVjdXRpbmdTY3JpcHQoKSBjb25zdAotewotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotdm9pZCBOZXdYTUxEb2N1bWVudFBhcnNlcjo6ZXhlY3V0ZVNjcmlwdHNXYWl0
aW5nRm9yU3R5bGVzaGVldHMoKQotewotfQotCi12b2lkIE5ld1hNTERvY3VtZW50UGFyc2VyOjpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogdW51c2VkUmVzb3VyY2UpCi17Ci0gICAgQVNT
RVJUX1VOVVNFRCh1bnVzZWRSZXNvdXJjZSwgdW51c2VkUmVzb3VyY2UgPT0gbV9wZW5kaW5nU2Ny
aXB0KTsKLSAgICBBU1NFUlQobV9wZW5kaW5nU2NyaXB0LT5hY2Nlc3NDb3VudCgpID4gMCk7Ci0K
LSAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUobV9wZW5kaW5nU2NyaXB0LmdldCgpKTsK
LSAgICBib29sIGVycm9yT2NjdXJyZWQgPSBtX3BlbmRpbmdTY3JpcHQtPmVycm9yT2NjdXJyZWQo
KTsKLSAgICBib29sIHdhc0NhbmNlbGVkID0gbV9wZW5kaW5nU2NyaXB0LT53YXNDYW5jZWxlZCgp
OwotCi0gICAgbV9wZW5kaW5nU2NyaXB0LT5yZW1vdmVDbGllbnQodGhpcyk7Ci0gICAgbV9wZW5k
aW5nU2NyaXB0ID0gMDsKLQotICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gbV9zY3JpcHRF
bGVtZW50OwotICAgIFNjcmlwdEVsZW1lbnQqIHNjcmlwdEVsZW1lbnQgPSB0b1NjcmlwdEVsZW1l
bnQobV9zY3JpcHRFbGVtZW50LmdldCgpKTsKLSAgICBtX3NjcmlwdEVsZW1lbnQgPSAwOwotCi0g
ICAgQVNTRVJUKHNjcmlwdEVsZW1lbnQpOwotCi0gICAgLy8gSmF2YVNjcmlwdCBjYW4gZGV0YWNo
IHRoaXMgcGFyc2VyLCBtYWtlIHN1cmUgaXQncyBrZXB0IGFsaXZlIGV2ZW4gaWYgZGV0YWNoZWQu
Ci0gICAgUmVmUHRyPE5ld1hNTERvY3VtZW50UGFyc2VyPiBwcm90ZWN0KHRoaXMpOwotCi0gICAg
aWYgKGVycm9yT2NjdXJyZWQpCi0gICAgICAgIHNjcmlwdEVsZW1lbnQtPmRpc3BhdGNoRXJyb3JF
dmVudCgpOwotICAgIGVsc2UgaWYgKCF3YXNDYW5jZWxlZCkgewotICAgICAgICBzY3JpcHRFbGVt
ZW50LT5leGVjdXRlU2NyaXB0KHNvdXJjZUNvZGUpOwotICAgICAgICBzY3JpcHRFbGVtZW50LT5k
aXNwYXRjaExvYWRFdmVudCgpOwotICAgIH0KLQotICAgIGlmICghaXNEZXRhY2hlZCgpICYmIG1f
cGFyc2VyUGF1c2VkKQotICAgICAgICByZXN1bWVQYXJzaW5nKCk7Ci19Ci0KLX0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTmV3WE1MRG9jdW1lbnRQYXJzZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTmV3WE1MRG9jdW1lbnRQYXJzZXIuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZjEyYzY3YWIwZGY1NWMyMDk3YTkxYmI5MmE1MzhkNjYyMWE2
Y2NlMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL05ld1hNTERvY3VtZW50UGFyc2VyLmgKKysrIC9kZXYvbnVs
bApAQCAtMSwxMDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgTmV3WE1MRG9jdW1lbnRQYXJzZXJfaAotI2RlZmluZSBOZXdYTUxE
b2N1bWVudFBhcnNlcl9oCi0KLSNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgotI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCi0jaW5jbHVkZSAiQ2FjaGVkU2NyaXB0Lmgi
Ci0jaW5jbHVkZSAiRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmgiCi0jaW5jbHVkZSAiU2Ny
aXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCi0jaW5jbHVkZSAiWE1MVG9rZW4uaCIKLSNpbmNsdWRl
ICJYTUxUb2tlbml6ZXIuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDb250YWluZXJO
b2RlOwotY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBEb2N1bWVudEZyYWdtZW50OwotY2xhc3MgU2Ny
aXB0RWxlbWVudDsKLWNsYXNzIFhNTFRyZWVCdWlsZGVyOwotCi1jbGFzcyBOZXdYTUxEb2N1bWVu
dFBhcnNlciA6IHB1YmxpYyBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIsIHB1YmxpYyBDYWNoZWRS
ZXNvdXJjZUNsaWVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8TmV3WE1MRG9jdW1lbnRQYXJzZXI+IGNyZWF0ZShEb2N1bWVu
dCogZG9jdW1lbnQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE5ld1hNTERv
Y3VtZW50UGFyc2VyKGRvY3VtZW50KSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8
TmV3WE1MRG9jdW1lbnRQYXJzZXI+IGNyZWF0ZShEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwg
RWxlbWVudCogcGFyZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVy
bWlzc2lvbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTmV3WE1MRG9jdW1l
bnRQYXJzZXIoZnJhZ21lbnQsIHBhcmVudCwgc2NyaXB0aW5nUGVybWlzc2lvbikpOwotICAgIH0K
LQotICAgIHN0YXRpYyBib29sIHBhcnNlRG9jdW1lbnRGcmFnbWVudChjb25zdCBTdHJpbmcmLCBE
b2N1bWVudEZyYWdtZW50KiwgRWxlbWVudCogcGFyZW50ID0gMCwgRnJhZ21lbnRTY3JpcHRpbmdQ
ZXJtaXNzaW9uID0gQWxsb3dTY3JpcHRpbmdDb250ZW50KTsKLQotICAgIHZvaWQgcGF1c2VQYXJz
aW5nKCkgeyBtX3BhcnNlclBhdXNlZCA9IHRydWU7IH0KLSAgICB2b2lkIHJlc3VtZVBhcnNpbmco
KTsKLSAgICB2b2lkIHByb2Nlc3NTY3JpcHQoU2NyaXB0RWxlbWVudCopOwotCi0gICAgdmlydHVh
bCBUZXh0UG9zaXRpb24gdGV4dFBvc2l0aW9uKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBPcmRpbmFs
TnVtYmVyIGxpbmVOdW1iZXIoKSBjb25zdDsKLQotICAgIC8vIERvY3VtZW50UGFyc2VyCi0gICAg
dmlydHVhbCBib29sIGhhc0luc2VydGlvblBvaW50KCk7Ci0gICAgdmlydHVhbCBib29sIGlzV2Fp
dGluZ0ZvclNjcmlwdHMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNFeGVjdXRpbmdTY3Jp
cHQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5
bGVzaGVldHMoKTsKLQotICAgIC8vIENhY2hlZFJlc291cmNlQ2xpZW50Ci0gICAgdmlydHVhbCB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7Ci0KLXByb3RlY3RlZDoKLSAgICB2
aXJ0dWFsIHZvaWQgaW5zZXJ0KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYpOwotICAgIHZpcnR1YWwg
dm9pZCBhcHBlbmQoY29uc3QgU2VnbWVudGVkU3RyaW5nJik7Ci0gICAgdmlydHVhbCB2b2lkIGZp
bmlzaCgpOwotCi1wcml2YXRlOgotICAgIE5ld1hNTERvY3VtZW50UGFyc2VyKERvY3VtZW50Kik7
Ci0gICAgTmV3WE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCosIEVsZW1lbnQqIHBh
cmVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uKTsKLSAgICB2aXJ0dWFsIH5OZXdYTUxE
b2N1bWVudFBhcnNlcigpOwotCi0gICAgU2VnbWVudGVkU3RyaW5nIG1faW5wdXQ7Ci0gICAgT3du
UHRyPFhNTFRva2VuaXplcj4gbV90b2tlbml6ZXI7Ci0gICAgWE1MVG9rZW4gbV90b2tlbjsKLQot
ICAgIGJvb2wgbV9wYXJzZXJQYXVzZWQ7Ci0jaWZuZGVmIE5ERUJVRwotICAgIGJvb2wgbV9maW5p
c2hXYXNDYWxsZWQ7Ci0jZW5kaWYKLQotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNj
cmlwdD4gbV9wZW5kaW5nU2NyaXB0OwotICAgIFJlZlB0cjxFbGVtZW50PiBtX3NjcmlwdEVsZW1l
bnQ7Ci0KLSAgICBPd25QdHI8WE1MVHJlZUJ1aWxkZXI+IG1fdHJlZUJ1aWxkZXI7Ci19OwotCi19
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxDaGFy
YWN0ZXJSZWZlcmVuY2VQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxD
aGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA3YmVlMjI4ZTY2OGViYTA1NzM4YjNmZDE4ODI1ZjVmN2JmODQ0ZTEzLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSwgSW5jLiBodHRw
Oi8vd3d3LnRvcmNobW9iaWxlLmNvbS8KLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUsIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJYTUxDaGFyYWN0ZXJS
ZWZlcmVuY2VQYXJzZXIuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdURjsKLQotI2luY2x1ZGUgIkNo
YXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZXMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1uYW1lc3BhY2UgewotCi1jbGFzcyBYTUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIgewotcHVi
bGljOgotICAgIGlubGluZSBzdGF0aWMgVUNoYXIzMiBsZWdhbEVudGl0eUZvcihVQ2hhcjMyIHZh
bHVlKQotICAgIHsKLSAgICAgICAgLy8gRklYTUU6IEEgbnVtYmVyIG9mIHNwZWNpZmljIGVudGl0
eSB2YWx1ZXMgZ2VuZXJhdGUgcGFyc2UgZXJyb3JzLgotICAgICAgICBpZiAoIXZhbHVlIHx8IHZh
bHVlID4gMHgxMEZGRkYgfHwgKHZhbHVlID49IDB4RDgwMCAmJiB2YWx1ZSA8PSAweERGRkYpKQot
ICAgICAgICByZXR1cm4gMHhGRkZEOwotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfQotCi0g
ICAgaW5saW5lIHN0YXRpYyB2b2lkIGNvbnZlcnRUb1VURjE2KFVDaGFyMzIgdmFsdWUsIFN0cmlu
Z0J1aWxkZXImIGRlY29kZWRDaGFyYWN0ZXIpCi0gICAgewotICAgICAgICBpZiAoVV9JU19CTVAo
dmFsdWUpKSB7Ci0gICAgICAgICAgICBVQ2hhciBjaGFyYWN0ZXIgPSBzdGF0aWNfY2FzdDxVQ2hh
cj4odmFsdWUpOwotICAgICAgICAgICAgQVNTRVJUKGNoYXJhY3RlciA9PSB2YWx1ZSk7Ci0gICAg
ICAgICAgICBkZWNvZGVkQ2hhcmFjdGVyLmFwcGVuZChjaGFyYWN0ZXIpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGRlY29kZWRDaGFyYWN0ZXIuYXBwZW5kKFUxNl9M
RUFEKHZhbHVlKSk7Ci0gICAgICAgIGRlY29kZWRDaGFyYWN0ZXIuYXBwZW5kKFUxNl9UUkFJTCh2
YWx1ZSkpOwotICAgIH0KLQotICAgIGlubGluZSBzdGF0aWMgYm9vbCBhY2NlcHRNYWxmb3JtZWQo
KSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgaW5saW5lIHN0YXRpYyBib29sIGNvbnN1bWVOYW1l
ZEVudGl0eShTZWdtZW50ZWRTdHJpbmcmLCBTdHJpbmdCdWlsZGVyJiwgYm9vbCYsIFVDaGFyLCBV
Q2hhciYpCi0gICAgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLX07Ci0KLX0KLQotYm9vbCBjb25zdW1lWE1MQ2hhcmFjdGVyUmVm
ZXJlbmNlKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBTdHJpbmdCdWlsZGVyJiBkZWNvZGVkQ2hh
cmFjdGVyLCBib29sJiBub3RFbm91Z2hDaGFyYWN0ZXJzKQotewotICAgIHJldHVybiBjb25zdW1l
Q2hhcmFjdGVyUmVmZXJlbmNlPFhNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcj4oc291cmNlLCBk
ZWNvZGVkQ2hhcmFjdGVyLCBub3RFbm91Z2hDaGFyYWN0ZXJzLCAwKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxD
aGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
Q2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDVlYzNhMDAzOTc3NGI4NGE5ODkyNjA4YWVhY2FjNmQ2MmRmZTM1MTIuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lm
bmRlZiBYTUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXJfaAotI2RlZmluZSBYTUxDaGFyYWN0ZXJS
ZWZlcmVuY2VQYXJzZXJfaAotCi0jaW5jbHVkZSAiU2VnbWVudGVkU3RyaW5nLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLSAgICAKLWJvb2wgY29uc3VtZVhNTENoYXJhY3RlclJlZmVyZW5jZShT
ZWdtZW50ZWRTdHJpbmcmLCBTdHJpbmdCdWlsZGVyJiBkZWNvZGVkQ2hhcmFjdGVyLCBib29sJiBu
b3RFbm91Z2hDaGFyYWN0ZXJzKTsKLQotfQotCi0jZW5kaWYgLy8gWE1MQ2hhcmFjdGVyUmVmZXJl
bmNlUGFyc2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9r
ZW4uaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9rZW4uaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYjU5NWE2ZjAwOWUwNzI1NjVmMzFkODZlZWRjOWQwOThmZjI3ZjNi
OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTFRva2VuLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NzggKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgWE1MVG9rZW5faAotI2RlZmluZSBYTUxUb2tlbl9oCi0KLSNpbmNsdWRlICJNYXJrdXBUb2tl
bkJhc2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBYTUxUb2tlblR5cGVzIHsK
LXB1YmxpYzoKLSAgICBlbnVtIFR5cGUgewotICAgICAgICBVbmluaXRpYWxpemVkLAotICAgICAg
ICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24sCi0gICAgICAgIFhNTERlY2xhcmF0aW9uLAotICAgICAg
ICBET0NUWVBFLAotICAgICAgICBDREFUQSwKLSAgICAgICAgU3RhcnRUYWcsCi0gICAgICAgIEVu
ZFRhZywKLSAgICAgICAgQ29tbWVudCwKLSAgICAgICAgQ2hhcmFjdGVyLAotICAgICAgICBFbnRp
dHksCi0gICAgICAgIEVuZE9mRmlsZSwKLSAgICB9OwotfTsKLQotY2xhc3MgUHJlZml4ZWRBdHRy
aWJ1dGUgOiBwdWJsaWMgQXR0cmlidXRlQmFzZSB7Ci1wdWJsaWM6Ci0gICAgUmFuZ2UgbV9wcmVm
aXhSYW5nZTsKLSAgICBXVEY6OlZlY3RvcjxVQ2hhciwgMzI+IG1fcHJlZml4OwotfTsKLQotY2xh
c3MgWE1MVG9rZW4gOiBwdWJsaWMgTWFya3VwVG9rZW5CYXNlPFhNTFRva2VuVHlwZXMsIERvY3R5
cGVEYXRhQmFzZSwgUHJlZml4ZWRBdHRyaWJ1dGU+IHsKLXB1YmxpYzoKLSAgICBjbGFzcyBYTUxE
ZWNsYXJhdGlvbkRhdGEgewotICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShYTUxEZWNsYXJh
dGlvbkRhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBwdWJsaWM6Ci0gICAgICAg
IFhNTERlY2xhcmF0aW9uRGF0YSgpCi0gICAgICAgICAgICA6IG1faGFzU3RhbmRhbG9uZShmYWxz
ZSkKLSAgICAgICAgICAgICwgbV9oYXNFbmNvZGluZyhmYWxzZSkKLSAgICAgICAgICAgICwgbV9z
dGFuZGFsb25lKGZhbHNlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG1f
aGFzU3RhbmRhbG9uZTsKLSAgICAgICAgYm9vbCBtX2hhc0VuY29kaW5nOwotICAgICAgICBib29s
IG1fc3RhbmRhbG9uZTsKLSAgICAgICAgV1RGOjpWZWN0b3I8VUNoYXI+IG1fZW5jb2Rpbmc7Ci0g
ICAgICAgIFdURjo6VmVjdG9yPFVDaGFyPiBtX3ZlcnNpb247Ci0gICAgfTsKLQotICAgIHZpcnR1
YWwgdm9pZCBjbGVhcigpCi0gICAgewotICAgICAgICBNYXJrdXBUb2tlbkJhc2U8WE1MVG9rZW5U
eXBlcywgRG9jdHlwZURhdGFCYXNlLCBQcmVmaXhlZEF0dHJpYnV0ZT46OmNsZWFyKCk7Ci0gICAg
ICAgIG1fdGFyZ2V0LmNsZWFyKCk7Ci0gICAgfQotCi0gICAgdm9pZCBhcHBlbmRUb05hbWUoVUNo
YXIgY2hhcmFjdGVyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5
cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6RW5kVGFnIHx8IG1fdHlw
ZSA9PSBYTUxUb2tlblR5cGVzOjpET0NUWVBFIHx8IG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpF
bnRpdHkpOwotICAgICAgICBNYXJrdXBUb2tlbkJhc2U8WE1MVG9rZW5UeXBlcywgRG9jdHlwZURh
dGFCYXNlLCBQcmVmaXhlZEF0dHJpYnV0ZT46OmFwcGVuZFRvTmFtZShjaGFyYWN0ZXIpOwotICAg
IH0KLQotICAgIGNvbnN0IERhdGFWZWN0b3ImIG5hbWUoKSBjb25zdAotICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gWE1M
VG9rZW5UeXBlczo6RW5kVGFnIHx8IG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpET0NUWVBFIHx8
IG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpFbnRpdHkpOwotICAgICAgICByZXR1cm4gTWFya3Vw
VG9rZW5CYXNlPFhNTFRva2VuVHlwZXMsIERvY3R5cGVEYXRhQmFzZSwgUHJlZml4ZWRBdHRyaWJ1
dGU+OjpuYW1lKCk7Ci0gICAgfQotCi0gICAgY29uc3QgRGF0YVZlY3RvciYgdGFyZ2V0KCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6UHJvY2Vz
c2luZ0luc3RydWN0aW9uKTsKLSAgICAgICAgcmV0dXJuIG1fdGFyZ2V0OwotICAgIH0KLQotICAg
IGNvbnN0IERhdGFWZWN0b3ImIGRhdGEoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBYTUxUb2tlblR5cGVzOjpDREFUQSB8fCBtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6
UHJvY2Vzc2luZ0luc3RydWN0aW9uKTsKLSAgICAgICAgcmV0dXJuIG1fZGF0YTsKLSAgICB9Ci0K
LSAgICBjb25zdCBEYXRhVmVjdG9yJiBwcmVmaXgoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gWE1MVG9r
ZW5UeXBlczo6RW5kVGFnKTsKLSAgICAgICAgcmV0dXJuIG1fdGFyZ2V0OwotICAgIH0KLQotICAg
IGNvbnN0IFhNTERlY2xhcmF0aW9uRGF0YSYgeG1sRGVjbGFyYXRpb25EYXRhKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6WE1MRGVjbGFyYXRp
b24pOwotICAgICAgICBBU1NFUlQobV94bWxEZWNsYXJhdGlvbkRhdGEpOwotICAgICAgICByZXR1
cm4gKm1feG1sRGVjbGFyYXRpb25EYXRhLmdldCgpOwotICAgIH0KLQotICAgIHZvaWQgYmVnaW5E
T0NUWVBFKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6
VW5pbml0aWFsaXplZCk7Ci0gICAgICAgIG1fdHlwZSA9IFhNTFRva2VuVHlwZXM6OkRPQ1RZUEU7
Ci0gICAgICAgIG1fZG9jdHlwZURhdGEgPSBhZG9wdFB0cihuZXcgRG9jdHlwZURhdGEoKSk7Ci0g
ICAgfQotCi0gICAgdm9pZCBiZWdpbkRPQ1RZUEUoVUNoYXIgY2hhcmFjdGVyKQotICAgIHsKLSAg
ICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7Ci0gICAgICAgIGJlZ2luRE9DVFlQRSgpOwotICAgICAg
ICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgfQotCi0gICAgdm9pZCBiZWdpblhNTERl
Y2xhcmF0aW9uKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBl
czo6VW5pbml0aWFsaXplZCk7Ci0gICAgICAgIG1fdHlwZSA9IFhNTFRva2VuVHlwZXM6OlhNTERl
Y2xhcmF0aW9uOwotICAgICAgICBtX3htbERlY2xhcmF0aW9uRGF0YSA9IGFkb3B0UHRyKG5ldyBY
TUxEZWNsYXJhdGlvbkRhdGEoKSk7Ci0gICAgfQotCi0gICAgdm9pZCBhcHBlbmRUb1hNTFZlcnNp
b24oVUNoYXIgY2hhcmFjdGVyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7Ci0g
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6WE1MRGVjbGFyYXRpb24pOwot
ICAgICAgICBBU1NFUlQobV94bWxEZWNsYXJhdGlvbkRhdGEpOwotICAgICAgICBtX3htbERlY2xh
cmF0aW9uRGF0YS0+bV92ZXJzaW9uLmFwcGVuZChjaGFyYWN0ZXIpOwotICAgIH0KLQotICAgIHZv
aWQgYmVnaW5YTUxFbmNvZGluZyhVQ2hhciBjaGFyYWN0ZXIpCi0gICAgewotICAgICAgICBBU1NF
UlQoY2hhcmFjdGVyKTsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpY
TUxEZWNsYXJhdGlvbik7Ci0gICAgICAgIEFTU0VSVChtX3htbERlY2xhcmF0aW9uRGF0YSk7Ci0g
ICAgICAgIG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX2hhc0VuY29kaW5nID0gdHJ1ZTsKLSAgICAg
ICAgbV94bWxEZWNsYXJhdGlvbkRhdGEtPm1fZW5jb2RpbmcuYXBwZW5kKGNoYXJhY3Rlcik7Ci0g
ICAgfQotCi0gICAgdm9pZCBhcHBlbmRUb1hNTEVuY29kaW5nKFVDaGFyIGNoYXJhY3RlcikKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOwotICAgICAgICBBU1NFUlQobV90eXBlID09
IFhNTFRva2VuVHlwZXM6OlhNTERlY2xhcmF0aW9uKTsKLSAgICAgICAgQVNTRVJUKG1feG1sRGVj
bGFyYXRpb25EYXRhKTsKLSAgICAgICAgQVNTRVJUKG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX2hh
c0VuY29kaW5nKTsKLSAgICAgICAgbV94bWxEZWNsYXJhdGlvbkRhdGEtPm1fZW5jb2RpbmcuYXBw
ZW5kKGNoYXJhY3Rlcik7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRYTUxTdGFuZGFsb25lKGJvb2wg
c3RhbmRhbG9uZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBl
czo6WE1MRGVjbGFyYXRpb24pOwotICAgICAgICBBU1NFUlQobV94bWxEZWNsYXJhdGlvbkRhdGEp
OwotICAgICAgICBtX3htbERlY2xhcmF0aW9uRGF0YS0+bV9oYXNTdGFuZGFsb25lID0gdHJ1ZTsK
LSAgICAgICAgbV94bWxEZWNsYXJhdGlvbkRhdGEtPm1fc3RhbmRhbG9uZSA9IHN0YW5kYWxvbmU7
Ci0gICAgfQotCi0gICAgdm9pZCBiZWdpblByb2Nlc3NpbmdJbnN0cnVjdGlvbigpCi0gICAgewot
ICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQpOwot
ICAgICAgICBtX3R5cGUgPSBYTUxUb2tlblR5cGVzOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb247Ci0g
ICAgfQotCi0gICAgdm9pZCBiZWdpblByb2Nlc3NpbmdJbnN0cnVjdGlvbihVQ2hhciBjaGFyYWN0
ZXIpCi0gICAgewotICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKLSAgICAgICAgYmVnaW5Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24oKTsKLSAgICAgICAgbV90YXJnZXQuYXBwZW5kKGNoYXJhY3Rlcik7
Ci0gICAgfQotCi0gICAgdm9pZCBhcHBlbmRUb1Byb2Nlc3NpbmdJbnN0cnVjdGlvblRhcmdldChV
Q2hhciBjaGFyYWN0ZXIpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2Vu
VHlwZXM6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbik7Ci0gICAgICAgIEFTU0VSVChjaGFyYWN0ZXIp
OwotICAgICAgICBtX3RhcmdldC5hcHBlbmQoY2hhcmFjdGVyKTsKLSAgICB9Ci0KLSAgICB2b2lk
IGFwcGVuZFRvUHJvY2Vzc2luZ0luc3RydWN0aW9uRGF0YShVQ2hhciBjaGFyYWN0ZXIpCi0gICAg
ewotICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlByb2Nlc3NpbmdJbnN0
cnVjdGlvbik7Ci0gICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOwotICAgICAgICBtX2RhdGEuYXBw
ZW5kKGNoYXJhY3Rlcik7Ci0gICAgfQotCi0gICAgdm9pZCBlbmRQcmVmaXgoKQotICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUg
PT0gWE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKLSAgICAgICAgQVNTRVJUKG1fdGFyZ2V0LmlzRW1w
dHkoKSk7Ci0gICAgICAgIC8vIEZJWE1FOiBzZWUgaWYgd2UgY2FuIGF2b2lkIHRoZSBjb3B5IGlu
aGVyZW50IHdpdGggdGhpcyBzd2FwCi0gICAgICAgIG1fdGFyZ2V0LnN3YXAobV9kYXRhKTsKLSAg
ICB9Ci0KLSAgICBib29sIGhhc1ByZWZpeCgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQo
bV90eXBlID09IFhNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBYTUxUb2tlblR5
cGVzOjpFbmRUYWcpOwotICAgICAgICByZXR1cm4gbV90YXJnZXQuc2l6ZSgpOwotICAgIH0KLQot
ICAgIHZvaWQgYmVnaW5DREFUQSgpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFhN
TFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQpOwotICAgICAgICBtX3R5cGUgPSBYTUxUb2tlblR5
cGVzOjpDREFUQTsKLSAgICB9Ci0KLSAgICB2b2lkIGFwcGVuZFRvQ0RBVEEoVUNoYXIgY2hhcmFj
dGVyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpDREFU
QSk7Ci0gICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOwotICAgICAgICBtX2RhdGEuYXBwZW5kKGNo
YXJhY3Rlcik7Ci0gICAgfQotCi0gICAgdm9pZCBiZWdpbkVudGl0eSgpCi0gICAgewotICAgICAg
ICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQpOwotICAgICAg
ICBtX3R5cGUgPSBYTUxUb2tlblR5cGVzOjpFbnRpdHk7Ci0gICAgfQotCi0gICAgdm9pZCBiZWdp
bkVudGl0eShVQ2hhciBjaGFyYWN0ZXIpCi0gICAgewotICAgICAgICBBU1NFUlQoY2hhcmFjdGVy
KTsKLSAgICAgICAgYmVnaW5FbnRpdHkoKTsKLSAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0
ZXIpOwotICAgIH0KLQotICAgIHZvaWQgZW5kQXR0cmlidXRlUHJlZml4KGludCBvZmZzZXQpCi0g
ICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsK
LSAgICAgICAgaW50IGluZGV4ID0gb2Zmc2V0IC0gbV9iYXNlT2Zmc2V0OwotICAgICAgICBtX2N1
cnJlbnRBdHRyaWJ1dGUtPm1fcHJlZml4LnN3YXAobV9jdXJyZW50QXR0cmlidXRlLT5tX25hbWUp
OwotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fcHJlZml4UmFuZ2UubV9zdGFydCA9IG1f
Y3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fc3RhcnQ7Ci0gICAgICAgIG1fY3VycmVu
dEF0dHJpYnV0ZS0+bV9wcmVmaXhSYW5nZS5tX2VuZCA9IGluZGV4OwotICAgICAgICBtX2N1cnJl
bnRBdHRyaWJ1dGUtPm1fbmFtZVJhbmdlLm1fc3RhcnQgPSBpbmRleDsKLSAgICAgICAgbV9jdXJy
ZW50QXR0cmlidXRlLT5tX25hbWVSYW5nZS5tX2VuZCA9IGluZGV4OwotICAgIH0KLQotICAgIGJv
b2wgYXR0cmlidXRlSGFzUHJlZml4KCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
WE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwotICAgICAgICByZXR1cm4gIW1fY3VycmVudEF0dHJp
YnV0ZS0+bV9wcmVmaXguaXNFbXB0eSgpOwotICAgIH0KLQotI2lmbmRlZiBOREVCVUcKLSAgICB2
b2lkIHByaW50QXR0cnMoKSBjb25zdAotICAgIHsKLSAgICAgICAgQXR0cmlidXRlTGlzdDo6Y29u
c3RfaXRlcmF0b3IgaXRlciA9IG1fYXR0cmlidXRlcy5iZWdpbigpOwotICAgICAgICBmb3IgKDsg
aXRlciAhPSBtX2F0dHJpYnV0ZXMuZW5kKCk7ICsraXRlcikgewotICAgICAgICAgICAgZnByaW50
ZihzdGRlcnIsICIgIik7Ci0gICAgICAgICAgICBpZiAoIWl0ZXItPm1fcHJlZml4LmlzRW1wdHko
KSkgewotICAgICAgICAgICAgICAgIHByaW50U3RyaW5nKGl0ZXItPm1fcHJlZml4KTsKLSAgICAg
ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIjoiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHByaW50U3RyaW5nKGl0ZXItPm1fbmFtZSk7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIj1cIiIpOwotICAgICAgICAgICAgcHJpbnRTdHJpbmcoaXRlci0+bV92YWx1ZSk7Ci0gICAg
ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlwiIik7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2
b2lkIHByaW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAg
ICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZDoKLSAgICAgICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiVU5JVElBTElaRUQiKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAg
IGNhc2UgWE1MVG9rZW5UeXBlczo6UHJvY2Vzc2luZ0luc3RydWN0aW9uOgotICAgICAgICAgICAg
ZnByaW50ZihzdGRlcnIsICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246ICIpOwotICAgICAgICAgICAg
ZnByaW50ZihzdGRlcnIsICI8PyIpOwotICAgICAgICAgICAgcHJpbnRTdHJpbmcobV90YXJnZXQp
OwotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgIik7Ci0gICAgICAgICAgICBwcmludFN0
cmluZyhtX2RhdGEpOwotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICI/PiIpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpYTUxEZWNsYXJhdGlv
bjoKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiWE1MIERlY2xhcmF0aW9uOiAiKTsKLSAg
ICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiPD94bWwgdmVyc2lvbj1cIiIpOwotICAgICAgICAg
ICAgQVNTRVJUKG1feG1sRGVjbGFyYXRpb25EYXRhKTsKLSAgICAgICAgICAgIHByaW50U3RyaW5n
KG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX3ZlcnNpb24pOwotICAgICAgICAgICAgZnByaW50Zihz
dGRlcnIsICJcIiIpOwotICAgICAgICAgICAgaWYgKG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX2hh
c0VuY29kaW5nKSB7Ci0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgZW5jb2Rpbmc9
XCIiKTsKLSAgICAgICAgICAgICAgICBwcmludFN0cmluZyhtX3htbERlY2xhcmF0aW9uRGF0YS0+
bV9lbmNvZGluZyk7Ci0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJcIiIpOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX2hhc1N0
YW5kYWxvbmUpCi0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgc3RhbmRhbG9uZT1c
IiVzXCIiLCBtX3htbERlY2xhcmF0aW9uRGF0YS0+bV9zdGFuZGFsb25lID8gInllcyIgOiAibm8i
KTsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiPz4iKTsKLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6RE9DVFlQRToKLSAgICAgICAgICAgIGZw
cmludGYoc3RkZXJyLCAiRE9DVFlQRTogIik7Ci0gICAgICAgICAgICBBU1NFUlQobV9kb2N0eXBl
RGF0YSk7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIjwhRE9DVFlQRSAiKTsKLSAgICAg
ICAgICAgIHByaW50U3RyaW5nKG1fZGF0YSk7Ci0gICAgICAgICAgICBpZiAobV9kb2N0eXBlRGF0
YS0+bV9oYXNQdWJsaWNJZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRl
cnIsICIgUFVCTElDIFwiIik7Ci0gICAgICAgICAgICAgICAgcHJpbnRTdHJpbmcobV9kb2N0eXBl
RGF0YS0+bV9wdWJsaWNJZGVudGlmaWVyKTsKLSAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIlwiIik7Ci0gICAgICAgICAgICAgICAgaWYgKG1fZG9jdHlwZURhdGEtPm1faGFzU3lzdGVt
SWRlbnRpZmllcikgewotICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiBcIiIp
OwotICAgICAgICAgICAgICAgICAgICBwcmludFN0cmluZyhtX2RvY3R5cGVEYXRhLT5tX3N5c3Rl
bUlkZW50aWZpZXIpOwotICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlwiIik7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIGlmIChtX2RvY3R5cGVEYXRh
LT5tX2hhc1N5c3RlbUlkZW50aWZpZXIpIHsKLSAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIiBTWVNURU0gXCIiKTsKLSAgICAgICAgICAgICAgICBwcmludFN0cmluZyhtX2RvY3R5cGVE
YXRhLT5tX3N5c3RlbUlkZW50aWZpZXIpOwotICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJy
LCAiXCIiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiPiIp
OwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpDREFU
QToKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ0RBVEE6ICIpOwotICAgICAgICAgICAg
ZnByaW50ZihzdGRlcnIsICI8IVtDREFUQVsiKTsKLSAgICAgICAgICAgIHByaW50U3RyaW5nKG1f
ZGF0YSk7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIl1dPiIpOwotICAgICAgICAgICAg
YnJlYWs7Ci0KLSAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpTdGFydFRhZzoKLSAgICAgICAg
ICAgIGZwcmludGYoc3RkZXJyLCAiU3RhcnQgVGFnOiAiKTsKLSAgICAgICAgICAgIGZwcmludGYo
c3RkZXJyLCAiPCIpOwotICAgICAgICAgICAgaWYgKGhhc1ByZWZpeCgpKSB7Ci0gICAgICAgICAg
ICAgICAgcHJpbnRTdHJpbmcobV90YXJnZXQpOwotICAgICAgICAgICAgICAgIGZwcmludGYoc3Rk
ZXJyLCAiOiIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcHJpbnRTdHJpbmcobV9kYXRh
KTsKLSAgICAgICAgICAgIHByaW50QXR0cnMoKTsKLSAgICAgICAgICAgIGlmIChzZWxmQ2xvc2lu
ZygpKQotICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiLyIpOwotICAgICAgICAgICAg
ZnByaW50ZihzdGRlcnIsICI+Iik7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNl
IFhNTFRva2VuVHlwZXM6OkVuZFRhZzoKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRW5k
IFRhZzogIik7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIjwvIik7Ci0gICAgICAgICAg
ICBpZiAoaGFzUHJlZml4KCkpIHsKLSAgICAgICAgICAgICAgICBwcmludFN0cmluZyhtX3Rhcmdl
dCk7Ci0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICI6Iik7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBwcmludFN0cmluZyhtX2RhdGEpOwotICAgICAgICAgICAgZnByaW50Zihz
dGRlcnIsICI+Iik7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFhNTFRva2Vu
VHlwZXM6OkNvbW1lbnQ6Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNvbW1lbnQ6ICIp
OwotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICI8IS0tIik7Ci0gICAgICAgICAgICBwcmlu
dFN0cmluZyhtX2RhdGEpOwotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICItLT4iKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVy
OgotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJDaGFyYWN0ZXJzOiAiKTsKLSAgICAgICAg
ICAgIHByaW50U3RyaW5nKG1fZGF0YSk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBj
YXNlIFhNTFRva2VuVHlwZXM6OkVudGl0eToKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAi
RW50aXR5OiAiKTsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJiIpOwotICAgICAgICAg
ICAgcHJpbnRTdHJpbmcobV9kYXRhKTsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiOyIp
OwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpFbmRP
ZkZpbGU6Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVPRiIpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlxuIik7Ci0gICAg
fQotI2VuZGlmIC8vIE5ERUJVRwotCi1wcml2YXRlOgotICAgIC8vIEF0b21pY1hNTFRva2VuIG5l
ZWRzIHRvIHN0ZWFsIHNvbWUgb2Ygb3VyIHBvaW50ZXJzIGZyb20gdXMKLSAgICAvLyBGSVhNRTog
YWRkIHRha2UqIGZ1bmN0aW9ucwotICAgIGZyaWVuZCBjbGFzcyBBdG9taWNYTUxUb2tlbjsKLQot
ICAgIC8vICJ0YXJnZXQiIGZvciBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24sICJwcmVmaXgiIGZvciBT
dGFydFRhZyBhbmQgRW5kVGFnCi0gICAgRGF0YVZlY3RvciBtX3RhcmdldDsKLQotICAgIC8vIEZv
ciBYTUwgRGVjbGFyYXRpb24KLSAgICBPd25QdHI8WE1MRGVjbGFyYXRpb25EYXRhPiBtX3htbERl
Y2xhcmF0aW9uRGF0YTsKLX07Ci0KLWNsYXNzIEF0b21pY1hNTFRva2VuIDogcHVibGljIEF0b21p
Y01hcmt1cFRva2VuQmFzZTxYTUxUb2tlbj4gewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF0
b21pY1hNTFRva2VuKTsKLXB1YmxpYzoKLSAgICBBdG9taWNYTUxUb2tlbihYTUxUb2tlbiYgdG9r
ZW4pCi0gICAgICAgIDogQXRvbWljTWFya3VwVG9rZW5CYXNlPFhNTFRva2VuPigmdG9rZW4pCi0g
ICAgewotICAgICAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgICAgICBjYXNlIFhNTFRva2VuVHlw
ZXM6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjoKLSAgICAgICAgICAgIG1fbmFtZSA9IEF0b21pY1N0
cmluZyh0b2tlbi50YXJnZXQoKS5kYXRhKCksIHRva2VuLnRhcmdldCgpLnNpemUoKSk7Ci0gICAg
ICAgICAgICBtX2RhdGEgPSBTdHJpbmcodG9rZW4uZGF0YSgpLmRhdGEoKSwgdG9rZW4uZGF0YSgp
LnNpemUoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVz
OjpYTUxEZWNsYXJhdGlvbjoKLSAgICAgICAgICAgIG1feG1sRGVjbGFyYXRpb25EYXRhID0gdG9r
ZW4ubV94bWxEZWNsYXJhdGlvbkRhdGEucmVsZWFzZSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6U3RhcnRUYWc6Ci0gICAgICAgIGNhc2UgWE1MVG9r
ZW5UeXBlczo6RW5kVGFnOiB7Ci0gICAgICAgICAgICBpZiAodG9rZW4ucHJlZml4KCkuc2l6ZSgp
KQotICAgICAgICAgICAgICAgIG1fcHJlZml4ID0gQXRvbWljU3RyaW5nKHRva2VuLnByZWZpeCgp
LmRhdGEoKSwgdG9rZW4ucHJlZml4KCkuc2l6ZSgpKTsKLSAgICAgICAgICAgIGluaXRpYWxpemVB
dHRyaWJ1dGVzKHRva2VuLmF0dHJpYnV0ZXMoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIFhNTFRva2VuVHlwZXM6OkNEQVRBOgotICAgICAgICAgICAgbV9k
YXRhID0gU3RyaW5nKHRva2VuLmRhdGEoKS5kYXRhKCksIHRva2VuLmRhdGEoKS5zaXplKCkpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6RW50aXR5Ogot
ICAgICAgICAgICAgbV9uYW1lID0gQXRvbWljU3RyaW5nKHRva2VuLm5hbWUoKS5kYXRhKCksIHRv
a2VuLm5hbWUoKS5zaXplKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEF0b21pY1hNTFRv
a2VuKFhNTFRva2VuVHlwZXM6OlR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBj
b25zdCBWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcyA9IFZlY3RvcjxBdHRyaWJ1dGU+KCkp
Ci0gICAgICAgIDogQXRvbWljTWFya3VwVG9rZW5CYXNlPFhNTFRva2VuPih0eXBlLCBuYW1lLCBh
dHRyaWJ1dGVzKQotICAgIHsKLSAgICB9Ci0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHByZWZp
eCgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6
OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpFbmRUYWcpOwotICAgICAgICBy
ZXR1cm4gbV9wcmVmaXg7Ci0gICAgfQotCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiB0YXJnZXQo
KSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24pOwotICAgICAgICByZXR1cm4gbV9uYW1lOwotICAgIH0KLQot
ICAgIGNvbnN0IFN0cmluZyYgZGF0YSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90
eXBlID09IFhNTFRva2VuVHlwZXM6OkNEQVRBIHx8IG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24pOwotICAgICAgICByZXR1cm4gbV9kYXRhOwotICAgIH0KLQot
ICAgIFdURjo6VmVjdG9yPFVDaGFyPiYgeG1sVmVyc2lvbigpIGNvbnN0Ci0gICAgewotICAgICAg
ICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlhNTERlY2xhcmF0aW9uKTsKLSAgICAg
ICAgcmV0dXJuIG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX3ZlcnNpb247Ci0gICAgfQotCi0gICAg
Ym9vbCB4bWxTdGFuZGFsb25lKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUg
PT0gWE1MVG9rZW5UeXBlczo6WE1MRGVjbGFyYXRpb24pOwotICAgICAgICByZXR1cm4gbV94bWxE
ZWNsYXJhdGlvbkRhdGEtPm1faGFzU3RhbmRhbG9uZSAmJiBtX3htbERlY2xhcmF0aW9uRGF0YS0+
bV9zdGFuZGFsb25lOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICAvLyAicHJlZml4IiBmb3IgU3Rh
cnRUYWcsIEVuZFRhZwotICAgIEF0b21pY1N0cmluZyBtX3ByZWZpeDsKLQotICAgIC8vIEZvciBY
TUwgZGVjbGFyYXRpb24KLSAgICBPd25QdHI8WE1MVG9rZW46OlhNTERlY2xhcmF0aW9uRGF0YT4g
bV94bWxEZWNsYXJhdGlvbkRhdGE7Ci19OwotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbml6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
eG1sL3BhcnNlci9YTUxUb2tlbml6ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAzMjIzMDE5NDk2NDVjMzZkZTI1YWY1NjZiOTdlM2YzMDkwMWYxOGU4Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MVG9rZW5pemVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNjEgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuIGh0dHA6Ly93d3cudG9yY2ht
b2JpbGUuY29tLwotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlhNTFRva2VuaXplci5oIgotCi0jaW5jbHVk
ZSAiTWFya3VwVG9rZW5pemVySW5saW5lcy5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
Ci0jaW5jbHVkZSAiWE1MQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VyLmgiCi0jaW5jbHVkZSAiWE1M
VG9rZW4uaCIKLSNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgotI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgotI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21pY1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXVEY7Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gVGhpcyBoYXMgdG8gZ28gaW4gYSAuY3BwIGZpbGUs
IGFzIHRoZSBsaW5rZXIgZG9lc24ndCBsaWtlIGl0IGJlaW5nIGluY2x1ZGVkIG1vcmUgdGhhbiBv
bmNlLgotLy8gV2UgZG9uJ3QgaGF2ZSBhbiBYTUxUb2tlbi5jcHAgdGhvdWdoLCBzbyB0aGlzIGlz
IHRoZSBuZXh0IGJlc3QgcGxhY2UuCi10ZW1wbGF0ZTw+Ci1RdWFsaWZpZWROYW1lIEF0b21pY01h
cmt1cFRva2VuQmFzZTxYTUxUb2tlbj46Om5hbWVGb3JBdHRyaWJ1dGUoY29uc3QgWE1MVG9rZW46
OkF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdAotewotICAgIHJldHVybiBRdWFsaWZpZWROYW1l
KGF0dHJpYnV0ZS5tX3ByZWZpeC5pc0VtcHR5KCkgPyBudWxsQXRvbSA6IEF0b21pY1N0cmluZyhh
dHRyaWJ1dGUubV9wcmVmaXguZGF0YSgpLCBhdHRyaWJ1dGUubV9wcmVmaXguc2l6ZSgpKSwgQXRv
bWljU3RyaW5nKGF0dHJpYnV0ZS5tX25hbWUuZGF0YSgpLCBhdHRyaWJ1dGUubV9uYW1lLnNpemUo
KSksIG51bGxBdG9tKTsKLX0KLQotdGVtcGxhdGU8PgotYm9vbCBBdG9taWNNYXJrdXBUb2tlbkJh
c2U8WE1MVG9rZW4+Ojp1c2VzTmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdHlwZSA9PSBY
TUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6RW5kVGFn
IHx8IG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpET0NUWVBFIHx8IG1fdHlwZSA9PSBYTUxUb2tl
blR5cGVzOjpFbnRpdHk7Ci19Ci0KLXRlbXBsYXRlPD4KLWJvb2wgQXRvbWljTWFya3VwVG9rZW5C
YXNlPFhNTFRva2VuPjo6dXNlc0F0dHJpYnV0ZXMoKSBjb25zdAotewotICAgIHJldHVybiBtX3R5
cGUgPT0gWE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IFhNTFRva2VuVHlwZXM6
OkVuZFRhZzsKLX0KLQotbmFtZXNwYWNlIHsKLQotaW5saW5lIGJvb2wgaXNWYWxpZE5hbWVTdGFy
dChVQ2hhciBjYykKLXsKLSAgICBpZiAoY2MgPD0gMHg0MCkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmIChjYyA8PSAweDVBKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoY2Mg
PT0gMHg1RikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGNjIDw9IDB4NjApCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoY2MgPD0gMHg3QSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgaWYgKGNjIDwgMHhDMCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChj
YyA8PSAweEQ2KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoY2MgPT0gMHhEOCkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChjYyA8PSAweEY2KQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICBpZiAoY2MgPT0gMHhGNykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
IChjYyA8PSAweDJGRikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGNjIDwgMHgzNzAp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoY2MgPD0gMHgzN0QpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIGlmIChjYyA9PSAweDM3RSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGlmIChjYyA8PSAweDFGRkYpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChjYyA8
IDB4MjAwQykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChjYyA8PSAweDIwMEQpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChjYyA8IDB4MjA3MCkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmIChjYyA8PSAweDIxOEYpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IGlmIChjYyA8IDB4MkMwMCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChjYyA8PSAw
eDJGRUYpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChjYyA8IDB4MzAwMSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChjYyA8PSAweEQ3RkYpCi0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIGlmIChjYyA8IDB4RjkwMCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
IChjYyA8PSAweEZEQ0YpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChjYyA8IDB4RkRG
MCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChjYyA8PSAweEZGRkQpCi0gICAgICAg
IHJldHVybiB0cnVlOwotCi0gICAgLy8gRklYTUU6IHN1cHBvcnQgbm9uLUJNUCBwbGFuZXMKLQot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotaW5saW5lIGJvb2wgaXNWYWxpZE5hbWVDaGFyKFVDaGFy
IGNjKQotewotICAgIGlmIChpc1ZhbGlkTmFtZVN0YXJ0KGNjKSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgaWYgKGNjID09ICctJyB8fCBjYyA9PSAnLicpCi0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIGlmIChjYyA8IDB4MzApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoY2Mg
PCAweDNBKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoY2MgPCAweDAzMDApCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoY2MgPD0gMHgwMzZGKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICBpZiAoY2MgPCAweDIwM0YpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAoY2MgPD0gMHgyMDQwKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQotaW5saW5lIGJvb2wgaXNWYWxpZExpdGVyYWxDaGFyKFVDaGFyIGNjKQotewotICAg
IGlmIChjYyA9PSAweEQgfHwgY2MgPT0gMHhBKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBp
ZiAoY2MgPCAweDIwKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGNjID09ICciJyB8
fCBjYyA9PSAnJicpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoY2MgPCAweDNDKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoY2MgPT0gJzwnIHx8IGNjID09ICc+JykKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChjYyA8IDB4NUIpCi0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIGlmIChjYyA9PSAnXycpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChj
YyA8PSAweDYwKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGNjIDwgMHg3QikKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0KLQotI2RlZmlu
ZSBYTUxfQkVHSU5fU1RBVEUoc3RhdGVOYW1lKSBCRUdJTl9TVEFURShYTUxUb2tlbml6ZXJTdGF0
ZSwgc3RhdGVOYW1lKQotI2RlZmluZSBYTUxfQURWQU5DRV9UTyhzdGF0ZU5hbWUpIEFEVkFOQ0Vf
VE8oWE1MVG9rZW5pemVyU3RhdGUsIHN0YXRlTmFtZSkKLSNkZWZpbmUgWE1MX1NXSVRDSF9UTyhz
dGF0ZU5hbWUpIFNXSVRDSF9UTyhYTUxUb2tlbml6ZXJTdGF0ZSwgc3RhdGVOYW1lKQotCi0jZGVm
aW5lIEVRX1NUQVRFKEN1cnJlbnRTdGF0ZSwgTmV4dFN0YXRlKSBcCi0gICAgWE1MX0JFR0lOX1NU
QVRFKEN1cnJlbnRTdGF0ZSkgeyAgICAgICBcCi0gICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRl
c3BhY2UoY2MpKSAgICBcCi0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhDdXJyZW50U3RhdGUp
OyBcCi0gICAgICAgIGVsc2UgaWYgKGNjID09ICc9JykgICAgICAgICAgICAgICBcCi0gICAgICAg
ICAgICBYTUxfQURWQU5DRV9UTyhOZXh0U3RhdGUpOyAgICBcCi0gICAgICAgIGVsc2UgeyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBwYXJzZUVycm9yKCk7ICAgICAg
ICAgICAgICAgICBcCi0gICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOyBc
Ci0gICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgRU5EX1NUQVRFKCkKLQotI2Rl
ZmluZSBFUV9CRUZPUkVfVkFMVUVfU1RBVEVTKEVxdWFsc1N0YXRlLCBCZWZvcmVWYWx1ZVN0YXRl
LCBWYWx1ZVN0YXRlKSBcCi0gICAgRVFfU1RBVEUoRXF1YWxzU3RhdGUsIEJlZm9yZVZhbHVlU3Rh
dGUpICAgIFwKLSAgICBYTUxfQkVHSU5fU1RBVEUoQmVmb3JlVmFsdWVTdGF0ZSkgeyAgICAgICAg
XAotICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkgICAgICAgICBcCi0gICAg
ICAgICAgICBYTUxfQURWQU5DRV9UTyhCZWZvcmVWYWx1ZVN0YXRlKTsgIFwKLSAgICAgICAgZWxz
ZSBpZiAoY2MgPT0gJyInIHx8IGNjID09ICdcJycpIHsgICAgXAotICAgICAgICAgICAgbV9hZGRp
dGlvbmFsQWxsb3dlZENoYXJhY3RlciA9IGNjOyBcCi0gICAgICAgICAgICBYTUxfQURWQU5DRV9U
TyhWYWx1ZVN0YXRlKTsgICAgICAgIFwKLSAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgcGFyc2VFcnJvcigpOyAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOyAgICAg
IFwKLSAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgRU5EX1NU
QVRFKCkKLQotWE1MVG9rZW5pemVyOjpYTUxUb2tlbml6ZXIoKQotewotICAgIHJlc2V0KCk7Ci19
Ci0KLXRlbXBsYXRlPD4KLWlubGluZSBib29sIE1hcmt1cFRva2VuaXplckJhc2U8WE1MVG9rZW4s
IFhNTFRva2VuaXplclN0YXRlPjo6c2hvdWxkU2tpcE51bGxDaGFyYWN0ZXJzKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgWE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2Vn
bWVudGVkU3RyaW5nJiBzb3VyY2UsIFhNTFRva2VuJiB0b2tlbikKLXsKLSAgICAvLyBJZiB3ZSBo
YXZlIGEgdG9rZW4gaW4gcHJvZ3Jlc3MsIHRoZW4gd2UncmUgc3VwcG9zZWQgdG8gYmUgY2FsbGVk
IGJhY2sKLSAgICAvLyB3aXRoIHRoZSBzYW1lIHRva2VuIHNvIHdlIGNhbiBmaW5pc2ggaXQuCi0g
ICAgQVNTRVJUKCFtX3Rva2VuIHx8IG1fdG9rZW4gPT0gJnRva2VuIHx8IHRva2VuLnR5cGUoKSA9
PSBYTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkKTsKLSAgICBtX3Rva2VuID0gJnRva2VuOwot
Ci0gICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkgfHwgIW1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3Iu
cGVlayhzb3VyY2UpKQotICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4o
KTsKLSAgICBVQ2hhciBjYyA9IG1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IubmV4dElucHV0Q2hh
cmFjdGVyKCk7Ci0KLSAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKLSAgICBYTUxfQkVHSU5fU1RBVEUo
RGF0YVN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA9PSAnJicpCi0gICAgICAgICAgICBYTUxfQURW
QU5DRV9UTyhDaGFyYWN0ZXJSZWZlcmVuY2VTdGFydFN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAo
Y2MgPT0gJzwnKSB7Ci0gICAgICAgICAgICBpZiAobV90b2tlbi0+dHlwZSgpID09IFhNTFRva2Vu
VHlwZXM6OkNoYXJhY3RlcikgewotICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBidW5jaCBv
ZiBjaGFyYWN0ZXIgdG9rZW5zIHF1ZXVlZCB1cCB0aGF0IHdlCi0gICAgICAgICAgICAgICAgLy8g
YXJlIGVtaXR0aW5nIGxhemlseSBoZXJlLgotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oVGFnT3BlblN0YXRlKTsK
LSAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZG
aWxlTWFya2VyKQotICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOwotICAgICAgICAg
ICAgWE1MX0FEVkFOQ0VfVE8oRGF0YVN0YXRlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRf
U1RBVEUoKQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKENoYXJhY3RlclJlZmVyZW5jZVN0YXJ0U3Rh
dGUpIHsKLSAgICAgICAgaWYgKGNjID09ICcjJykgewotICAgICAgICAgICAgYm9vbCBub3RFbm91
Z2hDaGFyYWN0ZXJzID0gZmFsc2U7Ci0gICAgICAgICAgICBTdHJpbmdCdWlsZGVyIGRlY29kZWRD
aGFyYWN0ZXI7Ci0gICAgICAgICAgICBpZiAoY29uc3VtZVhNTENoYXJhY3RlclJlZmVyZW5jZShz
b3VyY2UsIGRlY29kZWRDaGFyYWN0ZXIsIG5vdEVub3VnaENoYXJhY3RlcnMpKSB7Ci0gICAgICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRlY29kZWRDaGFyYWN0ZXIubGVuZ3Ro
KCk7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKGRlY29kZWRDaGFy
YWN0ZXJbaV0pOwotICAgICAgICAgICAgICAgIFhNTF9TV0lUQ0hfVE8oRGF0YVN0YXRlKTsKLSAg
ICAgICAgICAgIH0gZWxzZSBpZiAobm90RW5vdWdoQ2hhcmFjdGVycykKLSAgICAgICAgICAgICAg
ICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKLSAgICAgICAgfSBlbHNlIGlm
IChpc1ZhbGlkTmFtZVN0YXJ0KGNjKSkgewotICAgICAgICAgICAgaWYgKG1fdG9rZW4tPnR5cGUo
KSA9PSBYTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGVt
aXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIFhNTFRva2VuaXplclN0YXRlOjpDaGFyYWN0ZXJSZWZl
cmVuY2VTdGFydFN0YXRlKTsKLSAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luRW50aXR5KGNjKTsK
LSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEVudGl0eVJlZmVyZW5jZVN0YXRlKTsKLSAgICAg
ICAgfQotICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxl
KHNvdXJjZSk7Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUo
RW50aXR5UmVmZXJlbmNlU3RhdGUpIHsKLSAgICAgICAgaWYgKGlzVmFsaWROYW1lQ2hhcihjYykp
IHsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvTmFtZShjYyk7Ci0gICAgICAgICAgICBY
TUxfQURWQU5DRV9UTyhFbnRpdHlSZWZlcmVuY2VTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAo
Y2MgPT0gJzsnKQotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIFhN
TFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
IHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIFhNTF9CRUdJTl9TVEFU
RShUYWdPcGVuU3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICchJykKLSAgICAgICAgICAgIFhN
TF9BRFZBTkNFX1RPKE1hcmt1cERlY2xhcmF0aW9uT3BlblN0YXRlKTsKLSAgICAgICAgZWxzZSBp
ZiAoY2MgPT0gJy8nKQotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oRW5kVGFnT3BlblN0YXRl
KTsKLSAgICAgICAgZWxzZSBpZiAoaXNWYWxpZE5hbWVTdGFydChjYykpIHsKLSAgICAgICAgICAg
IG1fdG9rZW4tPmJlZ2luU3RhcnRUYWcoY2MpOwotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8o
VGFnTmFtZVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPycpCi0gICAgICAgICAg
ICBYTUxfQURWQU5DRV9UTyhQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UYXJnZXRTdGFydFN0YXRlKTsK
LSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAgICAgICB9Ci0gICAgfQotICAgIEVORF9T
VEFURSgpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUoRW5kVGFnT3BlblN0YXRlKSB7Ci0gICAgICAg
IGlmIChpc1ZhbGlkTmFtZVN0YXJ0KGNjKSkgewotICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5F
bmRUYWcoY2MpOwotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oRW5kVGFnTmFtZVN0YXRlKTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAg
IHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5E
X1NUQVRFKCkKLQotICAgIFhNTF9CRUdJTl9TVEFURShUYWdOYW1lU3RhdGUpIHsKLSAgICAgICAg
aWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCi0gICAgICAgICAgICBYTUxfQURWQU5DRV9U
TyhCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSAnLycp
Ci0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOwot
ICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJl
c3VtZUluKHNvdXJjZSwgWE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7Ci0gICAgICAgIGVs
c2UgaWYgKGlzVmFsaWROYW1lQ2hhcihjYykpIHsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVu
ZFRvTmFtZShjYyk7Ci0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhUYWdOYW1lU3RhdGUpOwot
ICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc6JyAmJiAhbV90b2tlbi0+aGFzUHJlZml4KCkpIHsK
LSAgICAgICAgICAgIG1fdG9rZW4tPmVuZFByZWZpeCgpOwotICAgICAgICAgICAgWE1MX0FEVkFO
Q0VfVE8oVGFnTmFtZVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBhcnNl
RXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIFhNTF9CRUdJTl9TVEFURShFbmRU
YWdOYW1lU3RhdGUpIHsKLSAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCi0g
ICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhFbmRUYWdTcGFjZVN0YXRlKTsKLSAgICAgICAgZWxz
ZSBpZiAoY2MgPT0gJz4nKQotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3Vy
Y2UsIFhNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChpc1Zh
bGlkTmFtZUNoYXIoY2MpKSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb05hbWUoY2Mp
OwotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oRW5kVGFnTmFtZVN0YXRlKTsKLSAgICAgICAg
fSBlbHNlIGlmIChjYyA9PSAnOicgJiYgIW1fdG9rZW4tPmhhc1ByZWZpeCgpKSB7Ci0gICAgICAg
ICAgICBtX3Rva2VuLT5lbmRQcmVmaXgoKTsKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEVu
ZFRhZ05hbWVTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwYXJzZUVycm9y
KCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAgICAgICB9
Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUoRW5kVGFnU3Bh
Y2VTdGF0ZSkgewotICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKLSAgICAg
ICAgICAgIFhNTF9BRFZBTkNFX1RPKEVuZFRhZ1NwYWNlU3RhdGUpOwotICAgICAgICBlbHNlIGlm
IChjYyA9PSAnPicpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwg
WE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNl
KTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgWE1MX0JFR0lOX1NU
QVRFKEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSkgewotICAgICAgICBpZiAoaXNUb2tlbml6ZXJX
aGl0ZXNwYWNlKGNjKSkKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEJlZm9yZUF0dHJpYnV0
ZU5hbWVTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICcvJykKLSAgICAgICAgICAgIFhN
TF9BRFZBTkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYg
KGNjID09ICc+JykKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBY
TUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoaXNWYWxpZE5h
bWVTdGFydChjYykpIHsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFkZE5ld0F0dHJpYnV0ZSgpOwot
ICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5BdHRyaWJ1dGVOYW1lKHNvdXJjZS5udW1iZXJPZkNo
YXJhY3RlcnNDb25zdW1lZCgpKTsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmli
dXRlTmFtZShjYyk7Ci0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3Rh
dGUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAg
ICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICAgICAgfQotICAgIH0KLSAg
ICBFTkRfU1RBVEUoKQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKEF0dHJpYnV0ZU5hbWVTdGF0ZSkg
ewotICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkgewotICAgICAgICAgICAg
bV90b2tlbi0+ZW5kQXR0cmlidXRlTmFtZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3Vt
ZWQoKSk7Ci0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhBZnRlckF0dHJpYnV0ZU5hbWVTdGF0
ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz0nKSB7Ci0gICAgICAgICAgICBtX3Rva2Vu
LT5lbmRBdHRyaWJ1dGVOYW1lKHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsK
LSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEJlZm9yZUF0dHJpYnV0ZVZhbHVlU3RhdGUpOwot
ICAgICAgICB9IGVsc2UgaWYgKGlzVmFsaWROYW1lQ2hhcihjYykpIHsKLSAgICAgICAgICAgIG1f
dG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFtZShjYyk7Ci0gICAgICAgICAgICBYTUxfQURWQU5D
RV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc6JyAm
JiAhbV90b2tlbi0+YXR0cmlidXRlSGFzUHJlZml4KCkpIHsKLSAgICAgICAgICAgIG1fdG9rZW4t
PmVuZEF0dHJpYnV0ZVByZWZpeChzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7
Ci0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgbV90b2tl
bi0+ZW5kQXR0cmlidXRlTmFtZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7
Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAgICAgICB9Ci0g
ICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBFUV9TVEFURShBZnRlckF0dHJpYnV0ZU5hbWVT
dGF0ZSwgQmVmb3JlQXR0cmlidXRlVmFsdWVTdGF0ZSkKLQotICAgIFhNTF9CRUdJTl9TVEFURShC
ZWZvcmVBdHRyaWJ1dGVWYWx1ZVN0YXRlKSB7Ci0gICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRl
c3BhY2UoY2MpKQotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlVmFs
dWVTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICciJyB8fCBjYyA9PSAnXCcnKSB7Ci0g
ICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkF0dHJpYnV0ZVZhbHVlKHNvdXJjZS5udW1iZXJPZkNo
YXJhY3RlcnNDb25zdW1lZCgpICsgMSk7Ci0gICAgICAgICAgICBtX2FkZGl0aW9uYWxBbGxvd2Vk
Q2hhcmFjdGVyID0gY2M7Ci0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhBdHRyaWJ1dGVWYWx1
ZVF1b3RlZFN0YXRlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBhcnNlRXJyb3Io
KTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIFhNTF9CRUdJTl9TVEFURShBdHRyaWJ1dGVW
YWx1ZVF1b3RlZFN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA9PSBtX2FkZGl0aW9uYWxBbGxvd2Vk
Q2hhcmFjdGVyKSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5lbmRBdHRyaWJ1dGVWYWx1ZShzb3Vy
Y2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7Ci0gICAgICAgICAgICBYTUxfQURWQU5D
RV9UTyhBZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYg
KGNjID09ICcmJykKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKENoYXJhY3RlclJlZmVyZW5j
ZUluQXR0cmlidXRlVmFsdWVTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICc8JyB8fCBj
YyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7Ci0gICAgICAg
ICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBtX3Rva2VuLT5lbmRBdHRyaWJ1dGVWYWx1
ZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7Ci0gICAgICAgICAgICByZXR1
cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
bV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShjYyk7Ci0gICAgICAgICAgICBYTUxfQURW
QU5DRV9UTyhBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlKTsKLSAgICAgICAgfQotICAgIH0KLSAg
ICBFTkRfU1RBVEUoKQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKENoYXJhY3RlclJlZmVyZW5jZUlu
QXR0cmlidXRlVmFsdWVTdGF0ZSkgewotICAgICAgICBpZiAoY2MgPT0gJyMnKSB7Ci0gICAgICAg
ICAgICBib29sIG5vdEVub3VnaENoYXJhY3RlcnMgPSBmYWxzZTsKLSAgICAgICAgICAgIFN0cmlu
Z0J1aWxkZXIgZGVjb2RlZENoYXJhY3RlcjsKLSAgICAgICAgICAgIHNvdXJjZS5wdXNoKGNjKTsK
LSAgICAgICAgICAgIGlmIChjb25zdW1lWE1MQ2hhcmFjdGVyUmVmZXJlbmNlKHNvdXJjZSwgZGVj
b2RlZENoYXJhY3Rlciwgbm90RW5vdWdoQ2hhcmFjdGVycykpIHsKLSAgICAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGVjb2RlZENoYXJhY3Rlci5sZW5ndGgoKTsgKytpKQot
ICAgICAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGRlY29k
ZWRDaGFyYWN0ZXJbaV0pOwotICAgICAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEF0dHJpYnV0
ZVZhbHVlUXVvdGVkU3RhdGUpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChub3RFbm91Z2hDaGFy
YWN0ZXJzKQotICAgICAgICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tl
bigpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgcGFyc2VFcnJvcigpOwot
ICAgICAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJp
YnV0ZVZhbHVlKCcmJyk7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZVZh
bHVlKGNjKTsKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEF0dHJpYnV0ZVZhbHVlUXVvdGVk
U3RhdGUpOwotICAgICAgICB9Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBYTUxfQkVH
SU5fU1RBVEUoQWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlKSB7Ci0gICAgICAgIGlmIChp
c1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQmVm
b3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPT0gJy8nKQotICAg
ICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKLSAgICAg
ICAgZWxzZSBpZiAoY2MgPT0gJz4nKQotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJ
bihzb3VyY2UsIFhNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwotICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZG
aWxlKHNvdXJjZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIFhN
TF9CRUdJTl9TVEFURShTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpIHsKLSAgICAgICAgaWYgKGNj
ID09ICc+JykgewotICAgICAgICAgICAgbV90b2tlbi0+c2V0U2VsZkNsb3NpbmcoKTsKLSAgICAg
ICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBYTUxUb2tlbml6ZXJTdGF0ZTo6
RGF0YVN0YXRlKTsKLSAgICAgICAgfQotICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgIHJl
dHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAg
ICBYTUxfQkVHSU5fU1RBVEUoUHJvY2Vzc2luZ0luc3RydWN0aW9uVGFyZ2V0U3RhcnRTdGF0ZSkg
ewotICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgeG1sU3RyaW5nLCAoQVNDSUlM
aXRlcmFsKCJ4bWwiKSkpOwotICAgICAgICAvLyBGSVhNRTogdGhpcyBwcm9iYWJseSBzaG91bGRu
J3QgYmUgY2FzZS1pbnNlbnNpdGl2ZSwgYnV0IEkgZG9uJ3Qga25vdyBpZiBwZW9wbGUgdHJ5IGNh
cGl0YWxpemluZyBpdCBldmVyLgotICAgICAgICBpZiAoY2MgPT0gJ3gnIHx8IGNjID09ICdYJykg
ewotICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0ID0g
c291cmNlLmxvb2tBaGVhZElnbm9yaW5nQ2FzZSh4bWxTdHJpbmcpOwotICAgICAgICAgICAgaWYg
KHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7Ci0gICAgICAgICAgICAgICAg
YWR2YW5jZVN0cmluZ0FuZEFTU0VSVElnbm9yaW5nQ2FzZShzb3VyY2UsICJ4bWwiKTsKLSAgICAg
ICAgICAgICAgICBYTUxfU1dJVENIX1RPKFhNTERlY2xBZnRlclhNTFN0YXRlKTsKLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFj
dGVycykKLSAgICAgICAgICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4o
KTsKLSAgICAgICAgfQotICAgICAgICBpZiAobV90b2tlbi0+dHlwZSgpID09IFhNTFRva2VuVHlw
ZXM6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbiAmJiBpc1ZhbGlkTmFtZUNoYXIoY2MpKQotICAgICAg
ICAgICAgbV90b2tlbi0+YXBwZW5kVG9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UYXJnZXQoY2MpOwot
ICAgICAgICBlbHNlIGlmIChpc1ZhbGlkTmFtZVN0YXJ0KGNjKSkKLSAgICAgICAgICAgIG1fdG9r
ZW4tPmJlZ2luUHJvY2Vzc2luZ0luc3RydWN0aW9uKGNjKTsKLSAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShz
b3VyY2UpOwotICAgICAgICB9Ci0gICAgICAgIFhNTF9BRFZBTkNFX1RPKFByb2Nlc3NpbmdJbnN0
cnVjdGlvblRhcmdldFN0YXRlKTsKLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIFhNTF9C
RUdJTl9TVEFURShYTUxEZWNsQWZ0ZXJYTUxTdGF0ZSkgewotICAgICAgICBpZiAoaXNUb2tlbml6
ZXJXaGl0ZXNwYWNlKGNjKSkgewotICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5YTUxEZWNsYXJh
dGlvbigpOwotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oWE1MRGVjbEJlZm9yZVZlcnNpb25O
YW1lU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKGlzVmFsaWROYW1lQ2hhcihjYykpIHsKLSAg
ICAgICAgICAgIG1fdG9rZW4tPmJlZ2luUHJvY2Vzc2luZ0luc3RydWN0aW9uKCd4Jyk7Ci0gICAg
ICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1Byb2Nlc3NpbmdJbnN0cnVjdGlvblRhcmdldCgnbScp
OwotICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UYXJn
ZXQoJ2wnKTsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvUHJvY2Vzc2luZ0luc3RydWN0
aW9uVGFyZ2V0KGNjKTsKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFByb2Nlc3NpbmdJbnN0
cnVjdGlvblRhcmdldFN0YXRlKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJj
ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIFhNTF9CRUdJTl9T
VEFURShYTUxEZWNsQmVmb3JlVmVyc2lvbk5hbWVTdGF0ZSkgewotICAgICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgdmVyc2lvblN0cmluZywgKEFTQ0lJTGl0ZXJhbCgidmVyc2lvbiIp
KSk7Ci0gICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQotICAgICAgICAgICAg
WE1MX0FEVkFOQ0VfVE8oWE1MRGVjbEJlZm9yZVZlcnNpb25OYW1lU3RhdGUpOwotICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0IHJlc3Vs
dCA9IHNvdXJjZS5sb29rQWhlYWQodmVyc2lvblN0cmluZyk7Ci0gICAgICAgICAgICBpZiAocmVz
dWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKLSAgICAgICAgICAgICAgICBhZHZh
bmNlU3RyaW5nQW5kQVNTRVJUKHNvdXJjZSwgInZlcnNpb24iKTsKLSAgICAgICAgICAgICAgICBY
TUxfU1dJVENIX1RPKFhNTERlY2xBZnRlclZlcnNpb25OYW1lU3RhdGUpOwotICAgICAgICAgICAg
fSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJz
KQotICAgICAgICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOwot
ICAgICAgICB9Ci0gICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgcmV0dXJuIGVtaXRFbmRP
ZkZpbGUoc291cmNlKTsKLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIEVRX0JFRk9SRV9W
QUxVRV9TVEFURVMoWE1MRGVjbEFmdGVyVmVyc2lvbk5hbWVTdGF0ZSwgWE1MRGVjbEJlZm9yZVZl
cnNpb25WYWx1ZVN0YXRlLCBYTUxEZWNsQmVmb3JlVmVyc2lvbk9uZVBvaW50U3RhdGUpCi0KLSAg
ICBYTUxfQkVHSU5fU1RBVEUoWE1MRGVjbEJlZm9yZVZlcnNpb25PbmVQb2ludFN0YXRlKSB7Ci0g
ICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBvbmVQb2ludFN0cmluZywgKEFTQ0lJ
TGl0ZXJhbCgiMS4iKSkpOwotICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3Vs
dCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkKG9uZVBvaW50U3RyaW5nKTsKLSAgICAgICAgaWYg
KHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7Ci0gICAgICAgICAgICBzb3Vy
Y2UuYWR2YW5jZUFuZEFTU0VSVCgnMScpOwotICAgICAgICAgICAgc291cmNlLmFkdmFuY2VBbmRB
U1NFUlQoJy4nKTsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvWE1MVmVyc2lvbignMScp
OwotICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9YTUxWZXJzaW9uKCcuJyk7Ci0gICAgICAg
ICAgICBYTUxfU1dJVENIX1RPKFhNTERlY2xWZXJzaW9uVmFsdWVRdW90ZWRTdGF0ZSk7Ci0gICAg
ICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFj
dGVycykKLSAgICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOwot
ICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJj
ZSk7Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUoWE1MRGVj
bFZlcnNpb25WYWx1ZVF1b3RlZFN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA9PSBtX2FkZGl0aW9u
YWxBbGxvd2VkQ2hhcmFjdGVyKSB7Ci0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhYTUxEZWNs
QWZ0ZXJWZXJzaW9uU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKGlzQVNDSUlEaWdpdChjYykp
IHsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvWE1MVmVyc2lvbihjYyk7Ci0gICAgICAg
ICAgICBYTUxfQURWQU5DRV9UTyhYTUxEZWNsVmVyc2lvblZhbHVlUXVvdGVkU3RhdGUpOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgcmV0
dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RB
VEUoKQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKFhNTERlY2xBZnRlclZlcnNpb25TdGF0ZSkgewot
ICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKLSAgICAgICAgICAgIFhNTF9B
RFZBTkNFX1RPKFhNTERlY2xCZWZvcmVFbmNvZGluZ05hbWVTdGF0ZSk7Ci0gICAgICAgIGVsc2Ug
aWYgKGNjID09ICc/JykKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFhNTERlY2xDbG9zZVN0
YXRlKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAg
ICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAgICAgICB9Ci0gICAgfQotICAg
IEVORF9TVEFURSgpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUoWE1MRGVjbEJlZm9yZUVuY29kaW5n
TmFtZVN0YXRlKSB7Ci0gICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBlbmNvZGlu
Z1N0cmluZywgKEFTQ0lJTGl0ZXJhbCgiZW5jb2RpbmciKSkpOwotICAgICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgc3RhbmRhbG9uZVN0cmluZywgKEFTQ0lJTGl0ZXJhbCgic3RhbmRh
bG9uZSIpKSk7Ci0gICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQotICAgICAg
ICAgICAgWE1MX0FEVkFOQ0VfVE8oWE1MRGVjbEJlZm9yZUVuY29kaW5nTmFtZVN0YXRlKTsKLSAg
ICAgICAgZWxzZSBpZiAoY2MgPT0gJ2UnKSB7Ci0gICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6
Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkKGVuY29kaW5nU3RyaW5n
KTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRNYXRjaCkg
ewotICAgICAgICAgICAgICAgIGFkdmFuY2VTdHJpbmdBbmRBU1NFUlQoc291cmNlLCAiZW5jb2Rp
bmciKTsKLSAgICAgICAgICAgICAgICBYTUxfU1dJVENIX1RPKFhNTERlY2xBZnRlckVuY29kaW5n
TmFtZVN0YXRlKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0
cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKLSAgICAgICAgICAgICAgICByZXR1cm4gaGF2ZUJ1
ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKLSAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAncycpIHsK
LSAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNv
dXJjZS5sb29rQWhlYWQoc3RhbmRhbG9uZVN0cmluZyk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0
ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKLSAgICAgICAgICAgICAgICBhZHZhbmNl
U3RyaW5nQW5kQVNTRVJUKHNvdXJjZSwgInN0YW5kYWxvbmUiKTsKLSAgICAgICAgICAgICAgICBY
TUxfU1dJVENIX1RPKFhNTERlY2xBZnRlclN0YW5kYWxvbmVOYW1lU3RhdGUpOwotICAgICAgICAg
ICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0
ZXJzKQotICAgICAgICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigp
OwotICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc/JykKLSAgICAgICAgICAgIFhNTF9BRFZBTkNF
X1RPKFhNTERlY2xDbG9zZVN0YXRlKTsKLSAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICBy
ZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0g
ICAgRVFfQkVGT1JFX1ZBTFVFX1NUQVRFUyhYTUxEZWNsQWZ0ZXJFbmNvZGluZ05hbWVTdGF0ZSwg
WE1MRGVjbEJlZm9yZUVuY29kaW5nVmFsdWVTdGF0ZSwgWE1MRGVjbEVuY29kaW5nVmFsdWVTdGFy
dFF1b3RlZFN0YXRlKQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKFhNTERlY2xFbmNvZGluZ1ZhbHVl
U3RhcnRRdW90ZWRTdGF0ZSkgewotICAgICAgICBpZiAoaXNBU0NJSUFscGhhKGNjKSkgewotICAg
ICAgICAgICAgbV90b2tlbi0+YmVnaW5YTUxFbmNvZGluZyhjYyk7Ci0gICAgICAgICAgICBYTUxf
QURWQU5DRV9UTyhYTUxEZWNsRW5jb2RpbmdWYWx1ZVF1b3RlZFN0YXRlKTsKLSAgICAgICAgfQot
ICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJj
ZSk7Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUoWE1MRGVj
bEVuY29kaW5nVmFsdWVRdW90ZWRTdGF0ZSkgewotICAgICAgICBpZiAoY2MgPT0gbV9hZGRpdGlv
bmFsQWxsb3dlZENoYXJhY3RlcikgewotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oWE1MRGVj
bEFmdGVyRW5jb2RpbmdTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNBU0NJSUFscGhhbnVt
ZXJpYyhjYykgfHwgY2MgPT0gJy0nKSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1hN
TEVuY29kaW5nKGNjKTsKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFhNTERlY2xFbmNvZGlu
Z1ZhbHVlUXVvdGVkU3RhdGUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcGFyc2VF
cnJvcigpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICAg
ICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKFhNTERl
Y2xBZnRlckVuY29kaW5nU3RhdGUpIHsKLSAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFj
ZShjYykpCi0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhYTUxEZWNsQmVmb3JlU3RhbmRhbG9u
ZU5hbWVTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICc/JykKLSAgICAgICAgICAgIFhN
TF9BRFZBTkNFX1RPKFhNTERlY2xDbG9zZVN0YXRlKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3Vy
Y2UpOwotICAgICAgICB9Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBYTUxfQkVHSU5f
U1RBVEUoWE1MRGVjbEJlZm9yZVN0YW5kYWxvbmVOYW1lU3RhdGUpIHsKLSAgICAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChTdHJpbmcsIHN0YW5kYWxvbmVTdHJpbmcsIChBU0NJSUxpdGVyYWwoInN0
YW5kYWxvbmUiKSkpOwotICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKLSAg
ICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFhNTERlY2xCZWZvcmVTdGFuZGFsb25lTmFtZVN0YXRl
KTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPT0gJ3MnKSB7Ci0gICAgICAgICAgICBTZWdtZW50ZWRT
dHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkKHN0YW5kYWxv
bmVTdHJpbmcpOwotICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRp
ZE1hdGNoKSB7Ci0gICAgICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVChzb3VyY2Us
ICJzdGFuZGFsb25lIik7Ci0gICAgICAgICAgICAgICAgWE1MX1NXSVRDSF9UTyhYTUxEZWNsQWZ0
ZXJTdGFuZGFsb25lTmFtZVN0YXRlKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09
IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKLSAgICAgICAgfSBlbHNlIGlmIChj
YyA9PSAnPycpCi0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhYTUxEZWNsQ2xvc2VTdGF0ZSk7
Ci0gICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291
cmNlKTsKLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIEVRX0JFRk9SRV9WQUxVRV9TVEFU
RVMoWE1MRGVjbEFmdGVyU3RhbmRhbG9uZU5hbWVTdGF0ZSwgWE1MRGVjbEJlZm9yZVN0YW5kYWxv
bmVWYWx1ZVN0YXRlLCBYTUxEZWNsU3RhbmRhbG9uZVZhbHVlUXVvdGVkU3RhdGUpCi0KLSAgICBY
TUxfQkVHSU5fU1RBVEUoWE1MRGVjbFN0YW5kYWxvbmVWYWx1ZVF1b3RlZFN0YXRlKSB7Ci0gICAg
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB5ZXNTdHJpbmcsIChBU0NJSUxpdGVyYWwo
Inllc1wiIikpKTsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG5vU3RyaW5n
LCAoQVNDSUlMaXRlcmFsKCJub1wiIikpKTsKLSAgICAgICAgaWYgKGNjID09ICd5JykgewotICAg
ICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0ID0gc291cmNl
Lmxvb2tBaGVhZCh5ZXNTdHJpbmcpOwotICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50
ZWRTdHJpbmc6OkRpZE1hdGNoKSB7Ci0gICAgICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFT
U0VSVChzb3VyY2UsICJ5ZXNcIiIpOwotICAgICAgICAgICAgICAgIG1fdG9rZW4tPnNldFhNTFN0
YW5kYWxvbmUodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgWE1MX1NXSVRDSF9UTyhYTUxEZWNsQWZ0
ZXJTdGFuZGFsb25lU3RhdGUpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2Vn
bWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQotICAgICAgICAgICAgICAgIHJldHVy
biBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID09
ICduJykgewotICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVz
dWx0ID0gc291cmNlLmxvb2tBaGVhZChub1N0cmluZyk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0
ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKLSAgICAgICAgICAgICAgICBhZHZhbmNl
U3RyaW5nQW5kQVNTRVJUKHNvdXJjZSwgIm5vXCIiKTsKLSAgICAgICAgICAgICAgICBtX3Rva2Vu
LT5zZXRYTUxTdGFuZGFsb25lKGZhbHNlKTsKLSAgICAgICAgICAgICAgICBYTUxfU1dJVENIX1RP
KFhNTERlY2xBZnRlclN0YW5kYWxvbmVTdGF0ZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHJl
c3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7Ci0gICAgICAgIH0KLSAg
ICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2Up
OwotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKFhNTERlY2xB
ZnRlclN0YW5kYWxvbmVTdGF0ZSkgewotICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNl
KGNjKSkKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFhNTERlY2xBZnRlclN0YW5kYWxvbmVT
dGF0ZSk7Ci0gICAgICAgIGlmIChjYyA9PSAnPycpCi0gICAgICAgICAgICBYTUxfQURWQU5DRV9U
TyhYTUxEZWNsQ2xvc2VTdGF0ZSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcGFyc2VF
cnJvcigpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICAg
ICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKFhNTERl
Y2xDbG9zZVN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA9PSAnPicpCi0gICAgICAgICAgICByZXR1
cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgWE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7
Ci0gICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291
cmNlKTsKLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIFhNTF9CRUdJTl9TVEFURShQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb25UYXJnZXRTdGF0ZSkgewotICAgICAgICBpZiAoaXNUb2tlbml6ZXJX
aGl0ZXNwYWNlKGNjKSkgewotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oUHJvY2Vzc2luZ0lu
c3RydWN0aW9uQWZ0ZXJUYXJnZXRTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNWYWxpZE5h
bWVDaGFyKGNjKSkgewotICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb25UYXJnZXQoY2MpOwotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oUHJvY2Vzc2lu
Z0luc3RydWN0aW9uVGFyZ2V0U3RhdGUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
cGFyc2VFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsK
LSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgWE1MX0JFR0lOX1NUQVRF
KFByb2Nlc3NpbmdJbnN0cnVjdGlvbkFmdGVyVGFyZ2V0U3RhdGUpIHsKLSAgICAgICAgaWYgKGlz
VG9rZW5pemVyV2hpdGVzcGFjZShjYykpCi0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb25BZnRlclRhcmdldFN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2Mg
PT0gJz8nKQotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oUHJvY2Vzc2luZ0luc3RydWN0aW9u
Q2xvc2VTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vz
c29yOjplbmRPZkZpbGVNYXJrZXIpIHsKLSAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAg
ICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkRhdGEoY2Mp
OwotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oUHJvY2Vzc2luZ0luc3RydWN0aW9uRGF0YVN0
YXRlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgWE1MX0JFR0lO
X1NUQVRFKFByb2Nlc3NpbmdJbnN0cnVjdGlvbkRhdGFTdGF0ZSkgewotICAgICAgICBpZiAoY2Mg
PT0gJz8nKQotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oUHJvY2Vzc2luZ0luc3RydWN0aW9u
Q2xvc2VTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vz
c29yOjplbmRPZkZpbGVNYXJrZXIpIHsKLSAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAg
ICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkRhdGEoY2Mp
OwotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oUHJvY2Vzc2luZ0luc3RydWN0aW9uRGF0YVN0
YXRlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgWE1MX0JFR0lO
X1NUQVRFKFByb2Nlc3NpbmdJbnN0cnVjdGlvbkNsb3NlU3RhdGUpIHsKLSAgICAgICAgaWYgKGNj
ID09ICc+JykKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBYTUxU
b2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKLSAgICAgICAgaWYgKGNjID09IElucHV0U3RyZWFt
UHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKLSAgICAgICAgICAgIHBhcnNlRXJyb3Io
KTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgICAgIH0K
LSAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25EYXRhKCc/Jyk7
Ci0gICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvUHJvY2Vzc2luZ0luc3RydWN0aW9uRGF0YShjYyk7
Ci0gICAgICAgIFhNTF9BRFZBTkNFX1RPKFByb2Nlc3NpbmdJbnN0cnVjdGlvbkRhdGFTdGF0ZSk7
Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUoTWFya3VwRGVj
bGFyYXRpb25PcGVuU3RhdGUpIHsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IGRhc2hEYXNoU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCItLSIpKSk7Ci0gICAgICAgIERFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCBkb2N0eXBlU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJkb2N0eXBl
IikpKTsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNkYXRhU3RyaW5nLCAo
QVNDSUlMaXRlcmFsKCJbQ0RBVEFbIikpKTsKLSAgICAgICAgaWYgKGNjID09ICctJykgewotICAg
ICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0ID0gc291cmNl
Lmxvb2tBaGVhZChkYXNoRGFzaFN0cmluZyk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0ID09IFNl
Z21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKLSAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5j
ZUFuZEFTU0VSVCgnLScpOwotICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJU
KCctJyk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5Db21tZW50KCk7Ci0gICAgICAg
ICAgICAgICAgWE1MX1NXSVRDSF9UTyhDb21tZW50U3RhdGUpOwotICAgICAgICAgICAgfSBlbHNl
IGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQotICAg
ICAgICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOwotICAgICAg
ICB9IGVsc2UgaWYgKGNjID09ICdEJyB8fCBjYyA9PSAnZCcpIHsKLSAgICAgICAgICAgIFNlZ21l
bnRlZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWRJZ25v
cmluZ0Nhc2UoZG9jdHlwZVN0cmluZyk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21l
bnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKLSAgICAgICAgICAgICAgICBhZHZhbmNlU3RyaW5nQW5k
QVNTRVJUSWdub3JpbmdDYXNlKHNvdXJjZSwgImRvY3R5cGUiKTsKLSAgICAgICAgICAgICAgICBY
TUxfU1dJVENIX1RPKEJlZm9yZURPQ1RZUEVOYW1lU3RhdGUpOwotICAgICAgICAgICAgfSBlbHNl
IGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQotICAg
ICAgICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOwotICAgICAg
ICB9IGVsc2UgaWYgKGNjID09ICdbJykgewotICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpM
b29rQWhlYWRSZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZChjZGF0YVN0cmluZyk7Ci0g
ICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKLSAg
ICAgICAgICAgICAgICBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUKHNvdXJjZSwgIltDREFUQVsiKTsK
LSAgICAgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkNEQVRBKCk7Ci0gICAgICAgICAgICAgICAg
WE1MX1NXSVRDSF9UTyhDREFUQVNlY3Rpb25TdGF0ZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYg
KHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7Ci0gICAgICAgIH0K
LSAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3Vy
Y2UpOwotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKENvbW1l
bnRTdGF0ZSkgewotICAgICAgICBpZiAoY2MgPT0gJy0nKQotICAgICAgICAgICAgWE1MX0FEVkFO
Q0VfVE8oQ29tbWVudERhc2hTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09IElucHV0U3Ry
ZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKLSAgICAgICAgICAgIHBhcnNlRXJy
b3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoY2MpOwotICAg
ICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICBFTkRfU1RBVEUoKQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKENvbW1lbnREYXNoU3RhdGUp
IHsKLSAgICAgICAgaWYgKGNjID09ICctJykKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKENv
bW1lbnRFbmRTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJv
Y2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKLSAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAg
ICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKLSAgICAgICAgICAg
IG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7Ci0gICAgICAgICAgICBYTUxfQURWQU5DRV9U
TyhDb21tZW50U3RhdGUpOwotICAgICAgICB9Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAg
ICBYTUxfQkVHSU5fU1RBVEUoQ29tbWVudEVuZFN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA9PSAn
PicpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgWE1MVG9rZW5p
emVyU3RhdGU6OkRhdGFTdGF0ZSk7Ci0gICAgICAgIGlmIChjYyA9PSAnLScpIHsKLSAgICAgICAg
ICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJj
ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICByZXR1cm4gZW1p
dEFuZFJlY29uc3VtZUluKHNvdXJjZSwgWE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7Ci0g
ICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUoQmVmb3JlRE9DVFlQ
RU5hbWVTdGF0ZSkgewotICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKLSAg
ICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVOYW1lU3RhdGUpOwotICAgICAg
ICBlbHNlIGlmIChpc1ZhbGlkTmFtZVN0YXJ0KGNjKSkgewotICAgICAgICAgICAgbV90b2tlbi0+
YmVnaW5ET0NUWVBFKGNjKTsKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKERPQ1RZUEVOYW1l
U3RhdGUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAg
ICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICBFTkRfU1RBVEUoKQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKERPQ1RZUEVOYW1lU3RhdGUp
IHsKLSAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCi0gICAgICAgICAgICBY
TUxfQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVOYW1lU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChj
YyA9PSAnPicpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgWE1M
VG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGlzVmFsaWROYW1l
Q2hhcihjYykpIHsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvTmFtZShjYyk7Ci0gICAg
ICAgICAgICBYTUxfQURWQU5DRV9UTyhET0NUWVBFTmFtZVN0YXRlKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0RW5k
T2ZGaWxlKHNvdXJjZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAg
IFhNTF9CRUdJTl9TVEFURShBZnRlckRPQ1RZUEVOYW1lU3RhdGUpIHsKLSAgICAgICAgaWYgKGlz
VG9rZW5pemVyV2hpdGVzcGFjZShjYykpCi0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhBZnRl
ckRPQ1RZUEVOYW1lU3RhdGUpOwotICAgICAgICBpZiAoY2MgPT0gJz4nKQotICAgICAgICAgICAg
cmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIFhNTFRva2VuaXplclN0YXRlOjpEYXRhU3Rh
dGUpOwotICAgICAgICBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmls
ZU1hcmtlcikgewotICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJu
IGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICAgICAgfQotICAgICAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKFN0cmluZywgcHVibGljU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJwdWJsaWMiKSkpOwot
ICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc3lzdGVtU3RyaW5nLCAoQVNDSUlM
aXRlcmFsKCJzeXN0ZW0iKSkpOwotICAgICAgICBpZiAoY2MgPT0gJ1AnIHx8IGNjID09ICdwJykg
ewotICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0ID0g
c291cmNlLmxvb2tBaGVhZElnbm9yaW5nQ2FzZShwdWJsaWNTdHJpbmcpOwotICAgICAgICAgICAg
aWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7Ci0gICAgICAgICAgICAg
ICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVElnbm9yaW5nQ2FzZShzb3VyY2UsICJwdWJsaWMiKTsK
LSAgICAgICAgICAgICAgICBYTUxfU1dJVENIX1RPKEFmdGVyRE9DVFlQRVB1YmxpY0tleXdvcmRT
dGF0ZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6
Ok5vdEVub3VnaENoYXJhY3RlcnMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZmZXJl
ZENoYXJhY3RlclRva2VuKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1MnIHx8IGNjID09
ICdzJykgewotICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVz
dWx0ID0gc291cmNlLmxvb2tBaGVhZElnbm9yaW5nQ2FzZShzeXN0ZW1TdHJpbmcpOwotICAgICAg
ICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7Ci0gICAgICAg
ICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVElnbm9yaW5nQ2FzZShzb3VyY2UsICJzeXN0
ZW0iKTsKLSAgICAgICAgICAgICAgICBYTUxfU1dJVENIX1RPKEFmdGVyRE9DVFlQRVN5c3RlbUtl
eXdvcmRTdGF0ZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRT
dHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGhhdmVC
dWZmZXJlZENoYXJhY3RlclRva2VuKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1snKQot
ICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRUludGVybmFsU3Vic2V0U3Rh
dGUpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAg
ICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
RU5EX1NUQVRFKCkKLQotICAgIFhNTF9CRUdJTl9TVEFURShBZnRlckRPQ1RZUEVQdWJsaWNLZXl3
b3JkU3RhdGUpIHsKLSAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCi0gICAg
ICAgICAgICBYTUxfQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRl
KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAg
ICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAgICAgICB9Ci0gICAgfQotICAgIEVO
RF9TVEFURSgpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUoQmVmb3JlRE9DVFlQRVB1YmxpY0lkZW50
aWZpZXJTdGF0ZSkgewotICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKLSAg
ICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3Rh
dGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicgfHwgY2MgPT0gJ1wnJykgewotICAgICAg
ICAgICAgbV90b2tlbi0+c2V0UHVibGljSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKLSAgICAg
ICAgICAgIG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPSBjYzsKLSAgICAgICAgICAgIFhN
TF9BRFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyUXVvdGVkU3RhdGUpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJu
IGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUo
KQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyUXVvdGVkU3Rh
dGUpIHsKLSAgICAgICAgaWYgKGNjID09IG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIpCi0g
ICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3Rh
dGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5k
T2ZGaWxlTWFya2VyKSB7Ci0gICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgbV90b2tlbi0+YXBwZW5kVG9QdWJsaWNJZGVudGlmaWVyKGNjKTsKLSAgICAgICAgICAgIFhN
TF9BRFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyUXVvdGVkU3RhdGUpOwotICAgICAg
ICB9Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUoQWZ0ZXJE
T0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlKSB7Ci0gICAgICAgIGlmIChpc1Rva2VuaXplcldo
aXRlc3BhY2UoY2MpKQotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRVN5
c3RlbUlkZW50aWZpZXJTdGF0ZSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcGFyc2VF
cnJvcigpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICAg
ICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKEFmdGVy
RE9DVFlQRVN5c3RlbUtleXdvcmRTdGF0ZSkgewotICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0
ZXNwYWNlKGNjKSkKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVTeXN0
ZW1JZGVudGlmaWVyU3RhdGUpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHBhcnNlRXJy
b3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIFhNTF9CRUdJTl9TVEFURShCZWZvcmVE
T0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKSB7Ci0gICAgICAgIGlmIChpc1Rva2VuaXplcldo
aXRlc3BhY2UoY2MpKQotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRVN5
c3RlbUlkZW50aWZpZXJTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICciJyB8fCBjYyA9
PSAnXCcnKSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5zZXRTeXN0ZW1JZGVudGlmaWVyVG9FbXB0
eVN0cmluZygpOwotICAgICAgICAgICAgbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9IGNj
OwotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJRdW90
ZWRTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0g
ICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAgICAgICB9Ci0gICAg
fQotICAgIEVORF9TVEFURSgpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUoRE9DVFlQRVN5c3RlbUlk
ZW50aWZpZXJRdW90ZWRTdGF0ZSkgewotICAgICAgICBpZiAoY2MgPT0gbV9hZGRpdGlvbmFsQWxs
b3dlZENoYXJhY3RlcikKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVN5
c3RlbUlkZW50aWZpZXJTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGlzVmFsaWRMaXRlcmFsQ2hh
cihjYykpIHsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvU3lzdGVtSWRlbnRpZmllcihj
Yyk7Ci0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmllclF1
b3RlZFN0YXRlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsK
LSAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIFhNTF9CRUdJTl9TVEFURShBZnRlckRPQ1RZUEVT
eXN0ZW1JZGVudGlmaWVyU3RhdGUpIHsKLSAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFj
ZShjYykpCi0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVTeXN0ZW1JZGVu
dGlmaWVyU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCi0gICAgICAgICAgICBy
ZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgWE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0
ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICdbJykKLSAgICAgICAgICAgIFhNTF9BRFZBTkNF
X1RPKEJlZm9yZURPQ1RZUEVJbnRlcm5hbFN1YnNldFN0YXRlKTsKLSAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmls
ZShzb3VyY2UpOwotICAgICAgICB9Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBYTUxf
QkVHSU5fU1RBVEUoQmVmb3JlRE9DVFlQRUludGVybmFsU3Vic2V0U3RhdGUpIHsKLSAgICAgICAg
aWYgKGNjID09ICddJykKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEFmdGVyRE9DVFlQRUlu
dGVybmFsU3Vic2V0U3RhdGUpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8vIEZJWE1F
IGltcGxlbWVudCBpbnRlcm5hbCBzdWJzZXQKLSAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAg
ICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIFhNTF9CRUdJTl9TVEFURShBZnRlckRPQ1RZUEVJbnRl
cm5hbFN1YnNldFN0YXRlKSB7Ci0gICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2Mp
KQotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFSW50ZXJuYWxTdWJzZXRT
dGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKLSAgICAgICAgICAgIHJldHVybiBl
bWl0QW5kUmVzdW1lSW4oc291cmNlLCBYTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKLSAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1
cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAgICAgICB9Ci0gICAgfQotICAgIEVORF9TVEFU
RSgpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUoQ0RBVEFTZWN0aW9uU3RhdGUpIHsKLSAgICAgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNsb3NlU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJd
XT4iKSkpOwotICAgICAgICBpZiAoY2MgPT0gJ10nKSB7Ci0gICAgICAgICAgICBTZWdtZW50ZWRT
dHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkKGNsb3NlU3Ry
aW5nKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRNYXRj
aCkgewotICAgICAgICAgICAgICAgIGFkdmFuY2VTdHJpbmdBbmRBU1NFUlQoc291cmNlLCAiXV0+
Iik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIFhN
TFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVN
YXJrZXIpIHsKLSAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBl
bWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgICAgIH0KLSAgICAgICAgbV90b2tlbi0+YXBwZW5k
VG9DREFUQShjYyk7Ci0gICAgICAgIFhNTF9BRFZBTkNFX1RPKENEQVRBU2VjdGlvblN0YXRlKTsK
LSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotaW5saW5lIHZvaWQgWE1MVG9rZW5pemVyOjpi
dWZmZXJDaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyKQotewotICAgIEFTU0VSVChjaGFyYWN0ZXIg
IT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcik7Ci0gICAgbV90b2tl
bi0+ZW5zdXJlSXNDaGFyYWN0ZXJUb2tlbigpOwotICAgIG1fdG9rZW4tPmFwcGVuZFRvQ2hhcmFj
dGVyKGNoYXJhY3Rlcik7Ci19Ci0KLWlubGluZSB2b2lkIFhNTFRva2VuaXplcjo6cGFyc2VFcnJv
cigpCi17Ci0gICAgbV9lcnJvckR1cmluZ1BhcnNpbmcgPSB0cnVlOwotfQotCi19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRva2VuaXplci5oIGIvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbml6ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggM2I5NDlhODQzMWVkZDU0NDk4Y2RjNjQzOTRhODIzZDMzYTVkODdlMi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTFRva2VuaXplci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTI0ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBYTUxU
b2tlbml6ZXJfaAotI2RlZmluZSBYTUxUb2tlbml6ZXJfaAotCi0jaW5jbHVkZSAiTWFya3VwVG9r
ZW5pemVyQmFzZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFhNTFRva2VuOwot
Ci1jbGFzcyBYTUxUb2tlbml6ZXJTdGF0ZSB7Ci1wdWJsaWM6Ci0gICAgZW51bSBTdGF0ZSB7Ci0g
ICAgICAgIERhdGFTdGF0ZSwKLSAgICAgICAgQ2hhcmFjdGVyUmVmZXJlbmNlU3RhcnRTdGF0ZSwK
LSAgICAgICAgRW50aXR5UmVmZXJlbmNlU3RhdGUsCi0gICAgICAgIFRhZ09wZW5TdGF0ZSwKLSAg
ICAgICAgRW5kVGFnT3BlblN0YXRlLAotICAgICAgICBUYWdOYW1lU3RhdGUsCi0gICAgICAgIEVu
ZFRhZ05hbWVTdGF0ZSwKLSAgICAgICAgRW5kVGFnU3BhY2VTdGF0ZSwKLSAgICAgICAgWE1MRGVj
bEFmdGVyWE1MU3RhdGUsCi0gICAgICAgIFhNTERlY2xCZWZvcmVWZXJzaW9uTmFtZVN0YXRlLAot
ICAgICAgICBYTUxEZWNsQWZ0ZXJWZXJzaW9uTmFtZVN0YXRlLAotICAgICAgICBYTUxEZWNsQmVm
b3JlVmVyc2lvblZhbHVlU3RhdGUsCi0gICAgICAgIFhNTERlY2xCZWZvcmVWZXJzaW9uT25lUG9p
bnRTdGF0ZSwKLSAgICAgICAgWE1MRGVjbFZlcnNpb25WYWx1ZVF1b3RlZFN0YXRlLAotICAgICAg
ICBYTUxEZWNsQWZ0ZXJWZXJzaW9uU3RhdGUsCi0gICAgICAgIFhNTERlY2xCZWZvcmVFbmNvZGlu
Z05hbWVTdGF0ZSwKLSAgICAgICAgWE1MRGVjbEFmdGVyRW5jb2RpbmdOYW1lU3RhdGUsCi0gICAg
ICAgIFhNTERlY2xCZWZvcmVFbmNvZGluZ1ZhbHVlU3RhdGUsCi0gICAgICAgIFhNTERlY2xFbmNv
ZGluZ1ZhbHVlU3RhcnRRdW90ZWRTdGF0ZSwKLSAgICAgICAgWE1MRGVjbEVuY29kaW5nVmFsdWVR
dW90ZWRTdGF0ZSwKLSAgICAgICAgWE1MRGVjbEFmdGVyRW5jb2RpbmdTdGF0ZSwKLSAgICAgICAg
WE1MRGVjbEJlZm9yZVN0YW5kYWxvbmVOYW1lU3RhdGUsCi0gICAgICAgIFhNTERlY2xBZnRlclN0
YW5kYWxvbmVOYW1lU3RhdGUsCi0gICAgICAgIFhNTERlY2xCZWZvcmVTdGFuZGFsb25lVmFsdWVT
dGF0ZSwKLSAgICAgICAgWE1MRGVjbFN0YW5kYWxvbmVWYWx1ZVF1b3RlZFN0YXRlLAotICAgICAg
ICBYTUxEZWNsQWZ0ZXJTdGFuZGFsb25lU3RhdGUsCi0gICAgICAgIFhNTERlY2xDbG9zZVN0YXRl
LAotICAgICAgICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UYXJnZXRTdGFydFN0YXRlLAotICAgICAg
ICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UYXJnZXRTdGF0ZSwKLSAgICAgICAgUHJvY2Vzc2luZ0lu
c3RydWN0aW9uQWZ0ZXJUYXJnZXRTdGF0ZSwKLSAgICAgICAgUHJvY2Vzc2luZ0luc3RydWN0aW9u
RGF0YVN0YXRlLAotICAgICAgICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DbG9zZVN0YXRlLAotICAg
ICAgICBNYXJrdXBEZWNsYXJhdGlvbk9wZW5TdGF0ZSwKLSAgICAgICAgQmVmb3JlQXR0cmlidXRl
TmFtZVN0YXRlLAotICAgICAgICBBdHRyaWJ1dGVOYW1lU3RhdGUsCi0gICAgICAgIEFmdGVyQXR0
cmlidXRlTmFtZVN0YXRlLAotICAgICAgICBCZWZvcmVBdHRyaWJ1dGVWYWx1ZVN0YXRlLAotICAg
ICAgICBBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlLAotICAgICAgICBDaGFyYWN0ZXJSZWZlcmVu
Y2VJbkF0dHJpYnV0ZVZhbHVlU3RhdGUsCi0gICAgICAgIEFmdGVyQXR0cmlidXRlVmFsdWVRdW90
ZWRTdGF0ZSwKLSAgICAgICAgU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlLAotICAgICAgICBDb21t
ZW50U3RhdGUsCi0gICAgICAgIENvbW1lbnREYXNoU3RhdGUsCi0gICAgICAgIENvbW1lbnRFbmRT
dGF0ZSwKLSAgICAgICAgQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSwKLSAgICAgICAgRE9DVFlQRU5h
bWVTdGF0ZSwKLSAgICAgICAgQWZ0ZXJET0NUWVBFTmFtZVN0YXRlLAotICAgICAgICBBZnRlckRP
Q1RZUEVQdWJsaWNLZXl3b3JkU3RhdGUsCi0gICAgICAgIEJlZm9yZURPQ1RZUEVQdWJsaWNJZGVu
dGlmaWVyU3RhdGUsCi0gICAgICAgIERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyUXVvdGVkU3RhdGUs
Ci0gICAgICAgIEFmdGVyRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSwKLSAgICAgICAgQWZ0
ZXJET0NUWVBFU3lzdGVtS2V5d29yZFN0YXRlLAotICAgICAgICBCZWZvcmVET0NUWVBFU3lzdGVt
SWRlbnRpZmllclN0YXRlLAotICAgICAgICBET0NUWVBFU3lzdGVtSWRlbnRpZmllclF1b3RlZFN0
YXRlLAotICAgICAgICBBZnRlckRPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUsCi0gICAgICAg
IEJlZm9yZURPQ1RZUEVJbnRlcm5hbFN1YnNldFN0YXRlLAotICAgICAgICBBZnRlckRPQ1RZUEVJ
bnRlcm5hbFN1YnNldFN0YXRlLAotICAgICAgICBDREFUQVNlY3Rpb25TdGF0ZSwKLSAgICB9Owot
fTsKLQotY2xhc3MgWE1MVG9rZW5pemVyIDogcHVibGljIE1hcmt1cFRva2VuaXplckJhc2U8WE1M
VG9rZW4sIFhNTFRva2VuaXplclN0YXRlPiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoWE1M
VG9rZW5pemVyKTsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc093blB0cjxYTUxUb2tlbml6ZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UHRy
KG5ldyBYTUxUb2tlbml6ZXIpOyB9Ci0KLSAgICAvLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdHJ1
ZSBpZiBpdCBlbWl0cyBhIHRva2VuLiBPdGhlcndpc2UsIGNhbGxlcnMKLSAgICAvLyBtdXN0IHBy
b3ZpZGUgdGhlIHNhbWUgKGluIHByb2dyZXNzKSB0b2tlbiBvbiB0aGUgbmV4dCBjYWxsICh1bmxl
c3MKLSAgICAvLyB0aGV5IGNhbGwgcmVzZXQoKSBmaXJzdCkuCi0gICAgYm9vbCBuZXh0VG9rZW4o
U2VnbWVudGVkU3RyaW5nJiwgWE1MVG9rZW4mKTsKLQotICAgIGJvb2wgZXJyb3JEdXJpbmdQYXJz
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvckR1cmluZ1BhcnNpbmc7IH0KLQotcHJpdmF0ZToK
LSAgICBYTUxUb2tlbml6ZXIoKTsKLQotICAgIGlubGluZSB2b2lkIHBhcnNlRXJyb3IoKTsKLSAg
ICBpbmxpbmUgdm9pZCBidWZmZXJDaGFyYWN0ZXIoVUNoYXIpOwotCi0gICAgYm9vbCBtX2Vycm9y
RHVyaW5nUGFyc2luZzsKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL1hNTFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MVHJlZUJ1aWxkZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBk
Mzk2ZTAyMWEyNzE1YTMwMjE4YWVlNWVmYjIwMmQzYWM1ZGFkYTU0Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MVHJlZUJ1aWxkZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDc4ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiWE1MVHJlZUJ1aWxkZXIuaCIKLQotI2luY2x1ZGUgIkNhY2hlZFNjcmlw
dC5oIgotI2luY2x1ZGUgIkNEQVRBU2VjdGlvbi5oIgotI2luY2x1ZGUgIkNvbW1lbnQuaCIKLSNp
bmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKLSNpbmNs
dWRlICJEb2N1bWVudFR5cGUuaCIKLSNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiRnJh
bWUuaCIKLS8vIEZJWE1FOiBXaHkgYXJlIHdlIGluY2x1ZGluZyBIVE1MIGVudGl0eSBpbmZvcm1h
dGlvbiBpbiB0aGUgWE1MIHBhcnNlcj8KLSNpbmNsdWRlICJIVE1MRW50aXR5U2VhcmNoLmgiCi0j
aW5jbHVkZSAiSFRNTEVudGl0eVRhYmxlLmgiCi0jaW5jbHVkZSAiTmV3WE1MRG9jdW1lbnRQYXJz
ZXIuaCIKLSNpbmNsdWRlICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCIKLSNpbmNsdWRlICJTY3Jp
cHRFbGVtZW50LmgiCi0jaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlhN
TE5TTmFtZXMuaCIKLSNpbmNsdWRlICJYTUxOYW1lcy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLVhNTFRyZWVCdWlsZGVyOjpYTUxUcmVlQnVpbGRlcihOZXdYTUxEb2N1bWVudFBhcnNlciog
cGFyc2VyLCBEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQot
ICAgICwgbV9wYXJzZXIocGFyc2VyKQotICAgICwgbV9pc1hIVE1MKGZhbHNlKQotICAgICwgbV9z
YXdGaXJzdEVsZW1lbnQoZmFsc2UpCi17Ci0gICAgbV9jdXJyZW50Tm9kZVN0YWNrLmFwcGVuZChO
b2RlU3RhY2tJdGVtKGRvY3VtZW50KSk7Ci19Ci0KLVhNTFRyZWVCdWlsZGVyOjpYTUxUcmVlQnVp
bGRlcihOZXdYTUxEb2N1bWVudFBhcnNlciogcGFyc2VyLCBEb2N1bWVudEZyYWdtZW50KiBmcmFn
bWVudCwgRWxlbWVudCogcGFyZW50KQotICAgIDogbV9kb2N1bWVudChmcmFnbWVudC0+ZG9jdW1l
bnQoKSkKLSAgICAsIG1fcGFyc2VyKHBhcnNlcikKLSAgICAsIG1faXNYSFRNTChmYWxzZSkKLSAg
ICAsIG1fc2F3Rmlyc3RFbGVtZW50KHRydWUpCi17Ci0gICAgTm9kZVN0YWNrSXRlbSBzdGFja0l0
ZW0oZnJhZ21lbnQpOwotCi0gICAgLy8gRmlndXJlIG91dCBuYW1lc3BhY2VzCi0gICAgVmVjdG9y
PEVsZW1lbnQqPiBub2RlU3RhY2s7Ci0gICAgd2hpbGUgKHBhcmVudCkgewotICAgICAgICBub2Rl
U3RhY2suYXBwZW5kKHBhcmVudCk7Ci0KLSAgICAgICAgQ29udGFpbmVyTm9kZSogbm9kZSA9IHBh
cmVudC0+cGFyZW50Tm9kZSgpOwotICAgICAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmlzRWxlbWVu
dE5vZGUoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBwYXJlbnQgPSBzdGF0aWNfY2Fz
dDxFbGVtZW50Kj4obm9kZSk7Ci0gICAgfQotCi0gICAgaWYgKG5vZGVTdGFjay5pc0VtcHR5KCkp
IHsKLSAgICAgICAgbV9jdXJyZW50Tm9kZVN0YWNrLmFwcGVuZChzdGFja0l0ZW0pOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgZm9yIChFbGVtZW50KiBlbGVtZW50OyAhbm9kZVN0YWNr
LmlzRW1wdHkoKTsgbm9kZVN0YWNrLnJlbW92ZUxhc3QoKSkgewotICAgICAgICBlbGVtZW50ID0g
bm9kZVN0YWNrLmxhc3QoKTsKLSAgICAgICAgaWYgKGVsZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSkg
ewotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbGVtZW50LT5hdHRyaWJ1dGVD
b3VudCgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0
ZSA9IGVsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0oaSk7Ci0gICAgICAgICAgICAgICAgaWYgKGF0dHJp
YnV0ZS0+bG9jYWxOYW1lKCkgPT0geG1sbnNBdG9tKQotICAgICAgICAgICAgICAgICAgICBzdGFj
a0l0ZW0uc2V0TmFtZXNwYWNlVVJJKGF0dHJpYnV0ZS0+dmFsdWUoKSk7Ci0gICAgICAgICAgICAg
ICAgZWxzZSBpZiAoYXR0cmlidXRlLT5wcmVmaXgoKSA9PSB4bWxuc0F0b20pCi0gICAgICAgICAg
ICAgICAgICAgIHN0YWNrSXRlbS5zZXROYW1lc3BhY2VVUkkoYXR0cmlidXRlLT5sb2NhbE5hbWUo
KSwgYXR0cmlidXRlLT52YWx1ZSgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LQotICAgIC8vIElmIHRoZSBwYXJlbnQgZWxlbWVudCBpcyBub3QgaW4gZG9jdW1lbnQgdHJlZSwg
dGhlcmUgbWF5IGJlIG5vIHhtbG5zIGF0dHJpYnV0ZTsganVzdCBkZWZhdWx0IHRvIHRoZSBwYXJl
bnQncyBuYW1lc3BhY2UuCi0gICAgaWYgKHN0YWNrSXRlbS5uYW1lc3BhY2VVUkkoKS5pc051bGwo
KSAmJiAhcGFyZW50LT5pbkRvY3VtZW50KCkpCi0gICAgICAgIHN0YWNrSXRlbS5zZXROYW1lc3Bh
Y2VVUkkocGFyZW50LT5uYW1lc3BhY2VVUkkoKSk7Ci0KLSAgICBtX2N1cnJlbnROb2RlU3RhY2su
YXBwZW5kKHN0YWNrSXRlbSk7Ci19Ci0KLXZvaWQgWE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUb2tl
bihjb25zdCBBdG9taWNYTUxUb2tlbiYgdG9rZW4pCi17Ci0gICAgc3dpdGNoICh0b2tlbi50eXBl
KCkpIHsKLSAgICBjYXNlIFhNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQ6Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFhNTFRva2VuVHlw
ZXM6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjoKLSAgICAgICAgcHJvY2Vzc1Byb2Nlc3NpbmdJbnN0
cnVjdGlvbih0b2tlbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6
WE1MRGVjbGFyYXRpb246Ci0gICAgICAgIHByb2Nlc3NYTUxEZWNsYXJhdGlvbih0b2tlbik7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6RE9DVFlQRToKLSAgICAgICAg
cHJvY2Vzc0RPQ1RZUEUodG9rZW4pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFhNTFRva2Vu
VHlwZXM6OlN0YXJ0VGFnOgotICAgICAgICBwcm9jZXNzU3RhcnRUYWcodG9rZW4pOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFhNTFRva2VuVHlwZXM6OkVuZFRhZzoKLSAgICAgICAgcHJvY2Vz
c0VuZFRhZyh0b2tlbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6
Q0RBVEE6Ci0gICAgICAgIHByb2Nlc3NDREFUQSh0b2tlbik7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgWE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyOgotICAgICAgICBwcm9jZXNzQ2hhcmFjdGVy
KHRva2VuKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBYTUxUb2tlblR5cGVzOjpDb21tZW50
OgotICAgICAgICBwcm9jZXNzQ29tbWVudCh0b2tlbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgWE1MVG9rZW5UeXBlczo6RW50aXR5OgotICAgICAgICBwcm9jZXNzRW50aXR5KHRva2VuKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBYTUxUb2tlblR5cGVzOjpFbmRPZkZpbGU6Ci0gICAg
ICAgIGV4aXRUZXh0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLXZvaWQgWE1MVHJl
ZUJ1aWxkZXI6OmZpbmlzaCgpCi17Ci0gICAgZXhpdFRleHQoKTsKLX0KLQotdm9pZCBYTUxUcmVl
QnVpbGRlcjo6cHVzaEN1cnJlbnROb2RlKGNvbnN0IE5vZGVTdGFja0l0ZW0mIHN0YWNrSXRlbSkK
LXsKLSAgICBBU1NFUlQoc3RhY2tJdGVtLm5vZGUoKSk7Ci0gICAgbV9jdXJyZW50Tm9kZVN0YWNr
LmFwcGVuZChzdGFja0l0ZW0pOwotICAgIC8vIEZJWE1FOiBpcyB0aGVyZSBhIG1heGltdW0gRE9N
IGRlcHRoPwotfQotCi12b2lkIFhNTFRyZWVCdWlsZGVyOjpwb3BDdXJyZW50Tm9kZSgpCi17Ci0g
ICAgQVNTRVJUKG1fY3VycmVudE5vZGVTdGFjay5zaXplKCkpOwotCi0gICAgbV9jdXJyZW50Tm9k
ZVN0YWNrLnJlbW92ZUxhc3QoKTsKLX0KLQotdm9pZCBYTUxUcmVlQnVpbGRlcjo6Y2xvc2VFbGVt
ZW50KFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCkKLXsKLSAgICBlbGVtZW50LT5maW5pc2hQ
YXJzaW5nQ2hpbGRyZW4oKTsKLQotICAgIFNjcmlwdEVsZW1lbnQqIHNjcmlwdEVsZW1lbnQgPSB0
b1NjcmlwdEVsZW1lbnQoZWxlbWVudC5nZXQoKSk7Ci0gICAgaWYgKHNjcmlwdEVsZW1lbnQpCi0g
ICAgICAgIG1fcGFyc2VyLT5wcm9jZXNzU2NyaXB0KHNjcmlwdEVsZW1lbnQpOwotCi0gICAgcG9w
Q3VycmVudE5vZGUoKTsKLX0KLQotdm9pZCBYTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1Byb2Nlc3Np
bmdJbnN0cnVjdGlvbihjb25zdCBBdG9taWNYTUxUb2tlbiYgdG9rZW4pCi17Ci0gICAgaWYgKCFm
YWlsT25UZXh0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiBmYWxsIGJhY2sg
aWYgd2UgY2FuJ3QgaGFuZGxlIHRoZSBQSSBvdXJzZWxmLgotCi0gICAgYWRkKFByb2Nlc3NpbmdJ
bnN0cnVjdGlvbjo6Y3JlYXRlKG1fZG9jdW1lbnQsIHRva2VuLnRhcmdldCgpLCB0b2tlbi5kYXRh
KCkpKTsKLX0KLQotdm9pZCBYTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1hNTERlY2xhcmF0aW9uKGNv
bnN0IEF0b21pY1hNTFRva2VuJiB0b2tlbikKLXsKLSAgICBpZiAoIWZhaWxPblRleHQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0KLSAgICBtX2RvY3Vt
ZW50LT5zZXRYTUxWZXJzaW9uKFN0cmluZyh0b2tlbi54bWxWZXJzaW9uKCkpLCBlYyk7Ci0gICAg
aWYgKGVjKQotICAgICAgICBtX3BhcnNlci0+c3RvcFBhcnNpbmcoKTsKLQotICAgIG1fZG9jdW1l
bnQtPnNldFhNTFN0YW5kYWxvbmUodG9rZW4ueG1sU3RhbmRhbG9uZSgpLCBlYyk7Ci0gICAgaWYg
KGVjKQotICAgICAgICBtX3BhcnNlci0+c3RvcFBhcnNpbmcoKTsKLSAgICAvLyBGSVhNRTogaG93
IHNob3VsZCB0aGlzIGJlaGF2ZSBpZiBzdGFuZGFsb25lIGlzIG5vdCBzcGVjaWZpZWQ/Ci0gICAg
Ly8gRklYTUU6IHNldCBlbmNvZGluZy4KLX0KLQotdm9pZCBYTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c0RPQ1RZUEUoY29uc3QgQXRvbWljWE1MVG9rZW4mIHRva2VuKQotewotICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCB4aHRtbFRyYW5zaXRpb25hbCwgKCItLy9XM0MvL0RURCBY
SFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgeGh0bWwxMSwg
KCItLy9XM0MvL0RURCBYSFRNTCAxLjEvL0VOIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB4aHRtbFN0
cmljdCwgKCItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgeGh0bWxGcmFtZXNldCwgKCItLy9XM0MvL0RURCBYSFRNTCAxLjAgRnJhbWVzZXQvL0VO
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCB4aHRtbEJhc2ljLCAoIi0vL1czQy8vRFREIFhIVE1MIEJh
c2ljIDEuMC8vRU4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHhodG1sTWF0aE1MLCAoIi0vL1czQy8v
RFREIFhIVE1MIDEuMSBwbHVzIE1hdGhNTCAyLjAvL0VOIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB4
aHRtbE1hdGhNTFNWRywgKCItLy9XM0MvL0RURCBYSFRNTCAxLjEgcGx1cyBNYXRoTUwgMi4wIHBs
dXMgU1ZHIDEuMS8vRU4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0g
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHhodG1sTW9iaWxlLCAoIi0vL1dB
UEZPUlVNLy9EVEQgWEhUTUwgTW9iaWxlIDEuMC8vRU4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7Ci0KLSAgICBpZiAoIWZhaWxPblRleHQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgQXRvbWljU3RyaW5nIHB1YmxpY0lkZW50aWZpZXIodG9rZW4ucHVibGljSWRlbnRp
ZmllcigpLmRhdGEoKSwgdG9rZW4ucHVibGljSWRlbnRpZmllcigpLnNpemUoKSk7Ci0gICAgQXRv
bWljU3RyaW5nIHN5c3RlbUlkZW50aWZpZXIodG9rZW4uc3lzdGVtSWRlbnRpZmllcigpLmRhdGEo
KSwgdG9rZW4uc3lzdGVtSWRlbnRpZmllcigpLnNpemUoKSk7Ci0gICAgUmVmUHRyPERvY3VtZW50
VHlwZT4gZG9jdHlwZSA9IERvY3VtZW50VHlwZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHRva2VuLm5h
bWUoKSwgcHVibGljSWRlbnRpZmllciwgc3lzdGVtSWRlbnRpZmllcik7Ci0gICAgbV9kb2N1bWVu
dC0+c2V0RG9jVHlwZShkb2N0eXBlKTsKLSAgICBtX2RvY3VtZW50LT5wYXJzZXJBcHBlbmRDaGls
ZChkb2N0eXBlKTsKLQotICAgIGlmICgocHVibGljSWRlbnRpZmllciA9PSB4aHRtbFRyYW5zaXRp
b25hbCkKLSAgICAgICAgfHwgKHB1YmxpY0lkZW50aWZpZXIgPT0geGh0bWwxMSkKLSAgICAgICAg
fHwgKHB1YmxpY0lkZW50aWZpZXIgPT0geGh0bWxTdHJpY3QpCi0gICAgICAgIHx8IChwdWJsaWNJ
ZGVudGlmaWVyID09IHhodG1sRnJhbWVzZXQpCi0gICAgICAgIHx8IChwdWJsaWNJZGVudGlmaWVy
ID09IHhodG1sQmFzaWMpCi0gICAgICAgIHx8IChwdWJsaWNJZGVudGlmaWVyID09IHhodG1sTWF0
aE1MKQotICAgICAgICB8fCAocHVibGljSWRlbnRpZmllciA9PSB4aHRtbE1hdGhNTFNWRykKLSAg
ICAgICAgfHwgKHB1YmxpY0lkZW50aWZpZXIgPT0geGh0bWxNb2JpbGUpKQotICAgICAgICBtX2lz
WEhUTUwgPSB0cnVlOwotfQotCi12b2lkIFhNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWco
Y29uc3QgQXRvbWljWE1MVG9rZW4mIHRva2VuKQotewotICAgIGV4aXRUZXh0KCk7Ci0KLSAgICBi
b29sIGlzRmlyc3RFbGVtZW50ID0gIW1fc2F3Rmlyc3RFbGVtZW50OwotICAgIG1fc2F3Rmlyc3RF
bGVtZW50ID0gdHJ1ZTsKLQotICAgIE5vZGVTdGFja0l0ZW0gdG9wID0gbV9jdXJyZW50Tm9kZVN0
YWNrLmxhc3QoKTsKLQotICAgIHByb2Nlc3NOYW1lc3BhY2VzKHRva2VuLCB0b3ApOwotCi0gICAg
UXVhbGlmaWVkTmFtZSBxTmFtZSh0b2tlbi5wcmVmaXgoKSwgdG9rZW4ubmFtZSgpLCB0b3AubmFt
ZXNwYWNlRm9yUHJlZml4KHRva2VuLnByZWZpeCgpLCB0b3AubmFtZXNwYWNlVVJJKCkpKTsKLSAg
ICBSZWZQdHI8RWxlbWVudD4gbmV3RWxlbWVudCA9IG1fZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnQo
cU5hbWUsIHRydWUpOwotCi0gICAgcHJvY2Vzc0F0dHJpYnV0ZXModG9rZW4sIHRvcCwgbmV3RWxl
bWVudCk7Ci0KLSAgICBuZXdFbGVtZW50LT5iZWdpblBhcnNpbmdDaGlsZHJlbigpOwotICAgIG1f
Y3VycmVudE5vZGVTdGFjay5sYXN0KCkubm9kZSgpLT5wYXJzZXJBcHBlbmRDaGlsZChuZXdFbGVt
ZW50LmdldCgpKTsKLQotICAgIHRvcC5zZXROb2RlKG5ld0VsZW1lbnQpOwotICAgIHB1c2hDdXJy
ZW50Tm9kZSh0b3ApOwotCi0gICAgaWYgKCFuZXdFbGVtZW50LT5hdHRhY2hlZCgpKQotICAgICAg
ICBuZXdFbGVtZW50LT5hdHRhY2goKTsKLQotICAgIGlmIChpc0ZpcnN0RWxlbWVudCAmJiBtX2Rv
Y3VtZW50LT5mcmFtZSgpKQotICAgICAgICBtX2RvY3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS0+
ZGlzcGF0Y2hEb2N1bWVudEVsZW1lbnRBdmFpbGFibGUoKTsKLQotICAgIGlmICh0b2tlbi5zZWxm
Q2xvc2luZygpKQotICAgICAgICBjbG9zZUVsZW1lbnQobmV3RWxlbWVudCk7Ci19Ci0KLXZvaWQg
WE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcoY29uc3QgQXRvbWljWE1MVG9rZW4mIHRva2Vu
KQotewotICAgIGV4aXRUZXh0KCk7Ci0KLSAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gbm9kZSA9
IG1fY3VycmVudE5vZGVTdGFjay5sYXN0KCkubm9kZSgpOwotCi0gICAgaWYgKCFub2RlLT5oYXNU
YWdOYW1lKFF1YWxpZmllZE5hbWUodG9rZW4ucHJlZml4KCksIHRva2VuLm5hbWUoKSwgbV9jdXJy
ZW50Tm9kZVN0YWNrLmxhc3QoKS5uYW1lc3BhY2VGb3JQcmVmaXgodG9rZW4ucHJlZml4KCksIG1f
Y3VycmVudE5vZGVTdGFjay5sYXN0KCkubmFtZXNwYWNlVVJJKCkpKSkpCi0gICAgICAgIG1fcGFy
c2VyLT5zdG9wUGFyc2luZygpOwotCi0gICAgY2xvc2VFbGVtZW50KHRvRWxlbWVudChub2RlLmdl
dCgpKSk7Ci19Ci0KLXZvaWQgWE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDaGFyYWN0ZXIoY29uc3Qg
QXRvbWljWE1MVG9rZW4mIHRva2VuKQotewotICAgIGFwcGVuZFRvVGV4dCh0b2tlbi5jaGFyYWN0
ZXJzKCksIHRva2VuLmNoYXJhY3RlcnNMZW5ndGgoKSk7Ci19Ci0KLXZvaWQgWE1MVHJlZUJ1aWxk
ZXI6OnByb2Nlc3NDREFUQShjb25zdCBBdG9taWNYTUxUb2tlbiYgdG9rZW4pCi17Ci0gICAgZXhp
dFRleHQoKTsKLSAgICBhZGQoQ0RBVEFTZWN0aW9uOjpjcmVhdGUobV9kb2N1bWVudCwgdG9rZW4u
ZGF0YSgpKSk7Ci19Ci0KLXZvaWQgWE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDb21tZW50KGNvbnN0
IEF0b21pY1hNTFRva2VuJiB0b2tlbikKLXsKLSAgICBleGl0VGV4dCgpOwotICAgIGFkZChDb21t
ZW50OjpjcmVhdGUobV9kb2N1bWVudCwgdG9rZW4uY29tbWVudCgpKSk7Ci19Ci0KLXZvaWQgWE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NFbnRpdHkoY29uc3QgQXRvbWljWE1MVG9rZW4mIHRva2VuKQot
ewotICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgc3VwcG9ydCBpbnRlcm5hbCBzdWJzZXQuCi0gICAg
aWYgKG1faXNYSFRNTCkKLSAgICAgICAgcHJvY2Vzc0hUTUxFbnRpdHkodG9rZW4pOwotICAgIGVs
c2UKLSAgICAgICAgcHJvY2Vzc1hNTEVudGl0eSh0b2tlbik7Ci19Ci0KLXZvaWQgWE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NOYW1lc3BhY2VzKGNvbnN0IEF0b21pY1hNTFRva2VuJiB0b2tlbiwgTm9k
ZVN0YWNrSXRlbSYgc3RhY2tJdGVtKQotewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0
b2tlbi5hdHRyaWJ1dGVzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgY29uc3QgQXR0cmlidXRl
JiB0b2tlbkF0dHJpYnV0ZSA9IHRva2VuLmF0dHJpYnV0ZXMoKS5hdChpKTsKLSAgICAgICAgaWYg
KHRva2VuQXR0cmlidXRlLm5hbWUoKS5wcmVmaXgoKSA9PSB4bWxuc0F0b20pCi0gICAgICAgICAg
ICBzdGFja0l0ZW0uc2V0TmFtZXNwYWNlVVJJKHRva2VuQXR0cmlidXRlLm5hbWUoKS5sb2NhbE5h
bWUoKSwgdG9rZW5BdHRyaWJ1dGUudmFsdWUoKSk7Ci0gICAgICAgIGVsc2UgaWYgKHRva2VuQXR0
cmlidXRlLm5hbWUoKSA9PSB4bWxuc0F0b20pCi0gICAgICAgICAgICBzdGFja0l0ZW0uc2V0TmFt
ZXNwYWNlVVJJKHRva2VuQXR0cmlidXRlLnZhbHVlKCkpOwotICAgIH0KLX0KLQotdm9pZCBYTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc0F0dHJpYnV0ZXMoY29uc3QgQXRvbWljWE1MVG9rZW4mIHRva2Vu
LCBOb2RlU3RhY2tJdGVtJiBzdGFja0l0ZW0sIFBhc3NSZWZQdHI8RWxlbWVudD4gbmV3RWxlbWVu
dCkKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG9rZW4uYXR0cmlidXRlcygpLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IEF0dHJpYnV0ZSYgdG9rZW5BdHRyaWJ1dGUgPSB0
b2tlbi5hdHRyaWJ1dGVzKCkuYXQoaSk7Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgICAgICBpZiAodG9rZW5BdHRyaWJ1dGUubmFtZSgpLnByZWZpeCgpID09IHhtbG5zQXRvbSkK
LSAgICAgICAgICAgIG5ld0VsZW1lbnQtPnNldEF0dHJpYnV0ZU5TKFhNTE5TTmFtZXM6OnhtbG5z
TmFtZXNwYWNlVVJJLCAieG1sbnM6IiArIHRva2VuQXR0cmlidXRlLm5hbWUoKS5sb2NhbE5hbWUo
KSwgdG9rZW5BdHRyaWJ1dGUudmFsdWUoKSwgZWMpOwotICAgICAgICBlbHNlIGlmICh0b2tlbkF0
dHJpYnV0ZS5uYW1lKCkgPT0geG1sbnNBdG9tKQotICAgICAgICAgICAgbmV3RWxlbWVudC0+c2V0
QXR0cmlidXRlTlMoWE1MTlNOYW1lczo6eG1sbnNOYW1lc3BhY2VVUkksIHhtbG5zQXRvbSwgdG9r
ZW5BdHRyaWJ1dGUudmFsdWUoKSwgZWMpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFF1
YWxpZmllZE5hbWUgcU5hbWUodG9rZW5BdHRyaWJ1dGUucHJlZml4KCksIHRva2VuQXR0cmlidXRl
LmxvY2FsTmFtZSgpLCBzdGFja0l0ZW0ubmFtZXNwYWNlRm9yUHJlZml4KHRva2VuQXR0cmlidXRl
LnByZWZpeCgpLCBudWxsQXRvbSkpOwotICAgICAgICAgICAgbmV3RWxlbWVudC0+c2V0QXR0cmli
dXRlKHFOYW1lLCB0b2tlbkF0dHJpYnV0ZS52YWx1ZSgpKTsKLSAgICAgICAgfQotICAgICAgICBp
ZiAoZWMpIHsKLSAgICAgICAgICAgIG1fcGFyc2VyLT5zdG9wUGFyc2luZygpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIFhNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzWE1MRW50aXR5KGNvbnN0IEF0b21pY1hNTFRva2VuJiB0b2tlbikKLXsKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgYW1wLCAoImFtcCIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgYXBvcywgKCJhcG9zIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBndCwgKCJndCIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgbHQsICgibHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHF1b3QsICgicXVv
dCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgYW1wUywgKEFTQ0lJTGl0ZXJhbCgiJiIpKSk7Ci0gICAgREVGSU5F
X1NUQVRJQ19MT0NBTChTdHJpbmcsIGFwb3NTLCAoQVNDSUlMaXRlcmFsKCInIikpKTsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZ3RTLCAoQVNDSUlMaXRlcmFsKCI+IikpKTsKLSAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgbHRTLCAoQVNDSUlMaXRlcmFsKCI8IikpKTsK
LSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcXVvdFMsIChBU0NJSUxpdGVyYWwoIlwi
IikpKTsKLQotICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gYW1wKQotICAgICAgICBhcHBlbmRUb1Rl
eHQoYW1wUy5jaGFyYWN0ZXJzKCksIDEpOwotICAgIGVsc2UgaWYgKHRva2VuLm5hbWUoKSA9PSBh
cG9zKQotICAgICAgICBhcHBlbmRUb1RleHQoYXBvc1MuY2hhcmFjdGVycygpLCAxKTsKLSAgICBl
bHNlIGlmICh0b2tlbi5uYW1lKCkgPT0gZ3QpCi0gICAgICAgIGFwcGVuZFRvVGV4dChndFMuY2hh
cmFjdGVycygpLCAxKTsKLSAgICBlbHNlIGlmICh0b2tlbi5uYW1lKCkgPT0gbHQpCi0gICAgICAg
IGFwcGVuZFRvVGV4dChsdFMuY2hhcmFjdGVycygpLCAxKTsKLSAgICBlbHNlIGlmICh0b2tlbi5u
YW1lKCkgPT0gcXVvdCkKLSAgICAgICAgYXBwZW5kVG9UZXh0KHF1b3RTLmNoYXJhY3RlcnMoKSwg
MSk7Ci0gICAgZWxzZQotICAgICAgICBtX3BhcnNlci0+c3RvcFBhcnNpbmcoKTsKLX0KLQotdm9p
ZCBYTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0hUTUxFbnRpdHkoY29uc3QgQXRvbWljWE1MVG9rZW4m
IHRva2VuKQotewotICAgIEhUTUxFbnRpdHlTZWFyY2ggc2VhcmNoOwotICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSA9IHRva2VuLm5hbWUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG5hbWUubGVuZ3RoKCk7ICsraSkgewotICAgICAgICBzZWFyY2guYWR2YW5jZShuYW1lW2ldKTsK
LSAgICAgICAgaWYgKCFzZWFyY2guaXNFbnRpdHlQcmVmaXgoKSkgewotICAgICAgICAgICAgbV9w
YXJzZXItPnN0b3BQYXJzaW5nKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgc2VhcmNoLmFkdmFuY2UoJzsnKTsKLSAgICBpZiAoIXNlYXJjaC5pc0VudGl0eVBy
ZWZpeCgpKSB7Ci0gICAgICAgIG1fcGFyc2VyLT5zdG9wUGFyc2luZygpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIFVDaGFyMzIgZW50aXR5VmFsdWUgPSBzZWFyY2gubW9zdFJlY2VudE1h
dGNoKCktPmZpcnN0VmFsdWU7Ci0gICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gYWNjb3VudCBmb3Ig
c2Vjb25kVmFsdWUgaWYgYW55IFhNTCBlbnRpdGllcyBhcmUgbG9uZ2VyCi0gICAgLy8gdGhhbiBv
bmUgdW5pY29kZSBjaGFyYWN0ZXIuCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgLy8g
RGFyaW4gQWRsZXIgd3JpdGVzOgotICAgIC8vICAgWW91IGNhbiBzZWUgZ2l2ZW4gdGhlIGNvZGUg
YWJvdmUgdGhhdCB0aGlzIGVsc2UgaXMgZGVhZCBjb2RlLiBUaGlzIGNvZGUgaXMgaW4gYSBzdHJh
bmdlIHN0YXRlLgotICAgIC8vICAgQW5kIHRoZSByZWludGVycHJldF9jYXN0IHRvIFVDaGFyKiBt
YWtlcyB0aGUgY29kZSBsaXR0bGUtZW5kaWFuLXNwZWNpZmljLiBUaGF0IGlzIG5vdCBnb29kIQot
ICAgIGlmIChlbnRpdHlWYWx1ZSA8PSAweEZGRkYpCi0gICAgICAgIGFwcGVuZFRvVGV4dChyZWlu
dGVycHJldF9jYXN0PFVDaGFyKj4oJmVudGl0eVZhbHVlKSwgMSk7Ci0gICAgZWxzZSB7Ci0gICAg
ICAgIFVDaGFyIHV0ZjE2UGFpclsyXSA9IHsgVTE2X0xFQUQoZW50aXR5VmFsdWUpLCBVMTZfVFJB
SUwoZW50aXR5VmFsdWUpIH07Ci0gICAgICAgIGFwcGVuZFRvVGV4dCh1dGYxNlBhaXIsIDIpOwot
ICAgIH0KLX0KLQotaW5saW5lIHZvaWQgWE1MVHJlZUJ1aWxkZXI6OmFkZChQYXNzUmVmUHRyPE5v
ZGU+IG5vZGUpCi17Ci0gICAgbV9jdXJyZW50Tm9kZVN0YWNrLmxhc3QoKS5ub2RlKCktPnBhcnNl
ckFwcGVuZENoaWxkKG5vZGUuZ2V0KCkpOwotICAgIGlmICghbm9kZS0+YXR0YWNoZWQoKSkKLSAg
ICAgICAgbm9kZS0+YXR0YWNoKCk7Ci19Ci0KLXZvaWQgWE1MVHJlZUJ1aWxkZXI6OmFwcGVuZFRv
VGV4dChjb25zdCBVQ2hhciogdGV4dCwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBlbnRlclRleHQo
KTsKLQotICAgIGlmICghbV9sZWFmVGV4dCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9sZWFm
VGV4dC0+YXBwZW5kKHRleHQsIGxlbmd0aCk7Ci19Ci0KLXZvaWQgWE1MVHJlZUJ1aWxkZXI6OmVu
dGVyVGV4dCgpCi17Ci0gICAgaWYgKCFtX3Nhd0ZpcnN0RWxlbWVudCkgewotICAgICAgICAvLyBG
SVhNRTogR3VhcmFudGVlIHRoZSB0ZXh0IGlzIG9ubHkgd2hpdGVzcGFjZS4KLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmICghbV9sZWFmVGV4dCkKLSAgICAgICAgbV9sZWFmVGV4dCA9
IGFkb3B0UHRyKG5ldyBTdHJpbmdCdWlsZGVyKCkpOwotfQotCi12b2lkIFhNTFRyZWVCdWlsZGVy
OjpleGl0VGV4dCgpCi17Ci0gICAgaWYgKCFtX2xlYWZUZXh0LmdldCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBhZGQoVGV4dDo6Y3JlYXRlKG1fZG9jdW1lbnQsIG1fbGVhZlRleHQtPnRvU3Ry
aW5nKCkpKTsKLQotICAgIG1fbGVhZlRleHQuY2xlYXIoKTsKLX0KLQotYm9vbCBYTUxUcmVlQnVp
bGRlcjo6ZmFpbE9uVGV4dCgpCi17Ci0gICAgaWYgKCFtX2xlYWZUZXh0KQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLQotICAgIC8vIEZJWE1FOiBHdWFyYW50ZWUgdGhlIHRleHQgaXMgb25seSB3aGl0
ZXNwYWNlLgotCi0gICAgbV9sZWFmVGV4dC5jbGVhcigpOwotICAgIHJldHVybiB0cnVlOwotfQot
Ci1YTUxUcmVlQnVpbGRlcjo6Tm9kZVN0YWNrSXRlbTo6Tm9kZVN0YWNrSXRlbShQYXNzUmVmUHRy
PENvbnRhaW5lck5vZGU+IG4sIE5vZGVTdGFja0l0ZW0qIHBhcmVudCkKLSAgICA6IG1fbm9kZShu
KQotewotICAgIGlmICghcGFyZW50KSB7Ci0gICAgICAgIG1fc2NvcGVkTmFtZXNwYWNlcy5zZXQo
eG1sQXRvbSwgWE1MTmFtZXM6OnhtbE5hbWVzcGFjZVVSSSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBtX25hbWVzcGFjZSA9IHBhcmVudC0+bV9uYW1lc3BhY2U7Ci0gICAgbV9zY29w
ZWROYW1lc3BhY2VzID0gcGFyZW50LT5tX3Njb3BlZE5hbWVzcGFjZXM7Ci19Ci0KLWJvb2wgWE1M
VHJlZUJ1aWxkZXI6Ok5vZGVTdGFja0l0ZW06Omhhc05hbWVzcGFjZVVSSShBdG9taWNTdHJpbmcg
cHJlZml4KQotewotICAgIEFTU0VSVCghcHJlZml4LmlzTnVsbCgpKTsKLSAgICByZXR1cm4gbV9z
Y29wZWROYW1lc3BhY2VzLmNvbnRhaW5zKHByZWZpeCk7Ci19Ci0KLUF0b21pY1N0cmluZyBYTUxU
cmVlQnVpbGRlcjo6Tm9kZVN0YWNrSXRlbTo6bmFtZXNwYWNlVVJJKEF0b21pY1N0cmluZyBwcmVm
aXgpCi17Ci0gICAgQVNTRVJUKCFwcmVmaXguaXNOdWxsKCkpOwotICAgIGlmIChtX3Njb3BlZE5h
bWVzcGFjZXMuY29udGFpbnMocHJlZml4KSkKLSAgICAgICAgcmV0dXJuIG1fc2NvcGVkTmFtZXNw
YWNlcy5nZXQocHJlZml4KTsKLSAgICByZXR1cm4gbnVsbEF0b207Ci19Ci0KLXZvaWQgWE1MVHJl
ZUJ1aWxkZXI6Ok5vZGVTdGFja0l0ZW06OnNldE5hbWVzcGFjZVVSSShBdG9taWNTdHJpbmcgcHJl
Zml4LCBBdG9taWNTdHJpbmcgdXJpKQotewotICAgIG1fc2NvcGVkTmFtZXNwYWNlcy5zZXQocHJl
Zml4LCB1cmkpOwotfQotCi1BdG9taWNTdHJpbmcgWE1MVHJlZUJ1aWxkZXI6Ok5vZGVTdGFja0l0
ZW06Om5hbWVzcGFjZUZvclByZWZpeChBdG9taWNTdHJpbmcgcHJlZml4LCBBdG9taWNTdHJpbmcg
ZmFsbGJhY2spCi17Ci0gICAgQXRvbWljU3RyaW5nIHVyaSA9IGZhbGxiYWNrOwotICAgIGlmICgh
cHJlZml4LmlzTnVsbCgpICYmIGhhc05hbWVzcGFjZVVSSShwcmVmaXgpKQotICAgICAgICB1cmkg
PSBuYW1lc3BhY2VVUkkocHJlZml4KTsKLQotICAgIHJldHVybiB1cmk7Ci19Ci0KLX0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVHJlZUJ1aWxkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVHJlZUJ1aWxkZXIuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggOWM5MTg2ZThhMWRhMjI0NTc1ZDc4ZjQwODZkNjMxOTVjNjJiZTZkOS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTFRyZWVCdWlsZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09H
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
Zm5kZWYgWE1MVHJlZUJ1aWxkZXJfaAotI2RlZmluZSBYTUxUcmVlQnVpbGRlcl9oCi0KLSNpbmNs
dWRlICJUZXh0LmgiCi0jaW5jbHVkZSAiWE1MVG9rZW4uaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ29udGFpbmVyTm9k
ZTsKLWNsYXNzIERvY3VtZW50OwotY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKLWNsYXNzIE5ld1hN
TERvY3VtZW50UGFyc2VyOwotCi1jbGFzcyBYTUxUcmVlQnVpbGRlciB7Ci0gICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoWE1MVHJlZUJ1aWxkZXIpOwotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFhNTFRyZWVCdWlsZGVyPiBjcmVhdGUo
TmV3WE1MRG9jdW1lbnRQYXJzZXIqIHBhcnNlciwgRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBYTUxUcmVlQnVpbGRlcihwYXJzZXIsIGRvY3Vt
ZW50KSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFBhc3NPd25QdHI8WE1MVHJlZUJ1aWxkZXI+IGNy
ZWF0ZShOZXdYTUxEb2N1bWVudFBhcnNlciogcGFyc2VyLCBEb2N1bWVudEZyYWdtZW50KiBkb2N1
bWVudCwgRWxlbWVudCogcGFyZW50KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBYTUxUcmVlQnVpbGRlcihwYXJzZXIsIGRvY3VtZW50LCBwYXJlbnQpKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIHByb2Nlc3NUb2tlbihjb25zdCBBdG9taWNYTUxUb2tlbiYpOwotICAgIHZvaWQgZmlu
aXNoKCk7Ci0KLXByaXZhdGU6Ci0gICAgWE1MVHJlZUJ1aWxkZXIoTmV3WE1MRG9jdW1lbnRQYXJz
ZXIqLCBEb2N1bWVudCopOwotICAgIFhNTFRyZWVCdWlsZGVyKE5ld1hNTERvY3VtZW50UGFyc2Vy
KiwgRG9jdW1lbnRGcmFnbWVudCosIEVsZW1lbnQqIHBhcmVudCk7Ci0KLSAgICBjbGFzcyBOb2Rl
U3RhY2tJdGVtIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIE5vZGVTdGFja0l0ZW0oUGFzc1JlZlB0
cjxDb250YWluZXJOb2RlPiBpdGVtLCBOb2RlU3RhY2tJdGVtKiBwYXJlbnQgPSAwKTsKLQotICAg
ICAgICBib29sIGhhc05hbWVzcGFjZVVSSShBdG9taWNTdHJpbmcgcHJlZml4KTsKLSAgICAgICAg
QXRvbWljU3RyaW5nIG5hbWVzcGFjZVVSSShBdG9taWNTdHJpbmcgcHJlZml4KTsKLSAgICAgICAg
QXRvbWljU3RyaW5nIG5hbWVzcGFjZVVSSSgpIHsgcmV0dXJuIG1fbmFtZXNwYWNlOyB9Ci0gICAg
ICAgIHZvaWQgc2V0TmFtZXNwYWNlVVJJKEF0b21pY1N0cmluZyBwcmVmaXgsIEF0b21pY1N0cmlu
ZyB1cmkpOwotICAgICAgICB2b2lkIHNldE5hbWVzcGFjZVVSSShBdG9taWNTdHJpbmcgdXJpKSB7
IG1fbmFtZXNwYWNlID0gdXJpOyB9Ci0gICAgICAgIEF0b21pY1N0cmluZyBuYW1lc3BhY2VGb3JQ
cmVmaXgoQXRvbWljU3RyaW5nIHByZWZpeCwgQXRvbWljU3RyaW5nIGZhbGxiYWNrKTsKLQotICAg
ICAgICBQYXNzUmVmUHRyPENvbnRhaW5lck5vZGU+IG5vZGUoKSB7IHJldHVybiBtX25vZGU7IH0K
LSAgICAgICAgY29uc3QgQ29udGFpbmVyTm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9k
ZS5nZXQoKTsgfQotICAgICAgICB2b2lkIHNldE5vZGUoUGFzc1JlZlB0cjxDb250YWluZXJOb2Rl
PiBub2RlKSB7IG1fbm9kZSA9IG5vZGU7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIEhhc2hN
YXA8QXRvbWljU3RyaW5nLCBBdG9taWNTdHJpbmc+IG1fc2NvcGVkTmFtZXNwYWNlczsKLSAgICAg
ICAgUmVmUHRyPENvbnRhaW5lck5vZGU+IG1fbm9kZTsKLSAgICAgICAgQXRvbWljU3RyaW5nIG1f
bmFtZXNwYWNlOwotICAgIH07Ci0KLSAgICB2b2lkIHB1c2hDdXJyZW50Tm9kZShjb25zdCBOb2Rl
U3RhY2tJdGVtJik7Ci0gICAgdm9pZCBwb3BDdXJyZW50Tm9kZSgpOwotICAgIHZvaWQgY2xvc2VF
bGVtZW50KFBhc3NSZWZQdHI8RWxlbWVudD4pOwotCi0gICAgdm9pZCBwcm9jZXNzUHJvY2Vzc2lu
Z0luc3RydWN0aW9uKGNvbnN0IEF0b21pY1hNTFRva2VuJik7Ci0gICAgdm9pZCBwcm9jZXNzWE1M
RGVjbGFyYXRpb24oY29uc3QgQXRvbWljWE1MVG9rZW4mKTsKLSAgICB2b2lkIHByb2Nlc3NET0NU
WVBFKGNvbnN0IEF0b21pY1hNTFRva2VuJik7Ci0gICAgdm9pZCBwcm9jZXNzU3RhcnRUYWcoY29u
c3QgQXRvbWljWE1MVG9rZW4mKTsKLSAgICB2b2lkIHByb2Nlc3NFbmRUYWcoY29uc3QgQXRvbWlj
WE1MVG9rZW4mKTsKLSAgICB2b2lkIHByb2Nlc3NDREFUQShjb25zdCBBdG9taWNYTUxUb2tlbiYp
OwotICAgIHZvaWQgcHJvY2Vzc0NoYXJhY3Rlcihjb25zdCBBdG9taWNYTUxUb2tlbiYpOwotICAg
IHZvaWQgcHJvY2Vzc0NvbW1lbnQoY29uc3QgQXRvbWljWE1MVG9rZW4mKTsKLSAgICB2b2lkIHBy
b2Nlc3NFbnRpdHkoY29uc3QgQXRvbWljWE1MVG9rZW4mKTsKLQotICAgIHZvaWQgcHJvY2Vzc05h
bWVzcGFjZXMoY29uc3QgQXRvbWljWE1MVG9rZW4mLCBOb2RlU3RhY2tJdGVtJik7Ci0gICAgdm9p
ZCBwcm9jZXNzQXR0cmlidXRlcyhjb25zdCBBdG9taWNYTUxUb2tlbiYsIE5vZGVTdGFja0l0ZW0m
LCBQYXNzUmVmUHRyPEVsZW1lbnQ+IG5ld0VsZW1lbnQpOwotICAgIHZvaWQgcHJvY2Vzc1hNTEVu
dGl0eShjb25zdCBBdG9taWNYTUxUb2tlbiYpOwotICAgIHZvaWQgcHJvY2Vzc0hUTUxFbnRpdHko
Y29uc3QgQXRvbWljWE1MVG9rZW4mKTsKLQotICAgIGlubGluZSB2b2lkIGFkZChQYXNzUmVmUHRy
PE5vZGU+KTsKLQotICAgIHZvaWQgYXBwZW5kVG9UZXh0KGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJz
LCBzaXplX3QgbGVuZ3RoKTsKLSAgICB2b2lkIGVudGVyVGV4dCgpOwotICAgIHZvaWQgZXhpdFRl
eHQoKTsKLSAgICBib29sIGZhaWxPblRleHQoKTsKLQotICAgIEF0b21pY1N0cmluZyBuYW1lc3Bh
Y2VGb3JQcmVmaXgoQXRvbWljU3RyaW5nIHByZWZpeCwgQXRvbWljU3RyaW5nIGZhbGxiYWNrKTsK
LQotICAgIERvY3VtZW50KiBtX2RvY3VtZW50OwotICAgIE5ld1hNTERvY3VtZW50UGFyc2VyKiBt
X3BhcnNlcjsKLQotICAgIGJvb2wgbV9pc1hIVE1MOwotCi0gICAgYm9vbCBtX3Nhd0ZpcnN0RWxl
bWVudDsKLSAgICBWZWN0b3I8Tm9kZVN0YWNrSXRlbT4gbV9jdXJyZW50Tm9kZVN0YWNrOwotCi0g
ICAgT3duUHRyPFN0cmluZ0J1aWxkZXI+IG1fbGVhZlRleHQ7Ci19OwotCi19Ci0KLSNlbmRpZiAv
LyBYTUxUcmVlQnVpbGRlcl9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183906</attachid>
            <date>2013-01-22 00:09:04 -0800</date>
            <delta_ts>2013-01-22 01:17:49 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-100710-20130122000558.patch</filename>
            <type>text/plain</type>
            <size>150141</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMzg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDU2NmYxZjVlNWQ3MjQz
YThmODg1YTZjOWM1MmVhNjIwNThkOWVhOS4uM2FiMjAzNTMzMzFlMGUyMWM3OGNlMDgyZTY4MDYy
MTlmY2I2YTBkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEzLTAxLTIxICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRU5BQkxFKE5FV19YTUwpIGlz
bid0IHVzZWQgYnkgYW55b25lIGFuZCBubyBvbmUgaXMgYWN0aXZlbHkgd29ya2luZyBvbiBpdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNzEwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgQXMgZGlzY3Vzc2Vk
IG9uIHdlYmtpdC1kZXYKKyAgICAgICAgPGh0dHA6Ly9saXN0cy53ZWJraXQub3JnL3BpcGVybWFp
bC93ZWJraXQtZGV2LzIwMTItQXVndXN0LzAyMjEwMy5odG1sPiwKKyAgICAgICAgRU5BQkxFKE5F
V19YTUwpIGlzbid0IHVzZWQgYnkgYW55b25lIGFuZCBubyBvbmUgaXMgYWN0aXZlbHkgd29ya2lu
ZyBvbgorICAgICAgICBpdC4gV2Ugc2hvdWxkIHJlbW92ZSBpdCBmcm9tIHRoZSBjb2RlIGJhc2Ug
Zm9yIHRoZSB0aW1lIGJlaW5nLiBJZiBmb2xrcworICAgICAgICB3YW50IHRvIHdvcmsgb24gaXQg
YWdhaW4sIHdlIGNhbiByZXN0b3JlIGl0IGZyb20gU1ZOIGhpc3RvcnkuCisKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2Vi
Q29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcik6
CisgICAgICAgICogZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRGcmFnbWVudDo6cGFyc2VYTUwpOgorICAgICAgICAqIHhtbC9wYXJzZXIvTmV3WE1M
RG9jdW1lbnRQYXJzZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHhtbC9wYXJzZXIvTmV3WE1M
RG9jdW1lbnRQYXJzZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTENoYXJh
Y3RlclJlZmVyZW5jZVBhcnNlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogeG1sL3BhcnNlci9Y
TUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiB4bWwvcGFy
c2VyL1hNTFRva2VuLmg6IFJlbW92ZWQuCisgICAgICAgICogeG1sL3BhcnNlci9YTUxUb2tlbml6
ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MVG9rZW5pemVyLmg6IFJl
bW92ZWQuCisgICAgICAgICogeG1sL3BhcnNlci9YTUxUcmVlQnVpbGRlci5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogeG1sL3BhcnNlci9YTUxUcmVlQnVpbGRlci5oOiBSZW1vdmVkLgorCiAyMDEz
LTAxLTIxICBNaWNoYcWCIFBha3XFgmEgdmVsIFJ1dGthICA8bS5wYWt1bGFAc2Ftc3VuZy5jb20+
CiAKICAgICAgICAgW0VGTF0gTWlzc2luZyBjb250ZXh0IG1lbnVzIHN0cmluZ3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDQwZTliNDY4YzliMDUyYjhlNDVkYzA0ODE3NzE4ZTc5
YmMzMTgwNjguLmE0Y2ExYjBiYzhhNjU5Yzc4ZTcxYzhkMDVmOWI4MzVlNDUwOTRhYjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDY2NiwyMCArNDY2NiwxMSBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNl
LmggXAogCVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5pemVyQmFzZS5oIFwK
IAlTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01hcmt1cFRva2VuaXplcklubGluZXMuaCBcCi0J
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9OZXdYTUxEb2N1bWVudFBhcnNlci5jcHAgXAotCVNv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTmV3WE1MRG9jdW1lbnRQYXJzZXIuaCBcCi0JU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9YTUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIuY3BwIFwKLQlT
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNlci5oIFwK
IAlTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5oIFwKLQlTb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL1hNTFRva2VuaXplci5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MVG9rZW5pemVyLmggXAotCVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9r
ZW4uaCBcCi0JU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUcmVlQnVpbGRlci5jcHAgXAot
CVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVHJlZUJ1aWxkZXIuaCBcCiAJU291cmNlL1dl
YkNvcmUveG1sL0RPTVBhcnNlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3htbC9ET01QYXJzZXIu
aCBcCiAJU291cmNlL1dlYkNvcmUveG1sL05hdGl2ZVhQYXRoTlNSZXNvbHZlci5jcHAgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKaW5kZXggY2Y3MDIwMzllZjY3YmRkZjlhYzBiMWZjYmU1NTUxMTk5NmFlNjE4Ny4uM2E5
ZDhmOThmM2NiNmE0ZTRmNDIxODZiMDUxYTQ2NmU0MWI0MzE4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0x
MzAyLDExICsxMzAyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgeG1sL1hQYXRoVXRpbC5jcHAgXAog
ICAgIHhtbC9YUGF0aFZhbHVlLmNwcCBcCiAgICAgeG1sL1hQYXRoVmFyaWFibGVSZWZlcmVuY2Uu
Y3BwIFwKLSAgICB4bWwvcGFyc2VyL05ld1hNTERvY3VtZW50UGFyc2VyLmNwcCBcCi0gICAgeG1s
L3BhcnNlci9YTUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIuY3BwIFwKICAgICB4bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyLmNwcCBcCi0gICAgeG1sL3BhcnNlci9YTUxUb2tlbml6ZXIuY3Bw
IFwKLSAgICB4bWwvcGFyc2VyL1hNTFRyZWVCdWlsZGVyLmNwcAogCiBIRUFERVJTICs9IFwKICAg
ICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggZTQ2YjgxNjU4YTgyMTdhZThhYTVkZWIyN2NiZTk4OTdkMjQ4NGVjNy4uY2Y3YjU1
ZmU3NWJiYzI5NGZlZTdlN2U1MTY3OTY4ZGY2NmViYmMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
MjY0NCwyMCArMjY0NCwxMSBAQAogICAgICAgICAgICAgJ3htbC9wYXJzZXIvTWFya3VwVG9rZW5C
YXNlLmgnLAogICAgICAgICAgICAgJ3htbC9wYXJzZXIvTWFya3VwVG9rZW5pemVyQmFzZS5oJywK
ICAgICAgICAgICAgICd4bWwvcGFyc2VyL01hcmt1cFRva2VuaXplcklubGluZXMuaCcsCi0gICAg
ICAgICAgICAneG1sL3BhcnNlci9OZXdYTUxEb2N1bWVudFBhcnNlci5jcHAnLAotICAgICAgICAg
ICAgJ3htbC9wYXJzZXIvTmV3WE1MRG9jdW1lbnRQYXJzZXIuaCcsCi0gICAgICAgICAgICAneG1s
L3BhcnNlci9YTUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIuY3BwJywKLSAgICAgICAgICAgICd4
bWwvcGFyc2VyL1hNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNlci5oJywKICAgICAgICAgICAgICd4
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCcsCiAgICAgICAgICAgICAneG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlci5oJywKICAgICAgICAgICAgICd4bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyTGlieG1sMi5jcHAnLAogICAgICAgICAgICAgJ3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXJTY29wZS5jcHAnLAogICAgICAgICAgICAgJ3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXJTY29wZS5oJywKLSAgICAgICAgICAgICd4bWwvcGFyc2VyL1hNTFRva2VuaXplci5jcHAn
LAotICAgICAgICAgICAgJ3htbC9wYXJzZXIvWE1MVG9rZW5pemVyLmgnLAotICAgICAgICAgICAg
J3htbC9wYXJzZXIvWE1MVG9rZW4uaCcsCi0gICAgICAgICAgICAneG1sL3BhcnNlci9YTUxUcmVl
QnVpbGRlci5jcHAnLAotICAgICAgICAgICAgJ3htbC9wYXJzZXIvWE1MVHJlZUJ1aWxkZXIuaCcs
CiAgICAgICAgICAgICAneG1sL0RPTVBhcnNlci5jcHAnLAogICAgICAgICAgICAgJ3htbC9ET01Q
YXJzZXIuaCcsCiAgICAgICAgICAgICAneG1sL05hdGl2ZVhQYXRoTlNSZXNvbHZlci5jcHAnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBjMjVk
ZjJlMGM3MjkzODk2OGI0ODNkOTY5NTk1Yzk5NzY2Mzk5NzI3Li40NDkyNmE0YzQwMTQxOTUxYmEx
YmI2ZDhlYjk4OGE4Y2EwN2Y2N2UyIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtNDkwNjksMTAgKzQ5MDY5LDYgQEAKIAkJCQlOYW1lPSJwYXJz
ZXIiCiAJCQkJPgogCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5ceG1sXHBhcnNlclxD
aGFyYWN0ZXJSZWZlcmVuY2VJbmxpbmVzLmgiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZp
bGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlx4bWxccGFyc2VyXE1hcmt1cFRva2VuQmFzZS5oIgog
CQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtNDkwODUsMTQgKzQ5MDgxLDYgQEAKIAkJCQkJPgogCQkJ
CTwvRmlsZT4KIAkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHhtbFxwYXJzZXJcTmV3
WE1MRG9jdW1lbnRQYXJzZXIuY3BwIgotCQkJCQk+Ci0JCQkJPC9GaWxlPgotCQkJCTxGaWxlCi0J
CQkJCVJlbGF0aXZlUGF0aD0iLi5ceG1sXHBhcnNlclxOZXdYTUxEb2N1bWVudFBhcnNlci5oIgot
CQkJCQk+Ci0JCQkJPC9GaWxlPgotCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ceG1s
XHBhcnNlclxYTUxEb2N1bWVudFBhcnNlci5jcHAiCiAJCQkJCT4KIAkJCQkJPEZpbGVDb25maWd1
cmF0aW9uCkBAIC00OTIwOCwyMiArNDkxOTYsNiBAQAogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHht
bFxwYXJzZXJcWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgot
CQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5ceG1sXHBhcnNlclxYTUxUb2tlbi5oIgot
CQkJCQk+Ci0JCQkJPC9GaWxlPgotCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5ceG1s
XHBhcnNlclxYTUxUb2tlbml6ZXIuaCIKLQkJCQkJPgotCQkJCTwvRmlsZT4KLQkJCQk8RmlsZQot
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHhtbFxwYXJzZXJcWE1MVHJlZUJ1aWxkZXIuY3BwIgotCQkJ
CQk+Ci0JCQkJPC9GaWxlPgotCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5ceG1sXHBh
cnNlclxYTUxUcmVlQnVpbGRlci5oIgotCQkJCQk+Ci0JCQkJPC9GaWxlPgogCQkJPC9GaWx0ZXI+
CiAJCTwvRmlsdGVyPgogCQk8RmlsdGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWVhZjZlZjEwYTcxMjMwMDYyZWZiOTdlZjI0
ZTg5ZDY3ZGFmMjM2MC4uODk4YzIzNDZkZDcyMDU0OTJjMTczODhmZDNkNzU0OTE5OGQ2NGEyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNDUsMTQgKzQ1LDggQEAKIC8qIEVuZCBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAq
LwogCiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwotCQkwMDAyMkU2OTEzQ0UxQkJB
MDAyODJENUIgLyogQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDAwMjJFNjgxM0NFMUJCQTAwMjgy
RDVCIC8qIENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZXMuaCAqLzsgfTsKLQkJMDAwMkVD
NTgxM0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRva2VuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMDAyRUM1NTEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9r
ZW4uaCAqLzsgfTsKLQkJMDAwMkVDNTkxM0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRva2VuaXplci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMDAyRUM1
NjEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9rZW5pemVyLmNwcCAqLzsgfTsKLQkJMDAwMkVDNUEx
M0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRva2VuaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDAwMkVDNTcxM0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRv
a2VuaXplci5oICovOyB9OwogCQkwMDE0NjI4QTEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNj
ZXNzRW50cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDAxNDYyODgxMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmNwcCAqLzsg
fTsKIAkJMDAxNDYyOEIxMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMDE0NjI4OTEwM0NE
MURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnkuaCAqLzsgfTsKLQkJMDAzNUVCQkIxM0Yw
NkZGMjAwQTU2MDg5IC8qIFhNTFRyZWVCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMDM1RUJCQTEzRjA2RkYyMDBBNTYwODkgLyogWE1MVHJl
ZUJ1aWxkZXIuaCAqLzsgfTsKLQkJMDAzNUVCQkUxM0YwNzEzQzAwQTU2MDg5IC8qIFhNTFRyZWVC
dWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDAwMzVFQkJEMTNGMDcxM0MwMEE1NjA4OSAvKiBYTUxUcmVlQnVpbGRlci5jcHAgKi87IH07CiAJ
CTAwM0YxRkVBMTFFNkFCNDMwMDgyNThEOSAvKiBVc2VyQ29udGVudFR5cGVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMDNGMUZFOTExRTZBQjQzMDA4
MjU4RDkgLyogVXNlckNvbnRlbnRUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTAwQTYyOUMxMTNEMEJFQzcwMDUwQUM1MiAvKiBNYXJrdXBU
b2tlbkJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDAwQTYyOUMwMTNEMEJFQzcwMDUwQUM1MiAvKiBNYXJrdXBUb2tlbkJhc2UuaCAqLzsgfTsKIAkJ
MDBCOTMxODcxM0JBOERCMzAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwQjkzMTgxMTNCQTg2N0Yw
MDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlci5jcHAgKi87IH07CkBAIC02MiwxMCArNTYsNiBA
QAogCQkwMEI5MzE4QzEzQkE4RENDMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBCOTMxODYx
M0JBODY3RjAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyU2NvcGUuaCAqLzsgfTsKIAkJMDBD
NjBFM0YxM0Q3NkQ3RTAwOTJBMjc1IC8qIE1hcmt1cFRva2VuaXplcklubGluZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwQzYwRTNFMTNENzZEN0Uw
MDkyQTI3NSAvKiBNYXJrdXBUb2tlbml6ZXJJbmxpbmVzLmggKi87IH07CiAJCTAwQzYwRTQyMTNE
Nzk3QUUwMDkyQTI3NSAvKiBNYXJrdXBUb2tlbml6ZXJCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMEM2MEU0MTEzRDc5N0FFMDA5MkEyNzUgLyog
TWFya3VwVG9rZW5pemVyQmFzZS5oICovOyB9OwotCQkwMENBOTNCMjEzQzY2OTE2MDBGN0ZFOTUg
LyogTmV3WE1MRG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDAwQ0E5M0IxMTNDNjY5MTYwMEY3RkU5NSAvKiBOZXdYTUxEb2N1bWVu
dFBhcnNlci5oICovOyB9OwotCQkwMENBOTNCNTEzQzY2OTdDMDBGN0ZFOTUgLyogTmV3WE1MRG9j
dW1lbnRQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDBDQTkzQjQxM0M2Njk3QzAwRjdGRTk1IC8qIE5ld1hNTERvY3VtZW50UGFyc2VyLmNw
cCAqLzsgfTsKLQkJMDBEMDQ2NEExM0M0RDE0NTAwMzI2RkNDIC8qIFhNTENoYXJhY3RlclJlZmVy
ZW5jZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwMEQwNDY0ODEzQzREMTQ1MDAzMjZGQ0MgLyogWE1MQ2hhcmFjdGVyUmVmZXJlbmNlUGFy
c2VyLmNwcCAqLzsgfTsKLQkJMDBEMDQ2NEIxM0M0RDE0NTAwMzI2RkNDIC8qIFhNTENoYXJhY3Rl
clJlZmVyZW5jZVBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDBEMDQ2NDkxM0M0RDE0NTAwMzI2RkNDIC8qIFhNTENoYXJhY3RlclJlZmVyZW5j
ZVBhcnNlci5oICovOyB9OwogCQkwMUQzQ0Y4MjE0QkQwQTMwMDBGRTk5NzAgLyogV2ViR0xDb250
ZXh0R3JvdXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDFEM0NGN0MxNEJEMEEzMDAwRkU5OTcwIC8qIFdlYkdMQ29udGV4dEdyb3VwLmNwcCAqLzsg
fTsKIAkJMDFEM0NGODMxNEJEMEEzMDAwRkU5OTcwIC8qIFdlYkdMQ29udGV4dEdyb3VwLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMUQzQ0Y3RDE0QkQw
QTMwMDBGRTk5NzAgLyogV2ViR0xDb250ZXh0R3JvdXAuaCAqLzsgfTsKIAkJMDFEM0NGODQxNEJE
MEEzMDAwRkU5OTcwIC8qIFdlYkdMQ29udGV4dE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMUQzQ0Y3RTE0QkQwQTMwMDBGRTk5NzAgLyog
V2ViR0xDb250ZXh0T2JqZWN0LmNwcCAqLzsgfTsKQEAgLTI0ODcsMTMgKzI0NzcsMTMgQEAKIAkJ
ODU1OUYxMTYwQUM5QkU5OTAwQTM0MzlDIC8qIERPTVNWR01ldGFkYXRhRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU1OUYxMTAwQUM5QkU5
OTAwQTM0MzlDIC8qIERPTVNWR01ldGFkYXRhRWxlbWVudC5oICovOyB9OwogCQk4NTU5RjExNzBB
QzlCRTk5MDBBMzQzOUMgLyogRE9NU1ZHTWV0YWRhdGFFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODU1OUYxMTEwQUM5QkU5OTAwQTM0MzlD
IC8qIERPTVNWR01ldGFkYXRhRWxlbWVudC5tbSAqLzsgfTsKIAkJODU1OUYxMTgwQUM5QkU5OTAw
QTM0MzlDIC8qIERPTVNWR1N0eWxlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODU1OUYxMTIwQUM5QkU5OTAwQTM0MzlDIC8qIERPTVNWR1N0
eWxlRWxlbWVudC5oICovOyB9OwotCQk4NTU5RjExOTBBQzlCRTk5MDBBMzQzOUMgLyogRE9NU1ZH
U3R5bGVFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODU1OUYxMTMwQUM5QkU5OTAwQTM0MzlDIC8qIERPTVNWR1N0eWxlRWxlbWVudC5tbSAq
LzsgfTsKLQkJODU1OUYxMjIwQUM5QkY0MjAwQTM0MzlDIC8qIERPTVNWR1N0eWxlRWxlbWVudElu
dGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NTU5RjExRjBBQzlCRjQyMDBBMzQzOUMgLyogRE9NU1ZHU3R5bGVFbGVtZW50SW50ZXJuYWwuaCAq
LzsgfTsKIAkJODU1OUYxMTgwQUM5QkU5OTAwQTM0MzlEIC8qIERPTVNWR1N0eWxlZEVsZW1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NTlGMTEy
MEFDOUJFOTkwMEEzNDM5RCAvKiBET01TVkdTdHlsZWRFbGVtZW50LmggKi87IH07CisJCTg1NTlG
MTE5MEFDOUJFOTkwMEEzNDM5QyAvKiBET01TVkdTdHlsZUVsZW1lbnQubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTU5RjExMzBBQzlCRTk5MDBBMzQz
OUMgLyogRE9NU1ZHU3R5bGVFbGVtZW50Lm1tICovOyB9OwogCQk4NTU5RjExOTBBQzlCRTk5MDBB
MzQzOUQgLyogRE9NU1ZHU3R5bGVkRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NTlGMTEzMEFDOUJFOTkwMEEzNDM5RCAvKiBET01TVkdT
dHlsZWRFbGVtZW50Lm1tICovOyB9OwotCQk4NTU5RjEyMjBBQzlCRjQyMDBBMzQzOUQgLyogRE9N
U1ZHU3R5bGVkRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NTU5RjExRjBBQzlCRjQyMDBBMzQzOUQgLyogRE9NU1ZHU3R5bGVk
RWxlbWVudEludGVybmFsLmggKi87IH07CiAJCTg1NTlGMTIwMEFDOUJGNDIwMEEzNDM5QyAvKiBE
T01TVkdBbmltYXRlZE51bWJlckludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NTU5RjExRDBBQzlCRjQxMDBBMzQzOUMgLyogRE9NU1ZHQW5p
bWF0ZWROdW1iZXJJbnRlcm5hbC5oICovOyB9OwogCQk4NTU5RjEyMTBBQzlCRjQyMDBBMzQzOUMg
LyogRE9NU1ZHTWV0YWRhdGFFbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NTlGMTFFMEFDOUJGNDEwMEEzNDM5QyAvKiBET01T
VkdNZXRhZGF0YUVsZW1lbnRJbnRlcm5hbC5oICovOyB9OworCQk4NTU5RjEyMjBBQzlCRjQyMDBB
MzQzOUMgLyogRE9NU1ZHU3R5bGVFbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NTlGMTFGMEFDOUJGNDIwMEEzNDM5QyAvKiBE
T01TVkdTdHlsZUVsZW1lbnRJbnRlcm5hbC5oICovOyB9OworCQk4NTU5RjEyMjBBQzlCRjQyMDBB
MzQzOUQgLyogRE9NU1ZHU3R5bGVkRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTU5RjExRjBBQzlCRjQyMDBBMzQzOUQgLyog
RE9NU1ZHU3R5bGVkRWxlbWVudEludGVybmFsLmggKi87IH07CiAJCTg1NUQzNThBMEFENzA3MzEw
MDE5QUFDNyAvKiBET01SR0JDb2xvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODU1RDM1ODkwQUQ3MDczMTAwMTlBQUM3IC8qIERPTVJHQkNvbG9yLmgg
Ki87IH07CiAJCTg1NUQzNThEMEFENzA3Q0MwMDE5QUFDNyAvKiBET01SR0JDb2xvci5oIGluIENv
cHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODU1RDM1ODkwQUQ3MDczMTAwMTlBQUM3IC8qIERPTVJHQkNvbG9yLmggKi87IH07CiAJCTg1NkM4
QUU0MEE5MTI2NDkwMDVDNjg3QiAvKiBET01PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1NkM4QUUyMEE5MTI2NDkwMDVDNjg3QiAvKiBET01P
YmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMzY5Nyw2ICszNjg3LDcgQEAKIAkJOTdCMUYwMkYxM0IwMjVEMjAwRjUxMDNGIC8qIFNoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzNzU2OUUwMjEzQUYxNzJDMDBDREJBOEUgLyogU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXIuaCAqLzsgfTsKIAkJOTdCMzhFMjcxNTFDNDI3MTAwNDYyMkU5IC8qIERPTVdpbmRvd05v
dGlmaWNhdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk3QjM4RTI0MTUxQzQyNjQwMDQ2MjJFOSAvKiBET01XaW5kb3dOb3RpZmljYXRpb25zLmgg
Ki87IH07CiAJCTk3QjM4RTI4MTUxQzQyNzMwMDQ2MjJFOSAvKiBET01XaW5kb3dOb3RpZmljYXRp
b25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3
QjM4RTIzMTUxQzQyNjQwMDQ2MjJFOSAvKiBET01XaW5kb3dOb3RpZmljYXRpb25zLmNwcCAqLzsg
fTsKKwkJOTdCOEZGRDExNkFFN0Y5NjAwMzgzODhEIC8qIENoYXJhY3RlclJlZmVyZW5jZVBhcnNl
cklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk3QjhGRkNGMTZBRTdGOTIwMDM4Mzg4RCAvKiBDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxp
bmVzLmggKi87IH07CiAJCTk3QkM2OURBMTUwNUYwNzYwMDFCNzRBQyAvKiBBYnN0cmFjdERhdGFi
YXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3
QkM2OUQ2MTUwNUYwNzYwMDFCNzRBQyAvKiBBYnN0cmFjdERhdGFiYXNlLmNwcCAqLzsgfTsKIAkJ
OTdCQzY5REIxNTA1RjA3NjAwMUI3NEFDIC8qIEFic3RyYWN0RGF0YWJhc2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUQ3MTUwNUYwNzYwMDFC
NzRBQyAvKiBBYnN0cmFjdERhdGFiYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTdCQzY5REMxNTA1RjA3NjAwMUI3NEFDIC8qIENoYW5nZVZl
cnNpb25XcmFwcGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk3QkM2OUQ4MTUwNUYwNzYwMDFCNzRBQyAvKiBDaGFuZ2VWZXJzaW9uV3JhcHBlci5j
cHAgKi87IH07CkBAIC00ODcwLDE0ICs0ODYxLDE0IEBACiAJCUIyMjI3QUE5MEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdTdG9wRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjIyMjc5MTMwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1N0b3BFbGVtZW50
LmggKi87IH07CiAJCUIyMjI3QUFCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTdHJpbmdMaXN0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTE1
MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTdHJpbmdMaXN0LmNwcCAqLzsgfTsKIAkJQjIyMjdBQUMw
RDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTE2MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdT
dHJpbmdMaXN0LmggKi87IH07Ci0JCUIyMjI3QUI3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTdHls
ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjIyMjc5MjEwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1N0eWxlRWxlbWVudC5jcHAgKi87IH07
Ci0JCUIyMjI3QUI4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTIyMEQwMEJGMjEw
MDcxQjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuaCAqLzsgfTsKLQkJQjIyMjdBQjcwRDAwQkYyMjAw
NzFCNzgzIC8qIFNWR1N0eWxlZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5MjEwRDAwQkYyMTAwNzFCNzgzIC8qIFNWR1N0eWxl
ZEVsZW1lbnQuY3BwICovOyB9OwotCQlCMjIyN0FCODBEMDBCRjIyMDA3MUI3ODMgLyogU1ZHU3R5
bGVkRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjIyMjc5MjIwRDAwQkYyMTAwNzFCNzgzIC8qIFNWR1N0eWxlZEVsZW1lbnQuaCAqLzsgfTsK
IAkJQjIyMjdBQjMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5
MUQwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQuY3BwICovOyB9
OwogCQlCMjIyN0FCNDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5
MUUwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQuaCAqLzsgfTsK
IAkJQjIyMjdBQjUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIy
MjI3OTFGMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5j
cHAgKi87IH07CiAJCUIyMjI3QUI2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjIyMjc5MjAwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50LmggKi87IH07CisJCUIyMjI3QUI3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTdHlsZUVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjIyMjc5MjEwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1N0eWxlRWxlbWVudC5jcHAgKi87IH07CisJ
CUIyMjI3QUI3MEQwMEJGMjIwMDcxQjc4MyAvKiBTVkdTdHlsZWRFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTIxMEQwMEJGMjEw
MDcxQjc4MyAvKiBTVkdTdHlsZWRFbGVtZW50LmNwcCAqLzsgfTsKKwkJQjIyMjdBQjgwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR1N0eWxlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5MjIwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1N0eWxl
RWxlbWVudC5oICovOyB9OworCQlCMjIyN0FCODBEMDBCRjIyMDA3MUI3ODMgLyogU1ZHU3R5bGVk
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjIyMjc5MjIwRDAwQkYyMTAwNzFCNzgzIC8qIFNWR1N0eWxlZEVsZW1lbnQuaCAqLzsgfTsKIAkJ
QjIyMjdBQkEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1NWR0VsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5MjQwRDAwQkYyMTAwNzFC
NzgyIC8qIFNWR1NWR0VsZW1lbnQuY3BwICovOyB9OwogCQlCMjIyN0FCQjBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHU1ZHRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjIyMjc5MjUwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1NWR0VsZW1lbnQuaCAq
LzsgfTsKIAkJQjIyMjdBQkQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N3aXRjaEVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5Mjcw
RDAwQkYyMTAwNzFCNzgyIC8qIFNWR1N3aXRjaEVsZW1lbnQuY3BwICovOyB9OwpAQCAtNTI4OSw4
ICs1MjgwLDggQEAKIAkJQjJGQTNERjgwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHU3RyaW5nTGlz
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkZB
M0QxMDBBQjc1QTZFMDAwRTVBQzQgLyogSlNTVkdTdHJpbmdMaXN0LmNwcCAqLzsgfTsKIAkJQjJG
QTNERjkwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHU3RyaW5nTGlzdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJGQTNEMTEwQUI3NUE2RTAwMEU1QUM0
IC8qIEpTU1ZHU3RyaW5nTGlzdC5oICovOyB9OwogCQlCMkZBM0RGQTBBQjc1QTZGMDAwRTVBQzQg
LyogSlNTVkdTdHlsZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjJGQTNEMTIwQUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHU3R5bGVFbGVt
ZW50LmNwcCAqLzsgfTsKLQkJQjJGQTNERkIwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHU3R5bGVF
bGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MkZBM0QxMzBBQjc1QTZFMDAwRTVBQzQgLyogSlNTVkdTdHlsZUVsZW1lbnQuaCAqLzsgfTsKIAkJ
QjJGQTNERkEwQUI3NUE2RjAwMEU1QUM1IC8qIEpTU1ZHU3R5bGVkRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkZBM0QxMjBBQjc1QTZF
MDAwRTVBQzUgLyogSlNTVkdTdHlsZWRFbGVtZW50LmNwcCAqLzsgfTsKKwkJQjJGQTNERkIwQUI3
NUE2RjAwMEU1QUM0IC8qIEpTU1ZHU3R5bGVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkZBM0QxMzBBQjc1QTZFMDAwRTVBQzQgLyogSlNT
VkdTdHlsZUVsZW1lbnQuaCAqLzsgfTsKIAkJQjJGQTNERkIwQUI3NUE2RjAwMEU1QUM1IC8qIEpT
U1ZHU3R5bGVkRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjJGQTNEMTMwQUI3NUE2RTAwMEU1QUM1IC8qIEpTU1ZHU3R5bGVkRWxlbWVudC5o
ICovOyB9OwogCQlCMkZBM0RGQzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdTVkdFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyRkEzRDE0
MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1NWR0VsZW1lbnQuY3BwICovOyB9OwogCQlCMkZBM0RG
RDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdTVkdFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkZBM0QxNTBBQjc1QTZGMDAwRTVBQzQgLyog
SlNTVkdTVkdFbGVtZW50LmggKi87IH07CkBAIC03MTY0LDEwICs3MTU1LDEwIEBACiAJCQkJQTgw
RjNCNUMwQ0NEQ0UyNDAwMkREOTkwIC8qIERPTVNWR1N0b3BFbGVtZW50SW50ZXJuYWwuaCBpbiBD
b3B5IEdlbmVyYXRlZCBIZWFkZXJzICovLAogCQkJCUE4RjQ2QjgxMENCMjBBOUQwMDNBOTY3MCAv
KiBET01TVkdTdHJpbmdMaXN0LmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLywKIAkJCQlB
ODBGM0I4MzBDQ0RDRTI0MDAyREQ5OTAgLyogRE9NU1ZHU3RyaW5nTGlzdEludGVybmFsLmggaW4g
Q29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLywKLQkJCQlBOEY0NkFFMDBDQjIwQTlEMDAzQTk2NzAg
LyogRE9NU1ZHU3R5bGVFbGVtZW50LmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLywKLQkJ
CQlBODBGM0JBNjBDQ0RDRTI0MDAyREQ5OTAgLyogRE9NU1ZHU3R5bGVFbGVtZW50SW50ZXJuYWwu
aCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovLAogCQkJCUE4RjQ2QUUwMENCMjBBOUQwMDNB
OTY3MSAvKiBET01TVkdTdHlsZWRFbGVtZW50LmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAq
LywKIAkJCQlBODBGM0JBNjBDQ0RDRTI0MDAyREQ5OTEgLyogRE9NU1ZHU3R5bGVkRWxlbWVudElu
dGVybmFsLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLywKKwkJCQlBOEY0NkFFMDBDQjIw
QTlEMDAzQTk2NzAgLyogRE9NU1ZHU3R5bGVFbGVtZW50LmggaW4gQ29weSBHZW5lcmF0ZWQgSGVh
ZGVycyAqLywKKwkJCQlBODBGM0JBNjBDQ0RDRTI0MDAyREQ5OTAgLyogRE9NU1ZHU3R5bGVFbGVt
ZW50SW50ZXJuYWwuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovLAogCQkJCUE4RjQ2QTk4
MENCMjBBOUQwMDNBOTY3MCAvKiBET01TVkdTVkdFbGVtZW50LmggaW4gQ29weSBHZW5lcmF0ZWQg
SGVhZGVycyAqLywKIAkJCQlBODBGM0I3QzBDQ0RDRTI0MDAyREQ5OTAgLyogRE9NU1ZHU1ZHRWxl
bWVudEludGVybmFsLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLywKIAkJCQlBOEY0NkFE
OTBDQjIwQTlEMDAzQTk2NzAgLyogRE9NU1ZHU3dpdGNoRWxlbWVudC5oIGluIENvcHkgR2VuZXJh
dGVkIEhlYWRlcnMgKi8sCkBAIC03MjM3LDE0ICs3MjI4LDggQEAKIC8qIEVuZCBQQlhDb3B5Rmls
ZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0
aW9uICovCi0JCTAwMDIyRTY4MTNDRTFCQkEwMDI4MkQ1QiAvKiBDaGFyYWN0ZXJSZWZlcmVuY2VQ
YXJzZXJJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENoYXJhY3Rl
clJlZmVyZW5jZVBhcnNlcklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MDAwMkVDNTUxM0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRva2VuLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFhNTFRva2VuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTAwMDJFQzU2MTNDM0Y2N0QwMDA0MEQ0NyAvKiBYTUxUb2tlbml6ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWE1MVG9rZW5pemVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMDAwMkVDNTcxM0MzRjY3RDAwMDQwRDQ3IC8qIFhNTFRva2VuaXpl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYTUxUb2tlbml6ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDAxNDYyODgxMDNDRDFERTAwMEIyMERCIC8qIE9y
aWdpbkFjY2Vzc0VudHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE9yaWdpbkFjY2Vzc0VudHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDAx
NDYyODkxMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9yaWdpbkFjY2Vzc0VudHJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTAwMzVFQkJBMTNGMDZGRjIwMEE1NjA4OSAvKiBYTUxUcmVlQnVpbGRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYTUxUcmVlQnVpbGRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwMDM1RUJCRDEzRjA3MTNDMDBBNTYwODkgLyog
WE1MVHJlZUJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
WE1MVHJlZUJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMDNGMUZF
OTExRTZBQjQzMDA4MjU4RDkgLyogVXNlckNvbnRlbnRUeXBlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBVc2VyQ29udGVudFR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTAwQTYyOUMwMTNEMEJFQzcwMDUwQUM1MiAvKiBNYXJrdXBUb2tlbkJhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFya3VwVG9rZW5CYXNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwQjkzMTgxMTNCQTg2N0YwMDM1QTk0OCAvKiBYTUxE
b2N1bWVudFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBY
TUxEb2N1bWVudFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MjU0
LDEwICs3MjM5LDYgQEAKIAkJMDBCOTMxODYxM0JBODY3RjAwMzVBOTQ4IC8qIFhNTERvY3VtZW50
UGFyc2VyU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWE1MRG9jdW1l
bnRQYXJzZXJTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMEM2MEUzRTEz
RDc2RDdFMDA5MkEyNzUgLyogTWFya3VwVG9rZW5pemVySW5saW5lcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNYXJrdXBUb2tlbml6ZXJJbmxpbmVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTAwQzYwRTQxMTNENzk3QUUwMDkyQTI3NSAvKiBNYXJrdXBUb2tl
bml6ZXJCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmt1cFRva2Vu
aXplckJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDBDQTkzQjExM0M2Njkx
NjAwRjdGRTk1IC8qIE5ld1hNTERvY3VtZW50UGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE5ld1hNTERvY3VtZW50UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTAwQ0E5M0I0MTNDNjY5N0MwMEY3RkU5NSAvKiBOZXdYTUxEb2N1bWVudFBhcnNl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXdYTUxEb2N1bWVu
dFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTAwRDA0NjQ4MTNDNEQx
NDUwMDMyNkZDQyAvKiBYTUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWE1MQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDBEMDQ2NDkxM0M0RDE0NTAwMzI2RkND
IC8qIFhNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBYTUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDFEM0NGN0MxNEJEMEEzMDAwRkU5OTcwIC8qIFdlYkdMQ29udGV4dEdy
b3VwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkdMQ29udGV4
dEdyb3VwLmNwcDsgcGF0aCA9IGNhbnZhcy9XZWJHTENvbnRleHRHcm91cC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAxRDNDRjdEMTRCRDBBMzAwMEZFOTk3MCAvKiBXZWJHTENv
bnRleHRHcm91cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJHTENvbnRl
eHRHcm91cC5oOyBwYXRoID0gY2FudmFzL1dlYkdMQ29udGV4dEdyb3VwLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTAxRDNDRjdFMTRCRDBBMzAwMEZFOTk3MCAvKiBXZWJHTENvbnRl
eHRPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViR0xD
b250ZXh0T2JqZWN0LmNwcDsgcGF0aCA9IGNhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTg4NiwxMyArOTg2NywxMyBAQAogCQk4NTU5
RjExMDBBQzlCRTk5MDBBMzQzOUMgLyogRE9NU1ZHTWV0YWRhdGFFbGVtZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01TVkdNZXRhZGF0YUVsZW1lbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODU1OUYxMTEwQUM5QkU5OTAwQTM0MzlDIC8qIERPTVNW
R01ldGFkYXRhRWxlbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBET01TVkdNZXRhZGF0YUVsZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg1NTlGMTEyMEFDOUJFOTkwMEEzNDM5QyAvKiBET01TVkdTdHlsZUVsZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVNWR1N0eWxlRWxlbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4NTU5RjExMzBBQzlCRTk5MDBBMzQzOUMgLyogRE9N
U1ZHU3R5bGVFbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IERPTVNWR1N0eWxlRWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
ODU1OUYxMUYwQUM5QkY0MjAwQTM0MzlDIC8qIERPTVNWR1N0eWxlRWxlbWVudEludGVybmFsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01TVkdTdHlsZUVsZW1lbnRJbnRl
cm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NTU5RjExMjBBQzlCRTk5MDBB
MzQzOUQgLyogRE9NU1ZHU3R5bGVkRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NU1ZHU3R5bGVkRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4NTU5RjExMzBBQzlCRTk5MDBBMzQzOUMgLyogRE9NU1ZHU3R5bGVFbGVtZW50Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTVNWR1N0eWxlRWxlbWVu
dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODU1OUYxMTMwQUM5QkU5OTAwQTM0
MzlEIC8qIERPTVNWR1N0eWxlZEVsZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRE9NU1ZHU3R5bGVkRWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJODU1OUYxMUYwQUM5QkY0MjAwQTM0MzlEIC8qIERPTVNWR1N0eWxlZEVsZW1l
bnRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NU1ZHU3R5
bGVkRWxlbWVudEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1NTlG
MTFEMEFDOUJGNDEwMEEzNDM5QyAvKiBET01TVkdBbmltYXRlZE51bWJlckludGVybmFsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01TVkdBbmltYXRlZE51bWJlckludGVy
bmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1NTlGMTFFMEFDOUJGNDEwMEEz
NDM5QyAvKiBET01TVkdNZXRhZGF0YUVsZW1lbnRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRE9NU1ZHTWV0YWRhdGFFbGVtZW50SW50ZXJuYWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODU1OUYxMUYwQUM5QkY0MjAwQTM0MzlDIC8qIERPTVNW
R1N0eWxlRWxlbWVudEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBET01TVkdTdHlsZUVsZW1lbnRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4NTU5RjExRjBBQzlCRjQyMDBBMzQzOUQgLyogRE9NU1ZHU3R5bGVkRWxlbWVudEludGVy
bmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01TVkdTdHlsZWRFbGVt
ZW50SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODU1RDM1ODkwQUQ3
MDczMTAwMTlBQUM3IC8qIERPTVJHQkNvbG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBET01SR0JDb2xvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NTZD
OEFFMjBBOTEyNjQ5MDA1QzY4N0IgLyogRE9NT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBET01PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODU2QzhBRTMwQTkxMjY0OTAwNUM2ODdCIC8qIERPTU9iamVjdC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01PYmplY3QubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMTA4OSw2ICsxMTA3MCw3IEBACiAJCTk3QjM4RTIzMTUxQzQyNjQwMDQ2
MjJFOSAvKiBET01XaW5kb3dOb3RpZmljYXRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERPTVdpbmRvd05vdGlmaWNhdGlvbnMuY3BwOyBwYXRoID0gTW9kdWxl
cy9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5N0IzOEUyNDE1MUM0MjY0MDA0NjIyRTkgLyogRE9NV2luZG93Tm90
aWZpY2F0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBET01XaW5kb3dO
b3RpZmljYXRpb25zLmg7IHBhdGggPSBNb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90
aWZpY2F0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0IzOEUyNTE1MUM0
MjY0MDA0NjIyRTkgLyogRE9NV2luZG93Tm90aWZpY2F0aW9ucy5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBuYW1lID0gRE9NV2luZG93Tm90aWZpY2F0aW9ucy5pZGw7IHBhdGggPSBNb2R1bGVzL25vdGlm
aWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTk3QjhGRkNGMTZBRTdGOTIwMDM4Mzg4RCAvKiBDaGFyYWN0ZXJSZWZlcmVuY2VQ
YXJzZXJJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENoYXJhY3Rl
clJlZmVyZW5jZVBhcnNlcklubGluZXMuaDsgcGF0aCA9IC4uLy4uLy4uLy4uLy4uLy4uL3N2bi93
ZWJraXQvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9DaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXJJ
bmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM2OUQ2MTUwNUYwNzYw
MDFCNzRBQyAvKiBBYnN0cmFjdERhdGFiYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IEFic3RyYWN0RGF0YWJhc2UuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRh
YmFzZS9BYnN0cmFjdERhdGFiYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTdCQzY5RDcxNTA1RjA3NjAwMUI3NEFDIC8qIEFic3RyYWN0RGF0YWJhc2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWJzdHJhY3REYXRhYmFzZS5oOyBwYXRoID0gTW9kdWxl
cy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTk3QkM2OUQ4MTUwNUYwNzYwMDFCNzRBQyAvKiBDaGFuZ2VWZXJzaW9uV3JhcHBlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDaGFuZ2VWZXJzaW9uV3Jh
cHBlci5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNpb25XcmFwcGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyMzI1LDE2ICsxMjMwNywxNiBA
QAogCQlCMjIyNzkxNTBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU3RyaW5nTGlzdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHU3RyaW5nTGlzdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3OTE2MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdT
dHJpbmdMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdTdHJpbmdM
aXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3OTE3MEQwMEJGMjEwMDcx
Qjc4MiAvKiBTVkdTdHJpbmdMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHU3Ry
aW5nTGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyMjI3OTIxMEQwMEJG
MjEwMDcxQjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNWR1N0eWxlRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUIyMjI3OTIyMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1N0eWxlRWxlbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjIyNzkyMzBEMDBCRjIxMDA3MUI3ODIgLyogU1ZH
U3R5bGVFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHU3R5bGVFbGVtZW50
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjIyMjc5MjEwRDAwQkYyMTAwNzFC
NzgzIC8qIFNWR1N0eWxlZEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNWR1N0eWxlZEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlCMjIyNzkyMjBEMDBCRjIxMDA3MUI3ODMgLyogU1ZHU3R5bGVkRWxlbWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHU3R5bGVkRWxlbWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlCMjIyNzkyMzBEMDBCRjIxMDA3MUI3ODMgLyogU1ZHU3R5
bGVkRWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNWR1N0eWxlZEVsZW1lbnQu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjIyNzkxRDBEMDBCRjIxMDA3MUI3
ODIgLyogU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3OTFFMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTdHls
ZWRMb2NhdGFibGVFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdTdHlsZWRMb2NhdGFibGVFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUIyMjI3OTFGMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjIy
NzkyMDBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyMjI3OTIxMEQwMEJGMjEw
MDcxQjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNWR1N0eWxlRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUIyMjI3OTIxMEQwMEJGMjEwMDcxQjc4MyAvKiBTVkdTdHlsZWRFbGVtZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdTdHlsZWRFbGVtZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjIyMjc5MjIwRDAwQkYyMTAwNzFCNzgy
IC8qIFNWR1N0eWxlRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U1ZHU3R5bGVFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyMjI3OTIy
MEQwMEJGMjEwMDcxQjc4MyAvKiBTVkdTdHlsZWRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTVkdTdHlsZWRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUIyMjI3OTIzMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTVkdTdHlsZUVsZW1lbnQuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlCMjIyNzkyMzBEMDBCRjIxMDA3MUI3ODMgLyogU1ZHU3R5bGVk
RWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNWR1N0eWxlZEVsZW1lbnQuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjIyNzkyNDBEMDBCRjIxMDA3MUI3ODIg
LyogU1ZHU1ZHRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU1ZHU1ZHRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3
OTI1MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTVkdFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTVkdTVkdFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUIyMjI3OTI2MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTVkdFbGVtZW50LmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHU1ZHRWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMjc3NCw4ICsxMjc1Niw4IEBACiAJCUIyRkEzRDEwMEFCNzVBNkUwMDBF
NUFDNCAvKiBKU1NWR1N0cmluZ0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTU1ZHU3RyaW5nTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUIyRkEzRDExMEFCNzVBNkUwMDBFNUFDNCAvKiBKU1NWR1N0cmluZ0xpc3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHU3RyaW5nTGlzdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCMkZBM0QxMjBBQjc1QTZFMDAwRTVBQzQgLyogSlNTVkdTdHls
ZUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZH
U3R5bGVFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjJGQTNEMTMw
QUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHU3R5bGVFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1NWR1N0eWxlRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCMkZBM0QxMjBBQjc1QTZFMDAwRTVBQzUgLyogSlNTVkdTdHlsZWRFbGVtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NWR1N0eWxlZEVs
ZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCMkZBM0QxMzBBQjc1QTZF
MDAwRTVBQzQgLyogSlNTVkdTdHlsZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTU1ZHU3R5bGVFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUIyRkEzRDEzMEFCNzVBNkUwMDBFNUFDNSAvKiBKU1NWR1N0eWxlZEVsZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHU3R5bGVkRWxlbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkZBM0QxNDBBQjc1QTZGMDAwRTVBQzQgLyogSlNT
VkdTVkdFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1NWR1NWR0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkZBM0Qx
NTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdTVkdFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1NWR1NWR0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE0NDQ2LDI0ICsxNDQyOCwxNSBAQAogCQkwMEI5MzE4MDEzQkE4NjdGMDAzNUE5
NDggLyogcGFyc2VyICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
LQkJCQkwMDAyMkU2ODEzQ0UxQkJBMDAyODJENUIgLyogQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2Vy
SW5saW5lcy5oICovLAorCQkJCTk3QjhGRkNGMTZBRTdGOTIwMDM4Mzg4RCAvKiBDaGFyYWN0ZXJS
ZWZlcmVuY2VQYXJzZXJJbmxpbmVzLmggKi8sCiAJCQkJMDBBNjI5QzAxM0QwQkVDNzAwNTBBQzUy
IC8qIE1hcmt1cFRva2VuQmFzZS5oICovLAogCQkJCTAwQzYwRTQxMTNENzk3QUUwMDkyQTI3NSAv
KiBNYXJrdXBUb2tlbml6ZXJCYXNlLmggKi8sCiAJCQkJMDBDNjBFM0UxM0Q3NkQ3RTAwOTJBMjc1
IC8qIE1hcmt1cFRva2VuaXplcklubGluZXMuaCAqLywKLQkJCQkwMENBOTNCNDEzQzY2OTdDMDBG
N0ZFOTUgLyogTmV3WE1MRG9jdW1lbnRQYXJzZXIuY3BwICovLAotCQkJCTAwQ0E5M0IxMTNDNjY5
MTYwMEY3RkU5NSAvKiBOZXdYTUxEb2N1bWVudFBhcnNlci5oICovLAotCQkJCTAwRDA0NjQ4MTND
NEQxNDUwMDMyNkZDQyAvKiBYTUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIuY3BwICovLAotCQkJ
CTAwRDA0NjQ5MTNDNEQxNDUwMDMyNkZDQyAvKiBYTUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIu
aCAqLywKIAkJCQkwMEI5MzE4MTEzQkE4NjdGMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXIu
Y3BwICovLAogCQkJCTAwQjkzMTgyMTNCQTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNl
ci5oICovLAogCQkJCTAwQjkzMTgzMTNCQTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNl
ckxpYnhtbDIuY3BwICovLAogCQkJCTAwQjkzMTg1MTNCQTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1
bWVudFBhcnNlclNjb3BlLmNwcCAqLywKIAkJCQkwMEI5MzE4NjEzQkE4NjdGMDAzNUE5NDggLyog
WE1MRG9jdW1lbnRQYXJzZXJTY29wZS5oICovLAotCQkJCTAwMDJFQzU1MTNDM0Y2N0QwMDA0MEQ0
NyAvKiBYTUxUb2tlbi5oICovLAotCQkJCTAwMDJFQzU2MTNDM0Y2N0QwMDA0MEQ0NyAvKiBYTUxU
b2tlbml6ZXIuY3BwICovLAotCQkJCTAwMDJFQzU3MTNDM0Y2N0QwMDA0MEQ0NyAvKiBYTUxUb2tl
bml6ZXIuaCAqLywKLQkJCQkwMDM1RUJCRDEzRjA3MTNDMDBBNTYwODkgLyogWE1MVHJlZUJ1aWxk
ZXIuY3BwICovLAotCQkJCTAwMzVFQkJBMTNGMDZGRjIwMEE1NjA4OSAvKiBYTUxUcmVlQnVpbGRl
ci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBwYXJzZXI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwpAQCAtMTY5MTcsMTIgKzE2ODkwLDEyIEBACiAJCQkJODVENzlBRDIwQUNBMTdFQjAwRjAy
RkM1IC8qIERPTVNWR1N0cmluZ0xpc3QuaCAqLywKIAkJCQk4NUQ3OUFEMzBBQ0ExN0VCMDBGMDJG
QzUgLyogRE9NU1ZHU3RyaW5nTGlzdC5tbSAqLywKIAkJCQlBOEU1NDNFNjBDQTlEMUMxMDA5N0Qw
OUIgLyogRE9NU1ZHU3RyaW5nTGlzdEludGVybmFsLmggKi8sCi0JCQkJODU1OUYxMTIwQUM5QkU5
OTAwQTM0MzlDIC8qIERPTVNWR1N0eWxlRWxlbWVudC5oICovLAotCQkJCTg1NTlGMTEzMEFDOUJF
OTkwMEEzNDM5QyAvKiBET01TVkdTdHlsZUVsZW1lbnQubW0gKi8sCi0JCQkJQThFNTQzRTMwQ0E5
RDFDMTAwOTdEMDlCIC8qIERPTVNWR1N0eWxlRWxlbWVudEludGVybmFsLmggKi8sCiAJCQkJODU1
OUYxMTIwQUM5QkU5OTAwQTM0MzlEIC8qIERPTVNWR1N0eWxlZEVsZW1lbnQuaCAqLywKIAkJCQk4
NTU5RjExMzBBQzlCRTk5MDBBMzQzOUQgLyogRE9NU1ZHU3R5bGVkRWxlbWVudC5tbSAqLywKIAkJ
CQlBOEU1NDNFMzBDQTlEMUMxMDA5N0QwOUMgLyogRE9NU1ZHU3R5bGVkRWxlbWVudEludGVybmFs
LmggKi8sCisJCQkJODU1OUYxMTIwQUM5QkU5OTAwQTM0MzlDIC8qIERPTVNWR1N0eWxlRWxlbWVu
dC5oICovLAorCQkJCTg1NTlGMTEzMEFDOUJFOTkwMEEzNDM5QyAvKiBET01TVkdTdHlsZUVsZW1l
bnQubW0gKi8sCisJCQkJQThFNTQzRTMwQ0E5RDFDMTAwOTdEMDlCIC8qIERPTVNWR1N0eWxlRWxl
bWVudEludGVybmFsLmggKi8sCiAJCQkJODVDRTFBOUEwQURBQzcwODAwM0JCREVBIC8qIERPTVNW
R1NWR0VsZW1lbnQuaCAqLywKIAkJCQk4NUNFMUE5QjBBREFDNzA4MDAzQkJERUEgLyogRE9NU1ZH
U1ZHRWxlbWVudC5tbSAqLywKIAkJCQlBOEU1NDNFMTBDQTlEMUMxMDA5N0QwOUIgLyogRE9NU1ZH
U1ZHRWxlbWVudEludGVybmFsLmggKi8sCkBAIC0xNzQxMyw4ICsxNzM4Niw4IEBACiAJCQkJODU5
RDYyQ0UwQUQ4ODkyNzAwMDEyOTk1IC8qIERPTVNWR1NldEVsZW1lbnRJbnRlcm5hbC5oICovLAog
CQkJCTg1OUQ2MkNGMEFEODg5MjcwMDAxMjk5NSAvKiBET01TVkdTdG9wRWxlbWVudEludGVybmFs
LmggKi8sCiAJCQkJODVENzlBREYwQUNBMTg4NDAwRjAyRkM1IC8qIERPTVNWR1N0cmluZ0xpc3RJ
bnRlcm5hbC5oICovLAotCQkJCTg1NTlGMTFGMEFDOUJGNDIwMEEzNDM5QyAvKiBET01TVkdTdHls
ZUVsZW1lbnRJbnRlcm5hbC5oICovLAogCQkJCTg1NTlGMTFGMEFDOUJGNDIwMEEzNDM5RCAvKiBE
T01TVkdTdHlsZWRFbGVtZW50SW50ZXJuYWwuaCAqLywKKwkJCQk4NTU5RjExRjBBQzlCRjQyMDBB
MzQzOUMgLyogRE9NU1ZHU3R5bGVFbGVtZW50SW50ZXJuYWwuaCAqLywKIAkJCQk4NUNFMUFBMDBB
REFDNzUyMDAzQkJERUEgLyogRE9NU1ZHU1ZHRWxlbWVudEludGVybmFsLmggKi8sCiAJCQkJODU5
RDYyRDAwQUQ4ODkyNzAwMDEyOTk1IC8qIERPTVNWR1N3aXRjaEVsZW1lbnRJbnRlcm5hbC5oICov
LAogCQkJCTg1OUQ2MkQxMEFEODg5MjcwMDAxMjk5NSAvKiBET01TVkdTeW1ib2xFbGVtZW50SW50
ZXJuYWwuaCAqLywKQEAgLTE5MjUxLDEwICsxOTIyNCwxMCBAQAogCQkJCUIyRkEzRDBGMEFCNzVB
NkUwMDBFNUFDNCAvKiBKU1NWR1N0b3BFbGVtZW50LmggKi8sCiAJCQkJQjJGQTNEMTAwQUI3NUE2
RTAwMEU1QUM0IC8qIEpTU1ZHU3RyaW5nTGlzdC5jcHAgKi8sCiAJCQkJQjJGQTNEMTEwQUI3NUE2
RTAwMEU1QUM0IC8qIEpTU1ZHU3RyaW5nTGlzdC5oICovLAotCQkJCUIyRkEzRDEyMEFCNzVBNkUw
MDBFNUFDNCAvKiBKU1NWR1N0eWxlRWxlbWVudC5jcHAgKi8sCi0JCQkJQjJGQTNEMTMwQUI3NUE2
RTAwMEU1QUM0IC8qIEpTU1ZHU3R5bGVFbGVtZW50LmggKi8sCiAJCQkJQjJGQTNEMTIwQUI3NUE2
RTAwMEU1QUM1IC8qIEpTU1ZHU3R5bGVkRWxlbWVudC5jcHAgKi8sCiAJCQkJQjJGQTNEMTMwQUI3
NUE2RTAwMEU1QUM1IC8qIEpTU1ZHU3R5bGVkRWxlbWVudC5oICovLAorCQkJCUIyRkEzRDEyMEFC
NzVBNkUwMDBFNUFDNCAvKiBKU1NWR1N0eWxlRWxlbWVudC5jcHAgKi8sCisJCQkJQjJGQTNEMTMw
QUI3NUE2RTAwMEU1QUM0IC8qIEpTU1ZHU3R5bGVFbGVtZW50LmggKi8sCiAJCQkJQjJGQTNEMTQw
QUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHU1ZHRWxlbWVudC5jcHAgKi8sCiAJCQkJQjJGQTNEMTUw
QUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHU1ZHRWxlbWVudC5oICovLAogCQkJCUIyRkEzRDE2MEFC
NzVBNkYwMDBFNUFDNCAvKiBKU1NWR1N3aXRjaEVsZW1lbnQuY3BwICovLApAQCAtMTk3MzYsOCAr
MTk3MDksNiBAQAogCQlCMUFENEU3NzEzQTEyQTcyMDA4NDZCMjcgLyogdHJhY2sgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUYxMjE3MUYzMTZBOEJDNjMw
MDAwNTNDQSAvKiBXZWJWVFRFbGVtZW50LmNwcCAqLywKLQkJCQlGMTIxNzFGNDE2QThCQzYzMDAw
MDUzQ0EgLyogV2ViVlRURWxlbWVudC5oICovLAogCQkJCTA3OTQxNzhGMTY2RTg1NUYwMDk0MTZD
MiAvKiBJbmJhbmRUZXh0VHJhY2suY3BwICovLAogCQkJCTA3OTQxNzkwMTY2RTg1NUYwMDk0MTZD
MiAvKiBJbmJhbmRUZXh0VHJhY2suaCAqLywKIAkJCQk5NzU5RTkzNDE0RUYxQ0Y4MDAyNkEyREQg
LyogTG9hZGFibGVUZXh0VHJhY2suY3BwICovLApAQCAtMTk3NjEsNiArMTk3MzIsOCBAQAogCQkJ
CTA3MDMzNEQwMTQ1OUZGQUMwMDhEOEQ0NSAvKiBUcmFja0V2ZW50LmNwcCAqLywKIAkJCQkwNzAz
MzREMTE0NTlGRkFDMDA4RDhENDUgLyogVHJhY2tFdmVudC5oICovLAogCQkJCTA3MDMzNEQyMTQ1
OUZGQUMwMDhEOEQ0NSAvKiBUcmFja0V2ZW50LmlkbCAqLywKKwkJCQlGMTIxNzFGMzE2QThCQzYz
MDAwMDUzQ0EgLyogV2ViVlRURWxlbWVudC5jcHAgKi8sCisJCQkJRjEyMTcxRjQxNkE4QkM2MzAw
MDA1M0NBIC8qIFdlYlZUVEVsZW1lbnQuaCAqLywKIAkJCQk1RDIxQTgwMDEzRUNFNURGMDBCQjcw
NjQgLyogV2ViVlRUUGFyc2VyLmNwcCAqLywKIAkJCQk1RDIxQTgwMTEzRUNFNURGMDBCQjcwNjQg
LyogV2ViVlRUUGFyc2VyLmggKi8sCiAJCQkJQjEwQjY5N0QxNDBDMTc0MDAwQkMxQzI2IC8qIFdl
YlZUVFRva2VuLmggKi8sCkBAIC0yMDE5MCw5ICsyMDE2Myw2IEBACiAJCQkJQjIyMjc5MTUwRDAw
QkYyMTAwNzFCNzgyIC8qIFNWR1N0cmluZ0xpc3QuY3BwICovLAogCQkJCUIyMjI3OTE2MEQwMEJG
MjEwMDcxQjc4MiAvKiBTVkdTdHJpbmdMaXN0LmggKi8sCiAJCQkJQjIyMjc5MTcwRDAwQkYyMTAw
NzFCNzgyIC8qIFNWR1N0cmluZ0xpc3QuaWRsICovLAotCQkJCUIyMjI3OTIxMEQwMEJGMjEwMDcx
Qjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuY3BwICovLAotCQkJCUIyMjI3OTIyMEQwMEJGMjEwMDcx
Qjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuaCAqLywKLQkJCQlCMjIyNzkyMzBEMDBCRjIxMDA3MUI3
ODIgLyogU1ZHU3R5bGVFbGVtZW50LmlkbCAqLywKIAkJCQlCMjIyNzkyMTBEMDBCRjIxMDA3MUI3
ODMgLyogU1ZHU3R5bGVkRWxlbWVudC5jcHAgKi8sCiAJCQkJQjIyMjc5MjIwRDAwQkYyMTAwNzFC
NzgzIC8qIFNWR1N0eWxlZEVsZW1lbnQuaCAqLywKIAkJCQlCMjIyNzkyMzBEMDBCRjIxMDA3MUI3
ODMgLyogU1ZHU3R5bGVkRWxlbWVudC5pZGwgKi8sCkBAIC0yMDIwMCw2ICsyMDE3MCw5IEBACiAJ
CQkJQjIyMjc5MUUwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQu
aCAqLywKIAkJCQlCMjIyNzkxRjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQuY3BwICovLAogCQkJCUIyMjI3OTIwMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oICovLAorCQkJCUIyMjI3OTIxMEQwMEJGMjEwMDcx
Qjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuY3BwICovLAorCQkJCUIyMjI3OTIyMEQwMEJGMjEwMDcx
Qjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuaCAqLywKKwkJCQlCMjIyNzkyMzBEMDBCRjIxMDA3MUI3
ODIgLyogU1ZHU3R5bGVFbGVtZW50LmlkbCAqLywKIAkJCQlCMjIyNzkyNDBEMDBCRjIxMDA3MUI3
ODIgLyogU1ZHU1ZHRWxlbWVudC5jcHAgKi8sCiAJCQkJQjIyMjc5MjUwRDAwQkYyMTAwNzFCNzgy
IC8qIFNWR1NWR0VsZW1lbnQuaCAqLywKIAkJCQlCMjIyNzkyNjBEMDBCRjIxMDA3MUI3ODIgLyog
U1ZHU1ZHRWxlbWVudC5pZGwgKi8sCkBAIC0yMzA5NCw3ICsyMzA2Nyw3IEBACiAJCQkJRkQzMTVG
RkYxMkIwMjY3NjAwQzFBMzU5IC8qIENoYW5uZWxNZXJnZXJOb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRDMxNjAwMjEyQjAyNjc2MDBDMUEzNTkgLyogQ2hhbm5lbFNwbGl0dGVyTm9kZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNjU1MEI2QTAwOTlERjAyNzAwOTBENzgxIC8qIENoYXJhY3RlckRh
dGEuaCBpbiBIZWFkZXJzICovLAotCQkJCTAwMDIyRTY5MTNDRTFCQkEwMDI4MkQ1QiAvKiBDaGFy
YWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5N0I4RkZE
MTE2QUU3Rjk2MDAzODM4OEQgLyogQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBMkEwRDAwNkMxRDAwRUY2RjI2IC8qIENoYXJzZXREYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RCMjEyNTFGMTJEMDAzRUYyNjkgLyogQ2hlY2ti
b3hJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUEwMEI3MjFBMTFERTY0MjgwMDhBQjlG
RiAvKiBDaGVja2VkSW50LmggaW4gSGVhZGVycyAqLywKQEAgLTIzMTkyLDYgKzIzMTY1LDcgQEAK
IAkJCQk2NTBGNTNEQzA5RDE1RERBMDBDOUIwQzggLyogQ1NTR3JhbW1hci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkIzMDU2QzIxNjlFNURBQzAwOTZBMjMyIC8qIENTU0dyb3VwaW5nUnVsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkM3NzJCM0MwQzRFQTkxRTAwODMyODVGIC8qIENTU0hlbHBlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRkI0OUMzOUQxNjc4NDk0NzAwN0ZGQjVEIC8qIENTU0hvc3RS
dWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzIzRUU5MjBEQUVEMkJDMDA5RkRDOTEgLyogQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5M0U2MDAxNTFBOTlG
MjAwMDY2RjA2IC8qIENTU0ltYWdlU2V0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2
Q0ZBMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NJbWFnZVZhbHVlLmggaW4gSGVhZGVycyAqLywKQEAg
LTIzODcwLDEwICsyMzg0NCwxMCBAQAogCQkJCTg1OUQ2MkU0MEFEODg5MjcwMDAxMjk5NSAvKiBE
T01TVkdTdG9wRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUQ3OUFEQTBB
Q0ExN0VCMDBGMDJGQzUgLyogRE9NU1ZHU3RyaW5nTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODVENzlBRTAwQUNBMTg4NDAwRjAyRkM1IC8qIERPTVNWR1N0cmluZ0xpc3RJbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJODU1OUYxMTgwQUM5QkU5OTAwQTM0MzlDIC8qIERPTVNWR1N0eWxl
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODU1OUYxMjIwQUM5QkY0MjAwQTM0MzlDIC8q
IERPTVNWR1N0eWxlRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTU5RjEx
ODBBQzlCRTk5MDBBMzQzOUQgLyogRE9NU1ZHU3R5bGVkRWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODU1OUYxMjIwQUM5QkY0MjAwQTM0MzlEIC8qIERPTVNWR1N0eWxlZEVsZW1lbnRJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODU1OUYxMTgwQUM5QkU5OTAwQTM0MzlDIC8qIERP
TVNWR1N0eWxlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODU1OUYxMjIwQUM5QkY0MjAw
QTM0MzlDIC8qIERPTVNWR1N0eWxlRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NUNFMUE5QzBBREFDNzA4MDAzQkJERUEgLyogRE9NU1ZHU1ZHRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODVDRTFBQTEwQURBQzc1MjAwM0JCREVBIC8qIERPTVNWR1NWR0VsZW1lbnRJ
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU5RDYyQUUwQUQ4ODhFRjAwMDEyOTk1IC8q
IERPTVNWR1N3aXRjaEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ5MzUsOCArMjQ5MDks
OCBAQAogCQkJCUIyRkEzREY1MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1NldEVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUIyRkEzREY3MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1N0b3BF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0RGOTBBQjc1QTZGMDAwRTVBQzQgLyog
SlNTVkdTdHJpbmdMaXN0LmggaW4gSGVhZGVycyAqLywKLQkJCQlCMkZBM0RGQjBBQjc1QTZGMDAw
RTVBQzQgLyogSlNTVkdTdHlsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREZC
MEFCNzVBNkYwMDBFNUFDNSAvKiBKU1NWR1N0eWxlZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCUIyRkEzREZCMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1N0eWxlRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjJGQTNERkQwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHU1ZHRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNERkYwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZH
U3dpdGNoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNFMDEwQUI3NUE2RjAwMEU1
QUM0IC8qIEpTU1ZHU3ltYm9sRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTE2NSw3ICsy
NTEzOSw2IEBACiAJCQkJNTlDMjdGMDcxMzhEMjhDRjAwNzlCN0UyIC8qIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTdGQTYxOTBEREEzQjNBMDAyOEY4QTUgLyog
TmV0d29ya1N0YXRlTm90aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxM0VGMzQ0MTY4NEVD
RjQwMDM0QzgzRiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAotCQkJ
CTAwQ0E5M0IyMTNDNjY5MTYwMEY3RkU5NSAvKiBOZXdYTUxEb2N1bWVudFBhcnNlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkNFRjQzREQwRTY3NDAxMjAwMUMxMjg3IC8qIE5pbmVQaWVjZUltYWdl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDExNUI1MjA5Rjg0QjcxMDBDQTRGQzEgLyogTm9kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODU0RkU3MzEwQTIyOTdCRTAwNThEN0FEIC8qIE5vZGVGaWx0
ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjU5NDksMTAgKzI1OTIyLDEwIEBACiAJCQkJMDhDQTNE
NDQxMjg5NEEzODAwRkZGMjYwIC8qIFNWR1N0YXRpY1Byb3BlcnR5V2l0aFBhcmVudFRlYXJPZmYu
aCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUE5MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTdG9w
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBQUMwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR1N0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovLAotCQkJCUIyMjI3QUI4MEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUI4MEQw
MEJGMjIwMDcxQjc4MyAvKiBTVkdTdHlsZWRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MjIyN0FCNDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBQjYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N0eWxlZFRy
YW5zZm9ybWFibGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlCMjIyN0FCODBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHU3R5bGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FC
QjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU1ZHRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjIyMjdBQkUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N3aXRjaEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyMjI3QUMxMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTeW1ib2xFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTI2MTkyLDYgKzI2MTY1LDcgQEAKIAkJCQkwRkNGMzMyRDBGMkI5
QTI1MDA0QjY3OTUgLyogV2ViVGlsZWRMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q4MjAz
MEExMzk1QUI2QTAwRjk1NkM2IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEODIwMzBDMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxz
Y3JlZW5IVURXaW5kb3dDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlGMTIxNzFGNjE2
QThDRjBCMDAwMDUzQ0EgLyogV2ViVlRURWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUQy
MUE4MDMxM0VDRTVERjAwQkI3MDY0IC8qIFdlYlZUVFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjEwQjY5ODAxNDBDMTc0MDAwQkMxQzI2IC8qIFdlYlZUVFRva2VuLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMTBCNjk4MjE0MEMxNzQwMDBCQzFDMjYgLyogV2ViVlRUVG9rZW5pemVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTI2MjM2LDcgKzI2MjEwLDYgQEAKIAkJCQk5QkFGM0IyNDEyQzFBMzk4
MDAwMTRCRjEgLyogV3JpdGluZ0RpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ0NzZB
QTgxNURDNEJCMTAwMzA1REIyIC8qIFdyaXRpbmdNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2
NTY1ODIwMjA5RDE1MDhEMDAwRTYxRDcgLyogWExpbmtOYW1lcy5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJMDBEMDQ2NEIxM0M0RDE0NTAwMzI2RkNDIC8qIFhNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDBCOTMxODgxM0JBOERCQTAwMzVBOTQ4IC8qIFhNTERv
Y3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwMEI5MzE4QzEzQkE4RENDMDAzNUE5
NDggLyogWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTlDMjgw
NDYxMzhEQzI0MTAwNzlCN0UyIC8qIFhNTEVycm9ycy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjI0
OCw5ICsyNjIyMSw2IEBACiAJCQkJQTgzM0M4MEQwQTJDRjI1NjAwRDU3NjY0IC8qIFhNTE5hbWVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTVBMzZENzExMDQ1NzIwMDBCN0I2MzkgLyogWE1MTlNO
YW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDRTUzRUIwQThEMThFNzAwMjI5NDdEIC8qIFhN
TFNlcmlhbGl6ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTAwMDJFQzU4MTNDM0Y2N0QwMDA0MEQ0
NyAvKiBYTUxUb2tlbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDAwMkVDNUExM0MzRjY3RDAwMDQw
RDQ3IC8qIFhNTFRva2VuaXplci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDAzNUVCQkIxM0YwNkZG
MjAwQTU2MDg5IC8qIFhNTFRyZWVCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1OTA1QURD
MDEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFCN0ZDNjkwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoRXZhbHVhdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzYwREE1QjBEMkEzMUY3MDBCOTkxOEYgLyogWFBhdGhFeGNlcHRpb24uaCBpbiBI
ZWFkZXJzICovLApAQCAtMjYyNzUsOCArMjYyNDUsNiBAQAogCQkJCUUxQkU1MTJFMENGNkM1MTIw
MDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0UyRTBG
MTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDUz
NzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUZC
NDlDMzlEMTY3ODQ5NDcwMDdGRkI1RCAvKiBDU1NIb3N0UnVsZS5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJRjEyMTcxRjYxNkE4Q0YwQjAwMDA1M0NBIC8qIFdlYlZUVEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpAQCAtMjY4NDMsNiArMjY4MTEsNyBAQAogCQkJCUJDMjNFNEUxMERBQUNFMEYwMDlGREM5
MSAvKiBDU1NHcmFkaWVudFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1MEY1M0REMDlE
MTVEREYwMEM5QjBDOCAvKiBDU1NHcmFtbWFyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZCRjg5
MDQ1MTY5RTlGMUYwMDUyRDg2RSAvKiBDU1NHcm91cGluZ1J1bGUuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJRkI0OUMzOUExNjc4NDkzMjAwN0ZGQjVEIC8qIENTU0hvc3RSdWxlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDMjNFNzZDMERBRTg4QTkwMDlGREM5MSAvKiBDU1NJbWFnZUdlbmVyYXRv
clZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzOTNFNUZGMTUxQTk5RjIwMDA2NkYwNiAv
KiBDU1NJbWFnZVNldFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU2Q0ZFMEExOTg5
Q0EwMDdGQjhDNSAvKiBDU1NJbWFnZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjcyMzks
OCArMjcyMDgsOCBAQAogCQkJCTg1OUQ2MkFCMEFEODg4RUYwMDAxMjk5NSAvKiBET01TVkdTZXRF
bGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODU5RDYyQUQwQUQ4ODhFRjAwMDEyOTk1IC8q
IERPTVNWR1N0b3BFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVENzlBREIwQUNBMTdF
QjAwRjAyRkM1IC8qIERPTVNWR1N0cmluZ0xpc3QubW0gaW4gU291cmNlcyAqLywKLQkJCQk4NTU5
RjExOTBBQzlCRTk5MDBBMzQzOUMgLyogRE9NU1ZHU3R5bGVFbGVtZW50Lm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODU1OUYxMTkwQUM5QkU5OTAwQTM0MzlEIC8qIERPTVNWR1N0eWxlZEVsZW1lbnQu
bW0gaW4gU291cmNlcyAqLywKKwkJCQk4NTU5RjExOTBBQzlCRTk5MDBBMzQzOUMgLyogRE9NU1ZH
U3R5bGVFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVDRTFBOUQwQURBQzcwODAwM0JC
REVBIC8qIERPTVNWR1NWR0VsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NTlENjJBRjBB
RDg4OEVGMDAwMTI5OTUgLyogRE9NU1ZHU3dpdGNoRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTg1OUQ2MkIxMEFEODg4RUYwMDAxMjk5NSAvKiBET01TVkdTeW1ib2xFbGVtZW50Lm1tIGlu
IFNvdXJjZXMgKi8sCkBAIC0yODI5Nyw4ICsyODI2Niw4IEBACiAJCQkJQjJGQTNERjQwQUI3NUE2
RjAwMEU1QUM0IC8qIEpTU1ZHU2V0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkZB
M0RGNjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdTdG9wRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCMkZBM0RGODBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdTdHJpbmdMaXN0LmNwcCBp
biBTb3VyY2VzICovLAotCQkJCUIyRkEzREZBMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1N0eWxl
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkZBM0RGQTBBQjc1QTZGMDAwRTVBQzUg
LyogSlNTVkdTdHlsZWRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUIyRkEzREZBMEFC
NzVBNkYwMDBFNUFDNCAvKiBKU1NWR1N0eWxlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCMkZBM0RGQzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdTVkdFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyRkEzREZFMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1N3aXRjaEVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNFMDAwQUI3NUE2RjAwMEU1QUM0IC8qIEpT
U1ZHU3ltYm9sRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI4NTMyLDcgKzI4NTAxLDYg
QEAKIAkJCQkxQTdGQTYxQjBEREEzQkJFMDAyOEY4QTUgLyogTmV0d29ya1N0YXRlTm90aWZpZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE3RkE2NDkwRERBM0NCQTAwMjhGOEE1IC8qIE5ldHdv
cmtTdGF0ZU5vdGlmaWVyTWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxM0VGMzQ5MTY4NTBD
NDcwMDM0QzgzRiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQkwMENBOTNCNTEzQzY2OTdDMDBGN0ZFOTUgLyogTmV3WE1MRG9jdW1lbnRQYXJzZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFRjQzRTAwRTY3NDExMDAwMUMxMjg3IC8qIE5pbmVQ
aWVjZUltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QzRBODAwMDlENTYzMjcwMDAzQUM4
RCAvKiBOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1NEZFNzMwMEEyMjk3QkUwMDU4RDdB
RCAvKiBOb2RlRmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjkxNTcsMTAgKzI5MTI1LDEw
IEBACiAJCQkJRTRBRkQwMEYwREFGMzM1NTAwRjVGNTVDIC8qIFNWR1NNSUxFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUIyMjI3QUE4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTdG9wRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0FBQjBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHU3RyaW5nTGlzdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjIyN0FCNzBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHU3R5bGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QUI3
MEQwMEJGMjIwMDcxQjc4MyAvKiBTVkdTdHlsZWRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUIyMjI3QUIzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QUI1MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCMjIyN0FC
NzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3R5bGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUIyMjI3QUJBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTVkdFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyMjI3QUJEMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTd2l0Y2hFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QUMwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdT
eW1ib2xFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjkzNTQsNiArMjkzMjIsNyBAQAog
CQkJCTFBQTcxNjFFMTQ5QkYyRkEwMDE2RUMxOSAvKiBXZWJUaWxlTGF5ZXIubW0gaW4gU291cmNl
cyAqLywKIAkJCQlDRDgyMDMwQjEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEODIwMzBEMTM5NUFCNkEwMEY5NTZD
NiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJRjEyMTcxRjUxNkE4Q0VEMjAwMDA1M0NBIC8qIFdlYlZUVEVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUQyMUE4MDIxM0VDRTVERjAwQkI3MDY0IC8qIFdlYlZUVFBhcnNl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMTBCNjk4MTE0MEMxNzQwMDBCQzFDMjYgLyogV2Vi
VlRUVG9rZW5pemVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEODIwMzExMTM5NUFDRTcwMEY5
NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24ubW0gaW4gU291cmNlcyAqLywKQEAgLTI5Mzg4LDcg
KzI5MzU3LDYgQEAKIAkJCQk5N0FBQkQyQzE0RkEwOUQ1MDA3NDU3QUUgLyogV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMjMwOTlF
NjQ5MjAwNTZFNTgxIC8qIFdyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBODMzQzdDQzBBMkNGMDc0MDBENTc2NjQgLyogWExpbmtOYW1lcy5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQkwMEQwNDY0QTEzQzREMTQ1MDAzMjZGQ0MgLyogWE1MQ2hhcmFj
dGVyUmVmZXJlbmNlUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTAwQjkzMTg3MTNCQThE
QjMwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
MEI5MzE4OTEzQkE4REJDMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTAwQjkzMThCMTNCQThEQzkwMDM1QTk0OCAvKiBYTUxEb2N1bWVu
dFBhcnNlclNjb3BlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk0MDAsOCArMjkzNjgsNiBAQAog
CQkJCUE4MzNDODBDMEEyQ0YyNTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlFMTVBMzZEOTExMDQ1NzI3MDBCN0I2MzkgLyogWE1MTlNOYW1lcy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQUNFNTNFQTBBOEQxOEU3MDAyMjk0N0QgLyogWE1MU2VyaWFsaXplci5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQkwMDAyRUM1OTEzQzNGNjdEMDAwNDBENDcgLyogWE1MVG9r
ZW5pemVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTAwMzVFQkJFMTNGMDcxM0MwMEE1NjA4OSAv
KiBYTUxUcmVlQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1OTA1QURCRjEzMDJGM0NF
MDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI3RkM2
ODBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhFdmFsdWF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTc4RDA3Q0MxNDVBMTAyRTAwOTY5MDhEIC8qIFhQYXRoRXhjZXB0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMjk0MjcsOCArMjkzOTMsNiBAQAogCQkJCUUxQkU1MTJEMENGNkM1MTIwMDJF
QTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3RTJFMEUx
MkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1
MzczNTIxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CUZCNDlDMzlBMTY3ODQ5MzIwMDdGRkI1RCAvKiBDU1NIb3N0UnVsZS5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQlGMTIxNzFGNTE2QThDRUQyMDAwMDUzQ0EgLyogV2ViVlRURWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDQ3ODMzNzUwMjY1Yzc4YWI2
ODJkMzQ2NjMzNWYzMTQ1OTk3YTE5MDkuLjFkNjE1ZDczYjdjOTZiYjcwNTgyNzZlZjJlY2U1Yzc0
OTBlMWI5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTE0LDcgKzExNCw2IEBACiAj
aW5jbHVkZSAiTmFtZU5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiTmFtZWRGbG93Q29sbGVjdGlvbi5o
IgogI2luY2x1ZGUgIk5lc3RpbmdMZXZlbEluY3JlbWVudGVyLmgiCi0jaW5jbHVkZSAiTmV3WE1M
RG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJOb2RlRmlsdGVyLmgiCiAjaW5jbHVkZSAiTm9k
ZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCkBAIC0yMTc0LDExICsyMTcz
LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0VmlzdWFsbHlPcmRlcmVkKCkKIFBhc3NSZWZQdHI8RG9j
dW1lbnRQYXJzZXI+IERvY3VtZW50OjpjcmVhdGVQYXJzZXIoKQogewogICAgIC8vIEZJWE1FOiB0
aGlzIHNob3VsZCBwcm9iYWJseSBwYXNzIHRoZSBmcmFtZSBpbnN0ZWFkCi0jaWYgRU5BQkxFKE5F
V19YTUwpCi0gICAgcmV0dXJuIE5ld1hNTERvY3VtZW50UGFyc2VyOjpjcmVhdGUodGhpcyk7Ci0j
ZWxzZQogICAgIHJldHVybiBYTUxEb2N1bWVudFBhcnNlcjo6Y3JlYXRlKHRoaXMsIHZpZXcoKSk7
Ci0jZW5kaWYKIH0KIAogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKiBEb2N1bWVudDo6c2NyaXB0
YWJsZURvY3VtZW50UGFyc2VyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudEZyYWdtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdt
ZW50LmNwcAppbmRleCA0OGFmMTBmZTFlYTdkMmVhYmYyM2I4YWZjODBhMjVjYWFlMDBiZWJlLi44
NTAxNWIyZjRhYWVkNzkyZDU1ZTUzMDc0NGE0ZWQxM2I1MjdkZDZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCkBAIC0yNSw3ICsyNSw2IEBACiAKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudFBhcnNlci5oIgotI2luY2x1ZGUgIk5l
d1hNTERvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCiAjaW5jbHVkZSAiWE1MRG9jdW1lbnRQYXJzZXIuaCIKQEAgLTgzLDExICs4Miw3IEBA
IHZvaWQgRG9jdW1lbnRGcmFnbWVudDo6cGFyc2VIVE1MKGNvbnN0IFN0cmluZyYgc291cmNlLCBF
bGVtZW50KiBjb250ZXh0RWxlbWVudCwKIAogYm9vbCBEb2N1bWVudEZyYWdtZW50OjpwYXJzZVhN
TChjb25zdCBTdHJpbmcmIHNvdXJjZSwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsIEZyYWdtZW50
U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQogewotI2lmIEVOQUJMRShO
RVdfWE1MKQotICAgIHJldHVybiBOZXdYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VEb2N1bWVudEZy
YWdtZW50KHNvdXJjZSwgdGhpcywgY29udGV4dEVsZW1lbnQsIHNjcmlwdGluZ1Blcm1pc3Npb24p
OwotI2Vsc2UKICAgICByZXR1cm4gWE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRG9jdW1lbnRGcmFn
bWVudChzb3VyY2UsIHRoaXMsIGNvbnRleHRFbGVtZW50LCBzY3JpcHRpbmdQZXJtaXNzaW9uKTsK
LSNlbmRpZgogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL05l
d1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTmV3WE1M
RG9jdW1lbnRQYXJzZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzM4MmE1
ZTczYTdkNTZkNjllZGNhZWJkMzVkYzYyNGVlNTk2Njg4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTmV3WE1M
RG9jdW1lbnRQYXJzZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjIxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiTmV3WE1MRG9jdW1lbnRQYXJzZXIuaCIKLQotI2luY2x1ZGUgIkRvY3Vt
ZW50RnJhZ21lbnQuaCIKLSNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiU2NyaXB0RWxl
bWVudC5oIgotI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTZWdtZW50
ZWRTdHJpbmcuaCIKLSNpbmNsdWRlICJYTUxUcmVlQnVpbGRlci5oIgotI2luY2x1ZGUgIlhNTFRy
ZWVWaWV3ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1OZXdYTUxEb2N1bWVudFBhcnNl
cjo6TmV3WE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogU2NyaXB0
YWJsZURvY3VtZW50UGFyc2VyKGRvY3VtZW50KQotICAgICwgbV90b2tlbml6ZXIoWE1MVG9rZW5p
emVyOjpjcmVhdGUoKSkKLSAgICAsIG1fcGFyc2VyUGF1c2VkKGZhbHNlKQotI2lmbmRlZiBOREVC
VUcKLSAgICAsIG1fZmluaXNoV2FzQ2FsbGVkKGZhbHNlKQotI2VuZGlmCi0gICAgLCBtX3BlbmRp
bmdTY3JpcHQoMCkKLSAgICAsIG1fc2NyaXB0RWxlbWVudCgwKQotICAgICwgbV90cmVlQnVpbGRl
cihYTUxUcmVlQnVpbGRlcjo6Y3JlYXRlKHRoaXMsIGRvY3VtZW50KSkKLXsKLX0KLQotTmV3WE1M
RG9jdW1lbnRQYXJzZXI6Ok5ld1hNTERvY3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQqIGZy
YWdtZW50LCBFbGVtZW50KiBwYXJlbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbikKLSAg
ICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihmcmFnbWVudC0+ZG9jdW1lbnQoKSkKLSAgICAs
IG1fdG9rZW5pemVyKFhNTFRva2VuaXplcjo6Y3JlYXRlKCkpCi0gICAgLCBtX3BhcnNlclBhdXNl
ZChmYWxzZSkKLSNpZm5kZWYgTkRFQlVHCi0gICAgLCBtX2ZpbmlzaFdhc0NhbGxlZChmYWxzZSkK
LSNlbmRpZgotICAgICwgbV9wZW5kaW5nU2NyaXB0KDApCi0gICAgLCBtX3NjcmlwdEVsZW1lbnQo
MCkKLSAgICAsIG1fdHJlZUJ1aWxkZXIoWE1MVHJlZUJ1aWxkZXI6OmNyZWF0ZSh0aGlzLCBmcmFn
bWVudCwgcGFyZW50KSkKLXsKLX0KLQotYm9vbCBOZXdYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VE
b2N1bWVudEZyYWdtZW50KGNvbnN0IFN0cmluZyYgY2h1bmssIERvY3VtZW50RnJhZ21lbnQqIGZy
YWdtZW50LCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNz
aW9uIHNjcmlwdGluZ1Blcm1pc3Npb24pCi17Ci0gICAgaWYgKCFjaHVuay5sZW5ndGgoKSkKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBSZWZQdHI8TmV3WE1MRG9jdW1lbnRQYXJzZXI+IHBh
cnNlciA9IE5ld1hNTERvY3VtZW50UGFyc2VyOjpjcmVhdGUoZnJhZ21lbnQsIGNvbnRleHRFbGVt
ZW50LCBzY3JpcHRpbmdQZXJtaXNzaW9uKTsKLSAgICBwYXJzZXItPmFwcGVuZChTZWdtZW50ZWRT
dHJpbmcoY2h1bmspKTsKLSAgICAvLyBEbyBub3QgY2FsbCBmaW5pc2goKS4gQ3VycmVudCBmaW5p
c2goKSBpbXBsZW1lbnRhdGlvbiB0b3VjaGVzIHRoZSBtYWluIERvY3VtZW50L2xvYWRlcgotICAg
IC8vIGFuZCBjYW4gY2F1c2UgY3Jhc2hlcyBpbiB0aGUgZnJhZ21lbnQgY2FzZS4KLSAgICBwYXJz
ZXItPmRldGFjaCgpOyAvLyBBbGxvd3MgfkRvY3VtZW50UGFyc2VyIHRvIGFzc2VydCBpdCB3YXMg
ZGV0YWNoZWQgYmVmb3JlIGRlc3RydWN0aW9uLgotCi0gICAgLy8gRklYTUU6IHJldHVybiBmYWxz
ZSBpZiBub3Qgd2VsbC1mb3JtZWQKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotTmV3WE1MRG9jdW1l
bnRQYXJzZXI6On5OZXdYTUxEb2N1bWVudFBhcnNlcigpCi17Ci19Ci0KLXZvaWQgTmV3WE1MRG9j
dW1lbnRQYXJzZXI6OnJlc3VtZVBhcnNpbmcoKQotewotICAgIG1fcGFyc2VyUGF1c2VkID0gZmFs
c2U7Ci0gICAgYXBwZW5kKG1faW5wdXQpOwotfQotCi12b2lkIE5ld1hNTERvY3VtZW50UGFyc2Vy
Ojpwcm9jZXNzU2NyaXB0KFNjcmlwdEVsZW1lbnQqIHNjcmlwdEVsZW1lbnQpCi17Ci0gICAgaWYg
KHNjcmlwdEVsZW1lbnQtPnByZXBhcmVTY3JpcHQoVGV4dFBvc2l0aW9uKCksIFNjcmlwdEVsZW1l
bnQ6OkFsbG93TGVnYWN5VHlwZUluVHlwZUF0dHJpYnV0ZSkpIHsKLSAgICAgICAgaWYgKHNjcmlw
dEVsZW1lbnQtPnJlYWR5VG9CZVBhcnNlckV4ZWN1dGVkKCkpCi0gICAgICAgICAgICBzY3JpcHRF
bGVtZW50LT5leGVjdXRlU2NyaXB0KFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0RWxlbWVudC0+c2Ny
aXB0Q29udGVudCgpLCBkb2N1bWVudCgpLT51cmwoKSwgVGV4dFBvc2l0aW9uKCkpKTsKLSAgICAg
ICAgZWxzZSBpZiAoc2NyaXB0RWxlbWVudC0+d2lsbEJlUGFyc2VyRXhlY3V0ZWQoKSkgewotICAg
ICAgICAgICAgbV9wZW5kaW5nU2NyaXB0ID0gc2NyaXB0RWxlbWVudC0+Y2FjaGVkU2NyaXB0KCk7
Ci0gICAgICAgICAgICBtX3NjcmlwdEVsZW1lbnQgPSBzY3JpcHRFbGVtZW50LT5lbGVtZW50KCk7
Ci0gICAgICAgICAgICBtX3BlbmRpbmdTY3JpcHQtPmFkZENsaWVudCh0aGlzKTsKLQotICAgICAg
ICAgICAgLy8gbV9wZW5kaW5nU2NyaXB0IHdpbGwgYmUgMCBpZiBzY3JpcHQgd2FzIGFscmVhZHkg
bG9hZGVkIGFuZCBhZGRDbGllbnQoKSBleGVjdXRlZCBpdC4KLSAgICAgICAgICAgIGlmIChtX3Bl
bmRpbmdTY3JpcHQpCi0gICAgICAgICAgICAgICAgcGF1c2VQYXJzaW5nKCk7Ci0gICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgbV9zY3JpcHRFbGVtZW50ID0gMDsKLSAgICB9Ci19Ci0KLVRleHRQ
b3NpdGlvbiBOZXdYTUxEb2N1bWVudFBhcnNlcjo6dGV4dFBvc2l0aW9uKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKTsKLX0KLQotT3JkaW5hbE51
bWJlciBOZXdYTUxEb2N1bWVudFBhcnNlcjo6bGluZU51bWJlcigpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIE9yZGluYWxOdW1iZXI6OmZpcnN0KCk7Ci19Ci0KLXZvaWQgTmV3WE1MRG9jdW1lbnRQYXJz
ZXI6Omluc2VydChjb25zdCBTZWdtZW50ZWRTdHJpbmcmKQotewotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotfQotCi12b2lkIE5ld1hNTERvY3VtZW50UGFyc2VyOjphcHBlbmQoY29uc3QgU2Vn
bWVudGVkU3RyaW5nJiBzdHJpbmcpCi17Ci0gICAgbV9pbnB1dCA9IHN0cmluZzsKLSAgICB3aGls
ZSAoIW1faW5wdXQuaXNFbXB0eSgpICYmIGlzUGFyc2luZygpICYmICFtX3BhcnNlclBhdXNlZCkg
ewotICAgICAgICBpZiAoIW1fdG9rZW5pemVyLT5uZXh0VG9rZW4obV9pbnB1dCwgbV90b2tlbikp
Ci0gICAgICAgICAgICBjb250aW51ZTsKLQotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgbV90b2tl
bi5wcmludCgpOwotI2VuZGlmCi0KLSAgICAgICAgQXRvbWljWE1MVG9rZW4gdG9rZW4obV90b2tl
bik7Ci0gICAgICAgIG1fdHJlZUJ1aWxkZXItPnByb2Nlc3NUb2tlbih0b2tlbik7Ci0KLSAgICAg
ICAgaWYgKG1fdG9rZW4udHlwZSgpID09IFhNTFRva2VuVHlwZXM6OkVuZE9mRmlsZSkKLSAgICAg
ICAgICAgIGJyZWFrOwotCi0gICAgICAgIG1fdG9rZW4uY2xlYXIoKTsKLSAgICAgICAgQVNTRVJU
KG1fdG9rZW4uaXNVbmluaXRpYWxpemVkKCkpOwotICAgIH0KLX0KLQotdm9pZCBOZXdYTUxEb2N1
bWVudFBhcnNlcjo6ZmluaXNoKCkKLXsKLSAgICBBU1NFUlQoIW1fZmluaXNoV2FzQ2FsbGVkKTsK
LQotICAgIGlmIChtX3BhcnNlclBhdXNlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV90cmVl
QnVpbGRlci0+ZmluaXNoKCk7Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAgbV9maW5pc2hXYXNDYWxs
ZWQgPSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKGlzUGFyc2luZygpKSB7Ci0jaWYgRU5BQkxFKFhT
TFQpCi0gICAgICAgIFhNTFRyZWVWaWV3ZXIgeG1sVHJlZVZpZXdlcihkb2N1bWVudCgpKTsKLSAg
ICAgICAgaWYgKHhtbFRyZWVWaWV3ZXIuaGFzTm9TdHlsZUluZm9ybWF0aW9uKCkpCi0gICAgICAg
ICAgICB4bWxUcmVlVmlld2VyLnRyYW5zZm9ybURvY3VtZW50VG9UcmVlVmlldygpOwotI2VuZGlm
IC8vIEVOQUJMRShYU0xUKQotCi0gICAgICAgIHByZXBhcmVUb1N0b3BQYXJzaW5nKCk7Ci0gICAg
fQotICAgIGRvY3VtZW50KCktPnNldFJlYWR5U3RhdGUoRG9jdW1lbnQ6OkludGVyYWN0aXZlKTsK
LSAgICBkb2N1bWVudCgpLT5maW5pc2hlZFBhcnNpbmcoKTsKLX0KLQotYm9vbCBOZXdYTUxEb2N1
bWVudFBhcnNlcjo6aGFzSW5zZXJ0aW9uUG9pbnQoKQotewotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotYm9vbCBOZXdYTUxEb2N1bWVudFBhcnNlcjo6aXNXYWl0aW5nRm9yU2NyaXB0cygpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIE5ld1hNTERvY3VtZW50UGFyc2VyOjpp
c0V4ZWN1dGluZ1NjcmlwdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lk
IE5ld1hNTERvY3VtZW50UGFyc2VyOjpleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0
cygpCi17Ci19Ci0KLXZvaWQgTmV3WE1MRG9jdW1lbnRQYXJzZXI6Om5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlKiB1bnVzZWRSZXNvdXJjZSkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHVudXNl
ZFJlc291cmNlLCB1bnVzZWRSZXNvdXJjZSA9PSBtX3BlbmRpbmdTY3JpcHQpOwotICAgIEFTU0VS
VChtX3BlbmRpbmdTY3JpcHQtPmFjY2Vzc0NvdW50KCkgPiAwKTsKLQotICAgIFNjcmlwdFNvdXJj
ZUNvZGUgc291cmNlQ29kZShtX3BlbmRpbmdTY3JpcHQuZ2V0KCkpOwotICAgIGJvb2wgZXJyb3JP
Y2N1cnJlZCA9IG1fcGVuZGluZ1NjcmlwdC0+ZXJyb3JPY2N1cnJlZCgpOwotICAgIGJvb2wgd2Fz
Q2FuY2VsZWQgPSBtX3BlbmRpbmdTY3JpcHQtPndhc0NhbmNlbGVkKCk7Ci0KLSAgICBtX3BlbmRp
bmdTY3JpcHQtPnJlbW92ZUNsaWVudCh0aGlzKTsKLSAgICBtX3BlbmRpbmdTY3JpcHQgPSAwOwot
Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBtX3NjcmlwdEVsZW1lbnQ7Ci0gICAgU2Ny
aXB0RWxlbWVudCogc2NyaXB0RWxlbWVudCA9IHRvU2NyaXB0RWxlbWVudChtX3NjcmlwdEVsZW1l
bnQuZ2V0KCkpOwotICAgIG1fc2NyaXB0RWxlbWVudCA9IDA7Ci0KLSAgICBBU1NFUlQoc2NyaXB0
RWxlbWVudCk7Ci0KLSAgICAvLyBKYXZhU2NyaXB0IGNhbiBkZXRhY2ggdGhpcyBwYXJzZXIsIG1h
a2Ugc3VyZSBpdCdzIGtlcHQgYWxpdmUgZXZlbiBpZiBkZXRhY2hlZC4KLSAgICBSZWZQdHI8TmV3
WE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QodGhpcyk7Ci0KLSAgICBpZiAoZXJyb3JPY2N1cnJl
ZCkKLSAgICAgICAgc2NyaXB0RWxlbWVudC0+ZGlzcGF0Y2hFcnJvckV2ZW50KCk7Ci0gICAgZWxz
ZSBpZiAoIXdhc0NhbmNlbGVkKSB7Ci0gICAgICAgIHNjcmlwdEVsZW1lbnQtPmV4ZWN1dGVTY3Jp
cHQoc291cmNlQ29kZSk7Ci0gICAgICAgIHNjcmlwdEVsZW1lbnQtPmRpc3BhdGNoTG9hZEV2ZW50
KCk7Ci0gICAgfQotCi0gICAgaWYgKCFpc0RldGFjaGVkKCkgJiYgbV9wYXJzZXJQYXVzZWQpCi0g
ICAgICAgIHJlc3VtZVBhcnNpbmcoKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9OZXdYTUxEb2N1bWVudFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9OZXdYTUxEb2N1bWVudFBhcnNlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBmMTJjNjdhYjBkZjU1YzIwOTdhOTFiYjkyYTUzOGQ2NjIxYTZjY2UyLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvTmV3WE1MRG9jdW1lbnRQYXJzZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBOZXdYTUxEb2N1bWVudFBhcnNlcl9oCi0jZGVmaW5lIE5ld1hNTERvY3VtZW50UGFyc2VyX2gK
LQotI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCi0jaW5jbHVkZSAiQ2FjaGVkUmVz
b3VyY2VIYW5kbGUuaCIKLSNpbmNsdWRlICJDYWNoZWRTY3JpcHQuaCIKLSNpbmNsdWRlICJGcmFn
bWVudFNjcmlwdGluZ1Blcm1pc3Npb24uaCIKLSNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQ
YXJzZXIuaCIKLSNpbmNsdWRlICJYTUxUb2tlbi5oIgotI2luY2x1ZGUgIlhNTFRva2VuaXplci5o
IgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENvbnRhaW5lck5vZGU7Ci1jbGFzcyBEb2N1
bWVudDsKLWNsYXNzIERvY3VtZW50RnJhZ21lbnQ7Ci1jbGFzcyBTY3JpcHRFbGVtZW50OwotY2xh
c3MgWE1MVHJlZUJ1aWxkZXI7Ci0KLWNsYXNzIE5ld1hNTERvY3VtZW50UGFyc2VyIDogcHVibGlj
IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciwgcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsK
LSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxOZXdYTUxEb2N1bWVudFBhcnNlcj4gY3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTmV3WE1MRG9jdW1lbnRQYXJzZXIoZG9j
dW1lbnQpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxOZXdYTUxEb2N1bWVudFBh
cnNlcj4gY3JlYXRlKERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBFbGVtZW50KiBwYXJlbnQs
IEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOZXdYTUxEb2N1bWVudFBhcnNlcihmcmFnbWVu
dCwgcGFyZW50LCBzY3JpcHRpbmdQZXJtaXNzaW9uKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIGJv
b2wgcGFyc2VEb2N1bWVudEZyYWdtZW50KGNvbnN0IFN0cmluZyYsIERvY3VtZW50RnJhZ21lbnQq
LCBFbGVtZW50KiBwYXJlbnQgPSAwLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gPSBBbGxv
d1NjcmlwdGluZ0NvbnRlbnQpOwotCi0gICAgdm9pZCBwYXVzZVBhcnNpbmcoKSB7IG1fcGFyc2Vy
UGF1c2VkID0gdHJ1ZTsgfQotICAgIHZvaWQgcmVzdW1lUGFyc2luZygpOwotICAgIHZvaWQgcHJv
Y2Vzc1NjcmlwdChTY3JpcHRFbGVtZW50Kik7Ci0KLSAgICB2aXJ0dWFsIFRleHRQb3NpdGlvbiB0
ZXh0UG9zaXRpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIE9yZGluYWxOdW1iZXIgbGluZU51bWJl
cigpIGNvbnN0OwotCi0gICAgLy8gRG9jdW1lbnRQYXJzZXIKLSAgICB2aXJ0dWFsIGJvb2wgaGFz
SW5zZXJ0aW9uUG9pbnQoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNXYWl0aW5nRm9yU2NyaXB0cygp
IGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc0V4ZWN1dGluZ1NjcmlwdCgpIGNvbnN0OwotICAg
IHZpcnR1YWwgdm9pZCBleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpOwotCi0g
ICAgLy8gQ2FjaGVkUmVzb3VyY2VDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UqKTsKLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBpbnNl
cnQoY29uc3QgU2VnbWVudGVkU3RyaW5nJik7Ci0gICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25z
dCBTZWdtZW50ZWRTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoKCk7Ci0KLXByaXZh
dGU6Ci0gICAgTmV3WE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQqKTsKLSAgICBOZXdYTUxEb2N1
bWVudFBhcnNlcihEb2N1bWVudEZyYWdtZW50KiwgRWxlbWVudCogcGFyZW50LCBGcmFnbWVudFNj
cmlwdGluZ1Blcm1pc3Npb24pOwotICAgIHZpcnR1YWwgfk5ld1hNTERvY3VtZW50UGFyc2VyKCk7
Ci0KLSAgICBTZWdtZW50ZWRTdHJpbmcgbV9pbnB1dDsKLSAgICBPd25QdHI8WE1MVG9rZW5pemVy
PiBtX3Rva2VuaXplcjsKLSAgICBYTUxUb2tlbiBtX3Rva2VuOwotCi0gICAgYm9vbCBtX3BhcnNl
clBhdXNlZDsKLSNpZm5kZWYgTkRFQlVHCi0gICAgYm9vbCBtX2ZpbmlzaFdhc0NhbGxlZDsKLSNl
bmRpZgotCi0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBtX3BlbmRpbmdT
Y3JpcHQ7Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IG1fc2NyaXB0RWxlbWVudDsKLQotICAgIE93blB0
cjxYTUxUcmVlQnVpbGRlcj4gbV90cmVlQnVpbGRlcjsKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTENoYXJhY3RlclJlZmVyZW5jZVBh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTENoYXJhY3RlclJlZmVyZW5j
ZVBhcnNlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiZWUyMjhlNjY4ZWJh
MDU3MzhiM2ZkMTg4MjVmNWY3YmY4NDRlMTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxDaGFyYWN0ZXJS
ZWZlcmVuY2VQYXJzZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuIGh0dHA6Ly93d3cudG9yY2htb2Jp
bGUuY29tLwotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlhNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNlci5o
IgotCi11c2luZyBuYW1lc3BhY2UgV1RGOwotCi0jaW5jbHVkZSAiQ2hhcmFjdGVyUmVmZXJlbmNl
UGFyc2VySW5saW5lcy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSB7Ci0K
LWNsYXNzIFhNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNlciB7Ci1wdWJsaWM6Ci0gICAgaW5saW5l
IHN0YXRpYyBVQ2hhcjMyIGxlZ2FsRW50aXR5Rm9yKFVDaGFyMzIgdmFsdWUpCi0gICAgewotICAg
ICAgICAvLyBGSVhNRTogQSBudW1iZXIgb2Ygc3BlY2lmaWMgZW50aXR5IHZhbHVlcyBnZW5lcmF0
ZSBwYXJzZSBlcnJvcnMuCi0gICAgICAgIGlmICghdmFsdWUgfHwgdmFsdWUgPiAweDEwRkZGRiB8
fCAodmFsdWUgPj0gMHhEODAwICYmIHZhbHVlIDw9IDB4REZGRikpCi0gICAgICAgIHJldHVybiAw
eEZGRkQ7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgc3RhdGlj
IHZvaWQgY29udmVydFRvVVRGMTYoVUNoYXIzMiB2YWx1ZSwgU3RyaW5nQnVpbGRlciYgZGVjb2Rl
ZENoYXJhY3RlcikKLSAgICB7Ci0gICAgICAgIGlmIChVX0lTX0JNUCh2YWx1ZSkpIHsKLSAgICAg
ICAgICAgIFVDaGFyIGNoYXJhY3RlciA9IHN0YXRpY19jYXN0PFVDaGFyPih2YWx1ZSk7Ci0gICAg
ICAgICAgICBBU1NFUlQoY2hhcmFjdGVyID09IHZhbHVlKTsKLSAgICAgICAgICAgIGRlY29kZWRD
aGFyYWN0ZXIuYXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICAgICAgZGVjb2RlZENoYXJhY3Rlci5hcHBlbmQoVTE2X0xFQUQodmFsdWUpKTsKLSAg
ICAgICAgZGVjb2RlZENoYXJhY3Rlci5hcHBlbmQoVTE2X1RSQUlMKHZhbHVlKSk7Ci0gICAgfQot
Ci0gICAgaW5saW5lIHN0YXRpYyBib29sIGFjY2VwdE1hbGZvcm1lZCgpIHsgcmV0dXJuIGZhbHNl
OyB9Ci0KLSAgICBpbmxpbmUgc3RhdGljIGJvb2wgY29uc3VtZU5hbWVkRW50aXR5KFNlZ21lbnRl
ZFN0cmluZyYsIFN0cmluZ0J1aWxkZXImLCBib29sJiwgVUNoYXIsIFVDaGFyJikKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotfTsKLQotfQotCi1ib29sIGNvbnN1bWVYTUxDaGFyYWN0ZXJSZWZlcmVuY2UoU2VnbWVudGVk
U3RyaW5nJiBzb3VyY2UsIFN0cmluZ0J1aWxkZXImIGRlY29kZWRDaGFyYWN0ZXIsIGJvb2wmIG5v
dEVub3VnaENoYXJhY3RlcnMpCi17Ci0gICAgcmV0dXJuIGNvbnN1bWVDaGFyYWN0ZXJSZWZlcmVu
Y2U8WE1MQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VyPihzb3VyY2UsIGRlY29kZWRDaGFyYWN0ZXIs
IG5vdEVub3VnaENoYXJhY3RlcnMsIDApOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTENoYXJhY3RlclJlZmVyZW5j
ZVBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxDaGFyYWN0ZXJSZWZlcmVu
Y2VQYXJzZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWVjM2EwMDM5Nzc0Yjg0
YTk4OTI2MDhhZWFjYWM2ZDYyZGZlMzUxMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTENoYXJhY3RlclJl
ZmVyZW5jZVBhcnNlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFhNTENoYXJhY3Rl
clJlZmVyZW5jZVBhcnNlcl9oCi0jZGVmaW5lIFhNTENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcl9o
Ci0KLSNpbmNsdWRlICJTZWdtZW50ZWRTdHJpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
ICAgIAotYm9vbCBjb25zdW1lWE1MQ2hhcmFjdGVyUmVmZXJlbmNlKFNlZ21lbnRlZFN0cmluZyYs
IFN0cmluZ0J1aWxkZXImIGRlY29kZWRDaGFyYWN0ZXIsIGJvb2wmIG5vdEVub3VnaENoYXJhY3Rl
cnMpOwotCi19Ci0KLSNlbmRpZiAvLyBYTUxDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXJfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbi5oIGIvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBiNTk1YTZmMDA5ZTA3MjU2NWYzMWQ4NmVlZGM5ZDA5OGZmMjdmM2I5Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MVG9rZW4uaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3OCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBYTUxUb2tlbl9oCi0j
ZGVmaW5lIFhNTFRva2VuX2gKLQotI2luY2x1ZGUgIk1hcmt1cFRva2VuQmFzZS5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFhNTFRva2VuVHlwZXMgewotcHVibGljOgotICAgIGVu
dW0gVHlwZSB7Ci0gICAgICAgIFVuaW5pdGlhbGl6ZWQsCi0gICAgICAgIFByb2Nlc3NpbmdJbnN0
cnVjdGlvbiwKLSAgICAgICAgWE1MRGVjbGFyYXRpb24sCi0gICAgICAgIERPQ1RZUEUsCi0gICAg
ICAgIENEQVRBLAotICAgICAgICBTdGFydFRhZywKLSAgICAgICAgRW5kVGFnLAotICAgICAgICBD
b21tZW50LAotICAgICAgICBDaGFyYWN0ZXIsCi0gICAgICAgIEVudGl0eSwKLSAgICAgICAgRW5k
T2ZGaWxlLAotICAgIH07Ci19OwotCi1jbGFzcyBQcmVmaXhlZEF0dHJpYnV0ZSA6IHB1YmxpYyBB
dHRyaWJ1dGVCYXNlIHsKLXB1YmxpYzoKLSAgICBSYW5nZSBtX3ByZWZpeFJhbmdlOwotICAgIFdU
Rjo6VmVjdG9yPFVDaGFyLCAzMj4gbV9wcmVmaXg7Ci19OwotCi1jbGFzcyBYTUxUb2tlbiA6IHB1
YmxpYyBNYXJrdXBUb2tlbkJhc2U8WE1MVG9rZW5UeXBlcywgRG9jdHlwZURhdGFCYXNlLCBQcmVm
aXhlZEF0dHJpYnV0ZT4gewotcHVibGljOgotICAgIGNsYXNzIFhNTERlY2xhcmF0aW9uRGF0YSB7
Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFhNTERlY2xhcmF0aW9uRGF0YSk7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAgICAgWE1MRGVjbGFyYXRpb25E
YXRhKCkKLSAgICAgICAgICAgIDogbV9oYXNTdGFuZGFsb25lKGZhbHNlKQotICAgICAgICAgICAg
LCBtX2hhc0VuY29kaW5nKGZhbHNlKQotICAgICAgICAgICAgLCBtX3N0YW5kYWxvbmUoZmFsc2Up
Ci0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgbV9oYXNTdGFuZGFsb25lOwot
ICAgICAgICBib29sIG1faGFzRW5jb2Rpbmc7Ci0gICAgICAgIGJvb2wgbV9zdGFuZGFsb25lOwot
ICAgICAgICBXVEY6OlZlY3RvcjxVQ2hhcj4gbV9lbmNvZGluZzsKLSAgICAgICAgV1RGOjpWZWN0
b3I8VUNoYXI+IG1fdmVyc2lvbjsKLSAgICB9OwotCi0gICAgdmlydHVhbCB2b2lkIGNsZWFyKCkK
LSAgICB7Ci0gICAgICAgIE1hcmt1cFRva2VuQmFzZTxYTUxUb2tlblR5cGVzLCBEb2N0eXBlRGF0
YUJhc2UsIFByZWZpeGVkQXR0cmlidXRlPjo6Y2xlYXIoKTsKLSAgICAgICAgbV90YXJnZXQuY2xl
YXIoKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFwcGVuZFRvTmFtZShVQ2hhciBjaGFyYWN0ZXIpCi0g
ICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8
IG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpFbmRUYWcgfHwgbV90eXBlID09IFhNTFRva2VuVHlw
ZXM6OkRPQ1RZUEUgfHwgbV90eXBlID09IFhNTFRva2VuVHlwZXM6OkVudGl0eSk7Ci0gICAgICAg
IE1hcmt1cFRva2VuQmFzZTxYTUxUb2tlblR5cGVzLCBEb2N0eXBlRGF0YUJhc2UsIFByZWZpeGVk
QXR0cmlidXRlPjo6YXBwZW5kVG9OYW1lKGNoYXJhY3Rlcik7Ci0gICAgfQotCi0gICAgY29uc3Qg
RGF0YVZlY3RvciYgbmFtZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09
IFhNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpFbmRU
YWcgfHwgbV90eXBlID09IFhNTFRva2VuVHlwZXM6OkRPQ1RZUEUgfHwgbV90eXBlID09IFhNTFRv
a2VuVHlwZXM6OkVudGl0eSk7Ci0gICAgICAgIHJldHVybiBNYXJrdXBUb2tlbkJhc2U8WE1MVG9r
ZW5UeXBlcywgRG9jdHlwZURhdGFCYXNlLCBQcmVmaXhlZEF0dHJpYnV0ZT46Om5hbWUoKTsKLSAg
ICB9Ci0KLSAgICBjb25zdCBEYXRhVmVjdG9yJiB0YXJnZXQoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24p
OwotICAgICAgICByZXR1cm4gbV90YXJnZXQ7Ci0gICAgfQotCi0gICAgY29uc3QgRGF0YVZlY3Rv
ciYgZGF0YSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2Vu
VHlwZXM6OkNEQVRBIHx8IG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpQcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24pOwotICAgICAgICByZXR1cm4gbV9kYXRhOwotICAgIH0KLQotICAgIGNvbnN0IERhdGFW
ZWN0b3ImIHByZWZpeCgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFhN
TFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpFbmRUYWcp
OwotICAgICAgICByZXR1cm4gbV90YXJnZXQ7Ci0gICAgfQotCi0gICAgY29uc3QgWE1MRGVjbGFy
YXRpb25EYXRhJiB4bWxEZWNsYXJhdGlvbkRhdGEoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpYTUxEZWNsYXJhdGlvbik7Ci0gICAgICAgIEFT
U0VSVChtX3htbERlY2xhcmF0aW9uRGF0YSk7Ci0gICAgICAgIHJldHVybiAqbV94bWxEZWNsYXJh
dGlvbkRhdGEuZ2V0KCk7Ci0gICAgfQotCi0gICAgdm9pZCBiZWdpbkRPQ1RZUEUoKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkKTsK
LSAgICAgICAgbV90eXBlID0gWE1MVG9rZW5UeXBlczo6RE9DVFlQRTsKLSAgICAgICAgbV9kb2N0
eXBlRGF0YSA9IGFkb3B0UHRyKG5ldyBEb2N0eXBlRGF0YSgpKTsKLSAgICB9Ci0KLSAgICB2b2lk
IGJlZ2luRE9DVFlQRShVQ2hhciBjaGFyYWN0ZXIpCi0gICAgewotICAgICAgICBBU1NFUlQoY2hh
cmFjdGVyKTsKLSAgICAgICAgYmVnaW5ET0NUWVBFKCk7Ci0gICAgICAgIG1fZGF0YS5hcHBlbmQo
Y2hhcmFjdGVyKTsKLSAgICB9Ci0KLSAgICB2b2lkIGJlZ2luWE1MRGVjbGFyYXRpb24oKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVk
KTsKLSAgICAgICAgbV90eXBlID0gWE1MVG9rZW5UeXBlczo6WE1MRGVjbGFyYXRpb247Ci0gICAg
ICAgIG1feG1sRGVjbGFyYXRpb25EYXRhID0gYWRvcHRQdHIobmV3IFhNTERlY2xhcmF0aW9uRGF0
YSgpKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFwcGVuZFRvWE1MVmVyc2lvbihVQ2hhciBjaGFyYWN0
ZXIpCi0gICAgewotICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKLSAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBYTUxUb2tlblR5cGVzOjpYTUxEZWNsYXJhdGlvbik7Ci0gICAgICAgIEFTU0VSVCht
X3htbERlY2xhcmF0aW9uRGF0YSk7Ci0gICAgICAgIG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX3Zl
cnNpb24uYXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgfQotCi0gICAgdm9pZCBiZWdpblhNTEVuY29k
aW5nKFVDaGFyIGNoYXJhY3RlcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOwot
ICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlhNTERlY2xhcmF0aW9uKTsK
LSAgICAgICAgQVNTRVJUKG1feG1sRGVjbGFyYXRpb25EYXRhKTsKLSAgICAgICAgbV94bWxEZWNs
YXJhdGlvbkRhdGEtPm1faGFzRW5jb2RpbmcgPSB0cnVlOwotICAgICAgICBtX3htbERlY2xhcmF0
aW9uRGF0YS0+bV9lbmNvZGluZy5hcHBlbmQoY2hhcmFjdGVyKTsKLSAgICB9Ci0KLSAgICB2b2lk
IGFwcGVuZFRvWE1MRW5jb2RpbmcoVUNoYXIgY2hhcmFjdGVyKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKGNoYXJhY3Rlcik7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6
WE1MRGVjbGFyYXRpb24pOwotICAgICAgICBBU1NFUlQobV94bWxEZWNsYXJhdGlvbkRhdGEpOwot
ICAgICAgICBBU1NFUlQobV94bWxEZWNsYXJhdGlvbkRhdGEtPm1faGFzRW5jb2RpbmcpOwotICAg
ICAgICBtX3htbERlY2xhcmF0aW9uRGF0YS0+bV9lbmNvZGluZy5hcHBlbmQoY2hhcmFjdGVyKTsK
LSAgICB9Ci0KLSAgICB2b2lkIHNldFhNTFN0YW5kYWxvbmUoYm9vbCBzdGFuZGFsb25lKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpYTUxEZWNsYXJhdGlv
bik7Ci0gICAgICAgIEFTU0VSVChtX3htbERlY2xhcmF0aW9uRGF0YSk7Ci0gICAgICAgIG1feG1s
RGVjbGFyYXRpb25EYXRhLT5tX2hhc1N0YW5kYWxvbmUgPSB0cnVlOwotICAgICAgICBtX3htbERl
Y2xhcmF0aW9uRGF0YS0+bV9zdGFuZGFsb25lID0gc3RhbmRhbG9uZTsKLSAgICB9Ci0KLSAgICB2
b2lkIGJlZ2luUHJvY2Vzc2luZ0luc3RydWN0aW9uKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCht
X3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCk7Ci0gICAgICAgIG1fdHlwZSA9
IFhNTFRva2VuVHlwZXM6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjsKLSAgICB9Ci0KLSAgICB2b2lk
IGJlZ2luUHJvY2Vzc2luZ0luc3RydWN0aW9uKFVDaGFyIGNoYXJhY3RlcikKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChjaGFyYWN0ZXIpOwotICAgICAgICBiZWdpblByb2Nlc3NpbmdJbnN0cnVjdGlv
bigpOwotICAgICAgICBtX3RhcmdldC5hcHBlbmQoY2hhcmFjdGVyKTsKLSAgICB9Ci0KLSAgICB2
b2lkIGFwcGVuZFRvUHJvY2Vzc2luZ0luc3RydWN0aW9uVGFyZ2V0KFVDaGFyIGNoYXJhY3RlcikK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6UHJvY2Vzc2lu
Z0luc3RydWN0aW9uKTsKLSAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7Ci0gICAgICAgIG1fdGFy
Z2V0LmFwcGVuZChjaGFyYWN0ZXIpOwotICAgIH0KLQotICAgIHZvaWQgYXBwZW5kVG9Qcm9jZXNz
aW5nSW5zdHJ1Y3Rpb25EYXRhKFVDaGFyIGNoYXJhY3RlcikKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6UHJvY2Vzc2luZ0luc3RydWN0aW9uKTsKLSAgICAg
ICAgQVNTRVJUKGNoYXJhY3Rlcik7Ci0gICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsK
LSAgICB9Ci0KLSAgICB2b2lkIGVuZFByZWZpeCgpCi0gICAgewotICAgICAgICBBU1NFUlQobV90
eXBlID09IFhNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBYTUxUb2tlblR5cGVz
OjpFbmRUYWcpOwotICAgICAgICBBU1NFUlQobV90YXJnZXQuaXNFbXB0eSgpKTsKLSAgICAgICAg
Ly8gRklYTUU6IHNlZSBpZiB3ZSBjYW4gYXZvaWQgdGhlIGNvcHkgaW5oZXJlbnQgd2l0aCB0aGlz
IHN3YXAKLSAgICAgICAgbV90YXJnZXQuc3dhcChtX2RhdGEpOwotICAgIH0KLQotICAgIGJvb2wg
aGFzUHJlZml4KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9r
ZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IFhNTFRva2VuVHlwZXM6OkVuZFRhZyk7Ci0g
ICAgICAgIHJldHVybiBtX3RhcmdldC5zaXplKCk7Ci0gICAgfQotCi0gICAgdm9pZCBiZWdpbkNE
QVRBKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6VW5p
bml0aWFsaXplZCk7Ci0gICAgICAgIG1fdHlwZSA9IFhNTFRva2VuVHlwZXM6OkNEQVRBOwotICAg
IH0KLQotICAgIHZvaWQgYXBwZW5kVG9DREFUQShVQ2hhciBjaGFyYWN0ZXIpCi0gICAgewotICAg
ICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OkNEQVRBKTsKLSAgICAgICAgQVNT
RVJUKGNoYXJhY3Rlcik7Ci0gICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKLSAgICB9
Ci0KLSAgICB2b2lkIGJlZ2luRW50aXR5KCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUg
PT0gWE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCk7Ci0gICAgICAgIG1fdHlwZSA9IFhNTFRv
a2VuVHlwZXM6OkVudGl0eTsKLSAgICB9Ci0KLSAgICB2b2lkIGJlZ2luRW50aXR5KFVDaGFyIGNo
YXJhY3RlcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOwotICAgICAgICBiZWdp
bkVudGl0eSgpOwotICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgfQotCi0g
ICAgdm9pZCBlbmRBdHRyaWJ1dGVQcmVmaXgoaW50IG9mZnNldCkKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwotICAgICAgICBpbnQgaW5k
ZXggPSBvZmZzZXQgLSBtX2Jhc2VPZmZzZXQ7Ci0gICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+
bV9wcmVmaXguc3dhcChtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZSk7Ci0gICAgICAgIG1fY3Vy
cmVudEF0dHJpYnV0ZS0+bV9wcmVmaXhSYW5nZS5tX3N0YXJ0ID0gbV9jdXJyZW50QXR0cmlidXRl
LT5tX3ZhbHVlUmFuZ2UubV9zdGFydDsKLSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3By
ZWZpeFJhbmdlLm1fZW5kID0gaW5kZXg7Ci0gICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV9u
YW1lUmFuZ2UubV9zdGFydCA9IGluZGV4OwotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1f
bmFtZVJhbmdlLm1fZW5kID0gaW5kZXg7Ci0gICAgfQotCi0gICAgYm9vbCBhdHRyaWJ1dGVIYXNQ
cmVmaXgoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpT
dGFydFRhZyk7Ci0gICAgICAgIHJldHVybiAhbV9jdXJyZW50QXR0cmlidXRlLT5tX3ByZWZpeC5p
c0VtcHR5KCk7Ci0gICAgfQotCi0jaWZuZGVmIE5ERUJVRwotICAgIHZvaWQgcHJpbnRBdHRycygp
IGNvbnN0Ci0gICAgewotICAgICAgICBBdHRyaWJ1dGVMaXN0Ojpjb25zdF9pdGVyYXRvciBpdGVy
ID0gbV9hdHRyaWJ1dGVzLmJlZ2luKCk7Ci0gICAgICAgIGZvciAoOyBpdGVyICE9IG1fYXR0cmli
dXRlcy5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAiKTsK
LSAgICAgICAgICAgIGlmICghaXRlci0+bV9wcmVmaXguaXNFbXB0eSgpKSB7Ci0gICAgICAgICAg
ICAgICAgcHJpbnRTdHJpbmcoaXRlci0+bV9wcmVmaXgpOwotICAgICAgICAgICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiOiIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcHJpbnRTdHJpbmco
aXRlci0+bV9uYW1lKTsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiPVwiIik7Ci0gICAg
ICAgICAgICBwcmludFN0cmluZyhpdGVyLT5tX3ZhbHVlKTsKLSAgICAgICAgICAgIGZwcmludGYo
c3RkZXJyLCAiXCIiKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgcHJpbnQoKSBjb25z
dAotICAgIHsKLSAgICAgICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICAgICAgY2FzZSBYTUxUb2tl
blR5cGVzOjpVbmluaXRpYWxpemVkOgotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJVTklU
SUFMSVpFRCIpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBYTUxUb2tlblR5
cGVzOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwg
IlByb2Nlc3NpbmdJbnN0cnVjdGlvbjogIik7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwg
Ijw/Iik7Ci0gICAgICAgICAgICBwcmludFN0cmluZyhtX3RhcmdldCk7Ci0gICAgICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIiAiKTsKLSAgICAgICAgICAgIHByaW50U3RyaW5nKG1fZGF0YSk7Ci0g
ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIj8+Iik7Ci0gICAgICAgICAgICBicmVhazsKLQot
ICAgICAgICBjYXNlIFhNTFRva2VuVHlwZXM6OlhNTERlY2xhcmF0aW9uOgotICAgICAgICAgICAg
ZnByaW50ZihzdGRlcnIsICJYTUwgRGVjbGFyYXRpb246ICIpOwotICAgICAgICAgICAgZnByaW50
ZihzdGRlcnIsICI8P3htbCB2ZXJzaW9uPVwiIik7Ci0gICAgICAgICAgICBBU1NFUlQobV94bWxE
ZWNsYXJhdGlvbkRhdGEpOwotICAgICAgICAgICAgcHJpbnRTdHJpbmcobV94bWxEZWNsYXJhdGlv
bkRhdGEtPm1fdmVyc2lvbik7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlwiIik7Ci0g
ICAgICAgICAgICBpZiAobV94bWxEZWNsYXJhdGlvbkRhdGEtPm1faGFzRW5jb2RpbmcpIHsKLSAg
ICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiBlbmNvZGluZz1cIiIpOwotICAgICAgICAg
ICAgICAgIHByaW50U3RyaW5nKG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX2VuY29kaW5nKTsKLSAg
ICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlwiIik7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBpZiAobV94bWxEZWNsYXJhdGlvbkRhdGEtPm1faGFzU3RhbmRhbG9uZSkKLSAgICAg
ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiBzdGFuZGFsb25lPVwiJXNcIiIsIG1feG1sRGVj
bGFyYXRpb25EYXRhLT5tX3N0YW5kYWxvbmUgPyAieWVzIiA6ICJubyIpOwotICAgICAgICAgICAg
ZnByaW50ZihzdGRlcnIsICI/PiIpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2Fz
ZSBYTUxUb2tlblR5cGVzOjpET0NUWVBFOgotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJE
T0NUWVBFOiAiKTsKLSAgICAgICAgICAgIEFTU0VSVChtX2RvY3R5cGVEYXRhKTsKLSAgICAgICAg
ICAgIGZwcmludGYoc3RkZXJyLCAiPCFET0NUWVBFICIpOwotICAgICAgICAgICAgcHJpbnRTdHJp
bmcobV9kYXRhKTsKLSAgICAgICAgICAgIGlmIChtX2RvY3R5cGVEYXRhLT5tX2hhc1B1YmxpY0lk
ZW50aWZpZXIpIHsKLSAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiBQVUJMSUMgXCIi
KTsKLSAgICAgICAgICAgICAgICBwcmludFN0cmluZyhtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lk
ZW50aWZpZXIpOwotICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiXCIiKTsKLSAgICAg
ICAgICAgICAgICBpZiAobV9kb2N0eXBlRGF0YS0+bV9oYXNTeXN0ZW1JZGVudGlmaWVyKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiIFwiIik7Ci0gICAgICAgICAgICAg
ICAgICAgIHByaW50U3RyaW5nKG1fZG9jdHlwZURhdGEtPm1fc3lzdGVtSWRlbnRpZmllcik7Ci0g
ICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiXCIiKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG1fZG9jdHlwZURhdGEtPm1faGFzU3lzdGVtSWRl
bnRpZmllcikgewotICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiIFNZU1RFTSBcIiIp
OwotICAgICAgICAgICAgICAgIHByaW50U3RyaW5nKG1fZG9jdHlwZURhdGEtPm1fc3lzdGVtSWRl
bnRpZmllcik7Ci0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJcIiIpOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICI+Iik7Ci0gICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICBjYXNlIFhNTFRva2VuVHlwZXM6OkNEQVRBOgotICAgICAgICAgICAg
ZnByaW50ZihzdGRlcnIsICJDREFUQTogIik7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwg
IjwhW0NEQVRBWyIpOwotICAgICAgICAgICAgcHJpbnRTdHJpbmcobV9kYXRhKTsKLSAgICAgICAg
ICAgIGZwcmludGYoc3RkZXJyLCAiXV0+Iik7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAg
ICBjYXNlIFhNTFRva2VuVHlwZXM6OlN0YXJ0VGFnOgotICAgICAgICAgICAgZnByaW50ZihzdGRl
cnIsICJTdGFydCBUYWc6ICIpOwotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICI8Iik7Ci0g
ICAgICAgICAgICBpZiAoaGFzUHJlZml4KCkpIHsKLSAgICAgICAgICAgICAgICBwcmludFN0cmlu
ZyhtX3RhcmdldCk7Ci0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICI6Iik7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBwcmludFN0cmluZyhtX2RhdGEpOwotICAgICAgICAgICAg
cHJpbnRBdHRycygpOwotICAgICAgICAgICAgaWYgKHNlbGZDbG9zaW5nKCkpCi0gICAgICAgICAg
ICAgICAgZnByaW50ZihzdGRlcnIsICIvIik7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwg
Ij4iKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6
RW5kVGFnOgotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJFbmQgVGFnOiAiKTsKLSAgICAg
ICAgICAgIGZwcmludGYoc3RkZXJyLCAiPC8iKTsKLSAgICAgICAgICAgIGlmIChoYXNQcmVmaXgo
KSkgewotICAgICAgICAgICAgICAgIHByaW50U3RyaW5nKG1fdGFyZ2V0KTsKLSAgICAgICAgICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgIjoiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBy
aW50U3RyaW5nKG1fZGF0YSk7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIj4iKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6Q29tbWVudDoK
LSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ29tbWVudDogIik7Ci0gICAgICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIjwhLS0iKTsKLSAgICAgICAgICAgIHByaW50U3RyaW5nKG1fZGF0YSk7
Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIi0tPiIpOwotICAgICAgICAgICAgYnJlYWs7
Ci0KLSAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXI6Ci0gICAgICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIkNoYXJhY3RlcnM6ICIpOwotICAgICAgICAgICAgcHJpbnRTdHJpbmco
bV9kYXRhKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgWE1MVG9rZW5UeXBl
czo6RW50aXR5OgotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJFbnRpdHk6ICIpOwotICAg
ICAgICAgICAgZnByaW50ZihzdGRlcnIsICImIik7Ci0gICAgICAgICAgICBwcmludFN0cmluZyht
X2RhdGEpOwotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICI7Iik7Ci0gICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICBjYXNlIFhNTFRva2VuVHlwZXM6OkVuZE9mRmlsZToKLSAgICAgICAg
ICAgIGZwcmludGYoc3RkZXJyLCAiRU9GIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotCi0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiXG4iKTsKLSAgICB9Ci0jZW5kaWYgLy8gTkRF
QlVHCi0KLXByaXZhdGU6Ci0gICAgLy8gQXRvbWljWE1MVG9rZW4gbmVlZHMgdG8gc3RlYWwgc29t
ZSBvZiBvdXIgcG9pbnRlcnMgZnJvbSB1cwotICAgIC8vIEZJWE1FOiBhZGQgdGFrZSogZnVuY3Rp
b25zCi0gICAgZnJpZW5kIGNsYXNzIEF0b21pY1hNTFRva2VuOwotCi0gICAgLy8gInRhcmdldCIg
Zm9yIFByb2Nlc3NpbmdJbnN0cnVjdGlvbiwgInByZWZpeCIgZm9yIFN0YXJ0VGFnIGFuZCBFbmRU
YWcKLSAgICBEYXRhVmVjdG9yIG1fdGFyZ2V0OwotCi0gICAgLy8gRm9yIFhNTCBEZWNsYXJhdGlv
bgotICAgIE93blB0cjxYTUxEZWNsYXJhdGlvbkRhdGE+IG1feG1sRGVjbGFyYXRpb25EYXRhOwot
fTsKLQotY2xhc3MgQXRvbWljWE1MVG9rZW4gOiBwdWJsaWMgQXRvbWljTWFya3VwVG9rZW5CYXNl
PFhNTFRva2VuPiB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXRvbWljWE1MVG9rZW4pOwot
cHVibGljOgotICAgIEF0b21pY1hNTFRva2VuKFhNTFRva2VuJiB0b2tlbikKLSAgICAgICAgOiBB
dG9taWNNYXJrdXBUb2tlbkJhc2U8WE1MVG9rZW4+KCZ0b2tlbikKLSAgICB7Ci0gICAgICAgIHN3
aXRjaCAobV90eXBlKSB7Ci0gICAgICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6UHJvY2Vzc2luZ0lu
c3RydWN0aW9uOgotICAgICAgICAgICAgbV9uYW1lID0gQXRvbWljU3RyaW5nKHRva2VuLnRhcmdl
dCgpLmRhdGEoKSwgdG9rZW4udGFyZ2V0KCkuc2l6ZSgpKTsKLSAgICAgICAgICAgIG1fZGF0YSA9
IFN0cmluZyh0b2tlbi5kYXRhKCkuZGF0YSgpLCB0b2tlbi5kYXRhKCkuc2l6ZSgpKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFhNTFRva2VuVHlwZXM6OlhNTERlY2xhcmF0aW9u
OgotICAgICAgICAgICAgbV94bWxEZWNsYXJhdGlvbkRhdGEgPSB0b2tlbi5tX3htbERlY2xhcmF0
aW9uRGF0YS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBYTUxU
b2tlblR5cGVzOjpTdGFydFRhZzoKLSAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpFbmRUYWc6
IHsKLSAgICAgICAgICAgIGlmICh0b2tlbi5wcmVmaXgoKS5zaXplKCkpCi0gICAgICAgICAgICAg
ICAgbV9wcmVmaXggPSBBdG9taWNTdHJpbmcodG9rZW4ucHJlZml4KCkuZGF0YSgpLCB0b2tlbi5w
cmVmaXgoKS5zaXplKCkpOwotICAgICAgICAgICAgaW5pdGlhbGl6ZUF0dHJpYnV0ZXModG9rZW4u
YXR0cmlidXRlcygpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgWE1MVG9rZW5UeXBlczo6Q0RBVEE6Ci0gICAgICAgICAgICBtX2RhdGEgPSBTdHJpbmcodG9r
ZW4uZGF0YSgpLmRhdGEoKSwgdG9rZW4uZGF0YSgpLnNpemUoKSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBYTUxUb2tlblR5cGVzOjpFbnRpdHk6Ci0gICAgICAgICAgICBtX25h
bWUgPSBBdG9taWNTdHJpbmcodG9rZW4ubmFtZSgpLmRhdGEoKSwgdG9rZW4ubmFtZSgpLnNpemUo
KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQXRvbWljWE1MVG9rZW4oWE1MVG9rZW5UeXBl
czo6VHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxBdHRy
aWJ1dGU+JiBhdHRyaWJ1dGVzID0gVmVjdG9yPEF0dHJpYnV0ZT4oKSkKLSAgICAgICAgOiBBdG9t
aWNNYXJrdXBUb2tlbkJhc2U8WE1MVG9rZW4+KHR5cGUsIG5hbWUsIGF0dHJpYnV0ZXMpCi0gICAg
ewotICAgIH0KLQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4KCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90
eXBlID09IFhNTFRva2VuVHlwZXM6OkVuZFRhZyk7Ci0gICAgICAgIHJldHVybiBtX3ByZWZpeDsK
LSAgICB9Ci0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHRhcmdldCgpIGNvbnN0Ci0gICAgewot
ICAgICAgICBBU1NFUlQobV90eXBlID09IFhNTFRva2VuVHlwZXM6OlByb2Nlc3NpbmdJbnN0cnVj
dGlvbik7Ci0gICAgICAgIHJldHVybiBtX25hbWU7Ci0gICAgfQotCi0gICAgY29uc3QgU3RyaW5n
JiBkYXRhKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gWE1MVG9rZW5U
eXBlczo6Q0RBVEEgfHwgbV90eXBlID09IFhNTFRva2VuVHlwZXM6OlByb2Nlc3NpbmdJbnN0cnVj
dGlvbik7Ci0gICAgICAgIHJldHVybiBtX2RhdGE7Ci0gICAgfQotCi0gICAgV1RGOjpWZWN0b3I8
VUNoYXI+JiB4bWxWZXJzaW9uKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUg
PT0gWE1MVG9rZW5UeXBlczo6WE1MRGVjbGFyYXRpb24pOwotICAgICAgICByZXR1cm4gbV94bWxE
ZWNsYXJhdGlvbkRhdGEtPm1fdmVyc2lvbjsKLSAgICB9Ci0KLSAgICBib29sIHhtbFN0YW5kYWxv
bmUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBYTUxUb2tlblR5cGVz
OjpYTUxEZWNsYXJhdGlvbik7Ci0gICAgICAgIHJldHVybiBtX3htbERlY2xhcmF0aW9uRGF0YS0+
bV9oYXNTdGFuZGFsb25lICYmIG1feG1sRGVjbGFyYXRpb25EYXRhLT5tX3N0YW5kYWxvbmU7Ci0g
ICAgfQotCi1wcml2YXRlOgotICAgIC8vICJwcmVmaXgiIGZvciBTdGFydFRhZywgRW5kVGFnCi0g
ICAgQXRvbWljU3RyaW5nIG1fcHJlZml4OwotCi0gICAgLy8gRm9yIFhNTCBkZWNsYXJhdGlvbgot
ICAgIE93blB0cjxYTUxUb2tlbjo6WE1MRGVjbGFyYXRpb25EYXRhPiBtX3htbERlY2xhcmF0aW9u
RGF0YTsKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTFRva2VuaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTFRv
a2VuaXplci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyMjMwMTk0OTY0NWMz
NmRlMjVhZjU2NmI5N2UzZjMwOTAxZjE4ZTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUb2tlbml6ZXIu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTA2MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykg
MjAwOSBUb3JjaCBNb2JpbGUsIEluYy4gaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiWE1MVG9rZW5pemVyLmgiCi0KLSNpbmNsdWRlICJNYXJrdXBUb2tlbml6
ZXJJbmxpbmVzLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJYTUxD
aGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXIuaCIKLSNpbmNsdWRlICJYTUxUb2tlbi5oIgotI2luY2x1
ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+Ci0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0jaW5j
bHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5n
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdURjsKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi0vLyBUaGlzIGhhcyB0byBnbyBpbiBhIC5jcHAgZmlsZSwgYXMgdGhlIGxpbmtlciBk
b2Vzbid0IGxpa2UgaXQgYmVpbmcgaW5jbHVkZWQgbW9yZSB0aGFuIG9uY2UuCi0vLyBXZSBkb24n
dCBoYXZlIGFuIFhNTFRva2VuLmNwcCB0aG91Z2gsIHNvIHRoaXMgaXMgdGhlIG5leHQgYmVzdCBw
bGFjZS4KLXRlbXBsYXRlPD4KLVF1YWxpZmllZE5hbWUgQXRvbWljTWFya3VwVG9rZW5CYXNlPFhN
TFRva2VuPjo6bmFtZUZvckF0dHJpYnV0ZShjb25zdCBYTUxUb2tlbjo6QXR0cmlidXRlJiBhdHRy
aWJ1dGUpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFF1YWxpZmllZE5hbWUoYXR0cmlidXRlLm1fcHJl
Zml4LmlzRW1wdHkoKSA/IG51bGxBdG9tIDogQXRvbWljU3RyaW5nKGF0dHJpYnV0ZS5tX3ByZWZp
eC5kYXRhKCksIGF0dHJpYnV0ZS5tX3ByZWZpeC5zaXplKCkpLCBBdG9taWNTdHJpbmcoYXR0cmli
dXRlLm1fbmFtZS5kYXRhKCksIGF0dHJpYnV0ZS5tX25hbWUuc2l6ZSgpKSwgbnVsbEF0b20pOwot
fQotCi10ZW1wbGF0ZTw+Ci1ib29sIEF0b21pY01hcmt1cFRva2VuQmFzZTxYTUxUb2tlbj46OnVz
ZXNOYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV90eXBlID09IFhNTFRva2VuVHlwZXM6OlN0
YXJ0VGFnIHx8IG1fdHlwZSA9PSBYTUxUb2tlblR5cGVzOjpFbmRUYWcgfHwgbV90eXBlID09IFhN
TFRva2VuVHlwZXM6OkRPQ1RZUEUgfHwgbV90eXBlID09IFhNTFRva2VuVHlwZXM6OkVudGl0eTsK
LX0KLQotdGVtcGxhdGU8PgotYm9vbCBBdG9taWNNYXJrdXBUb2tlbkJhc2U8WE1MVG9rZW4+Ojp1
c2VzQXR0cmlidXRlcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdHlwZSA9PSBYTUxUb2tlblR5
cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gWE1MVG9rZW5UeXBlczo6RW5kVGFnOwotfQotCi1u
YW1lc3BhY2UgewotCi1pbmxpbmUgYm9vbCBpc1ZhbGlkTmFtZVN0YXJ0KFVDaGFyIGNjKQotewot
ICAgIGlmIChjYyA8PSAweDQwKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGNjIDw9
IDB4NUEpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChjYyA9PSAweDVGKQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoY2MgPD0gMHg2MCkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmIChjYyA8PSAweDdBKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoY2Mg
PCAweEMwKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGNjIDw9IDB4RDYpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIGlmIChjYyA9PSAweEQ4KQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKGNjIDw9IDB4RjYpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChj
YyA9PSAweEY3KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGNjIDw9IDB4MkZGKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoY2MgPCAweDM3MCkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmIChjYyA8PSAweDM3RCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
aWYgKGNjID09IDB4MzdFKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGNjIDw9IDB4
MUZGRikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGNjIDwgMHgyMDBDKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGNjIDw9IDB4MjAwRCkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgaWYgKGNjIDwgMHgyMDcwKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYg
KGNjIDw9IDB4MjE4RikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGNjIDwgMHgyQzAw
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGNjIDw9IDB4MkZFRikKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgaWYgKGNjIDwgMHgzMDAxKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaWYgKGNjIDw9IDB4RDdGRikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGNj
IDwgMHhGOTAwKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGNjIDw9IDB4RkRDRikK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGNjIDwgMHhGREYwKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKGNjIDw9IDB4RkZGRCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICAvLyBGSVhNRTogc3VwcG9ydCBub24tQk1QIHBsYW5lcwotCi0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi1pbmxpbmUgYm9vbCBpc1ZhbGlkTmFtZUNoYXIoVUNoYXIgY2MpCi17Ci0gICAgaWYg
KGlzVmFsaWROYW1lU3RhcnQoY2MpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoY2Mg
PT0gJy0nIHx8IGNjID09ICcuJykKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGNjIDwg
MHgzMCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChjYyA8IDB4M0EpCi0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIGlmIChjYyA8IDB4MDMwMCkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmIChjYyA8PSAweDAzNkYpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChj
YyA8IDB4MjAzRikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChjYyA8PSAweDIwNDAp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1pbmxpbmUg
Ym9vbCBpc1ZhbGlkTGl0ZXJhbENoYXIoVUNoYXIgY2MpCi17Ci0gICAgaWYgKGNjID09IDB4RCB8
fCBjYyA9PSAweEEpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChjYyA8IDB4MjApCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoY2MgPT0gJyInIHx8IGNjID09ICcmJykKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChjYyA8IDB4M0MpCi0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIGlmIChjYyA9PSAnPCcgfHwgY2MgPT0gJz4nKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKGNjIDwgMHg1QikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGNj
ID09ICdfJykKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGNjIDw9IDB4NjApCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoY2MgPCAweDdCKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfQotCi0jZGVmaW5lIFhNTF9CRUdJTl9TVEFU
RShzdGF0ZU5hbWUpIEJFR0lOX1NUQVRFKFhNTFRva2VuaXplclN0YXRlLCBzdGF0ZU5hbWUpCi0j
ZGVmaW5lIFhNTF9BRFZBTkNFX1RPKHN0YXRlTmFtZSkgQURWQU5DRV9UTyhYTUxUb2tlbml6ZXJT
dGF0ZSwgc3RhdGVOYW1lKQotI2RlZmluZSBYTUxfU1dJVENIX1RPKHN0YXRlTmFtZSkgU1dJVENI
X1RPKFhNTFRva2VuaXplclN0YXRlLCBzdGF0ZU5hbWUpCi0KLSNkZWZpbmUgRVFfU1RBVEUoQ3Vy
cmVudFN0YXRlLCBOZXh0U3RhdGUpIFwKLSAgICBYTUxfQkVHSU5fU1RBVEUoQ3VycmVudFN0YXRl
KSB7ICAgICAgIFwKLSAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpICAgIFwK
LSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEN1cnJlbnRTdGF0ZSk7IFwKLSAgICAgICAgZWxz
ZSBpZiAoY2MgPT0gJz0nKSAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIFhNTF9BRFZBTkNF
X1RPKE5leHRTdGF0ZSk7ICAgIFwKLSAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsgICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7IFwKLSAgICAgICAgfSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICBFTkRfU1RBVEUoKQotCi0jZGVmaW5lIEVRX0JFRk9SRV9W
QUxVRV9TVEFURVMoRXF1YWxzU3RhdGUsIEJlZm9yZVZhbHVlU3RhdGUsIFZhbHVlU3RhdGUpIFwK
LSAgICBFUV9TVEFURShFcXVhbHNTdGF0ZSwgQmVmb3JlVmFsdWVTdGF0ZSkgICAgXAotICAgIFhN
TF9CRUdJTl9TVEFURShCZWZvcmVWYWx1ZVN0YXRlKSB7ICAgICAgICBcCi0gICAgICAgIGlmIChp
c1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKSAgICAgICAgIFwKLSAgICAgICAgICAgIFhNTF9BRFZB
TkNFX1RPKEJlZm9yZVZhbHVlU3RhdGUpOyAgXAotICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicg
fHwgY2MgPT0gJ1wnJykgeyAgICBcCi0gICAgICAgICAgICBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hh
cmFjdGVyID0gY2M7IFwKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFZhbHVlU3RhdGUpOyAg
ICAgICAgXAotICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgICAgICAgICBwYXJzZUVycm9yKCk7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7ICAgICAgXAotICAgICAgICB9ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBFTkRfU1RBVEUoKQotCi1YTUxUb2tl
bml6ZXI6OlhNTFRva2VuaXplcigpCi17Ci0gICAgcmVzZXQoKTsKLX0KLQotdGVtcGxhdGU8Pgot
aW5saW5lIGJvb2wgTWFya3VwVG9rZW5pemVyQmFzZTxYTUxUb2tlbiwgWE1MVG9rZW5pemVyU3Rh
dGU+OjpzaG91bGRTa2lwTnVsbENoYXJhY3RlcnMoKSBjb25zdAotewotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQotYm9vbCBYTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNv
dXJjZSwgWE1MVG9rZW4mIHRva2VuKQotewotICAgIC8vIElmIHdlIGhhdmUgYSB0b2tlbiBpbiBw
cm9ncmVzcywgdGhlbiB3ZSdyZSBzdXBwb3NlZCB0byBiZSBjYWxsZWQgYmFjawotICAgIC8vIHdp
dGggdGhlIHNhbWUgdG9rZW4gc28gd2UgY2FuIGZpbmlzaCBpdC4KLSAgICBBU1NFUlQoIW1fdG9r
ZW4gfHwgbV90b2tlbiA9PSAmdG9rZW4gfHwgdG9rZW4udHlwZSgpID09IFhNTFRva2VuVHlwZXM6
OlVuaW5pdGlhbGl6ZWQpOwotICAgIG1fdG9rZW4gPSAmdG9rZW47Ci0KLSAgICBpZiAoc291cmNl
LmlzRW1wdHkoKSB8fCAhbV9pbnB1dFN0cmVhbVByZXByb2Nlc3Nvci5wZWVrKHNvdXJjZSkpCi0g
ICAgICAgIHJldHVybiBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOwotICAgIFVDaGFyIGNj
ID0gbV9pbnB1dFN0cmVhbVByZXByb2Nlc3Nvci5uZXh0SW5wdXRDaGFyYWN0ZXIoKTsKLQotICAg
IHN3aXRjaCAobV9zdGF0ZSkgewotICAgIFhNTF9CRUdJTl9TVEFURShEYXRhU3RhdGUpIHsKLSAg
ICAgICAgaWYgKGNjID09ICcmJykKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKENoYXJhY3Rl
clJlZmVyZW5jZVN0YXJ0U3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSAnPCcpIHsKLSAg
ICAgICAgICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gWE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVy
KSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBhIGJ1bmNoIG9mIGNoYXJhY3RlciB0b2tl
bnMgcXVldWVkIHVwIHRoYXQgd2UKLSAgICAgICAgICAgICAgICAvLyBhcmUgZW1pdHRpbmcgbGF6
aWx5IGhlcmUuCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhUYWdPcGVuU3RhdGUpOwotICAgICAgICB9IGVsc2Ug
aWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpCi0gICAg
ICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBYTUxfQURWQU5DRV9U
TyhEYXRhU3RhdGUpOwotICAgICAgICB9Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBY
TUxfQkVHSU5fU1RBVEUoQ2hhcmFjdGVyUmVmZXJlbmNlU3RhcnRTdGF0ZSkgewotICAgICAgICBp
ZiAoY2MgPT0gJyMnKSB7Ci0gICAgICAgICAgICBib29sIG5vdEVub3VnaENoYXJhY3RlcnMgPSBm
YWxzZTsKLSAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgZGVjb2RlZENoYXJhY3RlcjsKLSAgICAg
ICAgICAgIGlmIChjb25zdW1lWE1MQ2hhcmFjdGVyUmVmZXJlbmNlKHNvdXJjZSwgZGVjb2RlZENo
YXJhY3Rlciwgbm90RW5vdWdoQ2hhcmFjdGVycykpIHsKLSAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZGVjb2RlZENoYXJhY3Rlci5sZW5ndGgoKTsgKytpKQotICAgICAg
ICAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoZGVjb2RlZENoYXJhY3RlcltpXSk7Ci0gICAg
ICAgICAgICAgICAgWE1MX1NXSVRDSF9UTyhEYXRhU3RhdGUpOwotICAgICAgICAgICAgfSBlbHNl
IGlmIChub3RFbm91Z2hDaGFyYWN0ZXJzKQotICAgICAgICAgICAgICAgIHJldHVybiBoYXZlQnVm
ZmVyZWRDaGFyYWN0ZXJUb2tlbigpOwotICAgICAgICB9IGVsc2UgaWYgKGlzVmFsaWROYW1lU3Rh
cnQoY2MpKSB7Ci0gICAgICAgICAgICBpZiAobV90b2tlbi0+dHlwZSgpID09IFhNTFRva2VuVHlw
ZXM6OkNoYXJhY3RlcikKLSAgICAgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUlu
KHNvdXJjZSwgWE1MVG9rZW5pemVyU3RhdGU6OkNoYXJhY3RlclJlZmVyZW5jZVN0YXJ0U3RhdGUp
OwotICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5FbnRpdHkoY2MpOwotICAgICAgICAgICAgWE1M
X0FEVkFOQ0VfVE8oRW50aXR5UmVmZXJlbmNlU3RhdGUpOwotICAgICAgICB9Ci0gICAgICAgIHBh
cnNlRXJyb3IoKTsKLSAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICB9
Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIFhNTF9CRUdJTl9TVEFURShFbnRpdHlSZWZlcmVuY2VT
dGF0ZSkgewotICAgICAgICBpZiAoaXNWYWxpZE5hbWVDaGFyKGNjKSkgewotICAgICAgICAgICAg
bV90b2tlbi0+YXBwZW5kVG9OYW1lKGNjKTsKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEVu
dGl0eVJlZmVyZW5jZVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnOycpCi0gICAg
ICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgWE1MVG9rZW5pemVyU3RhdGU6
OkRhdGFTdGF0ZSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcGFyc2VFcnJvcigpOwot
ICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICAgICAgfQotICAg
IH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKFRhZ09wZW5TdGF0ZSkg
ewotICAgICAgICBpZiAoY2MgPT0gJyEnKQotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oTWFy
a3VwRGVjbGFyYXRpb25PcGVuU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSAnLycpCi0g
ICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhFbmRUYWdPcGVuU3RhdGUpOwotICAgICAgICBlbHNl
IGlmIChpc1ZhbGlkTmFtZVN0YXJ0KGNjKSkgewotICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5T
dGFydFRhZyhjYyk7Ci0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhUYWdOYW1lU3RhdGUpOwot
ICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc/JykKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RP
KFByb2Nlc3NpbmdJbnN0cnVjdGlvblRhcmdldFN0YXJ0U3RhdGUpOwotICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZG
aWxlKHNvdXJjZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIFhN
TF9CRUdJTl9TVEFURShFbmRUYWdPcGVuU3RhdGUpIHsKLSAgICAgICAgaWYgKGlzVmFsaWROYW1l
U3RhcnQoY2MpKSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkVuZFRhZyhjYyk7Ci0gICAg
ICAgICAgICBYTUxfQURWQU5DRV9UTyhFbmRUYWdOYW1lU3RhdGUpOwotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRP
ZkZpbGUoc291cmNlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAg
WE1MX0JFR0lOX1NUQVRFKFRhZ05hbWVTdGF0ZSkgewotICAgICAgICBpZiAoaXNUb2tlbml6ZXJX
aGl0ZXNwYWNlKGNjKSkKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEJlZm9yZUF0dHJpYnV0
ZU5hbWVTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICcvJykKLSAgICAgICAgICAgIFhN
TF9BRFZBTkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYg
KGNjID09ICc+JykKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBY
TUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoaXNWYWxpZE5h
bWVDaGFyKGNjKSkgewotICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9OYW1lKGNjKTsKLSAg
ICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFRhZ05hbWVTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAoY2MgPT0gJzonICYmICFtX3Rva2VuLT5oYXNQcmVmaXgoKSkgewotICAgICAgICAgICAgbV90
b2tlbi0+ZW5kUHJlZml4KCk7Ci0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhUYWdOYW1lU3Rh
dGUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAg
ICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICAgICAgfQotICAgIH0KLSAg
ICBFTkRfU1RBVEUoKQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKEVuZFRhZ05hbWVTdGF0ZSkgewot
ICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKLSAgICAgICAgICAgIFhNTF9B
RFZBTkNFX1RPKEVuZFRhZ1NwYWNlU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicp
Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgWE1MVG9rZW5pemVy
U3RhdGU6OkRhdGFTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGlzVmFsaWROYW1lQ2hhcihjYykp
IHsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvTmFtZShjYyk7Ci0gICAgICAgICAgICBY
TUxfQURWQU5DRV9UTyhFbmRUYWdOYW1lU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID09
ICc6JyAmJiAhbV90b2tlbi0+aGFzUHJlZml4KCkpIHsKLSAgICAgICAgICAgIG1fdG9rZW4tPmVu
ZFByZWZpeCgpOwotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oRW5kVGFnTmFtZVN0YXRlKTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAg
IHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5E
X1NUQVRFKCkKLQotICAgIFhNTF9CRUdJTl9TVEFURShFbmRUYWdTcGFjZVN0YXRlKSB7Ci0gICAg
ICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQotICAgICAgICAgICAgWE1MX0FEVkFO
Q0VfVE8oRW5kVGFnU3BhY2VTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKLSAg
ICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBYTUxUb2tlbml6ZXJTdGF0
ZTo6RGF0YVN0YXRlKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBwYXJzZUVycm9yKCk7
Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAgICAgICB9Ci0g
ICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUoQmVmb3JlQXR0cmli
dXRlTmFtZVN0YXRlKSB7Ci0gICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQot
ICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKLSAg
ICAgICAgZWxzZSBpZiAoY2MgPT0gJy8nKQotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oU2Vs
ZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQotICAg
ICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIFhNTFRva2VuaXplclN0YXRl
OjpEYXRhU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChpc1ZhbGlkTmFtZVN0YXJ0KGNjKSkgewot
ICAgICAgICAgICAgbV90b2tlbi0+YWRkTmV3QXR0cmlidXRlKCk7Ci0gICAgICAgICAgICBtX3Rv
a2VuLT5iZWdpbkF0dHJpYnV0ZU5hbWUoc291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVk
KCkpOwotICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVOYW1lKGNjKTsKLSAg
ICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEF0dHJpYnV0ZU5hbWVTdGF0ZSk7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1p
dEVuZE9mRmlsZShzb3VyY2UpOwotICAgICAgICB9Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0K
LSAgICBYTUxfQkVHSU5fU1RBVEUoQXR0cmlidXRlTmFtZVN0YXRlKSB7Ci0gICAgICAgIGlmIChp
c1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5lbmRBdHRy
aWJ1dGVOYW1lKHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKLSAgICAgICAg
ICAgIFhNTF9BRFZBTkNFX1RPKEFmdGVyQXR0cmlidXRlTmFtZVN0YXRlKTsKLSAgICAgICAgfSBl
bHNlIGlmIChjYyA9PSAnPScpIHsKLSAgICAgICAgICAgIG1fdG9rZW4tPmVuZEF0dHJpYnV0ZU5h
bWUoc291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkpOwotICAgICAgICAgICAgWE1M
X0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlVmFsdWVTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAoaXNWYWxpZE5hbWVDaGFyKGNjKSkgewotICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9B
dHRyaWJ1dGVOYW1lKGNjKTsKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEF0dHJpYnV0ZU5h
bWVTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJzonICYmICFtX3Rva2VuLT5hdHRy
aWJ1dGVIYXNQcmVmaXgoKSkgewotICAgICAgICAgICAgbV90b2tlbi0+ZW5kQXR0cmlidXRlUHJl
Zml4KHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKLSAgICAgICAgICAgIFhN
TF9BRFZBTkNFX1RPKEF0dHJpYnV0ZU5hbWVTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICBtX3Rva2VuLT5lbmRBdHRyaWJ1dGVO
YW1lKHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKLSAgICAgICAgICAgIHJl
dHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5EX1NU
QVRFKCkKLQotICAgIEVRX1NUQVRFKEFmdGVyQXR0cmlidXRlTmFtZVN0YXRlLCBCZWZvcmVBdHRy
aWJ1dGVWYWx1ZVN0YXRlKQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKEJlZm9yZUF0dHJpYnV0ZVZh
bHVlU3RhdGUpIHsKLSAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCi0gICAg
ICAgICAgICBYTUxfQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKLSAgICAg
ICAgZWxzZSBpZiAoY2MgPT0gJyInIHx8IGNjID09ICdcJycpIHsKLSAgICAgICAgICAgIG1fdG9r
ZW4tPmJlZ2luQXR0cmlidXRlVmFsdWUoc291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVk
KCkgKyAxKTsKLSAgICAgICAgICAgIG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPSBjYzsK
LSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEF0dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGUpOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAg
cmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRf
U1RBVEUoKQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKEF0dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGUp
IHsKLSAgICAgICAgaWYgKGNjID09IG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIpIHsKLSAg
ICAgICAgICAgIG1fdG9rZW4tPmVuZEF0dHJpYnV0ZVZhbHVlKHNvdXJjZS5udW1iZXJPZkNoYXJh
Y3RlcnNDb25zdW1lZCgpKTsKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEFmdGVyQXR0cmli
dXRlVmFsdWVRdW90ZWRTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJyYnKQotICAg
ICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGVWYWx1
ZVN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPT0gJzwnIHx8IGNjID09IElucHV0U3RyZWFt
UHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKLSAgICAgICAgICAgIHBhcnNlRXJyb3Io
KTsKLSAgICAgICAgICAgIG1fdG9rZW4tPmVuZEF0dHJpYnV0ZVZhbHVlKHNvdXJjZS5udW1iZXJP
ZkNoYXJhY3RlcnNDb25zdW1lZCgpKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxl
KHNvdXJjZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRU
b0F0dHJpYnV0ZVZhbHVlKGNjKTsKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEF0dHJpYnV0
ZVZhbHVlUXVvdGVkU3RhdGUpOwotICAgICAgICB9Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0K
LSAgICBYTUxfQkVHSU5fU1RBVEUoQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGVWYWx1ZVN0
YXRlKSB7Ci0gICAgICAgIGlmIChjYyA9PSAnIycpIHsKLSAgICAgICAgICAgIGJvb2wgbm90RW5v
dWdoQ2hhcmFjdGVycyA9IGZhbHNlOwotICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBkZWNvZGVk
Q2hhcmFjdGVyOwotICAgICAgICAgICAgc291cmNlLnB1c2goY2MpOwotICAgICAgICAgICAgaWYg
KGNvbnN1bWVYTUxDaGFyYWN0ZXJSZWZlcmVuY2Uoc291cmNlLCBkZWNvZGVkQ2hhcmFjdGVyLCBu
b3RFbm91Z2hDaGFyYWN0ZXJzKSkgewotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBkZWNvZGVkQ2hhcmFjdGVyLmxlbmd0aCgpOyArK2kpCi0gICAgICAgICAgICAgICAg
ICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoZGVjb2RlZENoYXJhY3RlcltpXSk7
Ci0gICAgICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVRdW90ZWRTdGF0
ZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG5vdEVub3VnaENoYXJhY3RlcnMpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7Ci0gICAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoJyYnKTsK
LSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoY2MpOwotICAgICAg
ICAgICAgWE1MX0FEVkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVRdW90ZWRTdGF0ZSk7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIFhNTF9CRUdJTl9TVEFURShBZnRlckF0
dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGUpIHsKLSAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVz
cGFjZShjYykpCi0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVOYW1l
U3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSAnLycpCi0gICAgICAgICAgICBYTUxfQURW
QU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9
PSAnPicpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgWE1MVG9r
ZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcGFy
c2VFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAg
ICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKFNl
bGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSkgewotICAgICAgICBpZiAoY2MgPT0gJz4nKSB7Ci0gICAg
ICAgICAgICBtX3Rva2VuLT5zZXRTZWxmQ2xvc2luZygpOwotICAgICAgICAgICAgcmV0dXJuIGVt
aXRBbmRSZXN1bWVJbihzb3VyY2UsIFhNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwotICAg
ICAgICB9Ci0gICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZp
bGUoc291cmNlKTsKLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIFhNTF9CRUdJTl9TVEFU
RShQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UYXJnZXRTdGFydFN0YXRlKSB7Ci0gICAgICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB4bWxTdHJpbmcsIChBU0NJSUxpdGVyYWwoInhtbCIpKSk7
Ci0gICAgICAgIC8vIEZJWE1FOiB0aGlzIHByb2JhYmx5IHNob3VsZG4ndCBiZSBjYXNlLWluc2Vu
c2l0aXZlLCBidXQgSSBkb24ndCBrbm93IGlmIHBlb3BsZSB0cnkgY2FwaXRhbGl6aW5nIGl0IGV2
ZXIuCi0gICAgICAgIGlmIChjYyA9PSAneCcgfHwgY2MgPT0gJ1gnKSB7Ci0gICAgICAgICAgICBT
ZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFk
SWdub3JpbmdDYXNlKHhtbFN0cmluZyk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21l
bnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKLSAgICAgICAgICAgICAgICBhZHZhbmNlU3RyaW5nQW5k
QVNTRVJUSWdub3JpbmdDYXNlKHNvdXJjZSwgInhtbCIpOwotICAgICAgICAgICAgICAgIFhNTF9T
V0lUQ0hfVE8oWE1MRGVjbEFmdGVyWE1MU3RhdGUpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChy
ZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQotICAgICAgICAg
ICAgICAgIHJldHVybiBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOwotICAgICAgICB9Ci0g
ICAgICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gWE1MVG9rZW5UeXBlczo6UHJvY2Vzc2luZ0lu
c3RydWN0aW9uICYmIGlzVmFsaWROYW1lQ2hhcihjYykpCi0gICAgICAgICAgICBtX3Rva2VuLT5h
cHBlbmRUb1Byb2Nlc3NpbmdJbnN0cnVjdGlvblRhcmdldChjYyk7Ci0gICAgICAgIGVsc2UgaWYg
KGlzVmFsaWROYW1lU3RhcnQoY2MpKQotICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5Qcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24oY2MpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHBhcnNlRXJy
b3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgICAg
IH0KLSAgICAgICAgWE1MX0FEVkFOQ0VfVE8oUHJvY2Vzc2luZ0luc3RydWN0aW9uVGFyZ2V0U3Rh
dGUpOwotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKFhNTERl
Y2xBZnRlclhNTFN0YXRlKSB7Ci0gICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2Mp
KSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5iZWdpblhNTERlY2xhcmF0aW9uKCk7Ci0gICAgICAg
ICAgICBYTUxfQURWQU5DRV9UTyhYTUxEZWNsQmVmb3JlVmVyc2lvbk5hbWVTdGF0ZSk7Ci0gICAg
ICAgIH0gZWxzZSBpZiAoaXNWYWxpZE5hbWVDaGFyKGNjKSkgewotICAgICAgICAgICAgbV90b2tl
bi0+YmVnaW5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oJ3gnKTsKLSAgICAgICAgICAgIG1fdG9rZW4t
PmFwcGVuZFRvUHJvY2Vzc2luZ0luc3RydWN0aW9uVGFyZ2V0KCdtJyk7Ci0gICAgICAgICAgICBt
X3Rva2VuLT5hcHBlbmRUb1Byb2Nlc3NpbmdJbnN0cnVjdGlvblRhcmdldCgnbCcpOwotICAgICAg
ICAgICAgbV90b2tlbi0+YXBwZW5kVG9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UYXJnZXQoY2MpOwot
ICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oUHJvY2Vzc2luZ0luc3RydWN0aW9uVGFyZ2V0U3Rh
dGUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcGFyc2VFcnJvcigp
OwotICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICAgICAgfQot
ICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKFhNTERlY2xCZWZv
cmVWZXJzaW9uTmFtZVN0YXRlKSB7Ci0gICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5n
LCB2ZXJzaW9uU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJ2ZXJzaW9uIikpKTsKLSAgICAgICAgaWYg
KGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCi0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhY
TUxEZWNsQmVmb3JlVmVyc2lvbk5hbWVTdGF0ZSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tB
aGVhZCh2ZXJzaW9uU3RyaW5nKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVk
U3RyaW5nOjpEaWRNYXRjaCkgewotICAgICAgICAgICAgICAgIGFkdmFuY2VTdHJpbmdBbmRBU1NF
UlQoc291cmNlLCAidmVyc2lvbiIpOwotICAgICAgICAgICAgICAgIFhNTF9TV0lUQ0hfVE8oWE1M
RGVjbEFmdGVyVmVyc2lvbk5hbWVTdGF0ZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3Vs
dCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgcGFyc2VFcnJvcigpOwotICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwot
ICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgRVFfQkVGT1JFX1ZBTFVFX1NUQVRFUyhYTUxE
ZWNsQWZ0ZXJWZXJzaW9uTmFtZVN0YXRlLCBYTUxEZWNsQmVmb3JlVmVyc2lvblZhbHVlU3RhdGUs
IFhNTERlY2xCZWZvcmVWZXJzaW9uT25lUG9pbnRTdGF0ZSkKLQotICAgIFhNTF9CRUdJTl9TVEFU
RShYTUxEZWNsQmVmb3JlVmVyc2lvbk9uZVBvaW50U3RhdGUpIHsKLSAgICAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIG9uZVBvaW50U3RyaW5nLCAoQVNDSUlMaXRlcmFsKCIxLiIpKSk7
Ci0gICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJj
ZS5sb29rQWhlYWQob25lUG9pbnRTdHJpbmcpOwotICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21l
bnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKLSAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNT
RVJUKCcxJyk7Ci0gICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVCgnLicpOwotICAg
ICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9YTUxWZXJzaW9uKCcxJyk7Ci0gICAgICAgICAgICBt
X3Rva2VuLT5hcHBlbmRUb1hNTFZlcnNpb24oJy4nKTsKLSAgICAgICAgICAgIFhNTF9TV0lUQ0hf
VE8oWE1MRGVjbFZlcnNpb25WYWx1ZVF1b3RlZFN0YXRlKTsKLSAgICAgICAgfSBlbHNlIGlmIChy
ZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQotICAgICAgICAg
ICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7Ci0gICAgICAgIHBhcnNlRXJy
b3IoKTsKLSAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICB9Ci0gICAg
RU5EX1NUQVRFKCkKLQotICAgIFhNTF9CRUdJTl9TVEFURShYTUxEZWNsVmVyc2lvblZhbHVlUXVv
dGVkU3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09IG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0
ZXIpIHsKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFhNTERlY2xBZnRlclZlcnNpb25TdGF0
ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNBU0NJSURpZ2l0KGNjKSkgewotICAgICAgICAgICAg
bV90b2tlbi0+YXBwZW5kVG9YTUxWZXJzaW9uKGNjKTsKLSAgICAgICAgICAgIFhNTF9BRFZBTkNF
X1RPKFhNTERlY2xWZXJzaW9uVmFsdWVRdW90ZWRTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmls
ZShzb3VyY2UpOwotICAgICAgICB9Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBYTUxf
QkVHSU5fU1RBVEUoWE1MRGVjbEFmdGVyVmVyc2lvblN0YXRlKSB7Ci0gICAgICAgIGlmIChpc1Rv
a2VuaXplcldoaXRlc3BhY2UoY2MpKQotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oWE1MRGVj
bEJlZm9yZUVuY29kaW5nTmFtZVN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz8nKQot
ICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oWE1MRGVjbENsb3NlU3RhdGUpOwotICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0
RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQot
ICAgIFhNTF9CRUdJTl9TVEFURShYTUxEZWNsQmVmb3JlRW5jb2RpbmdOYW1lU3RhdGUpIHsKLSAg
ICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGVuY29kaW5nU3RyaW5nLCAoQVNDSUlM
aXRlcmFsKCJlbmNvZGluZyIpKSk7Ci0gICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5n
LCBzdGFuZGFsb25lU3RyaW5nLCAoQVNDSUlMaXRlcmFsKCJzdGFuZGFsb25lIikpKTsKLSAgICAg
ICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCi0gICAgICAgICAgICBYTUxfQURWQU5D
RV9UTyhYTUxEZWNsQmVmb3JlRW5jb2RpbmdOYW1lU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChj
YyA9PSAnZScpIHsKLSAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0
IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWQoZW5jb2RpbmdTdHJpbmcpOwotICAgICAgICAgICAg
aWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7Ci0gICAgICAgICAgICAg
ICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVChzb3VyY2UsICJlbmNvZGluZyIpOwotICAgICAgICAg
ICAgICAgIFhNTF9TV0lUQ0hfVE8oWE1MRGVjbEFmdGVyRW5jb2RpbmdOYW1lU3RhdGUpOwotICAg
ICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hD
aGFyYWN0ZXJzKQotICAgICAgICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVyZWRDaGFyYWN0ZXJU
b2tlbigpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdzJykgewotICAgICAgICAgICAgU2Vn
bWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZChz
dGFuZGFsb25lU3RyaW5nKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3Ry
aW5nOjpEaWRNYXRjaCkgewotICAgICAgICAgICAgICAgIGFkdmFuY2VTdHJpbmdBbmRBU1NFUlQo
c291cmNlLCAic3RhbmRhbG9uZSIpOwotICAgICAgICAgICAgICAgIFhNTF9TV0lUQ0hfVE8oWE1M
RGVjbEFmdGVyU3RhbmRhbG9uZU5hbWVTdGF0ZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHJl
c3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoY2MgPT0gJz8nKQotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oWE1MRGVjbENsb3Nl
U3RhdGUpOwotICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgIHJldHVybiBlbWl0RW5kT2ZG
aWxlKHNvdXJjZSk7Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBFUV9CRUZPUkVfVkFM
VUVfU1RBVEVTKFhNTERlY2xBZnRlckVuY29kaW5nTmFtZVN0YXRlLCBYTUxEZWNsQmVmb3JlRW5j
b2RpbmdWYWx1ZVN0YXRlLCBYTUxEZWNsRW5jb2RpbmdWYWx1ZVN0YXJ0UXVvdGVkU3RhdGUpCi0K
LSAgICBYTUxfQkVHSU5fU1RBVEUoWE1MRGVjbEVuY29kaW5nVmFsdWVTdGFydFF1b3RlZFN0YXRl
KSB7Ci0gICAgICAgIGlmIChpc0FTQ0lJQWxwaGEoY2MpKSB7Ci0gICAgICAgICAgICBtX3Rva2Vu
LT5iZWdpblhNTEVuY29kaW5nKGNjKTsKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFhNTERl
Y2xFbmNvZGluZ1ZhbHVlUXVvdGVkU3RhdGUpOwotICAgICAgICB9Ci0gICAgICAgIHBhcnNlRXJy
b3IoKTsKLSAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICB9Ci0gICAg
RU5EX1NUQVRFKCkKLQotICAgIFhNTF9CRUdJTl9TVEFURShYTUxEZWNsRW5jb2RpbmdWYWx1ZVF1
b3RlZFN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA9PSBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFj
dGVyKSB7Ci0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhYTUxEZWNsQWZ0ZXJFbmNvZGluZ1N0
YXRlKTsKLSAgICAgICAgfSBlbHNlIGlmIChpc0FTQ0lJQWxwaGFudW1lcmljKGNjKSB8fCBjYyA9
PSAnLScpIHsKLSAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvWE1MRW5jb2RpbmcoY2MpOwot
ICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oWE1MRGVjbEVuY29kaW5nVmFsdWVRdW90ZWRTdGF0
ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAg
ICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAgICAgICB9Ci0gICAgfQotICAg
IEVORF9TVEFURSgpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUoWE1MRGVjbEFmdGVyRW5jb2RpbmdT
dGF0ZSkgewotICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKLSAgICAgICAg
ICAgIFhNTF9BRFZBTkNFX1RPKFhNTERlY2xCZWZvcmVTdGFuZGFsb25lTmFtZVN0YXRlKTsKLSAg
ICAgICAgZWxzZSBpZiAoY2MgPT0gJz8nKQotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oWE1M
RGVjbENsb3NlU3RhdGUpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHBhcnNlRXJyb3Io
KTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIFhNTF9CRUdJTl9TVEFURShYTUxEZWNsQmVm
b3JlU3RhbmRhbG9uZU5hbWVTdGF0ZSkgewotICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgc3RhbmRhbG9uZVN0cmluZywgKEFTQ0lJTGl0ZXJhbCgic3RhbmRhbG9uZSIpKSk7Ci0g
ICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQotICAgICAgICAgICAgWE1MX0FE
VkFOQ0VfVE8oWE1MRGVjbEJlZm9yZVN0YW5kYWxvbmVOYW1lU3RhdGUpOwotICAgICAgICBlbHNl
IGlmIChjYyA9PSAncycpIHsKLSAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFk
UmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWQoc3RhbmRhbG9uZVN0cmluZyk7Ci0gICAg
ICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKLSAgICAg
ICAgICAgICAgICBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUKHNvdXJjZSwgInN0YW5kYWxvbmUiKTsK
LSAgICAgICAgICAgICAgICBYTUxfU1dJVENIX1RPKFhNTERlY2xBZnRlclN0YW5kYWxvbmVOYW1l
U3RhdGUpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5n
OjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQotICAgICAgICAgICAgICAgIHJldHVybiBoYXZlQnVmZmVy
ZWRDaGFyYWN0ZXJUb2tlbigpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc/JykKLSAgICAg
ICAgICAgIFhNTF9BRFZBTkNFX1RPKFhNTERlY2xDbG9zZVN0YXRlKTsKLSAgICAgICAgcGFyc2VF
cnJvcigpOwotICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAgIH0KLSAg
ICBFTkRfU1RBVEUoKQotCi0gICAgRVFfQkVGT1JFX1ZBTFVFX1NUQVRFUyhYTUxEZWNsQWZ0ZXJT
dGFuZGFsb25lTmFtZVN0YXRlLCBYTUxEZWNsQmVmb3JlU3RhbmRhbG9uZVZhbHVlU3RhdGUsIFhN
TERlY2xTdGFuZGFsb25lVmFsdWVRdW90ZWRTdGF0ZSkKLQotICAgIFhNTF9CRUdJTl9TVEFURShY
TUxEZWNsU3RhbmRhbG9uZVZhbHVlUXVvdGVkU3RhdGUpIHsKLSAgICAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIHllc1N0cmluZywgKEFTQ0lJTGl0ZXJhbCgieWVzXCIiKSkpOwotICAg
ICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgbm9TdHJpbmcsIChBU0NJSUxpdGVyYWwo
Im5vXCIiKSkpOwotICAgICAgICBpZiAoY2MgPT0gJ3knKSB7Ci0gICAgICAgICAgICBTZWdtZW50
ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkKHllc1N0
cmluZyk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0
Y2gpIHsKLSAgICAgICAgICAgICAgICBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUKHNvdXJjZSwgInll
c1wiIik7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+c2V0WE1MU3RhbmRhbG9uZSh0cnVlKTsK
LSAgICAgICAgICAgICAgICBYTUxfU1dJVENIX1RPKFhNTERlY2xBZnRlclN0YW5kYWxvbmVTdGF0
ZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5v
dEVub3VnaENoYXJhY3RlcnMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGhhdmVCdWZmZXJlZENo
YXJhY3RlclRva2VuKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ24nKSB7Ci0gICAgICAg
ICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9v
a0FoZWFkKG5vU3RyaW5nKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3Ry
aW5nOjpEaWRNYXRjaCkgewotICAgICAgICAgICAgICAgIGFkdmFuY2VTdHJpbmdBbmRBU1NFUlQo
c291cmNlLCAibm9cIiIpOwotICAgICAgICAgICAgICAgIG1fdG9rZW4tPnNldFhNTFN0YW5kYWxv
bmUoZmFsc2UpOwotICAgICAgICAgICAgICAgIFhNTF9TV0lUQ0hfVE8oWE1MRGVjbEFmdGVyU3Rh
bmRhbG9uZVN0YXRlKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRl
ZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKLSAgICAgICAgICAgICAgICByZXR1cm4gaGF2
ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKLSAgICAgICAgfQotICAgICAgICBwYXJzZUVycm9y
KCk7Ci0gICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgfQotICAgIEVO
RF9TVEFURSgpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUoWE1MRGVjbEFmdGVyU3RhbmRhbG9uZVN0
YXRlKSB7Ci0gICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQotICAgICAgICAg
ICAgWE1MX0FEVkFOQ0VfVE8oWE1MRGVjbEFmdGVyU3RhbmRhbG9uZVN0YXRlKTsKLSAgICAgICAg
aWYgKGNjID09ICc/JykKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFhNTERlY2xDbG9zZVN0
YXRlKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAg
ICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAgICAgICB9Ci0gICAgfQotICAg
IEVORF9TVEFURSgpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUoWE1MRGVjbENsb3NlU3RhdGUpIHsK
LSAgICAgICAgaWYgKGNjID09ICc+JykKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1l
SW4oc291cmNlLCBYTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKLSAgICAgICAgcGFyc2VF
cnJvcigpOwotICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAgIH0KLSAg
ICBFTkRfU1RBVEUoKQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKFByb2Nlc3NpbmdJbnN0cnVjdGlv
blRhcmdldFN0YXRlKSB7Ci0gICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKSB7
Ci0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25BZnRlclRh
cmdldFN0YXRlKTsKLSAgICAgICAgfSBlbHNlIGlmIChpc1ZhbGlkTmFtZUNoYXIoY2MpKSB7Ci0g
ICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1Byb2Nlc3NpbmdJbnN0cnVjdGlvblRhcmdldChj
Yyk7Ci0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25UYXJn
ZXRTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0g
ICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAgICAgICB9Ci0gICAg
fQotICAgIEVORF9TVEFURSgpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUoUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uQWZ0ZXJUYXJnZXRTdGF0ZSkgewotICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNw
YWNlKGNjKSkKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKFByb2Nlc3NpbmdJbnN0cnVjdGlv
bkFmdGVyVGFyZ2V0U3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSAnPycpCi0gICAgICAg
ICAgICBYTUxfQURWQU5DRV9UTyhQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DbG9zZVN0YXRlKTsKLSAg
ICAgICAgZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1h
cmtlcikgewotICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJuIGVt
aXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fdG9r
ZW4tPmFwcGVuZFRvUHJvY2Vzc2luZ0luc3RydWN0aW9uRGF0YShjYyk7Ci0gICAgICAgICAgICBY
TUxfQURWQU5DRV9UTyhQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25EYXRhU3RhdGUpOwotICAgICAgICB9
Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUoUHJvY2Vzc2lu
Z0luc3RydWN0aW9uRGF0YVN0YXRlKSB7Ci0gICAgICAgIGlmIChjYyA9PSAnPycpCi0gICAgICAg
ICAgICBYTUxfQURWQU5DRV9UTyhQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DbG9zZVN0YXRlKTsKLSAg
ICAgICAgZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1h
cmtlcikgewotICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJuIGVt
aXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fdG9r
ZW4tPmFwcGVuZFRvUHJvY2Vzc2luZ0luc3RydWN0aW9uRGF0YShjYyk7Ci0gICAgICAgICAgICBY
TUxfQURWQU5DRV9UTyhQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25EYXRhU3RhdGUpOwotICAgICAgICB9
Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUoUHJvY2Vzc2lu
Z0luc3RydWN0aW9uQ2xvc2VTdGF0ZSkgewotICAgICAgICBpZiAoY2MgPT0gJz4nKQotICAgICAg
ICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIFhNTFRva2VuaXplclN0YXRlOjpE
YXRhU3RhdGUpOwotICAgICAgICBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVu
ZE9mRmlsZU1hcmtlcikgewotICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAg
cmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICAgICAgfQotICAgICAgICBtX3Rva2Vu
LT5hcHBlbmRUb1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkRhdGEoJz8nKTsKLSAgICAgICAgbV90b2tl
bi0+YXBwZW5kVG9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25EYXRhKGNjKTsKLSAgICAgICAgWE1MX0FE
VkFOQ0VfVE8oUHJvY2Vzc2luZ0luc3RydWN0aW9uRGF0YVN0YXRlKTsKLSAgICB9Ci0gICAgRU5E
X1NUQVRFKCkKLQotICAgIFhNTF9CRUdJTl9TVEFURShNYXJrdXBEZWNsYXJhdGlvbk9wZW5TdGF0
ZSkgewotICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZGFzaERhc2hTdHJpbmcs
IChBU0NJSUxpdGVyYWwoIi0tIikpKTsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJp
bmcsIGRvY3R5cGVTdHJpbmcsIChBU0NJSUxpdGVyYWwoImRvY3R5cGUiKSkpOwotICAgICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY2RhdGFTdHJpbmcsIChBU0NJSUxpdGVyYWwoIltD
REFUQVsiKSkpOwotICAgICAgICBpZiAoY2MgPT0gJy0nKSB7Ci0gICAgICAgICAgICBTZWdtZW50
ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkKGRhc2hE
YXNoU3RyaW5nKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpE
aWRNYXRjaCkgewotICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUKCctJyk7
Ci0gICAgICAgICAgICAgICAgc291cmNlLmFkdmFuY2VBbmRBU1NFUlQoJy0nKTsKLSAgICAgICAg
ICAgICAgICBtX3Rva2VuLT5iZWdpbkNvbW1lbnQoKTsKLSAgICAgICAgICAgICAgICBYTUxfU1dJ
VENIX1RPKENvbW1lbnRTdGF0ZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBT
ZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2Mg
PT0gJ0QnIHx8IGNjID09ICdkJykgewotICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29r
QWhlYWRSZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZElnbm9yaW5nQ2FzZShkb2N0eXBl
U3RyaW5nKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRN
YXRjaCkgewotICAgICAgICAgICAgICAgIGFkdmFuY2VTdHJpbmdBbmRBU1NFUlRJZ25vcmluZ0Nh
c2Uoc291cmNlLCAiZG9jdHlwZSIpOwotICAgICAgICAgICAgICAgIFhNTF9TV0lUQ0hfVE8oQmVm
b3JlRE9DVFlQRU5hbWVTdGF0ZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBT
ZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIGhhdmVCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2Mg
PT0gJ1snKSB7Ci0gICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCBy
ZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkKGNkYXRhU3RyaW5nKTsKLSAgICAgICAgICAgIGlmIChy
ZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRNYXRjaCkgewotICAgICAgICAgICAgICAgIGFk
dmFuY2VTdHJpbmdBbmRBU1NFUlQoc291cmNlLCAiW0NEQVRBWyIpOwotICAgICAgICAgICAgICAg
IG1fdG9rZW4tPmJlZ2luQ0RBVEEoKTsKLSAgICAgICAgICAgICAgICBYTUxfU1dJVENIX1RPKENE
QVRBU2VjdGlvblN0YXRlKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21l
bnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKLSAgICAgICAgICAgICAgICByZXR1cm4g
aGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKLSAgICAgICAgfQotICAgICAgICBwYXJzZUVy
cm9yKCk7Ci0gICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgfQotICAg
IEVORF9TVEFURSgpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUoQ29tbWVudFN0YXRlKSB7Ci0gICAg
ICAgIGlmIChjYyA9PSAnLScpCi0gICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhDb21tZW50RGFz
aFN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6
OmVuZE9mRmlsZU1hcmtlcikgewotICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAg
ICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7Ci0gICAgICAgICAgICBYTUxfQURW
QU5DRV9UTyhDb21tZW50U3RhdGUpOwotICAgICAgICB9Ci0gICAgfQotICAgIEVORF9TVEFURSgp
Ci0KLSAgICBYTUxfQkVHSU5fU1RBVEUoQ29tbWVudERhc2hTdGF0ZSkgewotICAgICAgICBpZiAo
Y2MgPT0gJy0nKQotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQ29tbWVudEVuZFN0YXRlKTsK
LSAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmls
ZU1hcmtlcikgewotICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJu
IGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1f
dG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOwotICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5k
VG9Db21tZW50KGNjKTsKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIFhNTF9CRUdJTl9TVEFU
RShDb21tZW50RW5kU3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICc+JykKLSAgICAgICAgICAg
IHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBYTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0
YXRlKTsKLSAgICAgICAgaWYgKGNjID09ICctJykgewotICAgICAgICAgICAgcGFyc2VFcnJvcigp
OwotICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICAgICAgfQot
ICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4o
c291cmNlLCBYTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKLSAgICB9Ci0gICAgRU5EX1NU
QVRFKCkKLQotICAgIFhNTF9CRUdJTl9TVEFURShCZWZvcmVET0NUWVBFTmFtZVN0YXRlKSB7Ci0g
ICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQotICAgICAgICAgICAgWE1MX0FE
VkFOQ0VfVE8oQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGlzVmFs
aWROYW1lU3RhcnQoY2MpKSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkRPQ1RZUEUoY2Mp
OwotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oRE9DVFlQRU5hbWVTdGF0ZSk7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1cm4g
ZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAgICAgICB9Ci0gICAgfQotICAgIEVORF9TVEFURSgp
Ci0KLSAgICBYTUxfQkVHSU5fU1RBVEUoRE9DVFlQRU5hbWVTdGF0ZSkgewotICAgICAgICBpZiAo
aXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEFm
dGVyRE9DVFlQRU5hbWVTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKLSAgICAg
ICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBYTUxUb2tlbml6ZXJTdGF0ZTo6
RGF0YVN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoaXNWYWxpZE5hbWVDaGFyKGNjKSkgewotICAg
ICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9OYW1lKGNjKTsKLSAgICAgICAgICAgIFhNTF9BRFZB
TkNFX1RPKERPQ1RZUEVOYW1lU3RhdGUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
cGFyc2VFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsK
LSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0gICAgWE1MX0JFR0lOX1NUQVRF
KEFmdGVyRE9DVFlQRU5hbWVTdGF0ZSkgewotICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNw
YWNlKGNjKSkKLSAgICAgICAgICAgIFhNTF9BRFZBTkNFX1RPKEFmdGVyRE9DVFlQRU5hbWVTdGF0
ZSk7Ci0gICAgICAgIGlmIChjYyA9PSAnPicpCi0gICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJl
c3VtZUluKHNvdXJjZSwgWE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7Ci0gICAgICAgIGlm
IChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7Ci0gICAg
ICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShz
b3VyY2UpOwotICAgICAgICB9Ci0gICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBw
dWJsaWNTdHJpbmcsIChBU0NJSUxpdGVyYWwoInB1YmxpYyIpKSk7Ci0gICAgICAgIERFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCBzeXN0ZW1TdHJpbmcsIChBU0NJSUxpdGVyYWwoInN5c3RlbSIp
KSk7Ci0gICAgICAgIGlmIChjYyA9PSAnUCcgfHwgY2MgPT0gJ3AnKSB7Ci0gICAgICAgICAgICBT
ZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFk
SWdub3JpbmdDYXNlKHB1YmxpY1N0cmluZyk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0ID09IFNl
Z21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKLSAgICAgICAgICAgICAgICBhZHZhbmNlU3RyaW5n
QW5kQVNTRVJUSWdub3JpbmdDYXNlKHNvdXJjZSwgInB1YmxpYyIpOwotICAgICAgICAgICAgICAg
IFhNTF9TV0lUQ0hfVE8oQWZ0ZXJET0NUWVBFUHVibGljS2V5d29yZFN0YXRlKTsKLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFj
dGVycykKLSAgICAgICAgICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4o
KTsKLSAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnUycgfHwgY2MgPT0gJ3MnKSB7Ci0gICAgICAg
ICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9v
a0FoZWFkSWdub3JpbmdDYXNlKHN5c3RlbVN0cmluZyk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0
ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKLSAgICAgICAgICAgICAgICBhZHZhbmNl
U3RyaW5nQW5kQVNTRVJUSWdub3JpbmdDYXNlKHNvdXJjZSwgInN5c3RlbSIpOwotICAgICAgICAg
ICAgICAgIFhNTF9TV0lUQ0hfVE8oQWZ0ZXJET0NUWVBFU3lzdGVtS2V5d29yZFN0YXRlKTsKLSAg
ICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdo
Q2hhcmFjdGVycykKLSAgICAgICAgICAgICAgICByZXR1cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVy
VG9rZW4oKTsKLSAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnWycpCi0gICAgICAgICAgICBYTUxf
QURWQU5DRV9UTyhCZWZvcmVET0NUWVBFSW50ZXJuYWxTdWJzZXRTdGF0ZSk7Ci0gICAgICAgIGVs
c2UgewotICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRF
bmRPZkZpbGUoc291cmNlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUoKQotCi0g
ICAgWE1MX0JFR0lOX1NUQVRFKEFmdGVyRE9DVFlQRVB1YmxpY0tleXdvcmRTdGF0ZSkgewotICAg
ICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKLSAgICAgICAgICAgIFhNTF9BRFZB
TkNFX1RPKEJlZm9yZURPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUpOwotICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0RW5k
T2ZGaWxlKHNvdXJjZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAg
IFhNTF9CRUdJTl9TVEFURShCZWZvcmVET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlKSB7Ci0g
ICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQotICAgICAgICAgICAgWE1MX0FE
VkFOQ0VfVE8oQmVmb3JlRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSk7Ci0gICAgICAgIGVs
c2UgaWYgKGNjID09ICciJyB8fCBjYyA9PSAnXCcnKSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5z
ZXRQdWJsaWNJZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwotICAgICAgICAgICAgbV9hZGRpdGlv
bmFsQWxsb3dlZENoYXJhY3RlciA9IGNjOwotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oRE9D
VFlQRVB1YmxpY0lkZW50aWZpZXJRdW90ZWRTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShz
b3VyY2UpOwotICAgICAgICB9Ci0gICAgfQotICAgIEVORF9TVEFURSgpCi0KLSAgICBYTUxfQkVH
SU5fU1RBVEUoRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJRdW90ZWRTdGF0ZSkgewotICAgICAgICBp
ZiAoY2MgPT0gbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlcikKLSAgICAgICAgICAgIFhNTF9B
RFZBTkNFX1RPKEFmdGVyRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSk7Ci0gICAgICAgIGVs
c2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsK
LSAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZG
aWxlKHNvdXJjZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3Rva2VuLT5hcHBl
bmRUb1B1YmxpY0lkZW50aWZpZXIoY2MpOwotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oRE9D
VFlQRVB1YmxpY0lkZW50aWZpZXJRdW90ZWRTdGF0ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
RU5EX1NUQVRFKCkKLQotICAgIFhNTF9CRUdJTl9TVEFURShBZnRlckRPQ1RZUEVQdWJsaWNJZGVu
dGlmaWVyU3RhdGUpIHsKLSAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCi0g
ICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0
YXRlKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBwYXJzZUVycm9yKCk7Ci0gICAgICAg
ICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAgICAgICB9Ci0gICAgfQotICAg
IEVORF9TVEFURSgpCi0KLSAgICBYTUxfQkVHSU5fU1RBVEUoQWZ0ZXJET0NUWVBFU3lzdGVtS2V5
d29yZFN0YXRlKSB7Ci0gICAgICAgIGlmIChpc1Rva2VuaXplcldoaXRlc3BhY2UoY2MpKQotICAg
ICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0
ZSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAg
ICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBF
TkRfU1RBVEUoKQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKEJlZm9yZURPQ1RZUEVTeXN0ZW1JZGVu
dGlmaWVyU3RhdGUpIHsKLSAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCi0g
ICAgICAgICAgICBYTUxfQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0
YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyInIHx8IGNjID09ICdcJycpIHsKLSAgICAg
ICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAg
ICAgICAgICBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID0gY2M7Ci0gICAgICAgICAgICBY
TUxfQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmllclF1b3RlZFN0YXRlKTsKLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVy
biBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5EX1NUQVRF
KCkKLQotICAgIFhNTF9CRUdJTl9TVEFURShET0NUWVBFU3lzdGVtSWRlbnRpZmllclF1b3RlZFN0
YXRlKSB7Ci0gICAgICAgIGlmIChjYyA9PSBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyKQot
ICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0
YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoaXNWYWxpZExpdGVyYWxDaGFyKGNjKSkgewotICAgICAg
ICAgICAgbV90b2tlbi0+YXBwZW5kVG9TeXN0ZW1JZGVudGlmaWVyKGNjKTsKLSAgICAgICAgICAg
IFhNTF9BRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyUXVvdGVkU3RhdGUpOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgcmV0
dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RB
VEUoKQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKEFmdGVyRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJT
dGF0ZSkgewotICAgICAgICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKLSAgICAgICAg
ICAgIFhNTF9BRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSk7Ci0g
ICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKLSAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVz
dW1lSW4oc291cmNlLCBYTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKLSAgICAgICAgZWxz
ZSBpZiAoY2MgPT0gJ1snKQotICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQ
RUludGVybmFsU3Vic2V0U3RhdGUpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHBhcnNl
RXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJjZSk7Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIFhNTF9CRUdJTl9TVEFURShCZWZv
cmVET0NUWVBFSW50ZXJuYWxTdWJzZXRTdGF0ZSkgewotICAgICAgICBpZiAoY2MgPT0gJ10nKQot
ICAgICAgICAgICAgWE1MX0FEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFSW50ZXJuYWxTdWJzZXRTdGF0
ZSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgLy8gRklYTUUgaW1wbGVtZW50IGludGVy
bmFsIHN1YnNldAotICAgICAgICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJu
IGVtaXRFbmRPZkZpbGUoc291cmNlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBFTkRfU1RBVEUo
KQotCi0gICAgWE1MX0JFR0lOX1NUQVRFKEFmdGVyRE9DVFlQRUludGVybmFsU3Vic2V0U3RhdGUp
IHsKLSAgICAgICAgaWYgKGlzVG9rZW5pemVyV2hpdGVzcGFjZShjYykpCi0gICAgICAgICAgICBY
TUxfQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVJbnRlcm5hbFN1YnNldFN0YXRlKTsKLSAgICAgICAg
ZWxzZSBpZiAoY2MgPT0gJz4nKQotICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihz
b3VyY2UsIFhNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwotICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIHBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxl
KHNvdXJjZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgRU5EX1NUQVRFKCkKLQotICAgIFhNTF9C
RUdJTl9TVEFURShDREFUQVNlY3Rpb25TdGF0ZSkgewotICAgICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKFN0cmluZywgY2xvc2VTdHJpbmcsIChBU0NJSUxpdGVyYWwoIl1dPiIpKSk7Ci0gICAgICAg
IGlmIChjYyA9PSAnXScpIHsKLSAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFk
UmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWQoY2xvc2VTdHJpbmcpOwotICAgICAgICAg
ICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7Ci0gICAgICAgICAg
ICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVChzb3VyY2UsICJdXT4iKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgWE1MVG9rZW5pemVyU3RhdGU6
OkRhdGFTdGF0ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAocmVzdWx0ID09IFNl
Z21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKLSAgICAgICAgICAgICAgICByZXR1
cm4gaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKLSAgICAgICAgfQotICAgICAgICBpZiAo
Y2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewotICAgICAg
ICAgICAgcGFyc2VFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291
cmNlKTsKLSAgICAgICAgfQotICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NEQVRBKGNjKTsKLSAg
ICAgICAgWE1MX0FEVkFOQ0VfVE8oQ0RBVEFTZWN0aW9uU3RhdGUpOwotICAgIH0KLSAgICBFTkRf
U1RBVEUoKQotCi0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi1pbmxpbmUgdm9pZCBYTUxUb2tlbml6ZXI6OmJ1ZmZlckNoYXJhY3RlcihV
Q2hhciBjaGFyYWN0ZXIpCi17Ci0gICAgQVNTRVJUKGNoYXJhY3RlciAhPSBJbnB1dFN0cmVhbVBy
ZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKTsKLSAgICBtX3Rva2VuLT5lbnN1cmVJc0NoYXJh
Y3RlclRva2VuKCk7Ci0gICAgbV90b2tlbi0+YXBwZW5kVG9DaGFyYWN0ZXIoY2hhcmFjdGVyKTsK
LX0KLQotaW5saW5lIHZvaWQgWE1MVG9rZW5pemVyOjpwYXJzZUVycm9yKCkKLXsKLSAgICBtX2Vy
cm9yRHVyaW5nUGFyc2luZyA9IHRydWU7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MVG9rZW5pemVyLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2Vy
L1hNTFRva2VuaXplci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjk0OWE4NDMx
ZWRkNTQ0OThjZGM2NDM5NGE4MjNkMzNhNWQ4N2UyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MVG9rZW5p
emVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFhNTFRva2VuaXplcl9oCi0jZGVm
aW5lIFhNTFRva2VuaXplcl9oCi0KLSNpbmNsdWRlICJNYXJrdXBUb2tlbml6ZXJCYXNlLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgWE1MVG9rZW47Ci0KLWNsYXNzIFhNTFRva2Vu
aXplclN0YXRlIHsKLXB1YmxpYzoKLSAgICBlbnVtIFN0YXRlIHsKLSAgICAgICAgRGF0YVN0YXRl
LAotICAgICAgICBDaGFyYWN0ZXJSZWZlcmVuY2VTdGFydFN0YXRlLAotICAgICAgICBFbnRpdHlS
ZWZlcmVuY2VTdGF0ZSwKLSAgICAgICAgVGFnT3BlblN0YXRlLAotICAgICAgICBFbmRUYWdPcGVu
U3RhdGUsCi0gICAgICAgIFRhZ05hbWVTdGF0ZSwKLSAgICAgICAgRW5kVGFnTmFtZVN0YXRlLAot
ICAgICAgICBFbmRUYWdTcGFjZVN0YXRlLAotICAgICAgICBYTUxEZWNsQWZ0ZXJYTUxTdGF0ZSwK
LSAgICAgICAgWE1MRGVjbEJlZm9yZVZlcnNpb25OYW1lU3RhdGUsCi0gICAgICAgIFhNTERlY2xB
ZnRlclZlcnNpb25OYW1lU3RhdGUsCi0gICAgICAgIFhNTERlY2xCZWZvcmVWZXJzaW9uVmFsdWVT
dGF0ZSwKLSAgICAgICAgWE1MRGVjbEJlZm9yZVZlcnNpb25PbmVQb2ludFN0YXRlLAotICAgICAg
ICBYTUxEZWNsVmVyc2lvblZhbHVlUXVvdGVkU3RhdGUsCi0gICAgICAgIFhNTERlY2xBZnRlclZl
cnNpb25TdGF0ZSwKLSAgICAgICAgWE1MRGVjbEJlZm9yZUVuY29kaW5nTmFtZVN0YXRlLAotICAg
ICAgICBYTUxEZWNsQWZ0ZXJFbmNvZGluZ05hbWVTdGF0ZSwKLSAgICAgICAgWE1MRGVjbEJlZm9y
ZUVuY29kaW5nVmFsdWVTdGF0ZSwKLSAgICAgICAgWE1MRGVjbEVuY29kaW5nVmFsdWVTdGFydFF1
b3RlZFN0YXRlLAotICAgICAgICBYTUxEZWNsRW5jb2RpbmdWYWx1ZVF1b3RlZFN0YXRlLAotICAg
ICAgICBYTUxEZWNsQWZ0ZXJFbmNvZGluZ1N0YXRlLAotICAgICAgICBYTUxEZWNsQmVmb3JlU3Rh
bmRhbG9uZU5hbWVTdGF0ZSwKLSAgICAgICAgWE1MRGVjbEFmdGVyU3RhbmRhbG9uZU5hbWVTdGF0
ZSwKLSAgICAgICAgWE1MRGVjbEJlZm9yZVN0YW5kYWxvbmVWYWx1ZVN0YXRlLAotICAgICAgICBY
TUxEZWNsU3RhbmRhbG9uZVZhbHVlUXVvdGVkU3RhdGUsCi0gICAgICAgIFhNTERlY2xBZnRlclN0
YW5kYWxvbmVTdGF0ZSwKLSAgICAgICAgWE1MRGVjbENsb3NlU3RhdGUsCi0gICAgICAgIFByb2Nl
c3NpbmdJbnN0cnVjdGlvblRhcmdldFN0YXJ0U3RhdGUsCi0gICAgICAgIFByb2Nlc3NpbmdJbnN0
cnVjdGlvblRhcmdldFN0YXRlLAotICAgICAgICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25BZnRlclRh
cmdldFN0YXRlLAotICAgICAgICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25EYXRhU3RhdGUsCi0gICAg
ICAgIFByb2Nlc3NpbmdJbnN0cnVjdGlvbkNsb3NlU3RhdGUsCi0gICAgICAgIE1hcmt1cERlY2xh
cmF0aW9uT3BlblN0YXRlLAotICAgICAgICBCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUsCi0gICAg
ICAgIEF0dHJpYnV0ZU5hbWVTdGF0ZSwKLSAgICAgICAgQWZ0ZXJBdHRyaWJ1dGVOYW1lU3RhdGUs
Ci0gICAgICAgIEJlZm9yZUF0dHJpYnV0ZVZhbHVlU3RhdGUsCi0gICAgICAgIEF0dHJpYnV0ZVZh
bHVlUXVvdGVkU3RhdGUsCi0gICAgICAgIENoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlVmFs
dWVTdGF0ZSwKLSAgICAgICAgQWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlLAotICAgICAg
ICBTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUsCi0gICAgICAgIENvbW1lbnRTdGF0ZSwKLSAgICAg
ICAgQ29tbWVudERhc2hTdGF0ZSwKLSAgICAgICAgQ29tbWVudEVuZFN0YXRlLAotICAgICAgICBC
ZWZvcmVET0NUWVBFTmFtZVN0YXRlLAotICAgICAgICBET0NUWVBFTmFtZVN0YXRlLAotICAgICAg
ICBBZnRlckRPQ1RZUEVOYW1lU3RhdGUsCi0gICAgICAgIEFmdGVyRE9DVFlQRVB1YmxpY0tleXdv
cmRTdGF0ZSwKLSAgICAgICAgQmVmb3JlRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSwKLSAg
ICAgICAgRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJRdW90ZWRTdGF0ZSwKLSAgICAgICAgQWZ0ZXJE
T0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlLAotICAgICAgICBBZnRlckRPQ1RZUEVTeXN0ZW1L
ZXl3b3JkU3RhdGUsCi0gICAgICAgIEJlZm9yZURPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUs
Ci0gICAgICAgIERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyUXVvdGVkU3RhdGUsCi0gICAgICAgIEFm
dGVyRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSwKLSAgICAgICAgQmVmb3JlRE9DVFlQRUlu
dGVybmFsU3Vic2V0U3RhdGUsCi0gICAgICAgIEFmdGVyRE9DVFlQRUludGVybmFsU3Vic2V0U3Rh
dGUsCi0gICAgICAgIENEQVRBU2VjdGlvblN0YXRlLAotICAgIH07Ci19OwotCi1jbGFzcyBYTUxU
b2tlbml6ZXIgOiBwdWJsaWMgTWFya3VwVG9rZW5pemVyQmFzZTxYTUxUb2tlbiwgWE1MVG9rZW5p
emVyU3RhdGU+IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShYTUxUb2tlbml6ZXIpOwotICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PFhNTFRva2VuaXplcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IFhNTFRva2VuaXpl
cik7IH0KLQotICAgIC8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0cnVlIGlmIGl0IGVtaXRzIGEg
dG9rZW4uIE90aGVyd2lzZSwgY2FsbGVycwotICAgIC8vIG11c3QgcHJvdmlkZSB0aGUgc2FtZSAo
aW4gcHJvZ3Jlc3MpIHRva2VuIG9uIHRoZSBuZXh0IGNhbGwgKHVubGVzcwotICAgIC8vIHRoZXkg
Y2FsbCByZXNldCgpIGZpcnN0KS4KLSAgICBib29sIG5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcm
LCBYTUxUb2tlbiYpOwotCi0gICAgYm9vbCBlcnJvckR1cmluZ1BhcnNpbmcoKSBjb25zdCB7IHJl
dHVybiBtX2Vycm9yRHVyaW5nUGFyc2luZzsgfQotCi1wcml2YXRlOgotICAgIFhNTFRva2VuaXpl
cigpOwotCi0gICAgaW5saW5lIHZvaWQgcGFyc2VFcnJvcigpOwotICAgIGlubGluZSB2b2lkIGJ1
ZmZlckNoYXJhY3RlcihVQ2hhcik7Ci0KLSAgICBib29sIG1fZXJyb3JEdXJpbmdQYXJzaW5nOwot
fTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUcmVlQnVp
bGRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzOTZlMDIxYTI3MTVhMzAy
MThhZWU1ZWZiMjAyZDNhYzVkYWRhNTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxUcmVlQnVpbGRlci5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJY
TUxUcmVlQnVpbGRlci5oIgotCi0jaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCi0jaW5jbHVkZSAi
Q0RBVEFTZWN0aW9uLmgiCi0jaW5jbHVkZSAiQ29tbWVudC5oIgotI2luY2x1ZGUgIkRvY3VtZW50
LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgotI2luY2x1ZGUgIkRvY3VtZW50VHlw
ZS5oIgotI2luY2x1ZGUgIkVsZW1lbnQuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgotLy8gRklYTUU6
IFdoeSBhcmUgd2UgaW5jbHVkaW5nIEhUTUwgZW50aXR5IGluZm9ybWF0aW9uIGluIHRoZSBYTUwg
cGFyc2VyPwotI2luY2x1ZGUgIkhUTUxFbnRpdHlTZWFyY2guaCIKLSNpbmNsdWRlICJIVE1MRW50
aXR5VGFibGUuaCIKLSNpbmNsdWRlICJOZXdYTUxEb2N1bWVudFBhcnNlci5oIgotI2luY2x1ZGUg
IlByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgotI2luY2x1ZGUgIlNjcmlwdEVsZW1lbnQuaCIKLSNp
bmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiWE1MTlNOYW1lcy5oIgotI2lu
Y2x1ZGUgIlhNTE5hbWVzLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotWE1MVHJlZUJ1aWxk
ZXI6OlhNTFRyZWVCdWlsZGVyKE5ld1hNTERvY3VtZW50UGFyc2VyKiBwYXJzZXIsIERvY3VtZW50
KiBkb2N1bWVudCkKLSAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAgLCBtX3BhcnNlcihw
YXJzZXIpCi0gICAgLCBtX2lzWEhUTUwoZmFsc2UpCi0gICAgLCBtX3Nhd0ZpcnN0RWxlbWVudChm
YWxzZSkKLXsKLSAgICBtX2N1cnJlbnROb2RlU3RhY2suYXBwZW5kKE5vZGVTdGFja0l0ZW0oZG9j
dW1lbnQpKTsKLX0KLQotWE1MVHJlZUJ1aWxkZXI6OlhNTFRyZWVCdWlsZGVyKE5ld1hNTERvY3Vt
ZW50UGFyc2VyKiBwYXJzZXIsIERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBFbGVtZW50KiBw
YXJlbnQpCi0gICAgOiBtX2RvY3VtZW50KGZyYWdtZW50LT5kb2N1bWVudCgpKQotICAgICwgbV9w
YXJzZXIocGFyc2VyKQotICAgICwgbV9pc1hIVE1MKGZhbHNlKQotICAgICwgbV9zYXdGaXJzdEVs
ZW1lbnQodHJ1ZSkKLXsKLSAgICBOb2RlU3RhY2tJdGVtIHN0YWNrSXRlbShmcmFnbWVudCk7Ci0K
LSAgICAvLyBGaWd1cmUgb3V0IG5hbWVzcGFjZXMKLSAgICBWZWN0b3I8RWxlbWVudCo+IG5vZGVT
dGFjazsKLSAgICB3aGlsZSAocGFyZW50KSB7Ci0gICAgICAgIG5vZGVTdGFjay5hcHBlbmQocGFy
ZW50KTsKLQotICAgICAgICBDb250YWluZXJOb2RlKiBub2RlID0gcGFyZW50LT5wYXJlbnROb2Rl
KCk7Ci0gICAgICAgIGlmICghbm9kZSB8fCAhbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIHBhcmVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2Rl
KTsKLSAgICB9Ci0KLSAgICBpZiAobm9kZVN0YWNrLmlzRW1wdHkoKSkgewotICAgICAgICBtX2N1
cnJlbnROb2RlU3RhY2suYXBwZW5kKHN0YWNrSXRlbSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBmb3IgKEVsZW1lbnQqIGVsZW1lbnQ7ICFub2RlU3RhY2suaXNFbXB0eSgpOyBub2Rl
U3RhY2sucmVtb3ZlTGFzdCgpKSB7Ci0gICAgICAgIGVsZW1lbnQgPSBub2RlU3RhY2subGFzdCgp
OwotICAgICAgICBpZiAoZWxlbWVudC0+aGFzQXR0cmlidXRlcygpKSB7Ci0gICAgICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGVsZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7ICsraSkgewot
ICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gZWxlbWVudC0+YXR0
cmlidXRlSXRlbShpKTsKLSAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlLT5sb2NhbE5hbWUo
KSA9PSB4bWxuc0F0b20pCi0gICAgICAgICAgICAgICAgICAgIHN0YWNrSXRlbS5zZXROYW1lc3Bh
Y2VVUkkoYXR0cmlidXRlLT52YWx1ZSgpKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChhdHRy
aWJ1dGUtPnByZWZpeCgpID09IHhtbG5zQXRvbSkKLSAgICAgICAgICAgICAgICAgICAgc3RhY2tJ
dGVtLnNldE5hbWVzcGFjZVVSSShhdHRyaWJ1dGUtPmxvY2FsTmFtZSgpLCBhdHRyaWJ1dGUtPnZh
bHVlKCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gSWYgdGhl
IHBhcmVudCBlbGVtZW50IGlzIG5vdCBpbiBkb2N1bWVudCB0cmVlLCB0aGVyZSBtYXkgYmUgbm8g
eG1sbnMgYXR0cmlidXRlOyBqdXN0IGRlZmF1bHQgdG8gdGhlIHBhcmVudCdzIG5hbWVzcGFjZS4K
LSAgICBpZiAoc3RhY2tJdGVtLm5hbWVzcGFjZVVSSSgpLmlzTnVsbCgpICYmICFwYXJlbnQtPmlu
RG9jdW1lbnQoKSkKLSAgICAgICAgc3RhY2tJdGVtLnNldE5hbWVzcGFjZVVSSShwYXJlbnQtPm5h
bWVzcGFjZVVSSSgpKTsKLQotICAgIG1fY3VycmVudE5vZGVTdGFjay5hcHBlbmQoc3RhY2tJdGVt
KTsKLX0KLQotdm9pZCBYTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1Rva2VuKGNvbnN0IEF0b21pY1hN
TFRva2VuJiB0b2tlbikKLXsKLSAgICBzd2l0Y2ggKHRva2VuLnR5cGUoKSkgewotICAgIGNhc2Ug
WE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6UHJvY2Vzc2luZ0lu
c3RydWN0aW9uOgotICAgICAgICBwcm9jZXNzUHJvY2Vzc2luZ0luc3RydWN0aW9uKHRva2VuKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBYTUxUb2tlblR5cGVzOjpYTUxEZWNsYXJhdGlvbjoK
LSAgICAgICAgcHJvY2Vzc1hNTERlY2xhcmF0aW9uKHRva2VuKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBYTUxUb2tlblR5cGVzOjpET0NUWVBFOgotICAgICAgICBwcm9jZXNzRE9DVFlQRSh0
b2tlbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgWE1MVG9rZW5UeXBlczo6U3RhcnRUYWc6
Ci0gICAgICAgIHByb2Nlc3NTdGFydFRhZyh0b2tlbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgWE1MVG9rZW5UeXBlczo6RW5kVGFnOgotICAgICAgICBwcm9jZXNzRW5kVGFnKHRva2VuKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBYTUxUb2tlblR5cGVzOjpDREFUQToKLSAgICAgICAg
cHJvY2Vzc0NEQVRBKHRva2VuKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBYTUxUb2tlblR5
cGVzOjpDaGFyYWN0ZXI6Ci0gICAgICAgIHByb2Nlc3NDaGFyYWN0ZXIodG9rZW4pOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFhNTFRva2VuVHlwZXM6OkNvbW1lbnQ6Ci0gICAgICAgIHByb2Nl
c3NDb21tZW50KHRva2VuKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBYTUxUb2tlblR5cGVz
OjpFbnRpdHk6Ci0gICAgICAgIHByb2Nlc3NFbnRpdHkodG9rZW4pOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIFhNTFRva2VuVHlwZXM6OkVuZE9mRmlsZToKLSAgICAgICAgZXhpdFRleHQoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotdm9pZCBYTUxUcmVlQnVpbGRlcjo6ZmluaXNo
KCkKLXsKLSAgICBleGl0VGV4dCgpOwotfQotCi12b2lkIFhNTFRyZWVCdWlsZGVyOjpwdXNoQ3Vy
cmVudE5vZGUoY29uc3QgTm9kZVN0YWNrSXRlbSYgc3RhY2tJdGVtKQotewotICAgIEFTU0VSVChz
dGFja0l0ZW0ubm9kZSgpKTsKLSAgICBtX2N1cnJlbnROb2RlU3RhY2suYXBwZW5kKHN0YWNrSXRl
bSk7Ci0gICAgLy8gRklYTUU6IGlzIHRoZXJlIGEgbWF4aW11bSBET00gZGVwdGg/Ci19Ci0KLXZv
aWQgWE1MVHJlZUJ1aWxkZXI6OnBvcEN1cnJlbnROb2RlKCkKLXsKLSAgICBBU1NFUlQobV9jdXJy
ZW50Tm9kZVN0YWNrLnNpemUoKSk7Ci0KLSAgICBtX2N1cnJlbnROb2RlU3RhY2sucmVtb3ZlTGFz
dCgpOwotfQotCi12b2lkIFhNTFRyZWVCdWlsZGVyOjpjbG9zZUVsZW1lbnQoUGFzc1JlZlB0cjxF
bGVtZW50PiBlbGVtZW50KQotewotICAgIGVsZW1lbnQtPmZpbmlzaFBhcnNpbmdDaGlsZHJlbigp
OwotCi0gICAgU2NyaXB0RWxlbWVudCogc2NyaXB0RWxlbWVudCA9IHRvU2NyaXB0RWxlbWVudChl
bGVtZW50LmdldCgpKTsKLSAgICBpZiAoc2NyaXB0RWxlbWVudCkKLSAgICAgICAgbV9wYXJzZXIt
PnByb2Nlc3NTY3JpcHQoc2NyaXB0RWxlbWVudCk7Ci0KLSAgICBwb3BDdXJyZW50Tm9kZSgpOwot
fQotCi12b2lkIFhNTFRyZWVCdWlsZGVyOjpwcm9jZXNzUHJvY2Vzc2luZ0luc3RydWN0aW9uKGNv
bnN0IEF0b21pY1hNTFRva2VuJiB0b2tlbikKLXsKLSAgICBpZiAoIWZhaWxPblRleHQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IGZhbGwgYmFjayBpZiB3ZSBjYW4ndCBoYW5k
bGUgdGhlIFBJIG91cnNlbGYuCi0KLSAgICBhZGQoUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjcmVh
dGUobV9kb2N1bWVudCwgdG9rZW4udGFyZ2V0KCksIHRva2VuLmRhdGEoKSkpOwotfQotCi12b2lk
IFhNTFRyZWVCdWlsZGVyOjpwcm9jZXNzWE1MRGVjbGFyYXRpb24oY29uc3QgQXRvbWljWE1MVG9r
ZW4mIHRva2VuKQotewotICAgIGlmICghZmFpbE9uVGV4dCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLQotICAgIG1fZG9jdW1lbnQtPnNldFhNTFZlcnNp
b24oU3RyaW5nKHRva2VuLnhtbFZlcnNpb24oKSksIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAg
IG1fcGFyc2VyLT5zdG9wUGFyc2luZygpOwotCi0gICAgbV9kb2N1bWVudC0+c2V0WE1MU3RhbmRh
bG9uZSh0b2tlbi54bWxTdGFuZGFsb25lKCksIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIG1f
cGFyc2VyLT5zdG9wUGFyc2luZygpOwotICAgIC8vIEZJWE1FOiBob3cgc2hvdWxkIHRoaXMgYmVo
YXZlIGlmIHN0YW5kYWxvbmUgaXMgbm90IHNwZWNpZmllZD8KLSAgICAvLyBGSVhNRTogc2V0IGVu
Y29kaW5nLgotfQotCi12b2lkIFhNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRE9DVFlQRShjb25zdCBB
dG9taWNYTUxUb2tlbiYgdG9rZW4pCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIHhodG1sVHJhbnNpdGlvbmFsLCAoIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0
aW9uYWwvL0VOIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB4aHRtbDExLCAoIi0vL1czQy8vRFREIFhI
VE1MIDEuMS8vRU4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHhodG1sU3RyaWN0LCAoIi0vL1czQy8v
RFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB4aHRtbEZyYW1l
c2V0LCAoIi0vL1czQy8vRFREIFhIVE1MIDEuMCBGcmFtZXNldC8vRU4iLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIHhodG1sQmFzaWMsICgiLS8vVzNDLy9EVEQgWEhUTUwgQmFzaWMgMS4wLy9FTiIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgeGh0bWxNYXRoTUwsICgiLS8vVzNDLy9EVEQgWEhUTUwgMS4xIHBs
dXMgTWF0aE1MIDIuMC8vRU4iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHhodG1sTWF0aE1MU1ZHLCAo
Ii0vL1czQy8vRFREIFhIVE1MIDEuMSBwbHVzIE1hdGhNTCAyLjAgcGx1cyBTVkcgMS4xLy9FTiIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgeGh0bWxNb2JpbGUsICgiLS8vV0FQRk9SVU0vL0RURCBYSFRN
TCBNb2JpbGUgMS4wLy9FTiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
LQotICAgIGlmICghZmFpbE9uVGV4dCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBdG9taWNT
dHJpbmcgcHVibGljSWRlbnRpZmllcih0b2tlbi5wdWJsaWNJZGVudGlmaWVyKCkuZGF0YSgpLCB0
b2tlbi5wdWJsaWNJZGVudGlmaWVyKCkuc2l6ZSgpKTsKLSAgICBBdG9taWNTdHJpbmcgc3lzdGVt
SWRlbnRpZmllcih0b2tlbi5zeXN0ZW1JZGVudGlmaWVyKCkuZGF0YSgpLCB0b2tlbi5zeXN0ZW1J
ZGVudGlmaWVyKCkuc2l6ZSgpKTsKLSAgICBSZWZQdHI8RG9jdW1lbnRUeXBlPiBkb2N0eXBlID0g
RG9jdW1lbnRUeXBlOjpjcmVhdGUobV9kb2N1bWVudCwgdG9rZW4ubmFtZSgpLCBwdWJsaWNJZGVu
dGlmaWVyLCBzeXN0ZW1JZGVudGlmaWVyKTsKLSAgICBtX2RvY3VtZW50LT5zZXREb2NUeXBlKGRv
Y3R5cGUpOwotICAgIG1fZG9jdW1lbnQtPnBhcnNlckFwcGVuZENoaWxkKGRvY3R5cGUpOwotCi0g
ICAgaWYgKChwdWJsaWNJZGVudGlmaWVyID09IHhodG1sVHJhbnNpdGlvbmFsKQotICAgICAgICB8
fCAocHVibGljSWRlbnRpZmllciA9PSB4aHRtbDExKQotICAgICAgICB8fCAocHVibGljSWRlbnRp
ZmllciA9PSB4aHRtbFN0cmljdCkKLSAgICAgICAgfHwgKHB1YmxpY0lkZW50aWZpZXIgPT0geGh0
bWxGcmFtZXNldCkKLSAgICAgICAgfHwgKHB1YmxpY0lkZW50aWZpZXIgPT0geGh0bWxCYXNpYykK
LSAgICAgICAgfHwgKHB1YmxpY0lkZW50aWZpZXIgPT0geGh0bWxNYXRoTUwpCi0gICAgICAgIHx8
IChwdWJsaWNJZGVudGlmaWVyID09IHhodG1sTWF0aE1MU1ZHKQotICAgICAgICB8fCAocHVibGlj
SWRlbnRpZmllciA9PSB4aHRtbE1vYmlsZSkpCi0gICAgICAgIG1faXNYSFRNTCA9IHRydWU7Ci19
Ci0KLXZvaWQgWE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhjb25zdCBBdG9taWNYTUxU
b2tlbiYgdG9rZW4pCi17Ci0gICAgZXhpdFRleHQoKTsKLQotICAgIGJvb2wgaXNGaXJzdEVsZW1l
bnQgPSAhbV9zYXdGaXJzdEVsZW1lbnQ7Ci0gICAgbV9zYXdGaXJzdEVsZW1lbnQgPSB0cnVlOwot
Ci0gICAgTm9kZVN0YWNrSXRlbSB0b3AgPSBtX2N1cnJlbnROb2RlU3RhY2subGFzdCgpOwotCi0g
ICAgcHJvY2Vzc05hbWVzcGFjZXModG9rZW4sIHRvcCk7Ci0KLSAgICBRdWFsaWZpZWROYW1lIHFO
YW1lKHRva2VuLnByZWZpeCgpLCB0b2tlbi5uYW1lKCksIHRvcC5uYW1lc3BhY2VGb3JQcmVmaXgo
dG9rZW4ucHJlZml4KCksIHRvcC5uYW1lc3BhY2VVUkkoKSkpOwotICAgIFJlZlB0cjxFbGVtZW50
PiBuZXdFbGVtZW50ID0gbV9kb2N1bWVudC0+Y3JlYXRlRWxlbWVudChxTmFtZSwgdHJ1ZSk7Ci0K
LSAgICBwcm9jZXNzQXR0cmlidXRlcyh0b2tlbiwgdG9wLCBuZXdFbGVtZW50KTsKLQotICAgIG5l
d0VsZW1lbnQtPmJlZ2luUGFyc2luZ0NoaWxkcmVuKCk7Ci0gICAgbV9jdXJyZW50Tm9kZVN0YWNr
Lmxhc3QoKS5ub2RlKCktPnBhcnNlckFwcGVuZENoaWxkKG5ld0VsZW1lbnQuZ2V0KCkpOwotCi0g
ICAgdG9wLnNldE5vZGUobmV3RWxlbWVudCk7Ci0gICAgcHVzaEN1cnJlbnROb2RlKHRvcCk7Ci0K
LSAgICBpZiAoIW5ld0VsZW1lbnQtPmF0dGFjaGVkKCkpCi0gICAgICAgIG5ld0VsZW1lbnQtPmF0
dGFjaCgpOwotCi0gICAgaWYgKGlzRmlyc3RFbGVtZW50ICYmIG1fZG9jdW1lbnQtPmZyYW1lKCkp
Ci0gICAgICAgIG1fZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigpLT5kaXNwYXRjaERvY3VtZW50
RWxlbWVudEF2YWlsYWJsZSgpOwotCi0gICAgaWYgKHRva2VuLnNlbGZDbG9zaW5nKCkpCi0gICAg
ICAgIGNsb3NlRWxlbWVudChuZXdFbGVtZW50KTsKLX0KLQotdm9pZCBYTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc0VuZFRhZyhjb25zdCBBdG9taWNYTUxUb2tlbiYgdG9rZW4pCi17Ci0gICAgZXhpdFRl
eHQoKTsKLQotICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBub2RlID0gbV9jdXJyZW50Tm9kZVN0
YWNrLmxhc3QoKS5ub2RlKCk7Ci0KLSAgICBpZiAoIW5vZGUtPmhhc1RhZ05hbWUoUXVhbGlmaWVk
TmFtZSh0b2tlbi5wcmVmaXgoKSwgdG9rZW4ubmFtZSgpLCBtX2N1cnJlbnROb2RlU3RhY2subGFz
dCgpLm5hbWVzcGFjZUZvclByZWZpeCh0b2tlbi5wcmVmaXgoKSwgbV9jdXJyZW50Tm9kZVN0YWNr
Lmxhc3QoKS5uYW1lc3BhY2VVUkkoKSkpKSkKLSAgICAgICAgbV9wYXJzZXItPnN0b3BQYXJzaW5n
KCk7Ci0KLSAgICBjbG9zZUVsZW1lbnQodG9FbGVtZW50KG5vZGUuZ2V0KCkpKTsKLX0KLQotdm9p
ZCBYTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3Rlcihjb25zdCBBdG9taWNYTUxUb2tlbiYg
dG9rZW4pCi17Ci0gICAgYXBwZW5kVG9UZXh0KHRva2VuLmNoYXJhY3RlcnMoKSwgdG9rZW4uY2hh
cmFjdGVyc0xlbmd0aCgpKTsKLX0KLQotdm9pZCBYTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NEQVRB
KGNvbnN0IEF0b21pY1hNTFRva2VuJiB0b2tlbikKLXsKLSAgICBleGl0VGV4dCgpOwotICAgIGFk
ZChDREFUQVNlY3Rpb246OmNyZWF0ZShtX2RvY3VtZW50LCB0b2tlbi5kYXRhKCkpKTsKLX0KLQot
dm9pZCBYTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NvbW1lbnQoY29uc3QgQXRvbWljWE1MVG9rZW4m
IHRva2VuKQotewotICAgIGV4aXRUZXh0KCk7Ci0gICAgYWRkKENvbW1lbnQ6OmNyZWF0ZShtX2Rv
Y3VtZW50LCB0b2tlbi5jb21tZW50KCkpKTsKLX0KLQotdm9pZCBYTUxUcmVlQnVpbGRlcjo6cHJv
Y2Vzc0VudGl0eShjb25zdCBBdG9taWNYTUxUb2tlbiYgdG9rZW4pCi17Ci0gICAgLy8gRklYTUU6
IHdlIHNob3VsZCBzdXBwb3J0IGludGVybmFsIHN1YnNldC4KLSAgICBpZiAobV9pc1hIVE1MKQot
ICAgICAgICBwcm9jZXNzSFRNTEVudGl0eSh0b2tlbik7Ci0gICAgZWxzZQotICAgICAgICBwcm9j
ZXNzWE1MRW50aXR5KHRva2VuKTsKLX0KLQotdm9pZCBYTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc05h
bWVzcGFjZXMoY29uc3QgQXRvbWljWE1MVG9rZW4mIHRva2VuLCBOb2RlU3RhY2tJdGVtJiBzdGFj
a0l0ZW0pCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRva2VuLmF0dHJpYnV0ZXMo
KS5zaXplKCk7ICsraSkgewotICAgICAgICBjb25zdCBBdHRyaWJ1dGUmIHRva2VuQXR0cmlidXRl
ID0gdG9rZW4uYXR0cmlidXRlcygpLmF0KGkpOwotICAgICAgICBpZiAodG9rZW5BdHRyaWJ1dGUu
bmFtZSgpLnByZWZpeCgpID09IHhtbG5zQXRvbSkKLSAgICAgICAgICAgIHN0YWNrSXRlbS5zZXRO
YW1lc3BhY2VVUkkodG9rZW5BdHRyaWJ1dGUubmFtZSgpLmxvY2FsTmFtZSgpLCB0b2tlbkF0dHJp
YnV0ZS52YWx1ZSgpKTsKLSAgICAgICAgZWxzZSBpZiAodG9rZW5BdHRyaWJ1dGUubmFtZSgpID09
IHhtbG5zQXRvbSkKLSAgICAgICAgICAgIHN0YWNrSXRlbS5zZXROYW1lc3BhY2VVUkkodG9rZW5B
dHRyaWJ1dGUudmFsdWUoKSk7Ci0gICAgfQotfQotCi12b2lkIFhNTFRyZWVCdWlsZGVyOjpwcm9j
ZXNzQXR0cmlidXRlcyhjb25zdCBBdG9taWNYTUxUb2tlbiYgdG9rZW4sIE5vZGVTdGFja0l0ZW0m
IHN0YWNrSXRlbSwgUGFzc1JlZlB0cjxFbGVtZW50PiBuZXdFbGVtZW50KQotewotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB0b2tlbi5hdHRyaWJ1dGVzKCkuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgY29uc3QgQXR0cmlidXRlJiB0b2tlbkF0dHJpYnV0ZSA9IHRva2VuLmF0dHJpYnV0ZXMo
KS5hdChpKTsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIGlmICh0b2tl
bkF0dHJpYnV0ZS5uYW1lKCkucHJlZml4KCkgPT0geG1sbnNBdG9tKQotICAgICAgICAgICAgbmV3
RWxlbWVudC0+c2V0QXR0cmlidXRlTlMoWE1MTlNOYW1lczo6eG1sbnNOYW1lc3BhY2VVUkksICJ4
bWxuczoiICsgdG9rZW5BdHRyaWJ1dGUubmFtZSgpLmxvY2FsTmFtZSgpLCB0b2tlbkF0dHJpYnV0
ZS52YWx1ZSgpLCBlYyk7Ci0gICAgICAgIGVsc2UgaWYgKHRva2VuQXR0cmlidXRlLm5hbWUoKSA9
PSB4bWxuc0F0b20pCi0gICAgICAgICAgICBuZXdFbGVtZW50LT5zZXRBdHRyaWJ1dGVOUyhYTUxO
U05hbWVzOjp4bWxuc05hbWVzcGFjZVVSSSwgeG1sbnNBdG9tLCB0b2tlbkF0dHJpYnV0ZS52YWx1
ZSgpLCBlYyk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgUXVhbGlmaWVkTmFtZSBxTmFt
ZSh0b2tlbkF0dHJpYnV0ZS5wcmVmaXgoKSwgdG9rZW5BdHRyaWJ1dGUubG9jYWxOYW1lKCksIHN0
YWNrSXRlbS5uYW1lc3BhY2VGb3JQcmVmaXgodG9rZW5BdHRyaWJ1dGUucHJlZml4KCksIG51bGxB
dG9tKSk7Ci0gICAgICAgICAgICBuZXdFbGVtZW50LT5zZXRBdHRyaWJ1dGUocU5hbWUsIHRva2Vu
QXR0cmlidXRlLnZhbHVlKCkpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChlYykgewotICAgICAg
ICAgICAgbV9wYXJzZXItPnN0b3BQYXJzaW5nKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgWE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NYTUxFbnRpdHko
Y29uc3QgQXRvbWljWE1MVG9rZW4mIHRva2VuKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBhbXAsICgiYW1wIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBhcG9zLCAoImFw
b3MiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGd0LCAoImd0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBs
dCwgKCJsdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcXVvdCwgKCJxdW90IiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5n
LCBhbXBTLCAoQVNDSUlMaXRlcmFsKCImIikpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgYXBvc1MsIChBU0NJSUxpdGVyYWwoIiciKSkpOwotICAgIERFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBndFMsIChBU0NJSUxpdGVyYWwoIj4iKSkpOwotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoU3RyaW5nLCBsdFMsIChBU0NJSUxpdGVyYWwoIjwiKSkpOwotICAgIERFRklORV9TVEFU
SUNfTE9DQUwoU3RyaW5nLCBxdW90UywgKEFTQ0lJTGl0ZXJhbCgiXCIiKSkpOwotCi0gICAgaWYg
KHRva2VuLm5hbWUoKSA9PSBhbXApCi0gICAgICAgIGFwcGVuZFRvVGV4dChhbXBTLmNoYXJhY3Rl
cnMoKSwgMSk7Ci0gICAgZWxzZSBpZiAodG9rZW4ubmFtZSgpID09IGFwb3MpCi0gICAgICAgIGFw
cGVuZFRvVGV4dChhcG9zUy5jaGFyYWN0ZXJzKCksIDEpOwotICAgIGVsc2UgaWYgKHRva2VuLm5h
bWUoKSA9PSBndCkKLSAgICAgICAgYXBwZW5kVG9UZXh0KGd0Uy5jaGFyYWN0ZXJzKCksIDEpOwot
ICAgIGVsc2UgaWYgKHRva2VuLm5hbWUoKSA9PSBsdCkKLSAgICAgICAgYXBwZW5kVG9UZXh0KGx0
Uy5jaGFyYWN0ZXJzKCksIDEpOwotICAgIGVsc2UgaWYgKHRva2VuLm5hbWUoKSA9PSBxdW90KQot
ICAgICAgICBhcHBlbmRUb1RleHQocXVvdFMuY2hhcmFjdGVycygpLCAxKTsKLSAgICBlbHNlCi0g
ICAgICAgIG1fcGFyc2VyLT5zdG9wUGFyc2luZygpOwotfQotCi12b2lkIFhNTFRyZWVCdWlsZGVy
Ojpwcm9jZXNzSFRNTEVudGl0eShjb25zdCBBdG9taWNYTUxUb2tlbiYgdG9rZW4pCi17Ci0gICAg
SFRNTEVudGl0eVNlYXJjaCBzZWFyY2g7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0g
dG9rZW4ubmFtZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmFtZS5sZW5ndGgoKTsg
KytpKSB7Ci0gICAgICAgIHNlYXJjaC5hZHZhbmNlKG5hbWVbaV0pOwotICAgICAgICBpZiAoIXNl
YXJjaC5pc0VudGl0eVByZWZpeCgpKSB7Ci0gICAgICAgICAgICBtX3BhcnNlci0+c3RvcFBhcnNp
bmcoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLSAgICBzZWFyY2gu
YWR2YW5jZSgnOycpOwotICAgIGlmICghc2VhcmNoLmlzRW50aXR5UHJlZml4KCkpIHsKLSAgICAg
ICAgbV9wYXJzZXItPnN0b3BQYXJzaW5nKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
VUNoYXIzMiBlbnRpdHlWYWx1ZSA9IHNlYXJjaC5tb3N0UmVjZW50TWF0Y2goKS0+Zmlyc3RWYWx1
ZTsKLSAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBhY2NvdW50IGZvciBzZWNvbmRWYWx1ZSBpZiBh
bnkgWE1MIGVudGl0aWVzIGFyZSBsb25nZXIKLSAgICAvLyB0aGFuIG9uZSB1bmljb2RlIGNoYXJh
Y3Rlci4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAvLyBEYXJpbiBBZGxlciB3cml0
ZXM6Ci0gICAgLy8gICBZb3UgY2FuIHNlZSBnaXZlbiB0aGUgY29kZSBhYm92ZSB0aGF0IHRoaXMg
ZWxzZSBpcyBkZWFkIGNvZGUuIFRoaXMgY29kZSBpcyBpbiBhIHN0cmFuZ2Ugc3RhdGUuCi0gICAg
Ly8gICBBbmQgdGhlIHJlaW50ZXJwcmV0X2Nhc3QgdG8gVUNoYXIqIG1ha2VzIHRoZSBjb2RlIGxp
dHRsZS1lbmRpYW4tc3BlY2lmaWMuIFRoYXQgaXMgbm90IGdvb2QhCi0gICAgaWYgKGVudGl0eVZh
bHVlIDw9IDB4RkZGRikKLSAgICAgICAgYXBwZW5kVG9UZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8VUNo
YXIqPigmZW50aXR5VmFsdWUpLCAxKTsKLSAgICBlbHNlIHsKLSAgICAgICAgVUNoYXIgdXRmMTZQ
YWlyWzJdID0geyBVMTZfTEVBRChlbnRpdHlWYWx1ZSksIFUxNl9UUkFJTChlbnRpdHlWYWx1ZSkg
fTsKLSAgICAgICAgYXBwZW5kVG9UZXh0KHV0ZjE2UGFpciwgMik7Ci0gICAgfQotfQotCi1pbmxp
bmUgdm9pZCBYTUxUcmVlQnVpbGRlcjo6YWRkKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSkKLXsKLSAg
ICBtX2N1cnJlbnROb2RlU3RhY2subGFzdCgpLm5vZGUoKS0+cGFyc2VyQXBwZW5kQ2hpbGQobm9k
ZS5nZXQoKSk7Ci0gICAgaWYgKCFub2RlLT5hdHRhY2hlZCgpKQotICAgICAgICBub2RlLT5hdHRh
Y2goKTsKLX0KLQotdm9pZCBYTUxUcmVlQnVpbGRlcjo6YXBwZW5kVG9UZXh0KGNvbnN0IFVDaGFy
KiB0ZXh0LCBzaXplX3QgbGVuZ3RoKQotewotICAgIGVudGVyVGV4dCgpOwotCi0gICAgaWYgKCFt
X2xlYWZUZXh0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2xlYWZUZXh0LT5hcHBlbmQodGV4
dCwgbGVuZ3RoKTsKLX0KLQotdm9pZCBYTUxUcmVlQnVpbGRlcjo6ZW50ZXJUZXh0KCkKLXsKLSAg
ICBpZiAoIW1fc2F3Rmlyc3RFbGVtZW50KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBHdWFyYW50ZWUg
dGhlIHRleHQgaXMgb25seSB3aGl0ZXNwYWNlLgotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKCFtX2xlYWZUZXh0KQotICAgICAgICBtX2xlYWZUZXh0ID0gYWRvcHRQdHIobmV3IFN0
cmluZ0J1aWxkZXIoKSk7Ci19Ci0KLXZvaWQgWE1MVHJlZUJ1aWxkZXI6OmV4aXRUZXh0KCkKLXsK
LSAgICBpZiAoIW1fbGVhZlRleHQuZ2V0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGFkZChU
ZXh0OjpjcmVhdGUobV9kb2N1bWVudCwgbV9sZWFmVGV4dC0+dG9TdHJpbmcoKSkpOwotCi0gICAg
bV9sZWFmVGV4dC5jbGVhcigpOwotfQotCi1ib29sIFhNTFRyZWVCdWlsZGVyOjpmYWlsT25UZXh0
KCkKLXsKLSAgICBpZiAoIW1fbGVhZlRleHQpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAg
Ly8gRklYTUU6IEd1YXJhbnRlZSB0aGUgdGV4dCBpcyBvbmx5IHdoaXRlc3BhY2UuCi0KLSAgICBt
X2xlYWZUZXh0LmNsZWFyKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVhNTFRyZWVCdWlsZGVy
OjpOb2RlU3RhY2tJdGVtOjpOb2RlU3RhY2tJdGVtKFBhc3NSZWZQdHI8Q29udGFpbmVyTm9kZT4g
biwgTm9kZVN0YWNrSXRlbSogcGFyZW50KQotICAgIDogbV9ub2RlKG4pCi17Ci0gICAgaWYgKCFw
YXJlbnQpIHsKLSAgICAgICAgbV9zY29wZWROYW1lc3BhY2VzLnNldCh4bWxBdG9tLCBYTUxOYW1l
czo6eG1sTmFtZXNwYWNlVVJJKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fbmFt
ZXNwYWNlID0gcGFyZW50LT5tX25hbWVzcGFjZTsKLSAgICBtX3Njb3BlZE5hbWVzcGFjZXMgPSBw
YXJlbnQtPm1fc2NvcGVkTmFtZXNwYWNlczsKLX0KLQotYm9vbCBYTUxUcmVlQnVpbGRlcjo6Tm9k
ZVN0YWNrSXRlbTo6aGFzTmFtZXNwYWNlVVJJKEF0b21pY1N0cmluZyBwcmVmaXgpCi17Ci0gICAg
QVNTRVJUKCFwcmVmaXguaXNOdWxsKCkpOwotICAgIHJldHVybiBtX3Njb3BlZE5hbWVzcGFjZXMu
Y29udGFpbnMocHJlZml4KTsKLX0KLQotQXRvbWljU3RyaW5nIFhNTFRyZWVCdWlsZGVyOjpOb2Rl
U3RhY2tJdGVtOjpuYW1lc3BhY2VVUkkoQXRvbWljU3RyaW5nIHByZWZpeCkKLXsKLSAgICBBU1NF
UlQoIXByZWZpeC5pc051bGwoKSk7Ci0gICAgaWYgKG1fc2NvcGVkTmFtZXNwYWNlcy5jb250YWlu
cyhwcmVmaXgpKQotICAgICAgICByZXR1cm4gbV9zY29wZWROYW1lc3BhY2VzLmdldChwcmVmaXgp
OwotICAgIHJldHVybiBudWxsQXRvbTsKLX0KLQotdm9pZCBYTUxUcmVlQnVpbGRlcjo6Tm9kZVN0
YWNrSXRlbTo6c2V0TmFtZXNwYWNlVVJJKEF0b21pY1N0cmluZyBwcmVmaXgsIEF0b21pY1N0cmlu
ZyB1cmkpCi17Ci0gICAgbV9zY29wZWROYW1lc3BhY2VzLnNldChwcmVmaXgsIHVyaSk7Ci19Ci0K
LUF0b21pY1N0cmluZyBYTUxUcmVlQnVpbGRlcjo6Tm9kZVN0YWNrSXRlbTo6bmFtZXNwYWNlRm9y
UHJlZml4KEF0b21pY1N0cmluZyBwcmVmaXgsIEF0b21pY1N0cmluZyBmYWxsYmFjaykKLXsKLSAg
ICBBdG9taWNTdHJpbmcgdXJpID0gZmFsbGJhY2s7Ci0gICAgaWYgKCFwcmVmaXguaXNOdWxsKCkg
JiYgaGFzTmFtZXNwYWNlVVJJKHByZWZpeCkpCi0gICAgICAgIHVyaSA9IG5hbWVzcGFjZVVSSShw
cmVmaXgpOwotCi0gICAgcmV0dXJuIHVyaTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxUcmVlQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9YTUxUcmVlQnVpbGRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Yzkx
ODZlOGExZGEyMjQ1NzVkNzhmNDA4NmQ2MzE5NWM2MmJlNmQ5Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
VHJlZUJ1aWxkZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDEyNSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgR09PR0xFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBYTUxUcmVlQnVp
bGRlcl9oCi0jZGVmaW5lIFhNTFRyZWVCdWlsZGVyX2gKLQotI2luY2x1ZGUgIlRleHQuaCIKLSNp
bmNsdWRlICJYTUxUb2tlbi5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDb250YWluZXJOb2RlOwotY2xhc3MgRG9jdW1l
bnQ7Ci1jbGFzcyBEb2N1bWVudEZyYWdtZW50OwotY2xhc3MgTmV3WE1MRG9jdW1lbnRQYXJzZXI7
Ci0KLWNsYXNzIFhNTFRyZWVCdWlsZGVyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShYTUxU
cmVlQnVpbGRlcik7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NPd25QdHI8WE1MVHJlZUJ1aWxkZXI+IGNyZWF0ZShOZXdYTUxEb2N1bWVudFBh
cnNlciogcGFyc2VyLCBEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgewotICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IFhNTFRyZWVCdWlsZGVyKHBhcnNlciwgZG9jdW1lbnQpKTsKLSAgICB9Ci0K
LSAgICBzdGF0aWMgUGFzc093blB0cjxYTUxUcmVlQnVpbGRlcj4gY3JlYXRlKE5ld1hNTERvY3Vt
ZW50UGFyc2VyKiBwYXJzZXIsIERvY3VtZW50RnJhZ21lbnQqIGRvY3VtZW50LCBFbGVtZW50KiBw
YXJlbnQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFhNTFRyZWVCdWlsZGVy
KHBhcnNlciwgZG9jdW1lbnQsIHBhcmVudCkpOwotICAgIH0KLQotICAgIHZvaWQgcHJvY2Vzc1Rv
a2VuKGNvbnN0IEF0b21pY1hNTFRva2VuJik7Ci0gICAgdm9pZCBmaW5pc2goKTsKLQotcHJpdmF0
ZToKLSAgICBYTUxUcmVlQnVpbGRlcihOZXdYTUxEb2N1bWVudFBhcnNlciosIERvY3VtZW50Kik7
Ci0gICAgWE1MVHJlZUJ1aWxkZXIoTmV3WE1MRG9jdW1lbnRQYXJzZXIqLCBEb2N1bWVudEZyYWdt
ZW50KiwgRWxlbWVudCogcGFyZW50KTsKLQotICAgIGNsYXNzIE5vZGVTdGFja0l0ZW0gewotICAg
IHB1YmxpYzoKLSAgICAgICAgTm9kZVN0YWNrSXRlbShQYXNzUmVmUHRyPENvbnRhaW5lck5vZGU+
IGl0ZW0sIE5vZGVTdGFja0l0ZW0qIHBhcmVudCA9IDApOwotCi0gICAgICAgIGJvb2wgaGFzTmFt
ZXNwYWNlVVJJKEF0b21pY1N0cmluZyBwcmVmaXgpOwotICAgICAgICBBdG9taWNTdHJpbmcgbmFt
ZXNwYWNlVVJJKEF0b21pY1N0cmluZyBwcmVmaXgpOwotICAgICAgICBBdG9taWNTdHJpbmcgbmFt
ZXNwYWNlVVJJKCkgeyByZXR1cm4gbV9uYW1lc3BhY2U7IH0KLSAgICAgICAgdm9pZCBzZXROYW1l
c3BhY2VVUkkoQXRvbWljU3RyaW5nIHByZWZpeCwgQXRvbWljU3RyaW5nIHVyaSk7Ci0gICAgICAg
IHZvaWQgc2V0TmFtZXNwYWNlVVJJKEF0b21pY1N0cmluZyB1cmkpIHsgbV9uYW1lc3BhY2UgPSB1
cmk7IH0KLSAgICAgICAgQXRvbWljU3RyaW5nIG5hbWVzcGFjZUZvclByZWZpeChBdG9taWNTdHJp
bmcgcHJlZml4LCBBdG9taWNTdHJpbmcgZmFsbGJhY2spOwotCi0gICAgICAgIFBhc3NSZWZQdHI8
Q29udGFpbmVyTm9kZT4gbm9kZSgpIHsgcmV0dXJuIG1fbm9kZTsgfQotICAgICAgICBjb25zdCBD
b250YWluZXJOb2RlKiBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlLmdldCgpOyB9Ci0gICAg
ICAgIHZvaWQgc2V0Tm9kZShQYXNzUmVmUHRyPENvbnRhaW5lck5vZGU+IG5vZGUpIHsgbV9ub2Rl
ID0gbm9kZTsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgSGFzaE1hcDxBdG9taWNTdHJpbmcs
IEF0b21pY1N0cmluZz4gbV9zY29wZWROYW1lc3BhY2VzOwotICAgICAgICBSZWZQdHI8Q29udGFp
bmVyTm9kZT4gbV9ub2RlOwotICAgICAgICBBdG9taWNTdHJpbmcgbV9uYW1lc3BhY2U7Ci0gICAg
fTsKLQotICAgIHZvaWQgcHVzaEN1cnJlbnROb2RlKGNvbnN0IE5vZGVTdGFja0l0ZW0mKTsKLSAg
ICB2b2lkIHBvcEN1cnJlbnROb2RlKCk7Ci0gICAgdm9pZCBjbG9zZUVsZW1lbnQoUGFzc1JlZlB0
cjxFbGVtZW50Pik7Ci0KLSAgICB2b2lkIHByb2Nlc3NQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oY29u
c3QgQXRvbWljWE1MVG9rZW4mKTsKLSAgICB2b2lkIHByb2Nlc3NYTUxEZWNsYXJhdGlvbihjb25z
dCBBdG9taWNYTUxUb2tlbiYpOwotICAgIHZvaWQgcHJvY2Vzc0RPQ1RZUEUoY29uc3QgQXRvbWlj
WE1MVG9rZW4mKTsKLSAgICB2b2lkIHByb2Nlc3NTdGFydFRhZyhjb25zdCBBdG9taWNYTUxUb2tl
biYpOwotICAgIHZvaWQgcHJvY2Vzc0VuZFRhZyhjb25zdCBBdG9taWNYTUxUb2tlbiYpOwotICAg
IHZvaWQgcHJvY2Vzc0NEQVRBKGNvbnN0IEF0b21pY1hNTFRva2VuJik7Ci0gICAgdm9pZCBwcm9j
ZXNzQ2hhcmFjdGVyKGNvbnN0IEF0b21pY1hNTFRva2VuJik7Ci0gICAgdm9pZCBwcm9jZXNzQ29t
bWVudChjb25zdCBBdG9taWNYTUxUb2tlbiYpOwotICAgIHZvaWQgcHJvY2Vzc0VudGl0eShjb25z
dCBBdG9taWNYTUxUb2tlbiYpOwotCi0gICAgdm9pZCBwcm9jZXNzTmFtZXNwYWNlcyhjb25zdCBB
dG9taWNYTUxUb2tlbiYsIE5vZGVTdGFja0l0ZW0mKTsKLSAgICB2b2lkIHByb2Nlc3NBdHRyaWJ1
dGVzKGNvbnN0IEF0b21pY1hNTFRva2VuJiwgTm9kZVN0YWNrSXRlbSYsIFBhc3NSZWZQdHI8RWxl
bWVudD4gbmV3RWxlbWVudCk7Ci0gICAgdm9pZCBwcm9jZXNzWE1MRW50aXR5KGNvbnN0IEF0b21p
Y1hNTFRva2VuJik7Ci0gICAgdm9pZCBwcm9jZXNzSFRNTEVudGl0eShjb25zdCBBdG9taWNYTUxU
b2tlbiYpOwotCi0gICAgaW5saW5lIHZvaWQgYWRkKFBhc3NSZWZQdHI8Tm9kZT4pOwotCi0gICAg
dm9pZCBhcHBlbmRUb1RleHQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgp
OwotICAgIHZvaWQgZW50ZXJUZXh0KCk7Ci0gICAgdm9pZCBleGl0VGV4dCgpOwotICAgIGJvb2wg
ZmFpbE9uVGV4dCgpOwotCi0gICAgQXRvbWljU3RyaW5nIG5hbWVzcGFjZUZvclByZWZpeChBdG9t
aWNTdHJpbmcgcHJlZml4LCBBdG9taWNTdHJpbmcgZmFsbGJhY2spOwotCi0gICAgRG9jdW1lbnQq
IG1fZG9jdW1lbnQ7Ci0gICAgTmV3WE1MRG9jdW1lbnRQYXJzZXIqIG1fcGFyc2VyOwotCi0gICAg
Ym9vbCBtX2lzWEhUTUw7Ci0KLSAgICBib29sIG1fc2F3Rmlyc3RFbGVtZW50OwotICAgIFZlY3Rv
cjxOb2RlU3RhY2tJdGVtPiBtX2N1cnJlbnROb2RlU3RhY2s7Ci0KLSAgICBPd25QdHI8U3RyaW5n
QnVpbGRlcj4gbV9sZWFmVGV4dDsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIFhNTFRyZWVCdWlsZGVy
X2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>