<?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>72889</bug_id>
          
          <creation_ts>2011-11-21 08:47:56 -0800</creation_ts>
          <short_desc>Add interface for runtime option settings</short_desc>
          <delta_ts>2011-12-15 04:01:54 -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>JavaScriptCore</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>72938</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Andy Wingo">wingo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>arv</cc>
    
    <cc>barraclough</cc>
    
    <cc>fpizlo</cc>
    
    <cc>gustavo</cc>
    
    <cc>oliver</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>507000</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-11-21 08:47:56 -0800</bug_when>
    <thetext>JSC doesn&apos;t have many runtime knobs, instead relying on compile-time ifdefs.  I would like to add some more runtime things, for debugging, and also eventually to have a runtime --harmony flag for bug 31813.

The patch to be attached is an RFC for this sort of thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507004</commentid>
    <comment_count>1</comment_count>
      <attachid>116096</attachid>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-11-21 08:53:34 -0800</bug_when>
    <thetext>Created attachment 116096
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507006</commentid>
    <comment_count>2</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-11-21 08:57:15 -0800</bug_when>
    <thetext>Beyond the idea itself, my C++ style instincts are terrible, so feedback is appreciated :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507011</commentid>
    <comment_count>3</comment_count>
      <attachid>116096</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-11-21 09:04:36 -0800</bug_when>
    <thetext>Comment on attachment 116096
Patch

Attachment 116096 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10472651</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507016</commentid>
    <comment_count>4</comment_count>
      <attachid>116096</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-11-21 09:11:38 -0800</bug_when>
    <thetext>Comment on attachment 116096
Patch

Attachment 116096 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/10533316</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507020</commentid>
    <comment_count>5</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-11-21 09:16:24 -0800</bug_when>
    <thetext>I&apos;ll update so it compiles on release builds, and add build support for other ports for the new files.  Feedback regarding the name would be useful, so I can add the files with the right names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507049</commentid>
    <comment_count>6</comment_count>
      <attachid>116104</attachid>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-11-21 10:11:33 -0800</bug_when>
    <thetext>Created attachment 116104
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507050</commentid>
    <comment_count>7</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-11-21 10:15:51 -0800</bug_when>
    <thetext>Attached patch introduces some cruft so that accessors are always there.

To use the one flag that currently exists as an example, --dump-bytecode is only available in debug mode.  This has always been the case, under its old -d name, but now it is only present in jsc --help in debug mode.

Transcript, in debug mode:

$ ./WebKitBuild/Debug/Programs/jsc --dump-bytecode
&gt; 1
4 m_instructions; 72 bytes at 0x1e21250; 1 parameter(s); 1 callee register(s)
[...]
&gt; 
$ ./WebKitBuild/Debug/Programs/jsc --help
Usage: jsc [options] [files] [-- arguments]
  -e         Evaluate argument as script code
  -f         Specifies a source file (deprecated)
  -h|--help  Prints this help message
  -i         Enables interactive mode (default if no files are specified)
  -s         Installs signal handlers that exit on a crash (Unix platforms only)
  --dump-bytecode
             Dump all generated bytecode

In release mode:

$ ./WebKitBuild/Release/Programs/jsc --help
Usage: jsc [options] [files] [-- arguments]
  -e         Evaluate argument as script code
  -f         Specifies a source file (deprecated)
  -h|--help  Prints this help message
  -i         Enables interactive mode (default if no files are specified)
  -s         Installs signal handlers that exit on a crash (Unix platforms only)
$ ./WebKitBuild/Release/Programs/jsc --dump-bytecode
ERROR: This build has not been configured to allow the --dump-bytecode flag to be set at runtime.

Note the error.  In release mode, options that are not configurable compile to static methods that should inline appropriately, if I understand things right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507059</commentid>
    <comment_count>8</comment_count>
      <attachid>116104</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-11-21 10:33:26 -0800</bug_when>
    <thetext>Comment on attachment 116104
Patch

Attachment 116104 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/10475315</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507069</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-21 10:51:26 -0800</bug_when>
    <thetext>Is it really necessary for this to be per-instance?  I can appreciate what the Options object might give us, but it would be unfortunate if the code became more complex in order to support per-instance run-time knobs.

Note that there is already a facility to support per-process run-time knobs.  See Heuristics.cpp.  It almost feels like this would have a better over balance between flexibility and code cleanliness if we just renamed Heuristics to Options, and started moving things like the byte code generator&apos;s dump flag into Options.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507078</commentid>
    <comment_count>10</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-11-21 11:00:10 -0800</bug_when>
    <thetext>Sorry for my ignorance, but what do you mean by per-instance?  My patch sets global variables, basically.

I&apos;m fine with using the Heuristics code instead.  Would you prefer that?  Would you be opposed to command-line integration, or do you think that environment variables are sufficient?  I do enjoy V8&apos;s options interface, as it is a bit more discoverable.

Andy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507092</commentid>
    <comment_count>11</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-21 11:12:56 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Sorry for my ignorance, but what do you mean by per-instance?  My patch sets global variables, basically.

Ooops, it was me who was being ignorant.  I saw that Options class and assumed that you wanted to pass different instances of it around.  Now I see that it&apos;s meant to be static.

I do like the way you&apos;ve structured Options, in that it should presumably allow adding new options fairly simple and provide discoverability.  But on the other hand, anything you do in Options should be done in such a way that it can be tuned from a full browser.  The environment variables are a cheap way to accomplish this.  Do you know how you&apos;d interface this to WebCore/WebKit so that the options can be modified even for a browser?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507131</commentid>
    <comment_count>12</comment_count>
      <attachid>116104</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-11-21 12:35:12 -0800</bug_when>
    <thetext>Comment on attachment 116104
Patch

Attachment 116104 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10541008</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507475</commentid>
    <comment_count>13</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-11-22 01:51:35 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; I saw that Options class and assumed that you wanted to pass different instances of it around.  Now I see that it&apos;s meant to be static.

Yes, it&apos;s an abuse of classes as an organizational device.

Like I said, my C++ instincts are terrible :), but I thought that it could be a good idea to avoid accidental modification of the options / heuristics, and so hide them behind a static method. The method should inline, just in case that&apos;s important.

&gt; Anything you do in Options should be done in such a way that it can be tuned from a full browser.  The environment variables are a cheap way to accomplish this.  Do you know how you&apos;d interface this to WebCore/WebKit so that the options can be modified even for a browser?

We could provide the same interface, or we could provide API, or provide a little parser for e.g. JSC_HEURISTICS=&apos;likely-to-take-slow-case-threshold=4,maximum-optimization-delay=35,..&apos;

I like your suggestion of just renaming Heuristics to Options and refactoring from there.  I&apos;ll post a patch to do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507481</commentid>
    <comment_count>14</comment_count>
      <attachid>116193</attachid>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-11-22 02:25:03 -0800</bug_when>
    <thetext>Created attachment 116193
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507488</commentid>
    <comment_count>15</comment_count>
      <attachid>116194</attachid>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-11-22 03:25:51 -0800</bug_when>
    <thetext>Created attachment 116194
Further refactor of Options.{h,cpp}

Attached a patch to macro-ify the current heuristics.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507489</commentid>
    <comment_count>16</comment_count>
      <attachid>116194</attachid>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-11-22 03:26:31 -0800</bug_when>
    <thetext>Comment on attachment 116194
Further refactor of Options.{h,cpp}

Clearing review bit so the bots don&apos;t run this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507495</commentid>
    <comment_count>17</comment_count>
      <attachid>116196</attachid>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-11-22 03:53:38 -0800</bug_when>
    <thetext>Created attachment 116196
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507496</commentid>
    <comment_count>18</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-11-22 03:54:37 -0800</bug_when>
    <thetext>Fixed testRegexp.cpp, which hopefully will fix the windows build.  I&apos;ll move further patches to other bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507793</commentid>
    <comment_count>19</comment_count>
      <attachid>116196</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-22 13:29:53 -0800</bug_when>
    <thetext>Comment on attachment 116196
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507795</commentid>
    <comment_count>20</comment_count>
      <attachid>116196</attachid>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-11-22 13:32:44 -0800</bug_when>
    <thetext>Comment on attachment 116196
Patch

cq?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507805</commentid>
    <comment_count>21</comment_count>
      <attachid>116196</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-22 13:47:50 -0800</bug_when>
    <thetext>Comment on attachment 116196
Patch

You missed a reference to Heuristics in the Xcode project junk.  (Just do a search for Heuristics in project.pbxproj and you&apos;ll see what I mean.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508707</commentid>
    <comment_count>22</comment_count>
      <attachid>116496</attachid>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-11-24 04:20:36 -0800</bug_when>
    <thetext>Created attachment 116496
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508708</commentid>
    <comment_count>23</comment_count>
      <attachid>116496</attachid>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-11-24 04:21:14 -0800</bug_when>
    <thetext>Comment on attachment 116496
Patch

Whoops.  I think I&apos;ve fixed it now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510604</commentid>
    <comment_count>24</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-11-29 01:43:27 -0800</bug_when>
    <thetext>Ping :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510820</commentid>
    <comment_count>25</comment_count>
      <attachid>116979</attachid>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-11-29 09:03:00 -0800</bug_when>
    <thetext>Created attachment 116979
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510822</commentid>
    <comment_count>26</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-11-29 09:04:14 -0800</bug_when>
    <thetext>Updated for recent change in heuristics.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511884</commentid>
    <comment_count>27</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-11-30 10:51:24 -0800</bug_when>
    <thetext>  Hark!  A patch revised
    packaged for your consumption
      waits expectantly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512887</commentid>
    <comment_count>28</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-12-01 10:38:46 -0800</bug_when>
    <thetext>  A patch on a bug grows rotten
  If it feels that it has been forgotten
    You know what to do;
    I wrote you a haiku!
  R+, of limericks are you begotten?

(ok, that was pretty bad)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519090</commentid>
    <comment_count>29</comment_count>
      <attachid>118760</attachid>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-12-12 02:58:44 -0800</bug_when>
    <thetext>Created attachment 118760
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519096</commentid>
    <comment_count>30</comment_count>
      <attachid>118760</attachid>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-12-12 03:12:03 -0800</bug_when>
    <thetext>Comment on attachment 118760
Patch

Filip, would you mind taking a look at this?

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520833</commentid>
    <comment_count>31</comment_count>
      <attachid>119194</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-12-14 03:53:56 -0800</bug_when>
    <thetext>Created attachment 119194
Andy&apos;s updated patch

So we give it a chance on mac&apos;s EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520838</commentid>
    <comment_count>32</comment_count>
      <attachid>119198</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-12-14 04:13:50 -0800</bug_when>
    <thetext>Created attachment 119198
Andy&apos;s updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520863</commentid>
    <comment_count>33</comment_count>
      <attachid>119205</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-12-14 05:09:50 -0800</bug_when>
    <thetext>Created attachment 119205
Andy&apos;s updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520885</commentid>
    <comment_count>34</comment_count>
      <attachid>119211</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-12-14 05:54:20 -0800</bug_when>
    <thetext>Created attachment 119211
Andy&apos;s updated patch

Should build on mac this time :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521797</commentid>
    <comment_count>35</comment_count>
      <attachid>119211</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-15 03:40:45 -0800</bug_when>
    <thetext>Comment on attachment 119211
Andy&apos;s updated patch

R=me.  Apologies for the long delay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521811</commentid>
    <comment_count>36</comment_count>
      <attachid>119211</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-15 04:01:47 -0800</bug_when>
    <thetext>Comment on attachment 119211
Andy&apos;s updated patch

Clearing flags on attachment: 119211

Committed r102917: &lt;http://trac.webkit.org/changeset/102917&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521812</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-15 04:01:54 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116096</attachid>
            <date>2011-11-21 08:53:34 -0800</date>
            <delta_ts>2011-11-21 10:11:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72889-20111121175331.patch</filename>
            <type>text/plain</type>
            <size>13845</size>
            <attacher name="Andy Wingo">wingo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwOTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ODhjN2UzNzRhY2RiMDc1MTNiNmExYWY5YzI0ZThjZjA3MDYxNTc3Li4yNGZlNTMwYzIxNmZkYzk5
M2ZjMWRjODUwNGM2YWI3NGJmMDFhNTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwzOCBAQAogMjAxMS0xMS0yMSAgQW5keSBXaW5nbyAgPHdpbmdvQGlnYWxpYS5jb20+CiAK
KyAgICAgICAgQWRkIGludGVyZmFjZSBmb3IgcnVudGltZSBvcHRpb24gc2V0dGluZ3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyODg5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjb21taXQgYWRk
cyBhbiBpbnRlcmZhY2UgZm9yIEpTQyBvcHRpb25zIHRoYXQgbWlnaHQgYmUgc2V0IG9uCisgICAg
ICAgIHRoZSBjb21tYW5kLWxpbmUsIG9yIG90aGVyd2lzZSBwZXItaW5zdGFuY2UuICBJdCBpcyBt
b3N0bHkgZm9yCisgICAgICAgIGRlYnVnZ2luZyBwdXJwb3Nlcy4KKworICAgICAgICAqIHJ1bnRp
bWUvT3B0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6IE5ldyBmaWxlcywg
aW1wbGVtZW50aW5nIHRoZSBvcHRpb25zCisgICAgICAgIGludGVyZmFjZS4KKworICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06IFVwZGF0ZSB0aGUgYnVpbGQgZm9yIHRoZSBuZXcgZmlsZXMu
CisKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKTogSW5zdGVhZCBv
ZiB0cmFja2luZworICAgICAgICB0aGlzIGZsYWcgaW4gYSBsb2NhbCBzdGF0aWMgdmFyLCB1c2Ug
dGhlIE9wdGlvbnM6OmR1bXBCeXRlY29kZQorICAgICAgICBmbGFnLgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOiBVc2UgZHVtcHNHZW5lcmF0ZWRDb2RlKCkKKyAg
ICAgICAgaGVscGVyLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
OiBSZW1vdmUgc2V0RHVtcHNHZW5lcmF0ZWRDb2RlLgorICAgICAgICAqIGpzYy5jcHA6CisgICAg
ICAgIChDb21tYW5kTGluZTo6Q29tbWFuZExpbmUpOiBSZW5hbWUgZnJvbSBPcHRpb25zLCB0byBh
dm9pZCBuYW1lCisgICAgICAgIGNvbGxpc2lvbi4KKyAgICAgICAgKHJ1bldpdGhTY3JpcHRzKToK
KyAgICAgICAgKHByaW50VXNhZ2VTdGF0ZW1lbnQpOgorICAgICAgICAocGFyc2VBcmd1bWVudHMp
OgorICAgICAgICAoanNjbWFpbik6IFVwZGF0ZSB0byBwYXJzZSBydW50aW1lIG9wdGlvbnMgdmlh
CisgICAgICAgIE9wdGlvbnM6OlBhcnNlT3B0aW9uLgorCisyMDExLTExLTIxICBBbmR5IFdpbmdv
ICA8d2luZ29AaWdhbGlhLmNvbT4KKwogICAgICAgICBBZGQgLmRpci1sb2NhbHMuZWwgZmlsZSBm
b3IgYmV0dGVyIEVtYWNzIGRlZmF1bHRzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03MjQ4MwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCmluZGV4IDdkNWZkZDVkOWRiYTAwNzFiOTg5MTQ2YzkzZTdhMGI1ZmM2YmRkMzAu
LmU0OTc3MWJkOTljMGFmNWQzYmI2MGY4MTY3MWM5YTFhMzMyNGQ5ODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00MzcsNiArNDM3LDggQEAgamF2YXNj
cmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0UHJvdG90eXBlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlv
bnMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmggXAor
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggYzNhMTVh
OWQxNGEyZDI1MWVhYzNhOTZhODEyMzY4MmI0YTY0ZDBjYy4uNmU1MjRlZmM2NmEwODE4ODc3ZTg4
NzJjNTJjODU4NDUwY2MxMjk1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAK
ICNpbmNsdWRlICJCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oIgogI2luY2x1ZGUgIkpTRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk9wdGlvbnMuaCIK
ICNpbmNsdWRlICJTY29wZUNoYWluLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlVTdHJpbmcuaCIKQEAgLTExNiwyMyArMTE3LDEwIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIGV4cGVjdGVkIGJ5IHRoZSBjYWxsZWUuCiAqLwogCi0jaWZuZGVmIE5ERUJVRwotc3RhdGlj
IGJvb2wgc19kdW1wc0dlbmVyYXRlZENvZGUgPSBmYWxzZTsKLSNlbmRpZgotCi12b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjpzZXREdW1wc0dlbmVyYXRlZENvZGUoYm9vbCBkdW1wc0dlbmVyYXRlZENv
ZGUpCi17Ci0jaWZuZGVmIE5ERUJVRwotICAgIHNfZHVtcHNHZW5lcmF0ZWRDb2RlID0gZHVtcHNH
ZW5lcmF0ZWRDb2RlOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZHVtcHNHZW5lcmF0ZWRDb2Rl
KTsKLSNlbmRpZgotfQotCiBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENv
ZGUoKQogewogI2lmbmRlZiBOREVCVUcKLSAgICByZXR1cm4gc19kdW1wc0dlbmVyYXRlZENvZGU7
CisgICAgcmV0dXJuIE9wdGlvbnM6OmR1bXBCeXRlY29kZTsKICNlbHNlCiAgICAgcmV0dXJuIGZh
bHNlOwogI2VuZGlmCkBAIC0xNDksNyArMTM3LDcgQEAgSlNPYmplY3QqIEJ5dGVjb2RlR2VuZXJh
dG9yOjpnZW5lcmF0ZSgpCiAgICAgbV9jb2RlQmxvY2stPnNldEluc3RydWN0aW9uQ291bnQobV9j
b2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAg
aWYgKHNfZHVtcHNHZW5lcmF0ZWRDb2RlKQorICAgIGlmIChkdW1wc0dlbmVyYXRlZENvZGUoKSkK
ICAgICAgICAgbV9jb2RlQmxvY2stPmR1bXAobV9zY29wZUNoYWluLT5nbG9iYWxPYmplY3QtPmds
b2JhbEV4ZWMoKSk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGU4YjY5YTBkYjdlM2MxOGQ1
YWZlZTE2OTNiNTY5MjVkYzFmNWU5Y2MuLmNlOWE0YTg0Y2Y4ZjlmY2U3NWQ3YTIxY2I3NTViNTlh
YTUzMGE5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTkxLDcgKzkxLDYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrIFZhclN0YWNrOwog
ICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrIEZ1bmN0aW9u
U3RhY2s7CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgc2V0RHVtcHNH
ZW5lcmF0ZWRDb2RlKGJvb2wgZHVtcHNHZW5lcmF0ZWRDb2RlKTsKICAgICAgICAgc3RhdGljIGJv
b2wgZHVtcHNHZW5lcmF0ZWRDb2RlKCk7CiAKICAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3IoUHJv
Z3JhbU5vZGUqLCBTY29wZUNoYWluTm9kZSosIFN5bWJvbFRhYmxlKiwgUHJvZ3JhbUNvZGVCbG9j
ayosIENvbXBpbGF0aW9uS2luZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IGZjMGM1NjA5MDJi
MzZlOGY4YjlmZjU5MDkwNDBmM2JjMTk3NzMyYzEuLmNmODZiN2I0OTgzYjdmMzU4ZDE1NjRlNmQ1
MzFhYmQ1ZWNmMzkzMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpT
U3RyaW5nLmgiCisjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgIk1haW5UaHJlYWQuaCIK
ICNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKICNpbmNsdWRlIDxtYXRoLmg+CkBAIC0xMDIsMTUg
KzEwMywxMyBAQCBzdHJ1Y3QgU2NyaXB0IHsKICAgICB9CiB9OwogCi1zdHJ1Y3QgT3B0aW9ucyB7
Ci0gICAgT3B0aW9ucygpCitzdHJ1Y3QgQ29tbWFuZExpbmUgeworICAgIENvbW1hbmRMaW5lKCkK
ICAgICAgICAgOiBpbnRlcmFjdGl2ZShmYWxzZSkKLSAgICAgICAgLCBkdW1wKGZhbHNlKQogICAg
IHsKICAgICB9CiAKICAgICBib29sIGludGVyYWN0aXZlOwotICAgIGJvb2wgZHVtcDsKICAgICBW
ZWN0b3I8U2NyaXB0PiBzY3JpcHRzOwogICAgIFZlY3RvcjxVU3RyaW5nPiBhcmd1bWVudHM7CiB9
OwpAQCAtNDMwLDE1ICs0MjksMTIgQEAgc3RhdGljIHZvaWQgY2xlYW51cEdsb2JhbERhdGEoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogICAgIGdsb2JhbERhdGEtPmRlcmVmKCk7CiB9CiAKLXN0
YXRpYyBib29sIHJ1bldpdGhTY3JpcHRzKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBWZWN0b3I8U2NyaXB0PiYgc2NyaXB0cywgYm9vbCBkdW1wKQorc3RhdGljIGJvb2wgcnVuV2l0
aFNjcmlwdHMoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxTY3JpcHQ+
JiBzY3JpcHRzKQogewogICAgIFVTdHJpbmcgc2NyaXB0OwogICAgIFVTdHJpbmcgZmlsZU5hbWU7
CiAgICAgVmVjdG9yPGNoYXI+IHNjcmlwdEJ1ZmZlcjsKIAotICAgIGlmIChkdW1wKQotICAgICAg
ICBCeXRlY29kZUdlbmVyYXRvcjo6c2V0RHVtcHNHZW5lcmF0ZWRDb2RlKHRydWUpOwotCiAgICAg
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCk7CiAK
ICNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCkBAIC00NjIsNyArNDU4LDcgQEAgc3RhdGljIGJv
b2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3Rv
cjxTY3JpcHQ+JiBzY3IKICAgICAgICAgSlNWYWx1ZSBldmFsdWF0aW9uRXhjZXB0aW9uOwogICAg
ICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpLCBtYWtlU291cmNlKHNjcmlw
dCwgZmlsZU5hbWUpLCBKU1ZhbHVlKCksICZldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICAgICAg
c3VjY2VzcyA9IHN1Y2Nlc3MgJiYgIWV2YWx1YXRpb25FeGNlcHRpb247Ci0gICAgICAgIGlmIChk
dW1wKSB7CisgICAgICAgIGlmIChPcHRpb25zOjpkdW1wQnl0ZWNvZGUpIHsKICAgICAgICAgICAg
IGlmIChldmFsdWF0aW9uRXhjZXB0aW9uKQogICAgICAgICAgICAgICAgIHByaW50ZigiRXhjZXB0
aW9uOiAlc1xuIiwgZXZhbHVhdGlvbkV4Y2VwdGlvbi50b1N0cmluZyhnbG9iYWxPYmplY3QtPmds
b2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBlbHNlCkBAIC01MzUsNyAr
NTMxLDYgQEAgc3RhdGljIHZvaWQgcnVuSW50ZXJhY3RpdmUoR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiBzdGF0aWMgTk9fUkVUVVJOIHZvaWQgcHJpbnRVc2FnZVN0YXRlbWVudChKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIGJvb2wgaGVscCA9IGZhbHNlKQogewogICAgIGZwcmludGYoc3Rk
ZXJyLCAiVXNhZ2U6IGpzYyBbb3B0aW9uc10gW2ZpbGVzXSBbLS0gYXJndW1lbnRzXVxuIik7Ci0g
ICAgZnByaW50ZihzdGRlcnIsICIgIC1kICAgICAgICAgRHVtcHMgYnl0ZWNvZGUgKGRlYnVnIGJ1
aWxkcyBvbmx5KVxuIik7CiAgICAgZnByaW50ZihzdGRlcnIsICIgIC1lICAgICAgICAgRXZhbHVh
dGUgYXJndW1lbnQgYXMgc2NyaXB0IGNvZGVcbiIpOwogICAgIGZwcmludGYoc3RkZXJyLCAiICAt
ZiAgICAgICAgIFNwZWNpZmllcyBhIHNvdXJjZSBmaWxlIChkZXByZWNhdGVkKVxuIik7CiAgICAg
ZnByaW50ZihzdGRlcnIsICIgIC1ofC0taGVscCAgUHJpbnRzIHRoaXMgaGVscCBtZXNzYWdlXG4i
KTsKQEAgLTU0MywxNiArNTM4LDMzIEBAIHN0YXRpYyBOT19SRVRVUk4gdm9pZCBwcmludFVzYWdl
U3RhdGVtZW50KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgYm9vbCBoZWxwID0KICNpZiBIQVZF
KFNJR05BTF9IKQogICAgIGZwcmludGYoc3RkZXJyLCAiICAtcyAgICAgICAgIEluc3RhbGxzIHNp
Z25hbCBoYW5kbGVycyB0aGF0IGV4aXQgb24gYSBjcmFzaCAoVW5peCBwbGF0Zm9ybXMgb25seSlc
biIpOwogI2VuZGlmCi0KKyNkZWZpbmUgUFJJTlRfQk9PTEVBTihjbmFtZSwgb3B0bmFtZSwgdmFs
LCBkZXNjKVwKKyAgICBmcHJpbnRmKHN0ZGVyciwgKCIgIC0tJXMlc1xuIiAgICAgICAgICAgIFwK
KyAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgJXNcbiIpLCB2YWwgPyAibm8tIiA6
ICIiLCBvcHRuYW1lLCBkZXNjKTsKKyAgICBGT1JfRUFDSF9CT09MRUFOX09QVElPTihQUklOVF9C
T09MRUFOKTsKKyN1bmRlZiBQUklOVF9CT09MRUFOCiAgICAgY2xlYW51cEdsb2JhbERhdGEoZ2xv
YmFsRGF0YSk7CiAgICAgZXhpdChoZWxwID8gRVhJVF9TVUNDRVNTIDogRVhJVF9GQUlMVVJFKTsK
IH0KIAotc3RhdGljIHZvaWQgcGFyc2VBcmd1bWVudHMoaW50IGFyZ2MsIGNoYXIqKiBhcmd2LCBP
cHRpb25zJiBvcHRpb25zLCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCitzdGF0aWMgdm9pZCBw
YXJzZUFyZ3VtZW50cyhpbnQgYXJnYywgY2hhcioqIGFyZ3YsIENvbW1hbmRMaW5lJiBvcHRpb25z
LCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiB7CiAgICAgaW50IGkgPSAxOwogICAgIGZvciAo
OyBpIDwgYXJnYzsgKytpKSB7CiAgICAgICAgIGNvbnN0IGNoYXIqIGFyZyA9IGFyZ3ZbaV07CisK
KyAgICAgICAgLy8gUGFyc2VPcHRpb24gdXN1YWxseSBjb25zdW1lcyBvbmUgb3B0aW9uLCBidXQg
Y2FuIHNsdXJwIHR3byBpbiB0aGUKKyAgICAgICAgLy8gY2FzZSBvZiBhcmd1bWVudC10YWtpbmcg
b3B0aW9ucyBsaWtlIC0tZm9vIGJhciAoYXMgYSBzeW5vbnltIG9mCisgICAgICAgIC8vIC0tZm9v
PWJhcikuCisgICAgICAgIGludCBudW1TbHVycGVkID0gT3B0aW9uczo6UGFyc2VPcHRpb24oYXJn
LCAoaSArIDEgPCBhcmdjKSA/IGFyZ3ZbaSsxXSA6IDApOworICAgICAgICBpZiAobnVtU2x1cnBl
ZCA9PSAyKSB7CisgICAgICAgICAgICBpKys7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAobnVtU2x1cnBlZCA9PSAxKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIEFTU0VSVCghbnVtU2x1cnBlZCk7CisgICAgICAgICAgICAKICAgICAgICAgaWYg
KCFzdHJjbXAoYXJnLCAiLWYiKSkgewogICAgICAgICAgICAgaWYgKCsraSA9PSBhcmdjKQogICAg
ICAgICAgICAgICAgIHByaW50VXNhZ2VTdGF0ZW1lbnQoZ2xvYmFsRGF0YSk7CkBAIC01NjksMTAg
KzU4MSw2IEBAIHN0YXRpYyB2b2lkIHBhcnNlQXJndW1lbnRzKGludCBhcmdjLCBjaGFyKiogYXJn
diwgT3B0aW9ucyYgb3B0aW9ucywgSlNHbG9iYWxEYXRhCiAgICAgICAgICAgICBvcHRpb25zLmlu
dGVyYWN0aXZlID0gdHJ1ZTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAg
ICAgIGlmICghc3RyY21wKGFyZywgIi1kIikpIHsKLSAgICAgICAgICAgIG9wdGlvbnMuZHVtcCA9
IHRydWU7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQogICAgICAgICBpZiAoIXN0
cmNtcChhcmcsICItcyIpKSB7CiAjaWYgSEFWRShTSUdOQUxfSCkKICAgICAgICAgICAgIHNpZ25h
bChTSUdJTEwsIF9leGl0KTsKQEAgLTYwMiwxMSArNjEwLDExIEBAIGludCBqc2NtYWluKGludCBh
cmdjLCBjaGFyKiogYXJndiwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogewogICAgIEpTTG9j
ayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAKLSAgICBPcHRpb25zIG9wdGlvbnM7Cisg
ICAgQ29tbWFuZExpbmUgb3B0aW9uczsKICAgICBwYXJzZUFyZ3VtZW50cyhhcmdjLCBhcmd2LCBv
cHRpb25zLCBnbG9iYWxEYXRhKTsKIAogICAgIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
R2xvYmFsT2JqZWN0OjpjcmVhdGUoKmdsb2JhbERhdGEsIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3Ry
dWN0dXJlKCpnbG9iYWxEYXRhLCBqc051bGwoKSksIG9wdGlvbnMuYXJndW1lbnRzKTsKLSAgICBi
b29sIHN1Y2Nlc3MgPSBydW5XaXRoU2NyaXB0cyhnbG9iYWxPYmplY3QsIG9wdGlvbnMuc2NyaXB0
cywgb3B0aW9ucy5kdW1wKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBydW5XaXRoU2NyaXB0cyhnbG9i
YWxPYmplY3QsIG9wdGlvbnMuc2NyaXB0cyk7CiAgICAgaWYgKG9wdGlvbnMuaW50ZXJhY3RpdmUg
JiYgc3VjY2VzcykKICAgICAgICAgcnVuSW50ZXJhY3RpdmUoZ2xvYmFsT2JqZWN0KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42N2VjODQy
YjdmNDAyYmIxNWUyNWIxZDI5NzFlNTFmODE2OGQ5NjFjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKQEAgLTAsMCArMSw3MSBAQAor
LyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhLCBTLiBMLgorICoKKyAqICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk9wdGlvbnMuaCIKKworI2luY2x1ZGUgIldU
RlN0cmluZy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworI2RlZmluZSBERUZJTkVfQk9PTEVBTihj
bmFtZSwgb3B0bmFtZSwgdmFsLCBkZXNjKSAgICAgICAgICAgICAgICAgICAgICAgIFwKK2Jvb2wg
T3B0aW9uczo6Y25hbWUgPSB2YWw7CitGT1JfRUFDSF9CT09MRUFOX09QVElPTihERUZJTkVfQk9P
TEVBTik7CisjdW5kZWYgREVGSU5FX0JPT0xFQU4KKworc3RhdGljIGNvbnN0IGNoYXIgKm5lZ2F0
aXZlUHJlZml4ID0gIi0tbm8tIjsKK3N0YXRpYyBjb25zdCBjaGFyICpwb3NpdGl2ZVByZWZpeCA9
ICItLSI7CisKK2ludCBPcHRpb25zOjpQYXJzZU9wdGlvbihjb25zdCBjaGFyICpvcHRpb24sIGNv
bnN0IGNoYXIgKm5leHQpCit7CisgICAgU3RyaW5nIG9wdChvcHRpb24pOworCisgICAgaWYgKG9w
dC5zdGFydHNXaXRoKG5lZ2F0aXZlUHJlZml4KSkgeworICAgICAgICBTdHJpbmcgdGFpbCA9IG9w
dC5zdWJzdHJpbmcoc3RybGVuKG5lZ2F0aXZlUHJlZml4KSwgb3B0Lmxlbmd0aCgpKTsKKworI2Rl
ZmluZSBNQVRDSF9CT09MRUFOKGNuYW1lLCBvcHRuYW1lLCB2YWwsIGRlc2MpICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBpZiAodGFpbCA9PSBvcHRuYW1lKSB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgY25hbWUgPSBmYWxz
ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICAgICAgcmV0dXJuIDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICB9CisgICAgICAgIEZPUl9FQUNIX0JPT0xFQU5fT1BUSU9OKE1B
VENIX0JPT0xFQU4pOworI3VuZGVmIE1BVENIX0JPT0xFQU4KKworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisKKyAgICBpZiAob3B0LnN0YXJ0c1dpdGgocG9zaXRpdmVQcmVmaXgpKSB7CisgICAg
ICAgIFN0cmluZyB0YWlsID0gb3B0LnN1YnN0cmluZyhzdHJsZW4ocG9zaXRpdmVQcmVmaXgpLCBv
cHQubGVuZ3RoKCkpOworCisjZGVmaW5lIE1BVENIX0JPT0xFQU4oY25hbWUsIG9wdG5hbWUsIHZh
bCwgZGVzYykgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmICh0YWlsID09IG9w
dG5hbWUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgICAgICBPcHRpb25zOjpjbmFtZSA9IHRydWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgICAgICByZXR1cm4gMTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0KKyAgICAgICAgRk9SX0VB
Q0hfQk9PTEVBTl9PUFRJT04oTUFUQ0hfQk9PTEVBTik7CisjdW5kZWYgTUFUQ0hfQk9PTEVBTgor
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iMDAwMjdhZmE5NDkzMjRkNjVkYTRjMjAxOTNkOTdiNzY0ZjAwNzg0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCkBAIC0wLDAg
KzEsNTAgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSwgUy4gTC4KKyAqCisg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
KgorICovCisKKyNpZm5kZWYgT3B0aW9uc19oCisjZGVmaW5lIE9wdGlvbnNfaAorCituYW1lc3Bh
Y2UgSlNDIHsKKworI2lmICFkZWZpbmVkIChOREVCVUcpCisjZGVmaW5lIEZPUl9FQUNIX0JPT0xF
QU5fREVCVUdfT1BUSU9OKG1hY3JvKSAgICBcCisgICAgbWFjcm8oZHVtcEJ5dGVjb2RlLCAiZHVt
cC1ieXRlY29kZSIsIGZhbHNlLCBcCisgICAgICAgICAgIkR1bXAgYWxsIGdlbmVyYXRlZCBieXRl
Y29kZSIpCisjZWxzZQorI2RlZmluZSBGT1JfRUFDSF9CT09MRUFOX0RFQlVHX09QVElPTihtYWNy
bykKKyNlbmRpZgorCisjZGVmaW5lIEZPUl9FQUNIX0JPT0xFQU5fT1BUSU9OKG1hY3JvKSBcCisg
ICAgRk9SX0VBQ0hfQk9PTEVBTl9ERUJVR19PUFRJT04obWFjcm8pCisKK2NsYXNzIE9wdGlvbnMg
eworcHVibGljOgorICAgICNkZWZpbmUgREVDTEFSRV9CT09MRUFOKGNuYW1lLCBvcHRuYW1lLCB2
YWwsIGRlc2MpIFwKKyAgICAgICAgc3RhdGljIGJvb2wgY25hbWU7CisgICAgRk9SX0VBQ0hfQk9P
TEVBTl9PUFRJT04oREVDTEFSRV9CT09MRUFOKTsKKyAgICAjdW5kZWYgREVDTEFSRV9CT09MRUFO
CisKKyAgICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2Ygb3B0aW9ucyBjb25zdW1lZC4KKyAgICBz
dGF0aWMgaW50IFBhcnNlT3B0aW9uKGNvbnN0IGNoYXIgKm9wdGlvbiwgY29uc3QgY2hhciAqbmV4
dCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEZsYWdzX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116104</attachid>
            <date>2011-11-21 10:11:33 -0800</date>
            <delta_ts>2011-11-22 02:24:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72889-20111121191131.patch</filename>
            <type>text/plain</type>
            <size>15872</size>
            <attacher name="Andy Wingo">wingo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwOTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ODhjN2UzNzRhY2RiMDc1MTNiNmExYWY5YzI0ZThjZjA3MDYxNTc3Li43MDkwOWI3NjNkZDU3NTkx
MzA3ZTE4MGU3OTNmOTJlYmIyMWE2YzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwzOCBAQAogMjAxMS0xMS0yMSAgQW5keSBXaW5nbyAgPHdpbmdvQGlnYWxpYS5jb20+CiAK
KyAgICAgICAgQWRkIGludGVyZmFjZSBmb3IgcnVudGltZSBvcHRpb24gc2V0dGluZ3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyODg5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjb21taXQgYWRk
cyBhbiBpbnRlcmZhY2UgZm9yIEpTQyBvcHRpb25zIHRoYXQgbWlnaHQgYmUgc2V0IG9uCisgICAg
ICAgIHRoZSBjb21tYW5kLWxpbmUsIG9yIG90aGVyd2lzZSBwZXItaW5zdGFuY2UuICBJdCBpcyBt
b3N0bHkgZm9yCisgICAgICAgIGRlYnVnZ2luZyBwdXJwb3Nlcy4KKworICAgICAgICAqIHJ1bnRp
bWUvT3B0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6IE5ldyBmaWxlcywg
aW1wbGVtZW50aW5nIHRoZSBvcHRpb25zCisgICAgICAgIGludGVyZmFjZS4KKworICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06IFVwZGF0ZSB0aGUgYnVpbGQgZm9yIHRoZSBuZXcgZmlsZXMu
CisKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKTogSW5zdGVhZCBv
ZiB0cmFja2luZworICAgICAgICB0aGlzIGZsYWcgaW4gYSBsb2NhbCBzdGF0aWMgdmFyLCB1c2Ug
dGhlIE9wdGlvbnM6OmR1bXBCeXRlY29kZSgpCisgICAgICAgIGFjY2Vzc29yLgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOiBVc2UgZHVtcHNHZW5lcmF0ZWRDb2Rl
KCkKKyAgICAgICAgaGVscGVyLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOiBSZW1vdmUgc2V0RHVtcHNHZW5lcmF0ZWRDb2RlLgorICAgICAgICAqIGpzYy5jcHA6
CisgICAgICAgIChDb21tYW5kTGluZTo6Q29tbWFuZExpbmUpOiBSZW5hbWUgZnJvbSBPcHRpb25z
LCB0byBhdm9pZCBuYW1lCisgICAgICAgIGNvbGxpc2lvbi4KKyAgICAgICAgKHJ1bldpdGhTY3Jp
cHRzKToKKyAgICAgICAgKHByaW50VXNhZ2VTdGF0ZW1lbnQpOgorICAgICAgICAocGFyc2VBcmd1
bWVudHMpOgorICAgICAgICAoanNjbWFpbik6IFVwZGF0ZSB0byBwYXJzZSBydW50aW1lIG9wdGlv
bnMgdmlhCisgICAgICAgIE9wdGlvbnM6OlBhcnNlT3B0aW9uLgorCisyMDExLTExLTIxICBBbmR5
IFdpbmdvICA8d2luZ29AaWdhbGlhLmNvbT4KKwogICAgICAgICBBZGQgLmRpci1sb2NhbHMuZWwg
ZmlsZSBmb3IgYmV0dGVyIEVtYWNzIGRlZmF1bHRzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjQ4MwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCmluZGV4IDdkNWZkZDVkOWRiYTAwNzFiOTg5MTQ2YzkzZTdhMGI1ZmM2
YmRkMzAuLmU0OTc3MWJkOTljMGFmNWQzYmI2MGY4MTY3MWM5YTFhMzMyNGQ5ODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00MzcsNiArNDM3LDggQEAg
amF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0UHJvdG90eXBlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
ZXJhdGlvbnMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25z
LmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwIFwKKwlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXgg
YzNhMTVhOWQxNGEyZDI1MWVhYzNhOTZhODEyMzY4MmI0YTY0ZDBjYy4uMzBhNDc0MzkyMWMxYjYx
NzFhMWQ1OTQ0YmFmNmZkY2QxNTMwODMyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlICJCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oIgogI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk9wdGlv
bnMuaCIKICNpbmNsdWRlICJTY29wZUNoYWluLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5o
IgogI2luY2x1ZGUgIlVTdHJpbmcuaCIKQEAgLTExNiwyNiArMTE3LDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgZXhwZWN0ZWQgYnkgdGhlIGNhbGxlZS4KICovCiAKLSNpZm5kZWYgTkRFQlVHCi1z
dGF0aWMgYm9vbCBzX2R1bXBzR2VuZXJhdGVkQ29kZSA9IGZhbHNlOwotI2VuZGlmCi0KLXZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OnNldER1bXBzR2VuZXJhdGVkQ29kZShib29sIGR1bXBzR2VuZXJh
dGVkQ29kZSkKLXsKLSNpZm5kZWYgTkRFQlVHCi0gICAgc19kdW1wc0dlbmVyYXRlZENvZGUgPSBk
dW1wc0dlbmVyYXRlZENvZGU7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShkdW1wc0dlbmVyYXRl
ZENvZGUpOwotI2VuZGlmCi19Ci0KIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJh
dGVkQ29kZSgpCiB7Ci0jaWZuZGVmIE5ERUJVRwotICAgIHJldHVybiBzX2R1bXBzR2VuZXJhdGVk
Q29kZTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCisgICAgcmV0dXJuIE9wdGlv
bnM6OmR1bXBCeXRlY29kZSgpOwogfQogCiBKU09iamVjdCogQnl0ZWNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlKCkKQEAgLTE0OSw3ICsxMzMsNyBAQCBKU09iamVjdCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmdlbmVyYXRlKCkKICAgICBtX2NvZGVCbG9jay0+c2V0SW5zdHJ1Y3Rpb25Db3VudChtX2NvZGVC
bG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKIAogI2lmbmRlZiBOREVCVUcKLSAgICBpZiAo
c19kdW1wc0dlbmVyYXRlZENvZGUpCisgICAgaWYgKGR1bXBzR2VuZXJhdGVkQ29kZSgpKQogICAg
ICAgICBtX2NvZGVCbG9jay0+ZHVtcChtX3Njb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggZThiNjlhMGRiN2UzYzE4ZDVhZmVl
MTY5M2I1NjkyNWRjMWY1ZTljYy4uY2U5YTRhODRjZjhmOWZjZTc1ZDdhMjFjYjc1NWI1OWFhNTMw
YTlkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtOTEsNyArOTEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2sgVmFyU3RhY2s7CiAgICAg
ICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2sgRnVuY3Rpb25TdGFj
azsKIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBzZXREdW1wc0dlbmVy
YXRlZENvZGUoYm9vbCBkdW1wc0dlbmVyYXRlZENvZGUpOwogICAgICAgICBzdGF0aWMgYm9vbCBk
dW1wc0dlbmVyYXRlZENvZGUoKTsKIAogICAgICAgICBCeXRlY29kZUdlbmVyYXRvcihQcm9ncmFt
Tm9kZSosIFNjb3BlQ2hhaW5Ob2RlKiwgU3ltYm9sVGFibGUqLCBQcm9ncmFtQ29kZUJsb2NrKiwg
Q29tcGlsYXRpb25LaW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggZmMwYzU2MDkwMmIzNmU4
ZjhiOWZmNTkwOTA0MGYzYmMxOTc3MzJjMS4uZGMxODgxMmNjNmI3YWJjMjdmMzUyNTZkNjEzN2I2
YzA1OTk0M2NiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNTdHJp
bmcuaCIKKyNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiTWFpblRocmVhZC5oIgogI2lu
Y2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgogI2luY2x1ZGUgPG1hdGguaD4KQEAgLTEwMiwxNSArMTAz
LDEzIEBAIHN0cnVjdCBTY3JpcHQgewogICAgIH0KIH07CiAKLXN0cnVjdCBPcHRpb25zIHsKLSAg
ICBPcHRpb25zKCkKK3N0cnVjdCBDb21tYW5kTGluZSB7CisgICAgQ29tbWFuZExpbmUoKQogICAg
ICAgICA6IGludGVyYWN0aXZlKGZhbHNlKQotICAgICAgICAsIGR1bXAoZmFsc2UpCiAgICAgewog
ICAgIH0KIAogICAgIGJvb2wgaW50ZXJhY3RpdmU7Ci0gICAgYm9vbCBkdW1wOwogICAgIFZlY3Rv
cjxTY3JpcHQ+IHNjcmlwdHM7CiAgICAgVmVjdG9yPFVTdHJpbmc+IGFyZ3VtZW50czsKIH07CkBA
IC00MzAsMTUgKzQyOSwxMiBAQCBzdGF0aWMgdm9pZCBjbGVhbnVwR2xvYmFsRGF0YShKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEpCiAgICAgZ2xvYmFsRGF0YS0+ZGVyZWYoKTsKIH0KIAotc3RhdGlj
IGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZl
Y3RvcjxTY3JpcHQ+JiBzY3JpcHRzLCBib29sIGR1bXApCitzdGF0aWMgYm9vbCBydW5XaXRoU2Ny
aXB0cyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFNjcmlwdD4mIHNj
cmlwdHMpCiB7CiAgICAgVVN0cmluZyBzY3JpcHQ7CiAgICAgVVN0cmluZyBmaWxlTmFtZTsKICAg
ICBWZWN0b3I8Y2hhcj4gc2NyaXB0QnVmZmVyOwogCi0gICAgaWYgKGR1bXApCi0gICAgICAgIEJ5
dGVjb2RlR2VuZXJhdG9yOjpzZXREdW1wc0dlbmVyYXRlZENvZGUodHJ1ZSk7Ci0KICAgICBKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEgPSBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKTsKIAogI2lm
IEVOQUJMRShTQU1QTElOR19GTEFHUykKQEAgLTQ2Miw3ICs0NTgsNyBAQCBzdGF0aWMgYm9vbCBy
dW5XaXRoU2NyaXB0cyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFNj
cmlwdD4mIHNjcgogICAgICAgICBKU1ZhbHVlIGV2YWx1YXRpb25FeGNlcHRpb247CiAgICAgICAg
IEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KSwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCksIG1ha2VTb3VyY2Uoc2NyaXB0LCBm
aWxlTmFtZSksIEpTVmFsdWUoKSwgJmV2YWx1YXRpb25FeGNlcHRpb24pOwogICAgICAgICBzdWNj
ZXNzID0gc3VjY2VzcyAmJiAhZXZhbHVhdGlvbkV4Y2VwdGlvbjsKLSAgICAgICAgaWYgKGR1bXAp
IHsKKyAgICAgICAgaWYgKE9wdGlvbnM6OmR1bXBCeXRlY29kZSgpKSB7CiAgICAgICAgICAgICBp
ZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKICAgICAgICAgICAgICAgICBwcmludGYoIkV4Y2VwdGlv
bjogJXNcbiIsIGV2YWx1YXRpb25FeGNlcHRpb24udG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCkpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgZWxzZQpAQCAtNTM1LDcgKzUz
MSw2IEBAIHN0YXRpYyB2b2lkIHJ1bkludGVyYWN0aXZlKEdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogc3RhdGljIE5PX1JFVFVSTiB2b2lkIHByaW50VXNhZ2VTdGF0ZW1lbnQoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBib29sIGhlbHAgPSBmYWxzZSkKIHsKICAgICBmcHJpbnRmKHN0ZGVy
ciwgIlVzYWdlOiBqc2MgW29wdGlvbnNdIFtmaWxlc10gWy0tIGFyZ3VtZW50c11cbiIpOwotICAg
IGZwcmludGYoc3RkZXJyLCAiICAtZCAgICAgICAgIER1bXBzIGJ5dGVjb2RlIChkZWJ1ZyBidWls
ZHMgb25seSlcbiIpOwogICAgIGZwcmludGYoc3RkZXJyLCAiICAtZSAgICAgICAgIEV2YWx1YXRl
IGFyZ3VtZW50IGFzIHNjcmlwdCBjb2RlXG4iKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLWYg
ICAgICAgICBTcGVjaWZpZXMgYSBzb3VyY2UgZmlsZSAoZGVwcmVjYXRlZClcbiIpOwogICAgIGZw
cmludGYoc3RkZXJyLCAiICAtaHwtLWhlbHAgIFByaW50cyB0aGlzIGhlbHAgbWVzc2FnZVxuIik7
CkBAIC01NDMsMTYgKzUzOCwzOCBAQCBzdGF0aWMgTk9fUkVUVVJOIHZvaWQgcHJpbnRVc2FnZVN0
YXRlbWVudChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGJvb2wgaGVscCA9CiAjaWYgSEFWRShT
SUdOQUxfSCkKICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLXMgICAgICAgICBJbnN0YWxscyBzaWdu
YWwgaGFuZGxlcnMgdGhhdCBleGl0IG9uIGEgY3Jhc2ggKFVuaXggcGxhdGZvcm1zIG9ubHkpXG4i
KTsKICNlbmRpZgotCisjZGVmaW5lIFBSSU5UX0JPT0xFQU4oY25hbWUsIG9wdG5hbWUsIHZhbCwg
ZGVzYylcCisgICAgZnByaW50ZihzdGRlcnIsICgiICAtLSVzJXNcbiIgICAgICAgICAgICBcCisg
ICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICVzXG4iKSwgdmFsID8gIm5vLSIgOiAi
Iiwgb3B0bmFtZSwgZGVzYyk7CisgICAgRk9SX0VBQ0hfQ09ORklHVVJBQkxFX0JPT0xFQU5fT1BU
SU9OKFBSSU5UX0JPT0xFQU4pOworI3VuZGVmIFBSSU5UX0JPT0xFQU4KICAgICBjbGVhbnVwR2xv
YmFsRGF0YShnbG9iYWxEYXRhKTsKICAgICBleGl0KGhlbHAgPyBFWElUX1NVQ0NFU1MgOiBFWElU
X0ZBSUxVUkUpOwogfQogCi1zdGF0aWMgdm9pZCBwYXJzZUFyZ3VtZW50cyhpbnQgYXJnYywgY2hh
cioqIGFyZ3YsIE9wdGlvbnMmIG9wdGlvbnMsIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3N0
YXRpYyB2b2lkIHBhcnNlQXJndW1lbnRzKGludCBhcmdjLCBjaGFyKiogYXJndiwgQ29tbWFuZExp
bmUmIG9wdGlvbnMsIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKIHsKICAgICBpbnQgaSA9IDE7
CiAgICAgZm9yICg7IGkgPCBhcmdjOyArK2kpIHsKICAgICAgICAgY29uc3QgY2hhciogYXJnID0g
YXJndltpXTsKKworICAgICAgICAvLyBQYXJzZU9wdGlvbiB1c3VhbGx5IGNvbnN1bWVzIG9uZSBv
cHRpb24sIGJ1dCBjYW4gc2x1cnAgdHdvIGluIHRoZQorICAgICAgICAvLyBjYXNlIG9mIGFyZ3Vt
ZW50LXRha2luZyBvcHRpb25zIGxpa2UgLS1mb28gYmFyIChhcyBhIHN5bm9ueW0gb2YKKyAgICAg
ICAgLy8gLS1mb289YmFyKS4KKyAgICAgICAgaW50IG51bVNsdXJwZWQgPSBPcHRpb25zOjpQYXJz
ZU9wdGlvbihhcmcsIChpICsgMSA8IGFyZ2MpID8gYXJndltpKzFdIDogMCk7CisgICAgICAgIGlm
IChudW1TbHVycGVkID09IE9wdGlvbnM6Om9wdGlvblVuc3VwcG9ydGVkKSB7CisgICAgICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgIkVSUk9SOiBUaGlzIGJ1aWxkIGhhcyBub3QgYmVlbiBjb25maWd1
cmVkIHRvICIKKyAgICAgICAgICAgICAgICAgICAgImFsbG93IHRoZSAlcyBmbGFnIHRvIGJlIHNl
dCBhdCBydW50aW1lLlxuIiwgYXJndltpXSk7CisgICAgICAgICAgICBleGl0KEVYSVRfRkFJTFVS
RSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG51bVNsdXJwZWQgPT0gMikgeworICAgICAgICAg
ICAgaSsrOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG51
bVNsdXJwZWQgPT0gMSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBBU1NFUlQoIW51
bVNsdXJwZWQpOworICAgICAgICAgICAgCiAgICAgICAgIGlmICghc3RyY21wKGFyZywgIi1mIikp
IHsKICAgICAgICAgICAgIGlmICgrK2kgPT0gYXJnYykKICAgICAgICAgICAgICAgICBwcmludFVz
YWdlU3RhdGVtZW50KGdsb2JhbERhdGEpOwpAQCAtNTY5LDEwICs1ODYsNiBAQCBzdGF0aWMgdm9p
ZCBwYXJzZUFyZ3VtZW50cyhpbnQgYXJnYywgY2hhcioqIGFyZ3YsIE9wdGlvbnMmIG9wdGlvbnMs
IEpTR2xvYmFsRGF0YQogICAgICAgICAgICAgb3B0aW9ucy5pbnRlcmFjdGl2ZSA9IHRydWU7CiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBpZiAoIXN0cmNtcChhcmcs
ICItZCIpKSB7Ci0gICAgICAgICAgICBvcHRpb25zLmR1bXAgPSB0cnVlOwotICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIH0KICAgICAgICAgaWYgKCFzdHJjbXAoYXJnLCAiLXMiKSkgewog
I2lmIEhBVkUoU0lHTkFMX0gpCiAgICAgICAgICAgICBzaWduYWwoU0lHSUxMLCBfZXhpdCk7CkBA
IC02MDIsMTEgKzYxNSwxMSBAQCBpbnQganNjbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YsIEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKIHsKICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0
aW9uc09ubHkpOwogCi0gICAgT3B0aW9ucyBvcHRpb25zOworICAgIENvbW1hbmRMaW5lIG9wdGlv
bnM7CiAgICAgcGFyc2VBcmd1bWVudHMoYXJnYywgYXJndiwgb3B0aW9ucywgZ2xvYmFsRGF0YSk7
CiAKICAgICBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEdsb2JhbE9iamVjdDo6Y3JlYXRl
KCpnbG9iYWxEYXRhLCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSgqZ2xvYmFsRGF0YSwg
anNOdWxsKCkpLCBvcHRpb25zLmFyZ3VtZW50cyk7Ci0gICAgYm9vbCBzdWNjZXNzID0gcnVuV2l0
aFNjcmlwdHMoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLnNjcmlwdHMsIG9wdGlvbnMuZHVtcCk7Cisg
ICAgYm9vbCBzdWNjZXNzID0gcnVuV2l0aFNjcmlwdHMoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLnNj
cmlwdHMpOwogICAgIGlmIChvcHRpb25zLmludGVyYWN0aXZlICYmIHN1Y2Nlc3MpCiAgICAgICAg
IHJ1bkludGVyYWN0aXZlKGdsb2JhbE9iamVjdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9ucy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzlkMmNkZTkzZmI0MjgxNGY1MzhhMDYyZTFm
YTc5ZGFkMmZmZDgyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnMuY3BwCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChD
KSAyMDExIElnYWxpYSwgUy4gTC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJPcHRpb25zLmgiCisKKyNpbmNsdWRlICJXVEZTdHJpbmcuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKKyNkZWZpbmUgREVGSU5FX0JPT0xFQU4oY25hbWUsIG9wdG5hbWUsIHZhbCwg
ZGVzYykgICAgICAgICAgICAgICAgICAgICAgICBcCitib29sIE9wdGlvbnM6OnNfIyNjbmFtZSA9
IHZhbDsKK0ZPUl9FQUNIX0NPTkZJR1VSQUJMRV9CT09MRUFOX09QVElPTihERUZJTkVfQk9PTEVB
Tik7CisjdW5kZWYgREVGSU5FX0JPT0xFQU4KKworc3RhdGljIGNvbnN0IGNoYXIgKm5lZ2F0aXZl
UHJlZml4ID0gIi0tbm8tIjsKK3N0YXRpYyBjb25zdCBjaGFyICpwb3NpdGl2ZVByZWZpeCA9ICIt
LSI7CisKK2ludCBPcHRpb25zOjpQYXJzZU9wdGlvbihjb25zdCBjaGFyICpvcHRpb24sIGNvbnN0
IGNoYXIgKm5leHQpCit7CisgICAgU3RyaW5nIG9wdChvcHRpb24pOworCisgICAgaWYgKG9wdC5z
dGFydHNXaXRoKG5lZ2F0aXZlUHJlZml4KSkgeworICAgICAgICBTdHJpbmcgdGFpbCA9IG9wdC5z
dWJzdHJpbmcoc3RybGVuKG5lZ2F0aXZlUHJlZml4KSwgb3B0Lmxlbmd0aCgpKTsKKworI2RlZmlu
ZSBNQVRDSF9CT09MRUFOKGNuYW1lLCBvcHRuYW1lLCB2YWwsIGRlc2MpICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBpZiAodGFpbCA9PSBvcHRuYW1lKSB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgc18jI2NuYW1lID0gZmFs
c2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgcmV0dXJuIDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICB9CisgICAgICAgIEZPUl9FQUNIX0NPTkZJR1VSQUJMRV9CT09MRUFO
X09QVElPTihNQVRDSF9CT09MRUFOKTsKKyN1bmRlZiBNQVRDSF9CT09MRUFOCisjZGVmaW5lIE1B
VENIX0JPT0xFQU4oY25hbWUsIG9wdG5hbWUsIHZhbCwgZGVzYykgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIGlmICh0YWlsID09IG9wdG5hbWUpIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAvKiBUaGlzIGJ1aWxkIGhhcyBu
b3QgYmVlbiBjb21waWxlZCBpbiBzdWNoIGEgd2F5IHRoYXQgKi8gICBcCisgICAgICAgICAgICAv
KiBzdXBwb3J0cyBjaGFuZ2luZyB0aGlzIG9wdGlvbi4gKi8gICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgICAgICByZXR1cm4gLTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0KKyAgICAgICAgRk9SX0VBQ0hfTk9OQ09O
RklHVVJBQkxFX0JPT0xFQU5fT1BUSU9OKE1BVENIX0JPT0xFQU4pOworI3VuZGVmIE1BVENIX0JP
T0xFQU4KKworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAob3B0LnN0YXJ0c1dp
dGgocG9zaXRpdmVQcmVmaXgpKSB7CisgICAgICAgIFN0cmluZyB0YWlsID0gb3B0LnN1YnN0cmlu
ZyhzdHJsZW4ocG9zaXRpdmVQcmVmaXgpLCBvcHQubGVuZ3RoKCkpOworCisjZGVmaW5lIE1BVENI
X0JPT0xFQU4oY25hbWUsIG9wdG5hbWUsIHZhbCwgZGVzYykgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIGlmICh0YWlsID09IG9wdG5hbWUpIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBzXyMjY25hbWUgPSB0cnVlOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICByZXR1
cm4gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIH0KKyAgICAgICAgRk9SX0VBQ0hfQ09ORklHVVJBQkxFX0JPT0xFQU5fT1BUSU9O
KE1BVENIX0JPT0xFQU4pOworI3VuZGVmIE1BVENIX0JPT0xFQU4KKyNkZWZpbmUgTUFUQ0hfQk9P
TEVBTihjbmFtZSwgb3B0bmFtZSwgdmFsLCBkZXNjKSAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgaWYgKHRhaWwgPT0gb3B0bmFtZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIC8qIFRoaXMgYnVpbGQgaGFzIG5vdCBiZWVu
IGNvbXBpbGVkIGluIHN1Y2ggYSB3YXkgdGhhdCAqLyAgIFwKKyAgICAgICAgICAgIC8qIHN1cHBv
cnRzIGNoYW5naW5nIHRoaXMgb3B0aW9uLiAqLyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgIHJldHVybiAtMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgfQorICAgICAgICBGT1JfRUFDSF9OT05DT05GSUdVUkFC
TEVfQk9PTEVBTl9PUFRJT04oTUFUQ0hfQk9PTEVBTik7CisjdW5kZWYgTUFUQ0hfQk9PTEVBTgor
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jNzdmYmUwYzZkMDdjYzk5M2I3YzBkNzhiM2RmNGNiMmNkYzZhZmE1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCkBAIC0wLDAg
KzEsNjcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSwgUy4gTC4KKyAqCisg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
KgorICovCisKKyNpZm5kZWYgT3B0aW9uc19oCisjZGVmaW5lIE9wdGlvbnNfaAorCituYW1lc3Bh
Y2UgSlNDIHsKKworI2RlZmluZSBGT1JfRUFDSF9CT09MRUFOX0RFQlVHX09QVElPTihtYWNybykg
ICAgXAorICAgIG1hY3JvKGR1bXBCeXRlY29kZSwgImR1bXAtYnl0ZWNvZGUiLCBmYWxzZSwgXAor
ICAgICAgICAgICJEdW1wIGFsbCBnZW5lcmF0ZWQgYnl0ZWNvZGUiKQorCisjZGVmaW5lIEZPUl9F
QUNIX0JPT0xFQU5fUkVMRUFTRV9PUFRJT04obWFjcm8pCisKKyNpZiAhZGVmaW5lZCAoTkRFQlVH
KQorI2RlZmluZSBGT1JfRUFDSF9DT05GSUdVUkFCTEVfQk9PTEVBTl9PUFRJT04obWFjcm8pIFwK
KyAgICBGT1JfRUFDSF9CT09MRUFOX1JFTEVBU0VfT1BUSU9OKG1hY3JvKSBcCisgICAgRk9SX0VB
Q0hfQk9PTEVBTl9ERUJVR19PUFRJT04obWFjcm8pCisjZGVmaW5lIEZPUl9FQUNIX05PTkNPTkZJ
R1VSQUJMRV9CT09MRUFOX09QVElPTihtYWNybykKKyNlbHNlCisjZGVmaW5lIEZPUl9FQUNIX0NP
TkZJR1VSQUJMRV9CT09MRUFOX09QVElPTihtYWNybykgXAorICAgIEZPUl9FQUNIX0JPT0xFQU5f
UkVMRUFTRV9PUFRJT04obWFjcm8pCisjZGVmaW5lIEZPUl9FQUNIX05PTkNPTkZJR1VSQUJMRV9C
T09MRUFOX09QVElPTihtYWNybykgXAorICAgIEZPUl9FQUNIX0JPT0xFQU5fREVCVUdfT1BUSU9O
KG1hY3JvKQorI2VuZGlmCisKK2NsYXNzIE9wdGlvbnMgeworcHVibGljOgorICAgICNkZWZpbmUg
REVDTEFSRV9CT09MRUFOKGNuYW1lLCBvcHRuYW1lLCB2YWwsIGRlc2MpIFwKKyAgICAgICAgc3Rh
dGljIGJvb2wgY25hbWUoKSB7IHJldHVybiBzXyMjY25hbWU7IH0gICAgICBcCisgICAgICAgIHN0
YXRpYyBib29sIHNfIyNjbmFtZTsKKyAgICBGT1JfRUFDSF9DT05GSUdVUkFCTEVfQk9PTEVBTl9P
UFRJT04oREVDTEFSRV9CT09MRUFOKTsKKyAgICAjdW5kZWYgREVDTEFSRV9CT09MRUFOCisKKyAg
ICAjZGVmaW5lIERFQ0xBUkVfQk9PTEVBTihjbmFtZSwgb3B0bmFtZSwgdmFsLCBkZXNjKSBcCisg
ICAgICAgIHN0YXRpYyBib29sIGNuYW1lKCkgeyByZXR1cm4gdmFsOyB9CisgICAgRk9SX0VBQ0hf
Tk9OQ09ORklHVVJBQkxFX0JPT0xFQU5fT1BUSU9OKERFQ0xBUkVfQk9PTEVBTik7CisgICAgI3Vu
ZGVmIERFQ0xBUkVfQk9PTEVBTgorCisgICAgc3RhdGljIGNvbnN0IGludCBub25lU2x1cnBlZCA9
IDA7CisgICAgc3RhdGljIGNvbnN0IGludCBvcHRpb25VbnN1cHBvcnRlZCA9IC0xOworICAgIHN0
YXRpYyBjb25zdCBpbnQgYmFkQXJndW1lbnQgPSAtMjsKKworICAgIC8vIFJldHVybnMgdGhlIG51
bWJlciBvZiBvcHRpb25zIGNvbnN1bWVkLgorICAgIHN0YXRpYyBpbnQgUGFyc2VPcHRpb24oY29u
c3QgY2hhciAqb3B0aW9uLCBjb25zdCBjaGFyICpuZXh0KTsKK307CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYgLy8gRmxhZ3NfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116193</attachid>
            <date>2011-11-22 02:25:03 -0800</date>
            <delta_ts>2011-11-22 03:53:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72889-20111122112501.patch</filename>
            <type>text/plain</type>
            <size>63378</size>
            <attacher name="Andy Wingo">wingo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwOTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NjAyZDI5N2M3ZDE0OGIyYWMyZTA1MDgwZjhlZGVjZTg0Y2FjZGY4Li4yZjJhMDI3ZWYxMjI4MGZk
ZTY2NWU5OGRmYTc0NDgxYWVjNTY3ZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NiBAQAorMjAxMS0xMS0yMiAgQW5keSBXaW5nbyAgPHdpbmdvQGlnYWxpYS5jb20+CisK
KyAgICAgICAgUmVuYW1lIEpTQzo6SGV1cmlzdGljcyB0byBKU0M6Ok9wdGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyODg5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMu
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGV1cmlzdGlj
cy5jcHAuCisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmguCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6c2hvdWxkT3B0aW1pemVOb3cpOgorICAgICAgICAqIGJ5dGVj
b2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZVNs
b3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjb3VsZFRha2VTbG93Q2FzZSk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlU3BlY2lhbEZhc3RDYXNlKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rha2VEZWVwZXN0U2xvd0Nhc2UpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZUFueVNsb3dDYXNlKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpyZW9wdGltaXphdGlvblJldHJ5Q291bnRlcik6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6Y291bnRSZW9wdGltaXphdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6Y291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6Y291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6Om9wdGltaXplTmV4dEludm9jYXRpb24pOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmRvbnRPcHRpbWl6ZUFueXRpbWVTb29uKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpvcHRpbWl6ZVNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxhcmdl
RmFpbENvdW50VGhyZXNob2xkKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsYXJnZUZhaWxD
b3VudFRocmVzaG9sZEZvckxvb3ApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNob3VsZFJl
b3B0aW1pemVOb3cpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNob3VsZFJlb3B0aW1pemVG
cm9tTG9vcE5vdyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAq
IGRmZy9ERkdDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjptaWdodENvbXBpbGVF
dmFsKToKKyAgICAgICAgKEpTQzo6REZHOjptaWdodENvbXBpbGVQcm9ncmFtKToKKyAgICAgICAg
KEpTQzo6REZHOjptaWdodENvbXBpbGVGdW5jdGlvbkZvckNhbGwpOgorICAgICAgICAoSlNDOjpE
Rkc6Om1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6REZH
OjptaWdodElubGluZUZ1bmN0aW9uRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6bWlnaHRJ
bmxpbmVGdW5jdGlvbkZvckNvbnN0cnVjdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21w
aWxlcjMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmNvbXBp
bGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGhl
YXAvTWFya1N0YWNrLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrU2VnbWVudEFsbG9jYXRv
cjo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2tTZWdtZW50QWxsb2NhdG9yOjpz
aHJpbmtSZXNlcnZlKToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrQXJyYXk6Ok1hcmtTdGFja0Fy
cmF5KToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrQXJyYXk6OmRvbmF0ZVNvbWVDZWxsc1RvKToK
KyAgICAgICAgKEpTQzo6TWFya1N0YWNrQXJyYXk6OnN0ZWFsU29tZUNlbGxzRnJvbSk6CisgICAg
ICAgIChKU0M6Ok1hcmtTdGFja1RocmVhZFNoYXJlZERhdGE6Ok1hcmtTdGFja1RocmVhZFNoYXJl
ZERhdGEpOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6ZG9uYXRlU2xvdyk6CisgICAgICAg
IChKU0M6OlNsb3RWaXNpdG9yOjpkcmFpbik6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjpk
cmFpbkZyb21TaGFyZWQpOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmg6CisgICAgICAgIChK
U0M6Ok1hcmtTdGFjazo6bWVyZ2VPcGFxdWVSb290c0lmUHJvZml0YWJsZSk6CisgICAgICAgIChK
U0M6Ok1hcmtTdGFjazo6YWRkT3BhcXVlUm9vdCk6CisgICAgICAgIChKU0M6Ok1hcmtTdGFja0Fy
cmF5OjpjYW5Eb25hdGVTb21lQ2VsbHMpOgorICAgICAgICAqIGhlYXAvU2xvdFZpc2l0b3IuaDoK
KyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmRvbmF0ZSk6CisgICAgICAgICogaml0L0pJVC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE9wdGltaXphdGlvbkNoZWNrKToKKyAgICAgICAg
KiBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwOgorICAgICAgICAoSlNDOjppbml0aWFs
aXplVGhyZWFkaW5nT25jZSk6IEFkYXB0IGNhbGxlcnMgYW5kIGJ1aWxkIHN5c3RlbXMuCisKKyAg
ICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoQ29tbWFuZExpbmU6OkNvbW1hbmRMaW5lKToKKyAg
ICAgICAgKHBhcnNlQXJndW1lbnRzKToKKyAgICAgICAgKGpzY21haW4pOiBSZW5hbWUgZnJvbSBP
cHRpb25zLCB0byBhdm9pZCBuYW1lIGNvbmZsaWN0LgorCiAyMDExLTExLTIxICBGaWxpcCBQaXps
byAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgREZHIHNob3VsZCBoYXZlIHJpY2hlciBk
ZWJ1ZyBvdXRwdXQgZm9yIENGQSBhbmQgcGhpIHByb2Nlc3NpbmcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCAwMTA2YTY0ZTg0ZGJlOGY5ZDEzMTVmMzEzNWY5MzVhMWM0YWI1
Mjg4Li5iMmUyOGM1ZmVmYWZkZDljYjQ4Y2Q5MmI3OTc5MmQ2MTE5ZDc5ODkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMzQsNyArMTM0LDYgQEAgU0VUKEphdmFTY3Jp
cHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1
bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAogICAgIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmNw
cAotICAgIHJ1bnRpbWUvSGV1cmlzdGljcy5jcHAKICAgICBydW50aW1lL0lkZW50aWZpZXIuY3Bw
CiAgICAgcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAogICAgIHJ1bnRpbWUvSW50ZXJu
YWxGdW5jdGlvbi5jcHAKQEAgLTE3MSw2ICsxNzAsNyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09V
UkNFUwogICAgIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9PYmpl
Y3RQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9PcGVyYXRpb25zLmNwcAorICAgIHJ1bnRpbWUv
T3B0aW9ucy5jcHAKICAgICBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5jcHAKICAgICBydW50
aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcAogICAgIHJ1bnRpbWUvUHJvcGVydHlTbG90LmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA3ZDVmZGQ1ZDlk
YmEwMDcxYjk4OTE0NmM5M2U3YTBiNWZjNmJkZDMwLi42YzhkMmQ2OGNiYWZiY2E1NzE2ZDFjYmQz
MDI0ZTczZDBmOWMzYzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQpAQCAtMzU3LDggKzM1Nyw2IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaCBcCi0JU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSGV1cmlzdGljcy5jcHAgXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0hldXJpc3RpY3MuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRp
Zmllci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAg
XApAQCAtNDM3LDYgKzQzNSw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuY3Bw
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmNwcm9qCmluZGV4IGE3OTNkZDdlZDViOWMwNTZkMzI0NjNmMGQzYTBhMWJkMzk4OGMyZDMuLjg4
ODI2OTYyMzg5NGQ4NGVhMjI0MjY4NDgwZWU5NGU5Y2M1MTg4YzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCkBAIC03MzQs
MTQgKzczNCw2IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXC4uXHJ1bnRpbWVcSGV1cmlzdGljcy5jcHAiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJ
PEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcSGV1cmlzdGljcy5oIgotCQkJ
CT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1l
XElkZW50aWZpZXIuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTEwMzgsNiArMTAzMCwxNCBA
QAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxy
dW50aW1lXE9wdGlvbnMuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXE9wdGlvbnMuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJ
CQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxQcm9wZXJ0eURlc2NyaXB0
b3IuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggYjI3ZTcxM2E3OTM0OTNhYTJmNTYxY2M0YjFlNDFiMmUxNzc4YzcwOS4uNGRjMTIzMzc4MmNk
MDI0MDRhNWZjMmMyZWFiYzA0YTVmZTBkMjBlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTEwNCw4ICsxMDQsOCBAQAogCQkwRkQ4MkU5MDE0MjA3QTVGMDAxNzlDOTQgLyogVmFs
dWVQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRDgyRThFMTQyMDdBNTEwMDE3OUM5NCAvKiBWYWx1ZVByb2ZpbGUuY3BwICovOyB9Owog
CQkwRkQ4MkVGNTE0MjMwNzVCMDAxNzlDOTQgLyogREZHSW50cmluc2ljLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MkVGMzE0MjMwNzM5MDAxNzlD
OTQgLyogREZHSW50cmluc2ljLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEZEODJGNEIxNDI4MDZBMTAwMTc5Qzk0IC8qIEJpdFZlY3Rvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEODJGNDkxNDI4
MDY5MjAwMTc5Qzk0IC8qIEJpdFZlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCTBGRTIyOEVEMTQzNkFCMjcwMDE5NkM0OCAvKiBIZXVyaXN0
aWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkUy
MjhFQjE0MzZBQjIzMDAxOTZDNDggLyogSGV1cmlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGRTIyOEVFMTQzNkFCMkMwMDE5NkM0OCAv
KiBIZXVyaXN0aWNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGRTIyOEVBMTQzNkFCMjMwMDE5NkM0OCAvKiBIZXVyaXN0aWNzLmNwcCAqLzsgfTsK
KwkJMEZFMjI4RUQxNDM2QUIyNzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAv
KiBPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEZFMjI4RUUxNDM2QUIyQzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFMjI4RUExNDM2QUIyMzAwMTk2
QzQ4IC8qIE9wdGlvbnMuY3BwICovOyB9OwogCQkwRkZGNEJCNDE0Mzk1NUU5MDA2NTVCQzAgLyog
REZHU3RydWN0dXJlU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkZGNEJCMjE0Mzk1NUU2MDA2NTVCQzAgLyogREZHU3RydWN0dXJlU2V0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQwMDA2Nzcx
MkE2Rjc4MzAwNjREMTIzIC8qIE9TQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAwMDY3NjEyQTZGNzgzMDA2NEQxMjMgLyogT1NBbGxv
Y2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkxNDAwMDY5MzEyQTZGOUUxMDA2NEQxMjMgLyogT1NBbGxvY2F0b3JQb3NpeC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAwMDY5MjEyQTZGOUUx
MDA2NEQxMjMgLyogT1NBbGxvY2F0b3JQb3NpeC5jcHAgKi87IH07CkBAIC04NzAsOCArODcwLDgg
QEAKIAkJMEZEODJFOEUxNDIwN0E1MTAwMTc5Qzk0IC8qIFZhbHVlUHJvZmlsZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWYWx1ZVByb2ZpbGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRkQ4MkVGMzE0MjMwNzM5MDAxNzlDOTQgLyogREZHSW50
cmluc2ljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0ludHJpbnNpYy5o
OyBwYXRoID0gZGZnL0RGR0ludHJpbnNpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkQ4MkY0OTE0MjgwNjkyMDAxNzlDOTQgLyogQml0VmVjdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEJpdFZlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRkUyMjhFQTE0MzZBQjIzMDAxOTZDNDggLyogSGV1cmlzdGljcy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZXVyaXN0aWNzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMEZFMjI4RUIxNDM2QUIyMzAwMTk2QzQ4IC8qIEhldXJpc3RpY3Mu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGV1cmlzdGljcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRkUyMjhFQTE0MzZBQjIzMDAxOTZDNDggLyogT3B0aW9u
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZXVyaXN0aWNzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFMjI4RUIxNDM2QUIyMzAwMTk2QzQ4
IC8qIE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGV1cmlzdGlj
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZGNEJCMjE0Mzk1NUU2MDA2NTVC
QzAgLyogREZHU3RydWN0dXJlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERGR1N0cnVjdHVyZVNldC5oOyBwYXRoID0gZGZnL0RGR1N0cnVjdHVyZVNldC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxNDAwMDY3NjEyQTZGNzgzMDA2NEQxMjMgLyogT1NBbGxv
Y2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT1NBbGxvY2F0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQwMDA2OTIxMkE2RjlFMTAwNjREMTIzIC8q
IE9TQWxsb2NhdG9yUG9zaXguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gT1NBbGxvY2F0b3JQb3NpeC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
MDU5LDggKzIwNTksOCBAQAogCQk3RUY2RTBCQjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMEZFMjI4RUEx
NDM2QUIyMzAwMTk2QzQ4IC8qIEhldXJpc3RpY3MuY3BwICovLAotCQkJCTBGRTIyOEVCMTQzNkFC
MjMwMDE5NkM0OCAvKiBIZXVyaXN0aWNzLmggKi8sCisJCQkJMEZFMjI4RUExNDM2QUIyMzAwMTk2
QzQ4IC8qIE9wdGlvbnMuY3BwICovLAorCQkJCTBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAvKiBP
cHRpb25zLmggKi8sCiAJCQkJMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291
bnRlci5jcHAgKi8sCiAJCQkJMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291
bnRlci5oICovLAogCQkJCUJDRjYwNTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAq
LywKQEAgLTI5MDAsNyArMjkwMCw3IEBACiAJCQkJMEY2MzZEQTAxNDJEMjdENzAwQjJFNjZBIC8q
IFBhY2tlZEludFZlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc1MjFFMTMxNDI5MTY5QTAw
M0M4RDBDIC8qIENhcmRTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDUyQUFFMTQzMDM1QTAw
MDI2REM5RiAvKiBVbmlvbkZpbmQuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGRTIyOEVEMTQzNkFC
MjcwMDE5NkM0OCAvKiBIZXVyaXN0aWNzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkUyMjhFRDE0
MzZBQjI3MDAxOTZDNDggLyogT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRjRCQjQx
NDM5NTVFOTAwNjU1QkMwIC8qIERGR1N0cnVjdHVyZVNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODYwNEY1MDUxNDNDRTFDMjAwQjI5NUY1IC8qIEpTR2xvYmFsVGhpcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY2MjAxNzQxNDNGQ0QzMzAwNjhCNzdDIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YS5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zNDQ2LDcgKzM0NDYsNyBAQAogCQkJCTg2RkE5RTkxMTQyQkJC
MkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY4
ODBGMUYxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODY4ODBGNEQxNDM1M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZl
SklUNjQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEZFMjI4RUUxNDM2QUIyQzAwMTk2QzQ4IC8q
IEhldXJpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZFMjI4RUUxNDM2QUIyQzAwMTk2
QzQ4IC8qIE9wdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2MjAxNzkxNDNGQ0Q0ODAw
NjhCNzdDIC8qIERGR0Fic3RyYWN0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMzQzRD
QTAxNDU4RjU0NTAwMjVGQjYyIC8qIEpTR2xvYmFsVGhpcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkMwOTc2RTE0NjhBQjUxMDBDRjI0NDIgLyogREZHQXNzZW1ibHlIZWxwZXJzLmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQppbmRleCAzOGQzODJkZGEwNDA4Mzk3
OTE5NmZmMzczZmZhNWQxOTMwZjVmODA4Li5iZTBlYzVlMDQwODdmNWNmYTEzNmFkNDFhN2Y3NTQ4
YTMyZTJjNzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQpAQCAtMTQ5LDcgKzE0OSw3IEBA
IFNPVVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIFwKICAgICBy
dW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAgXAogICAgIHJ1bnRpbWUvR2V0dGVyU2V0dGVy
LmNwcCBcCi0gICAgcnVudGltZS9IZXVyaXN0aWNzLmNwcCBcCisgICAgcnVudGltZS9PcHRpb25z
LmNwcCBcCiAgICAgcnVudGltZS9JZGVudGlmaWVyLmNwcCBcCiAgICAgcnVudGltZS9Jbml0aWFs
aXplVGhyZWFkaW5nLmNwcCBcCiAgICAgcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGUxMjcw
ZWMwMGUxYWY2NDljNTJiNWM4NTJmZWM5ZGMzMjE4MGI3OGUuLjMwNTZjODc4OWUyMTlkMzhlYmJi
NjExN2Q1ZmJlZWUzZDUyZWUzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCkBAIC0yMjAzLDcgKzIyMDMsNyBAQCBib29sIENvZGVCbG9jazo6c2hv
dWxkT3B0aW1pemVOb3coKQogICAgIGR1bXBWYWx1ZVByb2ZpbGVzKCk7CiAjZW5kaWYKIAotICAg
IGlmIChtX29wdGltaXphdGlvbkRlbGF5Q291bnRlciA+PSBIZXVyaXN0aWNzOjptYXhpbXVtT3B0
aW1pemF0aW9uRGVsYXkpCisgICAgaWYgKG1fb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID49IE9w
dGlvbnM6Om1heGltdW1PcHRpbWl6YXRpb25EZWxheSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPSAwOwpA
QCAtMjIyOSw5ICsyMjI5LDkgQEAgYm9vbCBDb2RlQmxvY2s6OnNob3VsZE9wdGltaXplTm93KCkK
ICAgICBwcmludGYoIlByb2ZpbGUgaG90bmVzczogJWxmLCAlbGZcbiIsIChkb3VibGUpbnVtYmVy
T2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzIC8gbnVtYmVyT2ZOb25Bcmd1bWVudFZhbHVl
UHJvZmlsZXMsIChkb3VibGUpbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcyAvIFZhbHVlUHJvZmls
ZTo6bnVtYmVyT2ZCdWNrZXRzIC8gbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkpOwogI2VuZGlmCiAK
LSAgICBpZiAoKCFudW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyB8fCAoZG91YmxlKW51
bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyAvIG51bWJlck9mTm9uQXJndW1lbnRW
YWx1ZVByb2ZpbGVzID49IEhldXJpc3RpY3M6OmRlc2lyZWRQcm9maWxlTGl2ZW5lc3NSYXRlKQot
ICAgICAgICAmJiAoIW51bWJlck9mVmFsdWVQcm9maWxlcygpIHx8IChkb3VibGUpbnVtYmVyT2ZT
YW1wbGVzSW5Qcm9maWxlcyAvIFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIC8gbnVtYmVy
T2ZWYWx1ZVByb2ZpbGVzKCkgPj0gSGV1cmlzdGljczo6ZGVzaXJlZFByb2ZpbGVGdWxsbmVzc1Jh
dGUpCi0gICAgICAgICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29wdGltaXphdGlvbkRlbGF5
Q291bnRlcikgKyAxID49IEhldXJpc3RpY3M6Om1pbmltdW1PcHRpbWl6YXRpb25EZWxheSkKKyAg
ICBpZiAoKCFudW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyB8fCAoZG91YmxlKW51bWJl
ck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyAvIG51bWJlck9mTm9uQXJndW1lbnRWYWx1
ZVByb2ZpbGVzID49IE9wdGlvbnM6OmRlc2lyZWRQcm9maWxlTGl2ZW5lc3NSYXRlKQorICAgICAg
ICAmJiAoIW51bWJlck9mVmFsdWVQcm9maWxlcygpIHx8IChkb3VibGUpbnVtYmVyT2ZTYW1wbGVz
SW5Qcm9maWxlcyAvIFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIC8gbnVtYmVyT2ZWYWx1
ZVByb2ZpbGVzKCkgPj0gT3B0aW9uczo6ZGVzaXJlZFByb2ZpbGVGdWxsbmVzc1JhdGUpCisgICAg
ICAgICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29wdGltaXphdGlvbkRlbGF5Q291bnRlcikg
KyAxID49IE9wdGlvbnM6Om1pbmltdW1PcHRpbWl6YXRpb25EZWxheSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgCiAgICAgQVNTRVJUKG1fb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyIDwgc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50OF90Pjo6bWF4KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGM5OTAxZWZjZDU4YjNhMDhhZTk3NTQyNjU4MTIy
NGUxNzI3ZDkwYWYuLmQ4ZTg1MDkwMTU1MzIzMjRmNmU5YTEyM2IzOTA0YzhiMjlmN2U4ZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTM2LDcgKzM2
LDcgQEAKICNpbmNsdWRlICJERkdPU1JFbnRyeS5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXQuaCIK
ICNpbmNsdWRlICJFdmFsQ29kZUNhY2hlLmgiCi0jaW5jbHVkZSAiSGV1cmlzdGljcy5oIgorI2lu
Y2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIkpJ
VENvZGUuaCIKICNpbmNsdWRlICJKSVRXcml0ZUJhcnJpZXIuaCIKQEAgLTY3NiwxMiArNjc2LDEy
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VT
bG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291
bnRlciA+PSBIZXVyaXN0aWNzOjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKKyAgICAg
ICAgICAgIHJldHVybiByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9m
ZnNldCktPm1fY291bnRlciA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9s
ZDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBjb3VsZFRha2VTbG93Q2FzZShp
bnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByYXJlQ2Fz
ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlciA+PSBI
ZXVyaXN0aWNzOjpjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZDsKKyAgICAgICAgICAgIHJldHVy
biByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291
bnRlciA+PSBPcHRpb25zOjpjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgUmFyZUNhc2VQcm9maWxlKiBhZGRTcGVjaWFsRmFzdENhc2VQcm9m
aWxlKGludCBieXRlY29kZU9mZnNldCkKQEAgLTY5OSwyMSArNjk5LDIxIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBib29sIGxpa2VseVRvVGFrZVNwZWNpYWxGYXN0Q2FzZShpbnQgYnl0ZWNv
ZGVPZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIHVuc2lnbmVkIHNwZWNpYWxGYXN0Q2Fz
ZUNvdW50ID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2Rl
T2Zmc2V0KS0+bV9jb3VudGVyOwotICAgICAgICAgICAgcmV0dXJuIHNwZWNpYWxGYXN0Q2FzZUNv
dW50ID49IEhldXJpc3RpY3M6Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOworICAgICAg
ICAgICAgcmV0dXJuIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID49IE9wdGlvbnM6Omxpa2VseVRvVGFr
ZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIGxp
a2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHVuc2lnbmVkIHNsb3dDYXNlQ291bnQgPSByYXJlQ2FzZVByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVu
c2lnbmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5
dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwotICAgICAgICAgICAgcmV0
dXJuIChzbG93Q2FzZUNvdW50IC0gc3BlY2lhbEZhc3RDYXNlQ291bnQpID49IEhldXJpc3RpY3M6
Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOworICAgICAgICAgICAgcmV0dXJuIChzbG93
Q2FzZUNvdW50IC0gc3BlY2lhbEZhc3RDYXNlQ291bnQpID49IE9wdGlvbnM6Omxpa2VseVRvVGFr
ZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIGxp
a2VseVRvVGFrZUFueVNsb3dDYXNlKGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgewogICAg
ICAgICAgICAgdW5zaWduZWQgc2xvd0Nhc2VDb3VudCA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVj
b2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWdu
ZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNv
ZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7Ci0gICAgICAgICAgICByZXR1cm4g
KHNsb3dDYXNlQ291bnQgKyBzcGVjaWFsRmFzdENhc2VDb3VudCkgPj0gSGV1cmlzdGljczo6bGlr
ZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CisgICAgICAgICAgICByZXR1cm4gKHNsb3dDYXNl
Q291bnQgKyBzcGVjaWFsRmFzdENhc2VDb3VudCkgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xv
d0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZvaWQgcmVzZXRS
YXJlQ2FzZVByb2ZpbGVzKCk7CkBAIC05MTUsMjUgKzkxNSwyNSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgLy8gdG8gYXZvaWQgdGhyYXNoaW5nLgogICAgICAgICB1bnNpZ25lZCByZW9wdGlt
aXphdGlvblJldHJ5Q291bnRlcigpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VS
VChtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyIDw9IEhldXJpc3RpY3M6OnJlb3B0aW1pemF0
aW9uUmV0cnlDb3VudGVyTWF4KTsKKyAgICAgICAgICAgIEFTU0VSVChtX3Jlb3B0aW1pemF0aW9u
UmV0cnlDb3VudGVyIDw9IE9wdGlvbnM6OnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4KTsK
ICAgICAgICAgICAgIHJldHVybiBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyOwogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICB2b2lkIGNvdW50UmVvcHRpbWl6YXRpb24oKQogICAgICAg
ICB7CiAgICAgICAgICAgICBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKys7Ci0gICAgICAg
ICAgICBpZiAobV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA+IEhldXJpc3RpY3M6OnJlb3B0
aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4KQotICAgICAgICAgICAgICAgIG1fcmVvcHRpbWl6YXRp
b25SZXRyeUNvdW50ZXIgPSBIZXVyaXN0aWNzOjpyZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1h
eDsKKyAgICAgICAgICAgIGlmIChtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID4gT3B0aW9u
czo6cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXgpCisgICAgICAgICAgICAgICAgbV9yZW9w
dGltaXphdGlvblJldHJ5Q291bnRlciA9IE9wdGlvbnM6OnJlb3B0aW1pemF0aW9uUmV0cnlDb3Vu
dGVyTWF4OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpbnQzMl90IGNvdW50ZXJWYWx1
ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
SGV1cmlzdGljczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCA8
PCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpOworICAgICAgICAgICAgcmV0dXJuIE9wdGlv
bnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAgPDwgcmVvcHRp
bWl6YXRpb25SZXRyeUNvdW50ZXIoKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaW50
MzJfdCBjb3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCgpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBIZXVyaXN0aWNzOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JP
cHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCA8PCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpOwor
ICAgICAgICAgICAgcmV0dXJuIE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGlt
aXplQWZ0ZXJMb25nV2FybVVwIDw8IHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCk7CiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIGludDMyX3QqIGFkZHJlc3NPZkV4ZWN1dGVDb3VudGVy
KCkKQEAgLTk1Miw3ICs5NTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gZXhwZW5z
aXZlIHRoYW4gZXhlY3V0aW5nIGJhc2VsaW5lIGNvZGUuCiAgICAgICAgIHZvaWQgb3B0aW1pemVO
ZXh0SW52b2NhdGlvbigpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1fZXhlY3V0ZUNvdW50ZXIg
PSBIZXVyaXN0aWNzOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZU5leHRJbnZvY2F0
aW9uOworICAgICAgICAgICAgbV9leGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvck9wdGltaXplTmV4dEludm9jYXRpb247CiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIC8vIENhbGwgdGhpcyB0byBwcmV2ZW50IG9wdGltaXphdGlvbiBmcm9tIGhhcHBl
bmluZyBhZ2Fpbi4gTm90ZSB0aGF0CkBAIC05NjIsNyArOTYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIC8vIHRoZSBmdXR1cmUgYXMgd2VsbC4KICAgICAgICAgdm9pZCBkb250T3B0aW1p
emVBbnl0aW1lU29vbigpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1fZXhlY3V0ZUNvdW50ZXIg
PSBIZXVyaXN0aWNzOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1l
U29vbjsKKyAgICAgICAgICAgIG1fZXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbjsKICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgLy8gQ2FsbCB0aGlzIHRvIHJlaW5pdGlhbGl6ZSB0aGUgY291bnRlciB0byBp
dHMgc3RhcnRpbmcgc3RhdGUsCkBAIC0xMDAzLDcgKzEwMDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgLy8gaW4gdGhlIGJhc2VsaW5lIGNvZGUuCiAgICAgICAgIHZvaWQgb3B0aW1pemVT
b29uKCkKICAgICAgICAgewotICAgICAgICAgICAgbV9leGVjdXRlQ291bnRlciA9IEhldXJpc3Rp
Y3M6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbiA8PCByZW9wdGltaXphdGlv
blJldHJ5Q291bnRlcigpOworICAgICAgICAgICAgbV9leGVjdXRlQ291bnRlciA9IE9wdGlvbnM6
OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbiA8PCByZW9wdGltaXphdGlvblJl
dHJ5Q291bnRlcigpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBUaGUgc3BlY3Vs
YXRpdmUgSklUIHRyYWNrcyBpdHMgc3VjY2VzcyByYXRlLCBzbyB0aGF0IHdlIGNhbgpAQCAtMTAz
NywxNyArMTAzNywxNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCiAgICAg
ICAgIC8vIFRoZSBudW1iZXIgb2YgZmFpbHVyZXMgdGhhdCB0cmlnZ2VycyB0aGUgdXNlIG9mIHRo
ZSByYXRpby4KLSAgICAgICAgdW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGQoKSB7IHJl
dHVybiBIZXVyaXN0aWNzOjpsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2UgPDwgYmFzZWxpbmVW
ZXJzaW9uKCktPnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCk7IH0KLSAgICAgICAgdW5zaWdu
ZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRGb3JMb29wKCkgeyByZXR1cm4gSGV1cmlzdGljczo6
bGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlRm9yTG9vcCA8PCBiYXNlbGluZVZlcnNpb24oKS0+
cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKTsgfQorICAgICAgICB1bnNpZ25lZCBsYXJnZUZh
aWxDb3VudFRocmVzaG9sZCgpIHsgcmV0dXJuIE9wdGlvbnM6OmxhcmdlRmFpbENvdW50VGhyZXNo
b2xkQmFzZSA8PCBiYXNlbGluZVZlcnNpb24oKS0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIo
KTsgfQorICAgICAgICB1bnNpZ25lZCBsYXJnZUZhaWxDb3VudFRocmVzaG9sZEZvckxvb3AoKSB7
IHJldHVybiBPcHRpb25zOjpsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2VGb3JMb29wIDw8IGJh
c2VsaW5lVmVyc2lvbigpLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpOyB9CiAKICAgICAg
ICAgYm9vbCBzaG91bGRSZW9wdGltaXplTm93KCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIEhldXJpc3RpY3M6OmRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW8gKiBzcGVj
dWxhdGl2ZUZhaWxDb3VudGVyKCkgPj0gc3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigpICYmIHNw
ZWN1bGF0aXZlRmFpbENvdW50ZXIoKSA+PSBsYXJnZUZhaWxDb3VudFRocmVzaG9sZCgpOworICAg
ICAgICAgICAgcmV0dXJuIE9wdGlvbnM6OmRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0
aW8gKiBzcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkgPj0gc3BlY3VsYXRpdmVTdWNjZXNzQ291bnRl
cigpICYmIHNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSA+PSBsYXJnZUZhaWxDb3VudFRocmVzaG9s
ZCgpOwogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBzaG91bGRSZW9wdGltaXplRnJvbUxvb3BO
b3coKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gSGV1cmlzdGljczo6ZGVzaXJlZFNw
ZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbyAqIHNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSA+PSBz
cGVjdWxhdGl2ZVN1Y2Nlc3NDb3VudGVyKCkgJiYgc3BlY3VsYXRpdmVGYWlsQ291bnRlcigpID49
IGxhcmdlRmFpbENvdW50VGhyZXNob2xkRm9yTG9vcCgpOworICAgICAgICAgICAgcmV0dXJuIE9w
dGlvbnM6OmRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW8gKiBzcGVjdWxhdGl2ZUZh
aWxDb3VudGVyKCkgPj0gc3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigpICYmIHNwZWN1bGF0aXZl
RmFpbENvdW50ZXIoKSA+PSBsYXJnZUZhaWxDb3VudFRocmVzaG9sZEZvckxvb3AoKTsKICAgICAg
ICAgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKaW5kZXggM2QyNThjZmU0ZWFmNTlmYWRjODcxYjczZTEyNjk3NTNlZTdmNmQ4
Ni4uZTdlZDZmN2Y0MzM3N2UxOTU1MTM0NjYxODk5MTJiMTI3Zjk2NTNmNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTk1Niw3ICs5
NTYsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhib29sIHVzZXNSZXN1
bHQsIGludCBjYWxsVGFyZ2V0LCBOb2RlSW5kZXggYwogICAgIHVuc2lnbmVkIGRlcHRoID0gMDsK
ICAgICBmb3IgKElubGluZVN0YWNrRW50cnkqIGVudHJ5ID0gbV9pbmxpbmVTdGFja1RvcDsgZW50
cnk7IGVudHJ5ID0gZW50cnktPm1fY2FsbGVyKSB7CiAgICAgICAgICsrZGVwdGg7Ci0gICAgICAg
IGlmIChkZXB0aCA+PSBIZXVyaXN0aWNzOjptYXhpbXVtSW5saW5pbmdEZXB0aCkKKyAgICAgICAg
aWYgKGRlcHRoID49IE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ0RlcHRoKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOyAvLyBEZXB0aCBleGNlZWRlZC4KICAgICAgICAgCiAgICAgICAgIGlmIChl
bnRyeS0+ZXhlY3V0YWJsZSgpID09IGV4ZWN1dGFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDYXBhYmlsaXRpZXMuaAppbmRleCBjODNhYmZkMzQ2Mzk3N2FhODE0MzUwMDIzNGU5
NjI2YzA4ODU5ODI0Li4xYzhmYWE1OTM5ZjU1ZDkyMTc2YTI2ZWM3ZmRhZGRlYTZjMmFiNjc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKQEAgLTI5LDcg
KzI5LDcgQEAKICNpbmNsdWRlICJERkdJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJERkdOb2RlLmgi
CiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgotI2luY2x1ZGUgIkhldXJpc3RpY3MuaCIKKyNpbmNs
dWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlIDx3dGYv
UGxhdGZvcm0uaD4KIApAQCAtNDAsMjggKzQwLDI4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKIC8vIGNoZWNrIG9wY29kZXMuCiBpbmxpbmUgYm9vbCBtaWdodENvbXBpbGVFdmFs
KENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0
aW9uQ291bnQoKSA8PSBIZXVyaXN0aWNzOjptYXhpbXVtRXZhbE9wdGltaXphdGlvbkNhbmRpZGF0
ZUluc3RydWN0aW9uQ291bnQ7CisgICAgcmV0dXJuIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3Vu
dCgpIDw9IE9wdGlvbnM6Om1heGltdW1FdmFsT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rp
b25Db3VudDsKIH0KIGlubGluZSBib29sIG1pZ2h0Q29tcGlsZVByb2dyYW0oQ29kZUJsb2NrKiBj
b2RlQmxvY2spCiB7Ci0gICAgcmV0dXJuIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9
IEhldXJpc3RpY3M6Om1heGltdW1Qcm9ncmFtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rp
b25Db3VudDsKKyAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0
aW9uczo6bWF4aW11bVByb2dyYW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50
OwogfQogaW5saW5lIGJvb2wgbWlnaHRDb21waWxlRnVuY3Rpb25Gb3JDYWxsKENvZGVCbG9jayog
Y29kZUJsb2NrKQogewotICAgIHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8
PSBIZXVyaXN0aWNzOjptYXhpbXVtRnVuY3Rpb25Gb3JDYWxsT3B0aW1pemF0aW9uQ2FuZGlkYXRl
SW5zdHJ1Y3Rpb25Db3VudDsKKyAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50
KCkgPD0gT3B0aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9yQ2FsbE9wdGltaXphdGlvbkNhbmRpZGF0
ZUluc3RydWN0aW9uQ291bnQ7CiB9CiBpbmxpbmUgYm9vbCBtaWdodENvbXBpbGVGdW5jdGlvbkZv
ckNvbnN0cnVjdChDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKLSAgICByZXR1cm4gY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gSGV1cmlzdGljczo6bWF4aW11bUZ1bmN0aW9uRm9yQ29u
c3RydWN0T3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKKyAgICByZXR1cm4g
Y29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9uczo6bWF4aW11bUZ1bmN0aW9u
Rm9yQ29uc3RydWN0T3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKIH0KIAog
aW5saW5lIGJvb2wgbWlnaHRJbmxpbmVGdW5jdGlvbkZvckNhbGwoQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCiB7Ci0gICAgcmV0dXJuIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IEhldXJp
c3RpY3M6Om1heGltdW1GdW5jdGlvbkZvckNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNv
dW50OworICAgIHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBPcHRpb25z
OjptYXhpbXVtRnVuY3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsK
IH0KIGlubGluZSBib29sIG1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JDb25zdHJ1Y3QoQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCiB7Ci0gICAgcmV0dXJuIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgp
IDw9IEhldXJpc3RpY3M6Om1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGluZUNhbmRpZGF0
ZUluc3RydWN0aW9uQ291bnQ7CisgICAgcmV0dXJuIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3Vu
dCgpIDw9IE9wdGlvbnM6Om1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGluZUNhbmRpZGF0
ZUluc3RydWN0aW9uQ291bnQ7CiB9CiAKIC8vIE9wY29kZSBjaGVja2luZy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAKaW5k
ZXggNmZmZDgwM2FhNTc1NWE3NmMwNjFkZjg2OTFkZmYzMDc1OGFiZDI1ZC4uZWU1ODBhY2VkMGQy
NDBlMjBhMGFlNjQyMTljMDZlNGY3NjUzZGUwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAKQEAgLTQ2MywxMiArNDYz
LDEyIEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCBPU1JFeGl0JiBl
eGl0LCBTcGVjdWxhdGlvblJlY292ZXJ5KiByZWNvCiAgICAgbV9qaXQubW92ZShBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIobV9qaXQuYmFzZWxpbmVDb2RlQmxvY2soKSksIEdQUkluZm86
OnJlZ1QwKTsKICAgICAKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgZmV3RmFpbHMgPSBtX2pp
dC5icmFuY2gzMihBc3NlbWJseUhlbHBlcnM6OkJlbG93T3JFcXVhbCwgR1BSSW5mbzo6cmVnVDIs
IEFzc2VtYmx5SGVscGVyczo6SW1tMzIobV9qaXQuY29kZUJsb2NrKCktPmxhcmdlRmFpbENvdW50
VGhyZXNob2xkKCkpKTsKLSAgICBtX2ppdC5tdWwzMihBc3NlbWJseUhlbHBlcnM6OkltbTMyKEhl
dXJpc3RpY3M6OmRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW8pLCBHUFJJbmZvOjpy
ZWdUMiwgR1BSSW5mbzo6cmVnVDIpOworICAgIG1faml0Lm11bDMyKEFzc2VtYmx5SGVscGVyczo6
SW1tMzIoT3B0aW9uczo6ZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbyksIEdQUklu
Zm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgCiAgICAgQXNzZW1ibHlIZWxwZXJzOjpK
dW1wIGxvd0ZhaWxSYXRlID0gbV9qaXQuYnJhbmNoMzIoQXNzZW1ibHlIZWxwZXJzOjpCZWxvd09y
RXF1YWwsIEdQUkluZm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgCiAgICAgLy8gUmVv
cHRpbWl6ZSBhcyBzb29uIGFzIHBvc3NpYmxlLgotICAgIG1faml0LnN0b3JlMzIoQXNzZW1ibHlI
ZWxwZXJzOjpJbW0zMihIZXVyaXN0aWNzOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6
ZU5leHRJbnZvY2F0aW9uKSwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1Qw
LCBDb2RlQmxvY2s6Om9mZnNldE9mRXhlY3V0ZUNvdW50ZXIoKSkpOworICAgIG1faml0LnN0b3Jl
MzIoQXNzZW1ibHlIZWxwZXJzOjpJbW0zMihPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVG
b3JPcHRpbWl6ZU5leHRJbnZvY2F0aW9uKSwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUklu
Zm86OnJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mRXhlY3V0ZUNvdW50ZXIoKSkpOwogICAgIEFz
c2VtYmx5SGVscGVyczo6SnVtcCBkb25lQWRqdXN0aW5nID0gbV9qaXQuanVtcCgpOwogICAgIAog
ICAgIGZld0ZhaWxzLmxpbmsoJm1faml0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAKaW5kZXggNTZmYjEzNDRlMjk4ZmNhNjdjZTE2
M2YwNWIxYWVlODkwOTJkN2RiNy4uNDUyZWY1NDFhNDQwZTE3OGFjYmQ4ZjM1MGYyZTA3MjBiYzk4
YWVlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29t
cGlsZXI2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29t
cGlsZXI2NC5jcHAKQEAgLTQ3MywxMiArNDczLDEyIEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpj
b21waWxlRXhpdChjb25zdCBPU1JFeGl0JiBleGl0LCBTcGVjdWxhdGlvblJlY292ZXJ5KiByZWNv
CiAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9qaXQuYmFz
ZWxpbmVDb2RlQmxvY2soKSksIEdQUkluZm86OnJlZ1QwKTsKICAgICAKICAgICBBc3NlbWJseUhl
bHBlcnM6Okp1bXAgZmV3RmFpbHMgPSBtX2ppdC5icmFuY2gzMihBc3NlbWJseUhlbHBlcnM6OkJl
bG93T3JFcXVhbCwgR1BSSW5mbzo6cmVnVDIsIEFzc2VtYmx5SGVscGVyczo6SW1tMzIobV9qaXQu
Y29kZUJsb2NrKCktPmxhcmdlRmFpbENvdW50VGhyZXNob2xkKCkpKTsKLSAgICBtX2ppdC5tdWwz
MihBc3NlbWJseUhlbHBlcnM6OkltbTMyKEhldXJpc3RpY3M6OmRlc2lyZWRTcGVjdWxhdGl2ZVN1
Y2Nlc3NGYWlsUmF0aW8pLCBHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6cmVnVDIpOworICAgIG1f
aml0Lm11bDMyKEFzc2VtYmx5SGVscGVyczo6SW1tMzIoT3B0aW9uczo6ZGVzaXJlZFNwZWN1bGF0
aXZlU3VjY2Vzc0ZhaWxSYXRpbyksIEdQUkluZm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUMik7CiAg
ICAgCiAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIGxvd0ZhaWxSYXRlID0gbV9qaXQuYnJhbmNo
MzIoQXNzZW1ibHlIZWxwZXJzOjpCZWxvd09yRXF1YWwsIEdQUkluZm86OnJlZ1QyLCBHUFJJbmZv
OjpyZWdUMSk7CiAgICAgCiAgICAgLy8gUmVvcHRpbWl6ZSBhcyBzb29uIGFzIHBvc3NpYmxlLgot
ICAgIG1faml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpJbW0zMihIZXVyaXN0aWNzOjpleGVj
dXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZU5leHRJbnZvY2F0aW9uKSwgQXNzZW1ibHlIZWxw
ZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mRXhlY3V0ZUNv
dW50ZXIoKSkpOworICAgIG1faml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpJbW0zMihPcHRp
b25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZU5leHRJbnZvY2F0aW9uKSwgQXNz
ZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9m
RXhlY3V0ZUNvdW50ZXIoKSkpOwogICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCBkb25lQWRqdXN0
aW5nID0gbV9qaXQuanVtcCgpOwogICAgIAogICAgIGZld0ZhaWxzLmxpbmsoJm1faml0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCmluZGV4IDNmNGZkYTc2Y2M0ZTM3
MWY3NGQ2ZGNjNzM1YzliOTM4NDYzZWY5ZDUuLmRkMGU2ZmQ1N2FhZGQzMDJlZDU3N2JhNDkyMjZi
MDVlNmU4MTdjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtT
dGFjay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcApA
QCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ29uc2VydmF0aXZlUm9vdHMuaCIKICNpbmNs
dWRlICJIZWFwLmgiCi0jaW5jbHVkZSAiSGV1cmlzdGljcy5oIgorI2luY2x1ZGUgIk9wdGlvbnMu
aCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAi
SlNPYmplY3QuaCIKQEAgLTYwLDcgKzYwLDcgQEAgTWFya1N0YWNrU2VnbWVudCogTWFya1N0YWNr
U2VnbWVudEFsbG9jYXRvcjo6YWxsb2NhdGUoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PE1hcmtTdGFja1NlZ21lbnQqPihPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFu
ZENvbW1pdChIZXVyaXN0aWNzOjpnY01hcmtTdGFja1NlZ21lbnRTaXplKSk7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PE1hcmtTdGFja1NlZ21lbnQqPihPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENv
bW1pdChPcHRpb25zOjpnY01hcmtTdGFja1NlZ21lbnRTaXplKSk7CiB9CiAKIHZvaWQgTWFya1N0
YWNrU2VnbWVudEFsbG9jYXRvcjo6cmVsZWFzZShNYXJrU3RhY2tTZWdtZW50KiBzZWdtZW50KQpA
QCAtODEsMTMgKzgxLDEzIEBAIHZvaWQgTWFya1N0YWNrU2VnbWVudEFsbG9jYXRvcjo6c2hyaW5r
UmVzZXJ2ZSgpCiAgICAgd2hpbGUgKHNlZ21lbnRzKSB7CiAgICAgICAgIE1hcmtTdGFja1NlZ21l
bnQqIHRvRnJlZSA9IHNlZ21lbnRzOwogICAgICAgICBzZWdtZW50cyA9IHNlZ21lbnRzLT5tX3By
ZXZpb3VzOwotICAgICAgICBPU0FsbG9jYXRvcjo6ZGVjb21taXRBbmRSZWxlYXNlKHRvRnJlZSwg
SGV1cmlzdGljczo6Z2NNYXJrU3RhY2tTZWdtZW50U2l6ZSk7CisgICAgICAgIE9TQWxsb2NhdG9y
OjpkZWNvbW1pdEFuZFJlbGVhc2UodG9GcmVlLCBPcHRpb25zOjpnY01hcmtTdGFja1NlZ21lbnRT
aXplKTsKICAgICB9CiB9CiAKIE1hcmtTdGFja0FycmF5OjpNYXJrU3RhY2tBcnJheShNYXJrU3Rh
Y2tTZWdtZW50QWxsb2NhdG9yJiBhbGxvY2F0b3IpCiAgICAgOiBtX2FsbG9jYXRvcihhbGxvY2F0
b3IpCi0gICAgLCBtX3NlZ21lbnRDYXBhY2l0eShNYXJrU3RhY2tTZWdtZW50OjpjYXBhY2l0eUZy
b21TaXplKEhldXJpc3RpY3M6OmdjTWFya1N0YWNrU2VnbWVudFNpemUpKQorICAgICwgbV9zZWdt
ZW50Q2FwYWNpdHkoTWFya1N0YWNrU2VnbWVudDo6Y2FwYWNpdHlGcm9tU2l6ZShPcHRpb25zOjpn
Y01hcmtTdGFja1NlZ21lbnRTaXplKSkKICAgICAsIG1fdG9wKDApCiAgICAgLCBtX251bWJlck9m
UHJldmlvdXNTZWdtZW50cygwKQogewpAQCAtMTQ1LDEwICsxNDUsMTAgQEAgYm9vbCBNYXJrU3Rh
Y2tBcnJheTo6ZG9uYXRlU29tZUNlbGxzVG8oTWFya1N0YWNrQXJyYXkmIG90aGVyKQogICAgIG90
aGVyLnZhbGlkYXRlUHJldmlvdXMoKTsKICAgICAgICAgCiAgICAgLy8gRmFzdCBjaGVjazogc2Vl
IGlmIHRoZSBvdGhlciBtYXJrIHN0YWNrIGFscmVhZHkgaGFzIGVub3VnaCBzZWdtZW50cy4KLSAg
ICBpZiAob3RoZXIubV9udW1iZXJPZlByZXZpb3VzU2VnbWVudHMgKyAxID49IEhldXJpc3RpY3M6
Om1heGltdW1OdW1iZXJPZlNoYXJlZFNlZ21lbnRzKQorICAgIGlmIChvdGhlci5tX251bWJlck9m
UHJldmlvdXNTZWdtZW50cyArIDEgPj0gT3B0aW9uczo6bWF4aW11bU51bWJlck9mU2hhcmVkU2Vn
bWVudHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgc2l6ZV90IG51bWJl
ck9mQ2VsbHNUb0tlZXAgPSBIZXVyaXN0aWNzOjptaW5pbXVtTnVtYmVyT2ZDZWxsc1RvS2VlcDsK
KyAgICBzaXplX3QgbnVtYmVyT2ZDZWxsc1RvS2VlcCA9IE9wdGlvbnM6Om1pbmltdW1OdW1iZXJP
ZkNlbGxzVG9LZWVwOwogICAgIEFTU0VSVChtX3RvcCA+IG51bWJlck9mQ2VsbHNUb0tlZXAgfHwg
bV90b3BTZWdtZW50LT5tX3ByZXZpb3VzKTsKICAgICAgICAgCiAgICAgLy8gTG9va3MgbGlrZSB3
ZSBzaG91bGQgZG9uYXRlISBHaXZlIHRoZSBvdGhlciBtYXJrIHN0YWNrIGFsbCBvZiBvdXIKQEAg
LTIwOSw4ICsyMDksOCBAQCB2b2lkIE1hcmtTdGFja0FycmF5OjpzdGVhbFNvbWVDZWxsc0Zyb20o
TWFya1N0YWNrQXJyYXkmIG90aGVyKQogICAgIH0KICAgICAgICAgCiAgICAgLy8gT3RoZXJ3aXNl
IGRyYWluIDEvTnRoIG9mIHRoZSBzaGFyZWQgYXJyYXkgd2hlcmUgTiBpcyB0aGUgbnVtYmVyIG9m
Ci0gICAgLy8gd29ya2Vycywgb3IgSGV1cmlzdGljczo6bWluaW11bU51bWJlck9mQ2VsbHNUb0tl
ZXAsIHdoaWNoZXZlciBpcyBiaWdnZXIuCi0gICAgc2l6ZV90IG51bWJlck9mQ2VsbHNUb1N0ZWFs
ID0gc3RkOjptYXgoKHNpemVfdClIZXVyaXN0aWNzOjptaW5pbXVtTnVtYmVyT2ZDZWxsc1RvS2Vl
cCwgb3RoZXIuc2l6ZSgpIC8gSGV1cmlzdGljczo6bnVtYmVyT2ZHQ01hcmtlcnMpOworICAgIC8v
IHdvcmtlcnMsIG9yIE9wdGlvbnM6Om1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVwLCB3aGljaGV2
ZXIgaXMgYmlnZ2VyLgorICAgIHNpemVfdCBudW1iZXJPZkNlbGxzVG9TdGVhbCA9IHN0ZDo6bWF4
KChzaXplX3QpT3B0aW9uczo6bWluaW11bU51bWJlck9mQ2VsbHNUb0tlZXAsIG90aGVyLnNpemUo
KSAvIE9wdGlvbnM6Om51bWJlck9mR0NNYXJrZXJzKTsKICAgICB3aGlsZSAobnVtYmVyT2ZDZWxs
c1RvU3RlYWwtLSA+IDAgJiYgb3RoZXIuY2FuUmVtb3ZlTGFzdCgpKQogICAgICAgICBhcHBlbmQo
b3RoZXIucmVtb3ZlTGFzdCgpKTsKIH0KQEAgLTIzOCw3ICsyMzgsNyBAQCBNYXJrU3RhY2tUaHJl
YWRTaGFyZWREYXRhOjpNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSkKICAgICAsIG1fcGFyYWxsZWxNYXJrZXJzU2hvdWxkRXhpdChmYWxzZSkKIHsKICNp
ZiBFTkFCTEUoUEFSQUxMRUxfR0MpCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IEhldXJp
c3RpY3M6Om51bWJlck9mR0NNYXJrZXJzOyArK2kpIHsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAx
OyBpIDwgT3B0aW9uczo6bnVtYmVyT2ZHQ01hcmtlcnM7ICsraSkgewogICAgICAgICBtX21hcmtp
bmdUaHJlYWRzLmFwcGVuZChjcmVhdGVUaHJlYWQobWFya2luZ1RocmVhZFN0YXJ0RnVuYywgdGhp
cywgIkphdmFTY3JpcHRDb3JlOjpNYXJraW5nIikpOwogICAgICAgICBBU1NFUlQobV9tYXJraW5n
VGhyZWFkcy5sYXN0KCkpOwogICAgIH0KQEAgLTMyOSw3ICszMjksNyBAQCB2b2lkIFNsb3RWaXNp
dG9yOjpkb25hdGVTbG93KCkKICAgICBpZiAobV9zdGFjay5kb25hdGVTb21lQ2VsbHNUbyhtX3No
YXJlZC5tX3NoYXJlZE1hcmtTdGFjaykpIHsKICAgICAgICAgLy8gT25seSB3YWtlIHVwIHRocmVh
ZHMgaWYgdGhlIHNoYXJlZCBzdGFjayBpcyBiaWcgZW5vdWdoOyBvdGhlcndpc2UgYXNzdW1lIHRo
YXQKICAgICAgICAgLy8gaXQncyBtb3JlIHByb2ZpdGFibGUgZm9yIHVzIHRvIGp1c3Qgc2NhbiB0
aGlzIG91cnNlbHZlcyBsYXRlci4KLSAgICAgICAgaWYgKG1fc2hhcmVkLm1fc2hhcmVkTWFya1N0
YWNrLnNpemUoKSA+PSBIZXVyaXN0aWNzOjpzaGFyZWRTdGFja1dha2V1cFRocmVzaG9sZCkKKyAg
ICAgICAgaWYgKG1fc2hhcmVkLm1fc2hhcmVkTWFya1N0YWNrLnNpemUoKSA+PSBPcHRpb25zOjpz
aGFyZWRTdGFja1dha2V1cFRocmVzaG9sZCkKICAgICAgICAgICAgIG1fc2hhcmVkLm1fbWFya2lu
Z0NvbmRpdGlvbi5icm9hZGNhc3QoKTsKICAgICB9CiB9CkBAIC0zNDMsMTAgKzM0MywxMCBAQCB2
b2lkIFNsb3RWaXNpdG9yOjpkcmFpbigpCiAgICAgdm9pZCoganNTdHJpbmdWUHRyID0gbV9qc1N0
cmluZ1ZQdHI7CiAKICNpZiBFTkFCTEUoUEFSQUxMRUxfR0MpCi0gICAgaWYgKEhldXJpc3RpY3M6
Om51bWJlck9mR0NNYXJrZXJzID4gMSkgeworICAgIGlmIChPcHRpb25zOjpudW1iZXJPZkdDTWFy
a2VycyA+IDEpIHsKICAgICAgICAgd2hpbGUgKCFtX3N0YWNrLmlzRW1wdHkoKSkgewogICAgICAg
ICAgICAgbV9zdGFjay5yZWZpbGwoKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgY291bnRk
b3duID0gSGV1cmlzdGljczo6bWluaW11bU51bWJlck9mU2NhbnNCZXR3ZWVuUmViYWxhbmNlOyBt
X3N0YWNrLmNhblJlbW92ZUxhc3QoKSAmJiBjb3VudGRvd24tLTspCisgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGNvdW50ZG93biA9IE9wdGlvbnM6Om1pbmltdW1OdW1iZXJPZlNjYW5zQmV0d2Vl
blJlYmFsYW5jZTsgbV9zdGFjay5jYW5SZW1vdmVMYXN0KCkgJiYgY291bnRkb3duLS07KQogICAg
ICAgICAgICAgICAgIHZpc2l0Q2hpbGRyZW4oKnRoaXMsIG1fc3RhY2sucmVtb3ZlTGFzdCgpLCBq
c0ZpbmFsT2JqZWN0VlB0ciwganNBcnJheVZQdHIsIGpzU3RyaW5nVlB0cik7CiAgICAgICAgICAg
ICBkb25hdGVLbm93blBhcmFsbGVsKCk7CiAgICAgICAgIH0KQEAgLTM2NywxNCArMzY3LDE0IEBA
IHZvaWQgU2xvdFZpc2l0b3I6OmRyYWluRnJvbVNoYXJlZChTaGFyZWREcmFpbk1vZGUgc2hhcmVk
RHJhaW5Nb2RlKQogewogICAgIEFTU0VSVChtX2lzSW5QYXJhbGxlbE1vZGUpOwogICAgIAotICAg
IEFTU0VSVChIZXVyaXN0aWNzOjpudW1iZXJPZkdDTWFya2Vycyk7CisgICAgQVNTRVJUKE9wdGlv
bnM6Om51bWJlck9mR0NNYXJrZXJzKTsKICAgICAKICAgICBib29sIHNob3VsZEJlUGFyYWxsZWw7
CiAKICNpZiBFTkFCTEUoUEFSQUxMRUxfR0MpCi0gICAgc2hvdWxkQmVQYXJhbGxlbCA9IEhldXJp
c3RpY3M6Om51bWJlck9mR0NNYXJrZXJzID4gMTsKKyAgICBzaG91bGRCZVBhcmFsbGVsID0gT3B0
aW9uczo6bnVtYmVyT2ZHQ01hcmtlcnMgPiAxOwogI2Vsc2UKLSAgICBBU1NFUlQoSGV1cmlzdGlj
czo6bnVtYmVyT2ZHQ01hcmtlcnMgPT0gMSk7CisgICAgQVNTRVJUKE9wdGlvbnM6Om51bWJlck9m
R0NNYXJrZXJzID09IDEpOwogICAgIHNob3VsZEJlUGFyYWxsZWwgPSBmYWxzZTsKICNlbmRpZgog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaAppbmRleCBjNTA4MDE5NDg4
NzAxOWM5YThjZDQ4YjM3Mzc3NmQ4YThmOTc4ZGE3Li44Y2JkYzYyOGUzZGExMzRhNTRkZDVjYTE1
MzdiNmExNDBjMTYzMDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrU3RhY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaApA
QCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBNYXJrU3RhY2tfaAogCiAjaW5jbHVkZSAiSGFuZGxl
VHlwZXMuaCIKLSNpbmNsdWRlICJIZXVyaXN0aWNzLmgiCisjaW5jbHVkZSAiT3B0aW9ucy5oIgog
I2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJSZWdpc3Rlci5oIgogI2luY2x1ZGUgIlVu
Y29uZGl0aW9uYWxGaW5hbGl6ZXIuaCIKQEAgLTI2MSw3ICsyNjEsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgCiAgICAgICAgIHZvaWQgbWVyZ2VPcGFxdWVSb290c0lmUHJvZml0YWJsZSgp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vcGFx
dWVSb290cy5zaXplKCkpIDwgSGV1cmlzdGljczo6b3BhcXVlUm9vdE1lcmdlVGhyZXNob2xkKQor
ICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29wYXF1ZVJvb3RzLnNpemUo
KSkgPCBPcHRpb25zOjpvcGFxdWVSb290TWVyZ2VUaHJlc2hvbGQpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgbWVyZ2VPcGFxdWVSb290cygpOwogICAgICAgICB9CkBAIC0z
MDksNyArMzA5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5saW5lIHZvaWQgTWFya1N0YWNr
OjphZGRPcGFxdWVSb290KHZvaWQqIHJvb3QpCiAgICAgewogI2lmIEVOQUJMRShQQVJBTExFTF9H
QykKLSAgICAgICAgaWYgKEhldXJpc3RpY3M6Om51bWJlck9mR0NNYXJrZXJzID09IDEpIHsKKyAg
ICAgICAgaWYgKE9wdGlvbnM6Om51bWJlck9mR0NNYXJrZXJzID09IDEpIHsKICAgICAgICAgICAg
IC8vIFB1dCBkaXJlY3RseSBpbnRvIHRoZSBzaGFyZWQgSGFzaFNldC4KICAgICAgICAgICAgIG1f
c2hhcmVkLm1fb3BhcXVlUm9vdHMuYWRkKHJvb3QpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
Mzc1LDcgKzM3NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgaW5saW5lIGJvb2wgTWFya1N0
YWNrQXJyYXk6OmNhbkRvbmF0ZVNvbWVDZWxscygpCiAgICAgewotICAgICAgICBzaXplX3QgbnVt
YmVyT2ZDZWxsc1RvS2VlcCA9IEhldXJpc3RpY3M6Om1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVw
OworICAgICAgICBzaXplX3QgbnVtYmVyT2ZDZWxsc1RvS2VlcCA9IE9wdGlvbnM6Om1pbmltdW1O
dW1iZXJPZkNlbGxzVG9LZWVwOwogICAgICAgICAvLyBBbm90aGVyIGNoZWNrOiBzZWUgaWYgd2Ug
aGF2ZSBlbm91Z2ggY2VsbHMgdG8gd2FycmFudCBkb25hdGlvbi4KICAgICAgICAgaWYgKG1fdG9w
IDw9IG51bWJlck9mQ2VsbHNUb0tlZXApIHsKICAgICAgICAgICAgIC8vIFRoaXMgaW5kaWNhdGVz
IHRoYXQgd2UgbWlnaHQgbm90IHdhbnQgdG8gZG9uYXRlIGFueXRoaW5nOyBjaGVjayBpZiB3ZSBo
YXZlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAppbmRleCBhNDYxNzgx
NGFlN2UyZjY4YWIzMjQ4OWVlOWVjZWE1YWViOGM2NjEyLi42NDdiMmNiZGMxNWE3YjQ0NWI2OTlh
NDk2MDg1MTZhZGMxMmFmNDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9TbG90VmlzaXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNp
dG9yLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZG9uYXRlKCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChtX2lzSW5QYXJhbGxlbE1vZGUpOwotICAgICAgICBpZiAoSGV1cmlz
dGljczo6bnVtYmVyT2ZHQ01hcmtlcnMgPT0gMSkKKyAgICAgICAgaWYgKE9wdGlvbnM6Om51bWJl
ck9mR0NNYXJrZXJzID09IDEpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgICAg
ICBkb25hdGVLbm93blBhcmFsbGVsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXgg
ODAxZDhkZjcyZDY3Y2M4OGY5MjQ0OTRlMGNhYmRkMzQyYmEyNTkyYi4uMWUxYTE1MjQ3MDgwODY2
MjgyODVjZGZlYzg5MWZmNWE5ODgzZmQzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApA
QCAtOTksNyArOTksNyBAQCB2b2lkIEpJVDo6ZW1pdE9wdGltaXphdGlvbkNoZWNrKE9wdGltaXph
dGlvbkNoZWNrS2luZCBraW5kKQogICAgIGlmICghc2hvdWxkRW1pdFByb2ZpbGluZygpKQogICAg
ICAgICByZXR1cm47CiAgICAgCi0gICAgSnVtcCBza2lwT3B0aW1pemUgPSBicmFuY2hBZGQzMihT
aWduZWQsIFRydXN0ZWRJbW0zMihraW5kID09IExvb3BPcHRpbWl6YXRpb25DaGVjayA/IEhldXJp
c3RpY3M6OmV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JMb29wIDogSGV1cmlzdGljczo6ZXhl
Y3V0aW9uQ291bnRlckluY3JlbWVudEZvclJldHVybiksIEFic29sdXRlQWRkcmVzcyhtX2NvZGVC
bG9jay0+YWRkcmVzc09mRXhlY3V0ZUNvdW50ZXIoKSkpOworICAgIEp1bXAgc2tpcE9wdGltaXpl
ID0gYnJhbmNoQWRkMzIoU2lnbmVkLCBUcnVzdGVkSW1tMzIoa2luZCA9PSBMb29wT3B0aW1pemF0
aW9uQ2hlY2sgPyBPcHRpb25zOjpleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yTG9vcCA6IE9w
dGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JSZXR1cm4pLCBBYnNvbHV0ZUFkZHJl
c3MobV9jb2RlQmxvY2stPmFkZHJlc3NPZkV4ZWN1dGVDb3VudGVyKCkpKTsKICAgICBKSVRTdHVi
Q2FsbCBzdHViQ2FsbCh0aGlzLCBraW5kID09IExvb3BPcHRpbWl6YXRpb25DaGVjayA/IGN0aV9v
cHRpbWl6ZV9mcm9tX2xvb3AgOiBjdGlfb3B0aW1pemVfZnJvbV9yZXQpOwogICAgIGlmIChraW5k
ID09IExvb3BPcHRpbWl6YXRpb25DaGVjaykKICAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQo
SW1tMzIobV9ieXRlY29kZU9mZnNldCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBmYzBjNTYw
OTAyYjM2ZThmOGI5ZmY1OTA5MDQwZjNiYzE5NzczMmMxLi4zNmQzZjdhMDVhNWZlMTM2OGIyOWZk
NWY4ZjFkNWY5Y2IyNTllOGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMTAyLDggKzEwMiw4
IEBAIHN0cnVjdCBTY3JpcHQgewogICAgIH0KIH07CiAKLXN0cnVjdCBPcHRpb25zIHsKLSAgICBP
cHRpb25zKCkKK3N0cnVjdCBDb21tYW5kTGluZSB7CisgICAgQ29tbWFuZExpbmUoKQogICAgICAg
ICA6IGludGVyYWN0aXZlKGZhbHNlKQogICAgICAgICAsIGR1bXAoZmFsc2UpCiAgICAgewpAQCAt
NTQ4LDcgKzU0OCw3IEBAIHN0YXRpYyBOT19SRVRVUk4gdm9pZCBwcmludFVzYWdlU3RhdGVtZW50
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgYm9vbCBoZWxwID0KICAgICBleGl0KGhlbHAgPyBF
WElUX1NVQ0NFU1MgOiBFWElUX0ZBSUxVUkUpOwogfQogCi1zdGF0aWMgdm9pZCBwYXJzZUFyZ3Vt
ZW50cyhpbnQgYXJnYywgY2hhcioqIGFyZ3YsIE9wdGlvbnMmIG9wdGlvbnMsIEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSkKK3N0YXRpYyB2b2lkIHBhcnNlQXJndW1lbnRzKGludCBhcmdjLCBjaGFy
KiogYXJndiwgQ29tbWFuZExpbmUmIG9wdGlvbnMsIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkK
IHsKICAgICBpbnQgaSA9IDE7CiAgICAgZm9yICg7IGkgPCBhcmdjOyArK2kpIHsKQEAgLTYwMiw3
ICs2MDIsNyBAQCBpbnQganNjbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YsIEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSkKIHsKICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkp
OwogCi0gICAgT3B0aW9ucyBvcHRpb25zOworICAgIENvbW1hbmRMaW5lIG9wdGlvbnM7CiAgICAg
cGFyc2VBcmd1bWVudHMoYXJnYywgYXJndiwgb3B0aW9ucywgZ2xvYmFsRGF0YSk7CiAKICAgICBH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEdsb2JhbE9iamVjdDo6Y3JlYXRlKCpnbG9iYWxE
YXRhLCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSgqZ2xvYmFsRGF0YSwganNOdWxsKCkp
LCBvcHRpb25zLmFyZ3VtZW50cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9IZXVyaXN0aWNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hl
dXJpc3RpY3MuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNWZkZDhhNDczNjcw
NzAwMzNjNTQzMDFhZjM0ODVhNWVmZWQyN2M4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hldXJpc3Rp
Y3MuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjExICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkhldXJpc3RpY3MuaCIKLSNpbmNsdWRlIDx3dGYvUGFnZUJsb2NrLmg+Ci0KLSNpbmNsdWRl
IDxsaW1pdHM+Ci0KLSNpZiBPUyhEQVJXSU4pICYmIEVOQUJMRShQQVJBTExFTF9HQykKLSNpbmNs
dWRlIDxzeXMvc3lzY3RsLmg+Ci0jZW5kaWYKLQotLy8gU2V0IHRvIDEgdG8gY29udHJvbCB0aGUg
aGV1cmlzdGljcyB1c2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCi0jZGVmaW5lIEVOQUJMRV9S
VU5fVElNRV9IRVVSSVNUSUNTIDAKLQotI2lmIEVOQUJMRShSVU5fVElNRV9IRVVSSVNUSUNTKQot
I2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgSGV1cmlz
dGljcyB7Ci0KLXVuc2lnbmVkIG1heGltdW1FdmFsT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1
Y3Rpb25Db3VudDsKLXVuc2lnbmVkIG1heGltdW1Qcm9ncmFtT3B0aW1pemF0aW9uQ2FuZGlkYXRl
SW5zdHJ1Y3Rpb25Db3VudDsKLXVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNhbGxPcHRpbWl6
YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OwotdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9u
Rm9yQ29uc3RydWN0T3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKLQotdW5z
aWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291
bnQ7Ci11bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJ
bnN0cnVjdGlvbkNvdW50OwotCi11bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsKLQotaW50
MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOwotaW50MzJf
dCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKLWludDMy
X3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247Ci1pbnQz
Ml90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbjsKLWludDMyX3QgZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVOZXh0SW52b2NhdGlvbjsKLQotaW50MzJfdCBleGVj
dXRpb25Db3VudGVySW5jcmVtZW50Rm9yTG9vcDsKLWludDMyX3QgZXhlY3V0aW9uQ291bnRlcklu
Y3JlbWVudEZvclJldHVybjsKLQotdW5zaWduZWQgZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0Zh
aWxSYXRpbzsKLQotdW5zaWduZWQgbGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7Ci11bnNp
Z25lZCBjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZDsKLQotdW5zaWduZWQgbGFyZ2VGYWlsQ291
bnRUaHJlc2hvbGRCYXNlOwotdW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlRm9y
TG9vcDsKLQotdW5zaWduZWQgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXg7Ci11bnNpZ25l
ZCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlclN0ZXA7Ci0KLXVuc2lnbmVkIG1pbmltdW1PcHRp
bWl6YXRpb25EZWxheTsKLXVuc2lnbmVkIG1heGltdW1PcHRpbWl6YXRpb25EZWxheTsKLWRvdWJs
ZSBkZXNpcmVkUHJvZmlsZUxpdmVuZXNzUmF0ZTsKLWRvdWJsZSBkZXNpcmVkUHJvZmlsZUZ1bGxu
ZXNzUmF0ZTsKLQotdW5zaWduZWQgbWluaW11bU51bWJlck9mU2NhbnNCZXR3ZWVuUmViYWxhbmNl
OwotdW5zaWduZWQgZ2NNYXJrU3RhY2tTZWdtZW50U2l6ZTsKLXVuc2lnbmVkIG1pbmltdW1OdW1i
ZXJPZkNlbGxzVG9LZWVwOwotdW5zaWduZWQgbWF4aW11bU51bWJlck9mU2hhcmVkU2VnbWVudHM7
Ci11bnNpZ25lZCBzaGFyZWRTdGFja1dha2V1cFRocmVzaG9sZDsKLXVuc2lnbmVkIG51bWJlck9m
R0NNYXJrZXJzOwotdW5zaWduZWQgb3BhcXVlUm9vdE1lcmdlVGhyZXNob2xkOwotCi0jaWYgRU5B
QkxFKFJVTl9USU1FX0hFVVJJU1RJQ1MpCi1zdGF0aWMgYm9vbCBwYXJzZShjb25zdCBjaGFyKiBz
dHJpbmcsIGludDMyX3QmIHZhbHVlKQotewotICAgIHJldHVybiBzc2NhbmYoc3RyaW5nLCAiJWQi
LCAmdmFsdWUpID09IDE7Ci19Ci0KLXN0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmlu
ZywgdW5zaWduZWQmIHZhbHVlKQotewotICAgIHJldHVybiBzc2NhbmYoc3RyaW5nLCAiJXUiLCAm
dmFsdWUpID09IDE7Ci19Ci0KLXN0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywg
ZG91YmxlJiB2YWx1ZSkKLXsKLSAgICByZXR1cm4gc3NjYW5mKHN0cmluZywgIiVsZiIsICZ2YWx1
ZSkgPT0gMTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLXZvaWQgc2V0
SGV1cmlzdGljKFQmIHZhcmlhYmxlLCBjb25zdCBjaGFyKiBuYW1lLCBVIHZhbHVlKQotewotICAg
IGNvbnN0IGNoYXIqIHN0cmluZ1ZhbHVlID0gZ2V0ZW52KG5hbWUpOwotICAgIGlmICghc3RyaW5n
VmFsdWUpIHsKLSAgICAgICAgdmFyaWFibGUgPSBzYWZlQ2FzdDxUPih2YWx1ZSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKHBhcnNlKHN0cmluZ1ZhbHVlLCB2YXJpYWJs
ZSkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBmcHJpbnRmKHN0ZGVyciwgIldBUk5JTkc6
IGZhaWxlZCB0byBwYXJzZSAlcz0lc1xuIiwgbmFtZSwgc3RyaW5nVmFsdWUpOwotICAgIHZhcmlh
YmxlID0gc2FmZUNhc3Q8VD4odmFsdWUpOwotfQotCi0jZGVmaW5lIFNFVCh2YXJpYWJsZSwgdmFs
dWUpIHNldEhldXJpc3RpYyh2YXJpYWJsZSwgIkpTQ18iICN2YXJpYWJsZSwgdmFsdWUpCi0jZWxz
ZQotI2RlZmluZSBTRVQodmFyaWFibGUsIHZhbHVlKSB2YXJpYWJsZSA9IHZhbHVlCi0jZW5kaWYK
LQotdm9pZCBpbml0aWFsaXplSGV1cmlzdGljcygpCi17Ci0gICAgLy8gRklYTUU6IE11c3QgcmV2
aXNpdCB0aGVzZSBoZXVyaXN0aWNzISBUaGUgREZHLCBiZWluZyBhbiBvcHRpbWl6aW5nIGNvbXBp
bGVyLCBtYXkKLSAgICAvLyB0YWtlIGEgbG9uZyB0aW1lIGZvciBwYXRob2xvZ2ljYWxseSBodWdl
IGNvZGUgYmxvY2tzLiBUaGUgYmVzdCB3YXkgdG8gY29wZSB3aXRoCi0gICAgLy8gdGhpcyBpcyB0
byByZWZ1c2UgdG8gb3B0aW1pemUgdGhlbS4KLSAgICBTRVQobWF4aW11bUV2YWxPcHRpbWl6YXRp
b25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50LCAgICAgICAgICAgICAgICAgc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKLSAgICBTRVQobWF4aW11bVByb2dyYW1PcHRpbWl6
YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50LCAgICAgICAgICAgICAgc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKLSAgICBTRVQobWF4aW11bUZ1bmN0aW9uRm9yQ2Fs
bE9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQsICAgICAgc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKLSAgICBTRVQobWF4aW11bUZ1bmN0aW9uRm9yQ29u
c3RydWN0T3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCwgc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKLSAgICAKLSAgICBTRVQobWF4aW11bUZ1bmN0aW9u
Rm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQsIDE1MCk7Ci0gICAgU0VUKG1h
eGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQs
IDgwKTsKLSAgICAKLSAgICBTRVQobWF4aW11bUlubGluaW5nRGVwdGgsIDUpOwotCi0gICAgU0VU
KGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAsICAgICAtMTAwMCk7
Ci0gICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVw
LCAtNTAwMCk7Ci0gICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFu
eXRpbWVTb29uLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSk7Ci0gICAgU0VU
KGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbiwgICAgICAgICAgICAtMTAwMCk7
Ci0gICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplTmV4dEludm9jYXRpb24s
ICAwKTsKLQotICAgIFNFVChleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yTG9vcCwgICAxKTsK
LSAgICBTRVQoZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvclJldHVybiwgMTUpOwotCi0gICAg
U0VUKGRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW8sIDYpOwotICAgIAotICAgIFNF
VChsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZCwgMTAwKTsKLSAgICBTRVQoY291bGRUYWtl
U2xvd0Nhc2VUaHJlc2hvbGQsICAgIDEwKTsgLy8gU2hvdWxkbid0IGJlIHplcm8gYmVjYXVzZSBz
b21lIG9wcyB3aWxsIHNwdXJpb3VzbHkgdGFrZSBzbG93IGNhc2UsIGZvciBleGFtcGxlIGZvciBs
aW5raW5nIG9yIGNhY2hpbmcuCi0KLSAgICBTRVQobGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNl
LCAgICAgICAgMjApOwotICAgIFNFVChsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2VGb3JMb29w
LCAxKTsKLQotICAgIFNFVChyZW9wdGltaXphdGlvblJldHJ5Q291bnRlclN0ZXAsIDEpOwotCi0g
ICAgU0VUKG1pbmltdW1PcHRpbWl6YXRpb25EZWxheSwgICAxKTsKLSAgICBTRVQobWF4aW11bU9w
dGltaXphdGlvbkRlbGF5LCAgIDUpOwotICAgIFNFVChkZXNpcmVkUHJvZmlsZUxpdmVuZXNzUmF0
ZSwgMC43NSk7Ci0gICAgU0VUKGRlc2lyZWRQcm9maWxlRnVsbG5lc3NSYXRlLCAwLjM1KTsKLSAg
ICAKLSAgICBTRVQobWluaW11bU51bWJlck9mU2NhbnNCZXR3ZWVuUmViYWxhbmNlLCAxMDAwMCk7
Ci0gICAgU0VUKGdjTWFya1N0YWNrU2VnbWVudFNpemUsICAgICAgICAgICAgICAgcGFnZVNpemUo
KSk7Ci0gICAgU0VUKG1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVwLCAgICAgICAgICAgMTApOwot
ICAgIFNFVChtYXhpbXVtTnVtYmVyT2ZTaGFyZWRTZWdtZW50cywgICAgICAgIDMpOwotICAgIFNF
VChzaGFyZWRTdGFja1dha2V1cFRocmVzaG9sZCwgICAgICAgICAgIDEpOwotICAgIFNFVChvcGFx
dWVSb290TWVyZ2VUaHJlc2hvbGQsICAgICAgICAgICAgIDEwMDApOwotCi0gICAgaW50IGNwdXNU
b1VzZSA9IDE7Ci0jaWYgT1MoREFSV0lOKSAmJiBFTkFCTEUoUEFSQUxMRUxfR0MpCi0gICAgaW50
IG5hbWVbMl07Ci0gICAgc2l6ZV90IHZhbHVlU2l6ZSA9IHNpemVvZihjcHVzVG9Vc2UpOwotICAg
IG5hbWVbMF0gPSBDVExfSFc7Ci0gICAgbmFtZVsxXSA9IEhXX0FWQUlMQ1BVOwotICAgIHN5c2N0
bChuYW1lLCAyLCAmY3B1c1RvVXNlLCAmdmFsdWVTaXplLCAwLCAwKTsKLSNlbmRpZgotICAgIC8v
IFdlIGRvbid0IHNjYWxlIHNvIHdlbGwgYmV5b25kIDQuCi0gICAgaWYgKGNwdXNUb1VzZSA+IDQp
Ci0gICAgICAgIGNwdXNUb1VzZSA9IDQ7Ci0gICAgLy8gQmUgcGFyYW5vaWQsIGl0IGlzIHRoZSBP
UyB3ZSdyZSBkZWFsaW5nIHdpdGgsIGFmdGVyIGFsbC4KLSAgICBpZiAoY3B1c1RvVXNlIDwgMSkK
LSAgICAgICAgY3B1c1RvVXNlID0gMTsKLSAgICAKLSAgICBTRVQobnVtYmVyT2ZHQ01hcmtlcnMs
IGNwdXNUb1VzZSk7Ci0KLSAgICBBU1NFUlQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9w
dGltaXplQW55dGltZVNvb24gPD0gZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRl
ckxvbmdXYXJtVXApOwotICAgIEFTU0VSVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6
ZUFmdGVyTG9uZ1dhcm1VcCA8PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVy
V2FybVVwKTsKLSAgICBBU1NFUlQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRl
cldhcm1VcCA8PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZVNvb24pOwotICAgIEFT
U0VSVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwIDwgMCk7Ci0g
ICAgQVNTRVJUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbiA8PSBleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZU5leHRJbnZvY2F0aW9uKTsKLSAgICAKLSAgICAvLyBD
b21wdXRlIHRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSByZW9wdGltaXphdGlvbiByZXRyeSBjb3Vu
dGVyLiBUaGlzIGlzIHNpbXBseQotICAgIC8vIHRoZSBsYXJnZXN0IHZhbHVlIGF0IHdoaWNoIHdl
IGRvbid0IG92ZXJmbG93IHRoZSBleGVjdXRlIGNvdW50ZXIsIHdoZW4gdXNpbmcgaXQKLSAgICAv
LyB0byBsZWZ0LXNoaWZ0IHRoZSBleGVjdXRpb24gY291bnRlciBieSB0aGlzIGFtb3VudC4gQ3Vy
cmVudGx5IHRoZSB2YWx1ZSBlbmRzCi0gICAgLy8gdXAgYmVpbmcgMTgsIHNvIHRoaXMgbG9vcCBp
cyBub3Qgc28gdGVycmlibGU7IGl0IHByb2JhYmx5IHRha2VzIHVwIH4xMDAgY3ljbGVzCi0gICAg
Ly8gdG90YWwgb24gYSAzMi1iaXQgcHJvY2Vzc29yLgotICAgIHJlb3B0aW1pemF0aW9uUmV0cnlD
b3VudGVyTWF4ID0gMDsKLSAgICB3aGlsZSAoKHN0YXRpY19jYXN0PGludDY0X3Q+KGV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKSA8PCAocmVvcHRpbWl6YXRp
b25SZXRyeUNvdW50ZXJNYXggKyAxKSkgPj0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RkOjpudW1l
cmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpKQotICAgICAgICByZW9wdGltaXphdGlvblJldHJ5
Q291bnRlck1heCsrOwotICAgIAotICAgIEFTU0VSVCgoc3RhdGljX2Nhc3Q8aW50NjRfdD4oZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApIDw8IHJlb3B0aW1p
emF0aW9uUmV0cnlDb3VudGVyTWF4KSA8IDApOwotICAgIEFTU0VSVCgoc3RhdGljX2Nhc3Q8aW50
NjRfdD4oZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApIDw8
IHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4KSA+PSBzdGF0aWNfY2FzdDxpbnQ2NF90Pihz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSkpOwotfQotCi19IH0gLy8gbmFtZXNw
YWNlIEpTQzo6SGV1cmlzdGljcwotCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0hldXJpc3RpY3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hl
dXJpc3RpY3MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE0ODU5ZmE4ZGNhMTJh
Y2MxZGQzMDA1YmNhNzliYTI4MzhiNzBlMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNz
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgSGV1cmlzdGljc19oCi0jZGVmaW5lIEhl
dXJpc3RpY3NfaAotCi0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgSGV1cmlzdGljcyB7Ci0KLWV4dGVybiB1bnNpZ25lZCBtYXhpbXVtRXZhbE9wdGltaXph
dGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7Ci1leHRlcm4gdW5zaWduZWQgbWF4aW11bVBy
b2dyYW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OwotZXh0ZXJuIHVuc2ln
bmVkIG1heGltdW1GdW5jdGlvbkZvckNhbGxPcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlv
bkNvdW50OwotZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdE9wdGlt
aXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7Ci0KLWV4dGVybiB1bnNpZ25lZCBtYXhp
bXVtRnVuY3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKLWV4dGVy
biB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJbnN0
cnVjdGlvbkNvdW50OwotCi1leHRlcm4gdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7IC8v
IERlcHRoIG9mIGlubGluZSBzdGFjaywgc28gMSA9IG5vIGlubGluaW5nLCAyID0gb25lIGxldmVs
LCBldGMuCi0KLWV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXpl
QWZ0ZXJXYXJtVXA7Ci1leHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRp
bWl6ZUFmdGVyTG9uZ1dhcm1VcDsKLWV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1
ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uOwotZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291
bnRlclZhbHVlRm9yT3B0aW1pemVTb29uOwotZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRl
clZhbHVlRm9yT3B0aW1pemVOZXh0SW52b2NhdGlvbjsKLQotZXh0ZXJuIGludDMyX3QgZXhlY3V0
aW9uQ291bnRlckluY3JlbWVudEZvckxvb3A7Ci1leHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3Vu
dGVySW5jcmVtZW50Rm9yUmV0dXJuOwotCi1leHRlcm4gdW5zaWduZWQgZGVzaXJlZFNwZWN1bGF0
aXZlU3VjY2Vzc0ZhaWxSYXRpbzsKLQotZXh0ZXJuIHVuc2lnbmVkIGxpa2VseVRvVGFrZVNsb3dD
YXNlVGhyZXNob2xkOwotZXh0ZXJuIHVuc2lnbmVkIGNvdWxkVGFrZVNsb3dDYXNlVGhyZXNob2xk
OwotCi1leHRlcm4gdW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlOwotZXh0ZXJu
IHVuc2lnbmVkIGxhcmdlRmFpbENvdW50VGhyZXNob2xkQmFzZUZvckxvb3A7Ci0KLWV4dGVybiB1
bnNpZ25lZCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1heDsKLWV4dGVybiB1bnNpZ25lZCBy
ZW9wdGltaXphdGlvblJldHJ5Q291bnRlclN0ZXA7Ci0KLWV4dGVybiB1bnNpZ25lZCBtaW5pbXVt
T3B0aW1pemF0aW9uRGVsYXk7Ci1leHRlcm4gdW5zaWduZWQgbWF4aW11bU9wdGltaXphdGlvbkRl
bGF5OwotZXh0ZXJuIGRvdWJsZSBkZXNpcmVkUHJvZmlsZUxpdmVuZXNzUmF0ZTsKLWV4dGVybiBk
b3VibGUgZGVzaXJlZFByb2ZpbGVGdWxsbmVzc1JhdGU7Ci0KLWV4dGVybiB1bnNpZ25lZCBtaW5p
bXVtTnVtYmVyT2ZTY2Fuc0JldHdlZW5SZWJhbGFuY2U7Ci1leHRlcm4gdW5zaWduZWQgZ2NNYXJr
U3RhY2tTZWdtZW50U2l6ZTsKLWV4dGVybiB1bnNpZ25lZCBtaW5pbXVtTnVtYmVyT2ZDZWxsc1Rv
S2VlcDsKLWV4dGVybiB1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZTaGFyZWRTZWdtZW50czsKLWV4
dGVybiB1bnNpZ25lZCBzaGFyZWRTdGFja1dha2V1cFRocmVzaG9sZDsKLWV4dGVybiB1bnNpZ25l
ZCBudW1iZXJPZkdDTWFya2VyczsKLWV4dGVybiB1bnNpZ25lZCBvcGFxdWVSb290TWVyZ2VUaHJl
c2hvbGQ7Ci0KLXZvaWQgaW5pdGlhbGl6ZUhldXJpc3RpY3MoKTsKLQotfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkhldXJpc3RpY3MKLQotI2VuZGlmIC8vIEhldXJpc3RpY3NfaAotCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCmlu
ZGV4IDNhMzcxZjk1MGQzY2UzYTA3NTNkODBkZjhiMmI5NDM1NmMzZjVkZDguLjY5ODk1NzJiZThi
OWJhNDljMTAwNTY0ZGUxZjg2ODIyNjEyZjUzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCkBAIC0zMSw3ICszMSw3
IEBACiAKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSGVhcC5o
IgotI2luY2x1ZGUgIkhldXJpc3RpY3MuaCIKKyNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVk
ZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTRGF0ZU1hdGguaCIKICNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgpAQCAtNTMsNyArNTMsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplVGhy
ZWFkaW5nT25jZSgpCiB7CiAgICAgV1RGOjpkb3VibGVfY29udmVyc2lvbjo6aW5pdGlhbGl6ZSgp
OwogICAgIFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwotICAgIEhldXJpc3RpY3M6OmluaXRp
YWxpemVIZXVyaXN0aWNzKCk7CisgICAgT3B0aW9uczo6aW5pdGlhbGl6ZU9wdGlvbnMoKTsKICNp
ZiBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCiAgICAgV3JpdGVCYXJyaWVyQ291bnRl
cnM6OmluaXRpYWxpemUoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMDBkYjljN2Y2YjJiNWYxNGQwNWE3ZjhiNGNmZTA4ZjA5
MTJhMmJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9ucy5jcHAKQEAgLTAsMCArMSwyMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk9wdGlv
bnMuaCIKKworI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx3dGYvUGFnZUJsb2NrLmg+CisK
KyNpZiBPUyhEQVJXSU4pICYmIEVOQUJMRShQQVJBTExFTF9HQykKKyNpbmNsdWRlIDxzeXMvc3lz
Y3RsLmg+CisjZW5kaWYKKworLy8gU2V0IHRvIDEgdG8gY29udHJvbCB0aGUgaGV1cmlzdGljcyB1
c2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCisjZGVmaW5lIEVOQUJMRV9SVU5fVElNRV9IRVVS
SVNUSUNTIDAKKworI2lmIEVOQUJMRShSVU5fVElNRV9IRVVSSVNUSUNTKQorI2luY2x1ZGUgPHN0
ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgorI2VuZGlmCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgT3B0aW9ucyB7CisKK3Vuc2ln
bmVkIG1heGltdW1FdmFsT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKK3Vu
c2lnbmVkIG1heGltdW1Qcm9ncmFtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3Vu
dDsKK3Vuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNhbGxPcHRpbWl6YXRpb25DYW5kaWRhdGVJ
bnN0cnVjdGlvbkNvdW50OwordW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0T3B0
aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKKwordW5zaWduZWQgbWF4aW11bUZ1
bmN0aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7Cit1bnNpZ25lZCBt
YXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50
OworCit1bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsKKworaW50MzJfdCBleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOworaW50MzJfdCBleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKK2ludDMyX3QgZXhlY3V0aW9uQ291
bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247CitpbnQzMl90IGV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvck9wdGltaXplU29vbjsKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9yT3B0aW1pemVOZXh0SW52b2NhdGlvbjsKKworaW50MzJfdCBleGVjdXRpb25Db3VudGVySW5j
cmVtZW50Rm9yTG9vcDsKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvclJldHVy
bjsKKwordW5zaWduZWQgZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbzsKKwordW5z
aWduZWQgbGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7Cit1bnNpZ25lZCBjb3VsZFRha2VT
bG93Q2FzZVRocmVzaG9sZDsKKwordW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNl
OwordW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlRm9yTG9vcDsKKwordW5zaWdu
ZWQgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXg7Cit1bnNpZ25lZCByZW9wdGltaXphdGlv
blJldHJ5Q291bnRlclN0ZXA7CisKK3Vuc2lnbmVkIG1pbmltdW1PcHRpbWl6YXRpb25EZWxheTsK
K3Vuc2lnbmVkIG1heGltdW1PcHRpbWl6YXRpb25EZWxheTsKK2RvdWJsZSBkZXNpcmVkUHJvZmls
ZUxpdmVuZXNzUmF0ZTsKK2RvdWJsZSBkZXNpcmVkUHJvZmlsZUZ1bGxuZXNzUmF0ZTsKKwordW5z
aWduZWQgbWluaW11bU51bWJlck9mU2NhbnNCZXR3ZWVuUmViYWxhbmNlOwordW5zaWduZWQgZ2NN
YXJrU3RhY2tTZWdtZW50U2l6ZTsKK3Vuc2lnbmVkIG1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVw
OwordW5zaWduZWQgbWF4aW11bU51bWJlck9mU2hhcmVkU2VnbWVudHM7Cit1bnNpZ25lZCBzaGFy
ZWRTdGFja1dha2V1cFRocmVzaG9sZDsKK3Vuc2lnbmVkIG51bWJlck9mR0NNYXJrZXJzOwordW5z
aWduZWQgb3BhcXVlUm9vdE1lcmdlVGhyZXNob2xkOworCisjaWYgRU5BQkxFKFJVTl9USU1FX0hF
VVJJU1RJQ1MpCitzdGF0aWMgYm9vbCBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcsIGludDMyX3Qm
IHZhbHVlKQoreworICAgIHJldHVybiBzc2NhbmYoc3RyaW5nLCAiJWQiLCAmdmFsdWUpID09IDE7
Cit9CisKK3N0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywgdW5zaWduZWQmIHZh
bHVlKQoreworICAgIHJldHVybiBzc2NhbmYoc3RyaW5nLCAiJXUiLCAmdmFsdWUpID09IDE7Cit9
CisKK3N0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywgZG91YmxlJiB2YWx1ZSkK
K3sKKyAgICByZXR1cm4gc3NjYW5mKHN0cmluZywgIiVsZiIsICZ2YWx1ZSkgPT0gMTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK3ZvaWQgc2V0SGV1cmlzdGljKFQmIHZh
cmlhYmxlLCBjb25zdCBjaGFyKiBuYW1lLCBVIHZhbHVlKQoreworICAgIGNvbnN0IGNoYXIqIHN0
cmluZ1ZhbHVlID0gZ2V0ZW52KG5hbWUpOworICAgIGlmICghc3RyaW5nVmFsdWUpIHsKKyAgICAg
ICAgdmFyaWFibGUgPSBzYWZlQ2FzdDxUPih2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgCisgICAgaWYgKHBhcnNlKHN0cmluZ1ZhbHVlLCB2YXJpYWJsZSkpCisgICAgICAgIHJl
dHVybjsKKyAgICAKKyAgICBmcHJpbnRmKHN0ZGVyciwgIldBUk5JTkc6IGZhaWxlZCB0byBwYXJz
ZSAlcz0lc1xuIiwgbmFtZSwgc3RyaW5nVmFsdWUpOworICAgIHZhcmlhYmxlID0gc2FmZUNhc3Q8
VD4odmFsdWUpOworfQorCisjZGVmaW5lIFNFVCh2YXJpYWJsZSwgdmFsdWUpIHNldEhldXJpc3Rp
Yyh2YXJpYWJsZSwgIkpTQ18iICN2YXJpYWJsZSwgdmFsdWUpCisjZWxzZQorI2RlZmluZSBTRVQo
dmFyaWFibGUsIHZhbHVlKSB2YXJpYWJsZSA9IHZhbHVlCisjZW5kaWYKKwordm9pZCBpbml0aWFs
aXplT3B0aW9ucygpCit7CisgICAgLy8gRklYTUU6IE11c3QgcmV2aXNpdCB0aGVzZSBoZXVyaXN0
aWNzISBUaGUgREZHLCBiZWluZyBhbiBvcHRpbWl6aW5nIGNvbXBpbGVyLCBtYXkKKyAgICAvLyB0
YWtlIGEgbG9uZyB0aW1lIGZvciBwYXRob2xvZ2ljYWxseSBodWdlIGNvZGUgYmxvY2tzLiBUaGUg
YmVzdCB3YXkgdG8gY29wZSB3aXRoCisgICAgLy8gdGhpcyBpcyB0byByZWZ1c2UgdG8gb3B0aW1p
emUgdGhlbS4KKyAgICBTRVQobWF4aW11bUV2YWxPcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVj
dGlvbkNvdW50LCAgICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpKTsKKyAgICBTRVQobWF4aW11bVByb2dyYW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0
cnVjdGlvbkNvdW50LCAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpKTsKKyAgICBTRVQobWF4aW11bUZ1bmN0aW9uRm9yQ2FsbE9wdGltaXphdGlvbkNhbmRp
ZGF0ZUluc3RydWN0aW9uQ291bnQsICAgICAgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpKTsKKyAgICBTRVQobWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0T3B0aW1pemF0aW9u
Q2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpKTsKKyAgICAKKyAgICBTRVQobWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRp
ZGF0ZUluc3RydWN0aW9uQ291bnQsIDE1MCk7CisgICAgU0VUKG1heGltdW1GdW5jdGlvbkZvckNv
bnN0cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQsIDgwKTsKKyAgICAKKyAgICBT
RVQobWF4aW11bUlubGluaW5nRGVwdGgsIDUpOworCisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAsICAgICAtMTAwMCk7CisgICAgU0VUKGV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwLCAtNTAwMCk7CisgICAgU0VU
KGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uLCBzdGQ6Om51
bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSk7CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvck9wdGltaXplU29vbiwgICAgICAgICAgICAtMTAwMCk7CisgICAgU0VUKGV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvck9wdGltaXplTmV4dEludm9jYXRpb24sICAwKTsKKworICAgIFNFVChl
eGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yTG9vcCwgICAxKTsKKyAgICBTRVQoZXhlY3V0aW9u
Q291bnRlckluY3JlbWVudEZvclJldHVybiwgMTUpOworCisgICAgU0VUKGRlc2lyZWRTcGVjdWxh
dGl2ZVN1Y2Nlc3NGYWlsUmF0aW8sIDYpOworICAgIAorICAgIFNFVChsaWtlbHlUb1Rha2VTbG93
Q2FzZVRocmVzaG9sZCwgMTAwKTsKKyAgICBTRVQoY291bGRUYWtlU2xvd0Nhc2VUaHJlc2hvbGQs
ICAgIDEwKTsgLy8gU2hvdWxkbid0IGJlIHplcm8gYmVjYXVzZSBzb21lIG9wcyB3aWxsIHNwdXJp
b3VzbHkgdGFrZSBzbG93IGNhc2UsIGZvciBleGFtcGxlIGZvciBsaW5raW5nIG9yIGNhY2hpbmcu
CisKKyAgICBTRVQobGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlLCAgICAgICAgMjApOworICAg
IFNFVChsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2VGb3JMb29wLCAxKTsKKworICAgIFNFVChy
ZW9wdGltaXphdGlvblJldHJ5Q291bnRlclN0ZXAsIDEpOworCisgICAgU0VUKG1pbmltdW1PcHRp
bWl6YXRpb25EZWxheSwgICAxKTsKKyAgICBTRVQobWF4aW11bU9wdGltaXphdGlvbkRlbGF5LCAg
IDUpOworICAgIFNFVChkZXNpcmVkUHJvZmlsZUxpdmVuZXNzUmF0ZSwgMC43NSk7CisgICAgU0VU
KGRlc2lyZWRQcm9maWxlRnVsbG5lc3NSYXRlLCAwLjM1KTsKKyAgICAKKyAgICBTRVQobWluaW11
bU51bWJlck9mU2NhbnNCZXR3ZWVuUmViYWxhbmNlLCAxMDAwMCk7CisgICAgU0VUKGdjTWFya1N0
YWNrU2VnbWVudFNpemUsICAgICAgICAgICAgICAgcGFnZVNpemUoKSk7CisgICAgU0VUKG1pbmlt
dW1OdW1iZXJPZkNlbGxzVG9LZWVwLCAgICAgICAgICAgMTApOworICAgIFNFVChtYXhpbXVtTnVt
YmVyT2ZTaGFyZWRTZWdtZW50cywgICAgICAgIDMpOworICAgIFNFVChzaGFyZWRTdGFja1dha2V1
cFRocmVzaG9sZCwgICAgICAgICAgIDEpOworICAgIFNFVChvcGFxdWVSb290TWVyZ2VUaHJlc2hv
bGQsICAgICAgICAgICAgIDEwMDApOworCisgICAgaW50IGNwdXNUb1VzZSA9IDE7CisjaWYgT1Mo
REFSV0lOKSAmJiBFTkFCTEUoUEFSQUxMRUxfR0MpCisgICAgaW50IG5hbWVbMl07CisgICAgc2l6
ZV90IHZhbHVlU2l6ZSA9IHNpemVvZihjcHVzVG9Vc2UpOworICAgIG5hbWVbMF0gPSBDVExfSFc7
CisgICAgbmFtZVsxXSA9IEhXX0FWQUlMQ1BVOworICAgIHN5c2N0bChuYW1lLCAyLCAmY3B1c1Rv
VXNlLCAmdmFsdWVTaXplLCAwLCAwKTsKKyNlbmRpZgorICAgIC8vIFdlIGRvbid0IHNjYWxlIHNv
IHdlbGwgYmV5b25kIDQuCisgICAgaWYgKGNwdXNUb1VzZSA+IDQpCisgICAgICAgIGNwdXNUb1Vz
ZSA9IDQ7CisgICAgLy8gQmUgcGFyYW5vaWQsIGl0IGlzIHRoZSBPUyB3ZSdyZSBkZWFsaW5nIHdp
dGgsIGFmdGVyIGFsbC4KKyAgICBpZiAoY3B1c1RvVXNlIDwgMSkKKyAgICAgICAgY3B1c1RvVXNl
ID0gMTsKKyAgICAKKyAgICBTRVQobnVtYmVyT2ZHQ01hcmtlcnMsIGNwdXNUb1VzZSk7CisKKyAg
ICBBU1NFUlQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb24g
PD0gZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApOworICAg
IEFTU0VSVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCA8
PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwKTsKKyAgICBBU1NF
UlQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCA8PSBleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZVNvb24pOworICAgIEFTU0VSVChleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwIDwgMCk7CisgICAgQVNTRVJUKGV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbiA8PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JP
cHRpbWl6ZU5leHRJbnZvY2F0aW9uKTsKKyAgICAKKyAgICAvLyBDb21wdXRlIHRoZSBtYXhpbXVt
IHZhbHVlIG9mIHRoZSByZW9wdGltaXphdGlvbiByZXRyeSBjb3VudGVyLiBUaGlzIGlzIHNpbXBs
eQorICAgIC8vIHRoZSBsYXJnZXN0IHZhbHVlIGF0IHdoaWNoIHdlIGRvbid0IG92ZXJmbG93IHRo
ZSBleGVjdXRlIGNvdW50ZXIsIHdoZW4gdXNpbmcgaXQKKyAgICAvLyB0byBsZWZ0LXNoaWZ0IHRo
ZSBleGVjdXRpb24gY291bnRlciBieSB0aGlzIGFtb3VudC4gQ3VycmVudGx5IHRoZSB2YWx1ZSBl
bmRzCisgICAgLy8gdXAgYmVpbmcgMTgsIHNvIHRoaXMgbG9vcCBpcyBub3Qgc28gdGVycmlibGU7
IGl0IHByb2JhYmx5IHRha2VzIHVwIH4xMDAgY3ljbGVzCisgICAgLy8gdG90YWwgb24gYSAzMi1i
aXQgcHJvY2Vzc29yLgorICAgIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4ID0gMDsKKyAg
ICB3aGlsZSAoKHN0YXRpY19jYXN0PGludDY0X3Q+KGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9w
dGltaXplQWZ0ZXJMb25nV2FybVVwKSA8PCAocmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXgg
KyAxKSkgPj0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90
Pjo6bWluKCkpKQorICAgICAgICByZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1heCsrOworICAg
IAorICAgIEFTU0VSVCgoc3RhdGljX2Nhc3Q8aW50NjRfdD4oZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApIDw8IHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVy
TWF4KSA8IDApOworICAgIEFTU0VSVCgoc3RhdGljX2Nhc3Q8aW50NjRfdD4oZXhlY3V0aW9uQ291
bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApIDw8IHJlb3B0aW1pemF0aW9uUmV0
cnlDb3VudGVyTWF4KSA+PSBzdGF0aWNfY2FzdDxpbnQ2NF90PihzdGQ6Om51bWVyaWNfbGltaXRz
PGludDMyX3Q+OjptaW4oKSkpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6T3B0aW9ucwor
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDli
MzkyMTI5MzI4MmMxMjViOTU3ZjEyYmI0ZWI1YmE1Y2ZlMWFjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCkBAIC0wLDAgKzEsODEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBP
cHRpb25zX2gKKyNkZWZpbmUgT3B0aW9uc19oCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBPcHRpb25zIHsKKworZXh0ZXJuIHVuc2lnbmVkIG1heGlt
dW1FdmFsT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKK2V4dGVybiB1bnNp
Z25lZCBtYXhpbXVtUHJvZ3JhbU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7
CitleHRlcm4gdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ2FsbE9wdGltaXphdGlvbkNhbmRp
ZGF0ZUluc3RydWN0aW9uQ291bnQ7CitleHRlcm4gdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9y
Q29uc3RydWN0T3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKKworZXh0ZXJu
IHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlv
bkNvdW50OworZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGlu
ZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CisKK2V4dGVybiB1bnNpZ25lZCBtYXhpbXVtSW5s
aW5pbmdEZXB0aDsgLy8gRGVwdGggb2YgaW5saW5lIHN0YWNrLCBzbyAxID0gbm8gaW5saW5pbmcs
IDIgPSBvbmUgbGV2ZWwsIGV0Yy4KKworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZh
bHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcDsKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50
ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwOworZXh0ZXJuIGludDMyX3QgZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247CitleHRlcm4gaW50MzJf
dCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZVNvb247CitleHRlcm4gaW50MzJfdCBl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZU5leHRJbnZvY2F0aW9uOworCitleHRlcm4g
aW50MzJfdCBleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yTG9vcDsKK2V4dGVybiBpbnQzMl90
IGV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JSZXR1cm47CisKK2V4dGVybiB1bnNpZ25lZCBk
ZXNpcmVkU3BlY3VsYXRpdmVTdWNjZXNzRmFpbFJhdGlvOworCitleHRlcm4gdW5zaWduZWQgbGlr
ZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CitleHRlcm4gdW5zaWduZWQgY291bGRUYWtlU2xv
d0Nhc2VUaHJlc2hvbGQ7CisKK2V4dGVybiB1bnNpZ25lZCBsYXJnZUZhaWxDb3VudFRocmVzaG9s
ZEJhc2U7CitleHRlcm4gdW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlRm9yTG9v
cDsKKworZXh0ZXJuIHVuc2lnbmVkIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4OworZXh0
ZXJuIHVuc2lnbmVkIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyU3RlcDsKKworZXh0ZXJuIHVu
c2lnbmVkIG1pbmltdW1PcHRpbWl6YXRpb25EZWxheTsKK2V4dGVybiB1bnNpZ25lZCBtYXhpbXVt
T3B0aW1pemF0aW9uRGVsYXk7CitleHRlcm4gZG91YmxlIGRlc2lyZWRQcm9maWxlTGl2ZW5lc3NS
YXRlOworZXh0ZXJuIGRvdWJsZSBkZXNpcmVkUHJvZmlsZUZ1bGxuZXNzUmF0ZTsKKworZXh0ZXJu
IHVuc2lnbmVkIG1pbmltdW1OdW1iZXJPZlNjYW5zQmV0d2VlblJlYmFsYW5jZTsKK2V4dGVybiB1
bnNpZ25lZCBnY01hcmtTdGFja1NlZ21lbnRTaXplOworZXh0ZXJuIHVuc2lnbmVkIG1pbmltdW1O
dW1iZXJPZkNlbGxzVG9LZWVwOworZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1OdW1iZXJPZlNoYXJl
ZFNlZ21lbnRzOworZXh0ZXJuIHVuc2lnbmVkIHNoYXJlZFN0YWNrV2FrZXVwVGhyZXNob2xkOwor
ZXh0ZXJuIHVuc2lnbmVkIG51bWJlck9mR0NNYXJrZXJzOworZXh0ZXJuIHVuc2lnbmVkIG9wYXF1
ZVJvb3RNZXJnZVRocmVzaG9sZDsKKwordm9pZCBpbml0aWFsaXplT3B0aW9ucygpOworCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6T3B0aW9ucworCisjZW5kaWYgLy8gT3B0aW9uc19oCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116194</attachid>
            <date>2011-11-22 03:25:51 -0800</date>
            <delta_ts>2011-11-22 03:53:28 -0800</delta_ts>
            <desc>Further refactor of Options.{h,cpp}</desc>
            <filename>macrology.patch</filename>
            <type>text/plain</type>
            <size>11808</size>
            <attacher name="Andy Wingo">wingo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDJmMmEwMjcuLmU1ZDIxY2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE3IEBACiAyMDExLTExLTIyICBBbmR5IFdpbmdvICA8
d2luZ29AaWdhbGlhLmNvbT4KIAorICAgICAgICBVc2UgbW9yZSBtYWNyb2xvZ3kgaW4gSlNDOjpP
cHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
Mjg4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
cnVudGltZS9PcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6ZU9w
dGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOiBVc2UgbWFjcm9zIHRvIGVuc3Vy
ZSB0aGF0IGFsbCBoZXVyaXN0aWNzIGFyZQorICAgICAgICBkZWNsYXJlZCBhbmQgaGF2ZSBpbml0
aWFsaXplcnMuCisKKzIwMTEtMTEtMjIgIEFuZHkgV2luZ28gIDx3aW5nb0BpZ2FsaWEuY29tPgor
CiAgICAgICAgIFJlbmFtZSBKU0M6OkhldXJpc3RpY3MgdG8gSlNDOjpPcHRpb25zCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjg4OQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCmluZGV4IGEwMGRiOWMuLjVmNmM5YjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCkBAIC00NCw0OCAr
NDQsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIE9wdGlvbnMgewogCi11bnNpZ25l
ZCBtYXhpbXVtRXZhbE9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7Ci11bnNp
Z25lZCBtYXhpbXVtUHJvZ3JhbU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7
Ci11bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDYWxsT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5z
dHJ1Y3Rpb25Db3VudDsKLXVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdE9wdGlt
aXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7Ci0KLXVuc2lnbmVkIG1heGltdW1GdW5j
dGlvbkZvckNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OwotdW5zaWduZWQgbWF4
aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsK
LQotdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7Ci0KLWludDMyX3QgZXhlY3V0aW9uQ291
bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcDsKLWludDMyX3QgZXhlY3V0aW9uQ291bnRl
clZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXA7Ci1pbnQzMl90IGV4ZWN1dGlvbkNvdW50
ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uOwotaW50MzJfdCBleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JPcHRpbWl6ZVNvb247Ci1pbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ck9wdGltaXplTmV4dEludm9jYXRpb247Ci0KLWludDMyX3QgZXhlY3V0aW9uQ291bnRlckluY3Jl
bWVudEZvckxvb3A7Ci1pbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JSZXR1cm47
Ci0KLXVuc2lnbmVkIGRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW87Ci0KLXVuc2ln
bmVkIGxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwotdW5zaWduZWQgY291bGRUYWtlU2xv
d0Nhc2VUaHJlc2hvbGQ7Ci0KLXVuc2lnbmVkIGxhcmdlRmFpbENvdW50VGhyZXNob2xkQmFzZTsK
LXVuc2lnbmVkIGxhcmdlRmFpbENvdW50VGhyZXNob2xkQmFzZUZvckxvb3A7Ci0KLXVuc2lnbmVk
IHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4OwotdW5zaWduZWQgcmVvcHRpbWl6YXRpb25S
ZXRyeUNvdW50ZXJTdGVwOwotCi11bnNpZ25lZCBtaW5pbXVtT3B0aW1pemF0aW9uRGVsYXk7Ci11
bnNpZ25lZCBtYXhpbXVtT3B0aW1pemF0aW9uRGVsYXk7Ci1kb3VibGUgZGVzaXJlZFByb2ZpbGVM
aXZlbmVzc1JhdGU7Ci1kb3VibGUgZGVzaXJlZFByb2ZpbGVGdWxsbmVzc1JhdGU7Ci0KLXVuc2ln
bmVkIG1pbmltdW1OdW1iZXJPZlNjYW5zQmV0d2VlblJlYmFsYW5jZTsKLXVuc2lnbmVkIGdjTWFy
a1N0YWNrU2VnbWVudFNpemU7Ci11bnNpZ25lZCBtaW5pbXVtTnVtYmVyT2ZDZWxsc1RvS2VlcDsK
LXVuc2lnbmVkIG1heGltdW1OdW1iZXJPZlNoYXJlZFNlZ21lbnRzOwotdW5zaWduZWQgc2hhcmVk
U3RhY2tXYWtldXBUaHJlc2hvbGQ7Ci11bnNpZ25lZCBudW1iZXJPZkdDTWFya2VyczsKLXVuc2ln
bmVkIG9wYXF1ZVJvb3RNZXJnZVRocmVzaG9sZDsKKyNkZWZpbmUgREVGSU5FKHR5cGUsIGNuYW1l
LCBkZWZhdWx0X3ZhbCkgdHlwZSBjbmFtZTsKK0ZPUl9FQUNIX0hFVVJJU1RJQyhERUZJTkUpCisj
dW5kZWYgREVGSU5FCiAKICNpZiBFTkFCTEUoUlVOX1RJTUVfSEVVUklTVElDUykKIHN0YXRpYyBi
b29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywgaW50MzJfdCYgdmFsdWUpCkBAIC0xMjYsNjcg
Kzg3LDM1IEBAIHZvaWQgc2V0SGV1cmlzdGljKFQmIHZhcmlhYmxlLCBjb25zdCBjaGFyKiBuYW1l
LCBVIHZhbHVlKQogCiB2b2lkIGluaXRpYWxpemVPcHRpb25zKCkKIHsKLSAgICAvLyBGSVhNRTog
TXVzdCByZXZpc2l0IHRoZXNlIGhldXJpc3RpY3MhIFRoZSBERkcsIGJlaW5nIGFuIG9wdGltaXpp
bmcgY29tcGlsZXIsIG1heQotICAgIC8vIHRha2UgYSBsb25nIHRpbWUgZm9yIHBhdGhvbG9naWNh
bGx5IGh1Z2UgY29kZSBibG9ja3MuIFRoZSBiZXN0IHdheSB0byBjb3BlIHdpdGgKLSAgICAvLyB0
aGlzIGlzIHRvIHJlZnVzZSB0byBvcHRpbWl6ZSB0aGVtLgotICAgIFNFVChtYXhpbXVtRXZhbE9w
dGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQsICAgICAgICAgICAgICAgICBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwotICAgIFNFVChtYXhpbXVtUHJvZ3Jh
bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQsICAgICAgICAgICAgICBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwotICAgIFNFVChtYXhpbXVtRnVuY3Rp
b25Gb3JDYWxsT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCwgICAgICBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwotICAgIFNFVChtYXhpbXVtRnVuY3Rp
b25Gb3JDb25zdHJ1Y3RPcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50LCBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwotICAgIAotICAgIFNFVChtYXhpbXVt
RnVuY3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCwgMTUwKTsKLSAg
ICBTRVQobWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rp
b25Db3VudCwgODApOwotICAgIAotICAgIFNFVChtYXhpbXVtSW5saW5pbmdEZXB0aCwgNSk7Ci0K
LSAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCwgICAg
IC0xMDAwKTsKLSAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxv
bmdXYXJtVXAsIC01MDAwKTsKLSAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9w
dGltaXplQW55dGltZVNvb24sIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKTsK
LSAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVTb29uLCAgICAgICAgICAg
IC0xMDAwKTsKLSAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVOZXh0SW52
b2NhdGlvbiwgIDApOworI2RlZmluZSBJTklUKHR5cGUsIGNuYW1lLCBkZWZhdWx0X3ZhbCkgU0VU
KGNuYW1lLCBkZWZhdWx0X3ZhbCk7CisgICAgRk9SX0VBQ0hfSEVVUklTVElDKElOSVQpCisjdW5k
ZWYgSU5JVAogCi0gICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JMb29wLCAgIDEp
OwotICAgIFNFVChleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yUmV0dXJuLCAxNSk7Ci0KLSAg
ICBTRVQoZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbywgNik7Ci0gICAgCi0gICAg
U0VUKGxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkLCAxMDApOwotICAgIFNFVChjb3VsZFRh
a2VTbG93Q2FzZVRocmVzaG9sZCwgICAgMTApOyAvLyBTaG91bGRuJ3QgYmUgemVybyBiZWNhdXNl
IHNvbWUgb3BzIHdpbGwgc3B1cmlvdXNseSB0YWtlIHNsb3cgY2FzZSwgZm9yIGV4YW1wbGUgZm9y
IGxpbmtpbmcgb3IgY2FjaGluZy4KKyAgICAvLyBOb3cgd2UgaW5pdGlhbGl6ZSBoZXVyaXN0aWNz
IHdob3NlIGRlZmF1bHRzIGFyZSBub3Qga25vd24gYXQKKyAgICAvLyBjb21waWxlLXRpbWUuCiAK
LSAgICBTRVQobGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlLCAgICAgICAgMjApOwotICAgIFNF
VChsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2VGb3JMb29wLCAxKTsKKyAgICBpZiAoIWdjTWFy
a1N0YWNrU2VnbWVudFNpemUpCisgICAgICAgIGdjTWFya1N0YWNrU2VnbWVudFNpemUgPSBwYWdl
U2l6ZSgpOwogCi0gICAgU0VUKHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyU3RlcCwgMSk7Ci0K
LSAgICBTRVQobWluaW11bU9wdGltaXphdGlvbkRlbGF5LCAgIDEpOwotICAgIFNFVChtYXhpbXVt
T3B0aW1pemF0aW9uRGVsYXksICAgNSk7Ci0gICAgU0VUKGRlc2lyZWRQcm9maWxlTGl2ZW5lc3NS
YXRlLCAwLjc1KTsKLSAgICBTRVQoZGVzaXJlZFByb2ZpbGVGdWxsbmVzc1JhdGUsIDAuMzUpOwot
ICAgIAotICAgIFNFVChtaW5pbXVtTnVtYmVyT2ZTY2Fuc0JldHdlZW5SZWJhbGFuY2UsIDEwMDAw
KTsKLSAgICBTRVQoZ2NNYXJrU3RhY2tTZWdtZW50U2l6ZSwgICAgICAgICAgICAgICBwYWdlU2l6
ZSgpKTsKLSAgICBTRVQobWluaW11bU51bWJlck9mQ2VsbHNUb0tlZXAsICAgICAgICAgICAxMCk7
Ci0gICAgU0VUKG1heGltdW1OdW1iZXJPZlNoYXJlZFNlZ21lbnRzLCAgICAgICAgMyk7Ci0gICAg
U0VUKHNoYXJlZFN0YWNrV2FrZXVwVGhyZXNob2xkLCAgICAgICAgICAgMSk7Ci0gICAgU0VUKG9w
YXF1ZVJvb3RNZXJnZVRocmVzaG9sZCwgICAgICAgICAgICAgMTAwMCk7Ci0KLSAgICBpbnQgY3B1
c1RvVXNlID0gMTsKKyAgICBpZiAoIW51bWJlck9mR0NNYXJrZXJzKSB7CisgICAgICAgIGludCBj
cHVzVG9Vc2UgPSAxOwogI2lmIE9TKERBUldJTikgJiYgRU5BQkxFKFBBUkFMTEVMX0dDKQotICAg
IGludCBuYW1lWzJdOwotICAgIHNpemVfdCB2YWx1ZVNpemUgPSBzaXplb2YoY3B1c1RvVXNlKTsK
LSAgICBuYW1lWzBdID0gQ1RMX0hXOwotICAgIG5hbWVbMV0gPSBIV19BVkFJTENQVTsKLSAgICBz
eXNjdGwobmFtZSwgMiwgJmNwdXNUb1VzZSwgJnZhbHVlU2l6ZSwgMCwgMCk7CisgICAgICAgIGlu
dCBuYW1lWzJdOworICAgICAgICBzaXplX3QgdmFsdWVTaXplID0gc2l6ZW9mKGNwdXNUb1VzZSk7
CisgICAgICAgIG5hbWVbMF0gPSBDVExfSFc7CisgICAgICAgIG5hbWVbMV0gPSBIV19BVkFJTENQ
VTsKKyAgICAgICAgc3lzY3RsKG5hbWUsIDIsICZjcHVzVG9Vc2UsICZ2YWx1ZVNpemUsIDAsIDAp
OwogI2VuZGlmCi0gICAgLy8gV2UgZG9uJ3Qgc2NhbGUgc28gd2VsbCBiZXlvbmQgNC4KLSAgICBp
ZiAoY3B1c1RvVXNlID4gNCkKLSAgICAgICAgY3B1c1RvVXNlID0gNDsKLSAgICAvLyBCZSBwYXJh
bm9pZCwgaXQgaXMgdGhlIE9TIHdlJ3JlIGRlYWxpbmcgd2l0aCwgYWZ0ZXIgYWxsLgotICAgIGlm
IChjcHVzVG9Vc2UgPCAxKQotICAgICAgICBjcHVzVG9Vc2UgPSAxOworICAgICAgICAvLyBXZSBk
b24ndCBzY2FsZSBzbyB3ZWxsIGJleW9uZCA0LgorICAgICAgICBpZiAoY3B1c1RvVXNlID4gNCkK
KyAgICAgICAgICAgIGNwdXNUb1VzZSA9IDQ7CisgICAgICAgIC8vIEJlIHBhcmFub2lkLCBpdCBp
cyB0aGUgT1Mgd2UncmUgZGVhbGluZyB3aXRoLCBhZnRlciBhbGwuCisgICAgICAgIGlmIChjcHVz
VG9Vc2UgPCAxKQorICAgICAgICAgICAgY3B1c1RvVXNlID0gMTsKKworICAgICAgICBudW1iZXJP
ZkdDTWFya2VycyA9IGNwdXNUb1VzZTsKKyAgICB9CiAgICAgCi0gICAgU0VUKG51bWJlck9mR0NN
YXJrZXJzLCBjcHVzVG9Vc2UpOwotCiAgICAgQVNTRVJUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uIDw9IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGlt
aXplQWZ0ZXJMb25nV2FybVVwKTsKICAgICBBU1NFUlQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
T3B0aW1pemVBZnRlckxvbmdXYXJtVXAgPD0gZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1p
emVBZnRlcldhcm1VcCk7CiAgICAgQVNTRVJUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGlt
aXplQWZ0ZXJXYXJtVXAgPD0gZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVTb29uKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAppbmRleCAxMDliMzkyLi4zYmEz
YjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCkBAIC0zMCw0OCAr
MzAsNjQgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBPcHRpb25zIHsKIAotZXh0ZXJu
IHVuc2lnbmVkIG1heGltdW1FdmFsT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3Vu
dDsKLWV4dGVybiB1bnNpZ25lZCBtYXhpbXVtUHJvZ3JhbU9wdGltaXphdGlvbkNhbmRpZGF0ZUlu
c3RydWN0aW9uQ291bnQ7Ci1leHRlcm4gdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ2FsbE9w
dGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7Ci1leHRlcm4gdW5zaWduZWQgbWF4
aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0T3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25D
b3VudDsKKy8vIEZJWE1FOiBNdXN0IHJldmlzaXQgdGhlIG1heGltdW0gaW5zdHJ1Y3Rpb24gY291
bnRzISBUaGUgREZHLCBiZWluZyBhbgorLy8gb3B0aW1pemluZyBjb21waWxlciwgbWF5IHRha2Ug
YSBsb25nIHRpbWUgZm9yIHBhdGhvbG9naWNhbGx5IGh1Z2UgY29kZQorLy8gYmxvY2tzLiBUaGUg
YmVzdCB3YXkgdG8gY29wZSB3aXRoIHRoaXMgaXMgdG8gcmVmdXNlIHRvIG9wdGltaXplIHRoZW0u
CisKKy8vIG1heGltdW1JbmxpbmluZ0RlcHRoIGlzIHRoZSBtYXhpbXVtIGRlcHRoIG9mIGlubGlu
ZSBzdGFjaywgc28gMSA9IG5vCisvLyBpbmxpbmluZywgMiA9IG9uZSBsZXZlbCwgZXRjCisKKy8v
IGNvdWxkVGFrZVNsb3dDYXNlVGhyZXNob2xkIHNob3VsZG4ndCBiZSB6ZXJvIGJlY2F1c2Ugc29t
ZSBvcHMgd2lsbCBzcHVyaW91c2x5CisvLyB0YWtlIHNsb3cgY2FzZSwgZm9yIGV4YW1wbGUgZm9y
IGxpbmtpbmcgb3IgY2FjaGluZy4KKworI2RlZmluZSBGT1JfRUFDSF9IRVVSSVNUSUMobSkgXAor
ICAgIG0odW5zaWduZWQsIG1heGltdW1FdmFsT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rp
b25Db3VudCwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSBcCisgICAgbSh1
bnNpZ25lZCwgbWF4aW11bVByb2dyYW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNv
dW50LCBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIFwKKyAgICBtKHVuc2ln
bmVkLCBtYXhpbXVtRnVuY3Rpb25Gb3JDYWxsT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rp
b25Db3VudCwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSBcCisgICAgbSh1
bnNpZ25lZCwgbWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0T3B0aW1pemF0aW9uQ2FuZGlkYXRl
SW5zdHJ1Y3Rpb25Db3VudCwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSBc
CisgICAgXAorICAgIG0odW5zaWduZWQsIG1heGltdW1GdW5jdGlvbkZvckNhbGxJbmxpbmVDYW5k
aWRhdGVJbnN0cnVjdGlvbkNvdW50LCAxNTApIFwKKyAgICBtKHVuc2lnbmVkLCBtYXhpbXVtRnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50LCA4MCkgXAor
ICAgIFwKKyAgICBtKHVuc2lnbmVkLCBtYXhpbXVtSW5saW5pbmdEZXB0aCwgNSkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgXAorICAgIG0oaW50MzJfdCwgZXhlY3V0aW9uQ291
bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCwgICAgICAtMTAwMCkgXAorICAgIG0oaW50
MzJfdCwgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAsICAt
NTAwMCkgXAorICAgIG0oaW50MzJfdCwgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGlt
aXplQW55dGltZVNvb24sICBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSkgXAor
ICAgIG0oaW50MzJfdCwgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVTb29uLCAgICAg
ICAgICAgICAtMTAwMCkgXAorICAgIG0oaW50MzJfdCwgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
T3B0aW1pemVOZXh0SW52b2NhdGlvbiwgICAwKSBcCisgICAgXAorICAgIG0oaW50MzJfdCwgZXhl
Y3V0aW9uQ291bnRlckluY3JlbWVudEZvckxvb3AsICAgICAgIDEpIFwKKyAgICBtKGludDMyX3Qs
IGV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JSZXR1cm4sICAgICAxNSkgXAorICAgIFwKKyAg
ICBtKHVuc2lnbmVkLCBkZXNpcmVkU3BlY3VsYXRpdmVTdWNjZXNzRmFpbFJhdGlvLCAgICA2KSBc
CisgICAgXAorICAgIG0odW5zaWduZWQsIGxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkLCAg
ICAgICAgIDEwMCkgXAorICAgIG0odW5zaWduZWQsIGNvdWxkVGFrZVNsb3dDYXNlVGhyZXNob2xk
LCAgICAgICAgICAgIDEwKSBcCisgICAgXAorICAgIG0odW5zaWduZWQsIGxhcmdlRmFpbENvdW50
VGhyZXNob2xkQmFzZSwgICAgICAgICAgIDIwKSBcCisgICAgbSh1bnNpZ25lZCwgbGFyZ2VGYWls
Q291bnRUaHJlc2hvbGRCYXNlRm9yTG9vcCwgICAgMSkgXAorICAgIFwKKyAgICBtKHVuc2lnbmVk
LCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1heCwgICAgICAgICAwKSBcCisgICAgbSh1bnNp
Z25lZCwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJTdGVwLCAgICAgICAgMSkgXAorICAgIFwK
KyAgICBtKHVuc2lnbmVkLCBtaW5pbXVtT3B0aW1pemF0aW9uRGVsYXksICAgICAgICAgICAgICAw
Ljc1KSBcCisgICAgbSh1bnNpZ25lZCwgbWF4aW11bU9wdGltaXphdGlvbkRlbGF5LCAgICAgICAg
ICAgICAgMC4zNSkgXAorICAgIG0oZG91YmxlLCBkZXNpcmVkUHJvZmlsZUxpdmVuZXNzUmF0ZSwg
ICAgICAgICAgICAgIDEwMDAwKSBcCisgICAgbShkb3VibGUsIGRlc2lyZWRQcm9maWxlRnVsbG5l
c3NSYXRlLCAgICAgICAgICAgICAgMCkgXAorICAgIFwKKyAgICBtKHVuc2lnbmVkLCBtaW5pbXVt
TnVtYmVyT2ZTY2Fuc0JldHdlZW5SZWJhbGFuY2UsICAxMDAwMCkgXAorICAgIG0odW5zaWduZWQs
IGdjTWFya1N0YWNrU2VnbWVudFNpemUsICAgICAgICAgICAgICAgIDApIFwKKyAgICBtKHVuc2ln
bmVkLCBtaW5pbXVtTnVtYmVyT2ZDZWxsc1RvS2VlcCwgICAgICAgICAgICAxMCkgXAorICAgIG0o
dW5zaWduZWQsIG1heGltdW1OdW1iZXJPZlNoYXJlZFNlZ21lbnRzLCAgICAgICAgIDMpIFwKKyAg
ICBtKHVuc2lnbmVkLCBzaGFyZWRTdGFja1dha2V1cFRocmVzaG9sZCwgICAgICAgICAgICAxKSBc
CisgICAgbSh1bnNpZ25lZCwgbnVtYmVyT2ZHQ01hcmtlcnMsICAgICAgICAgICAgICAgICAgICAg
MCkgXAorICAgIG0odW5zaWduZWQsIG9wYXF1ZVJvb3RNZXJnZVRocmVzaG9sZCwgICAgICAgICAg
ICAgIDEwMDApCisKKyNkZWZpbmUgREVDTEFSRSh0eXBlLCBjbmFtZSwgZGVmYXVsdF92YWwpIGV4
dGVybiB0eXBlIGNuYW1lOworRk9SX0VBQ0hfSEVVUklTVElDKERFQ0xBUkUpCisjdW5kZWYgREVD
TEFSRQogCi1leHRlcm4gdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRp
ZGF0ZUluc3RydWN0aW9uQ291bnQ7Ci1leHRlcm4gdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9y
Q29uc3RydWN0SW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKLQotZXh0ZXJuIHVuc2ln
bmVkIG1heGltdW1JbmxpbmluZ0RlcHRoOyAvLyBEZXB0aCBvZiBpbmxpbmUgc3RhY2ssIHNvIDEg
PSBubyBpbmxpbmluZywgMiA9IG9uZSBsZXZlbCwgZXRjLgotCi1leHRlcm4gaW50MzJfdCBleGVj
dXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOwotZXh0ZXJuIGludDMyX3Qg
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXA7Ci1leHRlcm4g
aW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbjsK
LWV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbjsKLWV4
dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplTmV4dEludm9jYXRp
b247Ci0KLWV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JMb29wOwot
ZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvclJldHVybjsKLQotZXh0
ZXJuIHVuc2lnbmVkIGRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW87Ci0KLWV4dGVy
biB1bnNpZ25lZCBsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKLWV4dGVybiB1bnNpZ25l
ZCBjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZDsKLQotZXh0ZXJuIHVuc2lnbmVkIGxhcmdlRmFp
bENvdW50VGhyZXNob2xkQmFzZTsKLWV4dGVybiB1bnNpZ25lZCBsYXJnZUZhaWxDb3VudFRocmVz
aG9sZEJhc2VGb3JMb29wOwotCi1leHRlcm4gdW5zaWduZWQgcmVvcHRpbWl6YXRpb25SZXRyeUNv
dW50ZXJNYXg7Ci1leHRlcm4gdW5zaWduZWQgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJTdGVw
OwotCi1leHRlcm4gdW5zaWduZWQgbWluaW11bU9wdGltaXphdGlvbkRlbGF5OwotZXh0ZXJuIHVu
c2lnbmVkIG1heGltdW1PcHRpbWl6YXRpb25EZWxheTsKLWV4dGVybiBkb3VibGUgZGVzaXJlZFBy
b2ZpbGVMaXZlbmVzc1JhdGU7Ci1leHRlcm4gZG91YmxlIGRlc2lyZWRQcm9maWxlRnVsbG5lc3NS
YXRlOwotCi1leHRlcm4gdW5zaWduZWQgbWluaW11bU51bWJlck9mU2NhbnNCZXR3ZWVuUmViYWxh
bmNlOwotZXh0ZXJuIHVuc2lnbmVkIGdjTWFya1N0YWNrU2VnbWVudFNpemU7Ci1leHRlcm4gdW5z
aWduZWQgbWluaW11bU51bWJlck9mQ2VsbHNUb0tlZXA7Ci1leHRlcm4gdW5zaWduZWQgbWF4aW11
bU51bWJlck9mU2hhcmVkU2VnbWVudHM7Ci1leHRlcm4gdW5zaWduZWQgc2hhcmVkU3RhY2tXYWtl
dXBUaHJlc2hvbGQ7Ci1leHRlcm4gdW5zaWduZWQgbnVtYmVyT2ZHQ01hcmtlcnM7Ci1leHRlcm4g
dW5zaWduZWQgb3BhcXVlUm9vdE1lcmdlVGhyZXNob2xkOwogCiB2b2lkIGluaXRpYWxpemVPcHRp
b25zKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116196</attachid>
            <date>2011-11-22 03:53:38 -0800</date>
            <delta_ts>2011-11-24 04:20:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72889-20111122125336.patch</filename>
            <type>text/plain</type>
            <size>64670</size>
            <attacher name="Andy Wingo">wingo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwOTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NjAyZDI5N2M3ZDE0OGIyYWMyZTA1MDgwZjhlZGVjZTg0Y2FjZGY4Li4zODlmZjgxMTE0Y2U3YjQ0
ZTFmMmQzNmJjNjUxYTVkZDg0MDhhNTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NyBAQAorMjAxMS0xMS0yMiAgQW5keSBXaW5nbyAgPHdpbmdvQGlnYWxpYS5jb20+CisK
KyAgICAgICAgUmVuYW1lIEpTQzo6SGV1cmlzdGljcyB0byBKU0M6Ok9wdGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyODg5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMu
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGV1cmlzdGlj
cy5jcHAuCisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmguCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6c2hvdWxkT3B0aW1pemVOb3cpOgorICAgICAgICAqIGJ5dGVj
b2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZVNs
b3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjb3VsZFRha2VTbG93Q2FzZSk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlU3BlY2lhbEZhc3RDYXNlKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rha2VEZWVwZXN0U2xvd0Nhc2UpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZUFueVNsb3dDYXNlKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpyZW9wdGltaXphdGlvblJldHJ5Q291bnRlcik6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6Y291bnRSZW9wdGltaXphdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6Y291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6Y291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6Om9wdGltaXplTmV4dEludm9jYXRpb24pOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmRvbnRPcHRpbWl6ZUFueXRpbWVTb29uKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpvcHRpbWl6ZVNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxhcmdl
RmFpbENvdW50VGhyZXNob2xkKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsYXJnZUZhaWxD
b3VudFRocmVzaG9sZEZvckxvb3ApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNob3VsZFJl
b3B0aW1pemVOb3cpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNob3VsZFJlb3B0aW1pemVG
cm9tTG9vcE5vdyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAq
IGRmZy9ERkdDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjptaWdodENvbXBpbGVF
dmFsKToKKyAgICAgICAgKEpTQzo6REZHOjptaWdodENvbXBpbGVQcm9ncmFtKToKKyAgICAgICAg
KEpTQzo6REZHOjptaWdodENvbXBpbGVGdW5jdGlvbkZvckNhbGwpOgorICAgICAgICAoSlNDOjpE
Rkc6Om1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6REZH
OjptaWdodElubGluZUZ1bmN0aW9uRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6bWlnaHRJ
bmxpbmVGdW5jdGlvbkZvckNvbnN0cnVjdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21w
aWxlcjMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmNvbXBp
bGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGhl
YXAvTWFya1N0YWNrLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrU2VnbWVudEFsbG9jYXRv
cjo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2tTZWdtZW50QWxsb2NhdG9yOjpz
aHJpbmtSZXNlcnZlKToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrQXJyYXk6Ok1hcmtTdGFja0Fy
cmF5KToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrQXJyYXk6OmRvbmF0ZVNvbWVDZWxsc1RvKToK
KyAgICAgICAgKEpTQzo6TWFya1N0YWNrQXJyYXk6OnN0ZWFsU29tZUNlbGxzRnJvbSk6CisgICAg
ICAgIChKU0M6Ok1hcmtTdGFja1RocmVhZFNoYXJlZERhdGE6Ok1hcmtTdGFja1RocmVhZFNoYXJl
ZERhdGEpOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6ZG9uYXRlU2xvdyk6CisgICAgICAg
IChKU0M6OlNsb3RWaXNpdG9yOjpkcmFpbik6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjpk
cmFpbkZyb21TaGFyZWQpOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmg6CisgICAgICAgIChK
U0M6Ok1hcmtTdGFjazo6bWVyZ2VPcGFxdWVSb290c0lmUHJvZml0YWJsZSk6CisgICAgICAgIChK
U0M6Ok1hcmtTdGFjazo6YWRkT3BhcXVlUm9vdCk6CisgICAgICAgIChKU0M6Ok1hcmtTdGFja0Fy
cmF5OjpjYW5Eb25hdGVTb21lQ2VsbHMpOgorICAgICAgICAqIGhlYXAvU2xvdFZpc2l0b3IuaDoK
KyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmRvbmF0ZSk6CisgICAgICAgICogaml0L0pJVC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE9wdGltaXphdGlvbkNoZWNrKToKKyAgICAgICAg
KiBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwOgorICAgICAgICAoSlNDOjppbml0aWFs
aXplVGhyZWFkaW5nT25jZSk6IEFkYXB0IGNhbGxlcnMgYW5kIGJ1aWxkIHN5c3RlbXMuCisKKyAg
ICAgICAgKiB0ZXN0UmVnRXhwLmNwcDoKKyAgICAgICAgKENvbW1hbmRMaW5lOjpDb21tYW5kTGlu
ZSk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKENvbW1hbmRMaW5lOjpDb21tYW5kTGlu
ZSk6CisgICAgICAgIFJlbmFtZSBmcm9tIE9wdGlvbnMsIHRvIGF2b2lkIG5hbWUgY29uZmxpY3Qu
CisKIDIwMTEtMTEtMjEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBERkcgc2hvdWxkIGhhdmUgcmljaGVyIGRlYnVnIG91dHB1dCBmb3IgQ0ZBIGFuZCBwaGkgcHJv
Y2Vzc2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDAxMDZhNjRlODRk
YmU4ZjlkMTMxNWYzMTM1ZjkzNWExYzRhYjUyODguLmIyZTI4YzVmZWZhZmRkOWNiNDhjZDkyYjc5
NzkyZDYxMTlkNzk4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEz
NCw3ICsxMzQsNiBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUvRnVu
Y3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCiAg
ICAgcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCi0gICAgcnVudGltZS9IZXVyaXN0aWNzLmNwcAog
ICAgIHJ1bnRpbWUvSWRlbnRpZmllci5jcHAKICAgICBydW50aW1lL0luaXRpYWxpemVUaHJlYWRp
bmcuY3BwCiAgICAgcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcApAQCAtMTcxLDYgKzE3MCw3
IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHAKICAgICBydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL09w
ZXJhdGlvbnMuY3BwCisgICAgcnVudGltZS9PcHRpb25zLmNwcAogICAgIHJ1bnRpbWUvUHJvcGVy
dHlEZXNjcmlwdG9yLmNwcAogICAgIHJ1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuY3BwCiAgICAg
cnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCmluZGV4IDdkNWZkZDVkOWRiYTAwNzFiOTg5MTQ2YzkzZTdhMGI1ZmM2YmRkMzAu
LjZjOGQyZDY4Y2JhZmJjYTU3MTZkMWNiZDMwMjRlNzNkMGY5YzNjMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0zNTcsOCArMzU3LDYgQEAgamF2YXNj
cmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR0NB
Y3Rpdml0eUNhbGxiYWNrLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRl
clNldHRlci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRl
ci5oIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmNwcCBcCi0J
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGV1cmlzdGljcy5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSWRlbnRpZmllci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcCBcCkBAIC00MzcsNiArNDM1LDggQEAgamF2YXNjcmlw
dGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
UHJvdG90eXBlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMu
Y3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmggXAorCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwIFwKKwlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmNwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKaW5kZXggYTc5M2RkN2VkNWI5YzA1NmQz
MjQ2M2YwZDNhMGExYmQzOTg4YzJkMy4uODg4MjY5NjIzODk0ZDg0ZWEyMjQyNjg0ODBlZTk0ZTlj
YzUxODhjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2oKQEAgLTczNCwxNCArNzM0LDYgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+
CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxIZXVyaXN0aWNzLmNw
cCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5c
cnVudGltZVxIZXVyaXN0aWNzLmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKIAkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcSWRlbnRpZmllci5jcHAiCiAJCQkJPgogCQkJPC9G
aWxlPgpAQCAtMTAzOCw2ICsxMDMwLDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUK
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcT3B0aW9ucy5jcHAiCisJCQkJPgorCQkJ
PC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcT3B0aW9u
cy5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwu
LlxydW50aW1lXFByb3BlcnR5RGVzY3JpcHRvci5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiMjdlNzEzYTc5MzQ5M2FhMmY1NjFjYzRiMWU0
MWIyZTE3NzhjNzA5Li40ZGMxMjMzNzgyY2QwMjQwNGE1ZmMyYzJlYWJjMDRhNWZlMGQyMGU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA0LDggKzEwNCw4IEBACiAJCTBGRDgy
RTkwMTQyMDdBNUYwMDE3OUM5NCAvKiBWYWx1ZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEODJFOEUxNDIwN0E1MTAwMTc5Qzk0IC8q
IFZhbHVlUHJvZmlsZS5jcHAgKi87IH07CiAJCTBGRDgyRUY1MTQyMzA3NUIwMDE3OUM5NCAvKiBE
RkdJbnRyaW5zaWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRDgyRUYzMTQyMzA3MzkwMDE3OUM5NCAvKiBERkdJbnRyaW5zaWMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkQ4MkY0QjE0MjgwNkEx
MDAxNzlDOTQgLyogQml0VmVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkQ4MkY0OTE0MjgwNjkyMDAxNzlDOTQgLyogQml0VmVjdG9yLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEZFMjI4RUQx
NDM2QUIyNzAwMTk2QzQ4IC8qIEhldXJpc3RpY3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAvKiBIZXVyaXN0
aWNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
MEZFMjI4RUUxNDM2QUIyQzAwMTk2QzQ4IC8qIEhldXJpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFMjI4RUExNDM2QUIyMzAwMTk2QzQ4
IC8qIEhldXJpc3RpY3MuY3BwICovOyB9OworCQkwRkUyMjhFRDE0MzZBQjI3MDAxOTZDNDggLyog
T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZFMjI4RUIxNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkUyMjhFRTE0MzZBQjJDMDAxOTZDNDgg
LyogT3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkUyMjhFQTE0MzZBQjIzMDAxOTZDNDggLyogT3B0aW9ucy5jcHAgKi87IH07CiAJCTBG
RkY0QkI0MTQzOTU1RTkwMDY1NUJDMCAvKiBERkdTdHJ1Y3R1cmVTZXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkY0QkIyMTQzOTU1RTYwMDY1NUJD
MCAvKiBERkdTdHJ1Y3R1cmVTZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkxNDAwMDY3NzEyQTZGNzgzMDA2NEQxMjMgLyogT1NBbGxvY2F0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MDAwNjc2
MTJBNkY3ODMwMDY0RDEyMyAvKiBPU0FsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0MDAwNjkzMTJBNkY5RTEwMDY0RDEyMyAvKiBP
U0FsbG9jYXRvclBvc2l4LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0MDAwNjkyMTJBNkY5RTEwMDY0RDEyMyAvKiBPU0FsbG9jYXRvclBvc2l4LmNw
cCAqLzsgfTsKQEAgLTg3MCw4ICs4NzAsOCBAQAogCQkwRkQ4MkU4RTE0MjA3QTUxMDAxNzlDOTQg
LyogVmFsdWVQcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFZhbHVlUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDgyRUYz
MTQyMzA3MzkwMDE3OUM5NCAvKiBERkdJbnRyaW5zaWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHSW50cmluc2ljLmg7IHBhdGggPSBkZmcvREZHSW50cmluc2ljLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDgyRjQ5MTQyODA2OTIwMDE3OUM5NCAvKiBC
aXRWZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQml0VmVjdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGRTIyOEVBMTQzNkFCMjMwMDE5NkM0OCAv
KiBIZXVyaXN0aWNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhl
dXJpc3RpY3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkUyMjhFQjE0MzZB
QjIzMDAxOTZDNDggLyogSGV1cmlzdGljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBIZXVyaXN0aWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRTIyOEVB
MTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEhldXJpc3RpY3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRkUyMjhFQjE0MzZBQjIzMDAxOTZDNDggLyogT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBIZXVyaXN0aWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGRkY0QkIyMTQzOTU1RTYwMDY1NUJDMCAvKiBERkdTdHJ1Y3R1cmVTZXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU3RydWN0dXJlU2V0Lmg7IHBhdGggPSBkZmcv
REZHU3RydWN0dXJlU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MDAwNjc2
MTJBNkY3ODMwMDY0RDEyMyAvKiBPU0FsbG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBPU0FsbG9jYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
NDAwMDY5MjEyQTZGOUUxMDA2NEQxMjMgLyogT1NBbGxvY2F0b3JQb3NpeC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPU0FsbG9jYXRvclBvc2l4LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNTksOCArMjA1OSw4IEBACiAJCTdFRjZFMEJCMEVC
N0ExRUMwMDc5QUZBRiAvKiBydW50aW1lICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKLQkJCQkwRkUyMjhFQTE0MzZBQjIzMDAxOTZDNDggLyogSGV1cmlzdGljcy5j
cHAgKi8sCi0JCQkJMEZFMjI4RUIxNDM2QUIyMzAwMTk2QzQ4IC8qIEhldXJpc3RpY3MuaCAqLywK
KwkJCQkwRkUyMjhFQTE0MzZBQjIzMDAxOTZDNDggLyogT3B0aW9ucy5jcHAgKi8sCisJCQkJMEZF
MjI4RUIxNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCAqLywKIAkJCQkwRjc3MDA5MTE0MDJG
RjI4MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCAqLywKIAkJCQkwRjc3MDA4RTE0MDJG
REQ2MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmggKi8sCiAJCQkJQkNGNjA1MTEwRTIwM0VG
ODAwQjlBNjREIC8qIEFyZ0xpc3QuY3BwICovLApAQCAtMjkwMCw3ICsyOTAwLDcgQEAKIAkJCQkw
RjYzNkRBMDE0MkQyN0Q3MDBCMkU2NkEgLyogUGFja2VkSW50VmVjdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNzUyMUUxMzE0MjkxNjlBMDAzQzhEMEMgLyogQ2FyZFNldC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZENTJBQUUxNDMwMzVBMDAwMjZEQzlGIC8qIFVuaW9uRmluZC5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMEZFMjI4RUQxNDM2QUIyNzAwMTk2QzQ4IC8qIEhldXJpc3RpY3MuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGRTIyOEVEMTQzNkFCMjcwMDE5NkM0OCAvKiBPcHRpb25zLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkZGNEJCNDE0Mzk1NUU5MDA2NTVCQzAgLyogREZHU3RydWN0dXJl
U2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjA0RjUwNTE0M0NFMUMyMDBCMjk1RjUgLyogSlNH
bG9iYWxUaGlzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYyMDE3NDE0M0ZDRDMzMDA2OEI3N0Mg
LyogREZHVmFyaWFibGVBY2Nlc3NEYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTM0NDYsNyArMzQ0
Niw3IEBACiAJCQkJODZGQTlFOTExNDJCQkIyRTAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4Njg4MEYxRjE0MzI4QkI5MDBCMDhENDIgLyogREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4Njg4MEY0RDE0MzUzQjIx
MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkw
RkUyMjhFRTE0MzZBQjJDMDAxOTZDNDggLyogSGV1cmlzdGljcy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRkUyMjhFRTE0MzZBQjJDMDAxOTZDNDggLyogT3B0aW9ucy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjYyMDE3OTE0M0ZDRDQ4MDA2OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0ZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQzNDNENBMDE0NThGNTQ1MDAyNUZCNjIgLyogSlNHbG9iYWxU
aGlzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzA5NzZFMTQ2OEFCNTEwMENGMjQ0MiAvKiBE
RkdBc3NlbWJseUhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQu
cHJpCmluZGV4IDM4ZDM4MmRkYTA0MDgzOTc5MTk2ZmYzNzNmZmE1ZDE5MzBmNWY4MDguLmJlMGVj
NWUwNDA4N2Y1Y2ZhMTM2YWQ0MWE3Zjc1NDhhMzJlMmM3NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJn
ZXQucHJpCkBAIC0xNDksNyArMTQ5LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcnVudGltZS9GdW5j
dGlvblByb3RvdHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBc
CiAgICAgcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIFwKLSAgICBydW50aW1lL0hldXJpc3RpY3Mu
Y3BwIFwKKyAgICBydW50aW1lL09wdGlvbnMuY3BwIFwKICAgICBydW50aW1lL0lkZW50aWZpZXIu
Y3BwIFwKICAgICBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwIFwKICAgICBydW50aW1l
L0ludGVybmFsRnVuY3Rpb24uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKaW5kZXggZTEyNzBlYzAwZTFhZjY0OWM1MmI1Yzg1MmZlYzlkYzMyMTgw
Yjc4ZS4uMzA1NmM4Nzg5ZTIxOWQzOGViYmI2MTE3ZDVmYmVlZTNkNTJlZTMxZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTIyMDMsNyArMjIw
Myw3IEBAIGJvb2wgQ29kZUJsb2NrOjpzaG91bGRPcHRpbWl6ZU5vdygpCiAgICAgZHVtcFZhbHVl
UHJvZmlsZXMoKTsKICNlbmRpZgogCi0gICAgaWYgKG1fb3B0aW1pemF0aW9uRGVsYXlDb3VudGVy
ID49IEhldXJpc3RpY3M6Om1heGltdW1PcHRpbWl6YXRpb25EZWxheSkKKyAgICBpZiAobV9vcHRp
bWl6YXRpb25EZWxheUNvdW50ZXIgPj0gT3B0aW9uczo6bWF4aW11bU9wdGltaXphdGlvbkRlbGF5
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICB1bnNpZ25lZCBudW1iZXJPZk5vbkFy
Z3VtZW50VmFsdWVQcm9maWxlcyA9IDA7CkBAIC0yMjI5LDkgKzIyMjksOSBAQCBib29sIENvZGVC
bG9jazo6c2hvdWxkT3B0aW1pemVOb3coKQogICAgIHByaW50ZigiUHJvZmlsZSBob3RuZXNzOiAl
bGYsICVsZlxuIiwgKGRvdWJsZSludW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMg
LyBudW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcywgKGRvdWJsZSludW1iZXJPZlNhbXBs
ZXNJblByb2ZpbGVzIC8gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMgLyBudW1iZXJPZlZh
bHVlUHJvZmlsZXMoKSk7CiAjZW5kaWYKIAotICAgIGlmICgoIW51bWJlck9mTm9uQXJndW1lbnRW
YWx1ZVByb2ZpbGVzIHx8IChkb3VibGUpbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2Zp
bGVzIC8gbnVtYmVyT2ZOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPj0gSGV1cmlzdGljczo6ZGVz
aXJlZFByb2ZpbGVMaXZlbmVzc1JhdGUpCi0gICAgICAgICYmICghbnVtYmVyT2ZWYWx1ZVByb2Zp
bGVzKCkgfHwgKGRvdWJsZSludW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzIC8gVmFsdWVQcm9maWxl
OjpudW1iZXJPZkJ1Y2tldHMgLyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSA+PSBIZXVyaXN0aWNz
OjpkZXNpcmVkUHJvZmlsZUZ1bGxuZXNzUmF0ZSkKLSAgICAgICAgJiYgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1fb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKSArIDEgPj0gSGV1cmlzdGljczo6bWlu
aW11bU9wdGltaXphdGlvbkRlbGF5KQorICAgIGlmICgoIW51bWJlck9mTm9uQXJndW1lbnRWYWx1
ZVByb2ZpbGVzIHx8IChkb3VibGUpbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVz
IC8gbnVtYmVyT2ZOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPj0gT3B0aW9uczo6ZGVzaXJlZFBy
b2ZpbGVMaXZlbmVzc1JhdGUpCisgICAgICAgICYmICghbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkg
fHwgKGRvdWJsZSludW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzIC8gVmFsdWVQcm9maWxlOjpudW1i
ZXJPZkJ1Y2tldHMgLyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSA+PSBPcHRpb25zOjpkZXNpcmVk
UHJvZmlsZUZ1bGxuZXNzUmF0ZSkKKyAgICAgICAgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1f
b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKSArIDEgPj0gT3B0aW9uczo6bWluaW11bU9wdGltaXph
dGlvbkRlbGF5KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBBU1NFUlQobV9vcHRp
bWl6YXRpb25EZWxheUNvdW50ZXIgPCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ4X3Q+OjptYXgo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggYzk5
MDFlZmNkNThiM2EwOGFlOTc1NDI2NTgxMjI0ZTE3MjdkOTBhZi4uZDhlODUwOTAxNTUzMjMyNGY2
ZTlhMTIzYjM5MDRjOGIyOWY3ZThmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIkRGR09TUkVudHJ5Lmgi
CiAjaW5jbHVkZSAiREZHT1NSRXhpdC5oIgogI2luY2x1ZGUgIkV2YWxDb2RlQ2FjaGUuaCIKLSNp
bmNsdWRlICJIZXVyaXN0aWNzLmgiCisjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgIklu
c3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFdyaXRlQmFy
cmllci5oIgpAQCAtNjc2LDEyICs2NzYsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAog
ICAgICAgICBib29sIGxpa2VseVRvVGFrZVNsb3dDYXNlKGludCBieXRlY29kZU9mZnNldCkKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zm
c2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyID49IEhldXJpc3RpY3M6Omxpa2VseVRvVGFr
ZVNsb3dDYXNlVGhyZXNob2xkOworICAgICAgICAgICAgcmV0dXJuIHJhcmVDYXNlUHJvZmlsZUZv
ckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyID49IE9wdGlvbnM6Omxp
a2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICBib29sIGNvdWxkVGFrZVNsb3dDYXNlKGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVj
b2RlT2Zmc2V0KS0+bV9jb3VudGVyID49IEhldXJpc3RpY3M6OmNvdWxkVGFrZVNsb3dDYXNlVGhy
ZXNob2xkOworICAgICAgICAgICAgcmV0dXJuIHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zm
c2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyID49IE9wdGlvbnM6OmNvdWxkVGFrZVNsb3dD
YXNlVGhyZXNob2xkOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBSYXJlQ2FzZVByb2Zp
bGUqIGFkZFNwZWNpYWxGYXN0Q2FzZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KQpAQCAtNjk5
LDIxICs2OTksMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtl
U3BlY2lhbEZhc3RDYXNlKGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgewogICAgICAgICAg
ICAgdW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxl
Rm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7Ci0gICAgICAgICAg
ICByZXR1cm4gc3BlY2lhbEZhc3RDYXNlQ291bnQgPj0gSGV1cmlzdGljczo6bGlrZWx5VG9UYWtl
U2xvd0Nhc2VUaHJlc2hvbGQ7CisgICAgICAgICAgICByZXR1cm4gc3BlY2lhbEZhc3RDYXNlQ291
bnQgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlRGVlcGVzdFNsb3dDYXNlKGludCBi
eXRlY29kZU9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgdW5zaWduZWQgc2xvd0Nhc2VD
b3VudCA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+
bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBz
cGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5t
X2NvdW50ZXI7Ci0gICAgICAgICAgICByZXR1cm4gKHNsb3dDYXNlQ291bnQgLSBzcGVjaWFsRmFz
dENhc2VDb3VudCkgPj0gSGV1cmlzdGljczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7
CisgICAgICAgICAgICByZXR1cm4gKHNsb3dDYXNlQ291bnQgLSBzcGVjaWFsRmFzdENhc2VDb3Vu
dCkgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlQW55U2xvd0Nhc2UoaW50IGJ5dGVj
b2RlT2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICB1bnNpZ25lZCBzbG93Q2FzZUNvdW50
ID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2Nv
dW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCBzcGVjaWFsRmFzdENhc2VDb3VudCA9IHNwZWNp
YWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291
bnRlcjsKLSAgICAgICAgICAgIHJldHVybiAoc2xvd0Nhc2VDb3VudCArIHNwZWNpYWxGYXN0Q2Fz
ZUNvdW50KSA+PSBIZXVyaXN0aWNzOjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKKyAg
ICAgICAgICAgIHJldHVybiAoc2xvd0Nhc2VDb3VudCArIHNwZWNpYWxGYXN0Q2FzZUNvdW50KSA+
PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgdm9pZCByZXNldFJhcmVDYXNlUHJvZmlsZXMoKTsKQEAgLTkxNSwyNSAr
OTE1LDI1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyB0byBhdm9pZCB0aHJhc2hpbmcu
CiAgICAgICAgIHVuc2lnbmVkIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCkgY29uc3QKICAg
ICAgICAgewotICAgICAgICAgICAgQVNTRVJUKG1fcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIg
PD0gSGV1cmlzdGljczo6cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXgpOworICAgICAgICAg
ICAgQVNTRVJUKG1fcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPD0gT3B0aW9uczo6cmVvcHRp
bWl6YXRpb25SZXRyeUNvdW50ZXJNYXgpOwogICAgICAgICAgICAgcmV0dXJuIG1fcmVvcHRpbWl6
YXRpb25SZXRyeUNvdW50ZXI7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZvaWQgY291
bnRSZW9wdGltaXphdGlvbigpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fcmVvcHRpbWl6YXRp
b25SZXRyeUNvdW50ZXIrKzsKLSAgICAgICAgICAgIGlmIChtX3Jlb3B0aW1pemF0aW9uUmV0cnlD
b3VudGVyID4gSGV1cmlzdGljczo6cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXgpCi0gICAg
ICAgICAgICAgICAgbV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA9IEhldXJpc3RpY3M6OnJl
b3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4OworICAgICAgICAgICAgaWYgKG1fcmVvcHRpbWl6
YXRpb25SZXRyeUNvdW50ZXIgPiBPcHRpb25zOjpyZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1h
eCkKKyAgICAgICAgICAgICAgICBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID0gT3B0aW9u
czo6cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXg7CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIGludDMyX3QgY291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCgpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBIZXVyaXN0aWNzOjpleGVjdXRpb25Db3VudGVyVmFs
dWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwIDw8IHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCk7
CisgICAgICAgICAgICByZXR1cm4gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0
aW1pemVBZnRlcldhcm1VcCA8PCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpOwogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICBpbnQzMl90IGNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0
ZXJMb25nV2FybVVwKCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEhldXJpc3RpY3M6
OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwIDw8IHJlb3B0
aW1pemF0aW9uUmV0cnlDb3VudGVyKCk7CisgICAgICAgICAgICByZXR1cm4gT3B0aW9uczo6ZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAgPDwgcmVvcHRpbWl6
YXRpb25SZXRyeUNvdW50ZXIoKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaW50MzJf
dCogYWRkcmVzc09mRXhlY3V0ZUNvdW50ZXIoKQpAQCAtOTUyLDcgKzk1Miw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAvLyBleHBlbnNpdmUgdGhhbiBleGVjdXRpbmcgYmFzZWxpbmUgY29k
ZS4KICAgICAgICAgdm9pZCBvcHRpbWl6ZU5leHRJbnZvY2F0aW9uKCkKICAgICAgICAgewotICAg
ICAgICAgICAgbV9leGVjdXRlQ291bnRlciA9IEhldXJpc3RpY3M6OmV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvck9wdGltaXplTmV4dEludm9jYXRpb247CisgICAgICAgICAgICBtX2V4ZWN1dGVDb3Vu
dGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVOZXh0SW52b2Nh
dGlvbjsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gQ2FsbCB0aGlzIHRvIHByZXZl
bnQgb3B0aW1pemF0aW9uIGZyb20gaGFwcGVuaW5nIGFnYWluLiBOb3RlIHRoYXQKQEAgLTk2Miw3
ICs5NjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gdGhlIGZ1dHVyZSBhcyB3ZWxs
LgogICAgICAgICB2b2lkIGRvbnRPcHRpbWl6ZUFueXRpbWVTb29uKCkKICAgICAgICAgewotICAg
ICAgICAgICAgbV9leGVjdXRlQ291bnRlciA9IEhldXJpc3RpY3M6OmV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uOworICAgICAgICAgICAgbV9leGVjdXRlQ291
bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRp
bWVTb29uOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBDYWxsIHRoaXMgdG8gcmVp
bml0aWFsaXplIHRoZSBjb3VudGVyIHRvIGl0cyBzdGFydGluZyBzdGF0ZSwKQEAgLTEwMDMsNyAr
MTAwMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBpbiB0aGUgYmFzZWxpbmUgY29k
ZS4KICAgICAgICAgdm9pZCBvcHRpbWl6ZVNvb24oKQogICAgICAgICB7Ci0gICAgICAgICAgICBt
X2V4ZWN1dGVDb3VudGVyID0gSGV1cmlzdGljczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0
aW1pemVTb29uIDw8IHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCk7CisgICAgICAgICAgICBt
X2V4ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1p
emVTb29uIDw8IHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCk7CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIC8vIFRoZSBzcGVjdWxhdGl2ZSBKSVQgdHJhY2tzIGl0cyBzdWNjZXNzIHJh
dGUsIHNvIHRoYXQgd2UgY2FuCkBAIC0xMDM3LDE3ICsxMDM3LDE3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgLy8gVGhlIG51bWJlciBvZiBmYWlsdXJlcyB0
aGF0IHRyaWdnZXJzIHRoZSB1c2Ugb2YgdGhlIHJhdGlvLgotICAgICAgICB1bnNpZ25lZCBsYXJn
ZUZhaWxDb3VudFRocmVzaG9sZCgpIHsgcmV0dXJuIEhldXJpc3RpY3M6OmxhcmdlRmFpbENvdW50
VGhyZXNob2xkQmFzZSA8PCBiYXNlbGluZVZlcnNpb24oKS0+cmVvcHRpbWl6YXRpb25SZXRyeUNv
dW50ZXIoKTsgfQotICAgICAgICB1bnNpZ25lZCBsYXJnZUZhaWxDb3VudFRocmVzaG9sZEZvckxv
b3AoKSB7IHJldHVybiBIZXVyaXN0aWNzOjpsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2VGb3JM
b29wIDw8IGJhc2VsaW5lVmVyc2lvbigpLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpOyB9
CisgICAgICAgIHVuc2lnbmVkIGxhcmdlRmFpbENvdW50VGhyZXNob2xkKCkgeyByZXR1cm4gT3B0
aW9uczo6bGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlIDw8IGJhc2VsaW5lVmVyc2lvbigpLT5y
ZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpOyB9CisgICAgICAgIHVuc2lnbmVkIGxhcmdlRmFp
bENvdW50VGhyZXNob2xkRm9yTG9vcCgpIHsgcmV0dXJuIE9wdGlvbnM6OmxhcmdlRmFpbENvdW50
VGhyZXNob2xkQmFzZUZvckxvb3AgPDwgYmFzZWxpbmVWZXJzaW9uKCktPnJlb3B0aW1pemF0aW9u
UmV0cnlDb3VudGVyKCk7IH0KIAogICAgICAgICBib29sIHNob3VsZFJlb3B0aW1pemVOb3coKQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gSGV1cmlzdGljczo6ZGVzaXJlZFNwZWN1bGF0
aXZlU3VjY2Vzc0ZhaWxSYXRpbyAqIHNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSA+PSBzcGVjdWxh
dGl2ZVN1Y2Nlc3NDb3VudGVyKCkgJiYgc3BlY3VsYXRpdmVGYWlsQ291bnRlcigpID49IGxhcmdl
RmFpbENvdW50VGhyZXNob2xkKCk7CisgICAgICAgICAgICByZXR1cm4gT3B0aW9uczo6ZGVzaXJl
ZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbyAqIHNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSA+
PSBzcGVjdWxhdGl2ZVN1Y2Nlc3NDb3VudGVyKCkgJiYgc3BlY3VsYXRpdmVGYWlsQ291bnRlcigp
ID49IGxhcmdlRmFpbENvdW50VGhyZXNob2xkKCk7CiAgICAgICAgIH0KIAogICAgICAgICBib29s
IHNob3VsZFJlb3B0aW1pemVGcm9tTG9vcE5vdygpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBIZXVyaXN0aWNzOjpkZXNpcmVkU3BlY3VsYXRpdmVTdWNjZXNzRmFpbFJhdGlvICogc3Bl
Y3VsYXRpdmVGYWlsQ291bnRlcigpID49IHNwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXIoKSAmJiBz
cGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkgPj0gbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRGb3JMb29w
KCk7CisgICAgICAgICAgICByZXR1cm4gT3B0aW9uczo6ZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vz
c0ZhaWxSYXRpbyAqIHNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSA+PSBzcGVjdWxhdGl2ZVN1Y2Nl
c3NDb3VudGVyKCkgJiYgc3BlY3VsYXRpdmVGYWlsQ291bnRlcigpID49IGxhcmdlRmFpbENvdW50
VGhyZXNob2xkRm9yTG9vcCgpOwogICAgICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAzZDI1OGNmZTRlYWY1
OWZhZGM4NzFiNzNlMTI2OTc1M2VlN2Y2ZDg2Li5lN2VkNmY3ZjQzMzc3ZTE5NTUxMzQ2NjE4OTkx
MmIxMjdmOTY1M2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcApAQCAtOTU2LDcgKzk1Niw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUlubGluaW5nKGJvb2wgdXNlc1Jlc3VsdCwgaW50IGNhbGxUYXJnZXQsIE5vZGVJbmRleCBj
CiAgICAgdW5zaWduZWQgZGVwdGggPSAwOwogICAgIGZvciAoSW5saW5lU3RhY2tFbnRyeSogZW50
cnkgPSBtX2lubGluZVN0YWNrVG9wOyBlbnRyeTsgZW50cnkgPSBlbnRyeS0+bV9jYWxsZXIpIHsK
ICAgICAgICAgKytkZXB0aDsKLSAgICAgICAgaWYgKGRlcHRoID49IEhldXJpc3RpY3M6Om1heGlt
dW1JbmxpbmluZ0RlcHRoKQorICAgICAgICBpZiAoZGVwdGggPj0gT3B0aW9uczo6bWF4aW11bUlu
bGluaW5nRGVwdGgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIERlcHRoIGV4Y2VlZGVk
LgogICAgICAgICAKICAgICAgICAgaWYgKGVudHJ5LT5leGVjdXRhYmxlKCkgPT0gZXhlY3V0YWJs
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCmluZGV4IGM4
M2FiZmQzNDYzOTc3YWE4MTQzNTAwMjM0ZTk2MjZjMDg4NTk4MjQuLjFjOGZhYTU5MzlmNTVkOTIx
NzZhMjZlYzdmZGFkZGVhNmMyYWI2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYXBhYmlsaXRpZXMuaApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkRGR0ludHJpbnNp
Yy5oIgogI2luY2x1ZGUgIkRGR05vZGUuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCi0jaW5j
bHVkZSAiSGV1cmlzdGljcy5oIgorI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJJbnRl
cnByZXRlci5oIgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCkBAIC00MCwyOCArNDAsMjgg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogLy8gY2hlY2sgb3Bjb2Rlcy4KIGlu
bGluZSBib29sIG1pZ2h0Q29tcGlsZUV2YWwoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAg
cmV0dXJuIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IEhldXJpc3RpY3M6Om1heGlt
dW1FdmFsT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKKyAgICByZXR1cm4g
Y29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9uczo6bWF4aW11bUV2YWxPcHRp
bWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OwogfQogaW5saW5lIGJvb2wgbWlnaHRD
b21waWxlUHJvZ3JhbShDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKLSAgICByZXR1cm4gY29kZUJs
b2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gSGV1cmlzdGljczo6bWF4aW11bVByb2dyYW1PcHRp
bWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OworICAgIHJldHVybiBjb2RlQmxvY2st
Pmluc3RydWN0aW9uQ291bnQoKSA8PSBPcHRpb25zOjptYXhpbXVtUHJvZ3JhbU9wdGltaXphdGlv
bkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CiB9CiBpbmxpbmUgYm9vbCBtaWdodENvbXBpbGVG
dW5jdGlvbkZvckNhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgcmV0dXJuIGNvZGVC
bG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IEhldXJpc3RpY3M6Om1heGltdW1GdW5jdGlvbkZv
ckNhbGxPcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OworICAgIHJldHVybiBj
b2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBPcHRpb25zOjptYXhpbXVtRnVuY3Rpb25G
b3JDYWxsT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKIH0KIGlubGluZSBi
b29sIG1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ29uc3RydWN0KENvZGVCbG9jayogY29kZUJsb2Nr
KQogewotICAgIHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBIZXVyaXN0
aWNzOjptYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RPcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0
cnVjdGlvbkNvdW50OworICAgIHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8
PSBPcHRpb25zOjptYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RPcHRpbWl6YXRpb25DYW5kaWRh
dGVJbnN0cnVjdGlvbkNvdW50OwogfQogCiBpbmxpbmUgYm9vbCBtaWdodElubGluZUZ1bmN0aW9u
Rm9yQ2FsbChDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKLSAgICByZXR1cm4gY29kZUJsb2NrLT5p
bnN0cnVjdGlvbkNvdW50KCkgPD0gSGV1cmlzdGljczo6bWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElu
bGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CisgICAgcmV0dXJuIGNvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1GdW5jdGlvbkZvckNhbGxJbmxpbmVD
YW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OwogfQogaW5saW5lIGJvb2wgbWlnaHRJbmxpbmVGdW5j
dGlvbkZvckNvbnN0cnVjdChDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKLSAgICByZXR1cm4gY29k
ZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gSGV1cmlzdGljczo6bWF4aW11bUZ1bmN0aW9u
Rm9yQ29uc3RydWN0SW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKKyAgICByZXR1cm4g
Y29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9uczo6bWF4aW11bUZ1bmN0aW9u
Rm9yQ29uc3RydWN0SW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKIH0KIAogLy8gT3Bj
b2RlIGNoZWNraW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXIzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRDb21waWxlcjMyXzY0LmNwcAppbmRleCA2ZmZkODAzYWE1NzU1YTc2YzA2MWRmODY5MWRm
ZjMwNzU4YWJkMjVkLi5lZTU4MGFjZWQwZDI0MGUyMGEwYWU2NDIxOWMwNmU0Zjc2NTNkZTBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMy
XzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxl
cjMyXzY0LmNwcApAQCAtNDYzLDEyICs0NjMsMTIgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNv
bXBpbGVFeGl0KGNvbnN0IE9TUkV4aXQmIGV4aXQsIFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY28K
ICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihtX2ppdC5iYXNl
bGluZUNvZGVCbG9jaygpKSwgR1BSSW5mbzo6cmVnVDApOwogICAgIAogICAgIEFzc2VtYmx5SGVs
cGVyczo6SnVtcCBmZXdGYWlscyA9IG1faml0LmJyYW5jaDMyKEFzc2VtYmx5SGVscGVyczo6QmVs
b3dPckVxdWFsLCBHUFJJbmZvOjpyZWdUMiwgQXNzZW1ibHlIZWxwZXJzOjpJbW0zMihtX2ppdC5j
b2RlQmxvY2soKS0+bGFyZ2VGYWlsQ291bnRUaHJlc2hvbGQoKSkpOwotICAgIG1faml0Lm11bDMy
KEFzc2VtYmx5SGVscGVyczo6SW1tMzIoSGV1cmlzdGljczo6ZGVzaXJlZFNwZWN1bGF0aXZlU3Vj
Y2Vzc0ZhaWxSYXRpbyksIEdQUkluZm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUMik7CisgICAgbV9q
aXQubXVsMzIoQXNzZW1ibHlIZWxwZXJzOjpJbW0zMihPcHRpb25zOjpkZXNpcmVkU3BlY3VsYXRp
dmVTdWNjZXNzRmFpbFJhdGlvKSwgR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OnJlZ1QyKTsKICAg
ICAKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgbG93RmFpbFJhdGUgPSBtX2ppdC5icmFuY2gz
MihBc3NlbWJseUhlbHBlcnM6OkJlbG93T3JFcXVhbCwgR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86
OnJlZ1QxKTsKICAgICAKICAgICAvLyBSZW9wdGltaXplIGFzIHNvb24gYXMgcG9zc2libGUuCi0g
ICAgbV9qaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OkltbTMyKEhldXJpc3RpY3M6OmV4ZWN1
dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplTmV4dEludm9jYXRpb24pLCBBc3NlbWJseUhlbHBl
cnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZFeGVjdXRlQ291
bnRlcigpKSk7CisgICAgbV9qaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OkltbTMyKE9wdGlv
bnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplTmV4dEludm9jYXRpb24pLCBBc3Nl
bWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZF
eGVjdXRlQ291bnRlcigpKSk7CiAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIGRvbmVBZGp1c3Rp
bmcgPSBtX2ppdC5qdW1wKCk7CiAgICAgCiAgICAgZmV3RmFpbHMubGluaygmbV9qaXQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcApp
bmRleCA1NmZiMTM0NGUyOThmY2E2N2NlMTYzZjA1YjFhZWU4OTA5MmQ3ZGI3Li40NTJlZjU0MWE0
NDBlMTc4YWNiZDhmMzUwZjJlMDcyMGJjOThhZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcApAQCAtNDczLDEyICs0NzMsMTIg
QEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IE9TUkV4aXQmIGV4aXQs
IFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY28KICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVy
czo6VHJ1c3RlZEltbVB0cihtX2ppdC5iYXNlbGluZUNvZGVCbG9jaygpKSwgR1BSSW5mbzo6cmVn
VDApOwogICAgIAogICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCBmZXdGYWlscyA9IG1faml0LmJy
YW5jaDMyKEFzc2VtYmx5SGVscGVyczo6QmVsb3dPckVxdWFsLCBHUFJJbmZvOjpyZWdUMiwgQXNz
ZW1ibHlIZWxwZXJzOjpJbW0zMihtX2ppdC5jb2RlQmxvY2soKS0+bGFyZ2VGYWlsQ291bnRUaHJl
c2hvbGQoKSkpOwotICAgIG1faml0Lm11bDMyKEFzc2VtYmx5SGVscGVyczo6SW1tMzIoSGV1cmlz
dGljczo6ZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbyksIEdQUkluZm86OnJlZ1Qy
LCBHUFJJbmZvOjpyZWdUMik7CisgICAgbV9qaXQubXVsMzIoQXNzZW1ibHlIZWxwZXJzOjpJbW0z
MihPcHRpb25zOjpkZXNpcmVkU3BlY3VsYXRpdmVTdWNjZXNzRmFpbFJhdGlvKSwgR1BSSW5mbzo6
cmVnVDIsIEdQUkluZm86OnJlZ1QyKTsKICAgICAKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAg
bG93RmFpbFJhdGUgPSBtX2ppdC5icmFuY2gzMihBc3NlbWJseUhlbHBlcnM6OkJlbG93T3JFcXVh
bCwgR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OnJlZ1QxKTsKICAgICAKICAgICAvLyBSZW9wdGlt
aXplIGFzIHNvb24gYXMgcG9zc2libGUuCi0gICAgbV9qaXQuc3RvcmUzMihBc3NlbWJseUhlbHBl
cnM6OkltbTMyKEhldXJpc3RpY3M6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplTmV4
dEludm9jYXRpb24pLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENv
ZGVCbG9jazo6b2Zmc2V0T2ZFeGVjdXRlQ291bnRlcigpKSk7CisgICAgbV9qaXQuc3RvcmUzMihB
c3NlbWJseUhlbHBlcnM6OkltbTMyKE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9w
dGltaXplTmV4dEludm9jYXRpb24pLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6
cmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZFeGVjdXRlQ291bnRlcigpKSk7CiAgICAgQXNzZW1i
bHlIZWxwZXJzOjpKdW1wIGRvbmVBZGp1c3RpbmcgPSBtX2ppdC5qdW1wKCk7CiAgICAgCiAgICAg
ZmV3RmFpbHMubGluaygmbV9qaXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya1N0YWNrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFj
ay5jcHAKaW5kZXggM2Y0ZmRhNzZjYzRlMzcxZjc0ZDZkY2M3MzVjOWI5Mzg0NjNlZjlkNS4uZGQw
ZTZmZDU3YWFkZDMwMmVkNTc3YmE0OTIyNmIwNWU2ZTgxN2M3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlICJD
b25zZXJ2YXRpdmVSb290cy5oIgogI2luY2x1ZGUgIkhlYXAuaCIKLSNpbmNsdWRlICJIZXVyaXN0
aWNzLmgiCisjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNs
dWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgpAQCAtNjAsNyArNjAsNyBAQCBN
YXJrU3RhY2tTZWdtZW50KiBNYXJrU3RhY2tTZWdtZW50QWxsb2NhdG9yOjphbGxvY2F0ZSgpCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWFya1N0YWNrU2VnbWVu
dCo+KE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KEhldXJpc3RpY3M6OmdjTWFya1N0YWNr
U2VnbWVudFNpemUpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWFya1N0YWNrU2VnbWVudCo+
KE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KE9wdGlvbnM6OmdjTWFya1N0YWNrU2VnbWVu
dFNpemUpKTsKIH0KIAogdm9pZCBNYXJrU3RhY2tTZWdtZW50QWxsb2NhdG9yOjpyZWxlYXNlKE1h
cmtTdGFja1NlZ21lbnQqIHNlZ21lbnQpCkBAIC04MSwxMyArODEsMTMgQEAgdm9pZCBNYXJrU3Rh
Y2tTZWdtZW50QWxsb2NhdG9yOjpzaHJpbmtSZXNlcnZlKCkKICAgICB3aGlsZSAoc2VnbWVudHMp
IHsKICAgICAgICAgTWFya1N0YWNrU2VnbWVudCogdG9GcmVlID0gc2VnbWVudHM7CiAgICAgICAg
IHNlZ21lbnRzID0gc2VnbWVudHMtPm1fcHJldmlvdXM7Ci0gICAgICAgIE9TQWxsb2NhdG9yOjpk
ZWNvbW1pdEFuZFJlbGVhc2UodG9GcmVlLCBIZXVyaXN0aWNzOjpnY01hcmtTdGFja1NlZ21lbnRT
aXplKTsKKyAgICAgICAgT1NBbGxvY2F0b3I6OmRlY29tbWl0QW5kUmVsZWFzZSh0b0ZyZWUsIE9w
dGlvbnM6OmdjTWFya1N0YWNrU2VnbWVudFNpemUpOwogICAgIH0KIH0KIAogTWFya1N0YWNrQXJy
YXk6Ok1hcmtTdGFja0FycmF5KE1hcmtTdGFja1NlZ21lbnRBbGxvY2F0b3ImIGFsbG9jYXRvcikK
ICAgICA6IG1fYWxsb2NhdG9yKGFsbG9jYXRvcikKLSAgICAsIG1fc2VnbWVudENhcGFjaXR5KE1h
cmtTdGFja1NlZ21lbnQ6OmNhcGFjaXR5RnJvbVNpemUoSGV1cmlzdGljczo6Z2NNYXJrU3RhY2tT
ZWdtZW50U2l6ZSkpCisgICAgLCBtX3NlZ21lbnRDYXBhY2l0eShNYXJrU3RhY2tTZWdtZW50Ojpj
YXBhY2l0eUZyb21TaXplKE9wdGlvbnM6OmdjTWFya1N0YWNrU2VnbWVudFNpemUpKQogICAgICwg
bV90b3AoMCkKICAgICAsIG1fbnVtYmVyT2ZQcmV2aW91c1NlZ21lbnRzKDApCiB7CkBAIC0xNDUs
MTAgKzE0NSwxMCBAQCBib29sIE1hcmtTdGFja0FycmF5Ojpkb25hdGVTb21lQ2VsbHNUbyhNYXJr
U3RhY2tBcnJheSYgb3RoZXIpCiAgICAgb3RoZXIudmFsaWRhdGVQcmV2aW91cygpOwogICAgICAg
ICAKICAgICAvLyBGYXN0IGNoZWNrOiBzZWUgaWYgdGhlIG90aGVyIG1hcmsgc3RhY2sgYWxyZWFk
eSBoYXMgZW5vdWdoIHNlZ21lbnRzLgotICAgIGlmIChvdGhlci5tX251bWJlck9mUHJldmlvdXNT
ZWdtZW50cyArIDEgPj0gSGV1cmlzdGljczo6bWF4aW11bU51bWJlck9mU2hhcmVkU2VnbWVudHMp
CisgICAgaWYgKG90aGVyLm1fbnVtYmVyT2ZQcmV2aW91c1NlZ21lbnRzICsgMSA+PSBPcHRpb25z
OjptYXhpbXVtTnVtYmVyT2ZTaGFyZWRTZWdtZW50cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAKLSAgICBzaXplX3QgbnVtYmVyT2ZDZWxsc1RvS2VlcCA9IEhldXJpc3RpY3M6Om1p
bmltdW1OdW1iZXJPZkNlbGxzVG9LZWVwOworICAgIHNpemVfdCBudW1iZXJPZkNlbGxzVG9LZWVw
ID0gT3B0aW9uczo6bWluaW11bU51bWJlck9mQ2VsbHNUb0tlZXA7CiAgICAgQVNTRVJUKG1fdG9w
ID4gbnVtYmVyT2ZDZWxsc1RvS2VlcCB8fCBtX3RvcFNlZ21lbnQtPm1fcHJldmlvdXMpOwogICAg
ICAgICAKICAgICAvLyBMb29rcyBsaWtlIHdlIHNob3VsZCBkb25hdGUhIEdpdmUgdGhlIG90aGVy
IG1hcmsgc3RhY2sgYWxsIG9mIG91cgpAQCAtMjA5LDggKzIwOSw4IEBAIHZvaWQgTWFya1N0YWNr
QXJyYXk6OnN0ZWFsU29tZUNlbGxzRnJvbShNYXJrU3RhY2tBcnJheSYgb3RoZXIpCiAgICAgfQog
ICAgICAgICAKICAgICAvLyBPdGhlcndpc2UgZHJhaW4gMS9OdGggb2YgdGhlIHNoYXJlZCBhcnJh
eSB3aGVyZSBOIGlzIHRoZSBudW1iZXIgb2YKLSAgICAvLyB3b3JrZXJzLCBvciBIZXVyaXN0aWNz
OjptaW5pbXVtTnVtYmVyT2ZDZWxsc1RvS2VlcCwgd2hpY2hldmVyIGlzIGJpZ2dlci4KLSAgICBz
aXplX3QgbnVtYmVyT2ZDZWxsc1RvU3RlYWwgPSBzdGQ6Om1heCgoc2l6ZV90KUhldXJpc3RpY3M6
Om1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVwLCBvdGhlci5zaXplKCkgLyBIZXVyaXN0aWNzOjpu
dW1iZXJPZkdDTWFya2Vycyk7CisgICAgLy8gd29ya2Vycywgb3IgT3B0aW9uczo6bWluaW11bU51
bWJlck9mQ2VsbHNUb0tlZXAsIHdoaWNoZXZlciBpcyBiaWdnZXIuCisgICAgc2l6ZV90IG51bWJl
ck9mQ2VsbHNUb1N0ZWFsID0gc3RkOjptYXgoKHNpemVfdClPcHRpb25zOjptaW5pbXVtTnVtYmVy
T2ZDZWxsc1RvS2VlcCwgb3RoZXIuc2l6ZSgpIC8gT3B0aW9uczo6bnVtYmVyT2ZHQ01hcmtlcnMp
OwogICAgIHdoaWxlIChudW1iZXJPZkNlbGxzVG9TdGVhbC0tID4gMCAmJiBvdGhlci5jYW5SZW1v
dmVMYXN0KCkpCiAgICAgICAgIGFwcGVuZChvdGhlci5yZW1vdmVMYXN0KCkpOwogfQpAQCAtMjM4
LDcgKzIzOCw3IEBAIE1hcmtTdGFja1RocmVhZFNoYXJlZERhdGE6Ok1hcmtTdGFja1RocmVhZFNo
YXJlZERhdGEoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogICAgICwgbV9wYXJhbGxlbE1hcmtl
cnNTaG91bGRFeGl0KGZhbHNlKQogewogI2lmIEVOQUJMRShQQVJBTExFTF9HQykKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAxOyBpIDwgSGV1cmlzdGljczo6bnVtYmVyT2ZHQ01hcmtlcnM7ICsraSkg
eworICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBPcHRpb25zOjpudW1iZXJPZkdDTWFya2Vy
czsgKytpKSB7CiAgICAgICAgIG1fbWFya2luZ1RocmVhZHMuYXBwZW5kKGNyZWF0ZVRocmVhZCht
YXJraW5nVGhyZWFkU3RhcnRGdW5jLCB0aGlzLCAiSmF2YVNjcmlwdENvcmU6Ok1hcmtpbmciKSk7
CiAgICAgICAgIEFTU0VSVChtX21hcmtpbmdUaHJlYWRzLmxhc3QoKSk7CiAgICAgfQpAQCAtMzI5
LDcgKzMyOSw3IEBAIHZvaWQgU2xvdFZpc2l0b3I6OmRvbmF0ZVNsb3coKQogICAgIGlmIChtX3N0
YWNrLmRvbmF0ZVNvbWVDZWxsc1RvKG1fc2hhcmVkLm1fc2hhcmVkTWFya1N0YWNrKSkgewogICAg
ICAgICAvLyBPbmx5IHdha2UgdXAgdGhyZWFkcyBpZiB0aGUgc2hhcmVkIHN0YWNrIGlzIGJpZyBl
bm91Z2g7IG90aGVyd2lzZSBhc3N1bWUgdGhhdAogICAgICAgICAvLyBpdCdzIG1vcmUgcHJvZml0
YWJsZSBmb3IgdXMgdG8ganVzdCBzY2FuIHRoaXMgb3Vyc2VsdmVzIGxhdGVyLgotICAgICAgICBp
ZiAobV9zaGFyZWQubV9zaGFyZWRNYXJrU3RhY2suc2l6ZSgpID49IEhldXJpc3RpY3M6OnNoYXJl
ZFN0YWNrV2FrZXVwVGhyZXNob2xkKQorICAgICAgICBpZiAobV9zaGFyZWQubV9zaGFyZWRNYXJr
U3RhY2suc2l6ZSgpID49IE9wdGlvbnM6OnNoYXJlZFN0YWNrV2FrZXVwVGhyZXNob2xkKQogICAg
ICAgICAgICAgbV9zaGFyZWQubV9tYXJraW5nQ29uZGl0aW9uLmJyb2FkY2FzdCgpOwogICAgIH0K
IH0KQEAgLTM0MywxMCArMzQzLDEwIEBAIHZvaWQgU2xvdFZpc2l0b3I6OmRyYWluKCkKICAgICB2
b2lkKiBqc1N0cmluZ1ZQdHIgPSBtX2pzU3RyaW5nVlB0cjsKIAogI2lmIEVOQUJMRShQQVJBTExF
TF9HQykKLSAgICBpZiAoSGV1cmlzdGljczo6bnVtYmVyT2ZHQ01hcmtlcnMgPiAxKSB7CisgICAg
aWYgKE9wdGlvbnM6Om51bWJlck9mR0NNYXJrZXJzID4gMSkgewogICAgICAgICB3aGlsZSAoIW1f
c3RhY2suaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBtX3N0YWNrLnJlZmlsbCgpOwotICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBjb3VudGRvd24gPSBIZXVyaXN0aWNzOjptaW5pbXVtTnVtYmVy
T2ZTY2Fuc0JldHdlZW5SZWJhbGFuY2U7IG1fc3RhY2suY2FuUmVtb3ZlTGFzdCgpICYmIGNvdW50
ZG93bi0tOykKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgY291bnRkb3duID0gT3B0aW9uczo6
bWluaW11bU51bWJlck9mU2NhbnNCZXR3ZWVuUmViYWxhbmNlOyBtX3N0YWNrLmNhblJlbW92ZUxh
c3QoKSAmJiBjb3VudGRvd24tLTspCiAgICAgICAgICAgICAgICAgdmlzaXRDaGlsZHJlbigqdGhp
cywgbV9zdGFjay5yZW1vdmVMYXN0KCksIGpzRmluYWxPYmplY3RWUHRyLCBqc0FycmF5VlB0ciwg
anNTdHJpbmdWUHRyKTsKICAgICAgICAgICAgIGRvbmF0ZUtub3duUGFyYWxsZWwoKTsKICAgICAg
ICAgfQpAQCAtMzY3LDE0ICszNjcsMTQgQEAgdm9pZCBTbG90VmlzaXRvcjo6ZHJhaW5Gcm9tU2hh
cmVkKFNoYXJlZERyYWluTW9kZSBzaGFyZWREcmFpbk1vZGUpCiB7CiAgICAgQVNTRVJUKG1faXNJ
blBhcmFsbGVsTW9kZSk7CiAgICAgCi0gICAgQVNTRVJUKEhldXJpc3RpY3M6Om51bWJlck9mR0NN
YXJrZXJzKTsKKyAgICBBU1NFUlQoT3B0aW9uczo6bnVtYmVyT2ZHQ01hcmtlcnMpOwogICAgIAog
ICAgIGJvb2wgc2hvdWxkQmVQYXJhbGxlbDsKIAogI2lmIEVOQUJMRShQQVJBTExFTF9HQykKLSAg
ICBzaG91bGRCZVBhcmFsbGVsID0gSGV1cmlzdGljczo6bnVtYmVyT2ZHQ01hcmtlcnMgPiAxOwor
ICAgIHNob3VsZEJlUGFyYWxsZWwgPSBPcHRpb25zOjpudW1iZXJPZkdDTWFya2VycyA+IDE7CiAj
ZWxzZQotICAgIEFTU0VSVChIZXVyaXN0aWNzOjpudW1iZXJPZkdDTWFya2VycyA9PSAxKTsKKyAg
ICBBU1NFUlQoT3B0aW9uczo6bnVtYmVyT2ZHQ01hcmtlcnMgPT0gMSk7CiAgICAgc2hvdWxkQmVQ
YXJhbGxlbCA9IGZhbHNlOwogI2VuZGlmCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtTdGFjay5oCmluZGV4IGM1MDgwMTk0ODg3MDE5YzlhOGNkNDhiMzczNzc2ZDhhOGY5NzhkYTcu
LjhjYmRjNjI4ZTNkYTEzNGE1NGRkNWNhMTUzN2I2YTE0MGMxNjMwM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCkBAIC0yNyw3ICsyNyw3IEBACiAjZGVmaW5lIE1hcmtT
dGFja19oCiAKICNpbmNsdWRlICJIYW5kbGVUeXBlcy5oIgotI2luY2x1ZGUgIkhldXJpc3RpY3Mu
aCIKKyNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUg
IlJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiVW5jb25kaXRpb25hbEZpbmFsaXplci5oIgpAQCAtMjYx
LDcgKzI2MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgdm9pZCBtZXJn
ZU9wYXF1ZVJvb3RzSWZQcm9maXRhYmxlKCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihtX29wYXF1ZVJvb3RzLnNpemUoKSkgPCBIZXVyaXN0aWNzOjpv
cGFxdWVSb290TWVyZ2VUaHJlc2hvbGQpCisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1fb3BhcXVlUm9vdHMuc2l6ZSgpKSA8IE9wdGlvbnM6Om9wYXF1ZVJvb3RNZXJnZVRo
cmVzaG9sZCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBtZXJnZU9wYXF1
ZVJvb3RzKCk7CiAgICAgICAgIH0KQEAgLTMwOSw3ICszMDksNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBpbmxpbmUgdm9pZCBNYXJrU3RhY2s6OmFkZE9wYXF1ZVJvb3Qodm9pZCogcm9vdCkKICAg
ICB7CiAjaWYgRU5BQkxFKFBBUkFMTEVMX0dDKQotICAgICAgICBpZiAoSGV1cmlzdGljczo6bnVt
YmVyT2ZHQ01hcmtlcnMgPT0gMSkgeworICAgICAgICBpZiAoT3B0aW9uczo6bnVtYmVyT2ZHQ01h
cmtlcnMgPT0gMSkgewogICAgICAgICAgICAgLy8gUHV0IGRpcmVjdGx5IGludG8gdGhlIHNoYXJl
ZCBIYXNoU2V0LgogICAgICAgICAgICAgbV9zaGFyZWQubV9vcGFxdWVSb290cy5hZGQocm9vdCk7
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0zNzUsNyArMzc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBpbmxpbmUgYm9vbCBNYXJrU3RhY2tBcnJheTo6Y2FuRG9uYXRlU29tZUNlbGxzKCkK
ICAgICB7Ci0gICAgICAgIHNpemVfdCBudW1iZXJPZkNlbGxzVG9LZWVwID0gSGV1cmlzdGljczo6
bWluaW11bU51bWJlck9mQ2VsbHNUb0tlZXA7CisgICAgICAgIHNpemVfdCBudW1iZXJPZkNlbGxz
VG9LZWVwID0gT3B0aW9uczo6bWluaW11bU51bWJlck9mQ2VsbHNUb0tlZXA7CiAgICAgICAgIC8v
IEFub3RoZXIgY2hlY2s6IHNlZSBpZiB3ZSBoYXZlIGVub3VnaCBjZWxscyB0byB3YXJyYW50IGRv
bmF0aW9uLgogICAgICAgICBpZiAobV90b3AgPD0gbnVtYmVyT2ZDZWxsc1RvS2VlcCkgewogICAg
ICAgICAgICAgLy8gVGhpcyBpbmRpY2F0ZXMgdGhhdCB3ZSBtaWdodCBub3Qgd2FudCB0byBkb25h
dGUgYW55dGhpbmc7IGNoZWNrIGlmIHdlIGhhdmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9T
bG90VmlzaXRvci5oCmluZGV4IGE0NjE3ODE0YWU3ZTJmNjhhYjMyNDg5ZWU5ZWNlYTVhZWI4YzY2
MTIuLjY0N2IyY2JkYzE1YTdiNDQ1YjY5OWE0OTYwODUxNmFkYzEyYWY0NDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkb25hdGUoKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1faXNJblBhcmFsbGVs
TW9kZSk7Ci0gICAgICAgIGlmIChIZXVyaXN0aWNzOjpudW1iZXJPZkdDTWFya2VycyA9PSAxKQor
ICAgICAgICBpZiAoT3B0aW9uczo6bnVtYmVyT2ZHQ01hcmtlcnMgPT0gMSkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgCiAgICAgICAgIGRvbmF0ZUtub3duUGFyYWxsZWwoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA4MDFkOGRmNzJkNjdjYzg4ZjkyNDQ5NGUwY2FiZGQz
NDJiYTI1OTJiLi4xZTFhMTUyNDcwODA4NjYyODI4NWNkZmVjODkxZmY1YTk4ODNmZDNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgSklUOjplbWl0
T3B0aW1pemF0aW9uQ2hlY2soT3B0aW1pemF0aW9uQ2hlY2tLaW5kIGtpbmQpCiAgICAgaWYgKCFz
aG91bGRFbWl0UHJvZmlsaW5nKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBKdW1wIHNr
aXBPcHRpbWl6ZSA9IGJyYW5jaEFkZDMyKFNpZ25lZCwgVHJ1c3RlZEltbTMyKGtpbmQgPT0gTG9v
cE9wdGltaXphdGlvbkNoZWNrID8gSGV1cmlzdGljczo6ZXhlY3V0aW9uQ291bnRlckluY3JlbWVu
dEZvckxvb3AgOiBIZXVyaXN0aWNzOjpleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yUmV0dXJu
KSwgQWJzb2x1dGVBZGRyZXNzKG1fY29kZUJsb2NrLT5hZGRyZXNzT2ZFeGVjdXRlQ291bnRlcigp
KSk7CisgICAgSnVtcCBza2lwT3B0aW1pemUgPSBicmFuY2hBZGQzMihTaWduZWQsIFRydXN0ZWRJ
bW0zMihraW5kID09IExvb3BPcHRpbWl6YXRpb25DaGVjayA/IE9wdGlvbnM6OmV4ZWN1dGlvbkNv
dW50ZXJJbmNyZW1lbnRGb3JMb29wIDogT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlckluY3JlbWVu
dEZvclJldHVybiksIEFic29sdXRlQWRkcmVzcyhtX2NvZGVCbG9jay0+YWRkcmVzc09mRXhlY3V0
ZUNvdW50ZXIoKSkpOwogICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGtpbmQgPT0gTG9v
cE9wdGltaXphdGlvbkNoZWNrID8gY3RpX29wdGltaXplX2Zyb21fbG9vcCA6IGN0aV9vcHRpbWl6
ZV9mcm9tX3JldCk7CiAgICAgaWYgKGtpbmQgPT0gTG9vcE9wdGltaXphdGlvbkNoZWNrKQogICAg
ICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW0zMihtX2J5dGVjb2RlT2Zmc2V0KSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCmluZGV4IGZjMGM1NjA5MDJiMzZlOGY4YjlmZjU5MDkwNDBmM2JjMTk3NzMy
YzEuLjM2ZDNmN2EwNWE1ZmUxMzY4YjI5ZmQ1ZjhmMWQ1ZjljYjI1OWU4ZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwCkBAIC0xMDIsOCArMTAyLDggQEAgc3RydWN0IFNjcmlwdCB7CiAgICAgfQogfTsK
IAotc3RydWN0IE9wdGlvbnMgewotICAgIE9wdGlvbnMoKQorc3RydWN0IENvbW1hbmRMaW5lIHsK
KyAgICBDb21tYW5kTGluZSgpCiAgICAgICAgIDogaW50ZXJhY3RpdmUoZmFsc2UpCiAgICAgICAg
ICwgZHVtcChmYWxzZSkKICAgICB7CkBAIC01NDgsNyArNTQ4LDcgQEAgc3RhdGljIE5PX1JFVFVS
TiB2b2lkIHByaW50VXNhZ2VTdGF0ZW1lbnQoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBib29s
IGhlbHAgPQogICAgIGV4aXQoaGVscCA/IEVYSVRfU1VDQ0VTUyA6IEVYSVRfRkFJTFVSRSk7CiB9
CiAKLXN0YXRpYyB2b2lkIHBhcnNlQXJndW1lbnRzKGludCBhcmdjLCBjaGFyKiogYXJndiwgT3B0
aW9ucyYgb3B0aW9ucywgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQorc3RhdGljIHZvaWQgcGFy
c2VBcmd1bWVudHMoaW50IGFyZ2MsIGNoYXIqKiBhcmd2LCBDb21tYW5kTGluZSYgb3B0aW9ucywg
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogewogICAgIGludCBpID0gMTsKICAgICBmb3IgKDsg
aSA8IGFyZ2M7ICsraSkgewpAQCAtNjAyLDcgKzYwMiw3IEBAIGludCBqc2NtYWluKGludCBhcmdj
LCBjaGFyKiogYXJndiwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogewogICAgIEpTTG9jayBs
b2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAKLSAgICBPcHRpb25zIG9wdGlvbnM7CisgICAg
Q29tbWFuZExpbmUgb3B0aW9uczsKICAgICBwYXJzZUFyZ3VtZW50cyhhcmdjLCBhcmd2LCBvcHRp
b25zLCBnbG9iYWxEYXRhKTsKIAogICAgIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gR2xv
YmFsT2JqZWN0OjpjcmVhdGUoKmdsb2JhbERhdGEsIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0
dXJlKCpnbG9iYWxEYXRhLCBqc051bGwoKSksIG9wdGlvbnMuYXJndW1lbnRzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hldXJpc3RpY3MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGV1cmlzdGljcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGI1ZmRkOGE0NzM2NzA3MDAzM2M1NDMwMWFmMzQ4NWE1ZWZlZDI3YzguLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSGV1cmlzdGljcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMTEg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSGV1cmlzdGljcy5oIgotI2luY2x1ZGUgPHd0
Zi9QYWdlQmxvY2suaD4KLQotI2luY2x1ZGUgPGxpbWl0cz4KLQotI2lmIE9TKERBUldJTikgJiYg
RU5BQkxFKFBBUkFMTEVMX0dDKQotI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KLSNlbmRpZgotCi0v
LyBTZXQgdG8gMSB0byBjb250cm9sIHRoZSBoZXVyaXN0aWNzIHVzaW5nIGVudmlyb25tZW50IHZh
cmlhYmxlcy4KLSNkZWZpbmUgRU5BQkxFX1JVTl9USU1FX0hFVVJJU1RJQ1MgMAotCi0jaWYgRU5B
QkxFKFJVTl9USU1FX0hFVVJJU1RJQ1MpCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxz
dGRsaWIuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0jZW5kaWYKLQotbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBIZXVyaXN0aWNzIHsKLQotdW5zaWduZWQgbWF4aW11bUV2YWxP
cHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OwotdW5zaWduZWQgbWF4aW11bVBy
b2dyYW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OwotdW5zaWduZWQgbWF4
aW11bUZ1bmN0aW9uRm9yQ2FsbE9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7
Ci11bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RPcHRpbWl6YXRpb25DYW5kaWRh
dGVJbnN0cnVjdGlvbkNvdW50OwotCi11bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDYWxsSW5s
aW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKLXVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZv
ckNvbnN0cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7Ci0KLXVuc2lnbmVkIG1h
eGltdW1JbmxpbmluZ0RlcHRoOwotCi1pbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9w
dGltaXplQWZ0ZXJXYXJtVXA7Ci1pbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGlt
aXplQWZ0ZXJMb25nV2FybVVwOwotaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250
T3B0aW1pemVBbnl0aW1lU29vbjsKLWludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0
aW1pemVTb29uOwotaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZU5leHRJ
bnZvY2F0aW9uOwotCi1pbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JMb29wOwot
aW50MzJfdCBleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yUmV0dXJuOwotCi11bnNpZ25lZCBk
ZXNpcmVkU3BlY3VsYXRpdmVTdWNjZXNzRmFpbFJhdGlvOwotCi11bnNpZ25lZCBsaWtlbHlUb1Rh
a2VTbG93Q2FzZVRocmVzaG9sZDsKLXVuc2lnbmVkIGNvdWxkVGFrZVNsb3dDYXNlVGhyZXNob2xk
OwotCi11bnNpZ25lZCBsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2U7Ci11bnNpZ25lZCBsYXJn
ZUZhaWxDb3VudFRocmVzaG9sZEJhc2VGb3JMb29wOwotCi11bnNpZ25lZCByZW9wdGltaXphdGlv
blJldHJ5Q291bnRlck1heDsKLXVuc2lnbmVkIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyU3Rl
cDsKLQotdW5zaWduZWQgbWluaW11bU9wdGltaXphdGlvbkRlbGF5OwotdW5zaWduZWQgbWF4aW11
bU9wdGltaXphdGlvbkRlbGF5OwotZG91YmxlIGRlc2lyZWRQcm9maWxlTGl2ZW5lc3NSYXRlOwot
ZG91YmxlIGRlc2lyZWRQcm9maWxlRnVsbG5lc3NSYXRlOwotCi11bnNpZ25lZCBtaW5pbXVtTnVt
YmVyT2ZTY2Fuc0JldHdlZW5SZWJhbGFuY2U7Ci11bnNpZ25lZCBnY01hcmtTdGFja1NlZ21lbnRT
aXplOwotdW5zaWduZWQgbWluaW11bU51bWJlck9mQ2VsbHNUb0tlZXA7Ci11bnNpZ25lZCBtYXhp
bXVtTnVtYmVyT2ZTaGFyZWRTZWdtZW50czsKLXVuc2lnbmVkIHNoYXJlZFN0YWNrV2FrZXVwVGhy
ZXNob2xkOwotdW5zaWduZWQgbnVtYmVyT2ZHQ01hcmtlcnM7Ci11bnNpZ25lZCBvcGFxdWVSb290
TWVyZ2VUaHJlc2hvbGQ7Ci0KLSNpZiBFTkFCTEUoUlVOX1RJTUVfSEVVUklTVElDUykKLXN0YXRp
YyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywgaW50MzJfdCYgdmFsdWUpCi17Ci0gICAg
cmV0dXJuIHNzY2FuZihzdHJpbmcsICIlZCIsICZ2YWx1ZSkgPT0gMTsKLX0KLQotc3RhdGljIGJv
b2wgcGFyc2UoY29uc3QgY2hhciogc3RyaW5nLCB1bnNpZ25lZCYgdmFsdWUpCi17Ci0gICAgcmV0
dXJuIHNzY2FuZihzdHJpbmcsICIldSIsICZ2YWx1ZSkgPT0gMTsKLX0KLQotc3RhdGljIGJvb2wg
cGFyc2UoY29uc3QgY2hhciogc3RyaW5nLCBkb3VibGUmIHZhbHVlKQotewotICAgIHJldHVybiBz
c2NhbmYoc3RyaW5nLCAiJWxmIiwgJnZhbHVlKSA9PSAxOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPgotdm9pZCBzZXRIZXVyaXN0aWMoVCYgdmFyaWFibGUsIGNvbnN0IGNo
YXIqIG5hbWUsIFUgdmFsdWUpCi17Ci0gICAgY29uc3QgY2hhciogc3RyaW5nVmFsdWUgPSBnZXRl
bnYobmFtZSk7Ci0gICAgaWYgKCFzdHJpbmdWYWx1ZSkgewotICAgICAgICB2YXJpYWJsZSA9IHNh
ZmVDYXN0PFQ+KHZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBpZiAo
cGFyc2Uoc3RyaW5nVmFsdWUsIHZhcmlhYmxlKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAg
IGZwcmludGYoc3RkZXJyLCAiV0FSTklORzogZmFpbGVkIHRvIHBhcnNlICVzPSVzXG4iLCBuYW1l
LCBzdHJpbmdWYWx1ZSk7Ci0gICAgdmFyaWFibGUgPSBzYWZlQ2FzdDxUPih2YWx1ZSk7Ci19Ci0K
LSNkZWZpbmUgU0VUKHZhcmlhYmxlLCB2YWx1ZSkgc2V0SGV1cmlzdGljKHZhcmlhYmxlLCAiSlND
XyIgI3ZhcmlhYmxlLCB2YWx1ZSkKLSNlbHNlCi0jZGVmaW5lIFNFVCh2YXJpYWJsZSwgdmFsdWUp
IHZhcmlhYmxlID0gdmFsdWUKLSNlbmRpZgotCi12b2lkIGluaXRpYWxpemVIZXVyaXN0aWNzKCkK
LXsKLSAgICAvLyBGSVhNRTogTXVzdCByZXZpc2l0IHRoZXNlIGhldXJpc3RpY3MhIFRoZSBERkcs
IGJlaW5nIGFuIG9wdGltaXppbmcgY29tcGlsZXIsIG1heQotICAgIC8vIHRha2UgYSBsb25nIHRp
bWUgZm9yIHBhdGhvbG9naWNhbGx5IGh1Z2UgY29kZSBibG9ja3MuIFRoZSBiZXN0IHdheSB0byBj
b3BlIHdpdGgKLSAgICAvLyB0aGlzIGlzIHRvIHJlZnVzZSB0byBvcHRpbWl6ZSB0aGVtLgotICAg
IFNFVChtYXhpbXVtRXZhbE9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQsICAg
ICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwotICAg
IFNFVChtYXhpbXVtUHJvZ3JhbU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQs
ICAgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwotICAg
IFNFVChtYXhpbXVtRnVuY3Rpb25Gb3JDYWxsT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rp
b25Db3VudCwgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwotICAg
IFNFVChtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RPcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0
cnVjdGlvbkNvdW50LCBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwotICAg
IAotICAgIFNFVChtYXhpbXVtRnVuY3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rp
b25Db3VudCwgMTUwKTsKLSAgICBTRVQobWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saW5l
Q2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCwgODApOwotICAgIAotICAgIFNFVChtYXhpbXVtSW5s
aW5pbmdEZXB0aCwgNSk7Ci0KLSAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1p
emVBZnRlcldhcm1VcCwgICAgIC0xMDAwKTsKLSAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAsIC01MDAwKTsKLSAgICBTRVQoZXhlY3V0aW9uQ291
bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb24sIHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50MzJfdD46Om1pbigpKTsKLSAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1p
emVTb29uLCAgICAgICAgICAgIC0xMDAwKTsKLSAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9yT3B0aW1pemVOZXh0SW52b2NhdGlvbiwgIDApOwotCi0gICAgU0VUKGV4ZWN1dGlvbkNvdW50
ZXJJbmNyZW1lbnRGb3JMb29wLCAgIDEpOwotICAgIFNFVChleGVjdXRpb25Db3VudGVySW5jcmVt
ZW50Rm9yUmV0dXJuLCAxNSk7Ci0KLSAgICBTRVQoZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0Zh
aWxSYXRpbywgNik7Ci0gICAgCi0gICAgU0VUKGxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xk
LCAxMDApOwotICAgIFNFVChjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZCwgICAgMTApOyAvLyBT
aG91bGRuJ3QgYmUgemVybyBiZWNhdXNlIHNvbWUgb3BzIHdpbGwgc3B1cmlvdXNseSB0YWtlIHNs
b3cgY2FzZSwgZm9yIGV4YW1wbGUgZm9yIGxpbmtpbmcgb3IgY2FjaGluZy4KLQotICAgIFNFVChs
YXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2UsICAgICAgICAyMCk7Ci0gICAgU0VUKGxhcmdlRmFp
bENvdW50VGhyZXNob2xkQmFzZUZvckxvb3AsIDEpOwotCi0gICAgU0VUKHJlb3B0aW1pemF0aW9u
UmV0cnlDb3VudGVyU3RlcCwgMSk7Ci0KLSAgICBTRVQobWluaW11bU9wdGltaXphdGlvbkRlbGF5
LCAgIDEpOwotICAgIFNFVChtYXhpbXVtT3B0aW1pemF0aW9uRGVsYXksICAgNSk7Ci0gICAgU0VU
KGRlc2lyZWRQcm9maWxlTGl2ZW5lc3NSYXRlLCAwLjc1KTsKLSAgICBTRVQoZGVzaXJlZFByb2Zp
bGVGdWxsbmVzc1JhdGUsIDAuMzUpOwotICAgIAotICAgIFNFVChtaW5pbXVtTnVtYmVyT2ZTY2Fu
c0JldHdlZW5SZWJhbGFuY2UsIDEwMDAwKTsKLSAgICBTRVQoZ2NNYXJrU3RhY2tTZWdtZW50U2l6
ZSwgICAgICAgICAgICAgICBwYWdlU2l6ZSgpKTsKLSAgICBTRVQobWluaW11bU51bWJlck9mQ2Vs
bHNUb0tlZXAsICAgICAgICAgICAxMCk7Ci0gICAgU0VUKG1heGltdW1OdW1iZXJPZlNoYXJlZFNl
Z21lbnRzLCAgICAgICAgMyk7Ci0gICAgU0VUKHNoYXJlZFN0YWNrV2FrZXVwVGhyZXNob2xkLCAg
ICAgICAgICAgMSk7Ci0gICAgU0VUKG9wYXF1ZVJvb3RNZXJnZVRocmVzaG9sZCwgICAgICAgICAg
ICAgMTAwMCk7Ci0KLSAgICBpbnQgY3B1c1RvVXNlID0gMTsKLSNpZiBPUyhEQVJXSU4pICYmIEVO
QUJMRShQQVJBTExFTF9HQykKLSAgICBpbnQgbmFtZVsyXTsKLSAgICBzaXplX3QgdmFsdWVTaXpl
ID0gc2l6ZW9mKGNwdXNUb1VzZSk7Ci0gICAgbmFtZVswXSA9IENUTF9IVzsKLSAgICBuYW1lWzFd
ID0gSFdfQVZBSUxDUFU7Ci0gICAgc3lzY3RsKG5hbWUsIDIsICZjcHVzVG9Vc2UsICZ2YWx1ZVNp
emUsIDAsIDApOwotI2VuZGlmCi0gICAgLy8gV2UgZG9uJ3Qgc2NhbGUgc28gd2VsbCBiZXlvbmQg
NC4KLSAgICBpZiAoY3B1c1RvVXNlID4gNCkKLSAgICAgICAgY3B1c1RvVXNlID0gNDsKLSAgICAv
LyBCZSBwYXJhbm9pZCwgaXQgaXMgdGhlIE9TIHdlJ3JlIGRlYWxpbmcgd2l0aCwgYWZ0ZXIgYWxs
LgotICAgIGlmIChjcHVzVG9Vc2UgPCAxKQotICAgICAgICBjcHVzVG9Vc2UgPSAxOwotICAgIAot
ICAgIFNFVChudW1iZXJPZkdDTWFya2VycywgY3B1c1RvVXNlKTsKLQotICAgIEFTU0VSVChleGVj
dXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbiA8PSBleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCk7Ci0gICAgQVNTRVJUKGV4ZWN1
dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwIDw9IGV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXApOwotICAgIEFTU0VSVChleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwIDw9IGV4ZWN1dGlvbkNvdW50ZXJWYWx1
ZUZvck9wdGltaXplU29vbik7Ci0gICAgQVNTRVJUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9w
dGltaXplQWZ0ZXJXYXJtVXAgPCAwKTsKLSAgICBBU1NFUlQoZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9yT3B0aW1pemVTb29uIDw9IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplTmV4dElu
dm9jYXRpb24pOwotICAgIAotICAgIC8vIENvbXB1dGUgdGhlIG1heGltdW0gdmFsdWUgb2YgdGhl
IHJlb3B0aW1pemF0aW9uIHJldHJ5IGNvdW50ZXIuIFRoaXMgaXMgc2ltcGx5Ci0gICAgLy8gdGhl
IGxhcmdlc3QgdmFsdWUgYXQgd2hpY2ggd2UgZG9uJ3Qgb3ZlcmZsb3cgdGhlIGV4ZWN1dGUgY291
bnRlciwgd2hlbiB1c2luZyBpdAotICAgIC8vIHRvIGxlZnQtc2hpZnQgdGhlIGV4ZWN1dGlvbiBj
b3VudGVyIGJ5IHRoaXMgYW1vdW50LiBDdXJyZW50bHkgdGhlIHZhbHVlIGVuZHMKLSAgICAvLyB1
cCBiZWluZyAxOCwgc28gdGhpcyBsb29wIGlzIG5vdCBzbyB0ZXJyaWJsZTsgaXQgcHJvYmFibHkg
dGFrZXMgdXAgfjEwMCBjeWNsZXMKLSAgICAvLyB0b3RhbCBvbiBhIDMyLWJpdCBwcm9jZXNzb3Iu
Ci0gICAgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXggPSAwOwotICAgIHdoaWxlICgoc3Rh
dGljX2Nhc3Q8aW50NjRfdD4oZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxv
bmdXYXJtVXApIDw8IChyZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1heCArIDEpKSA+PSBzdGF0
aWNfY2FzdDxpbnQ2NF90PihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSkpCi0g
ICAgICAgIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4Kys7Ci0gICAgCi0gICAgQVNTRVJU
KChzdGF0aWNfY2FzdDxpbnQ2NF90PihleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFm
dGVyTG9uZ1dhcm1VcCkgPDwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXgpIDwgMCk7Ci0g
ICAgQVNTRVJUKChzdGF0aWNfY2FzdDxpbnQ2NF90PihleGVjdXRpb25Db3VudGVyVmFsdWVGb3JP
cHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCkgPDwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXgp
ID49IHN0YXRpY19jYXN0PGludDY0X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1p
bigpKSk7Ci19Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpIZXVyaXN0aWNzCi0KLQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGV1cmlzdGljcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGV1cmlzdGljcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBhMTQ4NTlmYThkY2ExMmFjYzFkZDMwMDViY2E3OWJhMjgzOGI3MGUxLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0hldXJpc3RpY3MuaAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRl
ZiBIZXVyaXN0aWNzX2gKLSNkZWZpbmUgSGV1cmlzdGljc19oCi0KLSNpbmNsdWRlIDxzdGRpbnQu
aD4KLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBIZXVyaXN0aWNzIHsKLQotZXh0ZXJuIHVu
c2lnbmVkIG1heGltdW1FdmFsT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsK
LWV4dGVybiB1bnNpZ25lZCBtYXhpbXVtUHJvZ3JhbU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3Ry
dWN0aW9uQ291bnQ7Ci1leHRlcm4gdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ2FsbE9wdGlt
aXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7Ci1leHRlcm4gdW5zaWduZWQgbWF4aW11
bUZ1bmN0aW9uRm9yQ29uc3RydWN0T3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3Vu
dDsKLQotZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNhbGxJbmxpbmVDYW5kaWRh
dGVJbnN0cnVjdGlvbkNvdW50OwotZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNv
bnN0cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7Ci0KLWV4dGVybiB1bnNpZ25l
ZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsgLy8gRGVwdGggb2YgaW5saW5lIHN0YWNrLCBzbyAxID0g
bm8gaW5saW5pbmcsIDIgPSBvbmUgbGV2ZWwsIGV0Yy4KLQotZXh0ZXJuIGludDMyX3QgZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcDsKLWV4dGVybiBpbnQzMl90IGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwOwotZXh0ZXJuIGlu
dDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247Ci1l
eHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZVNvb247Ci1leHRl
cm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZU5leHRJbnZvY2F0aW9u
OwotCi1leHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yTG9vcDsKLWV4
dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JSZXR1cm47Ci0KLWV4dGVy
biB1bnNpZ25lZCBkZXNpcmVkU3BlY3VsYXRpdmVTdWNjZXNzRmFpbFJhdGlvOwotCi1leHRlcm4g
dW5zaWduZWQgbGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7Ci1leHRlcm4gdW5zaWduZWQg
Y291bGRUYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7Ci0KLWV4dGVybiB1bnNpZ25lZCBsYXJnZUZhaWxD
b3VudFRocmVzaG9sZEJhc2U7Ci1leHRlcm4gdW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hv
bGRCYXNlRm9yTG9vcDsKLQotZXh0ZXJuIHVuc2lnbmVkIHJlb3B0aW1pemF0aW9uUmV0cnlDb3Vu
dGVyTWF4OwotZXh0ZXJuIHVuc2lnbmVkIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyU3RlcDsK
LQotZXh0ZXJuIHVuc2lnbmVkIG1pbmltdW1PcHRpbWl6YXRpb25EZWxheTsKLWV4dGVybiB1bnNp
Z25lZCBtYXhpbXVtT3B0aW1pemF0aW9uRGVsYXk7Ci1leHRlcm4gZG91YmxlIGRlc2lyZWRQcm9m
aWxlTGl2ZW5lc3NSYXRlOwotZXh0ZXJuIGRvdWJsZSBkZXNpcmVkUHJvZmlsZUZ1bGxuZXNzUmF0
ZTsKLQotZXh0ZXJuIHVuc2lnbmVkIG1pbmltdW1OdW1iZXJPZlNjYW5zQmV0d2VlblJlYmFsYW5j
ZTsKLWV4dGVybiB1bnNpZ25lZCBnY01hcmtTdGFja1NlZ21lbnRTaXplOwotZXh0ZXJuIHVuc2ln
bmVkIG1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVwOwotZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1O
dW1iZXJPZlNoYXJlZFNlZ21lbnRzOwotZXh0ZXJuIHVuc2lnbmVkIHNoYXJlZFN0YWNrV2FrZXVw
VGhyZXNob2xkOwotZXh0ZXJuIHVuc2lnbmVkIG51bWJlck9mR0NNYXJrZXJzOwotZXh0ZXJuIHVu
c2lnbmVkIG9wYXF1ZVJvb3RNZXJnZVRocmVzaG9sZDsKLQotdm9pZCBpbml0aWFsaXplSGV1cmlz
dGljcygpOwotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6SGV1cmlzdGljcwotCi0jZW5kaWYgLy8g
SGV1cmlzdGljc19oCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luaXRpYWxpemVUaHJlYWRpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKaW5kZXggM2EzNzFmOTUwZDNjZTNhMDc1M2Q4MGRmOGIy
Yjk0MzU2YzNmNWRkOC4uNjk4OTU3MmJlOGI5YmE0OWMxMDA1NjRkZTFmODY4MjI2MTJmNTNhNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVh
ZGluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRo
cmVhZGluZy5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxv
Y2F0b3IuaCIKICNpbmNsdWRlICJIZWFwLmgiCi0jaW5jbHVkZSAiSGV1cmlzdGljcy5oIgorI2lu
Y2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNE
YXRlTWF0aC5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCkBAIC01Myw3ICs1Myw3IEBA
IHN0YXRpYyB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmdPbmNlKCkKIHsKICAgICBXVEY6OmRvdWJs
ZV9jb252ZXJzaW9uOjppbml0aWFsaXplKCk7CiAgICAgV1RGOjppbml0aWFsaXplVGhyZWFkaW5n
KCk7Ci0gICAgSGV1cmlzdGljczo6aW5pdGlhbGl6ZUhldXJpc3RpY3MoKTsKKyAgICBPcHRpb25z
Ojppbml0aWFsaXplT3B0aW9ucygpOwogI2lmIEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElO
RykKICAgICBXcml0ZUJhcnJpZXJDb3VudGVyczo6aW5pdGlhbGl6ZSgpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEwMGRiOWM3
ZjZiMmI1ZjE0ZDA1YTdmOGI0Y2ZlMDhmMDkxMmEyYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcApAQCAtMCwwICsxLDIxMSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiT3B0aW9ucy5oIgorCisjaW5jbHVkZSA8bGltaXRzPgorI2lu
Y2x1ZGUgPHd0Zi9QYWdlQmxvY2suaD4KKworI2lmIE9TKERBUldJTikgJiYgRU5BQkxFKFBBUkFM
TEVMX0dDKQorI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyNlbmRpZgorCisvLyBTZXQgdG8gMSB0
byBjb250cm9sIHRoZSBoZXVyaXN0aWNzIHVzaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcy4KKyNk
ZWZpbmUgRU5BQkxFX1JVTl9USU1FX0hFVVJJU1RJQ1MgMAorCisjaWYgRU5BQkxFKFJVTl9USU1F
X0hFVVJJU1RJQ1MpCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBPcHRpb25zIHsKKwordW5zaWduZWQgbWF4aW11bUV2YWxPcHRpbWl6YXRpb25DYW5k
aWRhdGVJbnN0cnVjdGlvbkNvdW50OwordW5zaWduZWQgbWF4aW11bVByb2dyYW1PcHRpbWl6YXRp
b25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OwordW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9y
Q2FsbE9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7Cit1bnNpZ25lZCBtYXhp
bXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RPcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNv
dW50OworCit1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5z
dHJ1Y3Rpb25Db3VudDsKK3Vuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGlu
ZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CisKK3Vuc2lnbmVkIG1heGltdW1JbmxpbmluZ0Rl
cHRoOworCitpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJt
VXA7CitpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2Fy
bVVwOworaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1l
U29vbjsKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVTb29uOworaW50
MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZU5leHRJbnZvY2F0aW9uOworCitp
bnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JMb29wOworaW50MzJfdCBleGVjdXRp
b25Db3VudGVySW5jcmVtZW50Rm9yUmV0dXJuOworCit1bnNpZ25lZCBkZXNpcmVkU3BlY3VsYXRp
dmVTdWNjZXNzRmFpbFJhdGlvOworCit1bnNpZ25lZCBsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVz
aG9sZDsKK3Vuc2lnbmVkIGNvdWxkVGFrZVNsb3dDYXNlVGhyZXNob2xkOworCit1bnNpZ25lZCBs
YXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2U7Cit1bnNpZ25lZCBsYXJnZUZhaWxDb3VudFRocmVz
aG9sZEJhc2VGb3JMb29wOworCit1bnNpZ25lZCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1h
eDsKK3Vuc2lnbmVkIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyU3RlcDsKKwordW5zaWduZWQg
bWluaW11bU9wdGltaXphdGlvbkRlbGF5OwordW5zaWduZWQgbWF4aW11bU9wdGltaXphdGlvbkRl
bGF5OworZG91YmxlIGRlc2lyZWRQcm9maWxlTGl2ZW5lc3NSYXRlOworZG91YmxlIGRlc2lyZWRQ
cm9maWxlRnVsbG5lc3NSYXRlOworCit1bnNpZ25lZCBtaW5pbXVtTnVtYmVyT2ZTY2Fuc0JldHdl
ZW5SZWJhbGFuY2U7Cit1bnNpZ25lZCBnY01hcmtTdGFja1NlZ21lbnRTaXplOwordW5zaWduZWQg
bWluaW11bU51bWJlck9mQ2VsbHNUb0tlZXA7Cit1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZTaGFy
ZWRTZWdtZW50czsKK3Vuc2lnbmVkIHNoYXJlZFN0YWNrV2FrZXVwVGhyZXNob2xkOwordW5zaWdu
ZWQgbnVtYmVyT2ZHQ01hcmtlcnM7Cit1bnNpZ25lZCBvcGFxdWVSb290TWVyZ2VUaHJlc2hvbGQ7
CisKKyNpZiBFTkFCTEUoUlVOX1RJTUVfSEVVUklTVElDUykKK3N0YXRpYyBib29sIHBhcnNlKGNv
bnN0IGNoYXIqIHN0cmluZywgaW50MzJfdCYgdmFsdWUpCit7CisgICAgcmV0dXJuIHNzY2FuZihz
dHJpbmcsICIlZCIsICZ2YWx1ZSkgPT0gMTsKK30KKworc3RhdGljIGJvb2wgcGFyc2UoY29uc3Qg
Y2hhciogc3RyaW5nLCB1bnNpZ25lZCYgdmFsdWUpCit7CisgICAgcmV0dXJuIHNzY2FuZihzdHJp
bmcsICIldSIsICZ2YWx1ZSkgPT0gMTsKK30KKworc3RhdGljIGJvb2wgcGFyc2UoY29uc3QgY2hh
ciogc3RyaW5nLCBkb3VibGUmIHZhbHVlKQoreworICAgIHJldHVybiBzc2NhbmYoc3RyaW5nLCAi
JWxmIiwgJnZhbHVlKSA9PSAxOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
Pgordm9pZCBzZXRIZXVyaXN0aWMoVCYgdmFyaWFibGUsIGNvbnN0IGNoYXIqIG5hbWUsIFUgdmFs
dWUpCit7CisgICAgY29uc3QgY2hhciogc3RyaW5nVmFsdWUgPSBnZXRlbnYobmFtZSk7CisgICAg
aWYgKCFzdHJpbmdWYWx1ZSkgeworICAgICAgICB2YXJpYWJsZSA9IHNhZmVDYXN0PFQ+KHZhbHVl
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAocGFyc2Uoc3RyaW5nVmFs
dWUsIHZhcmlhYmxlKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGZwcmludGYoc3RkZXJy
LCAiV0FSTklORzogZmFpbGVkIHRvIHBhcnNlICVzPSVzXG4iLCBuYW1lLCBzdHJpbmdWYWx1ZSk7
CisgICAgdmFyaWFibGUgPSBzYWZlQ2FzdDxUPih2YWx1ZSk7Cit9CisKKyNkZWZpbmUgU0VUKHZh
cmlhYmxlLCB2YWx1ZSkgc2V0SGV1cmlzdGljKHZhcmlhYmxlLCAiSlNDXyIgI3ZhcmlhYmxlLCB2
YWx1ZSkKKyNlbHNlCisjZGVmaW5lIFNFVCh2YXJpYWJsZSwgdmFsdWUpIHZhcmlhYmxlID0gdmFs
dWUKKyNlbmRpZgorCit2b2lkIGluaXRpYWxpemVPcHRpb25zKCkKK3sKKyAgICAvLyBGSVhNRTog
TXVzdCByZXZpc2l0IHRoZXNlIGhldXJpc3RpY3MhIFRoZSBERkcsIGJlaW5nIGFuIG9wdGltaXpp
bmcgY29tcGlsZXIsIG1heQorICAgIC8vIHRha2UgYSBsb25nIHRpbWUgZm9yIHBhdGhvbG9naWNh
bGx5IGh1Z2UgY29kZSBibG9ja3MuIFRoZSBiZXN0IHdheSB0byBjb3BlIHdpdGgKKyAgICAvLyB0
aGlzIGlzIHRvIHJlZnVzZSB0byBvcHRpbWl6ZSB0aGVtLgorICAgIFNFVChtYXhpbXVtRXZhbE9w
dGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQsICAgICAgICAgICAgICAgICBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOworICAgIFNFVChtYXhpbXVtUHJvZ3Jh
bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQsICAgICAgICAgICAgICBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOworICAgIFNFVChtYXhpbXVtRnVuY3Rp
b25Gb3JDYWxsT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCwgICAgICBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOworICAgIFNFVChtYXhpbXVtRnVuY3Rp
b25Gb3JDb25zdHJ1Y3RPcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50LCBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOworICAgIAorICAgIFNFVChtYXhpbXVt
RnVuY3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCwgMTUwKTsKKyAg
ICBTRVQobWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rp
b25Db3VudCwgODApOworICAgIAorICAgIFNFVChtYXhpbXVtSW5saW5pbmdEZXB0aCwgNSk7CisK
KyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCwgICAg
IC0xMDAwKTsKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxv
bmdXYXJtVXAsIC01MDAwKTsKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9w
dGltaXplQW55dGltZVNvb24sIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKTsK
KyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVTb29uLCAgICAgICAgICAg
IC0xMDAwKTsKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVOZXh0SW52
b2NhdGlvbiwgIDApOworCisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JMb29w
LCAgIDEpOworICAgIFNFVChleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yUmV0dXJuLCAxNSk7
CisKKyAgICBTRVQoZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbywgNik7CisgICAg
CisgICAgU0VUKGxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkLCAxMDApOworICAgIFNFVChj
b3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZCwgICAgMTApOyAvLyBTaG91bGRuJ3QgYmUgemVybyBi
ZWNhdXNlIHNvbWUgb3BzIHdpbGwgc3B1cmlvdXNseSB0YWtlIHNsb3cgY2FzZSwgZm9yIGV4YW1w
bGUgZm9yIGxpbmtpbmcgb3IgY2FjaGluZy4KKworICAgIFNFVChsYXJnZUZhaWxDb3VudFRocmVz
aG9sZEJhc2UsICAgICAgICAyMCk7CisgICAgU0VUKGxhcmdlRmFpbENvdW50VGhyZXNob2xkQmFz
ZUZvckxvb3AsIDEpOworCisgICAgU0VUKHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyU3RlcCwg
MSk7CisKKyAgICBTRVQobWluaW11bU9wdGltaXphdGlvbkRlbGF5LCAgIDEpOworICAgIFNFVCht
YXhpbXVtT3B0aW1pemF0aW9uRGVsYXksICAgNSk7CisgICAgU0VUKGRlc2lyZWRQcm9maWxlTGl2
ZW5lc3NSYXRlLCAwLjc1KTsKKyAgICBTRVQoZGVzaXJlZFByb2ZpbGVGdWxsbmVzc1JhdGUsIDAu
MzUpOworICAgIAorICAgIFNFVChtaW5pbXVtTnVtYmVyT2ZTY2Fuc0JldHdlZW5SZWJhbGFuY2Us
IDEwMDAwKTsKKyAgICBTRVQoZ2NNYXJrU3RhY2tTZWdtZW50U2l6ZSwgICAgICAgICAgICAgICBw
YWdlU2l6ZSgpKTsKKyAgICBTRVQobWluaW11bU51bWJlck9mQ2VsbHNUb0tlZXAsICAgICAgICAg
ICAxMCk7CisgICAgU0VUKG1heGltdW1OdW1iZXJPZlNoYXJlZFNlZ21lbnRzLCAgICAgICAgMyk7
CisgICAgU0VUKHNoYXJlZFN0YWNrV2FrZXVwVGhyZXNob2xkLCAgICAgICAgICAgMSk7CisgICAg
U0VUKG9wYXF1ZVJvb3RNZXJnZVRocmVzaG9sZCwgICAgICAgICAgICAgMTAwMCk7CisKKyAgICBp
bnQgY3B1c1RvVXNlID0gMTsKKyNpZiBPUyhEQVJXSU4pICYmIEVOQUJMRShQQVJBTExFTF9HQykK
KyAgICBpbnQgbmFtZVsyXTsKKyAgICBzaXplX3QgdmFsdWVTaXplID0gc2l6ZW9mKGNwdXNUb1Vz
ZSk7CisgICAgbmFtZVswXSA9IENUTF9IVzsKKyAgICBuYW1lWzFdID0gSFdfQVZBSUxDUFU7Cisg
ICAgc3lzY3RsKG5hbWUsIDIsICZjcHVzVG9Vc2UsICZ2YWx1ZVNpemUsIDAsIDApOworI2VuZGlm
CisgICAgLy8gV2UgZG9uJ3Qgc2NhbGUgc28gd2VsbCBiZXlvbmQgNC4KKyAgICBpZiAoY3B1c1Rv
VXNlID4gNCkKKyAgICAgICAgY3B1c1RvVXNlID0gNDsKKyAgICAvLyBCZSBwYXJhbm9pZCwgaXQg
aXMgdGhlIE9TIHdlJ3JlIGRlYWxpbmcgd2l0aCwgYWZ0ZXIgYWxsLgorICAgIGlmIChjcHVzVG9V
c2UgPCAxKQorICAgICAgICBjcHVzVG9Vc2UgPSAxOworICAgIAorICAgIFNFVChudW1iZXJPZkdD
TWFya2VycywgY3B1c1RvVXNlKTsKKworICAgIEFTU0VSVChleGVjdXRpb25Db3VudGVyVmFsdWVG
b3JEb250T3B0aW1pemVBbnl0aW1lU29vbiA8PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRp
bWl6ZUFmdGVyTG9uZ1dhcm1VcCk7CisgICAgQVNTRVJUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ck9wdGltaXplQWZ0ZXJMb25nV2FybVVwIDw9IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGlt
aXplQWZ0ZXJXYXJtVXApOworICAgIEFTU0VSVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRp
bWl6ZUFmdGVyV2FybVVwIDw9IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbik7
CisgICAgQVNTRVJUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAg
PCAwKTsKKyAgICBBU1NFUlQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVTb29uIDw9
IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplTmV4dEludm9jYXRpb24pOworICAgIAor
ICAgIC8vIENvbXB1dGUgdGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIHJlb3B0aW1pemF0aW9uIHJl
dHJ5IGNvdW50ZXIuIFRoaXMgaXMgc2ltcGx5CisgICAgLy8gdGhlIGxhcmdlc3QgdmFsdWUgYXQg
d2hpY2ggd2UgZG9uJ3Qgb3ZlcmZsb3cgdGhlIGV4ZWN1dGUgY291bnRlciwgd2hlbiB1c2luZyBp
dAorICAgIC8vIHRvIGxlZnQtc2hpZnQgdGhlIGV4ZWN1dGlvbiBjb3VudGVyIGJ5IHRoaXMgYW1v
dW50LiBDdXJyZW50bHkgdGhlIHZhbHVlIGVuZHMKKyAgICAvLyB1cCBiZWluZyAxOCwgc28gdGhp
cyBsb29wIGlzIG5vdCBzbyB0ZXJyaWJsZTsgaXQgcHJvYmFibHkgdGFrZXMgdXAgfjEwMCBjeWNs
ZXMKKyAgICAvLyB0b3RhbCBvbiBhIDMyLWJpdCBwcm9jZXNzb3IuCisgICAgcmVvcHRpbWl6YXRp
b25SZXRyeUNvdW50ZXJNYXggPSAwOworICAgIHdoaWxlICgoc3RhdGljX2Nhc3Q8aW50NjRfdD4o
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApIDw8IChyZW9w
dGltaXphdGlvblJldHJ5Q291bnRlck1heCArIDEpKSA+PSBzdGF0aWNfY2FzdDxpbnQ2NF90Pihz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSkpCisgICAgICAgIHJlb3B0aW1pemF0
aW9uUmV0cnlDb3VudGVyTWF4Kys7CisgICAgCisgICAgQVNTRVJUKChzdGF0aWNfY2FzdDxpbnQ2
NF90PihleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCkgPDwg
cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXgpIDwgMCk7CisgICAgQVNTRVJUKChzdGF0aWNf
Y2FzdDxpbnQ2NF90PihleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dh
cm1VcCkgPDwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXgpID49IHN0YXRpY19jYXN0PGlu
dDY0X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKSk7Cit9CisKK30gfSAv
LyBuYW1lc3BhY2UgSlNDOjpPcHRpb25zCisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwOWIzOTIxMjkzMjgyYzEyNWI5NTdmMTJiYjRlYjViYTVj
ZmUxYWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIE9wdGlvbnNfaAorI2RlZmluZSBPcHRpb25zX2gKKwor
I2luY2x1ZGUgPHN0ZGludC5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIE9wdGlvbnMg
eworCitleHRlcm4gdW5zaWduZWQgbWF4aW11bUV2YWxPcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0
cnVjdGlvbkNvdW50OworZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1Qcm9ncmFtT3B0aW1pemF0aW9u
Q2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKK2V4dGVybiB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rp
b25Gb3JDYWxsT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKK2V4dGVybiB1
bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RPcHRpbWl6YXRpb25DYW5kaWRhdGVJ
bnN0cnVjdGlvbkNvdW50OworCitleHRlcm4gdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ2Fs
bElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CitleHRlcm4gdW5zaWduZWQgbWF4aW11
bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKKwor
ZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1JbmxpbmluZ0RlcHRoOyAvLyBEZXB0aCBvZiBpbmxpbmUg
c3RhY2ssIHNvIDEgPSBubyBpbmxpbmluZywgMiA9IG9uZSBsZXZlbCwgZXRjLgorCitleHRlcm4g
aW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOworZXh0
ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJt
VXA7CitleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVB
bnl0aW1lU29vbjsKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGlt
aXplU29vbjsKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXpl
TmV4dEludm9jYXRpb247CisKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1l
bnRGb3JMb29wOworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvclJl
dHVybjsKKworZXh0ZXJuIHVuc2lnbmVkIGRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0
aW87CisKK2V4dGVybiB1bnNpZ25lZCBsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKK2V4
dGVybiB1bnNpZ25lZCBjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZDsKKworZXh0ZXJuIHVuc2ln
bmVkIGxhcmdlRmFpbENvdW50VGhyZXNob2xkQmFzZTsKK2V4dGVybiB1bnNpZ25lZCBsYXJnZUZh
aWxDb3VudFRocmVzaG9sZEJhc2VGb3JMb29wOworCitleHRlcm4gdW5zaWduZWQgcmVvcHRpbWl6
YXRpb25SZXRyeUNvdW50ZXJNYXg7CitleHRlcm4gdW5zaWduZWQgcmVvcHRpbWl6YXRpb25SZXRy
eUNvdW50ZXJTdGVwOworCitleHRlcm4gdW5zaWduZWQgbWluaW11bU9wdGltaXphdGlvbkRlbGF5
OworZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1PcHRpbWl6YXRpb25EZWxheTsKK2V4dGVybiBkb3Vi
bGUgZGVzaXJlZFByb2ZpbGVMaXZlbmVzc1JhdGU7CitleHRlcm4gZG91YmxlIGRlc2lyZWRQcm9m
aWxlRnVsbG5lc3NSYXRlOworCitleHRlcm4gdW5zaWduZWQgbWluaW11bU51bWJlck9mU2NhbnNC
ZXR3ZWVuUmViYWxhbmNlOworZXh0ZXJuIHVuc2lnbmVkIGdjTWFya1N0YWNrU2VnbWVudFNpemU7
CitleHRlcm4gdW5zaWduZWQgbWluaW11bU51bWJlck9mQ2VsbHNUb0tlZXA7CitleHRlcm4gdW5z
aWduZWQgbWF4aW11bU51bWJlck9mU2hhcmVkU2VnbWVudHM7CitleHRlcm4gdW5zaWduZWQgc2hh
cmVkU3RhY2tXYWtldXBUaHJlc2hvbGQ7CitleHRlcm4gdW5zaWduZWQgbnVtYmVyT2ZHQ01hcmtl
cnM7CitleHRlcm4gdW5zaWduZWQgb3BhcXVlUm9vdE1lcmdlVGhyZXNob2xkOworCit2b2lkIGlu
aXRpYWxpemVPcHRpb25zKCk7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpPcHRpb25zCisKKyNl
bmRpZiAvLyBPcHRpb25zX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RSZWdFeHAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCmluZGV4
IDdmOWZhN2FhYzJhOTVkOWYzYWU4MzIyZTM2NGNhZDJjZDNjMzUyMzkuLmNmZGQ5YTFmNWVmMTJi
MTY0MjNiN2Y0NTcyNmZjZDE0OTQzMGE0NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0UmVnRXhwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4
cC5jcHAKQEAgLTU2LDggKzU2LDggQEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKIAogc3RhdGljIHZv
aWQgY2xlYW51cEdsb2JhbERhdGEoSlNHbG9iYWxEYXRhKik7CiAKLXN0cnVjdCBPcHRpb25zIHsK
LSAgICBPcHRpb25zKCkKK3N0cnVjdCBDb21tYW5kTGluZSB7CisgICAgQ29tbWFuZExpbmUoKQog
ICAgICAgICA6IGludGVyYWN0aXZlKGZhbHNlKQogICAgICAgICAsIHZlcmJvc2UoZmFsc2UpCiAg
ICAgewpAQCAtNDkwLDcgKzQ5MCw3IEBAIHN0YXRpYyBOT19SRVRVUk4gdm9pZCBwcmludFVzYWdl
U3RhdGVtZW50KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgYm9vbCBoZWxwID0KICAgICBleGl0
KGhlbHAgPyBFWElUX1NVQ0NFU1MgOiBFWElUX0ZBSUxVUkUpOwogfQogCi1zdGF0aWMgdm9pZCBw
YXJzZUFyZ3VtZW50cyhpbnQgYXJnYywgY2hhcioqIGFyZ3YsIE9wdGlvbnMmIG9wdGlvbnMsIEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3N0YXRpYyB2b2lkIHBhcnNlQXJndW1lbnRzKGludCBh
cmdjLCBjaGFyKiogYXJndiwgQ29tbWFuZExpbmUmIG9wdGlvbnMsIEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSkKIHsKICAgICBpbnQgaSA9IDE7CiAgICAgZm9yICg7IGkgPCBhcmdjOyArK2kpIHsK
QEAgLTUxMSw3ICs1MTEsNyBAQCBpbnQgcmVhbE1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2LCBK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiB7CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2Vy
dGlvbnNPbmx5KTsKIAotICAgIE9wdGlvbnMgb3B0aW9uczsKKyAgICBDb21tYW5kTGluZSBvcHRp
b25zOwogICAgIHBhcnNlQXJndW1lbnRzKGFyZ2MsIGFyZ3YsIG9wdGlvbnMsIGdsb2JhbERhdGEp
OwogCiAgICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNyZWF0
ZSgqZ2xvYmFsRGF0YSwgR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKmdsb2JhbERhdGEs
IGpzTnVsbCgpKSwgb3B0aW9ucy5hcmd1bWVudHMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116496</attachid>
            <date>2011-11-24 04:20:36 -0800</date>
            <delta_ts>2011-11-29 09:02:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72889-20111124132034.patch</filename>
            <type>text/plain</type>
            <size>64662</size>
            <attacher name="Andy Wingo">wingo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NGU0ZTMxM2NhNTNjOGQ4Y2M3NzIxNmM4MWFjNzYxZjM3MGI0MzFhLi40YWNjNjFlM2E0YTI5ZTNl
MTkxMWE2MmE2ZGM3MjY2OWM2NDY4N2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NyBAQAorMjAxMS0xMS0yMiAgQW5keSBXaW5nbyAgPHdpbmdvQGlnYWxpYS5jb20+CisK
KyAgICAgICAgUmVuYW1lIEpTQzo6SGV1cmlzdGljcyB0byBKU0M6Ok9wdGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyODg5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMu
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGV1cmlzdGlj
cy5jcHAuCisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmguCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6c2hvdWxkT3B0aW1pemVOb3cpOgorICAgICAgICAqIGJ5dGVj
b2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZVNs
b3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjb3VsZFRha2VTbG93Q2FzZSk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlU3BlY2lhbEZhc3RDYXNlKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rha2VEZWVwZXN0U2xvd0Nhc2UpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZUFueVNsb3dDYXNlKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpyZW9wdGltaXphdGlvblJldHJ5Q291bnRlcik6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6Y291bnRSZW9wdGltaXphdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6Y291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6Y291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6Om9wdGltaXplTmV4dEludm9jYXRpb24pOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmRvbnRPcHRpbWl6ZUFueXRpbWVTb29uKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpvcHRpbWl6ZVNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxhcmdl
RmFpbENvdW50VGhyZXNob2xkKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsYXJnZUZhaWxD
b3VudFRocmVzaG9sZEZvckxvb3ApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNob3VsZFJl
b3B0aW1pemVOb3cpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNob3VsZFJlb3B0aW1pemVG
cm9tTG9vcE5vdyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAq
IGRmZy9ERkdDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjptaWdodENvbXBpbGVF
dmFsKToKKyAgICAgICAgKEpTQzo6REZHOjptaWdodENvbXBpbGVQcm9ncmFtKToKKyAgICAgICAg
KEpTQzo6REZHOjptaWdodENvbXBpbGVGdW5jdGlvbkZvckNhbGwpOgorICAgICAgICAoSlNDOjpE
Rkc6Om1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6REZH
OjptaWdodElubGluZUZ1bmN0aW9uRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6bWlnaHRJ
bmxpbmVGdW5jdGlvbkZvckNvbnN0cnVjdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21w
aWxlcjMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmNvbXBp
bGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGhl
YXAvTWFya1N0YWNrLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrU2VnbWVudEFsbG9jYXRv
cjo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2tTZWdtZW50QWxsb2NhdG9yOjpz
aHJpbmtSZXNlcnZlKToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrQXJyYXk6Ok1hcmtTdGFja0Fy
cmF5KToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrQXJyYXk6OmRvbmF0ZVNvbWVDZWxsc1RvKToK
KyAgICAgICAgKEpTQzo6TWFya1N0YWNrQXJyYXk6OnN0ZWFsU29tZUNlbGxzRnJvbSk6CisgICAg
ICAgIChKU0M6Ok1hcmtTdGFja1RocmVhZFNoYXJlZERhdGE6Ok1hcmtTdGFja1RocmVhZFNoYXJl
ZERhdGEpOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6ZG9uYXRlU2xvdyk6CisgICAgICAg
IChKU0M6OlNsb3RWaXNpdG9yOjpkcmFpbik6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjpk
cmFpbkZyb21TaGFyZWQpOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmg6CisgICAgICAgIChK
U0M6Ok1hcmtTdGFjazo6bWVyZ2VPcGFxdWVSb290c0lmUHJvZml0YWJsZSk6CisgICAgICAgIChK
U0M6Ok1hcmtTdGFjazo6YWRkT3BhcXVlUm9vdCk6CisgICAgICAgIChKU0M6Ok1hcmtTdGFja0Fy
cmF5OjpjYW5Eb25hdGVTb21lQ2VsbHMpOgorICAgICAgICAqIGhlYXAvU2xvdFZpc2l0b3IuaDoK
KyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmRvbmF0ZSk6CisgICAgICAgICogaml0L0pJVC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE9wdGltaXphdGlvbkNoZWNrKToKKyAgICAgICAg
KiBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwOgorICAgICAgICAoSlNDOjppbml0aWFs
aXplVGhyZWFkaW5nT25jZSk6IEFkYXB0IGNhbGxlcnMgYW5kIGJ1aWxkIHN5c3RlbXMuCisKKyAg
ICAgICAgKiB0ZXN0UmVnRXhwLmNwcDoKKyAgICAgICAgKENvbW1hbmRMaW5lOjpDb21tYW5kTGlu
ZSk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKENvbW1hbmRMaW5lOjpDb21tYW5kTGlu
ZSk6CisgICAgICAgIFJlbmFtZSBmcm9tIE9wdGlvbnMsIHRvIGF2b2lkIG5hbWUgY29uZmxpY3Qu
CisKIDIwMTEtMTEtMjQgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgW1F0XSBVc2UgUUV2ZW50IGZvciBkaXNwYXRjaEZ1bmN0aW9uc0Zyb21NYWluVGhy
ZWFkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA1NDcxOTk0NmEyY2Zj
ZjVmZTEyYzZlZGVkZWEzODAzOGNhZTRmNDUxLi4zMDM0MzQ2MDU0YzAzNWM1YzdkNjBjMTQyZGFm
MWU1ZWEwNzdmYTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMzQs
NyArMTM0LDYgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0Z1bmN0
aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAogICAg
IHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAotICAgIHJ1bnRpbWUvSGV1cmlzdGljcy5jcHAKICAg
ICBydW50aW1lL0lkZW50aWZpZXIuY3BwCiAgICAgcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5n
LmNwcAogICAgIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKQEAgLTE3MSw2ICsxNzAsNyBA
QCBTRVQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuY3BwCiAgICAgcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9PcGVy
YXRpb25zLmNwcAorICAgIHJ1bnRpbWUvT3B0aW9ucy5jcHAKICAgICBydW50aW1lL1Byb3BlcnR5
RGVzY3JpcHRvci5jcHAKICAgICBydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcAogICAgIHJ1
bnRpbWUvUHJvcGVydHlTbG90LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQppbmRleCA3ZDVmZGQ1ZDlkYmEwMDcxYjk4OTE0NmM5M2U3YTBiNWZjNmJkZDMwLi42
YzhkMmQ2OGNiYWZiY2E1NzE2ZDFjYmQzMDI0ZTczZDBmOWMzYzA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzU3LDggKzM1Nyw2IEBAIGphdmFzY3Jp
cHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0
aXZpdHlDYWxsYmFjay5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJT
ZXR0ZXIuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIu
aCBcCi0JU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGV1cmlzdGljcy5jcHAgXAotCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hldXJpc3RpY3MuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0lkZW50aWZpZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgXApAQCAtNDM3LDYgKzQzNSw4IEBAIGphdmFzY3JpcHRj
b3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFBy
b3RvdHlwZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNw
cCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oIFwKKwlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcCBcCisJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eURlc2NyaXB0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlNYXBIYXNoVGFibGUuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCmluZGV4IGE3OTNkZDdlZDViOWMwNTZkMzI0
NjNmMGQzYTBhMWJkMzk4OGMyZDMuLjg4ODI2OTYyMzg5NGQ4NGVhMjI0MjY4NDgwZWU5NGU5Y2M1
MTg4YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qCkBAIC03MzQsMTQgKzczNCw2IEBACiAJCQkJPgogCQkJPC9GaWxlPgog
CQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcSGV1cmlzdGljcy5jcHAi
Ci0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1
bnRpbWVcSGV1cmlzdGljcy5oIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCiAJCQkJUmVs
YXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXElkZW50aWZpZXIuY3BwIgogCQkJCT4KIAkJCTwvRmls
ZT4KQEAgLTEwMzgsNiArMTAzMCwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXE9wdGlvbnMuY3BwIgorCQkJCT4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXE9wdGlvbnMu
aCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5c
cnVudGltZVxQcm9wZXJ0eURlc2NyaXB0b3IuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjI3ZTcxM2E3OTM0OTNhYTJmNTYxY2M0YjFlNDFi
MmUxNzc4YzcwOS4uNjY2YTZlZmY3MDM4MzkwNTU1ZDI5ZjUzMTdiNmIxMTI2OTlhNjA4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNCw4ICsxMDQsOCBAQAogCQkwRkQ4MkU5
MDE0MjA3QTVGMDAxNzlDOTQgLyogVmFsdWVQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgyRThFMTQyMDdBNTEwMDE3OUM5NCAvKiBW
YWx1ZVByb2ZpbGUuY3BwICovOyB9OwogCQkwRkQ4MkVGNTE0MjMwNzVCMDAxNzlDOTQgLyogREZH
SW50cmluc2ljLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkQ4MkVGMzE0MjMwNzM5MDAxNzlDOTQgLyogREZHSW50cmluc2ljLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZEODJGNEIxNDI4MDZBMTAw
MTc5Qzk0IC8qIEJpdFZlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZEODJGNDkxNDI4MDY5MjAwMTc5Qzk0IC8qIEJpdFZlY3Rvci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGRTIyOEVEMTQz
NkFCMjcwMDE5NkM0OCAvKiBIZXVyaXN0aWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkUyMjhFQjE0MzZBQjIzMDAxOTZDNDggLyogSGV1cmlzdGlj
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBG
RTIyOEVFMTQzNkFCMkMwMDE5NkM0OCAvKiBIZXVyaXN0aWNzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTIyOEVBMTQzNkFCMjMwMDE5NkM0OCAv
KiBIZXVyaXN0aWNzLmNwcCAqLzsgfTsKKwkJMEZFMjI4RUQxNDM2QUIyNzAwMTk2QzQ4IC8qIE9w
dGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZFMjI4RUUxNDM2QUIyQzAwMTk2QzQ4IC8q
IE9wdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZFMjI4RUExNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwICovOyB9OwogCQkwRkZG
NEJCNDE0Mzk1NUU5MDA2NTVCQzAgLyogREZHU3RydWN0dXJlU2V0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGNEJCMjE0Mzk1NUU2MDA2NTVCQzAg
LyogREZHU3RydWN0dXJlU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMTQwMDA2NzcxMkE2Rjc4MzAwNjREMTIzIC8qIE9TQWxsb2NhdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAwMDY3NjEy
QTZGNzgzMDA2NEQxMjMgLyogT1NBbGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDAwMDY5MzEyQTZGOUUxMDA2NEQxMjMgLyogT1NB
bGxvY2F0b3JQb3NpeC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNDAwMDY5MjEyQTZGOUUxMDA2NEQxMjMgLyogT1NBbGxvY2F0b3JQb3NpeC5jcHAg
Ki87IH07CkBAIC04NzAsOCArODcwLDggQEAKIAkJMEZEODJFOEUxNDIwN0E1MTAwMTc5Qzk0IC8q
IFZhbHVlUHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBW
YWx1ZVByb2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkQ4MkVGMzE0
MjMwNzM5MDAxNzlDOTQgLyogREZHSW50cmluc2ljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IERGR0ludHJpbnNpYy5oOyBwYXRoID0gZGZnL0RGR0ludHJpbnNpYy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkQ4MkY0OTE0MjgwNjkyMDAxNzlDOTQgLyogQml0
VmVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJpdFZlY3Rvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkUyMjhFQTE0MzZBQjIzMDAxOTZDNDggLyog
SGV1cmlzdGljcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZXVy
aXN0aWNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZFMjI4RUIxNDM2QUIy
MzAwMTk2QzQ4IC8qIEhldXJpc3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSGV1cmlzdGljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkUyMjhFQTE0
MzZBQjIzMDAxOTZDNDggLyogT3B0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBPcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZF
MjI4RUIxNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZG
NEJCMjE0Mzk1NUU2MDA2NTVCQzAgLyogREZHU3RydWN0dXJlU2V0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERGR1N0cnVjdHVyZVNldC5oOyBwYXRoID0gZGZnL0RGR1N0cnVj
dHVyZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDAwMDY3NjEyQTZGNzgz
MDA2NEQxMjMgLyogT1NBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gT1NBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQwMDA2OTIx
MkE2RjlFMTAwNjREMTIzIC8qIE9TQWxsb2NhdG9yUG9zaXguY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gT1NBbGxvY2F0b3JQb3NpeC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yMDU5LDggKzIwNTksOCBAQAogCQk3RUY2RTBCQjBFQjdBMUVDMDA3
OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCi0JCQkJMEZFMjI4RUExNDM2QUIyMzAwMTk2QzQ4IC8qIEhldXJpc3RpY3MuY3BwICovLAot
CQkJCTBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAvKiBIZXVyaXN0aWNzLmggKi8sCisJCQkJMEZF
MjI4RUExNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwICovLAorCQkJCTBGRTIyOEVCMTQz
NkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmggKi8sCiAJCQkJMEY3NzAwOTExNDAyRkYyODAwNzhF
QjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi8sCiAJCQkJMEY3NzAwOEUxNDAyRkRENjAwNzhF
QjM5IC8qIFNhbXBsaW5nQ291bnRlci5oICovLAogCQkJCUJDRjYwNTExMEUyMDNFRjgwMEI5QTY0
RCAvKiBBcmdMaXN0LmNwcCAqLywKQEAgLTI5MDAsNyArMjkwMCw3IEBACiAJCQkJMEY2MzZEQTAx
NDJEMjdENzAwQjJFNjZBIC8qIFBhY2tlZEludFZlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTc1MjFFMTMxNDI5MTY5QTAwM0M4RDBDIC8qIENhcmRTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRDUyQUFFMTQzMDM1QTAwMDI2REM5RiAvKiBVbmlvbkZpbmQuaCBpbiBIZWFkZXJzICovLAot
CQkJCTBGRTIyOEVEMTQzNkFCMjcwMDE5NkM0OCAvKiBIZXVyaXN0aWNzLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRkUyMjhFRDE0MzZBQjI3MDAxOTZDNDggLyogT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZGRjRCQjQxNDM5NTVFOTAwNjU1QkMwIC8qIERGR1N0cnVjdHVyZVNldC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODYwNEY1MDUxNDNDRTFDMjAwQjI5NUY1IC8qIEpTR2xvYmFsVGhp
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MjAxNzQxNDNGQ0QzMzAwNjhCNzdDIC8qIERGR1Zh
cmlhYmxlQWNjZXNzRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDQ2LDcgKzM0NDYsNyBAQAog
CQkJCTg2RkE5RTkxMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODY4ODBGMUYxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY4ODBGNEQxNDM1M0IyMTAwQjA4RDQy
IC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEZFMjI4RUUx
NDM2QUIyQzAwMTk2QzQ4IC8qIEhldXJpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZF
MjI4RUUxNDM2QUIyQzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEY2MjAxNzkxNDNGQ0Q0ODAwNjhCNzdDIC8qIERGR0Fic3RyYWN0U3RhdGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkMzQzRDQTAxNDU4RjU0NTAwMjVGQjYyIC8qIEpTR2xvYmFsVGhpcy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkMwOTc2RTE0NjhBQjUxMDBDRjI0NDIgLyogREZHQXNzZW1i
bHlIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQppbmRl
eCAzOGQzODJkZGEwNDA4Mzk3OTE5NmZmMzczZmZhNWQxOTMwZjVmODA4Li5iZTBlYzVlMDQwODdm
NWNmYTEzNmFkNDFhN2Y3NTQ4YTMyZTJjNzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQpA
QCAtMTQ5LDcgKzE0OSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90
b3R5cGUuY3BwIFwKICAgICBydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAgXAogICAgIHJ1
bnRpbWUvR2V0dGVyU2V0dGVyLmNwcCBcCi0gICAgcnVudGltZS9IZXVyaXN0aWNzLmNwcCBcCisg
ICAgcnVudGltZS9PcHRpb25zLmNwcCBcCiAgICAgcnVudGltZS9JZGVudGlmaWVyLmNwcCBcCiAg
ICAgcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcCBcCiAgICAgcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCmluZGV4IGUxMjcwZWMwMGUxYWY2NDljNTJiNWM4NTJmZWM5ZGMzMjE4MGI3OGUuLjMw
NTZjODc4OWUyMTlkMzhlYmJiNjExN2Q1ZmJlZWUzZDUyZWUzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0yMjAzLDcgKzIyMDMsNyBAQCBi
b29sIENvZGVCbG9jazo6c2hvdWxkT3B0aW1pemVOb3coKQogICAgIGR1bXBWYWx1ZVByb2ZpbGVz
KCk7CiAjZW5kaWYKIAotICAgIGlmIChtX29wdGltaXphdGlvbkRlbGF5Q291bnRlciA+PSBIZXVy
aXN0aWNzOjptYXhpbXVtT3B0aW1pemF0aW9uRGVsYXkpCisgICAgaWYgKG1fb3B0aW1pemF0aW9u
RGVsYXlDb3VudGVyID49IE9wdGlvbnM6Om1heGltdW1PcHRpbWl6YXRpb25EZWxheSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZOb25Bcmd1bWVudFZh
bHVlUHJvZmlsZXMgPSAwOwpAQCAtMjIyOSw5ICsyMjI5LDkgQEAgYm9vbCBDb2RlQmxvY2s6OnNo
b3VsZE9wdGltaXplTm93KCkKICAgICBwcmludGYoIlByb2ZpbGUgaG90bmVzczogJWxmLCAlbGZc
biIsIChkb3VibGUpbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzIC8gbnVtYmVy
T2ZOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMsIChkb3VibGUpbnVtYmVyT2ZTYW1wbGVzSW5Qcm9m
aWxlcyAvIFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIC8gbnVtYmVyT2ZWYWx1ZVByb2Zp
bGVzKCkpOwogI2VuZGlmCiAKLSAgICBpZiAoKCFudW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9m
aWxlcyB8fCAoZG91YmxlKW51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyAvIG51
bWJlck9mTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzID49IEhldXJpc3RpY3M6OmRlc2lyZWRQcm9m
aWxlTGl2ZW5lc3NSYXRlKQotICAgICAgICAmJiAoIW51bWJlck9mVmFsdWVQcm9maWxlcygpIHx8
IChkb3VibGUpbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcyAvIFZhbHVlUHJvZmlsZTo6bnVtYmVy
T2ZCdWNrZXRzIC8gbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkgPj0gSGV1cmlzdGljczo6ZGVzaXJl
ZFByb2ZpbGVGdWxsbmVzc1JhdGUpCi0gICAgICAgICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPiht
X29wdGltaXphdGlvbkRlbGF5Q291bnRlcikgKyAxID49IEhldXJpc3RpY3M6Om1pbmltdW1PcHRp
bWl6YXRpb25EZWxheSkKKyAgICBpZiAoKCFudW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxl
cyB8fCAoZG91YmxlKW51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyAvIG51bWJl
ck9mTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzID49IE9wdGlvbnM6OmRlc2lyZWRQcm9maWxlTGl2
ZW5lc3NSYXRlKQorICAgICAgICAmJiAoIW51bWJlck9mVmFsdWVQcm9maWxlcygpIHx8IChkb3Vi
bGUpbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcyAvIFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNr
ZXRzIC8gbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkgPj0gT3B0aW9uczo6ZGVzaXJlZFByb2ZpbGVG
dWxsbmVzc1JhdGUpCisgICAgICAgICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29wdGltaXph
dGlvbkRlbGF5Q291bnRlcikgKyAxID49IE9wdGlvbnM6Om1pbmltdW1PcHRpbWl6YXRpb25EZWxh
eSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgQVNTRVJUKG1fb3B0aW1pemF0aW9u
RGVsYXlDb3VudGVyIDwgc3RkOjpudW1lcmljX2xpbWl0czx1aW50OF90Pjo6bWF4KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGM5OTAxZWZjZDU4
YjNhMDhhZTk3NTQyNjU4MTIyNGUxNzI3ZDkwYWYuLmQ4ZTg1MDkwMTU1MzIzMjRmNmU5YTEyM2Iz
OTA0YzhiMjlmN2U4ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJERkdPU1JFbnRyeS5oIgogI2luY2x1
ZGUgIkRGR09TUkV4aXQuaCIKICNpbmNsdWRlICJFdmFsQ29kZUNhY2hlLmgiCi0jaW5jbHVkZSAi
SGV1cmlzdGljcy5oIgorI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJJbnN0cnVjdGlv
bi5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRlICJKSVRXcml0ZUJhcnJpZXIuaCIK
QEAgLTY3NiwxMiArNjc2LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAg
Ym9vbCBsaWtlbHlUb1Rha2VTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRl
Y29kZU9mZnNldCktPm1fY291bnRlciA+PSBIZXVyaXN0aWNzOjpsaWtlbHlUb1Rha2VTbG93Q2Fz
ZVRocmVzaG9sZDsKKyAgICAgICAgICAgIHJldHVybiByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29k
ZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlciA+PSBPcHRpb25zOjpsaWtlbHlUb1Rh
a2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBj
b3VsZFRha2VTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNl
dCktPm1fY291bnRlciA+PSBIZXVyaXN0aWNzOjpjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZDsK
KyAgICAgICAgICAgIHJldHVybiByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRl
Y29kZU9mZnNldCktPm1fY291bnRlciA+PSBPcHRpb25zOjpjb3VsZFRha2VTbG93Q2FzZVRocmVz
aG9sZDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgUmFyZUNhc2VQcm9maWxlKiBhZGRT
cGVjaWFsRmFzdENhc2VQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkKQEAgLTY5OSwyMSArNjk5
LDIxIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGxpa2VseVRvVGFrZVNwZWNpYWxG
YXN0Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIHVuc2ln
bmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVj
b2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwotICAgICAgICAgICAgcmV0dXJu
IHNwZWNpYWxGYXN0Q2FzZUNvdW50ID49IEhldXJpc3RpY3M6Omxpa2VseVRvVGFrZVNsb3dDYXNl
VGhyZXNob2xkOworICAgICAgICAgICAgcmV0dXJuIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID49IE9w
dGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICBib29sIGxpa2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZShpbnQgYnl0ZWNvZGVP
ZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIHVuc2lnbmVkIHNsb3dDYXNlQ291bnQgPSBy
YXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRl
cjsKICAgICAgICAgICAgIHVuc2lnbmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID0gc3BlY2lhbEZh
c3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVy
OwotICAgICAgICAgICAgcmV0dXJuIChzbG93Q2FzZUNvdW50IC0gc3BlY2lhbEZhc3RDYXNlQ291
bnQpID49IEhldXJpc3RpY3M6Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOworICAgICAg
ICAgICAgcmV0dXJuIChzbG93Q2FzZUNvdW50IC0gc3BlY2lhbEZhc3RDYXNlQ291bnQpID49IE9w
dGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICBib29sIGxpa2VseVRvVGFrZUFueVNsb3dDYXNlKGludCBieXRlY29kZU9mZnNl
dCkKICAgICAgICAgewogICAgICAgICAgICAgdW5zaWduZWQgc2xvd0Nhc2VDb3VudCA9IHJhcmVD
YXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwog
ICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBzcGVjaWFsRmFzdENh
c2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7Ci0g
ICAgICAgICAgICByZXR1cm4gKHNsb3dDYXNlQ291bnQgKyBzcGVjaWFsRmFzdENhc2VDb3VudCkg
Pj0gSGV1cmlzdGljczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CisgICAgICAgICAg
ICByZXR1cm4gKHNsb3dDYXNlQ291bnQgKyBzcGVjaWFsRmFzdENhc2VDb3VudCkgPj0gT3B0aW9u
czo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIHZvaWQgcmVzZXRSYXJlQ2FzZVByb2ZpbGVzKCk7CkBAIC05MTUsMjUgKzkxNSwyNSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gdG8gYXZvaWQgdGhyYXNoaW5nLgogICAgICAg
ICB1bnNpZ25lZCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpIGNvbnN0CiAgICAgICAgIHsK
LSAgICAgICAgICAgIEFTU0VSVChtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyIDw9IEhldXJp
c3RpY3M6OnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4KTsKKyAgICAgICAgICAgIEFTU0VS
VChtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyIDw9IE9wdGlvbnM6OnJlb3B0aW1pemF0aW9u
UmV0cnlDb3VudGVyTWF4KTsKICAgICAgICAgICAgIHJldHVybiBtX3Jlb3B0aW1pemF0aW9uUmV0
cnlDb3VudGVyOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB2b2lkIGNvdW50UmVvcHRp
bWl6YXRpb24oKQogICAgICAgICB7CiAgICAgICAgICAgICBtX3Jlb3B0aW1pemF0aW9uUmV0cnlD
b3VudGVyKys7Ci0gICAgICAgICAgICBpZiAobV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA+
IEhldXJpc3RpY3M6OnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4KQotICAgICAgICAgICAg
ICAgIG1fcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSBIZXVyaXN0aWNzOjpyZW9wdGltaXph
dGlvblJldHJ5Q291bnRlck1heDsKKyAgICAgICAgICAgIGlmIChtX3Jlb3B0aW1pemF0aW9uUmV0
cnlDb3VudGVyID4gT3B0aW9uczo6cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXgpCisgICAg
ICAgICAgICAgICAgbV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA9IE9wdGlvbnM6OnJlb3B0
aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBp
bnQzMl90IGNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAoKQogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gSGV1cmlzdGljczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0
aW1pemVBZnRlcldhcm1VcCA8PCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpOworICAgICAg
ICAgICAgcmV0dXJuIE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0
ZXJXYXJtVXAgPDwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKTsKICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgaW50MzJfdCBjb3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dh
cm1VcCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBIZXVyaXN0aWNzOjpleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCA8PCByZW9wdGltaXphdGlv
blJldHJ5Q291bnRlcigpOworICAgICAgICAgICAgcmV0dXJuIE9wdGlvbnM6OmV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwIDw8IHJlb3B0aW1pemF0aW9uUmV0
cnlDb3VudGVyKCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGludDMyX3QqIGFkZHJl
c3NPZkV4ZWN1dGVDb3VudGVyKCkKQEAgLTk1Miw3ICs5NTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgLy8gZXhwZW5zaXZlIHRoYW4gZXhlY3V0aW5nIGJhc2VsaW5lIGNvZGUuCiAgICAg
ICAgIHZvaWQgb3B0aW1pemVOZXh0SW52b2NhdGlvbigpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IG1fZXhlY3V0ZUNvdW50ZXIgPSBIZXVyaXN0aWNzOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JP
cHRpbWl6ZU5leHRJbnZvY2F0aW9uOworICAgICAgICAgICAgbV9leGVjdXRlQ291bnRlciA9IE9w
dGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplTmV4dEludm9jYXRpb247CiAg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIENhbGwgdGhpcyB0byBwcmV2ZW50IG9wdGlt
aXphdGlvbiBmcm9tIGhhcHBlbmluZyBhZ2Fpbi4gTm90ZSB0aGF0CkBAIC05NjIsNyArOTYyLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIHRoZSBmdXR1cmUgYXMgd2VsbC4KICAgICAg
ICAgdm9pZCBkb250T3B0aW1pemVBbnl0aW1lU29vbigpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IG1fZXhlY3V0ZUNvdW50ZXIgPSBIZXVyaXN0aWNzOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JE
b250T3B0aW1pemVBbnl0aW1lU29vbjsKKyAgICAgICAgICAgIG1fZXhlY3V0ZUNvdW50ZXIgPSBP
cHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbjsK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gQ2FsbCB0aGlzIHRvIHJlaW5pdGlhbGl6
ZSB0aGUgY291bnRlciB0byBpdHMgc3RhcnRpbmcgc3RhdGUsCkBAIC0xMDAzLDcgKzEwMDMsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gaW4gdGhlIGJhc2VsaW5lIGNvZGUuCiAgICAg
ICAgIHZvaWQgb3B0aW1pemVTb29uKCkKICAgICAgICAgewotICAgICAgICAgICAgbV9leGVjdXRl
Q291bnRlciA9IEhldXJpc3RpY3M6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29v
biA8PCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpOworICAgICAgICAgICAgbV9leGVjdXRl
Q291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbiA8
PCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpOwogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICAvLyBUaGUgc3BlY3VsYXRpdmUgSklUIHRyYWNrcyBpdHMgc3VjY2VzcyByYXRlLCBzbyB0
aGF0IHdlIGNhbgpAQCAtMTAzNywxNyArMTAzNywxNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lm
IEVOQUJMRShKSVQpCiAgICAgICAgIC8vIFRoZSBudW1iZXIgb2YgZmFpbHVyZXMgdGhhdCB0cmln
Z2VycyB0aGUgdXNlIG9mIHRoZSByYXRpby4KLSAgICAgICAgdW5zaWduZWQgbGFyZ2VGYWlsQ291
bnRUaHJlc2hvbGQoKSB7IHJldHVybiBIZXVyaXN0aWNzOjpsYXJnZUZhaWxDb3VudFRocmVzaG9s
ZEJhc2UgPDwgYmFzZWxpbmVWZXJzaW9uKCktPnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCk7
IH0KLSAgICAgICAgdW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRGb3JMb29wKCkgeyBy
ZXR1cm4gSGV1cmlzdGljczo6bGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlRm9yTG9vcCA8PCBi
YXNlbGluZVZlcnNpb24oKS0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKTsgfQorICAgICAg
ICB1bnNpZ25lZCBsYXJnZUZhaWxDb3VudFRocmVzaG9sZCgpIHsgcmV0dXJuIE9wdGlvbnM6Omxh
cmdlRmFpbENvdW50VGhyZXNob2xkQmFzZSA8PCBiYXNlbGluZVZlcnNpb24oKS0+cmVvcHRpbWl6
YXRpb25SZXRyeUNvdW50ZXIoKTsgfQorICAgICAgICB1bnNpZ25lZCBsYXJnZUZhaWxDb3VudFRo
cmVzaG9sZEZvckxvb3AoKSB7IHJldHVybiBPcHRpb25zOjpsYXJnZUZhaWxDb3VudFRocmVzaG9s
ZEJhc2VGb3JMb29wIDw8IGJhc2VsaW5lVmVyc2lvbigpLT5yZW9wdGltaXphdGlvblJldHJ5Q291
bnRlcigpOyB9CiAKICAgICAgICAgYm9vbCBzaG91bGRSZW9wdGltaXplTm93KCkKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIEhldXJpc3RpY3M6OmRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nl
c3NGYWlsUmF0aW8gKiBzcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkgPj0gc3BlY3VsYXRpdmVTdWNj
ZXNzQ291bnRlcigpICYmIHNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSA+PSBsYXJnZUZhaWxDb3Vu
dFRocmVzaG9sZCgpOworICAgICAgICAgICAgcmV0dXJuIE9wdGlvbnM6OmRlc2lyZWRTcGVjdWxh
dGl2ZVN1Y2Nlc3NGYWlsUmF0aW8gKiBzcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkgPj0gc3BlY3Vs
YXRpdmVTdWNjZXNzQ291bnRlcigpICYmIHNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSA+PSBsYXJn
ZUZhaWxDb3VudFRocmVzaG9sZCgpOwogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBzaG91bGRS
ZW9wdGltaXplRnJvbUxvb3BOb3coKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gSGV1
cmlzdGljczo6ZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbyAqIHNwZWN1bGF0aXZl
RmFpbENvdW50ZXIoKSA+PSBzcGVjdWxhdGl2ZVN1Y2Nlc3NDb3VudGVyKCkgJiYgc3BlY3VsYXRp
dmVGYWlsQ291bnRlcigpID49IGxhcmdlRmFpbENvdW50VGhyZXNob2xkRm9yTG9vcCgpOworICAg
ICAgICAgICAgcmV0dXJuIE9wdGlvbnM6OmRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0
aW8gKiBzcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkgPj0gc3BlY3VsYXRpdmVTdWNjZXNzQ291bnRl
cigpICYmIHNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSA+PSBsYXJnZUZhaWxDb3VudFRocmVzaG9s
ZEZvckxvb3AoKTsKICAgICAgICAgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggM2QyNThjZmU0ZWFmNTlmYWRjODcx
YjczZTEyNjk3NTNlZTdmNmQ4Ni4uZTdlZDZmN2Y0MzM3N2UxOTU1MTM0NjYxODk5MTJiMTI3Zjk2
NTNmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKQEAgLTk1Niw3ICs5NTYsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxp
bmluZyhib29sIHVzZXNSZXN1bHQsIGludCBjYWxsVGFyZ2V0LCBOb2RlSW5kZXggYwogICAgIHVu
c2lnbmVkIGRlcHRoID0gMDsKICAgICBmb3IgKElubGluZVN0YWNrRW50cnkqIGVudHJ5ID0gbV9p
bmxpbmVTdGFja1RvcDsgZW50cnk7IGVudHJ5ID0gZW50cnktPm1fY2FsbGVyKSB7CiAgICAgICAg
ICsrZGVwdGg7Ci0gICAgICAgIGlmIChkZXB0aCA+PSBIZXVyaXN0aWNzOjptYXhpbXVtSW5saW5p
bmdEZXB0aCkKKyAgICAgICAgaWYgKGRlcHRoID49IE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ0Rl
cHRoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBEZXB0aCBleGNlZWRlZC4KICAgICAg
ICAgCiAgICAgICAgIGlmIChlbnRyeS0+ZXhlY3V0YWJsZSgpID09IGV4ZWN1dGFibGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAppbmRleCBjODNhYmZkMzQ2
Mzk3N2FhODE0MzUwMDIzNGU5NjI2YzA4ODU5ODI0Li4xYzhmYWE1OTM5ZjU1ZDkyMTc2YTI2ZWM3
ZmRhZGRlYTZjMmFiNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJp
bGl0aWVzLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJERkdJbnRyaW5zaWMuaCIKICNp
bmNsdWRlICJERkdOb2RlLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgotI2luY2x1ZGUgIkhl
dXJpc3RpY3MuaCIKKyNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIu
aCIKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIApAQCAtNDAsMjggKzQwLDI4IEBAIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIC8vIGNoZWNrIG9wY29kZXMuCiBpbmxpbmUgYm9v
bCBtaWdodENvbXBpbGVFdmFsKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIHJldHVybiBj
b2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBIZXVyaXN0aWNzOjptYXhpbXVtRXZhbE9w
dGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CisgICAgcmV0dXJuIGNvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1FdmFsT3B0aW1pemF0aW9u
Q2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKIH0KIGlubGluZSBib29sIG1pZ2h0Q29tcGlsZVBy
b2dyYW0oQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgcmV0dXJuIGNvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25Db3VudCgpIDw9IEhldXJpc3RpY3M6Om1heGltdW1Qcm9ncmFtT3B0aW1pemF0aW9u
Q2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKKyAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVj
dGlvbkNvdW50KCkgPD0gT3B0aW9uczo6bWF4aW11bVByb2dyYW1PcHRpbWl6YXRpb25DYW5kaWRh
dGVJbnN0cnVjdGlvbkNvdW50OwogfQogaW5saW5lIGJvb2wgbWlnaHRDb21waWxlRnVuY3Rpb25G
b3JDYWxsKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIHJldHVybiBjb2RlQmxvY2stPmlu
c3RydWN0aW9uQ291bnQoKSA8PSBIZXVyaXN0aWNzOjptYXhpbXVtRnVuY3Rpb25Gb3JDYWxsT3B0
aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKKyAgICByZXR1cm4gY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9yQ2FsbE9w
dGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CiB9CiBpbmxpbmUgYm9vbCBtaWdo
dENvbXBpbGVGdW5jdGlvbkZvckNvbnN0cnVjdChDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKLSAg
ICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gSGV1cmlzdGljczo6bWF4
aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0T3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25D
b3VudDsKKyAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9u
czo6bWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0T3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1
Y3Rpb25Db3VudDsKIH0KIAogaW5saW5lIGJvb2wgbWlnaHRJbmxpbmVGdW5jdGlvbkZvckNhbGwo
Q29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgcmV0dXJuIGNvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25Db3VudCgpIDw9IEhldXJpc3RpY3M6Om1heGltdW1GdW5jdGlvbkZvckNhbGxJbmxpbmVDYW5k
aWRhdGVJbnN0cnVjdGlvbkNvdW50OworICAgIHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9u
Q291bnQoKSA8PSBPcHRpb25zOjptYXhpbXVtRnVuY3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRl
SW5zdHJ1Y3Rpb25Db3VudDsKIH0KIGlubGluZSBib29sIG1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JD
b25zdHJ1Y3QoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgcmV0dXJuIGNvZGVCbG9jay0+
aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IEhldXJpc3RpY3M6Om1heGltdW1GdW5jdGlvbkZvckNvbnN0
cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CisgICAgcmV0dXJuIGNvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1GdW5jdGlvbkZvckNvbnN0
cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CiB9CiAKIC8vIE9wY29kZSBjaGVj
a2luZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENv
bXBpbGVyMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29t
cGlsZXIzMl82NC5jcHAKaW5kZXggNmZmZDgwM2FhNTc1NWE3NmMwNjFkZjg2OTFkZmYzMDc1OGFi
ZDI1ZC4uZWU1ODBhY2VkMGQyNDBlMjBhMGFlNjQyMTljMDZlNGY3NjUzZGUwYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5j
cHAKQEAgLTQ2MywxMiArNDYzLDEyIEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhp
dChjb25zdCBPU1JFeGl0JiBleGl0LCBTcGVjdWxhdGlvblJlY292ZXJ5KiByZWNvCiAgICAgbV9q
aXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9qaXQuYmFzZWxpbmVDb2Rl
QmxvY2soKSksIEdQUkluZm86OnJlZ1QwKTsKICAgICAKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1
bXAgZmV3RmFpbHMgPSBtX2ppdC5icmFuY2gzMihBc3NlbWJseUhlbHBlcnM6OkJlbG93T3JFcXVh
bCwgR1BSSW5mbzo6cmVnVDIsIEFzc2VtYmx5SGVscGVyczo6SW1tMzIobV9qaXQuY29kZUJsb2Nr
KCktPmxhcmdlRmFpbENvdW50VGhyZXNob2xkKCkpKTsKLSAgICBtX2ppdC5tdWwzMihBc3NlbWJs
eUhlbHBlcnM6OkltbTMyKEhldXJpc3RpY3M6OmRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWls
UmF0aW8pLCBHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6cmVnVDIpOworICAgIG1faml0Lm11bDMy
KEFzc2VtYmx5SGVscGVyczo6SW1tMzIoT3B0aW9uczo6ZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vz
c0ZhaWxSYXRpbyksIEdQUkluZm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgCiAgICAg
QXNzZW1ibHlIZWxwZXJzOjpKdW1wIGxvd0ZhaWxSYXRlID0gbV9qaXQuYnJhbmNoMzIoQXNzZW1i
bHlIZWxwZXJzOjpCZWxvd09yRXF1YWwsIEdQUkluZm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUMSk7
CiAgICAgCiAgICAgLy8gUmVvcHRpbWl6ZSBhcyBzb29uIGFzIHBvc3NpYmxlLgotICAgIG1faml0
LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpJbW0zMihIZXVyaXN0aWNzOjpleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JPcHRpbWl6ZU5leHRJbnZvY2F0aW9uKSwgQXNzZW1ibHlIZWxwZXJzOjpBZGRy
ZXNzKEdQUkluZm86OnJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mRXhlY3V0ZUNvdW50ZXIoKSkp
OworICAgIG1faml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpJbW0zMihPcHRpb25zOjpleGVj
dXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZU5leHRJbnZvY2F0aW9uKSwgQXNzZW1ibHlIZWxw
ZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mRXhlY3V0ZUNv
dW50ZXIoKSkpOwogICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCBkb25lQWRqdXN0aW5nID0gbV9q
aXQuanVtcCgpOwogICAgIAogICAgIGZld0ZhaWxzLmxpbmsoJm1faml0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAKaW5kZXggNTZm
YjEzNDRlMjk4ZmNhNjdjZTE2M2YwNWIxYWVlODkwOTJkN2RiNy4uNDUyZWY1NDFhNDQwZTE3OGFj
YmQ4ZjM1MGYyZTA3MjBiYzk4YWVlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAKQEAgLTQ3MywxMiArNDczLDEyIEBAIHZvaWQg
T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCBPU1JFeGl0JiBleGl0LCBTcGVjdWxh
dGlvblJlY292ZXJ5KiByZWNvCiAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIobV9qaXQuYmFzZWxpbmVDb2RlQmxvY2soKSksIEdQUkluZm86OnJlZ1QwKTsKICAg
ICAKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgZmV3RmFpbHMgPSBtX2ppdC5icmFuY2gzMihB
c3NlbWJseUhlbHBlcnM6OkJlbG93T3JFcXVhbCwgR1BSSW5mbzo6cmVnVDIsIEFzc2VtYmx5SGVs
cGVyczo6SW1tMzIobV9qaXQuY29kZUJsb2NrKCktPmxhcmdlRmFpbENvdW50VGhyZXNob2xkKCkp
KTsKLSAgICBtX2ppdC5tdWwzMihBc3NlbWJseUhlbHBlcnM6OkltbTMyKEhldXJpc3RpY3M6OmRl
c2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW8pLCBHUFJJbmZvOjpyZWdUMiwgR1BSSW5m
bzo6cmVnVDIpOworICAgIG1faml0Lm11bDMyKEFzc2VtYmx5SGVscGVyczo6SW1tMzIoT3B0aW9u
czo6ZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbyksIEdQUkluZm86OnJlZ1QyLCBH
UFJJbmZvOjpyZWdUMik7CiAgICAgCiAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIGxvd0ZhaWxS
YXRlID0gbV9qaXQuYnJhbmNoMzIoQXNzZW1ibHlIZWxwZXJzOjpCZWxvd09yRXF1YWwsIEdQUklu
Zm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgCiAgICAgLy8gUmVvcHRpbWl6ZSBhcyBz
b29uIGFzIHBvc3NpYmxlLgotICAgIG1faml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpJbW0z
MihIZXVyaXN0aWNzOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZU5leHRJbnZvY2F0
aW9uKSwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBDb2RlQmxvY2s6
Om9mZnNldE9mRXhlY3V0ZUNvdW50ZXIoKSkpOworICAgIG1faml0LnN0b3JlMzIoQXNzZW1ibHlI
ZWxwZXJzOjpJbW0zMihPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZU5l
eHRJbnZvY2F0aW9uKSwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBD
b2RlQmxvY2s6Om9mZnNldE9mRXhlY3V0ZUNvdW50ZXIoKSkpOwogICAgIEFzc2VtYmx5SGVscGVy
czo6SnVtcCBkb25lQWRqdXN0aW5nID0gbV9qaXQuanVtcCgpOwogICAgIAogICAgIGZld0ZhaWxz
LmxpbmsoJm1faml0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtTdGFjay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCmlu
ZGV4IDNmNGZkYTc2Y2M0ZTM3MWY3NGQ2ZGNjNzM1YzliOTM4NDYzZWY5ZDUuLmRkMGU2ZmQ1N2Fh
ZGQzMDJlZDU3N2JhNDkyMjZiMDVlNmU4MTdjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya1N0YWNrLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ29uc2VydmF0
aXZlUm9vdHMuaCIKICNpbmNsdWRlICJIZWFwLmgiCi0jaW5jbHVkZSAiSGV1cmlzdGljcy5oIgor
I2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlND
ZWxsLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKQEAgLTYwLDcgKzYwLDcgQEAgTWFya1N0YWNr
U2VnbWVudCogTWFya1N0YWNrU2VnbWVudEFsbG9jYXRvcjo6YWxsb2NhdGUoKQogICAgICAgICB9
CiAgICAgfQogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PE1hcmtTdGFja1NlZ21lbnQqPihPU0Fs
bG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChIZXVyaXN0aWNzOjpnY01hcmtTdGFja1NlZ21lbnRT
aXplKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1hcmtTdGFja1NlZ21lbnQqPihPU0FsbG9j
YXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChPcHRpb25zOjpnY01hcmtTdGFja1NlZ21lbnRTaXplKSk7
CiB9CiAKIHZvaWQgTWFya1N0YWNrU2VnbWVudEFsbG9jYXRvcjo6cmVsZWFzZShNYXJrU3RhY2tT
ZWdtZW50KiBzZWdtZW50KQpAQCAtODEsMTMgKzgxLDEzIEBAIHZvaWQgTWFya1N0YWNrU2VnbWVu
dEFsbG9jYXRvcjo6c2hyaW5rUmVzZXJ2ZSgpCiAgICAgd2hpbGUgKHNlZ21lbnRzKSB7CiAgICAg
ICAgIE1hcmtTdGFja1NlZ21lbnQqIHRvRnJlZSA9IHNlZ21lbnRzOwogICAgICAgICBzZWdtZW50
cyA9IHNlZ21lbnRzLT5tX3ByZXZpb3VzOwotICAgICAgICBPU0FsbG9jYXRvcjo6ZGVjb21taXRB
bmRSZWxlYXNlKHRvRnJlZSwgSGV1cmlzdGljczo6Z2NNYXJrU3RhY2tTZWdtZW50U2l6ZSk7Cisg
ICAgICAgIE9TQWxsb2NhdG9yOjpkZWNvbW1pdEFuZFJlbGVhc2UodG9GcmVlLCBPcHRpb25zOjpn
Y01hcmtTdGFja1NlZ21lbnRTaXplKTsKICAgICB9CiB9CiAKIE1hcmtTdGFja0FycmF5OjpNYXJr
U3RhY2tBcnJheShNYXJrU3RhY2tTZWdtZW50QWxsb2NhdG9yJiBhbGxvY2F0b3IpCiAgICAgOiBt
X2FsbG9jYXRvcihhbGxvY2F0b3IpCi0gICAgLCBtX3NlZ21lbnRDYXBhY2l0eShNYXJrU3RhY2tT
ZWdtZW50OjpjYXBhY2l0eUZyb21TaXplKEhldXJpc3RpY3M6OmdjTWFya1N0YWNrU2VnbWVudFNp
emUpKQorICAgICwgbV9zZWdtZW50Q2FwYWNpdHkoTWFya1N0YWNrU2VnbWVudDo6Y2FwYWNpdHlG
cm9tU2l6ZShPcHRpb25zOjpnY01hcmtTdGFja1NlZ21lbnRTaXplKSkKICAgICAsIG1fdG9wKDAp
CiAgICAgLCBtX251bWJlck9mUHJldmlvdXNTZWdtZW50cygwKQogewpAQCAtMTQ1LDEwICsxNDUs
MTAgQEAgYm9vbCBNYXJrU3RhY2tBcnJheTo6ZG9uYXRlU29tZUNlbGxzVG8oTWFya1N0YWNrQXJy
YXkmIG90aGVyKQogICAgIG90aGVyLnZhbGlkYXRlUHJldmlvdXMoKTsKICAgICAgICAgCiAgICAg
Ly8gRmFzdCBjaGVjazogc2VlIGlmIHRoZSBvdGhlciBtYXJrIHN0YWNrIGFscmVhZHkgaGFzIGVu
b3VnaCBzZWdtZW50cy4KLSAgICBpZiAob3RoZXIubV9udW1iZXJPZlByZXZpb3VzU2VnbWVudHMg
KyAxID49IEhldXJpc3RpY3M6Om1heGltdW1OdW1iZXJPZlNoYXJlZFNlZ21lbnRzKQorICAgIGlm
IChvdGhlci5tX251bWJlck9mUHJldmlvdXNTZWdtZW50cyArIDEgPj0gT3B0aW9uczo6bWF4aW11
bU51bWJlck9mU2hhcmVkU2VnbWVudHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
Ci0gICAgc2l6ZV90IG51bWJlck9mQ2VsbHNUb0tlZXAgPSBIZXVyaXN0aWNzOjptaW5pbXVtTnVt
YmVyT2ZDZWxsc1RvS2VlcDsKKyAgICBzaXplX3QgbnVtYmVyT2ZDZWxsc1RvS2VlcCA9IE9wdGlv
bnM6Om1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVwOwogICAgIEFTU0VSVChtX3RvcCA+IG51bWJl
ck9mQ2VsbHNUb0tlZXAgfHwgbV90b3BTZWdtZW50LT5tX3ByZXZpb3VzKTsKICAgICAgICAgCiAg
ICAgLy8gTG9va3MgbGlrZSB3ZSBzaG91bGQgZG9uYXRlISBHaXZlIHRoZSBvdGhlciBtYXJrIHN0
YWNrIGFsbCBvZiBvdXIKQEAgLTIwOSw4ICsyMDksOCBAQCB2b2lkIE1hcmtTdGFja0FycmF5Ojpz
dGVhbFNvbWVDZWxsc0Zyb20oTWFya1N0YWNrQXJyYXkmIG90aGVyKQogICAgIH0KICAgICAgICAg
CiAgICAgLy8gT3RoZXJ3aXNlIGRyYWluIDEvTnRoIG9mIHRoZSBzaGFyZWQgYXJyYXkgd2hlcmUg
TiBpcyB0aGUgbnVtYmVyIG9mCi0gICAgLy8gd29ya2Vycywgb3IgSGV1cmlzdGljczo6bWluaW11
bU51bWJlck9mQ2VsbHNUb0tlZXAsIHdoaWNoZXZlciBpcyBiaWdnZXIuCi0gICAgc2l6ZV90IG51
bWJlck9mQ2VsbHNUb1N0ZWFsID0gc3RkOjptYXgoKHNpemVfdClIZXVyaXN0aWNzOjptaW5pbXVt
TnVtYmVyT2ZDZWxsc1RvS2VlcCwgb3RoZXIuc2l6ZSgpIC8gSGV1cmlzdGljczo6bnVtYmVyT2ZH
Q01hcmtlcnMpOworICAgIC8vIHdvcmtlcnMsIG9yIE9wdGlvbnM6Om1pbmltdW1OdW1iZXJPZkNl
bGxzVG9LZWVwLCB3aGljaGV2ZXIgaXMgYmlnZ2VyLgorICAgIHNpemVfdCBudW1iZXJPZkNlbGxz
VG9TdGVhbCA9IHN0ZDo6bWF4KChzaXplX3QpT3B0aW9uczo6bWluaW11bU51bWJlck9mQ2VsbHNU
b0tlZXAsIG90aGVyLnNpemUoKSAvIE9wdGlvbnM6Om51bWJlck9mR0NNYXJrZXJzKTsKICAgICB3
aGlsZSAobnVtYmVyT2ZDZWxsc1RvU3RlYWwtLSA+IDAgJiYgb3RoZXIuY2FuUmVtb3ZlTGFzdCgp
KQogICAgICAgICBhcHBlbmQob3RoZXIucmVtb3ZlTGFzdCgpKTsKIH0KQEAgLTIzOCw3ICsyMzgs
NyBAQCBNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhOjpNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRh
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKICAgICAsIG1fcGFyYWxsZWxNYXJrZXJzU2hvdWxk
RXhpdChmYWxzZSkKIHsKICNpZiBFTkFCTEUoUEFSQUxMRUxfR0MpCi0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMTsgaSA8IEhldXJpc3RpY3M6Om51bWJlck9mR0NNYXJrZXJzOyArK2kpIHsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgT3B0aW9uczo6bnVtYmVyT2ZHQ01hcmtlcnM7ICsraSkg
ewogICAgICAgICBtX21hcmtpbmdUaHJlYWRzLmFwcGVuZChjcmVhdGVUaHJlYWQobWFya2luZ1Ro
cmVhZFN0YXJ0RnVuYywgdGhpcywgIkphdmFTY3JpcHRDb3JlOjpNYXJraW5nIikpOwogICAgICAg
ICBBU1NFUlQobV9tYXJraW5nVGhyZWFkcy5sYXN0KCkpOwogICAgIH0KQEAgLTMyOSw3ICszMjks
NyBAQCB2b2lkIFNsb3RWaXNpdG9yOjpkb25hdGVTbG93KCkKICAgICBpZiAobV9zdGFjay5kb25h
dGVTb21lQ2VsbHNUbyhtX3NoYXJlZC5tX3NoYXJlZE1hcmtTdGFjaykpIHsKICAgICAgICAgLy8g
T25seSB3YWtlIHVwIHRocmVhZHMgaWYgdGhlIHNoYXJlZCBzdGFjayBpcyBiaWcgZW5vdWdoOyBv
dGhlcndpc2UgYXNzdW1lIHRoYXQKICAgICAgICAgLy8gaXQncyBtb3JlIHByb2ZpdGFibGUgZm9y
IHVzIHRvIGp1c3Qgc2NhbiB0aGlzIG91cnNlbHZlcyBsYXRlci4KLSAgICAgICAgaWYgKG1fc2hh
cmVkLm1fc2hhcmVkTWFya1N0YWNrLnNpemUoKSA+PSBIZXVyaXN0aWNzOjpzaGFyZWRTdGFja1dh
a2V1cFRocmVzaG9sZCkKKyAgICAgICAgaWYgKG1fc2hhcmVkLm1fc2hhcmVkTWFya1N0YWNrLnNp
emUoKSA+PSBPcHRpb25zOjpzaGFyZWRTdGFja1dha2V1cFRocmVzaG9sZCkKICAgICAgICAgICAg
IG1fc2hhcmVkLm1fbWFya2luZ0NvbmRpdGlvbi5icm9hZGNhc3QoKTsKICAgICB9CiB9CkBAIC0z
NDMsMTAgKzM0MywxMCBAQCB2b2lkIFNsb3RWaXNpdG9yOjpkcmFpbigpCiAgICAgdm9pZCoganNT
dHJpbmdWUHRyID0gbV9qc1N0cmluZ1ZQdHI7CiAKICNpZiBFTkFCTEUoUEFSQUxMRUxfR0MpCi0g
ICAgaWYgKEhldXJpc3RpY3M6Om51bWJlck9mR0NNYXJrZXJzID4gMSkgeworICAgIGlmIChPcHRp
b25zOjpudW1iZXJPZkdDTWFya2VycyA+IDEpIHsKICAgICAgICAgd2hpbGUgKCFtX3N0YWNrLmlz
RW1wdHkoKSkgewogICAgICAgICAgICAgbV9zdGFjay5yZWZpbGwoKTsKLSAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgY291bnRkb3duID0gSGV1cmlzdGljczo6bWluaW11bU51bWJlck9mU2NhbnNC
ZXR3ZWVuUmViYWxhbmNlOyBtX3N0YWNrLmNhblJlbW92ZUxhc3QoKSAmJiBjb3VudGRvd24tLTsp
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGNvdW50ZG93biA9IE9wdGlvbnM6Om1pbmltdW1O
dW1iZXJPZlNjYW5zQmV0d2VlblJlYmFsYW5jZTsgbV9zdGFjay5jYW5SZW1vdmVMYXN0KCkgJiYg
Y291bnRkb3duLS07KQogICAgICAgICAgICAgICAgIHZpc2l0Q2hpbGRyZW4oKnRoaXMsIG1fc3Rh
Y2sucmVtb3ZlTGFzdCgpLCBqc0ZpbmFsT2JqZWN0VlB0ciwganNBcnJheVZQdHIsIGpzU3RyaW5n
VlB0cik7CiAgICAgICAgICAgICBkb25hdGVLbm93blBhcmFsbGVsKCk7CiAgICAgICAgIH0KQEAg
LTM2NywxNCArMzY3LDE0IEBAIHZvaWQgU2xvdFZpc2l0b3I6OmRyYWluRnJvbVNoYXJlZChTaGFy
ZWREcmFpbk1vZGUgc2hhcmVkRHJhaW5Nb2RlKQogewogICAgIEFTU0VSVChtX2lzSW5QYXJhbGxl
bE1vZGUpOwogICAgIAotICAgIEFTU0VSVChIZXVyaXN0aWNzOjpudW1iZXJPZkdDTWFya2Vycyk7
CisgICAgQVNTRVJUKE9wdGlvbnM6Om51bWJlck9mR0NNYXJrZXJzKTsKICAgICAKICAgICBib29s
IHNob3VsZEJlUGFyYWxsZWw7CiAKICNpZiBFTkFCTEUoUEFSQUxMRUxfR0MpCi0gICAgc2hvdWxk
QmVQYXJhbGxlbCA9IEhldXJpc3RpY3M6Om51bWJlck9mR0NNYXJrZXJzID4gMTsKKyAgICBzaG91
bGRCZVBhcmFsbGVsID0gT3B0aW9uczo6bnVtYmVyT2ZHQ01hcmtlcnMgPiAxOwogI2Vsc2UKLSAg
ICBBU1NFUlQoSGV1cmlzdGljczo6bnVtYmVyT2ZHQ01hcmtlcnMgPT0gMSk7CisgICAgQVNTRVJU
KE9wdGlvbnM6Om51bWJlck9mR0NNYXJrZXJzID09IDEpOwogICAgIHNob3VsZEJlUGFyYWxsZWwg
PSBmYWxzZTsKICNlbmRpZgogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya1N0YWNrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2su
aAppbmRleCBjNTA4MDE5NDg4NzAxOWM5YThjZDQ4YjM3Mzc3NmQ4YThmOTc4ZGE3Li44Y2JkYzYy
OGUzZGExMzRhNTRkZDVjYTE1MzdiNmExNDBjMTYzMDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrU3RhY2suaApAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBNYXJrU3RhY2tfaAog
CiAjaW5jbHVkZSAiSGFuZGxlVHlwZXMuaCIKLSNpbmNsdWRlICJIZXVyaXN0aWNzLmgiCisjaW5j
bHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJSZWdpc3Rl
ci5oIgogI2luY2x1ZGUgIlVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCIKQEAgLTI2MSw3ICsyNjEs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIHZvaWQgbWVyZ2VPcGFxdWVS
b290c0lmUHJvZml0YWJsZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obV9vcGFxdWVSb290cy5zaXplKCkpIDwgSGV1cmlzdGljczo6b3BhcXVlUm9v
dE1lcmdlVGhyZXNob2xkKQorICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPiht
X29wYXF1ZVJvb3RzLnNpemUoKSkgPCBPcHRpb25zOjpvcGFxdWVSb290TWVyZ2VUaHJlc2hvbGQp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgbWVyZ2VPcGFxdWVSb290cygp
OwogICAgICAgICB9CkBAIC0zMDksNyArMzA5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5s
aW5lIHZvaWQgTWFya1N0YWNrOjphZGRPcGFxdWVSb290KHZvaWQqIHJvb3QpCiAgICAgewogI2lm
IEVOQUJMRShQQVJBTExFTF9HQykKLSAgICAgICAgaWYgKEhldXJpc3RpY3M6Om51bWJlck9mR0NN
YXJrZXJzID09IDEpIHsKKyAgICAgICAgaWYgKE9wdGlvbnM6Om51bWJlck9mR0NNYXJrZXJzID09
IDEpIHsKICAgICAgICAgICAgIC8vIFB1dCBkaXJlY3RseSBpbnRvIHRoZSBzaGFyZWQgSGFzaFNl
dC4KICAgICAgICAgICAgIG1fc2hhcmVkLm1fb3BhcXVlUm9vdHMuYWRkKHJvb3QpOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMzc1LDcgKzM3NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
aW5saW5lIGJvb2wgTWFya1N0YWNrQXJyYXk6OmNhbkRvbmF0ZVNvbWVDZWxscygpCiAgICAgewot
ICAgICAgICBzaXplX3QgbnVtYmVyT2ZDZWxsc1RvS2VlcCA9IEhldXJpc3RpY3M6Om1pbmltdW1O
dW1iZXJPZkNlbGxzVG9LZWVwOworICAgICAgICBzaXplX3QgbnVtYmVyT2ZDZWxsc1RvS2VlcCA9
IE9wdGlvbnM6Om1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVwOwogICAgICAgICAvLyBBbm90aGVy
IGNoZWNrOiBzZWUgaWYgd2UgaGF2ZSBlbm91Z2ggY2VsbHMgdG8gd2FycmFudCBkb25hdGlvbi4K
ICAgICAgICAgaWYgKG1fdG9wIDw9IG51bWJlck9mQ2VsbHNUb0tlZXApIHsKICAgICAgICAgICAg
IC8vIFRoaXMgaW5kaWNhdGVzIHRoYXQgd2UgbWlnaHQgbm90IHdhbnQgdG8gZG9uYXRlIGFueXRo
aW5nOyBjaGVjayBpZiB3ZSBoYXZlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9TbG90VmlzaXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0
b3IuaAppbmRleCBhNDYxNzgxNGFlN2UyZjY4YWIzMjQ4OWVlOWVjZWE1YWViOGM2NjEyLi42NDdi
MmNiZGMxNWE3YjQ0NWI2OTlhNDk2MDg1MTZhZGMxMmFmNDQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHZv
aWQgZG9uYXRlKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2lzSW5QYXJhbGxlbE1vZGUpOwot
ICAgICAgICBpZiAoSGV1cmlzdGljczo6bnVtYmVyT2ZHQ01hcmtlcnMgPT0gMSkKKyAgICAgICAg
aWYgKE9wdGlvbnM6Om51bWJlck9mR0NNYXJrZXJzID09IDEpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIAogICAgICAgICBkb25hdGVLbm93blBhcmFsbGVsKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKaW5kZXggODAxZDhkZjcyZDY3Y2M4OGY5MjQ0OTRlMGNhYmRkMzQyYmEyNTky
Yi4uMWUxYTE1MjQ3MDgwODY2MjgyODVjZGZlYzg5MWZmNWE5ODgzZmQzZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcApAQCAtOTksNyArOTksNyBAQCB2b2lkIEpJVDo6ZW1pdE9wdGltaXph
dGlvbkNoZWNrKE9wdGltaXphdGlvbkNoZWNrS2luZCBraW5kKQogICAgIGlmICghc2hvdWxkRW1p
dFByb2ZpbGluZygpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgSnVtcCBza2lwT3B0aW1p
emUgPSBicmFuY2hBZGQzMihTaWduZWQsIFRydXN0ZWRJbW0zMihraW5kID09IExvb3BPcHRpbWl6
YXRpb25DaGVjayA/IEhldXJpc3RpY3M6OmV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JMb29w
IDogSGV1cmlzdGljczo6ZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvclJldHVybiksIEFic29s
dXRlQWRkcmVzcyhtX2NvZGVCbG9jay0+YWRkcmVzc09mRXhlY3V0ZUNvdW50ZXIoKSkpOworICAg
IEp1bXAgc2tpcE9wdGltaXplID0gYnJhbmNoQWRkMzIoU2lnbmVkLCBUcnVzdGVkSW1tMzIoa2lu
ZCA9PSBMb29wT3B0aW1pemF0aW9uQ2hlY2sgPyBPcHRpb25zOjpleGVjdXRpb25Db3VudGVySW5j
cmVtZW50Rm9yTG9vcCA6IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JSZXR1
cm4pLCBBYnNvbHV0ZUFkZHJlc3MobV9jb2RlQmxvY2stPmFkZHJlc3NPZkV4ZWN1dGVDb3VudGVy
KCkpKTsKICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBraW5kID09IExvb3BPcHRpbWl6
YXRpb25DaGVjayA/IGN0aV9vcHRpbWl6ZV9mcm9tX2xvb3AgOiBjdGlfb3B0aW1pemVfZnJvbV9y
ZXQpOwogICAgIGlmIChraW5kID09IExvb3BPcHRpbWl6YXRpb25DaGVjaykKICAgICAgICAgc3R1
YkNhbGwuYWRkQXJndW1lbnQoSW1tMzIobV9ieXRlY29kZU9mZnNldCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcAppbmRleCBmYzBjNTYwOTAyYjM2ZThmOGI5ZmY1OTA5MDQwZjNiYzE5NzczMmMxLi4zNmQz
ZjdhMDVhNWZlMTM2OGIyOWZkNWY4ZjFkNWY5Y2IyNTllOGQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cApAQCAtMTAyLDggKzEwMiw4IEBAIHN0cnVjdCBTY3JpcHQgewogICAgIH0KIH07CiAKLXN0cnVj
dCBPcHRpb25zIHsKLSAgICBPcHRpb25zKCkKK3N0cnVjdCBDb21tYW5kTGluZSB7CisgICAgQ29t
bWFuZExpbmUoKQogICAgICAgICA6IGludGVyYWN0aXZlKGZhbHNlKQogICAgICAgICAsIGR1bXAo
ZmFsc2UpCiAgICAgewpAQCAtNTQ4LDcgKzU0OCw3IEBAIHN0YXRpYyBOT19SRVRVUk4gdm9pZCBw
cmludFVzYWdlU3RhdGVtZW50KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgYm9vbCBoZWxwID0K
ICAgICBleGl0KGhlbHAgPyBFWElUX1NVQ0NFU1MgOiBFWElUX0ZBSUxVUkUpOwogfQogCi1zdGF0
aWMgdm9pZCBwYXJzZUFyZ3VtZW50cyhpbnQgYXJnYywgY2hhcioqIGFyZ3YsIE9wdGlvbnMmIG9w
dGlvbnMsIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3N0YXRpYyB2b2lkIHBhcnNlQXJndW1l
bnRzKGludCBhcmdjLCBjaGFyKiogYXJndiwgQ29tbWFuZExpbmUmIG9wdGlvbnMsIEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSkKIHsKICAgICBpbnQgaSA9IDE7CiAgICAgZm9yICg7IGkgPCBhcmdj
OyArK2kpIHsKQEAgLTYwMiw3ICs2MDIsNyBAQCBpbnQganNjbWFpbihpbnQgYXJnYywgY2hhcioq
IGFyZ3YsIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKIHsKICAgICBKU0xvY2sgbG9jayhTaWxl
bmNlQXNzZXJ0aW9uc09ubHkpOwogCi0gICAgT3B0aW9ucyBvcHRpb25zOworICAgIENvbW1hbmRM
aW5lIG9wdGlvbnM7CiAgICAgcGFyc2VBcmd1bWVudHMoYXJnYywgYXJndiwgb3B0aW9ucywgZ2xv
YmFsRGF0YSk7CiAKICAgICBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEdsb2JhbE9iamVj
dDo6Y3JlYXRlKCpnbG9iYWxEYXRhLCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSgqZ2xv
YmFsRGF0YSwganNOdWxsKCkpLCBvcHRpb25zLmFyZ3VtZW50cyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0hldXJpc3RpY3MuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBiNWZkZDhhNDczNjcwNzAwMzNjNTQzMDFhZjM0ODVhNWVmZWQyN2M4Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0hldXJpc3RpY3MuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjExICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkhldXJpc3RpY3MuaCIKLSNpbmNsdWRlIDx3dGYvUGFnZUJs
b2NrLmg+Ci0KLSNpbmNsdWRlIDxsaW1pdHM+Ci0KLSNpZiBPUyhEQVJXSU4pICYmIEVOQUJMRShQ
QVJBTExFTF9HQykKLSNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+Ci0jZW5kaWYKLQotLy8gU2V0IHRv
IDEgdG8gY29udHJvbCB0aGUgaGV1cmlzdGljcyB1c2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMu
Ci0jZGVmaW5lIEVOQUJMRV9SVU5fVElNRV9IRVVSSVNUSUNTIDAKLQotI2lmIEVOQUJMRShSVU5f
VElNRV9IRVVSSVNUSUNTKQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+
Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgSGV1cmlzdGljcyB7Ci0KLXVuc2lnbmVkIG1heGltdW1FdmFsT3B0aW1pemF0
aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKLXVuc2lnbmVkIG1heGltdW1Qcm9ncmFtT3B0
aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKLXVuc2lnbmVkIG1heGltdW1GdW5j
dGlvbkZvckNhbGxPcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OwotdW5zaWdu
ZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0T3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1
Y3Rpb25Db3VudDsKLQotdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRp
ZGF0ZUluc3RydWN0aW9uQ291bnQ7Ci11bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1
Y3RJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OwotCi11bnNpZ25lZCBtYXhpbXVtSW5s
aW5pbmdEZXB0aDsKLQotaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFm
dGVyV2FybVVwOwotaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVy
TG9uZ1dhcm1VcDsKLWludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXpl
QW55dGltZVNvb247Ci1pbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29v
bjsKLWludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVOZXh0SW52b2NhdGlv
bjsKLQotaW50MzJfdCBleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yTG9vcDsKLWludDMyX3Qg
ZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvclJldHVybjsKLQotdW5zaWduZWQgZGVzaXJlZFNw
ZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbzsKLQotdW5zaWduZWQgbGlrZWx5VG9UYWtlU2xvd0Nh
c2VUaHJlc2hvbGQ7Ci11bnNpZ25lZCBjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZDsKLQotdW5z
aWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlOwotdW5zaWduZWQgbGFyZ2VGYWlsQ291
bnRUaHJlc2hvbGRCYXNlRm9yTG9vcDsKLQotdW5zaWduZWQgcmVvcHRpbWl6YXRpb25SZXRyeUNv
dW50ZXJNYXg7Ci11bnNpZ25lZCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlclN0ZXA7Ci0KLXVu
c2lnbmVkIG1pbmltdW1PcHRpbWl6YXRpb25EZWxheTsKLXVuc2lnbmVkIG1heGltdW1PcHRpbWl6
YXRpb25EZWxheTsKLWRvdWJsZSBkZXNpcmVkUHJvZmlsZUxpdmVuZXNzUmF0ZTsKLWRvdWJsZSBk
ZXNpcmVkUHJvZmlsZUZ1bGxuZXNzUmF0ZTsKLQotdW5zaWduZWQgbWluaW11bU51bWJlck9mU2Nh
bnNCZXR3ZWVuUmViYWxhbmNlOwotdW5zaWduZWQgZ2NNYXJrU3RhY2tTZWdtZW50U2l6ZTsKLXVu
c2lnbmVkIG1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVwOwotdW5zaWduZWQgbWF4aW11bU51bWJl
ck9mU2hhcmVkU2VnbWVudHM7Ci11bnNpZ25lZCBzaGFyZWRTdGFja1dha2V1cFRocmVzaG9sZDsK
LXVuc2lnbmVkIG51bWJlck9mR0NNYXJrZXJzOwotdW5zaWduZWQgb3BhcXVlUm9vdE1lcmdlVGhy
ZXNob2xkOwotCi0jaWYgRU5BQkxFKFJVTl9USU1FX0hFVVJJU1RJQ1MpCi1zdGF0aWMgYm9vbCBw
YXJzZShjb25zdCBjaGFyKiBzdHJpbmcsIGludDMyX3QmIHZhbHVlKQotewotICAgIHJldHVybiBz
c2NhbmYoc3RyaW5nLCAiJWQiLCAmdmFsdWUpID09IDE7Ci19Ci0KLXN0YXRpYyBib29sIHBhcnNl
KGNvbnN0IGNoYXIqIHN0cmluZywgdW5zaWduZWQmIHZhbHVlKQotewotICAgIHJldHVybiBzc2Nh
bmYoc3RyaW5nLCAiJXUiLCAmdmFsdWUpID09IDE7Ci19Ci0KLXN0YXRpYyBib29sIHBhcnNlKGNv
bnN0IGNoYXIqIHN0cmluZywgZG91YmxlJiB2YWx1ZSkKLXsKLSAgICByZXR1cm4gc3NjYW5mKHN0
cmluZywgIiVsZiIsICZ2YWx1ZSkgPT0gMTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KLXZvaWQgc2V0SGV1cmlzdGljKFQmIHZhcmlhYmxlLCBjb25zdCBjaGFyKiBuYW1l
LCBVIHZhbHVlKQotewotICAgIGNvbnN0IGNoYXIqIHN0cmluZ1ZhbHVlID0gZ2V0ZW52KG5hbWUp
OwotICAgIGlmICghc3RyaW5nVmFsdWUpIHsKLSAgICAgICAgdmFyaWFibGUgPSBzYWZlQ2FzdDxU
Pih2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKHBhcnNlKHN0
cmluZ1ZhbHVlLCB2YXJpYWJsZSkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBmcHJpbnRm
KHN0ZGVyciwgIldBUk5JTkc6IGZhaWxlZCB0byBwYXJzZSAlcz0lc1xuIiwgbmFtZSwgc3RyaW5n
VmFsdWUpOwotICAgIHZhcmlhYmxlID0gc2FmZUNhc3Q8VD4odmFsdWUpOwotfQotCi0jZGVmaW5l
IFNFVCh2YXJpYWJsZSwgdmFsdWUpIHNldEhldXJpc3RpYyh2YXJpYWJsZSwgIkpTQ18iICN2YXJp
YWJsZSwgdmFsdWUpCi0jZWxzZQotI2RlZmluZSBTRVQodmFyaWFibGUsIHZhbHVlKSB2YXJpYWJs
ZSA9IHZhbHVlCi0jZW5kaWYKLQotdm9pZCBpbml0aWFsaXplSGV1cmlzdGljcygpCi17Ci0gICAg
Ly8gRklYTUU6IE11c3QgcmV2aXNpdCB0aGVzZSBoZXVyaXN0aWNzISBUaGUgREZHLCBiZWluZyBh
biBvcHRpbWl6aW5nIGNvbXBpbGVyLCBtYXkKLSAgICAvLyB0YWtlIGEgbG9uZyB0aW1lIGZvciBw
YXRob2xvZ2ljYWxseSBodWdlIGNvZGUgYmxvY2tzLiBUaGUgYmVzdCB3YXkgdG8gY29wZSB3aXRo
Ci0gICAgLy8gdGhpcyBpcyB0byByZWZ1c2UgdG8gb3B0aW1pemUgdGhlbS4KLSAgICBTRVQobWF4
aW11bUV2YWxPcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50LCAgICAgICAgICAg
ICAgICAgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKLSAgICBTRVQobWF4
aW11bVByb2dyYW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50LCAgICAgICAg
ICAgICAgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKLSAgICBTRVQobWF4
aW11bUZ1bmN0aW9uRm9yQ2FsbE9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQs
ICAgICAgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKLSAgICBTRVQobWF4
aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0T3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25D
b3VudCwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKLSAgICAKLSAgICBT
RVQobWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQs
IDE1MCk7Ci0gICAgU0VUKG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGluZUNhbmRpZGF0
ZUluc3RydWN0aW9uQ291bnQsIDgwKTsKLSAgICAKLSAgICBTRVQobWF4aW11bUlubGluaW5nRGVw
dGgsIDUpOwotCi0gICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJX
YXJtVXAsICAgICAtMTAwMCk7Ci0gICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGlt
aXplQWZ0ZXJMb25nV2FybVVwLCAtNTAwMCk7Ci0gICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1
ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+
OjptaW4oKSk7Ci0gICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbiwg
ICAgICAgICAgICAtMTAwMCk7Ci0gICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGlt
aXplTmV4dEludm9jYXRpb24sICAwKTsKLQotICAgIFNFVChleGVjdXRpb25Db3VudGVySW5jcmVt
ZW50Rm9yTG9vcCwgICAxKTsKLSAgICBTRVQoZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvclJl
dHVybiwgMTUpOwotCi0gICAgU0VUKGRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW8s
IDYpOwotICAgIAotICAgIFNFVChsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZCwgMTAwKTsK
LSAgICBTRVQoY291bGRUYWtlU2xvd0Nhc2VUaHJlc2hvbGQsICAgIDEwKTsgLy8gU2hvdWxkbid0
IGJlIHplcm8gYmVjYXVzZSBzb21lIG9wcyB3aWxsIHNwdXJpb3VzbHkgdGFrZSBzbG93IGNhc2Us
IGZvciBleGFtcGxlIGZvciBsaW5raW5nIG9yIGNhY2hpbmcuCi0KLSAgICBTRVQobGFyZ2VGYWls
Q291bnRUaHJlc2hvbGRCYXNlLCAgICAgICAgMjApOwotICAgIFNFVChsYXJnZUZhaWxDb3VudFRo
cmVzaG9sZEJhc2VGb3JMb29wLCAxKTsKLQotICAgIFNFVChyZW9wdGltaXphdGlvblJldHJ5Q291
bnRlclN0ZXAsIDEpOwotCi0gICAgU0VUKG1pbmltdW1PcHRpbWl6YXRpb25EZWxheSwgICAxKTsK
LSAgICBTRVQobWF4aW11bU9wdGltaXphdGlvbkRlbGF5LCAgIDUpOwotICAgIFNFVChkZXNpcmVk
UHJvZmlsZUxpdmVuZXNzUmF0ZSwgMC43NSk7Ci0gICAgU0VUKGRlc2lyZWRQcm9maWxlRnVsbG5l
c3NSYXRlLCAwLjM1KTsKLSAgICAKLSAgICBTRVQobWluaW11bU51bWJlck9mU2NhbnNCZXR3ZWVu
UmViYWxhbmNlLCAxMDAwMCk7Ci0gICAgU0VUKGdjTWFya1N0YWNrU2VnbWVudFNpemUsICAgICAg
ICAgICAgICAgcGFnZVNpemUoKSk7Ci0gICAgU0VUKG1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVw
LCAgICAgICAgICAgMTApOwotICAgIFNFVChtYXhpbXVtTnVtYmVyT2ZTaGFyZWRTZWdtZW50cywg
ICAgICAgIDMpOwotICAgIFNFVChzaGFyZWRTdGFja1dha2V1cFRocmVzaG9sZCwgICAgICAgICAg
IDEpOwotICAgIFNFVChvcGFxdWVSb290TWVyZ2VUaHJlc2hvbGQsICAgICAgICAgICAgIDEwMDAp
OwotCi0gICAgaW50IGNwdXNUb1VzZSA9IDE7Ci0jaWYgT1MoREFSV0lOKSAmJiBFTkFCTEUoUEFS
QUxMRUxfR0MpCi0gICAgaW50IG5hbWVbMl07Ci0gICAgc2l6ZV90IHZhbHVlU2l6ZSA9IHNpemVv
ZihjcHVzVG9Vc2UpOwotICAgIG5hbWVbMF0gPSBDVExfSFc7Ci0gICAgbmFtZVsxXSA9IEhXX0FW
QUlMQ1BVOwotICAgIHN5c2N0bChuYW1lLCAyLCAmY3B1c1RvVXNlLCAmdmFsdWVTaXplLCAwLCAw
KTsKLSNlbmRpZgotICAgIC8vIFdlIGRvbid0IHNjYWxlIHNvIHdlbGwgYmV5b25kIDQuCi0gICAg
aWYgKGNwdXNUb1VzZSA+IDQpCi0gICAgICAgIGNwdXNUb1VzZSA9IDQ7Ci0gICAgLy8gQmUgcGFy
YW5vaWQsIGl0IGlzIHRoZSBPUyB3ZSdyZSBkZWFsaW5nIHdpdGgsIGFmdGVyIGFsbC4KLSAgICBp
ZiAoY3B1c1RvVXNlIDwgMSkKLSAgICAgICAgY3B1c1RvVXNlID0gMTsKLSAgICAKLSAgICBTRVQo
bnVtYmVyT2ZHQ01hcmtlcnMsIGNwdXNUb1VzZSk7Ci0KLSAgICBBU1NFUlQoZXhlY3V0aW9uQ291
bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb24gPD0gZXhlY3V0aW9uQ291bnRlclZh
bHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApOwotICAgIEFTU0VSVChleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCA8PSBleGVjdXRpb25Db3VudGVyVmFs
dWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwKTsKLSAgICBBU1NFUlQoZXhlY3V0aW9uQ291bnRlclZh
bHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCA8PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRp
bWl6ZVNvb24pOwotICAgIEFTU0VSVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFm
dGVyV2FybVVwIDwgMCk7Ci0gICAgQVNTRVJUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGlt
aXplU29vbiA8PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZU5leHRJbnZvY2F0aW9u
KTsKLSAgICAKLSAgICAvLyBDb21wdXRlIHRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSByZW9wdGlt
aXphdGlvbiByZXRyeSBjb3VudGVyLiBUaGlzIGlzIHNpbXBseQotICAgIC8vIHRoZSBsYXJnZXN0
IHZhbHVlIGF0IHdoaWNoIHdlIGRvbid0IG92ZXJmbG93IHRoZSBleGVjdXRlIGNvdW50ZXIsIHdo
ZW4gdXNpbmcgaXQKLSAgICAvLyB0byBsZWZ0LXNoaWZ0IHRoZSBleGVjdXRpb24gY291bnRlciBi
eSB0aGlzIGFtb3VudC4gQ3VycmVudGx5IHRoZSB2YWx1ZSBlbmRzCi0gICAgLy8gdXAgYmVpbmcg
MTgsIHNvIHRoaXMgbG9vcCBpcyBub3Qgc28gdGVycmlibGU7IGl0IHByb2JhYmx5IHRha2VzIHVw
IH4xMDAgY3ljbGVzCi0gICAgLy8gdG90YWwgb24gYSAzMi1iaXQgcHJvY2Vzc29yLgotICAgIHJl
b3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4ID0gMDsKLSAgICB3aGlsZSAoKHN0YXRpY19jYXN0
PGludDY0X3Q+KGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVw
KSA8PCAocmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXggKyAxKSkgPj0gc3RhdGljX2Nhc3Q8
aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpKQotICAgICAgICBy
ZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1heCsrOwotICAgIAotICAgIEFTU0VSVCgoc3RhdGlj
X2Nhc3Q8aW50NjRfdD4oZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdX
YXJtVXApIDw8IHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4KSA8IDApOwotICAgIEFTU0VS
VCgoc3RhdGljX2Nhc3Q8aW50NjRfdD4oZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVB
ZnRlckxvbmdXYXJtVXApIDw8IHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4KSA+PSBzdGF0
aWNfY2FzdDxpbnQ2NF90PihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSkpOwot
fQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6SGV1cmlzdGljcwotCi0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hldXJpc3RpY3MuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0hldXJpc3RpY3MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYTE0ODU5ZmE4ZGNhMTJhY2MxZGQzMDA1YmNhNzliYTI4MzhiNzBlMS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9IZXVyaXN0aWNzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgSGV1cmlz
dGljc19oCi0jZGVmaW5lIEhldXJpc3RpY3NfaAotCi0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0KLW5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgSGV1cmlzdGljcyB7Ci0KLWV4dGVybiB1bnNpZ25lZCBt
YXhpbXVtRXZhbE9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7Ci1leHRlcm4g
dW5zaWduZWQgbWF4aW11bVByb2dyYW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNv
dW50OwotZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNhbGxPcHRpbWl6YXRpb25D
YW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OwotZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5jdGlv
bkZvckNvbnN0cnVjdE9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7Ci0KLWV4
dGVybiB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1
Y3Rpb25Db3VudDsKLWV4dGVybiB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJ
bmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OwotCi1leHRlcm4gdW5zaWduZWQgbWF4aW11
bUlubGluaW5nRGVwdGg7IC8vIERlcHRoIG9mIGlubGluZSBzdGFjaywgc28gMSA9IG5vIGlubGlu
aW5nLCAyID0gb25lIGxldmVsLCBldGMuCi0KLWV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50
ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXA7Ci1leHRlcm4gaW50MzJfdCBleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKLWV4dGVybiBpbnQzMl90IGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uOwotZXh0ZXJuIGlu
dDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVTb29uOwotZXh0ZXJuIGludDMy
X3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVOZXh0SW52b2NhdGlvbjsKLQotZXh0
ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvckxvb3A7Ci1leHRlcm4gaW50
MzJfdCBleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yUmV0dXJuOwotCi1leHRlcm4gdW5zaWdu
ZWQgZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbzsKLQotZXh0ZXJuIHVuc2lnbmVk
IGxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwotZXh0ZXJuIHVuc2lnbmVkIGNvdWxkVGFr
ZVNsb3dDYXNlVGhyZXNob2xkOwotCi1leHRlcm4gdW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJl
c2hvbGRCYXNlOwotZXh0ZXJuIHVuc2lnbmVkIGxhcmdlRmFpbENvdW50VGhyZXNob2xkQmFzZUZv
ckxvb3A7Ci0KLWV4dGVybiB1bnNpZ25lZCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1heDsK
LWV4dGVybiB1bnNpZ25lZCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlclN0ZXA7Ci0KLWV4dGVy
biB1bnNpZ25lZCBtaW5pbXVtT3B0aW1pemF0aW9uRGVsYXk7Ci1leHRlcm4gdW5zaWduZWQgbWF4
aW11bU9wdGltaXphdGlvbkRlbGF5OwotZXh0ZXJuIGRvdWJsZSBkZXNpcmVkUHJvZmlsZUxpdmVu
ZXNzUmF0ZTsKLWV4dGVybiBkb3VibGUgZGVzaXJlZFByb2ZpbGVGdWxsbmVzc1JhdGU7Ci0KLWV4
dGVybiB1bnNpZ25lZCBtaW5pbXVtTnVtYmVyT2ZTY2Fuc0JldHdlZW5SZWJhbGFuY2U7Ci1leHRl
cm4gdW5zaWduZWQgZ2NNYXJrU3RhY2tTZWdtZW50U2l6ZTsKLWV4dGVybiB1bnNpZ25lZCBtaW5p
bXVtTnVtYmVyT2ZDZWxsc1RvS2VlcDsKLWV4dGVybiB1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZT
aGFyZWRTZWdtZW50czsKLWV4dGVybiB1bnNpZ25lZCBzaGFyZWRTdGFja1dha2V1cFRocmVzaG9s
ZDsKLWV4dGVybiB1bnNpZ25lZCBudW1iZXJPZkdDTWFya2VyczsKLWV4dGVybiB1bnNpZ25lZCBv
cGFxdWVSb290TWVyZ2VUaHJlc2hvbGQ7Ci0KLXZvaWQgaW5pdGlhbGl6ZUhldXJpc3RpY3MoKTsK
LQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkhldXJpc3RpY3MKLQotI2VuZGlmIC8vIEhldXJpc3Rp
Y3NfaAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFs
aXplVGhyZWFkaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxp
emVUaHJlYWRpbmcuY3BwCmluZGV4IDNhMzcxZjk1MGQzY2UzYTA3NTNkODBkZjhiMmI5NDM1NmMz
ZjVkZDguLjY5ODk1NzJiZThiOWJhNDljMTAwNTY0ZGUxZjg2ODIyNjEyZjUzYTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcu
Y3BwCkBAIC0zMSw3ICszMSw3IEBACiAKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgi
CiAjaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1ZGUgIkhldXJpc3RpY3MuaCIKKyNpbmNsdWRlICJP
cHRpb25zLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTRGF0ZU1hdGgu
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgpAQCAtNTMsNyArNTMsNyBAQCBzdGF0aWMg
dm9pZCBpbml0aWFsaXplVGhyZWFkaW5nT25jZSgpCiB7CiAgICAgV1RGOjpkb3VibGVfY29udmVy
c2lvbjo6aW5pdGlhbGl6ZSgpOwogICAgIFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwotICAg
IEhldXJpc3RpY3M6OmluaXRpYWxpemVIZXVyaXN0aWNzKCk7CisgICAgT3B0aW9uczo6aW5pdGlh
bGl6ZU9wdGlvbnMoKTsKICNpZiBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCiAgICAg
V3JpdGVCYXJyaWVyQ291bnRlcnM6OmluaXRpYWxpemUoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMDBkYjljN2Y2YjJiNWYx
NGQwNWE3ZjhiNGNmZTA4ZjA5MTJhMmJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKQEAgLTAsMCArMSwyMTEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIk9wdGlvbnMuaCIKKworI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx3
dGYvUGFnZUJsb2NrLmg+CisKKyNpZiBPUyhEQVJXSU4pICYmIEVOQUJMRShQQVJBTExFTF9HQykK
KyNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CisjZW5kaWYKKworLy8gU2V0IHRvIDEgdG8gY29udHJv
bCB0aGUgaGV1cmlzdGljcyB1c2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCisjZGVmaW5lIEVO
QUJMRV9SVU5fVElNRV9IRVVSSVNUSUNTIDAKKworI2lmIEVOQUJMRShSVU5fVElNRV9IRVVSSVNU
SUNTKQorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
T3B0aW9ucyB7CisKK3Vuc2lnbmVkIG1heGltdW1FdmFsT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5z
dHJ1Y3Rpb25Db3VudDsKK3Vuc2lnbmVkIG1heGltdW1Qcm9ncmFtT3B0aW1pemF0aW9uQ2FuZGlk
YXRlSW5zdHJ1Y3Rpb25Db3VudDsKK3Vuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNhbGxPcHRp
bWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OwordW5zaWduZWQgbWF4aW11bUZ1bmN0
aW9uRm9yQ29uc3RydWN0T3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKKwor
dW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9u
Q291bnQ7Cit1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRh
dGVJbnN0cnVjdGlvbkNvdW50OworCit1bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsKKwor
aW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOworaW50
MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKK2lu
dDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247Citp
bnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbjsKK2ludDMyX3QgZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVOZXh0SW52b2NhdGlvbjsKKworaW50MzJfdCBl
eGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yTG9vcDsKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRl
ckluY3JlbWVudEZvclJldHVybjsKKwordW5zaWduZWQgZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vz
c0ZhaWxSYXRpbzsKKwordW5zaWduZWQgbGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7Cit1
bnNpZ25lZCBjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZDsKKwordW5zaWduZWQgbGFyZ2VGYWls
Q291bnRUaHJlc2hvbGRCYXNlOwordW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNl
Rm9yTG9vcDsKKwordW5zaWduZWQgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXg7Cit1bnNp
Z25lZCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlclN0ZXA7CisKK3Vuc2lnbmVkIG1pbmltdW1P
cHRpbWl6YXRpb25EZWxheTsKK3Vuc2lnbmVkIG1heGltdW1PcHRpbWl6YXRpb25EZWxheTsKK2Rv
dWJsZSBkZXNpcmVkUHJvZmlsZUxpdmVuZXNzUmF0ZTsKK2RvdWJsZSBkZXNpcmVkUHJvZmlsZUZ1
bGxuZXNzUmF0ZTsKKwordW5zaWduZWQgbWluaW11bU51bWJlck9mU2NhbnNCZXR3ZWVuUmViYWxh
bmNlOwordW5zaWduZWQgZ2NNYXJrU3RhY2tTZWdtZW50U2l6ZTsKK3Vuc2lnbmVkIG1pbmltdW1O
dW1iZXJPZkNlbGxzVG9LZWVwOwordW5zaWduZWQgbWF4aW11bU51bWJlck9mU2hhcmVkU2VnbWVu
dHM7Cit1bnNpZ25lZCBzaGFyZWRTdGFja1dha2V1cFRocmVzaG9sZDsKK3Vuc2lnbmVkIG51bWJl
ck9mR0NNYXJrZXJzOwordW5zaWduZWQgb3BhcXVlUm9vdE1lcmdlVGhyZXNob2xkOworCisjaWYg
RU5BQkxFKFJVTl9USU1FX0hFVVJJU1RJQ1MpCitzdGF0aWMgYm9vbCBwYXJzZShjb25zdCBjaGFy
KiBzdHJpbmcsIGludDMyX3QmIHZhbHVlKQoreworICAgIHJldHVybiBzc2NhbmYoc3RyaW5nLCAi
JWQiLCAmdmFsdWUpID09IDE7Cit9CisKK3N0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0
cmluZywgdW5zaWduZWQmIHZhbHVlKQoreworICAgIHJldHVybiBzc2NhbmYoc3RyaW5nLCAiJXUi
LCAmdmFsdWUpID09IDE7Cit9CisKK3N0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmlu
ZywgZG91YmxlJiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gc3NjYW5mKHN0cmluZywgIiVsZiIsICZ2
YWx1ZSkgPT0gMTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK3ZvaWQg
c2V0SGV1cmlzdGljKFQmIHZhcmlhYmxlLCBjb25zdCBjaGFyKiBuYW1lLCBVIHZhbHVlKQorewor
ICAgIGNvbnN0IGNoYXIqIHN0cmluZ1ZhbHVlID0gZ2V0ZW52KG5hbWUpOworICAgIGlmICghc3Ry
aW5nVmFsdWUpIHsKKyAgICAgICAgdmFyaWFibGUgPSBzYWZlQ2FzdDxUPih2YWx1ZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKHBhcnNlKHN0cmluZ1ZhbHVlLCB2YXJp
YWJsZSkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBmcHJpbnRmKHN0ZGVyciwgIldBUk5J
Tkc6IGZhaWxlZCB0byBwYXJzZSAlcz0lc1xuIiwgbmFtZSwgc3RyaW5nVmFsdWUpOworICAgIHZh
cmlhYmxlID0gc2FmZUNhc3Q8VD4odmFsdWUpOworfQorCisjZGVmaW5lIFNFVCh2YXJpYWJsZSwg
dmFsdWUpIHNldEhldXJpc3RpYyh2YXJpYWJsZSwgIkpTQ18iICN2YXJpYWJsZSwgdmFsdWUpCisj
ZWxzZQorI2RlZmluZSBTRVQodmFyaWFibGUsIHZhbHVlKSB2YXJpYWJsZSA9IHZhbHVlCisjZW5k
aWYKKwordm9pZCBpbml0aWFsaXplT3B0aW9ucygpCit7CisgICAgLy8gRklYTUU6IE11c3QgcmV2
aXNpdCB0aGVzZSBoZXVyaXN0aWNzISBUaGUgREZHLCBiZWluZyBhbiBvcHRpbWl6aW5nIGNvbXBp
bGVyLCBtYXkKKyAgICAvLyB0YWtlIGEgbG9uZyB0aW1lIGZvciBwYXRob2xvZ2ljYWxseSBodWdl
IGNvZGUgYmxvY2tzLiBUaGUgYmVzdCB3YXkgdG8gY29wZSB3aXRoCisgICAgLy8gdGhpcyBpcyB0
byByZWZ1c2UgdG8gb3B0aW1pemUgdGhlbS4KKyAgICBTRVQobWF4aW11bUV2YWxPcHRpbWl6YXRp
b25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50LCAgICAgICAgICAgICAgICAgc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKKyAgICBTRVQobWF4aW11bVByb2dyYW1PcHRpbWl6
YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50LCAgICAgICAgICAgICAgc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKKyAgICBTRVQobWF4aW11bUZ1bmN0aW9uRm9yQ2Fs
bE9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQsICAgICAgc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKKyAgICBTRVQobWF4aW11bUZ1bmN0aW9uRm9yQ29u
c3RydWN0T3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCwgc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKKyAgICAKKyAgICBTRVQobWF4aW11bUZ1bmN0aW9u
Rm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQsIDE1MCk7CisgICAgU0VUKG1h
eGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQs
IDgwKTsKKyAgICAKKyAgICBTRVQobWF4aW11bUlubGluaW5nRGVwdGgsIDUpOworCisgICAgU0VU
KGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAsICAgICAtMTAwMCk7
CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVw
LCAtNTAwMCk7CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFu
eXRpbWVTb29uLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSk7CisgICAgU0VU
KGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbiwgICAgICAgICAgICAtMTAwMCk7
CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplTmV4dEludm9jYXRpb24s
ICAwKTsKKworICAgIFNFVChleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yTG9vcCwgICAxKTsK
KyAgICBTRVQoZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvclJldHVybiwgMTUpOworCisgICAg
U0VUKGRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW8sIDYpOworICAgIAorICAgIFNF
VChsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZCwgMTAwKTsKKyAgICBTRVQoY291bGRUYWtl
U2xvd0Nhc2VUaHJlc2hvbGQsICAgIDEwKTsgLy8gU2hvdWxkbid0IGJlIHplcm8gYmVjYXVzZSBz
b21lIG9wcyB3aWxsIHNwdXJpb3VzbHkgdGFrZSBzbG93IGNhc2UsIGZvciBleGFtcGxlIGZvciBs
aW5raW5nIG9yIGNhY2hpbmcuCisKKyAgICBTRVQobGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNl
LCAgICAgICAgMjApOworICAgIFNFVChsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2VGb3JMb29w
LCAxKTsKKworICAgIFNFVChyZW9wdGltaXphdGlvblJldHJ5Q291bnRlclN0ZXAsIDEpOworCisg
ICAgU0VUKG1pbmltdW1PcHRpbWl6YXRpb25EZWxheSwgICAxKTsKKyAgICBTRVQobWF4aW11bU9w
dGltaXphdGlvbkRlbGF5LCAgIDUpOworICAgIFNFVChkZXNpcmVkUHJvZmlsZUxpdmVuZXNzUmF0
ZSwgMC43NSk7CisgICAgU0VUKGRlc2lyZWRQcm9maWxlRnVsbG5lc3NSYXRlLCAwLjM1KTsKKyAg
ICAKKyAgICBTRVQobWluaW11bU51bWJlck9mU2NhbnNCZXR3ZWVuUmViYWxhbmNlLCAxMDAwMCk7
CisgICAgU0VUKGdjTWFya1N0YWNrU2VnbWVudFNpemUsICAgICAgICAgICAgICAgcGFnZVNpemUo
KSk7CisgICAgU0VUKG1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVwLCAgICAgICAgICAgMTApOwor
ICAgIFNFVChtYXhpbXVtTnVtYmVyT2ZTaGFyZWRTZWdtZW50cywgICAgICAgIDMpOworICAgIFNF
VChzaGFyZWRTdGFja1dha2V1cFRocmVzaG9sZCwgICAgICAgICAgIDEpOworICAgIFNFVChvcGFx
dWVSb290TWVyZ2VUaHJlc2hvbGQsICAgICAgICAgICAgIDEwMDApOworCisgICAgaW50IGNwdXNU
b1VzZSA9IDE7CisjaWYgT1MoREFSV0lOKSAmJiBFTkFCTEUoUEFSQUxMRUxfR0MpCisgICAgaW50
IG5hbWVbMl07CisgICAgc2l6ZV90IHZhbHVlU2l6ZSA9IHNpemVvZihjcHVzVG9Vc2UpOworICAg
IG5hbWVbMF0gPSBDVExfSFc7CisgICAgbmFtZVsxXSA9IEhXX0FWQUlMQ1BVOworICAgIHN5c2N0
bChuYW1lLCAyLCAmY3B1c1RvVXNlLCAmdmFsdWVTaXplLCAwLCAwKTsKKyNlbmRpZgorICAgIC8v
IFdlIGRvbid0IHNjYWxlIHNvIHdlbGwgYmV5b25kIDQuCisgICAgaWYgKGNwdXNUb1VzZSA+IDQp
CisgICAgICAgIGNwdXNUb1VzZSA9IDQ7CisgICAgLy8gQmUgcGFyYW5vaWQsIGl0IGlzIHRoZSBP
UyB3ZSdyZSBkZWFsaW5nIHdpdGgsIGFmdGVyIGFsbC4KKyAgICBpZiAoY3B1c1RvVXNlIDwgMSkK
KyAgICAgICAgY3B1c1RvVXNlID0gMTsKKyAgICAKKyAgICBTRVQobnVtYmVyT2ZHQ01hcmtlcnMs
IGNwdXNUb1VzZSk7CisKKyAgICBBU1NFUlQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9w
dGltaXplQW55dGltZVNvb24gPD0gZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRl
ckxvbmdXYXJtVXApOworICAgIEFTU0VSVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6
ZUFmdGVyTG9uZ1dhcm1VcCA8PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVy
V2FybVVwKTsKKyAgICBBU1NFUlQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRl
cldhcm1VcCA8PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZVNvb24pOworICAgIEFT
U0VSVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwIDwgMCk7Cisg
ICAgQVNTRVJUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbiA8PSBleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZU5leHRJbnZvY2F0aW9uKTsKKyAgICAKKyAgICAvLyBD
b21wdXRlIHRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSByZW9wdGltaXphdGlvbiByZXRyeSBjb3Vu
dGVyLiBUaGlzIGlzIHNpbXBseQorICAgIC8vIHRoZSBsYXJnZXN0IHZhbHVlIGF0IHdoaWNoIHdl
IGRvbid0IG92ZXJmbG93IHRoZSBleGVjdXRlIGNvdW50ZXIsIHdoZW4gdXNpbmcgaXQKKyAgICAv
LyB0byBsZWZ0LXNoaWZ0IHRoZSBleGVjdXRpb24gY291bnRlciBieSB0aGlzIGFtb3VudC4gQ3Vy
cmVudGx5IHRoZSB2YWx1ZSBlbmRzCisgICAgLy8gdXAgYmVpbmcgMTgsIHNvIHRoaXMgbG9vcCBp
cyBub3Qgc28gdGVycmlibGU7IGl0IHByb2JhYmx5IHRha2VzIHVwIH4xMDAgY3ljbGVzCisgICAg
Ly8gdG90YWwgb24gYSAzMi1iaXQgcHJvY2Vzc29yLgorICAgIHJlb3B0aW1pemF0aW9uUmV0cnlD
b3VudGVyTWF4ID0gMDsKKyAgICB3aGlsZSAoKHN0YXRpY19jYXN0PGludDY0X3Q+KGV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKSA8PCAocmVvcHRpbWl6YXRp
b25SZXRyeUNvdW50ZXJNYXggKyAxKSkgPj0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RkOjpudW1l
cmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpKQorICAgICAgICByZW9wdGltaXphdGlvblJldHJ5
Q291bnRlck1heCsrOworICAgIAorICAgIEFTU0VSVCgoc3RhdGljX2Nhc3Q8aW50NjRfdD4oZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApIDw8IHJlb3B0aW1p
emF0aW9uUmV0cnlDb3VudGVyTWF4KSA8IDApOworICAgIEFTU0VSVCgoc3RhdGljX2Nhc3Q8aW50
NjRfdD4oZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApIDw8
IHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4KSA+PSBzdGF0aWNfY2FzdDxpbnQ2NF90Pihz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSkpOworfQorCit9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6T3B0aW9ucworCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xMDliMzkyMTI5MzI4MmMxMjViOTU3ZjEyYmI0ZWI1YmE1Y2ZlMWFjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5o
CkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBPcHRpb25zX2gKKyNkZWZpbmUgT3B0aW9uc19oCisKKyNpbmNsdWRl
IDxzdGRpbnQuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBPcHRpb25zIHsKKworZXh0
ZXJuIHVuc2lnbmVkIG1heGltdW1FdmFsT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25D
b3VudDsKK2V4dGVybiB1bnNpZ25lZCBtYXhpbXVtUHJvZ3JhbU9wdGltaXphdGlvbkNhbmRpZGF0
ZUluc3RydWN0aW9uQ291bnQ7CitleHRlcm4gdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ2Fs
bE9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CitleHRlcm4gdW5zaWduZWQg
bWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0T3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rp
b25Db3VudDsKKworZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNhbGxJbmxpbmVD
YW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OworZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5jdGlv
bkZvckNvbnN0cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CisKK2V4dGVybiB1
bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsgLy8gRGVwdGggb2YgaW5saW5lIHN0YWNrLCBz
byAxID0gbm8gaW5saW5pbmcsIDIgPSBvbmUgbGV2ZWwsIGV0Yy4KKworZXh0ZXJuIGludDMyX3Qg
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcDsKK2V4dGVybiBpbnQz
Ml90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwOworZXh0
ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNv
b247CitleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZVNvb247
CitleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZU5leHRJbnZv
Y2F0aW9uOworCitleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yTG9v
cDsKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JSZXR1cm47CisK
K2V4dGVybiB1bnNpZ25lZCBkZXNpcmVkU3BlY3VsYXRpdmVTdWNjZXNzRmFpbFJhdGlvOworCitl
eHRlcm4gdW5zaWduZWQgbGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CitleHRlcm4gdW5z
aWduZWQgY291bGRUYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CisKK2V4dGVybiB1bnNpZ25lZCBsYXJn
ZUZhaWxDb3VudFRocmVzaG9sZEJhc2U7CitleHRlcm4gdW5zaWduZWQgbGFyZ2VGYWlsQ291bnRU
aHJlc2hvbGRCYXNlRm9yTG9vcDsKKworZXh0ZXJuIHVuc2lnbmVkIHJlb3B0aW1pemF0aW9uUmV0
cnlDb3VudGVyTWF4OworZXh0ZXJuIHVuc2lnbmVkIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVy
U3RlcDsKKworZXh0ZXJuIHVuc2lnbmVkIG1pbmltdW1PcHRpbWl6YXRpb25EZWxheTsKK2V4dGVy
biB1bnNpZ25lZCBtYXhpbXVtT3B0aW1pemF0aW9uRGVsYXk7CitleHRlcm4gZG91YmxlIGRlc2ly
ZWRQcm9maWxlTGl2ZW5lc3NSYXRlOworZXh0ZXJuIGRvdWJsZSBkZXNpcmVkUHJvZmlsZUZ1bGxu
ZXNzUmF0ZTsKKworZXh0ZXJuIHVuc2lnbmVkIG1pbmltdW1OdW1iZXJPZlNjYW5zQmV0d2VlblJl
YmFsYW5jZTsKK2V4dGVybiB1bnNpZ25lZCBnY01hcmtTdGFja1NlZ21lbnRTaXplOworZXh0ZXJu
IHVuc2lnbmVkIG1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVwOworZXh0ZXJuIHVuc2lnbmVkIG1h
eGltdW1OdW1iZXJPZlNoYXJlZFNlZ21lbnRzOworZXh0ZXJuIHVuc2lnbmVkIHNoYXJlZFN0YWNr
V2FrZXVwVGhyZXNob2xkOworZXh0ZXJuIHVuc2lnbmVkIG51bWJlck9mR0NNYXJrZXJzOworZXh0
ZXJuIHVuc2lnbmVkIG9wYXF1ZVJvb3RNZXJnZVRocmVzaG9sZDsKKwordm9pZCBpbml0aWFsaXpl
T3B0aW9ucygpOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6T3B0aW9ucworCisjZW5kaWYgLy8g
T3B0aW9uc19oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhw
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhwLmNwcAppbmRleCA3ZjlmYTdh
YWMyYTk1ZDlmM2FlODMyMmUzNjRjYWQyY2QzYzM1MjM5Li5jZmRkOWExZjVlZjEyYjE2NDIzYjdm
NDU3MjZmY2QxNDk0MzBhNDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dFJlZ0V4cC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCkBA
IC01Niw4ICs1Niw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIHN0YXRpYyB2b2lkIGNsZWFu
dXBHbG9iYWxEYXRhKEpTR2xvYmFsRGF0YSopOwogCi1zdHJ1Y3QgT3B0aW9ucyB7Ci0gICAgT3B0
aW9ucygpCitzdHJ1Y3QgQ29tbWFuZExpbmUgeworICAgIENvbW1hbmRMaW5lKCkKICAgICAgICAg
OiBpbnRlcmFjdGl2ZShmYWxzZSkKICAgICAgICAgLCB2ZXJib3NlKGZhbHNlKQogICAgIHsKQEAg
LTQ5MCw3ICs0OTAsNyBAQCBzdGF0aWMgTk9fUkVUVVJOIHZvaWQgcHJpbnRVc2FnZVN0YXRlbWVu
dChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGJvb2wgaGVscCA9CiAgICAgZXhpdChoZWxwID8g
RVhJVF9TVUNDRVNTIDogRVhJVF9GQUlMVVJFKTsKIH0KIAotc3RhdGljIHZvaWQgcGFyc2VBcmd1
bWVudHMoaW50IGFyZ2MsIGNoYXIqKiBhcmd2LCBPcHRpb25zJiBvcHRpb25zLCBKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEpCitzdGF0aWMgdm9pZCBwYXJzZUFyZ3VtZW50cyhpbnQgYXJnYywgY2hh
cioqIGFyZ3YsIENvbW1hbmRMaW5lJiBvcHRpb25zLCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEp
CiB7CiAgICAgaW50IGkgPSAxOwogICAgIGZvciAoOyBpIDwgYXJnYzsgKytpKSB7CkBAIC01MTEs
NyArNTExLDcgQEAgaW50IHJlYWxNYWluKGludCBhcmdjLCBjaGFyKiogYXJndiwgSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhKQogewogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25s
eSk7CiAKLSAgICBPcHRpb25zIG9wdGlvbnM7CisgICAgQ29tbWFuZExpbmUgb3B0aW9uczsKICAg
ICBwYXJzZUFyZ3VtZW50cyhhcmdjLCBhcmd2LCBvcHRpb25zLCBnbG9iYWxEYXRhKTsKIAogICAg
IEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUoKmdsb2Jh
bERhdGEsIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKCpnbG9iYWxEYXRhLCBqc051bGwo
KSksIG9wdGlvbnMuYXJndW1lbnRzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116979</attachid>
            <date>2011-11-29 09:03:00 -0800</date>
            <delta_ts>2011-12-12 02:58:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72889-20111129180258.patch</filename>
            <type>text/plain</type>
            <size>62436</size>
            <attacher name="Andy Wingo">wingo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
YTExM2QzZDUyYmM3MzM5MTYzMDVlNjRiZTc2YTUxYjA5YzA5ODU0Li4wYjgxZDQzMWY1YjhlNDVh
ZTkxZDJlNDcwMmE5OTU3ZTQzODhkYjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NyBAQAorMjAxMS0xMS0yMiAgQW5keSBXaW5nbyAgPHdpbmdvQGlnYWxpYS5jb20+CisK
KyAgICAgICAgUmVuYW1lIEpTQzo6SGV1cmlzdGljcyB0byBKU0M6Ok9wdGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyODg5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMu
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGV1cmlzdGlj
cy5jcHAuCisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmguCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6c2hvdWxkT3B0aW1pemVOb3cpOgorICAgICAgICAqIGJ5dGVj
b2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZVNs
b3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjb3VsZFRha2VTbG93Q2FzZSk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlU3BlY2lhbEZhc3RDYXNlKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rha2VEZWVwZXN0U2xvd0Nhc2UpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZUFueVNsb3dDYXNlKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpyZW9wdGltaXphdGlvblJldHJ5Q291bnRlcik6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6Y291bnRSZW9wdGltaXphdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6Y291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6Y291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6Om9wdGltaXplTmV4dEludm9jYXRpb24pOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmRvbnRPcHRpbWl6ZUFueXRpbWVTb29uKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpvcHRpbWl6ZVNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxhcmdl
RmFpbENvdW50VGhyZXNob2xkKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsYXJnZUZhaWxD
b3VudFRocmVzaG9sZEZvckxvb3ApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNob3VsZFJl
b3B0aW1pemVOb3cpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNob3VsZFJlb3B0aW1pemVG
cm9tTG9vcE5vdyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAq
IGRmZy9ERkdDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjptaWdodENvbXBpbGVF
dmFsKToKKyAgICAgICAgKEpTQzo6REZHOjptaWdodENvbXBpbGVQcm9ncmFtKToKKyAgICAgICAg
KEpTQzo6REZHOjptaWdodENvbXBpbGVGdW5jdGlvbkZvckNhbGwpOgorICAgICAgICAoSlNDOjpE
Rkc6Om1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6REZH
OjptaWdodElubGluZUZ1bmN0aW9uRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6bWlnaHRJ
bmxpbmVGdW5jdGlvbkZvckNvbnN0cnVjdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21w
aWxlcjMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmNvbXBp
bGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGhl
YXAvTWFya1N0YWNrLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrU2VnbWVudEFsbG9jYXRv
cjo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2tTZWdtZW50QWxsb2NhdG9yOjpz
aHJpbmtSZXNlcnZlKToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrQXJyYXk6Ok1hcmtTdGFja0Fy
cmF5KToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrQXJyYXk6OmRvbmF0ZVNvbWVDZWxsc1RvKToK
KyAgICAgICAgKEpTQzo6TWFya1N0YWNrQXJyYXk6OnN0ZWFsU29tZUNlbGxzRnJvbSk6CisgICAg
ICAgIChKU0M6Ok1hcmtTdGFja1RocmVhZFNoYXJlZERhdGE6Ok1hcmtTdGFja1RocmVhZFNoYXJl
ZERhdGEpOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6ZG9uYXRlU2xvdyk6CisgICAgICAg
IChKU0M6OlNsb3RWaXNpdG9yOjpkcmFpbik6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjpk
cmFpbkZyb21TaGFyZWQpOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmg6CisgICAgICAgIChK
U0M6Ok1hcmtTdGFjazo6bWVyZ2VPcGFxdWVSb290c0lmUHJvZml0YWJsZSk6CisgICAgICAgIChK
U0M6Ok1hcmtTdGFjazo6YWRkT3BhcXVlUm9vdCk6CisgICAgICAgIChKU0M6Ok1hcmtTdGFja0Fy
cmF5OjpjYW5Eb25hdGVTb21lQ2VsbHMpOgorICAgICAgICAqIGhlYXAvU2xvdFZpc2l0b3IuaDoK
KyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmRvbmF0ZSk6CisgICAgICAgICogaml0L0pJVC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE9wdGltaXphdGlvbkNoZWNrKToKKyAgICAgICAg
KiBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwOgorICAgICAgICAoSlNDOjppbml0aWFs
aXplVGhyZWFkaW5nT25jZSk6IEFkYXB0IGNhbGxlcnMgYW5kIGJ1aWxkIHN5c3RlbXMuCisKKyAg
ICAgICAgKiB0ZXN0UmVnRXhwLmNwcDoKKyAgICAgICAgKENvbW1hbmRMaW5lOjpDb21tYW5kTGlu
ZSk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKENvbW1hbmRMaW5lOjpDb21tYW5kTGlu
ZSk6CisgICAgICAgIFJlbmFtZSBmcm9tIE9wdGlvbnMsIHRvIGF2b2lkIG5hbWUgY29uZmxpY3Qu
CisKIDIwMTEtMTEtMjggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBERkcgZGVidWdDYWxsKCkgbWVjaGFuaXNtIG9ubHkgd29ya3Mgb24gWDg2IGFuZCBYODYtNjQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA1NDcxOTk0NmEyY2ZjZjVmZTEy
YzZlZGVkZWEzODAzOGNhZTRmNDUxLi4zMDM0MzQ2MDU0YzAzNWM1YzdkNjBjMTQyZGFmMWU1ZWEw
NzdmYTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMzQsNyArMTM0
LDYgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0Z1bmN0aW9uUHJv
dG90eXBlLmNwcAogICAgIHJ1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAogICAgIHJ1bnRp
bWUvR2V0dGVyU2V0dGVyLmNwcAotICAgIHJ1bnRpbWUvSGV1cmlzdGljcy5jcHAKICAgICBydW50
aW1lL0lkZW50aWZpZXIuY3BwCiAgICAgcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAog
ICAgIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKQEAgLTE3MSw2ICsxNzAsNyBAQCBTRVQo
SmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3Bw
CiAgICAgcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9PcGVyYXRpb25z
LmNwcAorICAgIHJ1bnRpbWUvT3B0aW9ucy5jcHAKICAgICBydW50aW1lL1Byb3BlcnR5RGVzY3Jp
cHRvci5jcHAKICAgICBydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5LmNwcAogICAgIHJ1bnRpbWUv
UHJvcGVydHlTbG90LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQppbmRleCBhMzRjMjAwNTkwZDM4NDRjNzRlYzg0YzNiMmU1N2VhM2RlMWJlYzM1Li5mNTMzMDVh
ZDRkZDY1MTI1NmI0MjdiMDA0NDYzYWM1N2I1OWU4ZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzU3LDggKzM1Nyw2IEBAIGphdmFzY3JpcHRjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlD
YWxsYmFjay5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIu
Y3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaCBcCi0J
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGV1cmlzdGljcy5jcHAgXAotCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0hldXJpc3RpY3MuaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0lkZW50aWZpZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlh
bGl6ZVRocmVhZGluZy5jcHAgXApAQCAtNDM3LDYgKzQzNSw4IEBAIGphdmFzY3JpcHRjb3JlX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlw
ZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eURlc2NyaXB0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eURlc2NyaXB0b3IuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlNYXBIYXNoVGFibGUuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvaiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCmluZGV4IGE3OTNkZDdlZDViOWMwNTZkMzI0NjNmMGQz
YTBhMWJkMzk4OGMyZDMuLjg4ODI2OTYyMzg5NGQ4NGVhMjI0MjY4NDgwZWU5NGU5Y2M1MTg4YzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qCkBAIC03MzQsMTQgKzczNCw2IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZp
bGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcSGV1cmlzdGljcy5jcHAiCi0JCQkJ
PgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVc
SGV1cmlzdGljcy5oIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQ
YXRoPSIuLlwuLlxydW50aW1lXElkZW50aWZpZXIuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAg
LTEwMzgsNiArMTAzMCwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXE9wdGlvbnMuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4K
KwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXE9wdGlvbnMuaCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGlt
ZVxQcm9wZXJ0eURlc2NyaXB0b3IuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggYmZkOTk1NzlhNGE1NDIyYjEyZjljYjNjOGFhNTc3MzEwNDJh
ZDk2Ni4uZmIxMGNhMzc0ZTAxZWYwMDc4ODE1M2ZmMTU3N2EzOTc2Y2Q2NjdlNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNCw4ICsxMDQsOCBAQAogCQkwRkQ4MkU5MDE0MjA3
QTVGMDAxNzlDOTQgLyogVmFsdWVQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgyRThFMTQyMDdBNTEwMDE3OUM5NCAvKiBWYWx1ZVBy
b2ZpbGUuY3BwICovOyB9OwogCQkwRkQ4MkVGNTE0MjMwNzVCMDAxNzlDOTQgLyogREZHSW50cmlu
c2ljLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4
MkVGMzE0MjMwNzM5MDAxNzlDOTQgLyogREZHSW50cmluc2ljLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZEODJGNEIxNDI4MDZBMTAwMTc5Qzk0
IC8qIEJpdFZlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZEODJGNDkxNDI4MDY5MjAwMTc5Qzk0IC8qIEJpdFZlY3Rvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGRTIyOEVEMTQzNkFCMjcw
MDE5NkM0OCAvKiBIZXVyaXN0aWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkUyMjhFQjE0MzZBQjIzMDAxOTZDNDggLyogSGV1cmlzdGljcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGRTIyOEVF
MTQzNkFCMkMwMDE5NkM0OCAvKiBIZXVyaXN0aWNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTIyOEVBMTQzNkFCMjMwMDE5NkM0OCAvKiBIZXVy
aXN0aWNzLmNwcCAqLzsgfTsKKwkJMEZFMjI4RUQxNDM2QUIyNzAwMTk2QzQ4IC8qIE9wdGlvbnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTIyOEVC
MTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZFMjI4RUUxNDM2QUIyQzAwMTk2QzQ4IC8qIE9wdGlv
bnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZF
MjI4RUExNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwICovOyB9OwogCQkwRkZGNEJCNDE0
Mzk1NUU5MDA2NTVCQzAgLyogREZHU3RydWN0dXJlU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGNEJCMjE0Mzk1NUU2MDA2NTVCQzAgLyogREZH
U3RydWN0dXJlU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMTQwMDA2NzcxMkE2Rjc4MzAwNjREMTIzIC8qIE9TQWxsb2NhdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAwMDY3NjEyQTZGNzgz
MDA2NEQxMjMgLyogT1NBbGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkxNDAwMDY5MzEyQTZGOUUxMDA2NEQxMjMgLyogT1NBbGxvY2F0
b3JQb3NpeC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxNDAwMDY5MjEyQTZGOUUxMDA2NEQxMjMgLyogT1NBbGxvY2F0b3JQb3NpeC5jcHAgKi87IH07
CkBAIC04ODQsOCArODg0LDggQEAKIAkJMEZEODJFOEUxNDIwN0E1MTAwMTc5Qzk0IC8qIFZhbHVl
UHJvZmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWYWx1ZVBy
b2ZpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkQ4MkVGMzE0MjMwNzM5
MDAxNzlDOTQgLyogREZHSW50cmluc2ljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR0ludHJpbnNpYy5oOyBwYXRoID0gZGZnL0RGR0ludHJpbnNpYy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkQ4MkY0OTE0MjgwNjkyMDAxNzlDOTQgLyogQml0VmVjdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJpdFZlY3Rvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkwRkUyMjhFQTE0MzZBQjIzMDAxOTZDNDggLyogSGV1cmlz
dGljcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZXVyaXN0aWNz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZFMjI4RUIxNDM2QUIyMzAwMTk2
QzQ4IC8qIEhldXJpc3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGV1
cmlzdGljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkUyMjhFQTE0MzZBQjIz
MDAxOTZDNDggLyogT3B0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBPcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFMjI4RUIx
NDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZGNEJCMjE0
Mzk1NUU2MDA2NTVCQzAgLyogREZHU3RydWN0dXJlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERGR1N0cnVjdHVyZVNldC5oOyBwYXRoID0gZGZnL0RGR1N0cnVjdHVyZVNl
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDAwMDY3NjEyQTZGNzgzMDA2NEQx
MjMgLyogT1NBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT1NB
bGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQwMDA2OTIxMkE2RjlF
MTAwNjREMTIzIC8qIE9TQWxsb2NhdG9yUG9zaXguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gT1NBbGxvY2F0b3JQb3NpeC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMTAxLDggKzIxMDEsOCBAQAogCQk3RUY2RTBCQjBFQjdBMUVDMDA3OUFGQUYg
LyogcnVudGltZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0J
CQkJMEZFMjI4RUExNDM2QUIyMzAwMTk2QzQ4IC8qIEhldXJpc3RpY3MuY3BwICovLAotCQkJCTBG
RTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAvKiBIZXVyaXN0aWNzLmggKi8sCisJCQkJMEZFMjI4RUEx
NDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwICovLAorCQkJCTBGRTIyOEVCMTQzNkFCMjMw
MDE5NkM0OCAvKiBPcHRpb25zLmggKi8sCiAJCQkJMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5IC8q
IFNhbXBsaW5nQ291bnRlci5jcHAgKi8sCiAJCQkJMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8q
IFNhbXBsaW5nQ291bnRlci5oICovLAogCQkJCUJDRjYwNTExMEUyMDNFRjgwMEI5QTY0RCAvKiBB
cmdMaXN0LmNwcCAqLywKQEAgLTI5NDIsNyArMjk0Miw3IEBACiAJCQkJMEY2MzZEQTAxNDJEMjdE
NzAwQjJFNjZBIC8qIFBhY2tlZEludFZlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc1MjFF
MTMxNDI5MTY5QTAwM0M4RDBDIC8qIENhcmRTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDUy
QUFFMTQzMDM1QTAwMDI2REM5RiAvKiBVbmlvbkZpbmQuaCBpbiBIZWFkZXJzICovLAotCQkJCTBG
RTIyOEVEMTQzNkFCMjcwMDE5NkM0OCAvKiBIZXVyaXN0aWNzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRkUyMjhFRDE0MzZBQjI3MDAxOTZDNDggLyogT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZGRjRCQjQxNDM5NTVFOTAwNjU1QkMwIC8qIERGR1N0cnVjdHVyZVNldC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODYwNEY1MDUxNDNDRTFDMjAwQjI5NUY1IC8qIEpTR2xvYmFsVGhpcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY2MjAxNzQxNDNGQ0QzMzAwNjhCNzdDIC8qIERGR1ZhcmlhYmxl
QWNjZXNzRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNTAwLDcgKzM1MDAsNyBAQAogCQkJCTg2
RkE5RTkxMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODY4ODBGMUYxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY4ODBGNEQxNDM1M0IyMTAwQjA4RDQyIC8qIERG
R1NwZWN1bGF0aXZlSklUNjQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEZFMjI4RUUxNDM2QUIy
QzAwMTk2QzQ4IC8qIEhldXJpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZFMjI4RUUx
NDM2QUIyQzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2MjAx
NzkxNDNGQ0Q0ODAwNjhCNzdDIC8qIERGR0Fic3RyYWN0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkMzQzRDQTAxNDU4RjU0NTAwMjVGQjYyIC8qIEpTR2xvYmFsVGhpcy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkMwOTc2RTE0NjhBQjUxMDBDRjI0NDIgLyogREZHQXNzZW1ibHlIZWxw
ZXJzLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1RhcmdldC5wcmkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQppbmRleCAwOTRl
MjljNTQ0MTE5ODc5OTYyODljYjU4ZjEyMTljMjM0Njg1NTllLi40NTQxMDA3ZjZhYzkxOTE0ZDEx
NzU5NGY5MjEzYTc3OWY4MWMyMGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
VGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQpAQCAtMTQ4
LDcgKzE0OCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwIFwKICAgICBydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAgXAogICAgIHJ1bnRpbWUv
R2V0dGVyU2V0dGVyLmNwcCBcCi0gICAgcnVudGltZS9IZXVyaXN0aWNzLmNwcCBcCisgICAgcnVu
dGltZS9PcHRpb25zLmNwcCBcCiAgICAgcnVudGltZS9JZGVudGlmaWVyLmNwcCBcCiAgICAgcnVu
dGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcCBcCiAgICAgcnVudGltZS9JbnRlcm5hbEZ1bmN0
aW9uLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CmluZGV4IDdhYjM5MjlmNjc4NWMxNWNmZGNiZWI5NjQyZmJkMDYyZDAxOWI3MTUuLjMyYTdmNTEy
NzIxOWExOWNkYjJiMDcwNjM2YzU5M2ZjNmRiNWMzZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0yMTk2LDcgKzIxOTYsNyBAQCBib29sIENv
ZGVCbG9jazo6c2hvdWxkT3B0aW1pemVOb3coKQogICAgIGR1bXBWYWx1ZVByb2ZpbGVzKCk7CiAj
ZW5kaWYKIAotICAgIGlmIChtX29wdGltaXphdGlvbkRlbGF5Q291bnRlciA+PSBIZXVyaXN0aWNz
OjptYXhpbXVtT3B0aW1pemF0aW9uRGVsYXkpCisgICAgaWYgKG1fb3B0aW1pemF0aW9uRGVsYXlD
b3VudGVyID49IE9wdGlvbnM6Om1heGltdW1PcHRpbWl6YXRpb25EZWxheSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZOb25Bcmd1bWVudFZhbHVlUHJv
ZmlsZXMgPSAwOwpAQCAtMjIyMiw5ICsyMjIyLDkgQEAgYm9vbCBDb2RlQmxvY2s6OnNob3VsZE9w
dGltaXplTm93KCkKICAgICBwcmludGYoIlByb2ZpbGUgaG90bmVzczogJWxmLCAlbGZcbiIsIChk
b3VibGUpbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzIC8gbnVtYmVyT2ZOb25B
cmd1bWVudFZhbHVlUHJvZmlsZXMsIChkb3VibGUpbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcyAv
IFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIC8gbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkp
OwogI2VuZGlmCiAKLSAgICBpZiAoKCFudW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyB8
fCAoZG91YmxlKW51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyAvIG51bWJlck9m
Tm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzID49IEhldXJpc3RpY3M6OmRlc2lyZWRQcm9maWxlTGl2
ZW5lc3NSYXRlKQotICAgICAgICAmJiAoIW51bWJlck9mVmFsdWVQcm9maWxlcygpIHx8IChkb3Vi
bGUpbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcyAvIFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNr
ZXRzIC8gbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkgPj0gSGV1cmlzdGljczo6ZGVzaXJlZFByb2Zp
bGVGdWxsbmVzc1JhdGUpCi0gICAgICAgICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29wdGlt
aXphdGlvbkRlbGF5Q291bnRlcikgKyAxID49IEhldXJpc3RpY3M6Om1pbmltdW1PcHRpbWl6YXRp
b25EZWxheSkKKyAgICBpZiAoKCFudW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyB8fCAo
ZG91YmxlKW51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyAvIG51bWJlck9mTm9u
QXJndW1lbnRWYWx1ZVByb2ZpbGVzID49IE9wdGlvbnM6OmRlc2lyZWRQcm9maWxlTGl2ZW5lc3NS
YXRlKQorICAgICAgICAmJiAoIW51bWJlck9mVmFsdWVQcm9maWxlcygpIHx8IChkb3VibGUpbnVt
YmVyT2ZTYW1wbGVzSW5Qcm9maWxlcyAvIFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIC8g
bnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkgPj0gT3B0aW9uczo6ZGVzaXJlZFByb2ZpbGVGdWxsbmVz
c1JhdGUpCisgICAgICAgICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29wdGltaXphdGlvbkRl
bGF5Q291bnRlcikgKyAxID49IE9wdGlvbnM6Om1pbmltdW1PcHRpbWl6YXRpb25EZWxheSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgQVNTRVJUKG1fb3B0aW1pemF0aW9uRGVsYXlD
b3VudGVyIDwgc3RkOjpudW1lcmljX2xpbWl0czx1aW50OF90Pjo6bWF4KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGM5OTAxZWZjZDU4YjNhMDhh
ZTk3NTQyNjU4MTIyNGUxNzI3ZDkwYWYuLmQ4ZTg1MDkwMTU1MzIzMjRmNmU5YTEyM2IzOTA0Yzhi
MjlmN2U4ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
QEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJERkdPU1JFbnRyeS5oIgogI2luY2x1ZGUgIkRG
R09TUkV4aXQuaCIKICNpbmNsdWRlICJFdmFsQ29kZUNhY2hlLmgiCi0jaW5jbHVkZSAiSGV1cmlz
dGljcy5oIgorI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgog
I2luY2x1ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRlICJKSVRXcml0ZUJhcnJpZXIuaCIKQEAgLTY3
NiwxMiArNjc2LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBs
aWtlbHlUb1Rha2VTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9m
ZnNldCktPm1fY291bnRlciA+PSBIZXVyaXN0aWNzOjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVz
aG9sZDsKKyAgICAgICAgICAgIHJldHVybiByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNl
dChieXRlY29kZU9mZnNldCktPm1fY291bnRlciA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93
Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBjb3VsZFRh
a2VTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1f
Y291bnRlciA+PSBIZXVyaXN0aWNzOjpjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZDsKKyAgICAg
ICAgICAgIHJldHVybiByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9m
ZnNldCktPm1fY291bnRlciA+PSBPcHRpb25zOjpjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZDsK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgUmFyZUNhc2VQcm9maWxlKiBhZGRTcGVjaWFs
RmFzdENhc2VQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkKQEAgLTY5OSwyMSArNjk5LDIxIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGxpa2VseVRvVGFrZVNwZWNpYWxGYXN0Q2Fz
ZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIHVuc2lnbmVkIHNw
ZWNpYWxGYXN0Q2FzZUNvdW50ID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zm
c2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwotICAgICAgICAgICAgcmV0dXJuIHNwZWNp
YWxGYXN0Q2FzZUNvdW50ID49IEhldXJpc3RpY3M6Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNo
b2xkOworICAgICAgICAgICAgcmV0dXJuIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID49IE9wdGlvbnM6
Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICBib29sIGxpa2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQp
CiAgICAgICAgIHsKICAgICAgICAgICAgIHVuc2lnbmVkIHNsb3dDYXNlQ291bnQgPSByYXJlQ2Fz
ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAg
ICAgICAgICAgIHVuc2lnbmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID0gc3BlY2lhbEZhc3RDYXNl
UHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwotICAg
ICAgICAgICAgcmV0dXJuIChzbG93Q2FzZUNvdW50IC0gc3BlY2lhbEZhc3RDYXNlQ291bnQpID49
IEhldXJpc3RpY3M6Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOworICAgICAgICAgICAg
cmV0dXJuIChzbG93Q2FzZUNvdW50IC0gc3BlY2lhbEZhc3RDYXNlQ291bnQpID49IE9wdGlvbnM6
Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICBib29sIGxpa2VseVRvVGFrZUFueVNsb3dDYXNlKGludCBieXRlY29kZU9mZnNldCkKICAg
ICAgICAgewogICAgICAgICAgICAgdW5zaWduZWQgc2xvd0Nhc2VDb3VudCA9IHJhcmVDYXNlUHJv
ZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAg
ICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9m
aWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7Ci0gICAgICAg
ICAgICByZXR1cm4gKHNsb3dDYXNlQ291bnQgKyBzcGVjaWFsRmFzdENhc2VDb3VudCkgPj0gSGV1
cmlzdGljczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CisgICAgICAgICAgICByZXR1
cm4gKHNsb3dDYXNlQ291bnQgKyBzcGVjaWFsRmFzdENhc2VDb3VudCkgPj0gT3B0aW9uczo6bGlr
ZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAg
IHZvaWQgcmVzZXRSYXJlQ2FzZVByb2ZpbGVzKCk7CkBAIC05MTUsMjUgKzkxNSwyNSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgLy8gdG8gYXZvaWQgdGhyYXNoaW5nLgogICAgICAgICB1bnNp
Z25lZCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpIGNvbnN0CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIEFTU0VSVChtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyIDw9IEhldXJpc3RpY3M6
OnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4KTsKKyAgICAgICAgICAgIEFTU0VSVChtX3Jl
b3B0aW1pemF0aW9uUmV0cnlDb3VudGVyIDw9IE9wdGlvbnM6OnJlb3B0aW1pemF0aW9uUmV0cnlD
b3VudGVyTWF4KTsKICAgICAgICAgICAgIHJldHVybiBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3Vu
dGVyOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB2b2lkIGNvdW50UmVvcHRpbWl6YXRp
b24oKQogICAgICAgICB7CiAgICAgICAgICAgICBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVy
Kys7Ci0gICAgICAgICAgICBpZiAobV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA+IEhldXJp
c3RpY3M6OnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4KQotICAgICAgICAgICAgICAgIG1f
cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSBIZXVyaXN0aWNzOjpyZW9wdGltaXphdGlvblJl
dHJ5Q291bnRlck1heDsKKyAgICAgICAgICAgIGlmIChtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3Vu
dGVyID4gT3B0aW9uczo6cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXgpCisgICAgICAgICAg
ICAgICAgbV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA9IE9wdGlvbnM6OnJlb3B0aW1pemF0
aW9uUmV0cnlDb3VudGVyTWF4OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpbnQzMl90
IGNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAoKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gSGV1cmlzdGljczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVB
ZnRlcldhcm1VcCA8PCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpOworICAgICAgICAgICAg
cmV0dXJuIE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJt
VXAgPDwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKTsKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgaW50MzJfdCBjb3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCgp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBIZXVyaXN0aWNzOjpleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCA8PCByZW9wdGltaXphdGlvblJldHJ5
Q291bnRlcigpOworICAgICAgICAgICAgcmV0dXJuIE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwIDw8IHJlb3B0aW1pemF0aW9uUmV0cnlDb3Vu
dGVyKCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGludDMyX3QqIGFkZHJlc3NPZkV4
ZWN1dGVDb3VudGVyKCkKQEAgLTk1Miw3ICs5NTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgLy8gZXhwZW5zaXZlIHRoYW4gZXhlY3V0aW5nIGJhc2VsaW5lIGNvZGUuCiAgICAgICAgIHZv
aWQgb3B0aW1pemVOZXh0SW52b2NhdGlvbigpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1fZXhl
Y3V0ZUNvdW50ZXIgPSBIZXVyaXN0aWNzOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6
ZU5leHRJbnZvY2F0aW9uOworICAgICAgICAgICAgbV9leGVjdXRlQ291bnRlciA9IE9wdGlvbnM6
OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplTmV4dEludm9jYXRpb247CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIC8vIENhbGwgdGhpcyB0byBwcmV2ZW50IG9wdGltaXphdGlv
biBmcm9tIGhhcHBlbmluZyBhZ2Fpbi4gTm90ZSB0aGF0CkBAIC05NjIsNyArOTYyLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIHRoZSBmdXR1cmUgYXMgd2VsbC4KICAgICAgICAgdm9p
ZCBkb250T3B0aW1pemVBbnl0aW1lU29vbigpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1fZXhl
Y3V0ZUNvdW50ZXIgPSBIZXVyaXN0aWNzOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0
aW1pemVBbnl0aW1lU29vbjsKKyAgICAgICAgICAgIG1fZXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25z
OjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbjsKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgLy8gQ2FsbCB0aGlzIHRvIHJlaW5pdGlhbGl6ZSB0aGUg
Y291bnRlciB0byBpdHMgc3RhcnRpbmcgc3RhdGUsCkBAIC0xMDAzLDcgKzEwMDMsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgLy8gaW4gdGhlIGJhc2VsaW5lIGNvZGUuCiAgICAgICAgIHZv
aWQgb3B0aW1pemVTb29uKCkKICAgICAgICAgewotICAgICAgICAgICAgbV9leGVjdXRlQ291bnRl
ciA9IEhldXJpc3RpY3M6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbiA8PCBy
ZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpOworICAgICAgICAgICAgbV9leGVjdXRlQ291bnRl
ciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbiA8PCByZW9w
dGltaXphdGlvblJldHJ5Q291bnRlcigpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAv
LyBUaGUgc3BlY3VsYXRpdmUgSklUIHRyYWNrcyBpdHMgc3VjY2VzcyByYXRlLCBzbyB0aGF0IHdl
IGNhbgpAQCAtMTAzNywxNyArMTAzNywxNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJM
RShKSVQpCiAgICAgICAgIC8vIFRoZSBudW1iZXIgb2YgZmFpbHVyZXMgdGhhdCB0cmlnZ2VycyB0
aGUgdXNlIG9mIHRoZSByYXRpby4KLSAgICAgICAgdW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJl
c2hvbGQoKSB7IHJldHVybiBIZXVyaXN0aWNzOjpsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2Ug
PDwgYmFzZWxpbmVWZXJzaW9uKCktPnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCk7IH0KLSAg
ICAgICAgdW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRGb3JMb29wKCkgeyByZXR1cm4g
SGV1cmlzdGljczo6bGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlRm9yTG9vcCA8PCBiYXNlbGlu
ZVZlcnNpb24oKS0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKTsgfQorICAgICAgICB1bnNp
Z25lZCBsYXJnZUZhaWxDb3VudFRocmVzaG9sZCgpIHsgcmV0dXJuIE9wdGlvbnM6OmxhcmdlRmFp
bENvdW50VGhyZXNob2xkQmFzZSA8PCBiYXNlbGluZVZlcnNpb24oKS0+cmVvcHRpbWl6YXRpb25S
ZXRyeUNvdW50ZXIoKTsgfQorICAgICAgICB1bnNpZ25lZCBsYXJnZUZhaWxDb3VudFRocmVzaG9s
ZEZvckxvb3AoKSB7IHJldHVybiBPcHRpb25zOjpsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2VG
b3JMb29wIDw8IGJhc2VsaW5lVmVyc2lvbigpLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigp
OyB9CiAKICAgICAgICAgYm9vbCBzaG91bGRSZW9wdGltaXplTm93KCkKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIEhldXJpc3RpY3M6OmRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWls
UmF0aW8gKiBzcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkgPj0gc3BlY3VsYXRpdmVTdWNjZXNzQ291
bnRlcigpICYmIHNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSA+PSBsYXJnZUZhaWxDb3VudFRocmVz
aG9sZCgpOworICAgICAgICAgICAgcmV0dXJuIE9wdGlvbnM6OmRlc2lyZWRTcGVjdWxhdGl2ZVN1
Y2Nlc3NGYWlsUmF0aW8gKiBzcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkgPj0gc3BlY3VsYXRpdmVT
dWNjZXNzQ291bnRlcigpICYmIHNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSA+PSBsYXJnZUZhaWxD
b3VudFRocmVzaG9sZCgpOwogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBzaG91bGRSZW9wdGlt
aXplRnJvbUxvb3BOb3coKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gSGV1cmlzdGlj
czo6ZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbyAqIHNwZWN1bGF0aXZlRmFpbENv
dW50ZXIoKSA+PSBzcGVjdWxhdGl2ZVN1Y2Nlc3NDb3VudGVyKCkgJiYgc3BlY3VsYXRpdmVGYWls
Q291bnRlcigpID49IGxhcmdlRmFpbENvdW50VGhyZXNob2xkRm9yTG9vcCgpOworICAgICAgICAg
ICAgcmV0dXJuIE9wdGlvbnM6OmRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW8gKiBz
cGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkgPj0gc3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigpICYm
IHNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSA+PSBsYXJnZUZhaWxDb3VudFRocmVzaG9sZEZvckxv
b3AoKTsKICAgICAgICAgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggZWExNGM1ZTJjNGYwMzIzZjA1MDIyMjZiMWVi
ODkxZDc3ZjNkNjVlYi4uM2EzODRmYzhiZTA0M2U2YTAxMTQzNzUyNjIyNzgyNzJlNzA5ZjM1NSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
QEAgLTk1Niw3ICs5NTYsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhi
b29sIHVzZXNSZXN1bHQsIGludCBjYWxsVGFyZ2V0LCBOb2RlSW5kZXggYwogICAgIHVuc2lnbmVk
IGRlcHRoID0gMDsKICAgICBmb3IgKElubGluZVN0YWNrRW50cnkqIGVudHJ5ID0gbV9pbmxpbmVT
dGFja1RvcDsgZW50cnk7IGVudHJ5ID0gZW50cnktPm1fY2FsbGVyKSB7CiAgICAgICAgICsrZGVw
dGg7Ci0gICAgICAgIGlmIChkZXB0aCA+PSBIZXVyaXN0aWNzOjptYXhpbXVtSW5saW5pbmdEZXB0
aCkKKyAgICAgICAgaWYgKGRlcHRoID49IE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ0RlcHRoKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBEZXB0aCBleGNlZWRlZC4KICAgICAgICAgCiAg
ICAgICAgIGlmIChlbnRyeS0+ZXhlY3V0YWJsZSgpID09IGV4ZWN1dGFibGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAppbmRleCBmZjNkYzMwZmNhZDk0MGFj
OTc4ZTA4M2YwYjI3ZmZjYWEwYmQ3M2FiLi4wMjY3MTI0MjU4ZjUyY2E2NmQ0OTNhMDgxMTRjOGQ2
ZmJhYjFiMmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVz
LmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJERkdJbnRyaW5zaWMuaCIKICNpbmNsdWRl
ICJERkdOb2RlLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgotI2luY2x1ZGUgIkhldXJpc3Rp
Y3MuaCIKKyNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNp
bmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIApAQCAtNDAsMjggKzQwLDI4IEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKIC8vIGNoZWNrIG9wY29kZXMuCiBpbmxpbmUgYm9vbCBtaWdo
dENvbXBpbGVFdmFsKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIHJldHVybiBjb2RlQmxv
Y2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBIZXVyaXN0aWNzOjptYXhpbXVtT3B0aW1pemF0aW9u
Q2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKKyAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVj
dGlvbkNvdW50KCkgPD0gT3B0aW9uczo6bWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3Ry
dWN0aW9uQ291bnQ7CiB9CiBpbmxpbmUgYm9vbCBtaWdodENvbXBpbGVQcm9ncmFtKENvZGVCbG9j
ayogY29kZUJsb2NrKQogewotICAgIHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQo
KSA8PSBIZXVyaXN0aWNzOjptYXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25D
b3VudDsKKyAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9u
czo6bWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CiB9CiBpbmxp
bmUgYm9vbCBtaWdodENvbXBpbGVGdW5jdGlvbkZvckNhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2sp
CiB7Ci0gICAgcmV0dXJuIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IEhldXJpc3Rp
Y3M6Om1heGltdW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OworICAgIHJl
dHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBPcHRpb25zOjptYXhpbXVtT3B0
aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKIH0KIGlubGluZSBib29sIG1pZ2h0
Q29tcGlsZUZ1bmN0aW9uRm9yQ29uc3RydWN0KENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAg
IHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBIZXVyaXN0aWNzOjptYXhp
bXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKKyAgICByZXR1cm4gY29k
ZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9uczo6bWF4aW11bU9wdGltaXphdGlv
bkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CiB9CiAKIGlubGluZSBib29sIG1pZ2h0SW5saW5l
RnVuY3Rpb25Gb3JDYWxsKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIHJldHVybiBjb2Rl
QmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBIZXVyaXN0aWNzOjptYXhpbXVtRnVuY3Rpb25G
b3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKKyAgICByZXR1cm4gY29kZUJs
b2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9yQ2Fs
bElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CiB9CiBpbmxpbmUgYm9vbCBtaWdodElu
bGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0KENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIHJl
dHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBIZXVyaXN0aWNzOjptYXhpbXVt
RnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OworICAg
IHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBPcHRpb25zOjptYXhpbXVt
RnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OwogfQog
CiAvLyBPcGNvZGUgY2hlY2tpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCmluZGV4IDZmZmQ4MDNhYTU3NTVhNzZjMDYx
ZGY4NjkxZGZmMzA3NThhYmQyNWQuLmVlNTgwYWNlZDBkMjQwZTIwYTBhZTY0MjE5YzA2ZTRmNzY1
M2RlMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENv
bXBpbGVyMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dENvbXBpbGVyMzJfNjQuY3BwCkBAIC00NjMsMTIgKzQ2MywxMiBAQCB2b2lkIE9TUkV4aXRDb21w
aWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgT1NSRXhpdCYgZXhpdCwgU3BlY3VsYXRpb25SZWNvdmVy
eSogcmVjbwogICAgIG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1f
aml0LmJhc2VsaW5lQ29kZUJsb2NrKCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgCiAgICAgQXNz
ZW1ibHlIZWxwZXJzOjpKdW1wIGZld0ZhaWxzID0gbV9qaXQuYnJhbmNoMzIoQXNzZW1ibHlIZWxw
ZXJzOjpCZWxvd09yRXF1YWwsIEdQUkluZm86OnJlZ1QyLCBBc3NlbWJseUhlbHBlcnM6OkltbTMy
KG1faml0LmNvZGVCbG9jaygpLT5sYXJnZUZhaWxDb3VudFRocmVzaG9sZCgpKSk7Ci0gICAgbV9q
aXQubXVsMzIoQXNzZW1ibHlIZWxwZXJzOjpJbW0zMihIZXVyaXN0aWNzOjpkZXNpcmVkU3BlY3Vs
YXRpdmVTdWNjZXNzRmFpbFJhdGlvKSwgR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OnJlZ1QyKTsK
KyAgICBtX2ppdC5tdWwzMihBc3NlbWJseUhlbHBlcnM6OkltbTMyKE9wdGlvbnM6OmRlc2lyZWRT
cGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW8pLCBHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6cmVn
VDIpOwogICAgIAogICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCBsb3dGYWlsUmF0ZSA9IG1faml0
LmJyYW5jaDMyKEFzc2VtYmx5SGVscGVyczo6QmVsb3dPckVxdWFsLCBHUFJJbmZvOjpyZWdUMiwg
R1BSSW5mbzo6cmVnVDEpOwogICAgIAogICAgIC8vIFJlb3B0aW1pemUgYXMgc29vbiBhcyBwb3Nz
aWJsZS4KLSAgICBtX2ppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6SW1tMzIoSGV1cmlzdGlj
czo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVOZXh0SW52b2NhdGlvbiksIEFzc2Vt
Ymx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkV4
ZWN1dGVDb3VudGVyKCkpKTsKKyAgICBtX2ppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6SW1t
MzIoT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVOZXh0SW52b2NhdGlv
biksIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpv
ZmZzZXRPZkV4ZWN1dGVDb3VudGVyKCkpKTsKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgZG9u
ZUFkanVzdGluZyA9IG1faml0Lmp1bXAoKTsKICAgICAKICAgICBmZXdGYWlscy5saW5rKCZtX2pp
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21w
aWxlcjY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVy
NjQuY3BwCmluZGV4IDU2ZmIxMzQ0ZTI5OGZjYTY3Y2UxNjNmMDViMWFlZTg5MDkyZDdkYjcuLjQ1
MmVmNTQxYTQ0MGUxNzhhY2JkOGYzNTBmMmUwNzIwYmM5OGFlZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCkBAIC00NzMsMTIg
KzQ3MywxMiBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgT1NSRXhp
dCYgZXhpdCwgU3BlY3VsYXRpb25SZWNvdmVyeSogcmVjbwogICAgIG1faml0Lm1vdmUoQXNzZW1i
bHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1faml0LmJhc2VsaW5lQ29kZUJsb2NrKCkpLCBHUFJJ
bmZvOjpyZWdUMCk7CiAgICAgCiAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIGZld0ZhaWxzID0g
bV9qaXQuYnJhbmNoMzIoQXNzZW1ibHlIZWxwZXJzOjpCZWxvd09yRXF1YWwsIEdQUkluZm86OnJl
Z1QyLCBBc3NlbWJseUhlbHBlcnM6OkltbTMyKG1faml0LmNvZGVCbG9jaygpLT5sYXJnZUZhaWxD
b3VudFRocmVzaG9sZCgpKSk7Ci0gICAgbV9qaXQubXVsMzIoQXNzZW1ibHlIZWxwZXJzOjpJbW0z
MihIZXVyaXN0aWNzOjpkZXNpcmVkU3BlY3VsYXRpdmVTdWNjZXNzRmFpbFJhdGlvKSwgR1BSSW5m
bzo6cmVnVDIsIEdQUkluZm86OnJlZ1QyKTsKKyAgICBtX2ppdC5tdWwzMihBc3NlbWJseUhlbHBl
cnM6OkltbTMyKE9wdGlvbnM6OmRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW8pLCBH
UFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6cmVnVDIpOwogICAgIAogICAgIEFzc2VtYmx5SGVscGVy
czo6SnVtcCBsb3dGYWlsUmF0ZSA9IG1faml0LmJyYW5jaDMyKEFzc2VtYmx5SGVscGVyczo6QmVs
b3dPckVxdWFsLCBHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6cmVnVDEpOwogICAgIAogICAgIC8v
IFJlb3B0aW1pemUgYXMgc29vbiBhcyBwb3NzaWJsZS4KLSAgICBtX2ppdC5zdG9yZTMyKEFzc2Vt
Ymx5SGVscGVyczo6SW1tMzIoSGV1cmlzdGljczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0
aW1pemVOZXh0SW52b2NhdGlvbiksIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpy
ZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkV4ZWN1dGVDb3VudGVyKCkpKTsKKyAgICBtX2ppdC5z
dG9yZTMyKEFzc2VtYmx5SGVscGVyczo6SW1tMzIoT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZh
bHVlRm9yT3B0aW1pemVOZXh0SW52b2NhdGlvbiksIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhH
UFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkV4ZWN1dGVDb3VudGVyKCkpKTsKICAg
ICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgZG9uZUFkanVzdGluZyA9IG1faml0Lmp1bXAoKTsKICAg
ICAKICAgICBmZXdGYWlscy5saW5rKCZtX2ppdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya1N0YWNrLmNwcAppbmRleCAzZjRmZGE3NmNjNGUzNzFmNzRkNmRjYzczNWM5YjkzODQ2M2Vm
OWQ1Li5kZDBlNmZkNTdhYWRkMzAyZWQ1NzdiYTQ5MjI2YjA1ZTZlODE3YzdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lu
Y2x1ZGUgIkNvbnNlcnZhdGl2ZVJvb3RzLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1ZGUg
IkhldXJpc3RpY3MuaCIKKyNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5o
IgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCkBAIC02MCw3ICs2
MCw3IEBAIE1hcmtTdGFja1NlZ21lbnQqIE1hcmtTdGFja1NlZ21lbnRBbGxvY2F0b3I6OmFsbG9j
YXRlKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxNYXJrU3Rh
Y2tTZWdtZW50Kj4oT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoSGV1cmlzdGljczo6Z2NN
YXJrU3RhY2tTZWdtZW50U2l6ZSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxNYXJrU3RhY2tT
ZWdtZW50Kj4oT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoT3B0aW9uczo6Z2NNYXJrU3Rh
Y2tTZWdtZW50U2l6ZSkpOwogfQogCiB2b2lkIE1hcmtTdGFja1NlZ21lbnRBbGxvY2F0b3I6OnJl
bGVhc2UoTWFya1N0YWNrU2VnbWVudCogc2VnbWVudCkKQEAgLTgxLDEzICs4MSwxMyBAQCB2b2lk
IE1hcmtTdGFja1NlZ21lbnRBbGxvY2F0b3I6OnNocmlua1Jlc2VydmUoKQogICAgIHdoaWxlIChz
ZWdtZW50cykgewogICAgICAgICBNYXJrU3RhY2tTZWdtZW50KiB0b0ZyZWUgPSBzZWdtZW50czsK
ICAgICAgICAgc2VnbWVudHMgPSBzZWdtZW50cy0+bV9wcmV2aW91czsKLSAgICAgICAgT1NBbGxv
Y2F0b3I6OmRlY29tbWl0QW5kUmVsZWFzZSh0b0ZyZWUsIEhldXJpc3RpY3M6OmdjTWFya1N0YWNr
U2VnbWVudFNpemUpOworICAgICAgICBPU0FsbG9jYXRvcjo6ZGVjb21taXRBbmRSZWxlYXNlKHRv
RnJlZSwgT3B0aW9uczo6Z2NNYXJrU3RhY2tTZWdtZW50U2l6ZSk7CiAgICAgfQogfQogCiBNYXJr
U3RhY2tBcnJheTo6TWFya1N0YWNrQXJyYXkoTWFya1N0YWNrU2VnbWVudEFsbG9jYXRvciYgYWxs
b2NhdG9yKQogICAgIDogbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQotICAgICwgbV9zZWdtZW50Q2Fw
YWNpdHkoTWFya1N0YWNrU2VnbWVudDo6Y2FwYWNpdHlGcm9tU2l6ZShIZXVyaXN0aWNzOjpnY01h
cmtTdGFja1NlZ21lbnRTaXplKSkKKyAgICAsIG1fc2VnbWVudENhcGFjaXR5KE1hcmtTdGFja1Nl
Z21lbnQ6OmNhcGFjaXR5RnJvbVNpemUoT3B0aW9uczo6Z2NNYXJrU3RhY2tTZWdtZW50U2l6ZSkp
CiAgICAgLCBtX3RvcCgwKQogICAgICwgbV9udW1iZXJPZlByZXZpb3VzU2VnbWVudHMoMCkKIHsK
QEAgLTE0NSwxMCArMTQ1LDEwIEBAIGJvb2wgTWFya1N0YWNrQXJyYXk6OmRvbmF0ZVNvbWVDZWxs
c1RvKE1hcmtTdGFja0FycmF5JiBvdGhlcikKICAgICBvdGhlci52YWxpZGF0ZVByZXZpb3VzKCk7
CiAgICAgICAgIAogICAgIC8vIEZhc3QgY2hlY2s6IHNlZSBpZiB0aGUgb3RoZXIgbWFyayBzdGFj
ayBhbHJlYWR5IGhhcyBlbm91Z2ggc2VnbWVudHMuCi0gICAgaWYgKG90aGVyLm1fbnVtYmVyT2ZQ
cmV2aW91c1NlZ21lbnRzICsgMSA+PSBIZXVyaXN0aWNzOjptYXhpbXVtTnVtYmVyT2ZTaGFyZWRT
ZWdtZW50cykKKyAgICBpZiAob3RoZXIubV9udW1iZXJPZlByZXZpb3VzU2VnbWVudHMgKyAxID49
IE9wdGlvbnM6Om1heGltdW1OdW1iZXJPZlNoYXJlZFNlZ21lbnRzKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIAotICAgIHNpemVfdCBudW1iZXJPZkNlbGxzVG9LZWVwID0gSGV1cmlz
dGljczo6bWluaW11bU51bWJlck9mQ2VsbHNUb0tlZXA7CisgICAgc2l6ZV90IG51bWJlck9mQ2Vs
bHNUb0tlZXAgPSBPcHRpb25zOjptaW5pbXVtTnVtYmVyT2ZDZWxsc1RvS2VlcDsKICAgICBBU1NF
UlQobV90b3AgPiBudW1iZXJPZkNlbGxzVG9LZWVwIHx8IG1fdG9wU2VnbWVudC0+bV9wcmV2aW91
cyk7CiAgICAgICAgIAogICAgIC8vIExvb2tzIGxpa2Ugd2Ugc2hvdWxkIGRvbmF0ZSEgR2l2ZSB0
aGUgb3RoZXIgbWFyayBzdGFjayBhbGwgb2Ygb3VyCkBAIC0yMDksOCArMjA5LDggQEAgdm9pZCBN
YXJrU3RhY2tBcnJheTo6c3RlYWxTb21lQ2VsbHNGcm9tKE1hcmtTdGFja0FycmF5JiBvdGhlcikK
ICAgICB9CiAgICAgICAgIAogICAgIC8vIE90aGVyd2lzZSBkcmFpbiAxL050aCBvZiB0aGUgc2hh
cmVkIGFycmF5IHdoZXJlIE4gaXMgdGhlIG51bWJlciBvZgotICAgIC8vIHdvcmtlcnMsIG9yIEhl
dXJpc3RpY3M6Om1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVwLCB3aGljaGV2ZXIgaXMgYmlnZ2Vy
LgotICAgIHNpemVfdCBudW1iZXJPZkNlbGxzVG9TdGVhbCA9IHN0ZDo6bWF4KChzaXplX3QpSGV1
cmlzdGljczo6bWluaW11bU51bWJlck9mQ2VsbHNUb0tlZXAsIG90aGVyLnNpemUoKSAvIEhldXJp
c3RpY3M6Om51bWJlck9mR0NNYXJrZXJzKTsKKyAgICAvLyB3b3JrZXJzLCBvciBPcHRpb25zOjpt
aW5pbXVtTnVtYmVyT2ZDZWxsc1RvS2VlcCwgd2hpY2hldmVyIGlzIGJpZ2dlci4KKyAgICBzaXpl
X3QgbnVtYmVyT2ZDZWxsc1RvU3RlYWwgPSBzdGQ6Om1heCgoc2l6ZV90KU9wdGlvbnM6Om1pbmlt
dW1OdW1iZXJPZkNlbGxzVG9LZWVwLCBvdGhlci5zaXplKCkgLyBPcHRpb25zOjpudW1iZXJPZkdD
TWFya2Vycyk7CiAgICAgd2hpbGUgKG51bWJlck9mQ2VsbHNUb1N0ZWFsLS0gPiAwICYmIG90aGVy
LmNhblJlbW92ZUxhc3QoKSkKICAgICAgICAgYXBwZW5kKG90aGVyLnJlbW92ZUxhc3QoKSk7CiB9
CkBAIC0yMzgsNyArMjM4LDcgQEAgTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YTo6TWFya1N0YWNr
VGhyZWFkU2hhcmVkRGF0YShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiAgICAgLCBtX3BhcmFs
bGVsTWFya2Vyc1Nob3VsZEV4aXQoZmFsc2UpCiB7CiAjaWYgRU5BQkxFKFBBUkFMTEVMX0dDKQot
ICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBIZXVyaXN0aWNzOjpudW1iZXJPZkdDTWFya2Vy
czsgKytpKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IE9wdGlvbnM6Om51bWJlck9m
R0NNYXJrZXJzOyArK2kpIHsKICAgICAgICAgbV9tYXJraW5nVGhyZWFkcy5hcHBlbmQoY3JlYXRl
VGhyZWFkKG1hcmtpbmdUaHJlYWRTdGFydEZ1bmMsIHRoaXMsICJKYXZhU2NyaXB0Q29yZTo6TWFy
a2luZyIpKTsKICAgICAgICAgQVNTRVJUKG1fbWFya2luZ1RocmVhZHMubGFzdCgpKTsKICAgICB9
CkBAIC0zMjksNyArMzI5LDcgQEAgdm9pZCBTbG90VmlzaXRvcjo6ZG9uYXRlU2xvdygpCiAgICAg
aWYgKG1fc3RhY2suZG9uYXRlU29tZUNlbGxzVG8obV9zaGFyZWQubV9zaGFyZWRNYXJrU3RhY2sp
KSB7CiAgICAgICAgIC8vIE9ubHkgd2FrZSB1cCB0aHJlYWRzIGlmIHRoZSBzaGFyZWQgc3RhY2sg
aXMgYmlnIGVub3VnaDsgb3RoZXJ3aXNlIGFzc3VtZSB0aGF0CiAgICAgICAgIC8vIGl0J3MgbW9y
ZSBwcm9maXRhYmxlIGZvciB1cyB0byBqdXN0IHNjYW4gdGhpcyBvdXJzZWx2ZXMgbGF0ZXIuCi0g
ICAgICAgIGlmIChtX3NoYXJlZC5tX3NoYXJlZE1hcmtTdGFjay5zaXplKCkgPj0gSGV1cmlzdGlj
czo6c2hhcmVkU3RhY2tXYWtldXBUaHJlc2hvbGQpCisgICAgICAgIGlmIChtX3NoYXJlZC5tX3No
YXJlZE1hcmtTdGFjay5zaXplKCkgPj0gT3B0aW9uczo6c2hhcmVkU3RhY2tXYWtldXBUaHJlc2hv
bGQpCiAgICAgICAgICAgICBtX3NoYXJlZC5tX21hcmtpbmdDb25kaXRpb24uYnJvYWRjYXN0KCk7
CiAgICAgfQogfQpAQCAtMzQzLDEwICszNDMsMTAgQEAgdm9pZCBTbG90VmlzaXRvcjo6ZHJhaW4o
KQogICAgIHZvaWQqIGpzU3RyaW5nVlB0ciA9IG1fanNTdHJpbmdWUHRyOwogCiAjaWYgRU5BQkxF
KFBBUkFMTEVMX0dDKQotICAgIGlmIChIZXVyaXN0aWNzOjpudW1iZXJPZkdDTWFya2VycyA+IDEp
IHsKKyAgICBpZiAoT3B0aW9uczo6bnVtYmVyT2ZHQ01hcmtlcnMgPiAxKSB7CiAgICAgICAgIHdo
aWxlICghbV9zdGFjay5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIG1fc3RhY2sucmVmaWxsKCk7
Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGNvdW50ZG93biA9IEhldXJpc3RpY3M6Om1pbmlt
dW1OdW1iZXJPZlNjYW5zQmV0d2VlblJlYmFsYW5jZTsgbV9zdGFjay5jYW5SZW1vdmVMYXN0KCkg
JiYgY291bnRkb3duLS07KQorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBjb3VudGRvd24gPSBP
cHRpb25zOjptaW5pbXVtTnVtYmVyT2ZTY2Fuc0JldHdlZW5SZWJhbGFuY2U7IG1fc3RhY2suY2Fu
UmVtb3ZlTGFzdCgpICYmIGNvdW50ZG93bi0tOykKICAgICAgICAgICAgICAgICB2aXNpdENoaWxk
cmVuKCp0aGlzLCBtX3N0YWNrLnJlbW92ZUxhc3QoKSwganNGaW5hbE9iamVjdFZQdHIsIGpzQXJy
YXlWUHRyLCBqc1N0cmluZ1ZQdHIpOwogICAgICAgICAgICAgZG9uYXRlS25vd25QYXJhbGxlbCgp
OwogICAgICAgICB9CkBAIC0zNjcsMTQgKzM2NywxNCBAQCB2b2lkIFNsb3RWaXNpdG9yOjpkcmFp
bkZyb21TaGFyZWQoU2hhcmVkRHJhaW5Nb2RlIHNoYXJlZERyYWluTW9kZSkKIHsKICAgICBBU1NF
UlQobV9pc0luUGFyYWxsZWxNb2RlKTsKICAgICAKLSAgICBBU1NFUlQoSGV1cmlzdGljczo6bnVt
YmVyT2ZHQ01hcmtlcnMpOworICAgIEFTU0VSVChPcHRpb25zOjpudW1iZXJPZkdDTWFya2Vycyk7
CiAgICAgCiAgICAgYm9vbCBzaG91bGRCZVBhcmFsbGVsOwogCiAjaWYgRU5BQkxFKFBBUkFMTEVM
X0dDKQotICAgIHNob3VsZEJlUGFyYWxsZWwgPSBIZXVyaXN0aWNzOjpudW1iZXJPZkdDTWFya2Vy
cyA+IDE7CisgICAgc2hvdWxkQmVQYXJhbGxlbCA9IE9wdGlvbnM6Om51bWJlck9mR0NNYXJrZXJz
ID4gMTsKICNlbHNlCi0gICAgQVNTRVJUKEhldXJpc3RpY3M6Om51bWJlck9mR0NNYXJrZXJzID09
IDEpOworICAgIEFTU0VSVChPcHRpb25zOjpudW1iZXJPZkdDTWFya2VycyA9PSAxKTsKICAgICBz
aG91bGRCZVBhcmFsbGVsID0gZmFsc2U7CiAjZW5kaWYKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya1N0YWNrLmgKaW5kZXggYzUwODAxOTQ4ODcwMTljOWE4Y2Q0OGIzNzM3NzZkOGE4
Zjk3OGRhNy4uOGNiZGM2MjhlM2RhMTM0YTU0ZGQ1Y2ExNTM3YjZhMTQwYzE2MzAzZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgKQEAgLTI3LDcgKzI3LDcgQEAKICNkZWZp
bmUgTWFya1N0YWNrX2gKIAogI2luY2x1ZGUgIkhhbmRsZVR5cGVzLmgiCi0jaW5jbHVkZSAiSGV1
cmlzdGljcy5oIgorI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAj
aW5jbHVkZSAiUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJVbmNvbmRpdGlvbmFsRmluYWxpemVyLmgi
CkBAIC0yNjEsNyArMjYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICB2
b2lkIG1lcmdlT3BhcXVlUm9vdHNJZlByb2ZpdGFibGUoKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fb3BhcXVlUm9vdHMuc2l6ZSgpKSA8IEhldXJp
c3RpY3M6Om9wYXF1ZVJvb3RNZXJnZVRocmVzaG9sZCkKKyAgICAgICAgICAgIGlmIChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obV9vcGFxdWVSb290cy5zaXplKCkpIDwgT3B0aW9uczo6b3BhcXVlUm9v
dE1lcmdlVGhyZXNob2xkKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIG1l
cmdlT3BhcXVlUm9vdHMoKTsKICAgICAgICAgfQpAQCAtMzA5LDcgKzMwOSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIGlubGluZSB2b2lkIE1hcmtTdGFjazo6YWRkT3BhcXVlUm9vdCh2b2lkKiBy
b290KQogICAgIHsKICNpZiBFTkFCTEUoUEFSQUxMRUxfR0MpCi0gICAgICAgIGlmIChIZXVyaXN0
aWNzOjpudW1iZXJPZkdDTWFya2VycyA9PSAxKSB7CisgICAgICAgIGlmIChPcHRpb25zOjpudW1i
ZXJPZkdDTWFya2VycyA9PSAxKSB7CiAgICAgICAgICAgICAvLyBQdXQgZGlyZWN0bHkgaW50byB0
aGUgc2hhcmVkIEhhc2hTZXQuCiAgICAgICAgICAgICBtX3NoYXJlZC5tX29wYXF1ZVJvb3RzLmFk
ZChyb290KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM3NSw3ICszNzUsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGlubGluZSBib29sIE1hcmtTdGFja0FycmF5OjpjYW5Eb25hdGVTb21l
Q2VsbHMoKQogICAgIHsKLSAgICAgICAgc2l6ZV90IG51bWJlck9mQ2VsbHNUb0tlZXAgPSBIZXVy
aXN0aWNzOjptaW5pbXVtTnVtYmVyT2ZDZWxsc1RvS2VlcDsKKyAgICAgICAgc2l6ZV90IG51bWJl
ck9mQ2VsbHNUb0tlZXAgPSBPcHRpb25zOjptaW5pbXVtTnVtYmVyT2ZDZWxsc1RvS2VlcDsKICAg
ICAgICAgLy8gQW5vdGhlciBjaGVjazogc2VlIGlmIHdlIGhhdmUgZW5vdWdoIGNlbGxzIHRvIHdh
cnJhbnQgZG9uYXRpb24uCiAgICAgICAgIGlmIChtX3RvcCA8PSBudW1iZXJPZkNlbGxzVG9LZWVw
KSB7CiAgICAgICAgICAgICAvLyBUaGlzIGluZGljYXRlcyB0aGF0IHdlIG1pZ2h0IG5vdCB3YW50
IHRvIGRvbmF0ZSBhbnl0aGluZzsgY2hlY2sgaWYgd2UgaGF2ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1Nsb3RWaXNpdG9yLmgKaW5kZXggYTQ2MTc4MTRhZTdlMmY2OGFiMzI0ODllZTllY2Vh
NWFlYjhjNjYxMi4uNjQ3YjJjYmRjMTVhN2I0NDViNjk5YTQ5NjA4NTE2YWRjMTJhZjQ0MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCkBAIC00MCw3ICs0MCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRvbmF0ZSgpCiAgICAgewogICAgICAgICBBU1NFUlQobV9pc0lu
UGFyYWxsZWxNb2RlKTsKLSAgICAgICAgaWYgKEhldXJpc3RpY3M6Om51bWJlck9mR0NNYXJrZXJz
ID09IDEpCisgICAgICAgIGlmIChPcHRpb25zOjpudW1iZXJPZkdDTWFya2VycyA9PSAxKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICAgICAgZG9uYXRlS25vd25QYXJhbGxlbCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDgwMWQ4ZGY3MmQ2N2NjODhmOTI0NDk0
ZTBjYWJkZDM0MmJhMjU5MmIuLjFlMWExNTI0NzA4MDg2NjI4Mjg1Y2RmZWM4OTFmZjVhOTg4M2Zk
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBK
SVQ6OmVtaXRPcHRpbWl6YXRpb25DaGVjayhPcHRpbWl6YXRpb25DaGVja0tpbmQga2luZCkKICAg
ICBpZiAoIXNob3VsZEVtaXRQcm9maWxpbmcoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAg
IEp1bXAgc2tpcE9wdGltaXplID0gYnJhbmNoQWRkMzIoU2lnbmVkLCBUcnVzdGVkSW1tMzIoa2lu
ZCA9PSBMb29wT3B0aW1pemF0aW9uQ2hlY2sgPyBIZXVyaXN0aWNzOjpleGVjdXRpb25Db3VudGVy
SW5jcmVtZW50Rm9yTG9vcCA6IEhldXJpc3RpY3M6OmV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRG
b3JSZXR1cm4pLCBBYnNvbHV0ZUFkZHJlc3MobV9jb2RlQmxvY2stPmFkZHJlc3NPZkV4ZWN1dGVD
b3VudGVyKCkpKTsKKyAgICBKdW1wIHNraXBPcHRpbWl6ZSA9IGJyYW5jaEFkZDMyKFNpZ25lZCwg
VHJ1c3RlZEltbTMyKGtpbmQgPT0gTG9vcE9wdGltaXphdGlvbkNoZWNrID8gT3B0aW9uczo6ZXhl
Y3V0aW9uQ291bnRlckluY3JlbWVudEZvckxvb3AgOiBPcHRpb25zOjpleGVjdXRpb25Db3VudGVy
SW5jcmVtZW50Rm9yUmV0dXJuKSwgQWJzb2x1dGVBZGRyZXNzKG1fY29kZUJsb2NrLT5hZGRyZXNz
T2ZFeGVjdXRlQ291bnRlcigpKSk7CiAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywga2lu
ZCA9PSBMb29wT3B0aW1pemF0aW9uQ2hlY2sgPyBjdGlfb3B0aW1pemVfZnJvbV9sb29wIDogY3Rp
X29wdGltaXplX2Zyb21fcmV0KTsKICAgICBpZiAoa2luZCA9PSBMb29wT3B0aW1pemF0aW9uQ2hl
Y2spCiAgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KEltbTMyKG1fYnl0ZWNvZGVPZmZzZXQp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggZmMwYzU2MDkwMmIzNmU4ZjhiOWZmNTkwOTA0MGYz
YmMxOTc3MzJjMS4uMzZkM2Y3YTA1YTVmZTEzNjhiMjlmZDVmOGYxZDVmOWNiMjU5ZThkMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKQEAgLTEwMiw4ICsxMDIsOCBAQCBzdHJ1Y3QgU2NyaXB0IHsKICAg
ICB9CiB9OwogCi1zdHJ1Y3QgT3B0aW9ucyB7Ci0gICAgT3B0aW9ucygpCitzdHJ1Y3QgQ29tbWFu
ZExpbmUgeworICAgIENvbW1hbmRMaW5lKCkKICAgICAgICAgOiBpbnRlcmFjdGl2ZShmYWxzZSkK
ICAgICAgICAgLCBkdW1wKGZhbHNlKQogICAgIHsKQEAgLTU0OCw3ICs1NDgsNyBAQCBzdGF0aWMg
Tk9fUkVUVVJOIHZvaWQgcHJpbnRVc2FnZVN0YXRlbWVudChKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIGJvb2wgaGVscCA9CiAgICAgZXhpdChoZWxwID8gRVhJVF9TVUNDRVNTIDogRVhJVF9GQUlM
VVJFKTsKIH0KIAotc3RhdGljIHZvaWQgcGFyc2VBcmd1bWVudHMoaW50IGFyZ2MsIGNoYXIqKiBh
cmd2LCBPcHRpb25zJiBvcHRpb25zLCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCitzdGF0aWMg
dm9pZCBwYXJzZUFyZ3VtZW50cyhpbnQgYXJnYywgY2hhcioqIGFyZ3YsIENvbW1hbmRMaW5lJiBv
cHRpb25zLCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiB7CiAgICAgaW50IGkgPSAxOwogICAg
IGZvciAoOyBpIDwgYXJnYzsgKytpKSB7CkBAIC02MDIsNyArNjAyLDcgQEAgaW50IGpzY21haW4o
aW50IGFyZ2MsIGNoYXIqKiBhcmd2LCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiB7CiAgICAg
SlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAotICAgIE9wdGlvbnMgb3B0aW9u
czsKKyAgICBDb21tYW5kTGluZSBvcHRpb25zOwogICAgIHBhcnNlQXJndW1lbnRzKGFyZ2MsIGFy
Z3YsIG9wdGlvbnMsIGdsb2JhbERhdGEpOwogCiAgICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgR2xvYmFsT2JqZWN0OjpjcmVh
dGVTdHJ1Y3R1cmUoKmdsb2JhbERhdGEsIGpzTnVsbCgpKSwgb3B0aW9ucy5hcmd1bWVudHMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGV1cmlzdGljcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMGQ1YzcwZWJkZjFiZGVkOTY4YzAyYmI4MTIyNTMzZWU0Mjgx
Yjg5Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDIwMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJIZXVyaXN0aWNzLmgiCi0jaW5j
bHVkZSA8d3RmL1BhZ2VCbG9jay5oPgotCi0jaW5jbHVkZSA8bGltaXRzPgotCi0jaWYgT1MoREFS
V0lOKSAmJiBFTkFCTEUoUEFSQUxMRUxfR0MpCi0jaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgotI2Vu
ZGlmCi0KLS8vIFNldCB0byAxIHRvIGNvbnRyb2wgdGhlIGhldXJpc3RpY3MgdXNpbmcgZW52aXJv
bm1lbnQgdmFyaWFibGVzLgotI2RlZmluZSBFTkFCTEVfUlVOX1RJTUVfSEVVUklTVElDUyAwCi0K
LSNpZiBFTkFCTEUoUlVOX1RJTUVfSEVVUklTVElDUykKLSNpbmNsdWRlIDxzdGRpby5oPgotI2lu
Y2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNlbmRpZgot
Ci1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEhldXJpc3RpY3MgewotCi11bnNpZ25lZCBtYXhp
bXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKLQotdW5zaWduZWQgbWF4
aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7Ci11bnNp
Z25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlv
bkNvdW50OwotCi11bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsKLQotaW50MzJfdCBleGVj
dXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOwotaW50MzJfdCBleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKLWludDMyX3QgZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247Ci1pbnQzMl90IGV4ZWN1
dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbjsKLWludDMyX3QgZXhlY3V0aW9uQ291bnRl
clZhbHVlRm9yT3B0aW1pemVOZXh0SW52b2NhdGlvbjsKLQotaW50MzJfdCBleGVjdXRpb25Db3Vu
dGVySW5jcmVtZW50Rm9yTG9vcDsKLWludDMyX3QgZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZv
clJldHVybjsKLQotdW5zaWduZWQgZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbzsK
LQotdW5zaWduZWQgbGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7Ci11bnNpZ25lZCBjb3Vs
ZFRha2VTbG93Q2FzZVRocmVzaG9sZDsKLQotdW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hv
bGRCYXNlOwotdW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlRm9yTG9vcDsKLQot
dW5zaWduZWQgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXg7Ci11bnNpZ25lZCByZW9wdGlt
aXphdGlvblJldHJ5Q291bnRlclN0ZXA7Ci0KLXVuc2lnbmVkIG1pbmltdW1PcHRpbWl6YXRpb25E
ZWxheTsKLXVuc2lnbmVkIG1heGltdW1PcHRpbWl6YXRpb25EZWxheTsKLWRvdWJsZSBkZXNpcmVk
UHJvZmlsZUxpdmVuZXNzUmF0ZTsKLWRvdWJsZSBkZXNpcmVkUHJvZmlsZUZ1bGxuZXNzUmF0ZTsK
LQotdW5zaWduZWQgbWluaW11bU51bWJlck9mU2NhbnNCZXR3ZWVuUmViYWxhbmNlOwotdW5zaWdu
ZWQgZ2NNYXJrU3RhY2tTZWdtZW50U2l6ZTsKLXVuc2lnbmVkIG1pbmltdW1OdW1iZXJPZkNlbGxz
VG9LZWVwOwotdW5zaWduZWQgbWF4aW11bU51bWJlck9mU2hhcmVkU2VnbWVudHM7Ci11bnNpZ25l
ZCBzaGFyZWRTdGFja1dha2V1cFRocmVzaG9sZDsKLXVuc2lnbmVkIG51bWJlck9mR0NNYXJrZXJz
OwotdW5zaWduZWQgb3BhcXVlUm9vdE1lcmdlVGhyZXNob2xkOwotCi0jaWYgRU5BQkxFKFJVTl9U
SU1FX0hFVVJJU1RJQ1MpCi1zdGF0aWMgYm9vbCBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcsIGlu
dDMyX3QmIHZhbHVlKQotewotICAgIHJldHVybiBzc2NhbmYoc3RyaW5nLCAiJWQiLCAmdmFsdWUp
ID09IDE7Ci19Ci0KLXN0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywgdW5zaWdu
ZWQmIHZhbHVlKQotewotICAgIHJldHVybiBzc2NhbmYoc3RyaW5nLCAiJXUiLCAmdmFsdWUpID09
IDE7Ci19Ci0KLXN0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywgZG91YmxlJiB2
YWx1ZSkKLXsKLSAgICByZXR1cm4gc3NjYW5mKHN0cmluZywgIiVsZiIsICZ2YWx1ZSkgPT0gMTsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLXZvaWQgc2V0SGV1cmlzdGlj
KFQmIHZhcmlhYmxlLCBjb25zdCBjaGFyKiBuYW1lLCBVIHZhbHVlKQotewotICAgIGNvbnN0IGNo
YXIqIHN0cmluZ1ZhbHVlID0gZ2V0ZW52KG5hbWUpOwotICAgIGlmICghc3RyaW5nVmFsdWUpIHsK
LSAgICAgICAgdmFyaWFibGUgPSBzYWZlQ2FzdDxUPih2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgCi0gICAgaWYgKHBhcnNlKHN0cmluZ1ZhbHVlLCB2YXJpYWJsZSkpCi0gICAg
ICAgIHJldHVybjsKLSAgICAKLSAgICBmcHJpbnRmKHN0ZGVyciwgIldBUk5JTkc6IGZhaWxlZCB0
byBwYXJzZSAlcz0lc1xuIiwgbmFtZSwgc3RyaW5nVmFsdWUpOwotICAgIHZhcmlhYmxlID0gc2Fm
ZUNhc3Q8VD4odmFsdWUpOwotfQotCi0jZGVmaW5lIFNFVCh2YXJpYWJsZSwgdmFsdWUpIHNldEhl
dXJpc3RpYyh2YXJpYWJsZSwgIkpTQ18iICN2YXJpYWJsZSwgdmFsdWUpCi0jZWxzZQotI2RlZmlu
ZSBTRVQodmFyaWFibGUsIHZhbHVlKSB2YXJpYWJsZSA9IHZhbHVlCi0jZW5kaWYKLQotdm9pZCBp
bml0aWFsaXplSGV1cmlzdGljcygpCi17Ci0gICAgU0VUKG1heGltdW1PcHRpbWl6YXRpb25DYW5k
aWRhdGVJbnN0cnVjdGlvbkNvdW50LCAxMDAwKTsKLSAgICAKLSAgICBTRVQobWF4aW11bUZ1bmN0
aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQsIDE1MCk7Ci0gICAgU0VU
KG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291
bnQsIDgwKTsKLSAgICAKLSAgICBTRVQobWF4aW11bUlubGluaW5nRGVwdGgsIDUpOwotCi0gICAg
U0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAsICAgICAtMTAw
MCk7Ci0gICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2Fy
bVVwLCAtNTAwMCk7Ci0gICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6
ZUFueXRpbWVTb29uLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSk7Ci0gICAg
U0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbiwgICAgICAgICAgICAtMTAw
MCk7Ci0gICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplTmV4dEludm9jYXRp
b24sICAwKTsKLQotICAgIFNFVChleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yTG9vcCwgICAx
KTsKLSAgICBTRVQoZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvclJldHVybiwgMTUpOwotCi0g
ICAgU0VUKGRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW8sIDYpOwotICAgIAotICAg
IFNFVChsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZCwgMTAwKTsKLSAgICBTRVQoY291bGRU
YWtlU2xvd0Nhc2VUaHJlc2hvbGQsICAgIDEwKTsgLy8gU2hvdWxkbid0IGJlIHplcm8gYmVjYXVz
ZSBzb21lIG9wcyB3aWxsIHNwdXJpb3VzbHkgdGFrZSBzbG93IGNhc2UsIGZvciBleGFtcGxlIGZv
ciBsaW5raW5nIG9yIGNhY2hpbmcuCi0KLSAgICBTRVQobGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRC
YXNlLCAgICAgICAgMjApOwotICAgIFNFVChsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2VGb3JM
b29wLCAxKTsKLQotICAgIFNFVChyZW9wdGltaXphdGlvblJldHJ5Q291bnRlclN0ZXAsIDEpOwot
Ci0gICAgU0VUKG1pbmltdW1PcHRpbWl6YXRpb25EZWxheSwgICAxKTsKLSAgICBTRVQobWF4aW11
bU9wdGltaXphdGlvbkRlbGF5LCAgIDUpOwotICAgIFNFVChkZXNpcmVkUHJvZmlsZUxpdmVuZXNz
UmF0ZSwgMC43NSk7Ci0gICAgU0VUKGRlc2lyZWRQcm9maWxlRnVsbG5lc3NSYXRlLCAwLjM1KTsK
LSAgICAKLSAgICBTRVQobWluaW11bU51bWJlck9mU2NhbnNCZXR3ZWVuUmViYWxhbmNlLCAxMDAw
MCk7Ci0gICAgU0VUKGdjTWFya1N0YWNrU2VnbWVudFNpemUsICAgICAgICAgICAgICAgcGFnZVNp
emUoKSk7Ci0gICAgU0VUKG1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVwLCAgICAgICAgICAgMTAp
OwotICAgIFNFVChtYXhpbXVtTnVtYmVyT2ZTaGFyZWRTZWdtZW50cywgICAgICAgIDMpOwotICAg
IFNFVChzaGFyZWRTdGFja1dha2V1cFRocmVzaG9sZCwgICAgICAgICAgIDEpOwotICAgIFNFVChv
cGFxdWVSb290TWVyZ2VUaHJlc2hvbGQsICAgICAgICAgICAgIDEwMDApOwotCi0gICAgaW50IGNw
dXNUb1VzZSA9IDE7Ci0jaWYgT1MoREFSV0lOKSAmJiBFTkFCTEUoUEFSQUxMRUxfR0MpCi0gICAg
aW50IG5hbWVbMl07Ci0gICAgc2l6ZV90IHZhbHVlU2l6ZSA9IHNpemVvZihjcHVzVG9Vc2UpOwot
ICAgIG5hbWVbMF0gPSBDVExfSFc7Ci0gICAgbmFtZVsxXSA9IEhXX0FWQUlMQ1BVOwotICAgIHN5
c2N0bChuYW1lLCAyLCAmY3B1c1RvVXNlLCAmdmFsdWVTaXplLCAwLCAwKTsKLSNlbmRpZgotICAg
IC8vIFdlIGRvbid0IHNjYWxlIHNvIHdlbGwgYmV5b25kIDQuCi0gICAgaWYgKGNwdXNUb1VzZSA+
IDQpCi0gICAgICAgIGNwdXNUb1VzZSA9IDQ7Ci0gICAgLy8gQmUgcGFyYW5vaWQsIGl0IGlzIHRo
ZSBPUyB3ZSdyZSBkZWFsaW5nIHdpdGgsIGFmdGVyIGFsbC4KLSAgICBpZiAoY3B1c1RvVXNlIDwg
MSkKLSAgICAgICAgY3B1c1RvVXNlID0gMTsKLSAgICAKLSAgICBTRVQobnVtYmVyT2ZHQ01hcmtl
cnMsIGNwdXNUb1VzZSk7Ci0KLSAgICBBU1NFUlQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9u
dE9wdGltaXplQW55dGltZVNvb24gPD0gZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVB
ZnRlckxvbmdXYXJtVXApOwotICAgIEFTU0VSVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRp
bWl6ZUFmdGVyTG9uZ1dhcm1VcCA8PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFm
dGVyV2FybVVwKTsKLSAgICBBU1NFUlQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVB
ZnRlcldhcm1VcCA8PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZVNvb24pOwotICAg
IEFTU0VSVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwIDwgMCk7
Ci0gICAgQVNTRVJUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbiA8PSBleGVj
dXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZU5leHRJbnZvY2F0aW9uKTsKLSAgICAKLSAgICAv
LyBDb21wdXRlIHRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSByZW9wdGltaXphdGlvbiByZXRyeSBj
b3VudGVyLiBUaGlzIGlzIHNpbXBseQotICAgIC8vIHRoZSBsYXJnZXN0IHZhbHVlIGF0IHdoaWNo
IHdlIGRvbid0IG92ZXJmbG93IHRoZSBleGVjdXRlIGNvdW50ZXIsIHdoZW4gdXNpbmcgaXQKLSAg
ICAvLyB0byBsZWZ0LXNoaWZ0IHRoZSBleGVjdXRpb24gY291bnRlciBieSB0aGlzIGFtb3VudC4g
Q3VycmVudGx5IHRoZSB2YWx1ZSBlbmRzCi0gICAgLy8gdXAgYmVpbmcgMTgsIHNvIHRoaXMgbG9v
cCBpcyBub3Qgc28gdGVycmlibGU7IGl0IHByb2JhYmx5IHRha2VzIHVwIH4xMDAgY3ljbGVzCi0g
ICAgLy8gdG90YWwgb24gYSAzMi1iaXQgcHJvY2Vzc29yLgotICAgIHJlb3B0aW1pemF0aW9uUmV0
cnlDb3VudGVyTWF4ID0gMDsKLSAgICB3aGlsZSAoKHN0YXRpY19jYXN0PGludDY0X3Q+KGV4ZWN1
dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKSA8PCAocmVvcHRpbWl6
YXRpb25SZXRyeUNvdW50ZXJNYXggKyAxKSkgPj0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpKQotICAgICAgICByZW9wdGltaXphdGlvblJl
dHJ5Q291bnRlck1heCsrOwotICAgIAotICAgIEFTU0VSVCgoc3RhdGljX2Nhc3Q8aW50NjRfdD4o
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApIDw8IHJlb3B0
aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4KSA8IDApOwotICAgIEFTU0VSVCgoc3RhdGljX2Nhc3Q8
aW50NjRfdD4oZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAp
IDw8IHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4KSA+PSBzdGF0aWNfY2FzdDxpbnQ2NF90
PihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSkpOwotfQotCi19IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6SGV1cmlzdGljcwotCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0hldXJpc3RpY3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0hldXJpc3RpY3MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2MyNzkxZmMyZDEw
NGM1M2YyYzFhNzg0NGRhNzEzNDZmNGY3N2E1OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0
aWNzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgSGV1cmlzdGljc19oCi0jZGVmaW5l
IEhldXJpc3RpY3NfaAotCi0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgSGV1cmlzdGljcyB7Ci0KLWV4dGVybiB1bnNpZ25lZCBtYXhpbXVtT3B0aW1pemF0
aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKLQotZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1G
dW5jdGlvbkZvckNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OwotZXh0ZXJuIHVu
c2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0
aW9uQ291bnQ7Ci0KLWV4dGVybiB1bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsgLy8gRGVw
dGggb2YgaW5saW5lIHN0YWNrLCBzbyAxID0gbm8gaW5saW5pbmcsIDIgPSBvbmUgbGV2ZWwsIGV0
Yy4KLQotZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRl
cldhcm1VcDsKLWV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXpl
QWZ0ZXJMb25nV2FybVVwOwotZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
RG9udE9wdGltaXplQW55dGltZVNvb247Ci1leHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVy
VmFsdWVGb3JPcHRpbWl6ZVNvb247Ci1leHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFs
dWVGb3JPcHRpbWl6ZU5leHRJbnZvY2F0aW9uOwotCi1leHRlcm4gaW50MzJfdCBleGVjdXRpb25D
b3VudGVySW5jcmVtZW50Rm9yTG9vcDsKLWV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJJ
bmNyZW1lbnRGb3JSZXR1cm47Ci0KLWV4dGVybiB1bnNpZ25lZCBkZXNpcmVkU3BlY3VsYXRpdmVT
dWNjZXNzRmFpbFJhdGlvOwotCi1leHRlcm4gdW5zaWduZWQgbGlrZWx5VG9UYWtlU2xvd0Nhc2VU
aHJlc2hvbGQ7Ci1leHRlcm4gdW5zaWduZWQgY291bGRUYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7Ci0K
LWV4dGVybiB1bnNpZ25lZCBsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2U7Ci1leHRlcm4gdW5z
aWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlRm9yTG9vcDsKLQotZXh0ZXJuIHVuc2ln
bmVkIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4OwotZXh0ZXJuIHVuc2lnbmVkIHJlb3B0
aW1pemF0aW9uUmV0cnlDb3VudGVyU3RlcDsKLQotZXh0ZXJuIHVuc2lnbmVkIG1pbmltdW1PcHRp
bWl6YXRpb25EZWxheTsKLWV4dGVybiB1bnNpZ25lZCBtYXhpbXVtT3B0aW1pemF0aW9uRGVsYXk7
Ci1leHRlcm4gZG91YmxlIGRlc2lyZWRQcm9maWxlTGl2ZW5lc3NSYXRlOwotZXh0ZXJuIGRvdWJs
ZSBkZXNpcmVkUHJvZmlsZUZ1bGxuZXNzUmF0ZTsKLQotZXh0ZXJuIHVuc2lnbmVkIG1pbmltdW1O
dW1iZXJPZlNjYW5zQmV0d2VlblJlYmFsYW5jZTsKLWV4dGVybiB1bnNpZ25lZCBnY01hcmtTdGFj
a1NlZ21lbnRTaXplOwotZXh0ZXJuIHVuc2lnbmVkIG1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVw
OwotZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1OdW1iZXJPZlNoYXJlZFNlZ21lbnRzOwotZXh0ZXJu
IHVuc2lnbmVkIHNoYXJlZFN0YWNrV2FrZXVwVGhyZXNob2xkOwotZXh0ZXJuIHVuc2lnbmVkIG51
bWJlck9mR0NNYXJrZXJzOwotZXh0ZXJuIHVuc2lnbmVkIG9wYXF1ZVJvb3RNZXJnZVRocmVzaG9s
ZDsKLQotdm9pZCBpbml0aWFsaXplSGV1cmlzdGljcygpOwotCi19IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6SGV1cmlzdGljcwotCi0jZW5kaWYgLy8gSGV1cmlzdGljc19oCi0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKaW5kZXgg
M2EzNzFmOTUwZDNjZTNhMDc1M2Q4MGRmOGIyYjk0MzU2YzNmNWRkOC4uNjk4OTU3MmJlOGI5YmE0
OWMxMDA1NjRkZTFmODY4MjI2MTJmNTNhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKQEAgLTMxLDcgKzMxLDcgQEAK
IAogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJIZWFwLmgiCi0j
aW5jbHVkZSAiSGV1cmlzdGljcy5oIgorI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNEYXRlTWF0aC5oIgogI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0LmgiCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUaHJlYWRp
bmdPbmNlKCkKIHsKICAgICBXVEY6OmRvdWJsZV9jb252ZXJzaW9uOjppbml0aWFsaXplKCk7CiAg
ICAgV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCk7Ci0gICAgSGV1cmlzdGljczo6aW5pdGlhbGl6
ZUhldXJpc3RpY3MoKTsKKyAgICBPcHRpb25zOjppbml0aWFsaXplT3B0aW9ucygpOwogI2lmIEVO
QUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykKICAgICBXcml0ZUJhcnJpZXJDb3VudGVyczo6
aW5pdGlhbGl6ZSgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjFjNDE4ZDcwODlhODZiMmYyMDdhZGJmNTk4MWMyMmI4NmVkMGIz
OWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmNwcApAQCAtMCwwICsxLDIwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiT3B0aW9ucy5o
IgorCisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHd0Zi9QYWdlQmxvY2suaD4KKworI2lm
IE9TKERBUldJTikgJiYgRU5BQkxFKFBBUkFMTEVMX0dDKQorI2luY2x1ZGUgPHN5cy9zeXNjdGwu
aD4KKyNlbmRpZgorCisvLyBTZXQgdG8gMSB0byBjb250cm9sIHRoZSBoZXVyaXN0aWNzIHVzaW5n
IGVudmlyb25tZW50IHZhcmlhYmxlcy4KKyNkZWZpbmUgRU5BQkxFX1JVTl9USU1FX0hFVVJJU1RJ
Q1MgMAorCisjaWYgRU5BQkxFKFJVTl9USU1FX0hFVVJJU1RJQ1MpCisjaW5jbHVkZSA8c3RkaW8u
aD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Cisj
ZW5kaWYKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBPcHRpb25zIHsKKwordW5zaWduZWQg
bWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CisKK3Vuc2lnbmVk
IG1heGltdW1GdW5jdGlvbkZvckNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50Owor
dW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saW5lQ2FuZGlkYXRlSW5zdHJ1
Y3Rpb25Db3VudDsKKwordW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7CisKK2ludDMyX3Qg
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcDsKK2ludDMyX3QgZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXA7CitpbnQzMl90IGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uOworaW50MzJfdCBl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZVNvb247CitpbnQzMl90IGV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvck9wdGltaXplTmV4dEludm9jYXRpb247CisKK2ludDMyX3QgZXhlY3V0aW9u
Q291bnRlckluY3JlbWVudEZvckxvb3A7CitpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1l
bnRGb3JSZXR1cm47CisKK3Vuc2lnbmVkIGRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0
aW87CisKK3Vuc2lnbmVkIGxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwordW5zaWduZWQg
Y291bGRUYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CisKK3Vuc2lnbmVkIGxhcmdlRmFpbENvdW50VGhy
ZXNob2xkQmFzZTsKK3Vuc2lnbmVkIGxhcmdlRmFpbENvdW50VGhyZXNob2xkQmFzZUZvckxvb3A7
CisKK3Vuc2lnbmVkIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4OwordW5zaWduZWQgcmVv
cHRpbWl6YXRpb25SZXRyeUNvdW50ZXJTdGVwOworCit1bnNpZ25lZCBtaW5pbXVtT3B0aW1pemF0
aW9uRGVsYXk7Cit1bnNpZ25lZCBtYXhpbXVtT3B0aW1pemF0aW9uRGVsYXk7Citkb3VibGUgZGVz
aXJlZFByb2ZpbGVMaXZlbmVzc1JhdGU7Citkb3VibGUgZGVzaXJlZFByb2ZpbGVGdWxsbmVzc1Jh
dGU7CisKK3Vuc2lnbmVkIG1pbmltdW1OdW1iZXJPZlNjYW5zQmV0d2VlblJlYmFsYW5jZTsKK3Vu
c2lnbmVkIGdjTWFya1N0YWNrU2VnbWVudFNpemU7Cit1bnNpZ25lZCBtaW5pbXVtTnVtYmVyT2ZD
ZWxsc1RvS2VlcDsKK3Vuc2lnbmVkIG1heGltdW1OdW1iZXJPZlNoYXJlZFNlZ21lbnRzOwordW5z
aWduZWQgc2hhcmVkU3RhY2tXYWtldXBUaHJlc2hvbGQ7Cit1bnNpZ25lZCBudW1iZXJPZkdDTWFy
a2VyczsKK3Vuc2lnbmVkIG9wYXF1ZVJvb3RNZXJnZVRocmVzaG9sZDsKKworI2lmIEVOQUJMRShS
VU5fVElNRV9IRVVSSVNUSUNTKQorc3RhdGljIGJvb2wgcGFyc2UoY29uc3QgY2hhciogc3RyaW5n
LCBpbnQzMl90JiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gc3NjYW5mKHN0cmluZywgIiVkIiwgJnZh
bHVlKSA9PSAxOworfQorCitzdGF0aWMgYm9vbCBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcsIHVu
c2lnbmVkJiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gc3NjYW5mKHN0cmluZywgIiV1IiwgJnZhbHVl
KSA9PSAxOworfQorCitzdGF0aWMgYm9vbCBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcsIGRvdWJs
ZSYgdmFsdWUpCit7CisgICAgcmV0dXJuIHNzY2FuZihzdHJpbmcsICIlbGYiLCAmdmFsdWUpID09
IDE7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Cit2b2lkIHNldEhldXJp
c3RpYyhUJiB2YXJpYWJsZSwgY29uc3QgY2hhciogbmFtZSwgVSB2YWx1ZSkKK3sKKyAgICBjb25z
dCBjaGFyKiBzdHJpbmdWYWx1ZSA9IGdldGVudihuYW1lKTsKKyAgICBpZiAoIXN0cmluZ1ZhbHVl
KSB7CisgICAgICAgIHZhcmlhYmxlID0gc2FmZUNhc3Q8VD4odmFsdWUpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIAorICAgIGlmIChwYXJzZShzdHJpbmdWYWx1ZSwgdmFyaWFibGUpKQor
ICAgICAgICByZXR1cm47CisgICAgCisgICAgZnByaW50ZihzdGRlcnIsICJXQVJOSU5HOiBmYWls
ZWQgdG8gcGFyc2UgJXM9JXNcbiIsIG5hbWUsIHN0cmluZ1ZhbHVlKTsKKyAgICB2YXJpYWJsZSA9
IHNhZmVDYXN0PFQ+KHZhbHVlKTsKK30KKworI2RlZmluZSBTRVQodmFyaWFibGUsIHZhbHVlKSBz
ZXRIZXVyaXN0aWModmFyaWFibGUsICJKU0NfIiAjdmFyaWFibGUsIHZhbHVlKQorI2Vsc2UKKyNk
ZWZpbmUgU0VUKHZhcmlhYmxlLCB2YWx1ZSkgdmFyaWFibGUgPSB2YWx1ZQorI2VuZGlmCisKK3Zv
aWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQoreworICAgIFNFVChtYXhpbXVtT3B0aW1pemF0aW9uQ2Fu
ZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCwgMTAwMCk7CisgICAgCisgICAgU0VUKG1heGltdW1GdW5j
dGlvbkZvckNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50LCAxNTApOworICAgIFNF
VChtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNv
dW50LCA4MCk7CisgICAgCisgICAgU0VUKG1heGltdW1JbmxpbmluZ0RlcHRoLCA1KTsKKworICAg
IFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwLCAgICAgLTEw
MDApOworICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dh
cm1VcCwgLTUwMDApOworICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1p
emVBbnl0aW1lU29vbiwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpOworICAg
IFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZVNvb24sICAgICAgICAgICAgLTEw
MDApOworICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZU5leHRJbnZvY2F0
aW9uLCAgMCk7CisKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvckxvb3AsICAg
MSk7CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JSZXR1cm4sIDE1KTsKKwor
ICAgIFNFVChkZXNpcmVkU3BlY3VsYXRpdmVTdWNjZXNzRmFpbFJhdGlvLCA2KTsKKyAgICAKKyAg
ICBTRVQobGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQsIDEwMCk7CisgICAgU0VUKGNvdWxk
VGFrZVNsb3dDYXNlVGhyZXNob2xkLCAgICAxMCk7IC8vIFNob3VsZG4ndCBiZSB6ZXJvIGJlY2F1
c2Ugc29tZSBvcHMgd2lsbCBzcHVyaW91c2x5IHRha2Ugc2xvdyBjYXNlLCBmb3IgZXhhbXBsZSBm
b3IgbGlua2luZyBvciBjYWNoaW5nLgorCisgICAgU0VUKGxhcmdlRmFpbENvdW50VGhyZXNob2xk
QmFzZSwgICAgICAgIDIwKTsKKyAgICBTRVQobGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlRm9y
TG9vcCwgMSk7CisKKyAgICBTRVQocmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJTdGVwLCAxKTsK
KworICAgIFNFVChtaW5pbXVtT3B0aW1pemF0aW9uRGVsYXksICAgMSk7CisgICAgU0VUKG1heGlt
dW1PcHRpbWl6YXRpb25EZWxheSwgICA1KTsKKyAgICBTRVQoZGVzaXJlZFByb2ZpbGVMaXZlbmVz
c1JhdGUsIDAuNzUpOworICAgIFNFVChkZXNpcmVkUHJvZmlsZUZ1bGxuZXNzUmF0ZSwgMC4zNSk7
CisgICAgCisgICAgU0VUKG1pbmltdW1OdW1iZXJPZlNjYW5zQmV0d2VlblJlYmFsYW5jZSwgMTAw
MDApOworICAgIFNFVChnY01hcmtTdGFja1NlZ21lbnRTaXplLCAgICAgICAgICAgICAgIHBhZ2VT
aXplKCkpOworICAgIFNFVChtaW5pbXVtTnVtYmVyT2ZDZWxsc1RvS2VlcCwgICAgICAgICAgIDEw
KTsKKyAgICBTRVQobWF4aW11bU51bWJlck9mU2hhcmVkU2VnbWVudHMsICAgICAgICAzKTsKKyAg
ICBTRVQoc2hhcmVkU3RhY2tXYWtldXBUaHJlc2hvbGQsICAgICAgICAgICAxKTsKKyAgICBTRVQo
b3BhcXVlUm9vdE1lcmdlVGhyZXNob2xkLCAgICAgICAgICAgICAxMDAwKTsKKworICAgIGludCBj
cHVzVG9Vc2UgPSAxOworI2lmIE9TKERBUldJTikgJiYgRU5BQkxFKFBBUkFMTEVMX0dDKQorICAg
IGludCBuYW1lWzJdOworICAgIHNpemVfdCB2YWx1ZVNpemUgPSBzaXplb2YoY3B1c1RvVXNlKTsK
KyAgICBuYW1lWzBdID0gQ1RMX0hXOworICAgIG5hbWVbMV0gPSBIV19BVkFJTENQVTsKKyAgICBz
eXNjdGwobmFtZSwgMiwgJmNwdXNUb1VzZSwgJnZhbHVlU2l6ZSwgMCwgMCk7CisjZW5kaWYKKyAg
ICAvLyBXZSBkb24ndCBzY2FsZSBzbyB3ZWxsIGJleW9uZCA0LgorICAgIGlmIChjcHVzVG9Vc2Ug
PiA0KQorICAgICAgICBjcHVzVG9Vc2UgPSA0OworICAgIC8vIEJlIHBhcmFub2lkLCBpdCBpcyB0
aGUgT1Mgd2UncmUgZGVhbGluZyB3aXRoLCBhZnRlciBhbGwuCisgICAgaWYgKGNwdXNUb1VzZSA8
IDEpCisgICAgICAgIGNwdXNUb1VzZSA9IDE7CisgICAgCisgICAgU0VUKG51bWJlck9mR0NNYXJr
ZXJzLCBjcHVzVG9Vc2UpOworCisgICAgQVNTRVJUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRv
bnRPcHRpbWl6ZUFueXRpbWVTb29uIDw9IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXpl
QWZ0ZXJMb25nV2FybVVwKTsKKyAgICBBU1NFUlQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0
aW1pemVBZnRlckxvbmdXYXJtVXAgPD0gZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVB
ZnRlcldhcm1VcCk7CisgICAgQVNTRVJUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXpl
QWZ0ZXJXYXJtVXAgPD0gZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVTb29uKTsKKyAg
ICBBU1NFUlQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCA8IDAp
OworICAgIEFTU0VSVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZVNvb24gPD0gZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVOZXh0SW52b2NhdGlvbik7CisgICAgCisgICAg
Ly8gQ29tcHV0ZSB0aGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgcmVvcHRpbWl6YXRpb24gcmV0cnkg
Y291bnRlci4gVGhpcyBpcyBzaW1wbHkKKyAgICAvLyB0aGUgbGFyZ2VzdCB2YWx1ZSBhdCB3aGlj
aCB3ZSBkb24ndCBvdmVyZmxvdyB0aGUgZXhlY3V0ZSBjb3VudGVyLCB3aGVuIHVzaW5nIGl0Cisg
ICAgLy8gdG8gbGVmdC1zaGlmdCB0aGUgZXhlY3V0aW9uIGNvdW50ZXIgYnkgdGhpcyBhbW91bnQu
IEN1cnJlbnRseSB0aGUgdmFsdWUgZW5kcworICAgIC8vIHVwIGJlaW5nIDE4LCBzbyB0aGlzIGxv
b3AgaXMgbm90IHNvIHRlcnJpYmxlOyBpdCBwcm9iYWJseSB0YWtlcyB1cCB+MTAwIGN5Y2xlcwor
ICAgIC8vIHRvdGFsIG9uIGEgMzItYml0IHByb2Nlc3Nvci4KKyAgICByZW9wdGltaXphdGlvblJl
dHJ5Q291bnRlck1heCA9IDA7CisgICAgd2hpbGUgKChzdGF0aWNfY2FzdDxpbnQ2NF90PihleGVj
dXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCkgPDwgKHJlb3B0aW1p
emF0aW9uUmV0cnlDb3VudGVyTWF4ICsgMSkpID49IHN0YXRpY19jYXN0PGludDY0X3Q+KHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKSkKKyAgICAgICAgcmVvcHRpbWl6YXRpb25S
ZXRyeUNvdW50ZXJNYXgrKzsKKyAgICAKKyAgICBBU1NFUlQoKHN0YXRpY19jYXN0PGludDY0X3Q+
KGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKSA8PCByZW9w
dGltaXphdGlvblJldHJ5Q291bnRlck1heCkgPCAwKTsKKyAgICBBU1NFUlQoKHN0YXRpY19jYXN0
PGludDY0X3Q+KGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVw
KSA8PCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1heCkgPj0gc3RhdGljX2Nhc3Q8aW50NjRf
dD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpKTsKK30KKworfSB9IC8vIG5h
bWVzcGFjZSBKU0M6Ok9wdGlvbnMKKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjA1OGU4Njk0OTUwYmZlYjViOThkMmI3MjQ2NzAyYTI0MDRiZGQ4
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgT3B0aW9uc19oCisjZGVmaW5lIE9wdGlvbnNfaAorCisjaW5j
bHVkZSA8c3RkaW50Lmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgT3B0aW9ucyB7CisK
K2V4dGVybiB1bnNpZ25lZCBtYXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25D
b3VudDsKKworZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNhbGxJbmxpbmVDYW5k
aWRhdGVJbnN0cnVjdGlvbkNvdW50OworZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZv
ckNvbnN0cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CisKK2V4dGVybiB1bnNp
Z25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsgLy8gRGVwdGggb2YgaW5saW5lIHN0YWNrLCBzbyAx
ID0gbm8gaW5saW5pbmcsIDIgPSBvbmUgbGV2ZWwsIGV0Yy4KKworZXh0ZXJuIGludDMyX3QgZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcDsKK2V4dGVybiBpbnQzMl90
IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwOworZXh0ZXJu
IGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247
CitleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZVNvb247Citl
eHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZU5leHRJbnZvY2F0
aW9uOworCitleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yTG9vcDsK
K2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JSZXR1cm47CisKK2V4
dGVybiB1bnNpZ25lZCBkZXNpcmVkU3BlY3VsYXRpdmVTdWNjZXNzRmFpbFJhdGlvOworCitleHRl
cm4gdW5zaWduZWQgbGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CitleHRlcm4gdW5zaWdu
ZWQgY291bGRUYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CisKK2V4dGVybiB1bnNpZ25lZCBsYXJnZUZh
aWxDb3VudFRocmVzaG9sZEJhc2U7CitleHRlcm4gdW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJl
c2hvbGRCYXNlRm9yTG9vcDsKKworZXh0ZXJuIHVuc2lnbmVkIHJlb3B0aW1pemF0aW9uUmV0cnlD
b3VudGVyTWF4OworZXh0ZXJuIHVuc2lnbmVkIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyU3Rl
cDsKKworZXh0ZXJuIHVuc2lnbmVkIG1pbmltdW1PcHRpbWl6YXRpb25EZWxheTsKK2V4dGVybiB1
bnNpZ25lZCBtYXhpbXVtT3B0aW1pemF0aW9uRGVsYXk7CitleHRlcm4gZG91YmxlIGRlc2lyZWRQ
cm9maWxlTGl2ZW5lc3NSYXRlOworZXh0ZXJuIGRvdWJsZSBkZXNpcmVkUHJvZmlsZUZ1bGxuZXNz
UmF0ZTsKKworZXh0ZXJuIHVuc2lnbmVkIG1pbmltdW1OdW1iZXJPZlNjYW5zQmV0d2VlblJlYmFs
YW5jZTsKK2V4dGVybiB1bnNpZ25lZCBnY01hcmtTdGFja1NlZ21lbnRTaXplOworZXh0ZXJuIHVu
c2lnbmVkIG1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVwOworZXh0ZXJuIHVuc2lnbmVkIG1heGlt
dW1OdW1iZXJPZlNoYXJlZFNlZ21lbnRzOworZXh0ZXJuIHVuc2lnbmVkIHNoYXJlZFN0YWNrV2Fr
ZXVwVGhyZXNob2xkOworZXh0ZXJuIHVuc2lnbmVkIG51bWJlck9mR0NNYXJrZXJzOworZXh0ZXJu
IHVuc2lnbmVkIG9wYXF1ZVJvb3RNZXJnZVRocmVzaG9sZDsKKwordm9pZCBpbml0aWFsaXplT3B0
aW9ucygpOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6T3B0aW9ucworCisjZW5kaWYgLy8gT3B0
aW9uc19oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhwLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhwLmNwcAppbmRleCA3ZjlmYTdhYWMy
YTk1ZDlmM2FlODMyMmUzNjRjYWQyY2QzYzM1MjM5Li5jZmRkOWExZjVlZjEyYjE2NDIzYjdmNDU3
MjZmY2QxNDk0MzBhNDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJl
Z0V4cC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCkBAIC01
Niw4ICs1Niw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIHN0YXRpYyB2b2lkIGNsZWFudXBH
bG9iYWxEYXRhKEpTR2xvYmFsRGF0YSopOwogCi1zdHJ1Y3QgT3B0aW9ucyB7Ci0gICAgT3B0aW9u
cygpCitzdHJ1Y3QgQ29tbWFuZExpbmUgeworICAgIENvbW1hbmRMaW5lKCkKICAgICAgICAgOiBp
bnRlcmFjdGl2ZShmYWxzZSkKICAgICAgICAgLCB2ZXJib3NlKGZhbHNlKQogICAgIHsKQEAgLTQ5
MCw3ICs0OTAsNyBAQCBzdGF0aWMgTk9fUkVUVVJOIHZvaWQgcHJpbnRVc2FnZVN0YXRlbWVudChK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGJvb2wgaGVscCA9CiAgICAgZXhpdChoZWxwID8gRVhJ
VF9TVUNDRVNTIDogRVhJVF9GQUlMVVJFKTsKIH0KIAotc3RhdGljIHZvaWQgcGFyc2VBcmd1bWVu
dHMoaW50IGFyZ2MsIGNoYXIqKiBhcmd2LCBPcHRpb25zJiBvcHRpb25zLCBKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEpCitzdGF0aWMgdm9pZCBwYXJzZUFyZ3VtZW50cyhpbnQgYXJnYywgY2hhcioq
IGFyZ3YsIENvbW1hbmRMaW5lJiBvcHRpb25zLCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiB7
CiAgICAgaW50IGkgPSAxOwogICAgIGZvciAoOyBpIDwgYXJnYzsgKytpKSB7CkBAIC01MTEsNyAr
NTExLDcgQEAgaW50IHJlYWxNYWluKGludCBhcmdjLCBjaGFyKiogYXJndiwgSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhKQogewogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7
CiAKLSAgICBPcHRpb25zIG9wdGlvbnM7CisgICAgQ29tbWFuZExpbmUgb3B0aW9uczsKICAgICBw
YXJzZUFyZ3VtZW50cyhhcmdjLCBhcmd2LCBvcHRpb25zLCBnbG9iYWxEYXRhKTsKIAogICAgIEds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUoKmdsb2JhbERh
dGEsIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKCpnbG9iYWxEYXRhLCBqc051bGwoKSks
IG9wdGlvbnMuYXJndW1lbnRzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118760</attachid>
            <date>2011-12-12 02:58:44 -0800</date>
            <delta_ts>2011-12-14 03:48:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72889-20111212115842.patch</filename>
            <type>text/plain</type>
            <size>64371</size>
            <attacher name="Andy Wingo">wingo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
Njg4Mjc3YmM4NzA4NzU0NGQyZmRlNWIyNjliMTQ5OTJjNmIwOTExLi5hNTBlMzE1OGUzNjcwN2Ix
M2NhZGExMTYyYjk3N2NhYzUwNGZmMGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NyBAQAorMjAxMS0xMS0yOSAgQW5keSBXaW5nbyAgPHdpbmdvQGlnYWxpYS5jb20+CisK
KyAgICAgICAgUmVuYW1lIEpTQzo6SGV1cmlzdGljcyB0byBKU0M6Ok9wdGlvbnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyODg5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMu
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGV1cmlzdGlj
cy5jcHAuCisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmguCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6c2hvdWxkT3B0aW1pemVOb3cpOgorICAgICAgICAqIGJ5dGVj
b2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZVNs
b3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjb3VsZFRha2VTbG93Q2FzZSk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlU3BlY2lhbEZhc3RDYXNlKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rha2VEZWVwZXN0U2xvd0Nhc2UpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZUFueVNsb3dDYXNlKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpyZW9wdGltaXphdGlvblJldHJ5Q291bnRlcik6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6Y291bnRSZW9wdGltaXphdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6Y291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6Y291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6Om9wdGltaXplTmV4dEludm9jYXRpb24pOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmRvbnRPcHRpbWl6ZUFueXRpbWVTb29uKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpvcHRpbWl6ZVNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxhcmdl
RmFpbENvdW50VGhyZXNob2xkKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsYXJnZUZhaWxD
b3VudFRocmVzaG9sZEZvckxvb3ApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNob3VsZFJl
b3B0aW1pemVOb3cpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNob3VsZFJlb3B0aW1pemVG
cm9tTG9vcE5vdyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAq
IGRmZy9ERkdDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjptaWdodENvbXBpbGVF
dmFsKToKKyAgICAgICAgKEpTQzo6REZHOjptaWdodENvbXBpbGVQcm9ncmFtKToKKyAgICAgICAg
KEpTQzo6REZHOjptaWdodENvbXBpbGVGdW5jdGlvbkZvckNhbGwpOgorICAgICAgICAoSlNDOjpE
Rkc6Om1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6REZH
OjptaWdodElubGluZUZ1bmN0aW9uRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6bWlnaHRJ
bmxpbmVGdW5jdGlvbkZvckNvbnN0cnVjdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21w
aWxlcjMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmNvbXBp
bGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGhl
YXAvTWFya1N0YWNrLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrU2VnbWVudEFsbG9jYXRv
cjo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2tTZWdtZW50QWxsb2NhdG9yOjpz
aHJpbmtSZXNlcnZlKToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrQXJyYXk6Ok1hcmtTdGFja0Fy
cmF5KToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrQXJyYXk6OmRvbmF0ZVNvbWVDZWxsc1RvKToK
KyAgICAgICAgKEpTQzo6TWFya1N0YWNrQXJyYXk6OnN0ZWFsU29tZUNlbGxzRnJvbSk6CisgICAg
ICAgIChKU0M6Ok1hcmtTdGFja1RocmVhZFNoYXJlZERhdGE6Ok1hcmtTdGFja1RocmVhZFNoYXJl
ZERhdGEpOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6ZG9uYXRlU2xvdyk6CisgICAgICAg
IChKU0M6OlNsb3RWaXNpdG9yOjpkcmFpbik6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjpk
cmFpbkZyb21TaGFyZWQpOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmg6CisgICAgICAgIChK
U0M6Ok1hcmtTdGFjazo6bWVyZ2VPcGFxdWVSb290c0lmUHJvZml0YWJsZSk6CisgICAgICAgIChK
U0M6Ok1hcmtTdGFjazo6YWRkT3BhcXVlUm9vdCk6CisgICAgICAgIChKU0M6Ok1hcmtTdGFja0Fy
cmF5OjpjYW5Eb25hdGVTb21lQ2VsbHMpOgorICAgICAgICAqIGhlYXAvU2xvdFZpc2l0b3IuaDoK
KyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmRvbmF0ZSk6CisgICAgICAgICogaml0L0pJVC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE9wdGltaXphdGlvbkNoZWNrKToKKyAgICAgICAg
KiBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwOgorICAgICAgICAoSlNDOjppbml0aWFs
aXplVGhyZWFkaW5nT25jZSk6IEFkYXB0IGNhbGxlcnMgYW5kIGJ1aWxkIHN5c3RlbXMuCisKKyAg
ICAgICAgKiB0ZXN0UmVnRXhwLmNwcDoKKyAgICAgICAgKENvbW1hbmRMaW5lOjpDb21tYW5kTGlu
ZSk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKENvbW1hbmRMaW5lOjpDb21tYW5kTGlu
ZSk6CisgICAgICAgIFJlbmFtZSBmcm9tIE9wdGlvbnMsIHRvIGF2b2lkIG5hbWUgY29uZmxpY3Qu
CisKIDIwMTEtMTItMTIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeCBtYWtlIGRpc3RjaGVjayBpc3N1ZXMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNTQ3MTk5NDZhMmNmY2Y1ZmUxMmM2ZWRl
ZGVhMzgwMzhjYWU0ZjQ1MS4uMzAzNDM0NjA1NGMwMzVjNWM3ZDYwYzE0MmRhZjFlNWVhMDc3ZmEz
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTM0LDcgKzEzNCw2IEBA
IFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9GdW5jdGlvblByb3RvdHlw
ZS5jcHAKICAgICBydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAKICAgICBydW50aW1lL0dl
dHRlclNldHRlci5jcHAKLSAgICBydW50aW1lL0hldXJpc3RpY3MuY3BwCiAgICAgcnVudGltZS9J
ZGVudGlmaWVyLmNwcAogICAgIHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKICAgICBy
dW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCkBAIC0xNzEsNiArMTcwLDcgQEAgU0VUKEphdmFT
Y3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAogICAg
IHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHAK
KyAgICBydW50aW1lL09wdGlvbnMuY3BwCiAgICAgcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3Iu
Y3BwCiAgICAgcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5jcHAKICAgICBydW50aW1lL1Byb3Bl
cnR5U2xvdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5k
ZXggOGFlMTJhZmIyYzU5NWNiYzAyM2IwZGM1NjQyN2MxMjNhMTdiNjkzNC4uZjExNWU4MGYxOGVi
MGFmY2Y3ZmFjMWY0YmRhNjlhM2I4MjI3OGI4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KQEAgLTM1Niw4ICszNTYsNiBAQCBqYXZhc2NyaXB0Y29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJh
Y2suaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmggXAotCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hldXJpc3RpY3MuY3BwIFwKLQlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0lkZW50aWZpZXIuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
ZGVudGlmaWVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVU
aHJlYWRpbmcuY3BwIFwKQEAgLTQzNyw2ICs0MzUsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAgXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaCBcCisJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlE
ZXNjcmlwdG9yLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlE
ZXNjcmlwdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFw
SGFzaFRhYmxlLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ogYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvagppbmRleCBhNzkzZGQ3ZWQ1YjljMDU2ZDMyNDYzZjBkM2EwYTFi
ZDM5ODhjMmQzLi44ODgyNjk2MjM4OTRkODRlYTIyNDI2ODQ4MGVlOTRlOWNjNTE4OGMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvagpAQCAtNzM0LDE0ICs3MzQsNiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCi0J
CQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXEhldXJpc3RpY3MuY3BwIgotCQkJCT4KLQkJ
CTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXEhldXJp
c3RpY3MuaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0i
Li5cLi5ccnVudGltZVxJZGVudGlmaWVyLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC0xMDM4
LDYgKzEwMzAsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5cLi5ccnVudGltZVxPcHRpb25zLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8
RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxPcHRpb25zLmgiCisJCQkJPgor
CQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcUHJv
cGVydHlEZXNjcmlwdG9yLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDViNTEyZDMzZWIyMThkZDY5MmRlN2FmYWM5ZjE4YWZmYTEzYzE5MzQu
LjNhZTJkMjdiMTljOTM4ZmRhZGMxMjZiNTJjOTg0MGUxNTA5OGUyYTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMDQsOCArMTA0LDggQEAKIAkJMEZEODJFODYxNDFGM0ZGMTAw
MTc5Qzk0IC8qIFByZWRpY3RlZFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZEODJFODQxNDFGM0ZEQTAwMTc5Qzk0IC8qIFByZWRpY3RlZFR5
cGUuY3BwICovOyB9OwogCQkwRkQ4MkU5MDE0MjA3QTVGMDAxNzlDOTQgLyogVmFsdWVQcm9maWxl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgy
RThFMTQyMDdBNTEwMDE3OUM5NCAvKiBWYWx1ZVByb2ZpbGUuY3BwICovOyB9OwogCQkwRkQ4MkY0
QjE0MjgwNkExMDAxNzlDOTQgLyogQml0VmVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MkY0OTE0MjgwNjkyMDAxNzlDOTQgLyogQml0VmVj
dG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
MEZFMjI4RUQxNDM2QUIyNzAwMTk2QzQ4IC8qIEhldXJpc3RpY3MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAv
KiBIZXVyaXN0aWNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJMEZFMjI4RUUxNDM2QUIyQzAwMTk2QzQ4IC8qIEhldXJpc3RpY3MuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFMjI4RUExNDM2QUIy
MzAwMTk2QzQ4IC8qIEhldXJpc3RpY3MuY3BwICovOyB9OworCQkwRkUyMjhFRDE0MzZBQjI3MDAx
OTZDNDggLyogT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZFMjI4RUIxNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkUyMjhFRTE0MzZBQjJD
MDAxOTZDNDggLyogT3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkUyMjhFQTE0MzZBQjIzMDAxOTZDNDggLyogT3B0aW9ucy5jcHAgKi87
IH07CiAJCTBGRkY0QkI0MTQzOTU1RTkwMDY1NUJDMCAvKiBERkdTdHJ1Y3R1cmVTZXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkY0QkIyMTQzOTU1
RTYwMDY1NUJDMCAvKiBERkdTdHJ1Y3R1cmVTZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDAwMDY3NzEyQTZGNzgzMDA2NEQxMjMgLyogT1NB
bGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDE0MDAwNjc2MTJBNkY3ODMwMDY0RDEyMyAvKiBPU0FsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0MDAwNjkzMTJBNkY5RTEwMDY0
RDEyMyAvKiBPU0FsbG9jYXRvclBvc2l4LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE0MDAwNjkyMTJBNkY5RTEwMDY0RDEyMyAvKiBPU0FsbG9jYXRv
clBvc2l4LmNwcCAqLzsgfTsKQEAgLTg4NSw4ICs4ODUsOCBAQAogCQkwRkQ4MkU4NDE0MUYzRkRB
MDAxNzlDOTQgLyogUHJlZGljdGVkVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQcmVkaWN0ZWRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEZEODJFOEUxNDIwN0E1MTAwMTc5Qzk0IC8qIFZhbHVlUHJvZmlsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWYWx1ZVByb2ZpbGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkQ4MkY0OTE0MjgwNjkyMDAxNzlDOTQgLyogQml0VmVjdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJpdFZlY3Rvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkwRkUyMjhFQTE0MzZBQjIzMDAxOTZDNDggLyogSGV1cmlz
dGljcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZXVyaXN0aWNz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZFMjI4RUIxNDM2QUIyMzAwMTk2
QzQ4IC8qIEhldXJpc3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGV1
cmlzdGljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkUyMjhFQTE0MzZBQjIz
MDAxOTZDNDggLyogT3B0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBPcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZFMjI4RUIx
NDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZGNEJCMjE0
Mzk1NUU2MDA2NTVCQzAgLyogREZHU3RydWN0dXJlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERGR1N0cnVjdHVyZVNldC5oOyBwYXRoID0gZGZnL0RGR1N0cnVjdHVyZVNl
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDAwMDY3NjEyQTZGNzgzMDA2NEQx
MjMgLyogT1NBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT1NB
bGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQwMDA2OTIxMkE2RjlF
MTAwNjREMTIzIC8qIE9TQWxsb2NhdG9yUG9zaXguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gT1NBbGxvY2F0b3JQb3NpeC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMTA0LDYgKzIxMDQsOCBAQAogCQk3RUY2RTBCQjBFQjdBMUVDMDA3OUFGQUYg
LyogcnVudGltZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi8sCisJ
CQkJMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oICovLAogCQkJ
CUJDRjYwNTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLywKIAkJCQlCQ0Y2MDUx
MjBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovLAogCQkJCUJDMjU3REU1MEUxRjUxQzUw
MDE2QjZDOSAvKiBBcmd1bWVudHMuY3BwICovLApAQCAtMjIzOSw2ICsyMjQxLDggQEAKIAkJCQlC
QzI2ODBDOTBFMTZENEU5MDBBMDZFOTIgLyogT2JqZWN0UHJvdG90eXBlLmggKi8sCiAJCQkJRjY5
MkE4NzcwMjU1NTk3RDAxRkY2MEY3IC8qIE9wZXJhdGlvbnMuY3BwICovLAogCQkJCUY2OTJBODc4
MDI1NTU5N0QwMUZGNjBGNyAvKiBPcGVyYXRpb25zLmggKi8sCisJCQkJMEZFMjI4RUExNDM2QUIy
MzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwICovLAorCQkJCTBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0
OCAvKiBPcHRpb25zLmggKi8sCiAJCQkJQTdGQjYwQTMxMDNGN0RDMjAwMTdBMjg2IC8qIFByb3Bl
cnR5RGVzY3JpcHRvci5jcHAgKi8sCiAJCQkJQTdGQjYwNEIxMDNGNUVBQjAwMTdBMjg2IC8qIFBy
b3BlcnR5RGVzY3JpcHRvci5oICovLAogCQkJCUJDOTU0MzdDMEVCQTcwRkQwMDcyQjZEMyAvKiBQ
cm9wZXJ0eU1hcEhhc2hUYWJsZS5oICovLApAQCAtMjk0NSw3ICsyOTQ5LDcgQEAKIAkJCQkwRjYz
NkRBMDE0MkQyN0Q3MDBCMkU2NkEgLyogUGFja2VkSW50VmVjdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNzUyMUUxMzE0MjkxNjlBMDAzQzhEMEMgLyogQ2FyZFNldC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZENTJBQUUxNDMwMzVBMDAwMjZEQzlGIC8qIFVuaW9uRmluZC5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMEZFMjI4RUQxNDM2QUIyNzAwMTk2QzQ4IC8qIEhldXJpc3RpY3MuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGRTIyOEVEMTQzNkFCMjcwMDE5NkM0OCAvKiBPcHRpb25zLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkZGNEJCNDE0Mzk1NUU5MDA2NTVCQzAgLyogREZHU3RydWN0dXJlU2V0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjA0RjUwNTE0M0NFMUMyMDBCMjk1RjUgLyogSlNHbG9i
YWxUaGlzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYyMDE3NDE0M0ZDRDMzMDA2OEI3N0MgLyog
REZHVmFyaWFibGVBY2Nlc3NEYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTM1MDQsNyArMzUwOCw3
IEBACiAJCQkJODZGQTlFOTExNDJCQkIyRTAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4Njg4MEYxRjE0MzI4QkI5MDBCMDhENDIgLyogREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4Njg4MEY0RDE0MzUzQjIxMDBC
MDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwRkUy
MjhFRTE0MzZBQjJDMDAxOTZDNDggLyogSGV1cmlzdGljcy5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkwRkUyMjhFRTE0MzZBQjJDMDAxOTZDNDggLyogT3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjYyMDE3OTE0M0ZDRDQ4MDA2OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0ZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQzNDNENBMDE0NThGNTQ1MDAyNUZCNjIgLyogSlNHbG9iYWxUaGlz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzA5NzZFMTQ2OEFCNTEwMENGMjQ0MiAvKiBERkdB
c3NlbWJseUhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJp
CmluZGV4IDA5NGUyOWM1NDQxMTk4Nzk5NjI4OWNiNThmMTIxOWMyMzQ2ODU1OWUuLjQ1NDEwMDdm
NmFjOTE5MTRkMTE3NTk0ZjkyMTNhNzc5ZjgxYzIwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQu
cHJpCkBAIC0xNDgsNyArMTQ4LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcnVudGltZS9GdW5jdGlv
blByb3RvdHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBcCiAg
ICAgcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIFwKLSAgICBydW50aW1lL0hldXJpc3RpY3MuY3Bw
IFwKKyAgICBydW50aW1lL09wdGlvbnMuY3BwIFwKICAgICBydW50aW1lL0lkZW50aWZpZXIuY3Bw
IFwKICAgICBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwIFwKICAgICBydW50aW1lL0lu
dGVybmFsRnVuY3Rpb24uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKaW5kZXggODY1MWJmMGZlZDg4NDgzNDcxOWVkOGRmODMwMThiNTM1Zjc4NjYy
ZS4uMmZhNGM3NTY3ZTQ0YzdmY2Y3YzcyNTIxYzIzZmI1YzQwNDFkNWQ5OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTIyMDMsNyArMjIwMyw3
IEBAIGJvb2wgQ29kZUJsb2NrOjpzaG91bGRPcHRpbWl6ZU5vdygpCiAgICAgZHVtcFZhbHVlUHJv
ZmlsZXMoKTsKICNlbmRpZgogCi0gICAgaWYgKG1fb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID49
IEhldXJpc3RpY3M6Om1heGltdW1PcHRpbWl6YXRpb25EZWxheSkKKyAgICBpZiAobV9vcHRpbWl6
YXRpb25EZWxheUNvdW50ZXIgPj0gT3B0aW9uczo6bWF4aW11bU9wdGltaXphdGlvbkRlbGF5KQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICB1bnNpZ25lZCBudW1iZXJPZk5vbkFyZ3Vt
ZW50VmFsdWVQcm9maWxlcyA9IDA7CkBAIC0yMjI5LDkgKzIyMjksOSBAQCBib29sIENvZGVCbG9j
azo6c2hvdWxkT3B0aW1pemVOb3coKQogICAgIHByaW50ZigiUHJvZmlsZSBob3RuZXNzOiAlbGYs
ICVsZlxuIiwgKGRvdWJsZSludW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgLyBu
dW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcywgKGRvdWJsZSludW1iZXJPZlNhbXBsZXNJ
blByb2ZpbGVzIC8gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMgLyBudW1iZXJPZlZhbHVl
UHJvZmlsZXMoKSk7CiAjZW5kaWYKIAotICAgIGlmICgoIW51bWJlck9mTm9uQXJndW1lbnRWYWx1
ZVByb2ZpbGVzIHx8IChkb3VibGUpbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVz
IC8gbnVtYmVyT2ZOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPj0gSGV1cmlzdGljczo6ZGVzaXJl
ZFByb2ZpbGVMaXZlbmVzc1JhdGUpCi0gICAgICAgICYmICghbnVtYmVyT2ZWYWx1ZVByb2ZpbGVz
KCkgfHwgKGRvdWJsZSludW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzIC8gVmFsdWVQcm9maWxlOjpu
dW1iZXJPZkJ1Y2tldHMgLyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSA+PSBIZXVyaXN0aWNzOjpk
ZXNpcmVkUHJvZmlsZUZ1bGxuZXNzUmF0ZSkKLSAgICAgICAgJiYgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG1fb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKSArIDEgPj0gSGV1cmlzdGljczo6bWluaW11
bU9wdGltaXphdGlvbkRlbGF5KQorICAgIGlmICgoIW51bWJlck9mTm9uQXJndW1lbnRWYWx1ZVBy
b2ZpbGVzIHx8IChkb3VibGUpbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzIC8g
bnVtYmVyT2ZOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPj0gT3B0aW9uczo6ZGVzaXJlZFByb2Zp
bGVMaXZlbmVzc1JhdGUpCisgICAgICAgICYmICghbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkgfHwg
KGRvdWJsZSludW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzIC8gVmFsdWVQcm9maWxlOjpudW1iZXJP
ZkJ1Y2tldHMgLyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSA+PSBPcHRpb25zOjpkZXNpcmVkUHJv
ZmlsZUZ1bGxuZXNzUmF0ZSkKKyAgICAgICAgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fb3B0
aW1pemF0aW9uRGVsYXlDb3VudGVyKSArIDEgPj0gT3B0aW9uczo6bWluaW11bU9wdGltaXphdGlv
bkRlbGF5KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBBU1NFUlQobV9vcHRpbWl6
YXRpb25EZWxheUNvdW50ZXIgPCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ4X3Q+OjptYXgoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggYTM2MDVj
OWJlOTZkNGM2NjliODljODk1NTFkMDIyZmZiMmZhNzQwZC4uODk5MWZjNWUwYWM1MGMzYzJlNTJk
MzIzYzFmZDI1NzU4NWI1ODM4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIkRGR09TUkVudHJ5LmgiCiAj
aW5jbHVkZSAiREZHT1NSRXhpdC5oIgogI2luY2x1ZGUgIkV2YWxDb2RlQ2FjaGUuaCIKLSNpbmNs
dWRlICJIZXVyaXN0aWNzLmgiCisjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgIkluc3Ry
dWN0aW9uLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFdyaXRlQmFycmll
ci5oIgpAQCAtNjc3LDEzICs2NzcsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wg
bGlrZWx5VG9UYWtlU2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CiAgICAg
ICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0
KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwotICAgICAgICAgICAgcmV0dXJuIHZhbHVlID49
IEhldXJpc3RpY3M6Omxpa2VseVRvVGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19j
YXN0PGRvdWJsZT4odmFsdWUpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49IEhldXJpc3RpY3M6
Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOworICAgICAgICAgICAgcmV0dXJuIHZhbHVl
ID49IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19j
YXN0PGRvdWJsZT4odmFsdWUpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49IE9wdGlvbnM6Omxp
a2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICBib29sIGNvdWxkVGFrZVNsb3dDYXNlKGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgewog
ICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9m
ZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKLSAgICAgICAgICAgIHJldHVybiB2YWx1
ZSA+PSBIZXVyaXN0aWNzOjpjb3VsZFRha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNf
Y2FzdDxkb3VibGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBIZXVyaXN0aWNz
Ojpjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZDsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+
PSBPcHRpb25zOjpjb3VsZFRha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxk
b3VibGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25zOjpjb3VsZFRh
a2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgUmFyZUNh
c2VQcm9maWxlKiBhZGRTcGVjaWFsRmFzdENhc2VQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkK
QEAgLTcwMSw3ICs3MDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBsaWtlbHlU
b1Rha2VTcGVjaWFsRmFzdENhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CiAgICAg
ICAgICAgICB1bnNpZ25lZCBzcGVjaWFsRmFzdENhc2VDb3VudCA9IHNwZWNpYWxGYXN0Q2FzZVBy
b2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKLSAgICAg
ICAgICAgIHJldHVybiBzcGVjaWFsRmFzdENhc2VDb3VudCA+PSBIZXVyaXN0aWNzOjpsaWtlbHlU
b1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+KHNwZWNpYWxG
YXN0Q2FzZUNvdW50KSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBIZXVyaXN0aWNzOjpsaWtl
bHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKKyAgICAgICAgICAgIHJldHVybiBzcGVjaWFsRmFz
dENhc2VDb3VudCA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCAm
JiBzdGF0aWNfY2FzdDxkb3VibGU+KHNwZWNpYWxGYXN0Q2FzZUNvdW50KSAvIG1fZXhlY3V0aW9u
RW50cnlDb3VudCA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VEZWVwZXN0U2xvd0Nh
c2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQpAQCAtNzA5LDcgKzcwOSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgdW5zaWduZWQgc2xvd0Nhc2VDb3VudCA9IHJhcmVDYXNlUHJvZmlsZUZv
ckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAg
dW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1
bnNpZ25lZCB2YWx1ZSA9IHNsb3dDYXNlQ291bnQgLSBzcGVjaWFsRmFzdENhc2VDb3VudDsKLSAg
ICAgICAgICAgIHJldHVybiB2YWx1ZSA+PSBIZXVyaXN0aWNzOjpsaWtlbHlUb1Rha2VTbG93Q2Fz
ZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9u
RW50cnlDb3VudCA+PSBIZXVyaXN0aWNzOjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsK
KyAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93Q2Fz
ZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9u
RW50cnlDb3VudCA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VBbnlTbG93Q2FzZShp
bnQgYnl0ZWNvZGVPZmZzZXQpCkBAIC03MTcsNyArNzE3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICB1bnNpZ25lZCBzbG93Q2FzZUNvdW50ID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNp
Z25lZCBzcGVjaWFsRmFzdENhc2VDb3VudCA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRl
Y29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2ln
bmVkIHZhbHVlID0gc2xvd0Nhc2VDb3VudCArIHNwZWNpYWxGYXN0Q2FzZUNvdW50OwotICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlID49IEhldXJpc3RpY3M6Omxpa2VseVRvVGFrZVNsb3dDYXNlTWlu
aW11bUNvdW50ICYmIHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpIC8gbV9leGVjdXRpb25FbnRy
eUNvdW50ID49IEhldXJpc3RpY3M6Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOworICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlID49IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlTWlu
aW11bUNvdW50ICYmIHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpIC8gbV9leGVjdXRpb25FbnRy
eUNvdW50ID49IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCBleGVjdXRpb25FbnRyeUNvdW50KCkgY29u
c3QgeyByZXR1cm4gbV9leGVjdXRpb25FbnRyeUNvdW50OyB9CkBAIC05MTksMjUgKzkxOSwyNSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gdG8gYXZvaWQgdGhyYXNoaW5nLgogICAgICAg
ICB1bnNpZ25lZCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpIGNvbnN0CiAgICAgICAgIHsK
LSAgICAgICAgICAgIEFTU0VSVChtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyIDw9IEhldXJp
c3RpY3M6OnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4KTsKKyAgICAgICAgICAgIEFTU0VS
VChtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyIDw9IE9wdGlvbnM6OnJlb3B0aW1pemF0aW9u
UmV0cnlDb3VudGVyTWF4KTsKICAgICAgICAgICAgIHJldHVybiBtX3Jlb3B0aW1pemF0aW9uUmV0
cnlDb3VudGVyOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB2b2lkIGNvdW50UmVvcHRp
bWl6YXRpb24oKQogICAgICAgICB7CiAgICAgICAgICAgICBtX3Jlb3B0aW1pemF0aW9uUmV0cnlD
b3VudGVyKys7Ci0gICAgICAgICAgICBpZiAobV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA+
IEhldXJpc3RpY3M6OnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4KQotICAgICAgICAgICAg
ICAgIG1fcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSBIZXVyaXN0aWNzOjpyZW9wdGltaXph
dGlvblJldHJ5Q291bnRlck1heDsKKyAgICAgICAgICAgIGlmIChtX3Jlb3B0aW1pemF0aW9uUmV0
cnlDb3VudGVyID4gT3B0aW9uczo6cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXgpCisgICAg
ICAgICAgICAgICAgbV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA9IE9wdGlvbnM6OnJlb3B0
aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBp
bnQzMl90IGNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAoKQogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gSGV1cmlzdGljczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0
aW1pemVBZnRlcldhcm1VcCA8PCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpOworICAgICAg
ICAgICAgcmV0dXJuIE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0
ZXJXYXJtVXAgPDwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKTsKICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgaW50MzJfdCBjb3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dh
cm1VcCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBIZXVyaXN0aWNzOjpleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCA8PCByZW9wdGltaXphdGlv
blJldHJ5Q291bnRlcigpOworICAgICAgICAgICAgcmV0dXJuIE9wdGlvbnM6OmV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwIDw8IHJlb3B0aW1pemF0aW9uUmV0
cnlDb3VudGVyKCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGludDMyX3QqIGFkZHJl
c3NPZkV4ZWN1dGVDb3VudGVyKCkKQEAgLTk1Niw3ICs5NTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgLy8gZXhwZW5zaXZlIHRoYW4gZXhlY3V0aW5nIGJhc2VsaW5lIGNvZGUuCiAgICAg
ICAgIHZvaWQgb3B0aW1pemVOZXh0SW52b2NhdGlvbigpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IG1fZXhlY3V0ZUNvdW50ZXIgPSBIZXVyaXN0aWNzOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JP
cHRpbWl6ZU5leHRJbnZvY2F0aW9uOworICAgICAgICAgICAgbV9leGVjdXRlQ291bnRlciA9IE9w
dGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplTmV4dEludm9jYXRpb247CiAg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIENhbGwgdGhpcyB0byBwcmV2ZW50IG9wdGlt
aXphdGlvbiBmcm9tIGhhcHBlbmluZyBhZ2Fpbi4gTm90ZSB0aGF0CkBAIC05NjYsNyArOTY2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIHRoZSBmdXR1cmUgYXMgd2VsbC4KICAgICAg
ICAgdm9pZCBkb250T3B0aW1pemVBbnl0aW1lU29vbigpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IG1fZXhlY3V0ZUNvdW50ZXIgPSBIZXVyaXN0aWNzOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JE
b250T3B0aW1pemVBbnl0aW1lU29vbjsKKyAgICAgICAgICAgIG1fZXhlY3V0ZUNvdW50ZXIgPSBP
cHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbjsK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gQ2FsbCB0aGlzIHRvIHJlaW5pdGlhbGl6
ZSB0aGUgY291bnRlciB0byBpdHMgc3RhcnRpbmcgc3RhdGUsCkBAIC0xMDA3LDcgKzEwMDcsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gaW4gdGhlIGJhc2VsaW5lIGNvZGUuCiAgICAg
ICAgIHZvaWQgb3B0aW1pemVTb29uKCkKICAgICAgICAgewotICAgICAgICAgICAgbV9leGVjdXRl
Q291bnRlciA9IEhldXJpc3RpY3M6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29v
biA8PCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpOworICAgICAgICAgICAgbV9leGVjdXRl
Q291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbiA8
PCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpOwogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICAvLyBUaGUgc3BlY3VsYXRpdmUgSklUIHRyYWNrcyBpdHMgc3VjY2VzcyByYXRlLCBzbyB0
aGF0IHdlIGNhbgpAQCAtMTA0MSwxNyArMTA0MSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lm
IEVOQUJMRShKSVQpCiAgICAgICAgIC8vIFRoZSBudW1iZXIgb2YgZmFpbHVyZXMgdGhhdCB0cmln
Z2VycyB0aGUgdXNlIG9mIHRoZSByYXRpby4KLSAgICAgICAgdW5zaWduZWQgbGFyZ2VGYWlsQ291
bnRUaHJlc2hvbGQoKSB7IHJldHVybiBIZXVyaXN0aWNzOjpsYXJnZUZhaWxDb3VudFRocmVzaG9s
ZEJhc2UgPDwgYmFzZWxpbmVWZXJzaW9uKCktPnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCk7
IH0KLSAgICAgICAgdW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRGb3JMb29wKCkgeyBy
ZXR1cm4gSGV1cmlzdGljczo6bGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlRm9yTG9vcCA8PCBi
YXNlbGluZVZlcnNpb24oKS0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKTsgfQorICAgICAg
ICB1bnNpZ25lZCBsYXJnZUZhaWxDb3VudFRocmVzaG9sZCgpIHsgcmV0dXJuIE9wdGlvbnM6Omxh
cmdlRmFpbENvdW50VGhyZXNob2xkQmFzZSA8PCBiYXNlbGluZVZlcnNpb24oKS0+cmVvcHRpbWl6
YXRpb25SZXRyeUNvdW50ZXIoKTsgfQorICAgICAgICB1bnNpZ25lZCBsYXJnZUZhaWxDb3VudFRo
cmVzaG9sZEZvckxvb3AoKSB7IHJldHVybiBPcHRpb25zOjpsYXJnZUZhaWxDb3VudFRocmVzaG9s
ZEJhc2VGb3JMb29wIDw8IGJhc2VsaW5lVmVyc2lvbigpLT5yZW9wdGltaXphdGlvblJldHJ5Q291
bnRlcigpOyB9CiAKICAgICAgICAgYm9vbCBzaG91bGRSZW9wdGltaXplTm93KCkKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIEhldXJpc3RpY3M6OmRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nl
c3NGYWlsUmF0aW8gKiBzcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkgPj0gc3BlY3VsYXRpdmVTdWNj
ZXNzQ291bnRlcigpICYmIHNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSA+PSBsYXJnZUZhaWxDb3Vu
dFRocmVzaG9sZCgpOworICAgICAgICAgICAgcmV0dXJuIE9wdGlvbnM6OmRlc2lyZWRTcGVjdWxh
dGl2ZVN1Y2Nlc3NGYWlsUmF0aW8gKiBzcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkgPj0gc3BlY3Vs
YXRpdmVTdWNjZXNzQ291bnRlcigpICYmIHNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSA+PSBsYXJn
ZUZhaWxDb3VudFRocmVzaG9sZCgpOwogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBzaG91bGRS
ZW9wdGltaXplRnJvbUxvb3BOb3coKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gSGV1
cmlzdGljczo6ZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbyAqIHNwZWN1bGF0aXZl
RmFpbENvdW50ZXIoKSA+PSBzcGVjdWxhdGl2ZVN1Y2Nlc3NDb3VudGVyKCkgJiYgc3BlY3VsYXRp
dmVGYWlsQ291bnRlcigpID49IGxhcmdlRmFpbENvdW50VGhyZXNob2xkRm9yTG9vcCgpOworICAg
ICAgICAgICAgcmV0dXJuIE9wdGlvbnM6OmRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0
aW8gKiBzcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkgPj0gc3BlY3VsYXRpdmVTdWNjZXNzQ291bnRl
cigpICYmIHNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSA+PSBsYXJnZUZhaWxDb3VudFRocmVzaG9s
ZEZvckxvb3AoKTsKICAgICAgICAgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggN2UyNjc3OTY0Mjg5YWQ1M2QzMjk5
OGI5NjdkY2Q5N2NmMTI0N2UzZC4uNzE1ZmIzYTExZDNjMWQyY2EzN2VhNTU3ZTJjNDdkNDdlOTEz
N2I2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKQEAgLTk2Nyw3ICs5NjcsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxp
bmluZyhib29sIHVzZXNSZXN1bHQsIGludCBjYWxsVGFyZ2V0LCBOb2RlSW5kZXggYwogICAgIHVu
c2lnbmVkIGRlcHRoID0gMDsKICAgICBmb3IgKElubGluZVN0YWNrRW50cnkqIGVudHJ5ID0gbV9p
bmxpbmVTdGFja1RvcDsgZW50cnk7IGVudHJ5ID0gZW50cnktPm1fY2FsbGVyKSB7CiAgICAgICAg
ICsrZGVwdGg7Ci0gICAgICAgIGlmIChkZXB0aCA+PSBIZXVyaXN0aWNzOjptYXhpbXVtSW5saW5p
bmdEZXB0aCkKKyAgICAgICAgaWYgKGRlcHRoID49IE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ0Rl
cHRoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBEZXB0aCBleGNlZWRlZC4KICAgICAg
ICAgCiAgICAgICAgIGlmIChlbnRyeS0+ZXhlY3V0YWJsZSgpID09IGV4ZWN1dGFibGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAppbmRleCAwZjcwYWE0M2Iy
MzA4MmZhMWNhZTE4NDdhOGI1ZmE5ZjlhOGRkYmVjLi4yNjUzYzczYjAwZTg0ZmU1YWNkNDQwNDkw
NzJjMDI0MWExNzJlMTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJp
bGl0aWVzLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNs
dWRlICJERkdOb2RlLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgotI2luY2x1ZGUgIkhldXJp
c3RpY3MuaCIKKyNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIK
ICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIApAQCAtNDAsMjggKzQwLDI4IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIC8vIGNoZWNrIG9wY29kZXMuCiBpbmxpbmUgYm9vbCBt
aWdodENvbXBpbGVFdmFsKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIHJldHVybiBjb2Rl
QmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBIZXVyaXN0aWNzOjptYXhpbXVtT3B0aW1pemF0
aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKKyAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0
cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9uczo6bWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUlu
c3RydWN0aW9uQ291bnQ7CiB9CiBpbmxpbmUgYm9vbCBtaWdodENvbXBpbGVQcm9ncmFtKENvZGVC
bG9jayogY29kZUJsb2NrKQogewotICAgIHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291
bnQoKSA8PSBIZXVyaXN0aWNzOjptYXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rp
b25Db3VudDsKKyAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0
aW9uczo6bWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CiB9CiBp
bmxpbmUgYm9vbCBtaWdodENvbXBpbGVGdW5jdGlvbkZvckNhbGwoQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCiB7Ci0gICAgcmV0dXJuIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IEhldXJp
c3RpY3M6Om1heGltdW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OworICAg
IHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBPcHRpb25zOjptYXhpbXVt
T3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKIH0KIGlubGluZSBib29sIG1p
Z2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ29uc3RydWN0KENvZGVCbG9jayogY29kZUJsb2NrKQogewot
ICAgIHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBIZXVyaXN0aWNzOjpt
YXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKKyAgICByZXR1cm4g
Y29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9uczo6bWF4aW11bU9wdGltaXph
dGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CiB9CiAKIGlubGluZSBib29sIG1pZ2h0SW5s
aW5lRnVuY3Rpb25Gb3JDYWxsKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIHJldHVybiBj
b2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBIZXVyaXN0aWNzOjptYXhpbXVtRnVuY3Rp
b25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKKyAgICByZXR1cm4gY29k
ZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9y
Q2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CiB9CiBpbmxpbmUgYm9vbCBtaWdo
dElubGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0KENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAg
IHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBIZXVyaXN0aWNzOjptYXhp
bXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50Owor
ICAgIHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBPcHRpb25zOjptYXhp
bXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50Owog
fQogCiAvLyBPcGNvZGUgY2hlY2tpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCmluZGV4IDZmZmQ4MDNhYTU3NTVhNzZj
MDYxZGY4NjkxZGZmMzA3NThhYmQyNWQuLmVlNTgwYWNlZDBkMjQwZTIwYTBhZTY0MjE5YzA2ZTRm
NzY1M2RlMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dENvbXBpbGVyMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdENvbXBpbGVyMzJfNjQuY3BwCkBAIC00NjMsMTIgKzQ2MywxMiBAQCB2b2lkIE9TUkV4aXRD
b21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgT1NSRXhpdCYgZXhpdCwgU3BlY3VsYXRpb25SZWNv
dmVyeSogcmVjbwogICAgIG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KG1faml0LmJhc2VsaW5lQ29kZUJsb2NrKCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgCiAgICAg
QXNzZW1ibHlIZWxwZXJzOjpKdW1wIGZld0ZhaWxzID0gbV9qaXQuYnJhbmNoMzIoQXNzZW1ibHlI
ZWxwZXJzOjpCZWxvd09yRXF1YWwsIEdQUkluZm86OnJlZ1QyLCBBc3NlbWJseUhlbHBlcnM6Oklt
bTMyKG1faml0LmNvZGVCbG9jaygpLT5sYXJnZUZhaWxDb3VudFRocmVzaG9sZCgpKSk7Ci0gICAg
bV9qaXQubXVsMzIoQXNzZW1ibHlIZWxwZXJzOjpJbW0zMihIZXVyaXN0aWNzOjpkZXNpcmVkU3Bl
Y3VsYXRpdmVTdWNjZXNzRmFpbFJhdGlvKSwgR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OnJlZ1Qy
KTsKKyAgICBtX2ppdC5tdWwzMihBc3NlbWJseUhlbHBlcnM6OkltbTMyKE9wdGlvbnM6OmRlc2ly
ZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW8pLCBHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6
cmVnVDIpOwogICAgIAogICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCBsb3dGYWlsUmF0ZSA9IG1f
aml0LmJyYW5jaDMyKEFzc2VtYmx5SGVscGVyczo6QmVsb3dPckVxdWFsLCBHUFJJbmZvOjpyZWdU
MiwgR1BSSW5mbzo6cmVnVDEpOwogICAgIAogICAgIC8vIFJlb3B0aW1pemUgYXMgc29vbiBhcyBw
b3NzaWJsZS4KLSAgICBtX2ppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6SW1tMzIoSGV1cmlz
dGljczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVOZXh0SW52b2NhdGlvbiksIEFz
c2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRP
ZkV4ZWN1dGVDb3VudGVyKCkpKTsKKyAgICBtX2ppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6
SW1tMzIoT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVOZXh0SW52b2Nh
dGlvbiksIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2Nr
OjpvZmZzZXRPZkV4ZWN1dGVDb3VudGVyKCkpKTsKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAg
ZG9uZUFkanVzdGluZyA9IG1faml0Lmp1bXAoKTsKICAgICAKICAgICBmZXdGYWlscy5saW5rKCZt
X2ppdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRD
b21waWxlcjY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBp
bGVyNjQuY3BwCmluZGV4IDU2ZmIxMzQ0ZTI5OGZjYTY3Y2UxNjNmMDViMWFlZTg5MDkyZDdkYjcu
LjQ1MmVmNTQxYTQ0MGUxNzhhY2JkOGYzNTBmMmUwNzIwYmM5OGFlZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCkBAIC00NzMs
MTIgKzQ3MywxMiBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgT1NS
RXhpdCYgZXhpdCwgU3BlY3VsYXRpb25SZWNvdmVyeSogcmVjbwogICAgIG1faml0Lm1vdmUoQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1faml0LmJhc2VsaW5lQ29kZUJsb2NrKCkpLCBH
UFJJbmZvOjpyZWdUMCk7CiAgICAgCiAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIGZld0ZhaWxz
ID0gbV9qaXQuYnJhbmNoMzIoQXNzZW1ibHlIZWxwZXJzOjpCZWxvd09yRXF1YWwsIEdQUkluZm86
OnJlZ1QyLCBBc3NlbWJseUhlbHBlcnM6OkltbTMyKG1faml0LmNvZGVCbG9jaygpLT5sYXJnZUZh
aWxDb3VudFRocmVzaG9sZCgpKSk7Ci0gICAgbV9qaXQubXVsMzIoQXNzZW1ibHlIZWxwZXJzOjpJ
bW0zMihIZXVyaXN0aWNzOjpkZXNpcmVkU3BlY3VsYXRpdmVTdWNjZXNzRmFpbFJhdGlvKSwgR1BS
SW5mbzo6cmVnVDIsIEdQUkluZm86OnJlZ1QyKTsKKyAgICBtX2ppdC5tdWwzMihBc3NlbWJseUhl
bHBlcnM6OkltbTMyKE9wdGlvbnM6OmRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW8p
LCBHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6cmVnVDIpOwogICAgIAogICAgIEFzc2VtYmx5SGVs
cGVyczo6SnVtcCBsb3dGYWlsUmF0ZSA9IG1faml0LmJyYW5jaDMyKEFzc2VtYmx5SGVscGVyczo6
QmVsb3dPckVxdWFsLCBHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6cmVnVDEpOwogICAgIAogICAg
IC8vIFJlb3B0aW1pemUgYXMgc29vbiBhcyBwb3NzaWJsZS4KLSAgICBtX2ppdC5zdG9yZTMyKEFz
c2VtYmx5SGVscGVyczo6SW1tMzIoSGV1cmlzdGljczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
T3B0aW1pemVOZXh0SW52b2NhdGlvbiksIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZv
OjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkV4ZWN1dGVDb3VudGVyKCkpKTsKKyAgICBtX2pp
dC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6SW1tMzIoT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRl
clZhbHVlRm9yT3B0aW1pemVOZXh0SW52b2NhdGlvbiksIEFzc2VtYmx5SGVscGVyczo6QWRkcmVz
cyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkV4ZWN1dGVDb3VudGVyKCkpKTsK
ICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgZG9uZUFkanVzdGluZyA9IG1faml0Lmp1bXAoKTsK
ICAgICAKICAgICBmZXdGYWlscy5saW5rKCZtX2ppdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya1N0YWNrLmNwcAppbmRleCAzZjRmZGE3NmNjNGUzNzFmNzRkNmRjYzczNWM5YjkzODQ2
M2VmOWQ1Li5kZDBlNmZkNTdhYWRkMzAyZWQ1NzdiYTQ5MjI2YjA1ZTZlODE3YzdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAog
I2luY2x1ZGUgIkNvbnNlcnZhdGl2ZVJvb3RzLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1
ZGUgIkhldXJpc3RpY3MuaCIKKyNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiSlNBcnJh
eS5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCkBAIC02MCw3
ICs2MCw3IEBAIE1hcmtTdGFja1NlZ21lbnQqIE1hcmtTdGFja1NlZ21lbnRBbGxvY2F0b3I6OmFs
bG9jYXRlKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxNYXJr
U3RhY2tTZWdtZW50Kj4oT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoSGV1cmlzdGljczo6
Z2NNYXJrU3RhY2tTZWdtZW50U2l6ZSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxNYXJrU3Rh
Y2tTZWdtZW50Kj4oT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoT3B0aW9uczo6Z2NNYXJr
U3RhY2tTZWdtZW50U2l6ZSkpOwogfQogCiB2b2lkIE1hcmtTdGFja1NlZ21lbnRBbGxvY2F0b3I6
OnJlbGVhc2UoTWFya1N0YWNrU2VnbWVudCogc2VnbWVudCkKQEAgLTgxLDEzICs4MSwxMyBAQCB2
b2lkIE1hcmtTdGFja1NlZ21lbnRBbGxvY2F0b3I6OnNocmlua1Jlc2VydmUoKQogICAgIHdoaWxl
IChzZWdtZW50cykgewogICAgICAgICBNYXJrU3RhY2tTZWdtZW50KiB0b0ZyZWUgPSBzZWdtZW50
czsKICAgICAgICAgc2VnbWVudHMgPSBzZWdtZW50cy0+bV9wcmV2aW91czsKLSAgICAgICAgT1NB
bGxvY2F0b3I6OmRlY29tbWl0QW5kUmVsZWFzZSh0b0ZyZWUsIEhldXJpc3RpY3M6OmdjTWFya1N0
YWNrU2VnbWVudFNpemUpOworICAgICAgICBPU0FsbG9jYXRvcjo6ZGVjb21taXRBbmRSZWxlYXNl
KHRvRnJlZSwgT3B0aW9uczo6Z2NNYXJrU3RhY2tTZWdtZW50U2l6ZSk7CiAgICAgfQogfQogCiBN
YXJrU3RhY2tBcnJheTo6TWFya1N0YWNrQXJyYXkoTWFya1N0YWNrU2VnbWVudEFsbG9jYXRvciYg
YWxsb2NhdG9yKQogICAgIDogbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQotICAgICwgbV9zZWdtZW50
Q2FwYWNpdHkoTWFya1N0YWNrU2VnbWVudDo6Y2FwYWNpdHlGcm9tU2l6ZShIZXVyaXN0aWNzOjpn
Y01hcmtTdGFja1NlZ21lbnRTaXplKSkKKyAgICAsIG1fc2VnbWVudENhcGFjaXR5KE1hcmtTdGFj
a1NlZ21lbnQ6OmNhcGFjaXR5RnJvbVNpemUoT3B0aW9uczo6Z2NNYXJrU3RhY2tTZWdtZW50U2l6
ZSkpCiAgICAgLCBtX3RvcCgwKQogICAgICwgbV9udW1iZXJPZlByZXZpb3VzU2VnbWVudHMoMCkK
IHsKQEAgLTE0NSwxMCArMTQ1LDEwIEBAIGJvb2wgTWFya1N0YWNrQXJyYXk6OmRvbmF0ZVNvbWVD
ZWxsc1RvKE1hcmtTdGFja0FycmF5JiBvdGhlcikKICAgICBvdGhlci52YWxpZGF0ZVByZXZpb3Vz
KCk7CiAgICAgICAgIAogICAgIC8vIEZhc3QgY2hlY2s6IHNlZSBpZiB0aGUgb3RoZXIgbWFyayBz
dGFjayBhbHJlYWR5IGhhcyBlbm91Z2ggc2VnbWVudHMuCi0gICAgaWYgKG90aGVyLm1fbnVtYmVy
T2ZQcmV2aW91c1NlZ21lbnRzICsgMSA+PSBIZXVyaXN0aWNzOjptYXhpbXVtTnVtYmVyT2ZTaGFy
ZWRTZWdtZW50cykKKyAgICBpZiAob3RoZXIubV9udW1iZXJPZlByZXZpb3VzU2VnbWVudHMgKyAx
ID49IE9wdGlvbnM6Om1heGltdW1OdW1iZXJPZlNoYXJlZFNlZ21lbnRzKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIAotICAgIHNpemVfdCBudW1iZXJPZkNlbGxzVG9LZWVwID0gSGV1
cmlzdGljczo6bWluaW11bU51bWJlck9mQ2VsbHNUb0tlZXA7CisgICAgc2l6ZV90IG51bWJlck9m
Q2VsbHNUb0tlZXAgPSBPcHRpb25zOjptaW5pbXVtTnVtYmVyT2ZDZWxsc1RvS2VlcDsKICAgICBB
U1NFUlQobV90b3AgPiBudW1iZXJPZkNlbGxzVG9LZWVwIHx8IG1fdG9wU2VnbWVudC0+bV9wcmV2
aW91cyk7CiAgICAgICAgIAogICAgIC8vIExvb2tzIGxpa2Ugd2Ugc2hvdWxkIGRvbmF0ZSEgR2l2
ZSB0aGUgb3RoZXIgbWFyayBzdGFjayBhbGwgb2Ygb3VyCkBAIC0yMDksOCArMjA5LDggQEAgdm9p
ZCBNYXJrU3RhY2tBcnJheTo6c3RlYWxTb21lQ2VsbHNGcm9tKE1hcmtTdGFja0FycmF5JiBvdGhl
cikKICAgICB9CiAgICAgICAgIAogICAgIC8vIE90aGVyd2lzZSBkcmFpbiAxL050aCBvZiB0aGUg
c2hhcmVkIGFycmF5IHdoZXJlIE4gaXMgdGhlIG51bWJlciBvZgotICAgIC8vIHdvcmtlcnMsIG9y
IEhldXJpc3RpY3M6Om1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVwLCB3aGljaGV2ZXIgaXMgYmln
Z2VyLgotICAgIHNpemVfdCBudW1iZXJPZkNlbGxzVG9TdGVhbCA9IHN0ZDo6bWF4KChzaXplX3Qp
SGV1cmlzdGljczo6bWluaW11bU51bWJlck9mQ2VsbHNUb0tlZXAsIG90aGVyLnNpemUoKSAvIEhl
dXJpc3RpY3M6Om51bWJlck9mR0NNYXJrZXJzKTsKKyAgICAvLyB3b3JrZXJzLCBvciBPcHRpb25z
OjptaW5pbXVtTnVtYmVyT2ZDZWxsc1RvS2VlcCwgd2hpY2hldmVyIGlzIGJpZ2dlci4KKyAgICBz
aXplX3QgbnVtYmVyT2ZDZWxsc1RvU3RlYWwgPSBzdGQ6Om1heCgoc2l6ZV90KU9wdGlvbnM6Om1p
bmltdW1OdW1iZXJPZkNlbGxzVG9LZWVwLCBvdGhlci5zaXplKCkgLyBPcHRpb25zOjpudW1iZXJP
ZkdDTWFya2Vycyk7CiAgICAgd2hpbGUgKG51bWJlck9mQ2VsbHNUb1N0ZWFsLS0gPiAwICYmIG90
aGVyLmNhblJlbW92ZUxhc3QoKSkKICAgICAgICAgYXBwZW5kKG90aGVyLnJlbW92ZUxhc3QoKSk7
CiB9CkBAIC0yMzgsNyArMjM4LDcgQEAgTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YTo6TWFya1N0
YWNrVGhyZWFkU2hhcmVkRGF0YShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiAgICAgLCBtX3Bh
cmFsbGVsTWFya2Vyc1Nob3VsZEV4aXQoZmFsc2UpCiB7CiAjaWYgRU5BQkxFKFBBUkFMTEVMX0dD
KQotICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBIZXVyaXN0aWNzOjpudW1iZXJPZkdDTWFy
a2VyczsgKytpKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IE9wdGlvbnM6Om51bWJl
ck9mR0NNYXJrZXJzOyArK2kpIHsKICAgICAgICAgbV9tYXJraW5nVGhyZWFkcy5hcHBlbmQoY3Jl
YXRlVGhyZWFkKG1hcmtpbmdUaHJlYWRTdGFydEZ1bmMsIHRoaXMsICJKYXZhU2NyaXB0Q29yZTo6
TWFya2luZyIpKTsKICAgICAgICAgQVNTRVJUKG1fbWFya2luZ1RocmVhZHMubGFzdCgpKTsKICAg
ICB9CkBAIC0zMjksNyArMzI5LDcgQEAgdm9pZCBTbG90VmlzaXRvcjo6ZG9uYXRlU2xvdygpCiAg
ICAgaWYgKG1fc3RhY2suZG9uYXRlU29tZUNlbGxzVG8obV9zaGFyZWQubV9zaGFyZWRNYXJrU3Rh
Y2spKSB7CiAgICAgICAgIC8vIE9ubHkgd2FrZSB1cCB0aHJlYWRzIGlmIHRoZSBzaGFyZWQgc3Rh
Y2sgaXMgYmlnIGVub3VnaDsgb3RoZXJ3aXNlIGFzc3VtZSB0aGF0CiAgICAgICAgIC8vIGl0J3Mg
bW9yZSBwcm9maXRhYmxlIGZvciB1cyB0byBqdXN0IHNjYW4gdGhpcyBvdXJzZWx2ZXMgbGF0ZXIu
Ci0gICAgICAgIGlmIChtX3NoYXJlZC5tX3NoYXJlZE1hcmtTdGFjay5zaXplKCkgPj0gSGV1cmlz
dGljczo6c2hhcmVkU3RhY2tXYWtldXBUaHJlc2hvbGQpCisgICAgICAgIGlmIChtX3NoYXJlZC5t
X3NoYXJlZE1hcmtTdGFjay5zaXplKCkgPj0gT3B0aW9uczo6c2hhcmVkU3RhY2tXYWtldXBUaHJl
c2hvbGQpCiAgICAgICAgICAgICBtX3NoYXJlZC5tX21hcmtpbmdDb25kaXRpb24uYnJvYWRjYXN0
KCk7CiAgICAgfQogfQpAQCAtMzQzLDEwICszNDMsMTAgQEAgdm9pZCBTbG90VmlzaXRvcjo6ZHJh
aW4oKQogICAgIHZvaWQqIGpzU3RyaW5nVlB0ciA9IG1fanNTdHJpbmdWUHRyOwogCiAjaWYgRU5B
QkxFKFBBUkFMTEVMX0dDKQotICAgIGlmIChIZXVyaXN0aWNzOjpudW1iZXJPZkdDTWFya2VycyA+
IDEpIHsKKyAgICBpZiAoT3B0aW9uczo6bnVtYmVyT2ZHQ01hcmtlcnMgPiAxKSB7CiAgICAgICAg
IHdoaWxlICghbV9zdGFjay5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIG1fc3RhY2sucmVmaWxs
KCk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGNvdW50ZG93biA9IEhldXJpc3RpY3M6Om1p
bmltdW1OdW1iZXJPZlNjYW5zQmV0d2VlblJlYmFsYW5jZTsgbV9zdGFjay5jYW5SZW1vdmVMYXN0
KCkgJiYgY291bnRkb3duLS07KQorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBjb3VudGRvd24g
PSBPcHRpb25zOjptaW5pbXVtTnVtYmVyT2ZTY2Fuc0JldHdlZW5SZWJhbGFuY2U7IG1fc3RhY2su
Y2FuUmVtb3ZlTGFzdCgpICYmIGNvdW50ZG93bi0tOykKICAgICAgICAgICAgICAgICB2aXNpdENo
aWxkcmVuKCp0aGlzLCBtX3N0YWNrLnJlbW92ZUxhc3QoKSwganNGaW5hbE9iamVjdFZQdHIsIGpz
QXJyYXlWUHRyLCBqc1N0cmluZ1ZQdHIpOwogICAgICAgICAgICAgZG9uYXRlS25vd25QYXJhbGxl
bCgpOwogICAgICAgICB9CkBAIC0zNjcsMTQgKzM2NywxNCBAQCB2b2lkIFNsb3RWaXNpdG9yOjpk
cmFpbkZyb21TaGFyZWQoU2hhcmVkRHJhaW5Nb2RlIHNoYXJlZERyYWluTW9kZSkKIHsKICAgICBB
U1NFUlQobV9pc0luUGFyYWxsZWxNb2RlKTsKICAgICAKLSAgICBBU1NFUlQoSGV1cmlzdGljczo6
bnVtYmVyT2ZHQ01hcmtlcnMpOworICAgIEFTU0VSVChPcHRpb25zOjpudW1iZXJPZkdDTWFya2Vy
cyk7CiAgICAgCiAgICAgYm9vbCBzaG91bGRCZVBhcmFsbGVsOwogCiAjaWYgRU5BQkxFKFBBUkFM
TEVMX0dDKQotICAgIHNob3VsZEJlUGFyYWxsZWwgPSBIZXVyaXN0aWNzOjpudW1iZXJPZkdDTWFy
a2VycyA+IDE7CisgICAgc2hvdWxkQmVQYXJhbGxlbCA9IE9wdGlvbnM6Om51bWJlck9mR0NNYXJr
ZXJzID4gMTsKICNlbHNlCi0gICAgQVNTRVJUKEhldXJpc3RpY3M6Om51bWJlck9mR0NNYXJrZXJz
ID09IDEpOworICAgIEFTU0VSVChPcHRpb25zOjpudW1iZXJPZkdDTWFya2VycyA9PSAxKTsKICAg
ICBzaG91bGRCZVBhcmFsbGVsID0gZmFsc2U7CiAjZW5kaWYKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya1N0YWNrLmgKaW5kZXggYzUwODAxOTQ4ODcwMTljOWE4Y2Q0OGIzNzM3NzZk
OGE4Zjk3OGRhNy4uOGNiZGM2MjhlM2RhMTM0YTU0ZGQ1Y2ExNTM3YjZhMTQwYzE2MzAzZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgKQEAgLTI3LDcgKzI3LDcgQEAKICNk
ZWZpbmUgTWFya1N0YWNrX2gKIAogI2luY2x1ZGUgIkhhbmRsZVR5cGVzLmgiCi0jaW5jbHVkZSAi
SGV1cmlzdGljcy5oIgorI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgi
CiAjaW5jbHVkZSAiUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJVbmNvbmRpdGlvbmFsRmluYWxpemVy
LmgiCkBAIC0yNjEsNyArMjYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAg
ICB2b2lkIG1lcmdlT3BhcXVlUm9vdHNJZlByb2ZpdGFibGUoKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fb3BhcXVlUm9vdHMuc2l6ZSgpKSA8IEhl
dXJpc3RpY3M6Om9wYXF1ZVJvb3RNZXJnZVRocmVzaG9sZCkKKyAgICAgICAgICAgIGlmIChzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9vcGFxdWVSb290cy5zaXplKCkpIDwgT3B0aW9uczo6b3BhcXVl
Um9vdE1lcmdlVGhyZXNob2xkKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IG1lcmdlT3BhcXVlUm9vdHMoKTsKICAgICAgICAgfQpAQCAtMzA5LDcgKzMwOSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIGlubGluZSB2b2lkIE1hcmtTdGFjazo6YWRkT3BhcXVlUm9vdCh2b2lk
KiByb290KQogICAgIHsKICNpZiBFTkFCTEUoUEFSQUxMRUxfR0MpCi0gICAgICAgIGlmIChIZXVy
aXN0aWNzOjpudW1iZXJPZkdDTWFya2VycyA9PSAxKSB7CisgICAgICAgIGlmIChPcHRpb25zOjpu
dW1iZXJPZkdDTWFya2VycyA9PSAxKSB7CiAgICAgICAgICAgICAvLyBQdXQgZGlyZWN0bHkgaW50
byB0aGUgc2hhcmVkIEhhc2hTZXQuCiAgICAgICAgICAgICBtX3NoYXJlZC5tX29wYXF1ZVJvb3Rz
LmFkZChyb290KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM3NSw3ICszNzUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGlubGluZSBib29sIE1hcmtTdGFja0FycmF5OjpjYW5Eb25hdGVT
b21lQ2VsbHMoKQogICAgIHsKLSAgICAgICAgc2l6ZV90IG51bWJlck9mQ2VsbHNUb0tlZXAgPSBI
ZXVyaXN0aWNzOjptaW5pbXVtTnVtYmVyT2ZDZWxsc1RvS2VlcDsKKyAgICAgICAgc2l6ZV90IG51
bWJlck9mQ2VsbHNUb0tlZXAgPSBPcHRpb25zOjptaW5pbXVtTnVtYmVyT2ZDZWxsc1RvS2VlcDsK
ICAgICAgICAgLy8gQW5vdGhlciBjaGVjazogc2VlIGlmIHdlIGhhdmUgZW5vdWdoIGNlbGxzIHRv
IHdhcnJhbnQgZG9uYXRpb24uCiAgICAgICAgIGlmIChtX3RvcCA8PSBudW1iZXJPZkNlbGxzVG9L
ZWVwKSB7CiAgICAgICAgICAgICAvLyBUaGlzIGluZGljYXRlcyB0aGF0IHdlIG1pZ2h0IG5vdCB3
YW50IHRvIGRvbmF0ZSBhbnl0aGluZzsgY2hlY2sgaWYgd2UgaGF2ZQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgKaW5kZXggYTQ2MTc4MTRhZTdlMmY2OGFiMzI0ODllZTll
Y2VhNWFlYjhjNjYxMi4uNjQ3YjJjYmRjMTVhN2I0NDViNjk5YTQ5NjA4NTE2YWRjMTJhZjQ0MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCkBAIC00MCw3ICs0MCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRvbmF0ZSgpCiAgICAgewogICAgICAgICBBU1NFUlQobV9p
c0luUGFyYWxsZWxNb2RlKTsKLSAgICAgICAgaWYgKEhldXJpc3RpY3M6Om51bWJlck9mR0NNYXJr
ZXJzID09IDEpCisgICAgICAgIGlmIChPcHRpb25zOjpudW1iZXJPZkdDTWFya2VycyA9PSAxKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICAgICAgZG9uYXRlS25vd25QYXJhbGxl
bCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDU0MmI0ODRhNTU0NGYwNTBlY2Yx
MDNmNjZlNTMzOTJiMjYzMmIzODEuLmJkNzNjZTBhMGVmMGExNjAzZGUzYmFiZWI4MGIyNjY2OWQz
MDdjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRPcHRpbWl6YXRpb25DaGVjayhPcHRpbWl6YXRpb25DaGVja0tpbmQga2luZCkK
ICAgICBpZiAoIXNob3VsZEVtaXRQcm9maWxpbmcoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAot
ICAgIEp1bXAgc2tpcE9wdGltaXplID0gYnJhbmNoQWRkMzIoU2lnbmVkLCBUcnVzdGVkSW1tMzIo
a2luZCA9PSBMb29wT3B0aW1pemF0aW9uQ2hlY2sgPyBIZXVyaXN0aWNzOjpleGVjdXRpb25Db3Vu
dGVySW5jcmVtZW50Rm9yTG9vcCA6IEhldXJpc3RpY3M6OmV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1l
bnRGb3JSZXR1cm4pLCBBYnNvbHV0ZUFkZHJlc3MobV9jb2RlQmxvY2stPmFkZHJlc3NPZkV4ZWN1
dGVDb3VudGVyKCkpKTsKKyAgICBKdW1wIHNraXBPcHRpbWl6ZSA9IGJyYW5jaEFkZDMyKFNpZ25l
ZCwgVHJ1c3RlZEltbTMyKGtpbmQgPT0gTG9vcE9wdGltaXphdGlvbkNoZWNrID8gT3B0aW9uczo6
ZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvckxvb3AgOiBPcHRpb25zOjpleGVjdXRpb25Db3Vu
dGVySW5jcmVtZW50Rm9yUmV0dXJuKSwgQWJzb2x1dGVBZGRyZXNzKG1fY29kZUJsb2NrLT5hZGRy
ZXNzT2ZFeGVjdXRlQ291bnRlcigpKSk7CiAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywg
a2luZCA9PSBMb29wT3B0aW1pemF0aW9uQ2hlY2sgPyBjdGlfb3B0aW1pemVfZnJvbV9sb29wIDog
Y3RpX29wdGltaXplX2Zyb21fcmV0KTsKICAgICBpZiAoa2luZCA9PSBMb29wT3B0aW1pemF0aW9u
Q2hlY2spCiAgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KEltbTMyKG1fYnl0ZWNvZGVPZmZz
ZXQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggZmMwYzU2MDkwMmIzNmU4ZjhiOWZmNTkwOTA0
MGYzYmMxOTc3MzJjMS4uMzZkM2Y3YTA1YTVmZTEzNjhiMjlmZDVmOGYxZDVmOWNiMjU5ZThkMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTEwMiw4ICsxMDIsOCBAQCBzdHJ1Y3QgU2NyaXB0IHsK
ICAgICB9CiB9OwogCi1zdHJ1Y3QgT3B0aW9ucyB7Ci0gICAgT3B0aW9ucygpCitzdHJ1Y3QgQ29t
bWFuZExpbmUgeworICAgIENvbW1hbmRMaW5lKCkKICAgICAgICAgOiBpbnRlcmFjdGl2ZShmYWxz
ZSkKICAgICAgICAgLCBkdW1wKGZhbHNlKQogICAgIHsKQEAgLTU0OCw3ICs1NDgsNyBAQCBzdGF0
aWMgTk9fUkVUVVJOIHZvaWQgcHJpbnRVc2FnZVN0YXRlbWVudChKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIGJvb2wgaGVscCA9CiAgICAgZXhpdChoZWxwID8gRVhJVF9TVUNDRVNTIDogRVhJVF9G
QUlMVVJFKTsKIH0KIAotc3RhdGljIHZvaWQgcGFyc2VBcmd1bWVudHMoaW50IGFyZ2MsIGNoYXIq
KiBhcmd2LCBPcHRpb25zJiBvcHRpb25zLCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCitzdGF0
aWMgdm9pZCBwYXJzZUFyZ3VtZW50cyhpbnQgYXJnYywgY2hhcioqIGFyZ3YsIENvbW1hbmRMaW5l
JiBvcHRpb25zLCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiB7CiAgICAgaW50IGkgPSAxOwog
ICAgIGZvciAoOyBpIDwgYXJnYzsgKytpKSB7CkBAIC02MDIsNyArNjAyLDcgQEAgaW50IGpzY21h
aW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2LCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiB7CiAg
ICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAotICAgIE9wdGlvbnMgb3B0
aW9uczsKKyAgICBDb21tYW5kTGluZSBvcHRpb25zOwogICAgIHBhcnNlQXJndW1lbnRzKGFyZ2Ms
IGFyZ3YsIG9wdGlvbnMsIGdsb2JhbERhdGEpOwogCiAgICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgR2xvYmFsT2JqZWN0Ojpj
cmVhdGVTdHJ1Y3R1cmUoKmdsb2JhbERhdGEsIGpzTnVsbCgpKSwgb3B0aW9ucy5hcmd1bWVudHMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGV1cmlzdGljcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTU4YTQ0NWY4ZTZjODc1ZjExOGViYWEyMzNjMWM2Mjhk
NDYwNmUwOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDIwNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJIZXVyaXN0aWNzLmgiCi0j
aW5jbHVkZSA8d3RmL1BhZ2VCbG9jay5oPgotCi0jaW5jbHVkZSA8bGltaXRzPgotCi0jaWYgT1Mo
REFSV0lOKSAmJiBFTkFCTEUoUEFSQUxMRUxfR0MpCi0jaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgot
I2VuZGlmCi0KLS8vIFNldCB0byAxIHRvIGNvbnRyb2wgdGhlIGhldXJpc3RpY3MgdXNpbmcgZW52
aXJvbm1lbnQgdmFyaWFibGVzLgotI2RlZmluZSBFTkFCTEVfUlVOX1RJTUVfSEVVUklTVElDUyAw
Ci0KLSNpZiBFTkFCTEUoUlVOX1RJTUVfSEVVUklTVElDUykKLSNpbmNsdWRlIDxzdGRpby5oPgot
I2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNlbmRp
ZgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEhldXJpc3RpY3MgewotCi11bnNpZ25lZCBt
YXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKLQotdW5zaWduZWQg
bWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7Ci11
bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJbnN0cnVj
dGlvbkNvdW50OwotCi11bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsKLQotaW50MzJfdCBl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOwotaW50MzJfdCBleGVj
dXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKLWludDMyX3QgZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247Ci1pbnQzMl90IGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbjsKLWludDMyX3QgZXhlY3V0aW9uQ291
bnRlclZhbHVlRm9yT3B0aW1pemVOZXh0SW52b2NhdGlvbjsKLQotaW50MzJfdCBleGVjdXRpb25D
b3VudGVySW5jcmVtZW50Rm9yTG9vcDsKLWludDMyX3QgZXhlY3V0aW9uQ291bnRlckluY3JlbWVu
dEZvclJldHVybjsKLQotdW5zaWduZWQgZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRp
bzsKLQotZG91YmxlIGxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwotZG91YmxlIGNvdWxk
VGFrZVNsb3dDYXNlVGhyZXNob2xkOwotdW5zaWduZWQgbGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5p
bXVtQ291bnQ7Ci11bnNpZ25lZCBjb3VsZFRha2VTbG93Q2FzZU1pbmltdW1Db3VudDsKLQotdW5z
aWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlOwotdW5zaWduZWQgbGFyZ2VGYWlsQ291
bnRUaHJlc2hvbGRCYXNlRm9yTG9vcDsKLQotdW5zaWduZWQgcmVvcHRpbWl6YXRpb25SZXRyeUNv
dW50ZXJNYXg7Ci11bnNpZ25lZCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlclN0ZXA7Ci0KLXVu
c2lnbmVkIG1pbmltdW1PcHRpbWl6YXRpb25EZWxheTsKLXVuc2lnbmVkIG1heGltdW1PcHRpbWl6
YXRpb25EZWxheTsKLWRvdWJsZSBkZXNpcmVkUHJvZmlsZUxpdmVuZXNzUmF0ZTsKLWRvdWJsZSBk
ZXNpcmVkUHJvZmlsZUZ1bGxuZXNzUmF0ZTsKLQotdW5zaWduZWQgbWluaW11bU51bWJlck9mU2Nh
bnNCZXR3ZWVuUmViYWxhbmNlOwotdW5zaWduZWQgZ2NNYXJrU3RhY2tTZWdtZW50U2l6ZTsKLXVu
c2lnbmVkIG1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVwOwotdW5zaWduZWQgbWF4aW11bU51bWJl
ck9mU2hhcmVkU2VnbWVudHM7Ci11bnNpZ25lZCBzaGFyZWRTdGFja1dha2V1cFRocmVzaG9sZDsK
LXVuc2lnbmVkIG51bWJlck9mR0NNYXJrZXJzOwotdW5zaWduZWQgb3BhcXVlUm9vdE1lcmdlVGhy
ZXNob2xkOwotCi0jaWYgRU5BQkxFKFJVTl9USU1FX0hFVVJJU1RJQ1MpCi1zdGF0aWMgYm9vbCBw
YXJzZShjb25zdCBjaGFyKiBzdHJpbmcsIGludDMyX3QmIHZhbHVlKQotewotICAgIHJldHVybiBz
c2NhbmYoc3RyaW5nLCAiJWQiLCAmdmFsdWUpID09IDE7Ci19Ci0KLXN0YXRpYyBib29sIHBhcnNl
KGNvbnN0IGNoYXIqIHN0cmluZywgdW5zaWduZWQmIHZhbHVlKQotewotICAgIHJldHVybiBzc2Nh
bmYoc3RyaW5nLCAiJXUiLCAmdmFsdWUpID09IDE7Ci19Ci0KLXN0YXRpYyBib29sIHBhcnNlKGNv
bnN0IGNoYXIqIHN0cmluZywgZG91YmxlJiB2YWx1ZSkKLXsKLSAgICByZXR1cm4gc3NjYW5mKHN0
cmluZywgIiVsZiIsICZ2YWx1ZSkgPT0gMTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KLXZvaWQgc2V0SGV1cmlzdGljKFQmIHZhcmlhYmxlLCBjb25zdCBjaGFyKiBuYW1l
LCBVIHZhbHVlKQotewotICAgIGNvbnN0IGNoYXIqIHN0cmluZ1ZhbHVlID0gZ2V0ZW52KG5hbWUp
OwotICAgIGlmICghc3RyaW5nVmFsdWUpIHsKLSAgICAgICAgdmFyaWFibGUgPSBzYWZlQ2FzdDxU
Pih2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKHBhcnNlKHN0
cmluZ1ZhbHVlLCB2YXJpYWJsZSkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBmcHJpbnRm
KHN0ZGVyciwgIldBUk5JTkc6IGZhaWxlZCB0byBwYXJzZSAlcz0lc1xuIiwgbmFtZSwgc3RyaW5n
VmFsdWUpOwotICAgIHZhcmlhYmxlID0gc2FmZUNhc3Q8VD4odmFsdWUpOwotfQotCi0jZGVmaW5l
IFNFVCh2YXJpYWJsZSwgdmFsdWUpIHNldEhldXJpc3RpYyh2YXJpYWJsZSwgIkpTQ18iICN2YXJp
YWJsZSwgdmFsdWUpCi0jZWxzZQotI2RlZmluZSBTRVQodmFyaWFibGUsIHZhbHVlKSB2YXJpYWJs
ZSA9IHZhbHVlCi0jZW5kaWYKLQotdm9pZCBpbml0aWFsaXplSGV1cmlzdGljcygpCi17Ci0gICAg
U0VUKG1heGltdW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50LCAxMDAwKTsK
LSAgICAKLSAgICBTRVQobWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3Ry
dWN0aW9uQ291bnQsIDE1MCk7Ci0gICAgU0VUKG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElu
bGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQsIDgwKTsKLSAgICAKLSAgICBTRVQobWF4aW11
bUlubGluaW5nRGVwdGgsIDUpOwotCi0gICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9w
dGltaXplQWZ0ZXJXYXJtVXAsICAgICAtMTAwMCk7Ci0gICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwLCAtNTAwMCk7Ci0gICAgU0VUKGV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uLCBzdGQ6Om51bWVyaWNfbGlt
aXRzPGludDMyX3Q+OjptaW4oKSk7Ci0gICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9w
dGltaXplU29vbiwgICAgICAgICAgICAtMTAwMCk7Ci0gICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvck9wdGltaXplTmV4dEludm9jYXRpb24sICAwKTsKLQotICAgIFNFVChleGVjdXRpb25D
b3VudGVySW5jcmVtZW50Rm9yTG9vcCwgICAxKTsKLSAgICBTRVQoZXhlY3V0aW9uQ291bnRlcklu
Y3JlbWVudEZvclJldHVybiwgMTUpOwotCi0gICAgU0VUKGRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nl
c3NGYWlsUmF0aW8sIDYpOwotICAgIAotICAgIFNFVChsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVz
aG9sZCwgICAgMC4xNSk7Ci0gICAgU0VUKGNvdWxkVGFrZVNsb3dDYXNlVGhyZXNob2xkLCAgICAg
ICAwLjA1KTsgLy8gU2hvdWxkbid0IGJlIHplcm8gYmVjYXVzZSBzb21lIG9wcyB3aWxsIHNwdXJp
b3VzbHkgdGFrZSBzbG93IGNhc2UsIGZvciBleGFtcGxlIGZvciBsaW5raW5nIG9yIGNhY2hpbmcu
Ci0gICAgU0VUKGxpa2VseVRvVGFrZVNsb3dDYXNlTWluaW11bUNvdW50LCAxMDApOwotICAgIFNF
VChjb3VsZFRha2VTbG93Q2FzZU1pbmltdW1Db3VudCwgICAgMTApOwotCi0gICAgU0VUKGxhcmdl
RmFpbENvdW50VGhyZXNob2xkQmFzZSwgICAgICAgIDIwKTsKLSAgICBTRVQobGFyZ2VGYWlsQ291
bnRUaHJlc2hvbGRCYXNlRm9yTG9vcCwgMSk7Ci0KLSAgICBTRVQocmVvcHRpbWl6YXRpb25SZXRy
eUNvdW50ZXJTdGVwLCAxKTsKLQotICAgIFNFVChtaW5pbXVtT3B0aW1pemF0aW9uRGVsYXksICAg
MSk7Ci0gICAgU0VUKG1heGltdW1PcHRpbWl6YXRpb25EZWxheSwgICA1KTsKLSAgICBTRVQoZGVz
aXJlZFByb2ZpbGVMaXZlbmVzc1JhdGUsIDAuNzUpOwotICAgIFNFVChkZXNpcmVkUHJvZmlsZUZ1
bGxuZXNzUmF0ZSwgMC4zNSk7Ci0gICAgCi0gICAgU0VUKG1pbmltdW1OdW1iZXJPZlNjYW5zQmV0
d2VlblJlYmFsYW5jZSwgMTAwMDApOwotICAgIFNFVChnY01hcmtTdGFja1NlZ21lbnRTaXplLCAg
ICAgICAgICAgICAgIHBhZ2VTaXplKCkpOwotICAgIFNFVChtaW5pbXVtTnVtYmVyT2ZDZWxsc1Rv
S2VlcCwgICAgICAgICAgIDEwKTsKLSAgICBTRVQobWF4aW11bU51bWJlck9mU2hhcmVkU2VnbWVu
dHMsICAgICAgICAzKTsKLSAgICBTRVQoc2hhcmVkU3RhY2tXYWtldXBUaHJlc2hvbGQsICAgICAg
ICAgICAxKTsKLSAgICBTRVQob3BhcXVlUm9vdE1lcmdlVGhyZXNob2xkLCAgICAgICAgICAgICAx
MDAwKTsKLQotICAgIGludCBjcHVzVG9Vc2UgPSAxOwotI2lmIE9TKERBUldJTikgJiYgRU5BQkxF
KFBBUkFMTEVMX0dDKQotICAgIGludCBuYW1lWzJdOwotICAgIHNpemVfdCB2YWx1ZVNpemUgPSBz
aXplb2YoY3B1c1RvVXNlKTsKLSAgICBuYW1lWzBdID0gQ1RMX0hXOwotICAgIG5hbWVbMV0gPSBI
V19BVkFJTENQVTsKLSAgICBzeXNjdGwobmFtZSwgMiwgJmNwdXNUb1VzZSwgJnZhbHVlU2l6ZSwg
MCwgMCk7Ci0jZW5kaWYKLSAgICAvLyBXZSBkb24ndCBzY2FsZSBzbyB3ZWxsIGJleW9uZCA0Lgot
ICAgIGlmIChjcHVzVG9Vc2UgPiA0KQotICAgICAgICBjcHVzVG9Vc2UgPSA0OwotICAgIC8vIEJl
IHBhcmFub2lkLCBpdCBpcyB0aGUgT1Mgd2UncmUgZGVhbGluZyB3aXRoLCBhZnRlciBhbGwuCi0g
ICAgaWYgKGNwdXNUb1VzZSA8IDEpCi0gICAgICAgIGNwdXNUb1VzZSA9IDE7Ci0gICAgCi0gICAg
U0VUKG51bWJlck9mR0NNYXJrZXJzLCBjcHVzVG9Vc2UpOwotCi0gICAgQVNTRVJUKGV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uIDw9IGV4ZWN1dGlvbkNvdW50
ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKTsKLSAgICBBU1NFUlQoZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAgPD0gZXhlY3V0aW9uQ291bnRl
clZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCk7Ci0gICAgQVNTRVJUKGV4ZWN1dGlvbkNvdW50
ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAgPD0gZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
T3B0aW1pemVTb29uKTsKLSAgICBBU1NFUlQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1p
emVBZnRlcldhcm1VcCA8IDApOwotICAgIEFTU0VSVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JP
cHRpbWl6ZVNvb24gPD0gZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVOZXh0SW52b2Nh
dGlvbik7Ci0gICAgCi0gICAgLy8gQ29tcHV0ZSB0aGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgcmVv
cHRpbWl6YXRpb24gcmV0cnkgY291bnRlci4gVGhpcyBpcyBzaW1wbHkKLSAgICAvLyB0aGUgbGFy
Z2VzdCB2YWx1ZSBhdCB3aGljaCB3ZSBkb24ndCBvdmVyZmxvdyB0aGUgZXhlY3V0ZSBjb3VudGVy
LCB3aGVuIHVzaW5nIGl0Ci0gICAgLy8gdG8gbGVmdC1zaGlmdCB0aGUgZXhlY3V0aW9uIGNvdW50
ZXIgYnkgdGhpcyBhbW91bnQuIEN1cnJlbnRseSB0aGUgdmFsdWUgZW5kcwotICAgIC8vIHVwIGJl
aW5nIDE4LCBzbyB0aGlzIGxvb3AgaXMgbm90IHNvIHRlcnJpYmxlOyBpdCBwcm9iYWJseSB0YWtl
cyB1cCB+MTAwIGN5Y2xlcwotICAgIC8vIHRvdGFsIG9uIGEgMzItYml0IHByb2Nlc3Nvci4KLSAg
ICByZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1heCA9IDA7Ci0gICAgd2hpbGUgKChzdGF0aWNf
Y2FzdDxpbnQ2NF90PihleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dh
cm1VcCkgPDwgKHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4ICsgMSkpID49IHN0YXRpY19j
YXN0PGludDY0X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKSkKLSAgICAg
ICAgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXgrKzsKLSAgICAKLSAgICBBU1NFUlQoKHN0
YXRpY19jYXN0PGludDY0X3Q+KGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJM
b25nV2FybVVwKSA8PCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1heCkgPCAwKTsKLSAgICBB
U1NFUlQoKHN0YXRpY19jYXN0PGludDY0X3Q+KGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGlt
aXplQWZ0ZXJMb25nV2FybVVwKSA8PCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1heCkgPj0g
c3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkp
KTsKLX0KLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkhldXJpc3RpY3MKLQotCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGVmOWE4NWNjNWIyMzhiMjMwMDFlM2Q3OWZiNjVkNjMwMjZmM2IyYTMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSGV1cmlzdGljcy5oCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEhl
dXJpc3RpY3NfaAotI2RlZmluZSBIZXVyaXN0aWNzX2gKLQotI2luY2x1ZGUgPHN0ZGludC5oPgot
Ci1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEhldXJpc3RpY3MgewotCi1leHRlcm4gdW5zaWdu
ZWQgbWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7Ci0KLWV4dGVy
biB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rp
b25Db3VudDsKLWV4dGVybiB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxp
bmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OwotCi1leHRlcm4gdW5zaWduZWQgbWF4aW11bUlu
bGluaW5nRGVwdGg7IC8vIERlcHRoIG9mIGlubGluZSBzdGFjaywgc28gMSA9IG5vIGlubGluaW5n
LCAyID0gb25lIGxldmVsLCBldGMuCi0KLWV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXA7Ci1leHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKLWV4dGVybiBpbnQzMl90IGV4ZWN1
dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uOwotZXh0ZXJuIGludDMy
X3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVTb29uOwotZXh0ZXJuIGludDMyX3Qg
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVOZXh0SW52b2NhdGlvbjsKLQotZXh0ZXJu
IGludDMyX3QgZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvckxvb3A7Ci1leHRlcm4gaW50MzJf
dCBleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yUmV0dXJuOwotCi1leHRlcm4gdW5zaWduZWQg
ZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbzsKLQotZXh0ZXJuIGRvdWJsZSBsaWtl
bHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKLWV4dGVybiBkb3VibGUgY291bGRUYWtlU2xvd0Nh
c2VUaHJlc2hvbGQ7Ci1leHRlcm4gdW5zaWduZWQgbGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVt
Q291bnQ7Ci1leHRlcm4gdW5zaWduZWQgY291bGRUYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQ7Ci0K
LWV4dGVybiB1bnNpZ25lZCBsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2U7Ci1leHRlcm4gdW5z
aWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlRm9yTG9vcDsKLQotZXh0ZXJuIHVuc2ln
bmVkIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4OwotZXh0ZXJuIHVuc2lnbmVkIHJlb3B0
aW1pemF0aW9uUmV0cnlDb3VudGVyU3RlcDsKLQotZXh0ZXJuIHVuc2lnbmVkIG1pbmltdW1PcHRp
bWl6YXRpb25EZWxheTsKLWV4dGVybiB1bnNpZ25lZCBtYXhpbXVtT3B0aW1pemF0aW9uRGVsYXk7
Ci1leHRlcm4gZG91YmxlIGRlc2lyZWRQcm9maWxlTGl2ZW5lc3NSYXRlOwotZXh0ZXJuIGRvdWJs
ZSBkZXNpcmVkUHJvZmlsZUZ1bGxuZXNzUmF0ZTsKLQotZXh0ZXJuIHVuc2lnbmVkIG1pbmltdW1O
dW1iZXJPZlNjYW5zQmV0d2VlblJlYmFsYW5jZTsKLWV4dGVybiB1bnNpZ25lZCBnY01hcmtTdGFj
a1NlZ21lbnRTaXplOwotZXh0ZXJuIHVuc2lnbmVkIG1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVw
OwotZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1OdW1iZXJPZlNoYXJlZFNlZ21lbnRzOwotZXh0ZXJu
IHVuc2lnbmVkIHNoYXJlZFN0YWNrV2FrZXVwVGhyZXNob2xkOwotZXh0ZXJuIHVuc2lnbmVkIG51
bWJlck9mR0NNYXJrZXJzOwotZXh0ZXJuIHVuc2lnbmVkIG9wYXF1ZVJvb3RNZXJnZVRocmVzaG9s
ZDsKLQotdm9pZCBpbml0aWFsaXplSGV1cmlzdGljcygpOwotCi19IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6SGV1cmlzdGljcwotCi0jZW5kaWYgLy8gSGV1cmlzdGljc19oCi0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKaW5kZXgg
M2EzNzFmOTUwZDNjZTNhMDc1M2Q4MGRmOGIyYjk0MzU2YzNmNWRkOC4uNjk4OTU3MmJlOGI5YmE0
OWMxMDA1NjRkZTFmODY4MjI2MTJmNTNhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKQEAgLTMxLDcgKzMxLDcgQEAK
IAogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJIZWFwLmgiCi0j
aW5jbHVkZSAiSGV1cmlzdGljcy5oIgorI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNEYXRlTWF0aC5oIgogI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0LmgiCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUaHJlYWRp
bmdPbmNlKCkKIHsKICAgICBXVEY6OmRvdWJsZV9jb252ZXJzaW9uOjppbml0aWFsaXplKCk7CiAg
ICAgV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCk7Ci0gICAgSGV1cmlzdGljczo6aW5pdGlhbGl6
ZUhldXJpc3RpY3MoKTsKKyAgICBPcHRpb25zOjppbml0aWFsaXplT3B0aW9ucygpOwogI2lmIEVO
QUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykKICAgICBXcml0ZUJhcnJpZXJDb3VudGVyczo6
aW5pdGlhbGl6ZSgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmJmNjgzNzNmMTI1MTc3YTRkNjNkM2FjZTI1MjA5M2NiMjhhODUz
MjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmNwcApAQCAtMCwwICsxLDIwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiT3B0aW9ucy5o
IgorCisjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHd0Zi9QYWdlQmxvY2suaD4KKworI2lm
IE9TKERBUldJTikgJiYgRU5BQkxFKFBBUkFMTEVMX0dDKQorI2luY2x1ZGUgPHN5cy9zeXNjdGwu
aD4KKyNlbmRpZgorCisvLyBTZXQgdG8gMSB0byBjb250cm9sIHRoZSBoZXVyaXN0aWNzIHVzaW5n
IGVudmlyb25tZW50IHZhcmlhYmxlcy4KKyNkZWZpbmUgRU5BQkxFX1JVTl9USU1FX0hFVVJJU1RJ
Q1MgMAorCisjaWYgRU5BQkxFKFJVTl9USU1FX0hFVVJJU1RJQ1MpCisjaW5jbHVkZSA8c3RkaW8u
aD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Cisj
ZW5kaWYKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBPcHRpb25zIHsKKwordW5zaWduZWQg
bWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CisKK3Vuc2lnbmVk
IG1heGltdW1GdW5jdGlvbkZvckNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50Owor
dW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saW5lQ2FuZGlkYXRlSW5zdHJ1
Y3Rpb25Db3VudDsKKwordW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7CisKK2ludDMyX3Qg
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcDsKK2ludDMyX3QgZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXA7CitpbnQzMl90IGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uOworaW50MzJfdCBl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZVNvb247CitpbnQzMl90IGV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvck9wdGltaXplTmV4dEludm9jYXRpb247CisKK2ludDMyX3QgZXhlY3V0aW9u
Q291bnRlckluY3JlbWVudEZvckxvb3A7CitpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1l
bnRGb3JSZXR1cm47CisKK3Vuc2lnbmVkIGRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0
aW87CisKK2RvdWJsZSBsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKK2RvdWJsZSBjb3Vs
ZFRha2VTbG93Q2FzZVRocmVzaG9sZDsKK3Vuc2lnbmVkIGxpa2VseVRvVGFrZVNsb3dDYXNlTWlu
aW11bUNvdW50OwordW5zaWduZWQgY291bGRUYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQ7CisKK3Vu
c2lnbmVkIGxhcmdlRmFpbENvdW50VGhyZXNob2xkQmFzZTsKK3Vuc2lnbmVkIGxhcmdlRmFpbENv
dW50VGhyZXNob2xkQmFzZUZvckxvb3A7CisKK3Vuc2lnbmVkIHJlb3B0aW1pemF0aW9uUmV0cnlD
b3VudGVyTWF4OwordW5zaWduZWQgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJTdGVwOworCit1
bnNpZ25lZCBtaW5pbXVtT3B0aW1pemF0aW9uRGVsYXk7Cit1bnNpZ25lZCBtYXhpbXVtT3B0aW1p
emF0aW9uRGVsYXk7Citkb3VibGUgZGVzaXJlZFByb2ZpbGVMaXZlbmVzc1JhdGU7Citkb3VibGUg
ZGVzaXJlZFByb2ZpbGVGdWxsbmVzc1JhdGU7CisKK3Vuc2lnbmVkIG1pbmltdW1OdW1iZXJPZlNj
YW5zQmV0d2VlblJlYmFsYW5jZTsKK3Vuc2lnbmVkIGdjTWFya1N0YWNrU2VnbWVudFNpemU7Cit1
bnNpZ25lZCBtaW5pbXVtTnVtYmVyT2ZDZWxsc1RvS2VlcDsKK3Vuc2lnbmVkIG1heGltdW1OdW1i
ZXJPZlNoYXJlZFNlZ21lbnRzOwordW5zaWduZWQgc2hhcmVkU3RhY2tXYWtldXBUaHJlc2hvbGQ7
Cit1bnNpZ25lZCBudW1iZXJPZkdDTWFya2VyczsKK3Vuc2lnbmVkIG9wYXF1ZVJvb3RNZXJnZVRo
cmVzaG9sZDsKKworI2lmIEVOQUJMRShSVU5fVElNRV9IRVVSSVNUSUNTKQorc3RhdGljIGJvb2wg
cGFyc2UoY29uc3QgY2hhciogc3RyaW5nLCBpbnQzMl90JiB2YWx1ZSkKK3sKKyAgICByZXR1cm4g
c3NjYW5mKHN0cmluZywgIiVkIiwgJnZhbHVlKSA9PSAxOworfQorCitzdGF0aWMgYm9vbCBwYXJz
ZShjb25zdCBjaGFyKiBzdHJpbmcsIHVuc2lnbmVkJiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gc3Nj
YW5mKHN0cmluZywgIiV1IiwgJnZhbHVlKSA9PSAxOworfQorCitzdGF0aWMgYm9vbCBwYXJzZShj
b25zdCBjaGFyKiBzdHJpbmcsIGRvdWJsZSYgdmFsdWUpCit7CisgICAgcmV0dXJuIHNzY2FuZihz
dHJpbmcsICIlbGYiLCAmdmFsdWUpID09IDE7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+Cit2b2lkIHNldEhldXJpc3RpYyhUJiB2YXJpYWJsZSwgY29uc3QgY2hhciogbmFt
ZSwgVSB2YWx1ZSkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHJpbmdWYWx1ZSA9IGdldGVudihuYW1l
KTsKKyAgICBpZiAoIXN0cmluZ1ZhbHVlKSB7CisgICAgICAgIHZhcmlhYmxlID0gc2FmZUNhc3Q8
VD4odmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChwYXJzZShz
dHJpbmdWYWx1ZSwgdmFyaWFibGUpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgZnByaW50
ZihzdGRlcnIsICJXQVJOSU5HOiBmYWlsZWQgdG8gcGFyc2UgJXM9JXNcbiIsIG5hbWUsIHN0cmlu
Z1ZhbHVlKTsKKyAgICB2YXJpYWJsZSA9IHNhZmVDYXN0PFQ+KHZhbHVlKTsKK30KKworI2RlZmlu
ZSBTRVQodmFyaWFibGUsIHZhbHVlKSBzZXRIZXVyaXN0aWModmFyaWFibGUsICJKU0NfIiAjdmFy
aWFibGUsIHZhbHVlKQorI2Vsc2UKKyNkZWZpbmUgU0VUKHZhcmlhYmxlLCB2YWx1ZSkgdmFyaWFi
bGUgPSB2YWx1ZQorI2VuZGlmCisKK3ZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQoreworICAgIFNF
VChtYXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCwgMTAwMCk7Cisg
ICAgCisgICAgU0VUKG1heGltdW1GdW5jdGlvbkZvckNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVj
dGlvbkNvdW50LCAxNTApOworICAgIFNFVChtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxp
bmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50LCA4MCk7CisgICAgCisgICAgU0VUKG1heGltdW1J
bmxpbmluZ0RlcHRoLCA1KTsKKworICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRp
bWl6ZUFmdGVyV2FybVVwLCAgICAgLTEwMDApOworICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFs
dWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCwgLTUwMDApOworICAgIFNFVChleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbiwgc3RkOjpudW1lcmljX2xpbWl0
czxpbnQzMl90Pjo6bWluKCkpOworICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRp
bWl6ZVNvb24sICAgICAgICAgICAgLTEwMDApOworICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFs
dWVGb3JPcHRpbWl6ZU5leHRJbnZvY2F0aW9uLCAgMCk7CisKKyAgICBTRVQoZXhlY3V0aW9uQ291
bnRlckluY3JlbWVudEZvckxvb3AsICAgMSk7CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJJbmNy
ZW1lbnRGb3JSZXR1cm4sIDE1KTsKKworICAgIFNFVChkZXNpcmVkU3BlY3VsYXRpdmVTdWNjZXNz
RmFpbFJhdGlvLCA2KTsKKyAgICAKKyAgICBTRVQobGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hv
bGQsICAgIDAuMTUpOworICAgIFNFVChjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZCwgICAgICAg
MC4wNSk7IC8vIFNob3VsZG4ndCBiZSB6ZXJvIGJlY2F1c2Ugc29tZSBvcHMgd2lsbCBzcHVyaW91
c2x5IHRha2Ugc2xvdyBjYXNlLCBmb3IgZXhhbXBsZSBmb3IgbGlua2luZyBvciBjYWNoaW5nLgor
ICAgIFNFVChsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCwgMTAwKTsKKyAgICBTRVQo
Y291bGRUYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQsICAgIDEwKTsKKworICAgIFNFVChsYXJnZUZh
aWxDb3VudFRocmVzaG9sZEJhc2UsICAgICAgICAyMCk7CisgICAgU0VUKGxhcmdlRmFpbENvdW50
VGhyZXNob2xkQmFzZUZvckxvb3AsIDEpOworCisgICAgU0VUKHJlb3B0aW1pemF0aW9uUmV0cnlD
b3VudGVyU3RlcCwgMSk7CisKKyAgICBTRVQobWluaW11bU9wdGltaXphdGlvbkRlbGF5LCAgIDEp
OworICAgIFNFVChtYXhpbXVtT3B0aW1pemF0aW9uRGVsYXksICAgNSk7CisgICAgU0VUKGRlc2ly
ZWRQcm9maWxlTGl2ZW5lc3NSYXRlLCAwLjc1KTsKKyAgICBTRVQoZGVzaXJlZFByb2ZpbGVGdWxs
bmVzc1JhdGUsIDAuMzUpOworICAgIAorICAgIFNFVChtaW5pbXVtTnVtYmVyT2ZTY2Fuc0JldHdl
ZW5SZWJhbGFuY2UsIDEwMDAwKTsKKyAgICBTRVQoZ2NNYXJrU3RhY2tTZWdtZW50U2l6ZSwgICAg
ICAgICAgICAgICBwYWdlU2l6ZSgpKTsKKyAgICBTRVQobWluaW11bU51bWJlck9mQ2VsbHNUb0tl
ZXAsICAgICAgICAgICAxMCk7CisgICAgU0VUKG1heGltdW1OdW1iZXJPZlNoYXJlZFNlZ21lbnRz
LCAgICAgICAgMyk7CisgICAgU0VUKHNoYXJlZFN0YWNrV2FrZXVwVGhyZXNob2xkLCAgICAgICAg
ICAgMSk7CisgICAgU0VUKG9wYXF1ZVJvb3RNZXJnZVRocmVzaG9sZCwgICAgICAgICAgICAgMTAw
MCk7CisKKyAgICBpbnQgY3B1c1RvVXNlID0gMTsKKyNpZiBPUyhEQVJXSU4pICYmIEVOQUJMRShQ
QVJBTExFTF9HQykKKyAgICBpbnQgbmFtZVsyXTsKKyAgICBzaXplX3QgdmFsdWVTaXplID0gc2l6
ZW9mKGNwdXNUb1VzZSk7CisgICAgbmFtZVswXSA9IENUTF9IVzsKKyAgICBuYW1lWzFdID0gSFdf
QVZBSUxDUFU7CisgICAgc3lzY3RsKG5hbWUsIDIsICZjcHVzVG9Vc2UsICZ2YWx1ZVNpemUsIDAs
IDApOworI2VuZGlmCisgICAgLy8gV2UgZG9uJ3Qgc2NhbGUgc28gd2VsbCBiZXlvbmQgNC4KKyAg
ICBpZiAoY3B1c1RvVXNlID4gNCkKKyAgICAgICAgY3B1c1RvVXNlID0gNDsKKyAgICAvLyBCZSBw
YXJhbm9pZCwgaXQgaXMgdGhlIE9TIHdlJ3JlIGRlYWxpbmcgd2l0aCwgYWZ0ZXIgYWxsLgorICAg
IGlmIChjcHVzVG9Vc2UgPCAxKQorICAgICAgICBjcHVzVG9Vc2UgPSAxOworICAgIAorICAgIFNF
VChudW1iZXJPZkdDTWFya2VycywgY3B1c1RvVXNlKTsKKworICAgIEFTU0VSVChleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbiA8PSBleGVjdXRpb25Db3VudGVy
VmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCk7CisgICAgQVNTRVJUKGV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwIDw9IGV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXApOworICAgIEFTU0VSVChleGVjdXRpb25Db3VudGVy
VmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwIDw9IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9w
dGltaXplU29vbik7CisgICAgQVNTRVJUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXpl
QWZ0ZXJXYXJtVXAgPCAwKTsKKyAgICBBU1NFUlQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0
aW1pemVTb29uIDw9IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplTmV4dEludm9jYXRp
b24pOworICAgIAorICAgIC8vIENvbXB1dGUgdGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIHJlb3B0
aW1pemF0aW9uIHJldHJ5IGNvdW50ZXIuIFRoaXMgaXMgc2ltcGx5CisgICAgLy8gdGhlIGxhcmdl
c3QgdmFsdWUgYXQgd2hpY2ggd2UgZG9uJ3Qgb3ZlcmZsb3cgdGhlIGV4ZWN1dGUgY291bnRlciwg
d2hlbiB1c2luZyBpdAorICAgIC8vIHRvIGxlZnQtc2hpZnQgdGhlIGV4ZWN1dGlvbiBjb3VudGVy
IGJ5IHRoaXMgYW1vdW50LiBDdXJyZW50bHkgdGhlIHZhbHVlIGVuZHMKKyAgICAvLyB1cCBiZWlu
ZyAxOCwgc28gdGhpcyBsb29wIGlzIG5vdCBzbyB0ZXJyaWJsZTsgaXQgcHJvYmFibHkgdGFrZXMg
dXAgfjEwMCBjeWNsZXMKKyAgICAvLyB0b3RhbCBvbiBhIDMyLWJpdCBwcm9jZXNzb3IuCisgICAg
cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXggPSAwOworICAgIHdoaWxlICgoc3RhdGljX2Nh
c3Q8aW50NjRfdD4oZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJt
VXApIDw8IChyZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1heCArIDEpKSA+PSBzdGF0aWNfY2Fz
dDxpbnQ2NF90PihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSkpCisgICAgICAg
IHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4Kys7CisgICAgCisgICAgQVNTRVJUKChzdGF0
aWNfY2FzdDxpbnQ2NF90PihleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9u
Z1dhcm1VcCkgPDwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXgpIDwgMCk7CisgICAgQVNT
RVJUKChzdGF0aWNfY2FzdDxpbnQ2NF90PihleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6
ZUFmdGVyTG9uZ1dhcm1VcCkgPDwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXgpID49IHN0
YXRpY19jYXN0PGludDY0X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKSk7
Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpPcHRpb25zCisKKwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiMTFmN2ZlOTI1YWM1OTA2MWRkYWVl
ZWNlOGRiNDQyM2NkNjUwNjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE9wdGlvbnNfaAorI2RlZmluZSBP
cHRpb25zX2gKKworI2luY2x1ZGUgPHN0ZGludC5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIE9wdGlvbnMgeworCitleHRlcm4gdW5zaWduZWQgbWF4aW11bU9wdGltaXphdGlvbkNhbmRp
ZGF0ZUluc3RydWN0aW9uQ291bnQ7CisKK2V4dGVybiB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25G
b3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKK2V4dGVybiB1bnNpZ25lZCBt
YXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50
OworCitleHRlcm4gdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7IC8vIERlcHRoIG9mIGlu
bGluZSBzdGFjaywgc28gMSA9IG5vIGlubGluaW5nLCAyID0gb25lIGxldmVsLCBldGMuCisKK2V4
dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXA7
CitleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9u
Z1dhcm1VcDsKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRp
bWl6ZUFueXRpbWVTb29uOworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
T3B0aW1pemVTb29uOworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0
aW1pemVOZXh0SW52b2NhdGlvbjsKKworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlcklu
Y3JlbWVudEZvckxvb3A7CitleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVySW5jcmVtZW50
Rm9yUmV0dXJuOworCitleHRlcm4gdW5zaWduZWQgZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0Zh
aWxSYXRpbzsKKworZXh0ZXJuIGRvdWJsZSBsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsK
K2V4dGVybiBkb3VibGUgY291bGRUYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CitleHRlcm4gdW5zaWdu
ZWQgbGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQ7CitleHRlcm4gdW5zaWduZWQgY291
bGRUYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQ7CisKK2V4dGVybiB1bnNpZ25lZCBsYXJnZUZhaWxD
b3VudFRocmVzaG9sZEJhc2U7CitleHRlcm4gdW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hv
bGRCYXNlRm9yTG9vcDsKKworZXh0ZXJuIHVuc2lnbmVkIHJlb3B0aW1pemF0aW9uUmV0cnlDb3Vu
dGVyTWF4OworZXh0ZXJuIHVuc2lnbmVkIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyU3RlcDsK
KworZXh0ZXJuIHVuc2lnbmVkIG1pbmltdW1PcHRpbWl6YXRpb25EZWxheTsKK2V4dGVybiB1bnNp
Z25lZCBtYXhpbXVtT3B0aW1pemF0aW9uRGVsYXk7CitleHRlcm4gZG91YmxlIGRlc2lyZWRQcm9m
aWxlTGl2ZW5lc3NSYXRlOworZXh0ZXJuIGRvdWJsZSBkZXNpcmVkUHJvZmlsZUZ1bGxuZXNzUmF0
ZTsKKworZXh0ZXJuIHVuc2lnbmVkIG1pbmltdW1OdW1iZXJPZlNjYW5zQmV0d2VlblJlYmFsYW5j
ZTsKK2V4dGVybiB1bnNpZ25lZCBnY01hcmtTdGFja1NlZ21lbnRTaXplOworZXh0ZXJuIHVuc2ln
bmVkIG1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVwOworZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1O
dW1iZXJPZlNoYXJlZFNlZ21lbnRzOworZXh0ZXJuIHVuc2lnbmVkIHNoYXJlZFN0YWNrV2FrZXVw
VGhyZXNob2xkOworZXh0ZXJuIHVuc2lnbmVkIG51bWJlck9mR0NNYXJrZXJzOworZXh0ZXJuIHVu
c2lnbmVkIG9wYXF1ZVJvb3RNZXJnZVRocmVzaG9sZDsKKwordm9pZCBpbml0aWFsaXplT3B0aW9u
cygpOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6T3B0aW9ucworCisjZW5kaWYgLy8gT3B0aW9u
c19oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhwLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhwLmNwcAppbmRleCA3ZjlmYTdhYWMyYTk1
ZDlmM2FlODMyMmUzNjRjYWQyY2QzYzM1MjM5Li5jZmRkOWExZjVlZjEyYjE2NDIzYjdmNDU3MjZm
Y2QxNDk0MzBhNDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4
cC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCkBAIC01Niw4
ICs1Niw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIHN0YXRpYyB2b2lkIGNsZWFudXBHbG9i
YWxEYXRhKEpTR2xvYmFsRGF0YSopOwogCi1zdHJ1Y3QgT3B0aW9ucyB7Ci0gICAgT3B0aW9ucygp
CitzdHJ1Y3QgQ29tbWFuZExpbmUgeworICAgIENvbW1hbmRMaW5lKCkKICAgICAgICAgOiBpbnRl
cmFjdGl2ZShmYWxzZSkKICAgICAgICAgLCB2ZXJib3NlKGZhbHNlKQogICAgIHsKQEAgLTQ5MCw3
ICs0OTAsNyBAQCBzdGF0aWMgTk9fUkVUVVJOIHZvaWQgcHJpbnRVc2FnZVN0YXRlbWVudChKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIGJvb2wgaGVscCA9CiAgICAgZXhpdChoZWxwID8gRVhJVF9T
VUNDRVNTIDogRVhJVF9GQUlMVVJFKTsKIH0KIAotc3RhdGljIHZvaWQgcGFyc2VBcmd1bWVudHMo
aW50IGFyZ2MsIGNoYXIqKiBhcmd2LCBPcHRpb25zJiBvcHRpb25zLCBKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEpCitzdGF0aWMgdm9pZCBwYXJzZUFyZ3VtZW50cyhpbnQgYXJnYywgY2hhcioqIGFy
Z3YsIENvbW1hbmRMaW5lJiBvcHRpb25zLCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiB7CiAg
ICAgaW50IGkgPSAxOwogICAgIGZvciAoOyBpIDwgYXJnYzsgKytpKSB7CkBAIC01MTEsNyArNTEx
LDcgQEAgaW50IHJlYWxNYWluKGludCBhcmdjLCBjaGFyKiogYXJndiwgSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhKQogewogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAK
LSAgICBPcHRpb25zIG9wdGlvbnM7CisgICAgQ29tbWFuZExpbmUgb3B0aW9uczsKICAgICBwYXJz
ZUFyZ3VtZW50cyhhcmdjLCBhcmd2LCBvcHRpb25zLCBnbG9iYWxEYXRhKTsKIAogICAgIEdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUoKmdsb2JhbERhdGEs
IEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKCpnbG9iYWxEYXRhLCBqc051bGwoKSksIG9w
dGlvbnMuYXJndW1lbnRzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119194</attachid>
            <date>2011-12-14 03:53:56 -0800</date>
            <delta_ts>2011-12-14 04:13:50 -0800</delta_ts>
            <desc>Andy&apos;s updated patch</desc>
            <filename>0001-foo.patch</filename>
            <type>text/plain</type>
            <size>65406</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAzN2FkMjZlNTdhYzNhOWJlNjI1YjQ5YTJlODg2MDM2YThhNzZkOWNiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmR5IFdpbmdvIDx3aW5nb0BpZ2FsaWEuY29tPgpEYXRlOiBU
dWUsIDIyIE5vdiAyMDExIDEyOjU3OjE2ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gZm9vCgotLS0K
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgIHwgICAg
MiArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
fCAgIDc0ICsrKysrKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
ICAgICAgICAgIHwgICAgNCArLQogLi4uL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvaiAgICAgICAgICAgfCAgIDE2ICstCiAuLi4vSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiAgICAgICB8ICAgMTYgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJn
ZXQucHJpICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgICAgICAgfCAgICA4ICstCiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggICAgICAgICB8ICAgMzYgKystLQogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgICAgfCAgICAyICstCiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oICAgICAgICB8ICAgMTQgKy0K
IC4uLi9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwIHwgICAg
NCArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAg
fCAgICA0ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwICAgICAg
ICAgICB8ICAgMzAgKystLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgg
ICAgICAgICAgICAgfCAgICA4ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90Vmlz
aXRvci5oICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcCAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAgICAgICAgICAgICAgICAgICAgICAgfCAgICA4ICstCiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9IZXVyaXN0aWNzLmNwcCAgICAgICB8ICAyMTQgLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hldXJpc3RpY3MuaCAgICAgICAgIHwg
ICA4NCAtLS0tLS0tLQogLi4uL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVh
ZGluZy5jcHAgfCAgICA0ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
LmNwcCAgICAgICAgICB8ICAyMTQgKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaCAgICAgICAgICAgIHwgICA4NCArKysrKysrKwogU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwICAgICAgICAgICAgICAgfCAgICA4ICst
CiAyMyBmaWxlcyBjaGFuZ2VkLCA0NTkgaW5zZXJ0aW9ucygrKSwgMzgxIGRlbGV0aW9ucygtKQog
ZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hldXJpc3Rp
Y3MuY3BwCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SGV1cmlzdGljcy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9ucy5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5k
ZXggNWEzOTNlYS4uYzI2M2IyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtMTM1LDcgKzEzNSw2IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGlt
ZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5j
cHAKICAgICBydW50aW1lL0dldHRlclNldHRlci5jcHAKLSAgICBydW50aW1lL0hldXJpc3RpY3Mu
Y3BwCiAgICAgcnVudGltZS9JZGVudGlmaWVyLmNwcAogICAgIHJ1bnRpbWUvSW5pdGlhbGl6ZVRo
cmVhZGluZy5jcHAKICAgICBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCkBAIC0xNzIsNiAr
MTcxLDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAogICAgIHJ1bnRp
bWUvT3BlcmF0aW9ucy5jcHAKKyAgICBydW50aW1lL09wdGlvbnMuY3BwCiAgICAgcnVudGltZS9Q
cm9wZXJ0eURlc2NyaXB0b3IuY3BwCiAgICAgcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5jcHAK
ICAgICBydW50aW1lL1Byb3BlcnR5U2xvdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4
IDllOGQxYTQuLjIzODc3MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3
IEBACisyMDExLTExLTI5ICBBbmR5IFdpbmdvICA8d2luZ29AaWdhbGlhLmNvbT4KKworICAgICAg
ICBSZW5hbWUgSlNDOjpIZXVyaXN0aWNzIHRvIEpTQzo6T3B0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI4ODkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmNwcC4K
KyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0hldXJpc3RpY3MuaC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvajoKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRh
cmdldC5wcmk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpzaG91bGRPcHRpbWl6ZU5vdyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlU2xvd0Nhc2Up
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmNvdWxkVGFrZVNsb3dDYXNlKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rha2VTcGVjaWFsRmFzdENhc2UpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZSk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlQW55U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpjb3VudFJlb3B0aW1pemF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpj
b3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpjb3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6b3B0aW1pemVOZXh0SW52b2NhdGlvbik6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6ZG9udE9wdGltaXplQW55dGltZVNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6Om9wdGltaXplU29vbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGFyZ2VGYWlsQ291
bnRUaHJlc2hvbGQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxhcmdlRmFpbENvdW50VGhy
ZXNob2xkRm9yTG9vcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2hvdWxkUmVvcHRpbWl6
ZU5vdyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2hvdWxkUmVvcHRpbWl6ZUZyb21Mb29w
Tm93KToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgICogZGZnL0RG
R0NhcGFiaWxpdGllcy5oOgorICAgICAgICAoSlNDOjpERkc6Om1pZ2h0Q29tcGlsZUV2YWwpOgor
ICAgICAgICAoSlNDOjpERkc6Om1pZ2h0Q29tcGlsZVByb2dyYW0pOgorICAgICAgICAoSlNDOjpE
Rkc6Om1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6bWln
aHRDb21waWxlRnVuY3Rpb25Gb3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpERkc6Om1pZ2h0
SW5saW5lRnVuY3Rpb25Gb3JDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjptaWdodElubGluZUZ1
bmN0aW9uRm9yQ29uc3RydWN0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyMzJf
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQp
OgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6CisgICAgICAgICogaGVhcC9NYXJr
U3RhY2suY3BwOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2tTZWdtZW50QWxsb2NhdG9yOjphbGxv
Y2F0ZSk6CisgICAgICAgIChKU0M6Ok1hcmtTdGFja1NlZ21lbnRBbGxvY2F0b3I6OnNocmlua1Jl
c2VydmUpOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2tBcnJheTo6TWFya1N0YWNrQXJyYXkpOgor
ICAgICAgICAoSlNDOjpNYXJrU3RhY2tBcnJheTo6ZG9uYXRlU29tZUNlbGxzVG8pOgorICAgICAg
ICAoSlNDOjpNYXJrU3RhY2tBcnJheTo6c3RlYWxTb21lQ2VsbHNGcm9tKToKKyAgICAgICAgKEpT
Qzo6TWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YTo6TWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YSk6
CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjpkb25hdGVTbG93KToKKyAgICAgICAgKEpTQzo6
U2xvdFZpc2l0b3I6OmRyYWluKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmRyYWluRnJv
bVNoYXJlZCk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suaDoKKyAgICAgICAgKEpTQzo6TWFy
a1N0YWNrOjptZXJnZU9wYXF1ZVJvb3RzSWZQcm9maXRhYmxlKToKKyAgICAgICAgKEpTQzo6TWFy
a1N0YWNrOjphZGRPcGFxdWVSb290KToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrQXJyYXk6OmNh
bkRvbmF0ZVNvbWVDZWxscyk6CisgICAgICAgICogaGVhcC9TbG90VmlzaXRvci5oOgorICAgICAg
ICAoSlNDOjpTbG90VmlzaXRvcjo6ZG9uYXRlKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0T3B0aW1pemF0aW9uQ2hlY2spOgorICAgICAgICAqIHJ1bnRp
bWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVUaHJl
YWRpbmdPbmNlKTogQWRhcHQgY2FsbGVycyBhbmQgYnVpbGQgc3lzdGVtcy4KKworICAgICAgICAq
IHRlc3RSZWdFeHAuY3BwOgorICAgICAgICAoQ29tbWFuZExpbmU6OkNvbW1hbmRMaW5lKToKKyAg
ICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoQ29tbWFuZExpbmU6OkNvbW1hbmRMaW5lKToKKyAg
ICAgICAgUmVuYW1lIGZyb20gT3B0aW9ucywgdG8gYXZvaWQgbmFtZSBjb25mbGljdC4KKwogMjAx
MS0xMi0xMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBz
aG91bGQgaW5mZXIgd2hlbiBsb2NhbCB2YXJpYWJsZXMgYXJlIGRvdWJsZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMzE1ZTNmMy4uZjVlZTA1NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTM1OCw4ICszNTgs
NiBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2V0dGVyU2V0dGVyLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2V0dGVyU2V0dGVyLmggXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hldXJpc3Rp
Y3MuY3BwIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwIFwKQEAgLTQzOSw2ICs0MzcsOCBA
QCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RQcm90b3R5cGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3BlcmF0aW9ucy5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlv
bnMuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAgXAorCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmggXApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagppbmRleCBhNzkzZGQ3
Li44ODgyNjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvagpAQCAtNzM0LDE0ICs3MzQsNiBAQAogCQkJCT4KIAkJCTwvRmls
ZT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXEhldXJpc3RpY3Mu
Y3BwIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwu
LlxydW50aW1lXEhldXJpc3RpY3MuaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQogCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxJZGVudGlmaWVyLmNwcCIKIAkJCQk+CiAJCQk8
L0ZpbGU+CkBAIC0xMDM4LDYgKzEwMzAsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8Rmls
ZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxPcHRpb25zLmNwcCIKKwkJCQk+CisJ
CQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxPcHRp
b25zLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XC4uXHJ1bnRpbWVcUHJvcGVydHlEZXNjcmlwdG9yLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVhMzk3NGIuLjA3MmFiZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDYsOCArMTA2LDggQEAKIAkJMEZEODJFODYxNDFG
M0ZGMTAwMTc5Qzk0IC8qIFByZWRpY3RlZFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEODJFODQxNDFGM0ZEQTAwMTc5Qzk0IC8qIFByZWRp
Y3RlZFR5cGUuY3BwICovOyB9OwogCQkwRkQ4MkU5MDE0MjA3QTVGMDAxNzlDOTQgLyogVmFsdWVQ
cm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGRDgyRThFMTQyMDdBNTEwMDE3OUM5NCAvKiBWYWx1ZVByb2ZpbGUuY3BwICovOyB9OwogCQkw
RkQ4MkY0QjE0MjgwNkExMDAxNzlDOTQgLyogQml0VmVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MkY0OTE0MjgwNjkyMDAxNzlDOTQgLyog
Qml0VmVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKLQkJMEZFMjI4RUQxNDM2QUIyNzAwMTk2QzQ4IC8qIEhldXJpc3RpY3MuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTIyOEVCMTQzNkFCMjMwMDE5
NkM0OCAvKiBIZXVyaXN0aWNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJMEZFMjI4RUUxNDM2QUIyQzAwMTk2QzQ4IC8qIEhldXJpc3RpY3MuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFMjI4RUEx
NDM2QUIyMzAwMTk2QzQ4IC8qIEhldXJpc3RpY3MuY3BwICovOyB9OworCQkwRkUyMjhFRDE0MzZB
QjI3MDAxOTZDNDggLyogT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZFMjI4RUIxNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkUyMjhFRTE0
MzZBQjJDMDAxOTZDNDggLyogT3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkUyMjhFQTE0MzZBQjIzMDAxOTZDNDggLyogT3B0aW9ucy5j
cHAgKi87IH07CiAJCTBGRkY0QkI0MTQzOTU1RTkwMDY1NUJDMCAvKiBERkdTdHJ1Y3R1cmVTZXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkY0QkIy
MTQzOTU1RTYwMDY1NUJDMCAvKiBERkdTdHJ1Y3R1cmVTZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDAwMDY3NzEyQTZGNzgzMDA2NEQxMjMg
LyogT1NBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0MDAwNjc2MTJBNkY3ODMwMDY0RDEyMyAvKiBPU0FsbG9jYXRvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0MDAwNjkzMTJBNkY5
RTEwMDY0RDEyMyAvKiBPU0FsbG9jYXRvclBvc2l4LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MDAwNjkyMTJBNkY5RTEwMDY0RDEyMyAvKiBPU0Fs
bG9jYXRvclBvc2l4LmNwcCAqLzsgfTsKQEAgLTg5MCw4ICs4OTAsOCBAQAogCQkwRkQ4MkU4NDE0
MUYzRkRBMDAxNzlDOTQgLyogUHJlZGljdGVkVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQcmVkaWN0ZWRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZEODJFOEUxNDIwN0E1MTAwMTc5Qzk0IC8qIFZhbHVlUHJvZmlsZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWYWx1ZVByb2ZpbGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkQ4MkY0OTE0MjgwNjkyMDAxNzlDOTQgLyogQml0
VmVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJpdFZlY3Rvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkUyMjhFQTE0MzZBQjIzMDAxOTZDNDggLyog
SGV1cmlzdGljcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZXVy
aXN0aWNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZFMjI4RUIxNDM2QUIy
MzAwMTk2QzQ4IC8qIEhldXJpc3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSGV1cmlzdGljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkUyMjhFQTE0
MzZBQjIzMDAxOTZDNDggLyogT3B0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBPcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZF
MjI4RUIxNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZG
NEJCMjE0Mzk1NUU2MDA2NTVCQzAgLyogREZHU3RydWN0dXJlU2V0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERGR1N0cnVjdHVyZVNldC5oOyBwYXRoID0gZGZnL0RGR1N0cnVj
dHVyZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDAwMDY3NjEyQTZGNzgz
MDA2NEQxMjMgLyogT1NBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gT1NBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQwMDA2OTIx
MkE2RjlFMTAwNjREMTIzIC8qIE9TQWxsb2NhdG9yUG9zaXguY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gT1NBbGxvY2F0b3JQb3NpeC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yMTExLDYgKzIxMTEsOCBAQAogCQk3RUY2RTBCQjBFQjdBMUVDMDA3
OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAg
Ki8sCisJCQkJMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oICov
LAogCQkJCUJDRjYwNTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLywKIAkJCQlC
Q0Y2MDUxMjBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovLAogCQkJCUJDMjU3REU1MEUx
RjUxQzUwMDE2QjZDOSAvKiBBcmd1bWVudHMuY3BwICovLApAQCAtMjI0Niw2ICsyMjQ4LDggQEAK
IAkJCQlCQzI2ODBDOTBFMTZENEU5MDBBMDZFOTIgLyogT2JqZWN0UHJvdG90eXBlLmggKi8sCiAJ
CQkJRjY5MkE4NzcwMjU1NTk3RDAxRkY2MEY3IC8qIE9wZXJhdGlvbnMuY3BwICovLAogCQkJCUY2
OTJBODc4MDI1NTU5N0QwMUZGNjBGNyAvKiBPcGVyYXRpb25zLmggKi8sCisJCQkJMEZFMjI4RUEx
NDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwICovLAorCQkJCTBGRTIyOEVCMTQzNkFCMjMw
MDE5NkM0OCAvKiBPcHRpb25zLmggKi8sCiAJCQkJQTdGQjYwQTMxMDNGN0RDMjAwMTdBMjg2IC8q
IFByb3BlcnR5RGVzY3JpcHRvci5jcHAgKi8sCiAJCQkJQTdGQjYwNEIxMDNGNUVBQjAwMTdBMjg2
IC8qIFByb3BlcnR5RGVzY3JpcHRvci5oICovLAogCQkJCUJDOTU0MzdDMEVCQTcwRkQwMDcyQjZE
MyAvKiBQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oICovLApAQCAtMjk1NCw3ICsyOTU4LDcgQEAKIAkJ
CQkwRjYzNkRBMDE0MkQyN0Q3MDBCMkU2NkEgLyogUGFja2VkSW50VmVjdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNzUyMUUxMzE0MjkxNjlBMDAzQzhEMEMgLyogQ2FyZFNldC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZENTJBQUUxNDMwMzVBMDAwMjZEQzlGIC8qIFVuaW9uRmluZC5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJMEZFMjI4RUQxNDM2QUIyNzAwMTk2QzQ4IC8qIEhldXJpc3RpY3MuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGRTIyOEVEMTQzNkFCMjcwMDE5NkM0OCAvKiBPcHRpb25zLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkZGNEJCNDE0Mzk1NUU5MDA2NTVCQzAgLyogREZHU3RydWN0
dXJlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjA0RjUwNTE0M0NFMUMyMDBCMjk1RjUgLyog
SlNHbG9iYWxUaGlzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYyMDE3NDE0M0ZDRDMzMDA2OEI3
N0MgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTM1MTUsNyAr
MzUxOSw3IEBACiAJCQkJODZGQTlFOTExNDJCQkIyRTAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4Njg4MEYxRjE0MzI4QkI5MDBCMDhENDIgLyogREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4Njg4MEY0RDE0MzUz
QjIxMDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQkwRkUyMjhFRTE0MzZBQjJDMDAxOTZDNDggLyogSGV1cmlzdGljcy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkwRkUyMjhFRTE0MzZBQjJDMDAxOTZDNDggLyogT3B0aW9ucy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjYyMDE3OTE0M0ZDRDQ4MDA2OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0ZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzNDNENBMDE0NThGNTQ1MDAyNUZCNjIgLyogSlNHbG9i
YWxUaGlzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzA5NzZFMTQ2OEFCNTEwMENGMjQ0MiAv
KiBERkdBc3NlbWJseUhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJn
ZXQucHJpCmluZGV4IDdhMmY4YjQuLjVhY2MzNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJp
CkBAIC0xNDksNyArMTQ5LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcnVudGltZS9GdW5jdGlvblBy
b3RvdHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBcCiAgICAg
cnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIFwKLSAgICBydW50aW1lL0hldXJpc3RpY3MuY3BwIFwK
KyAgICBydW50aW1lL09wdGlvbnMuY3BwIFwKICAgICBydW50aW1lL0lkZW50aWZpZXIuY3BwIFwK
ICAgICBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwIFwKICAgICBydW50aW1lL0ludGVy
bmFsRnVuY3Rpb24uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKaW5kZXggY2JkMzk3MS4uNzRkY2YxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTIyMDMsNyArMjIwMyw3IEBAIGJvb2wgQ29k
ZUJsb2NrOjpzaG91bGRPcHRpbWl6ZU5vdygpCiAgICAgZHVtcFZhbHVlUHJvZmlsZXMoKTsKICNl
bmRpZgogCi0gICAgaWYgKG1fb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID49IEhldXJpc3RpY3M6
Om1heGltdW1PcHRpbWl6YXRpb25EZWxheSkKKyAgICBpZiAobV9vcHRpbWl6YXRpb25EZWxheUNv
dW50ZXIgPj0gT3B0aW9uczo6bWF4aW11bU9wdGltaXphdGlvbkRlbGF5KQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAKICAgICB1bnNpZ25lZCBudW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9m
aWxlcyA9IDA7CkBAIC0yMjI5LDkgKzIyMjksOSBAQCBib29sIENvZGVCbG9jazo6c2hvdWxkT3B0
aW1pemVOb3coKQogICAgIHByaW50ZigiUHJvZmlsZSBob3RuZXNzOiAlbGYsICVsZlxuIiwgKGRv
dWJsZSludW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgLyBudW1iZXJPZk5vbkFy
Z3VtZW50VmFsdWVQcm9maWxlcywgKGRvdWJsZSludW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzIC8g
VmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMgLyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSk7
CiAjZW5kaWYKIAotICAgIGlmICgoIW51bWJlck9mTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzIHx8
IChkb3VibGUpbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzIC8gbnVtYmVyT2ZO
b25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPj0gSGV1cmlzdGljczo6ZGVzaXJlZFByb2ZpbGVMaXZl
bmVzc1JhdGUpCi0gICAgICAgICYmICghbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkgfHwgKGRvdWJs
ZSludW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzIC8gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tl
dHMgLyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSA+PSBIZXVyaXN0aWNzOjpkZXNpcmVkUHJvZmls
ZUZ1bGxuZXNzUmF0ZSkKLSAgICAgICAgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fb3B0aW1p
emF0aW9uRGVsYXlDb3VudGVyKSArIDEgPj0gSGV1cmlzdGljczo6bWluaW11bU9wdGltaXphdGlv
bkRlbGF5KQorICAgIGlmICgoIW51bWJlck9mTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzIHx8IChk
b3VibGUpbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzIC8gbnVtYmVyT2ZOb25B
cmd1bWVudFZhbHVlUHJvZmlsZXMgPj0gT3B0aW9uczo6ZGVzaXJlZFByb2ZpbGVMaXZlbmVzc1Jh
dGUpCisgICAgICAgICYmICghbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkgfHwgKGRvdWJsZSludW1i
ZXJPZlNhbXBsZXNJblByb2ZpbGVzIC8gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMgLyBu
dW1iZXJPZlZhbHVlUHJvZmlsZXMoKSA+PSBPcHRpb25zOjpkZXNpcmVkUHJvZmlsZUZ1bGxuZXNz
UmF0ZSkKKyAgICAgICAgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fb3B0aW1pemF0aW9uRGVs
YXlDb3VudGVyKSArIDEgPj0gT3B0aW9uczo6bWluaW11bU9wdGltaXphdGlvbkRlbGF5KQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBBU1NFUlQobV9vcHRpbWl6YXRpb25EZWxheUNv
dW50ZXIgPCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ4X3Q+OjptYXgoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggNjE1ZjJiNS4uNDM1Yjk1OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMzcsNyAr
MzcsNyBAQAogI2luY2x1ZGUgIkRGR09TUkVudHJ5LmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdC5o
IgogI2luY2x1ZGUgIkV2YWxDb2RlQ2FjaGUuaCIKLSNpbmNsdWRlICJIZXVyaXN0aWNzLmgiCisj
aW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAi
SklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFdyaXRlQmFycmllci5oIgpAQCAtNjgzLDEzICs2ODMs
MTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlU2xvd0Nhc2Uo
aW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICB1bnNpZ25lZCB2YWx1
ZSA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9j
b3VudGVyOwotICAgICAgICAgICAgcmV0dXJuIHZhbHVlID49IEhldXJpc3RpY3M6Omxpa2VseVRv
VGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpIC8g
bV9leGVjdXRpb25FbnRyeUNvdW50ID49IEhldXJpc3RpY3M6Omxpa2VseVRvVGFrZVNsb3dDYXNl
VGhyZXNob2xkOworICAgICAgICAgICAgcmV0dXJuIHZhbHVlID49IE9wdGlvbnM6Omxpa2VseVRv
VGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpIC8g
bV9leGVjdXRpb25FbnRyeUNvdW50ID49IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhy
ZXNob2xkOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIGNvdWxkVGFrZVNsb3dD
YXNlKGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgdW5zaWduZWQg
dmFsdWUgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkt
Pm1fY291bnRlcjsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+PSBIZXVyaXN0aWNzOjpjb3Vs
ZFRha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAv
IG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBIZXVyaXN0aWNzOjpjb3VsZFRha2VTbG93Q2FzZVRo
cmVzaG9sZDsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+PSBPcHRpb25zOjpjb3VsZFRha2VT
bG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAvIG1fZXhl
Y3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25zOjpjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZDsK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgUmFyZUNhc2VQcm9maWxlKiBhZGRTcGVjaWFs
RmFzdENhc2VQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkKQEAgLTcwNyw3ICs3MDcsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VTcGVjaWFsRmFzdENhc2Uo
aW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICB1bnNpZ25lZCBzcGVj
aWFsRmFzdENhc2VDb3VudCA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNl
dChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKLSAgICAgICAgICAgIHJldHVybiBzcGVjaWFs
RmFzdENhc2VDb3VudCA+PSBIZXVyaXN0aWNzOjpsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1D
b3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+KHNwZWNpYWxGYXN0Q2FzZUNvdW50KSAvIG1fZXhl
Y3V0aW9uRW50cnlDb3VudCA+PSBIZXVyaXN0aWNzOjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVz
aG9sZDsKKyAgICAgICAgICAgIHJldHVybiBzcGVjaWFsRmFzdENhc2VDb3VudCA+PSBPcHRpb25z
OjpsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+
KHNwZWNpYWxGYXN0Q2FzZUNvdW50KSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25z
OjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQogICAgICAgICAKICAg
ICAgICAgYm9vbCBsaWtlbHlUb1Rha2VEZWVwZXN0U2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0
KQpAQCAtNzE1LDcgKzcxNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgdW5zaWdu
ZWQgc2xvd0Nhc2VDb3VudCA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVj
b2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RD
YXNlQ291bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNv
ZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHNsb3dD
YXNlQ291bnQgLSBzcGVjaWFsRmFzdENhc2VDb3VudDsKLSAgICAgICAgICAgIHJldHVybiB2YWx1
ZSA+PSBIZXVyaXN0aWNzOjpsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0
aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBIZXVyaXN0
aWNzOjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKKyAgICAgICAgICAgIHJldHVybiB2
YWx1ZSA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0
aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25z
OjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQogICAgICAgICAKICAg
ICAgICAgYm9vbCBsaWtlbHlUb1Rha2VBbnlTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCkBA
IC03MjMsNyArNzIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICB1bnNpZ25lZCBz
bG93Q2FzZUNvdW50ID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVP
ZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCBzcGVjaWFsRmFzdENhc2VD
b3VudCA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9m
ZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0gc2xvd0Nhc2VD
b3VudCArIHNwZWNpYWxGYXN0Q2FzZUNvdW50OwotICAgICAgICAgICAgcmV0dXJuIHZhbHVlID49
IEhldXJpc3RpY3M6Omxpa2VseVRvVGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19j
YXN0PGRvdWJsZT4odmFsdWUpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49IEhldXJpc3RpY3M6
Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOworICAgICAgICAgICAgcmV0dXJuIHZhbHVl
ID49IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19j
YXN0PGRvdWJsZT4odmFsdWUpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49IE9wdGlvbnM6Omxp
a2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICB1bnNpZ25lZCBleGVjdXRpb25FbnRyeUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9leGVjdXRp
b25FbnRyeUNvdW50OyB9CkBAIC05MzMsMjUgKzkzMywyNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgLy8gdG8gYXZvaWQgdGhyYXNoaW5nLgogICAgICAgICB1bnNpZ25lZCByZW9wdGltaXph
dGlvblJldHJ5Q291bnRlcigpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCht
X3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyIDw9IEhldXJpc3RpY3M6OnJlb3B0aW1pemF0aW9u
UmV0cnlDb3VudGVyTWF4KTsKKyAgICAgICAgICAgIEFTU0VSVChtX3Jlb3B0aW1pemF0aW9uUmV0
cnlDb3VudGVyIDw9IE9wdGlvbnM6OnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4KTsKICAg
ICAgICAgICAgIHJldHVybiBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICB2b2lkIGNvdW50UmVvcHRpbWl6YXRpb24oKQogICAgICAgICB7
CiAgICAgICAgICAgICBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKys7Ci0gICAgICAgICAg
ICBpZiAobV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA+IEhldXJpc3RpY3M6OnJlb3B0aW1p
emF0aW9uUmV0cnlDb3VudGVyTWF4KQotICAgICAgICAgICAgICAgIG1fcmVvcHRpbWl6YXRpb25S
ZXRyeUNvdW50ZXIgPSBIZXVyaXN0aWNzOjpyZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1heDsK
KyAgICAgICAgICAgIGlmIChtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID4gT3B0aW9uczo6
cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXgpCisgICAgICAgICAgICAgICAgbV9yZW9wdGlt
aXphdGlvblJldHJ5Q291bnRlciA9IE9wdGlvbnM6OnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVy
TWF4OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpbnQzMl90IGNvdW50ZXJWYWx1ZUZv
ck9wdGltaXplQWZ0ZXJXYXJtVXAoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gSGV1
cmlzdGljczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCA8PCBy
ZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpOworICAgICAgICAgICAgcmV0dXJuIE9wdGlvbnM6
OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAgPDwgcmVvcHRpbWl6
YXRpb25SZXRyeUNvdW50ZXIoKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaW50MzJf
dCBjb3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCgpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBIZXVyaXN0aWNzOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRp
bWl6ZUFmdGVyTG9uZ1dhcm1VcCA8PCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpOworICAg
ICAgICAgICAgcmV0dXJuIE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXpl
QWZ0ZXJMb25nV2FybVVwIDw8IHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCk7CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIGludDMyX3QqIGFkZHJlc3NPZkV4ZWN1dGVDb3VudGVyKCkK
QEAgLTk3MCw3ICs5NzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gZXhwZW5zaXZl
IHRoYW4gZXhlY3V0aW5nIGJhc2VsaW5lIGNvZGUuCiAgICAgICAgIHZvaWQgb3B0aW1pemVOZXh0
SW52b2NhdGlvbigpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1fZXhlY3V0ZUNvdW50ZXIgPSBI
ZXVyaXN0aWNzOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZU5leHRJbnZvY2F0aW9u
OworICAgICAgICAgICAgbV9leGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50
ZXJWYWx1ZUZvck9wdGltaXplTmV4dEludm9jYXRpb247CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIC8vIENhbGwgdGhpcyB0byBwcmV2ZW50IG9wdGltaXphdGlvbiBmcm9tIGhhcHBlbmlu
ZyBhZ2Fpbi4gTm90ZSB0aGF0CkBAIC05ODAsNyArOTgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIC8vIHRoZSBmdXR1cmUgYXMgd2VsbC4KICAgICAgICAgdm9pZCBkb250T3B0aW1pemVB
bnl0aW1lU29vbigpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1fZXhlY3V0ZUNvdW50ZXIgPSBI
ZXVyaXN0aWNzOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29v
bjsKKyAgICAgICAgICAgIG1fZXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbjsKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgLy8gQ2FsbCB0aGlzIHRvIHJlaW5pdGlhbGl6ZSB0aGUgY291bnRlciB0byBpdHMg
c3RhcnRpbmcgc3RhdGUsCkBAIC0xMDIxLDcgKzEwMjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgLy8gaW4gdGhlIGJhc2VsaW5lIGNvZGUuCiAgICAgICAgIHZvaWQgb3B0aW1pemVTb29u
KCkKICAgICAgICAgewotICAgICAgICAgICAgbV9leGVjdXRlQ291bnRlciA9IEhldXJpc3RpY3M6
OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbiA8PCByZW9wdGltaXphdGlvblJl
dHJ5Q291bnRlcigpOworICAgICAgICAgICAgbV9leGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbiA8PCByZW9wdGltaXphdGlvblJldHJ5
Q291bnRlcigpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBUaGUgc3BlY3VsYXRp
dmUgSklUIHRyYWNrcyBpdHMgc3VjY2VzcyByYXRlLCBzbyB0aGF0IHdlIGNhbgpAQCAtMTA1NSwx
NyArMTA1NSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAg
IC8vIFRoZSBudW1iZXIgb2YgZmFpbHVyZXMgdGhhdCB0cmlnZ2VycyB0aGUgdXNlIG9mIHRoZSBy
YXRpby4KLSAgICAgICAgdW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGQoKSB7IHJldHVy
biBIZXVyaXN0aWNzOjpsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2UgPDwgYmFzZWxpbmVWZXJz
aW9uKCktPnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCk7IH0KLSAgICAgICAgdW5zaWduZWQg
bGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRGb3JMb29wKCkgeyByZXR1cm4gSGV1cmlzdGljczo6bGFy
Z2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlRm9yTG9vcCA8PCBiYXNlbGluZVZlcnNpb24oKS0+cmVv
cHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKTsgfQorICAgICAgICB1bnNpZ25lZCBsYXJnZUZhaWxD
b3VudFRocmVzaG9sZCgpIHsgcmV0dXJuIE9wdGlvbnM6OmxhcmdlRmFpbENvdW50VGhyZXNob2xk
QmFzZSA8PCBiYXNlbGluZVZlcnNpb24oKS0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKTsg
fQorICAgICAgICB1bnNpZ25lZCBsYXJnZUZhaWxDb3VudFRocmVzaG9sZEZvckxvb3AoKSB7IHJl
dHVybiBPcHRpb25zOjpsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2VGb3JMb29wIDw8IGJhc2Vs
aW5lVmVyc2lvbigpLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpOyB9CiAKICAgICAgICAg
Ym9vbCBzaG91bGRSZW9wdGltaXplTm93KCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IEhldXJpc3RpY3M6OmRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW8gKiBzcGVjdWxh
dGl2ZUZhaWxDb3VudGVyKCkgPj0gc3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigpICYmIHNwZWN1
bGF0aXZlRmFpbENvdW50ZXIoKSA+PSBsYXJnZUZhaWxDb3VudFRocmVzaG9sZCgpOworICAgICAg
ICAgICAgcmV0dXJuIE9wdGlvbnM6OmRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW8g
KiBzcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkgPj0gc3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigp
ICYmIHNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSA+PSBsYXJnZUZhaWxDb3VudFRocmVzaG9sZCgp
OwogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBzaG91bGRSZW9wdGltaXplRnJvbUxvb3BOb3co
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gSGV1cmlzdGljczo6ZGVzaXJlZFNwZWN1
bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbyAqIHNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSA+PSBzcGVj
dWxhdGl2ZVN1Y2Nlc3NDb3VudGVyKCkgJiYgc3BlY3VsYXRpdmVGYWlsQ291bnRlcigpID49IGxh
cmdlRmFpbENvdW50VGhyZXNob2xkRm9yTG9vcCgpOworICAgICAgICAgICAgcmV0dXJuIE9wdGlv
bnM6OmRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW8gKiBzcGVjdWxhdGl2ZUZhaWxD
b3VudGVyKCkgPj0gc3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigpICYmIHNwZWN1bGF0aXZlRmFp
bENvdW50ZXIoKSA+PSBsYXJnZUZhaWxDb3VudFRocmVzaG9sZEZvckxvb3AoKTsKICAgICAgICAg
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggZDIzMWFkNi4uMTFhOGUwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTk3OSw3ICs5NzksNyBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhib29sIHVzZXNSZXN1bHQsIGludCBjYWxs
VGFyZ2V0LCBOb2RlSW5kZXggYwogICAgIHVuc2lnbmVkIGRlcHRoID0gMDsKICAgICBmb3IgKElu
bGluZVN0YWNrRW50cnkqIGVudHJ5ID0gbV9pbmxpbmVTdGFja1RvcDsgZW50cnk7IGVudHJ5ID0g
ZW50cnktPm1fY2FsbGVyKSB7CiAgICAgICAgICsrZGVwdGg7Ci0gICAgICAgIGlmIChkZXB0aCA+
PSBIZXVyaXN0aWNzOjptYXhpbXVtSW5saW5pbmdEZXB0aCkKKyAgICAgICAgaWYgKGRlcHRoID49
IE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ0RlcHRoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OyAvLyBEZXB0aCBleGNlZWRlZC4KICAgICAgICAgCiAgICAgICAgIGlmIChlbnRyeS0+ZXhlY3V0
YWJsZSgpID09IGV4ZWN1dGFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NhcGFiaWxpdGllcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuaAppbmRleCAwZjcwYWE0Li4yNjUzYzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJJ
bnRyaW5zaWMuaCIKICNpbmNsdWRlICJERkdOb2RlLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5o
IgotI2luY2x1ZGUgIkhldXJpc3RpY3MuaCIKKyNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIApAQCAtNDAsMjgg
KzQwLDI4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIC8vIGNoZWNrIG9wY29k
ZXMuCiBpbmxpbmUgYm9vbCBtaWdodENvbXBpbGVFdmFsKENvZGVCbG9jayogY29kZUJsb2NrKQog
ewotICAgIHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBIZXVyaXN0aWNz
OjptYXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKKyAgICByZXR1
cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9uczo6bWF4aW11bU9wdGlt
aXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CiB9CiBpbmxpbmUgYm9vbCBtaWdodENv
bXBpbGVQcm9ncmFtKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIHJldHVybiBjb2RlQmxv
Y2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBIZXVyaXN0aWNzOjptYXhpbXVtT3B0aW1pemF0aW9u
Q2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKKyAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVj
dGlvbkNvdW50KCkgPD0gT3B0aW9uczo6bWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3Ry
dWN0aW9uQ291bnQ7CiB9CiBpbmxpbmUgYm9vbCBtaWdodENvbXBpbGVGdW5jdGlvbkZvckNhbGwo
Q29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgcmV0dXJuIGNvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25Db3VudCgpIDw9IEhldXJpc3RpY3M6Om1heGltdW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0
cnVjdGlvbkNvdW50OworICAgIHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8
PSBPcHRpb25zOjptYXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsK
IH0KIGlubGluZSBib29sIG1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ29uc3RydWN0KENvZGVCbG9j
ayogY29kZUJsb2NrKQogewotICAgIHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQo
KSA8PSBIZXVyaXN0aWNzOjptYXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25D
b3VudDsKKyAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9u
czo6bWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CiB9CiAKIGlu
bGluZSBib29sIG1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JDYWxsKENvZGVCbG9jayogY29kZUJsb2Nr
KQogewotICAgIHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBIZXVyaXN0
aWNzOjptYXhpbXVtRnVuY3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3Vu
dDsKKyAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9uczo6
bWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CiB9
CiBpbmxpbmUgYm9vbCBtaWdodElubGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0KENvZGVCbG9jayog
Y29kZUJsb2NrKQogewotICAgIHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8
PSBIZXVyaXN0aWNzOjptYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJ
bnN0cnVjdGlvbkNvdW50OworICAgIHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQo
KSA8PSBPcHRpb25zOjptYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJ
bnN0cnVjdGlvbkNvdW50OwogfQogCiAvLyBPcGNvZGUgY2hlY2tpbmcuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCmluZGV4
IDU4YTVmMjIuLjYxMjJmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCkBAIC01MTYsMTIgKzUxNiwxMiBAQCB2b2lk
IE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgT1NSRXhpdCYgZXhpdCwgU3BlY3Vs
YXRpb25SZWNvdmVyeSogcmVjbwogICAgIG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKG1faml0LmJhc2VsaW5lQ29kZUJsb2NrKCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAg
ICAgCiAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIGZld0ZhaWxzID0gbV9qaXQuYnJhbmNoMzIo
QXNzZW1ibHlIZWxwZXJzOjpCZWxvd09yRXF1YWwsIEdQUkluZm86OnJlZ1QyLCBBc3NlbWJseUhl
bHBlcnM6OkltbTMyKG1faml0LmNvZGVCbG9jaygpLT5sYXJnZUZhaWxDb3VudFRocmVzaG9sZCgp
KSk7Ci0gICAgbV9qaXQubXVsMzIoQXNzZW1ibHlIZWxwZXJzOjpJbW0zMihIZXVyaXN0aWNzOjpk
ZXNpcmVkU3BlY3VsYXRpdmVTdWNjZXNzRmFpbFJhdGlvKSwgR1BSSW5mbzo6cmVnVDIsIEdQUklu
Zm86OnJlZ1QyKTsKKyAgICBtX2ppdC5tdWwzMihBc3NlbWJseUhlbHBlcnM6OkltbTMyKE9wdGlv
bnM6OmRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW8pLCBHUFJJbmZvOjpyZWdUMiwg
R1BSSW5mbzo6cmVnVDIpOwogICAgIAogICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCBsb3dGYWls
UmF0ZSA9IG1faml0LmJyYW5jaDMyKEFzc2VtYmx5SGVscGVyczo6QmVsb3dPckVxdWFsLCBHUFJJ
bmZvOjpyZWdUMiwgR1BSSW5mbzo6cmVnVDEpOwogICAgIAogICAgIC8vIFJlb3B0aW1pemUgYXMg
c29vbiBhcyBwb3NzaWJsZS4KLSAgICBtX2ppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6SW1t
MzIoSGV1cmlzdGljczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVOZXh0SW52b2Nh
dGlvbiksIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2Nr
OjpvZmZzZXRPZkV4ZWN1dGVDb3VudGVyKCkpKTsKKyAgICBtX2ppdC5zdG9yZTMyKEFzc2VtYmx5
SGVscGVyczo6SW1tMzIoT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVO
ZXh0SW52b2NhdGlvbiksIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwg
Q29kZUJsb2NrOjpvZmZzZXRPZkV4ZWN1dGVDb3VudGVyKCkpKTsKICAgICBBc3NlbWJseUhlbHBl
cnM6Okp1bXAgZG9uZUFkanVzdGluZyA9IG1faml0Lmp1bXAoKTsKICAgICAKICAgICBmZXdGYWls
cy5saW5rKCZtX2ppdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXRDb21waWxlcjY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdENvbXBpbGVyNjQuY3BwCmluZGV4IGM5NjU0YzUuLjI2ZTJiOTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCkBAIC01NDQs
MTIgKzU0NCwxMiBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgT1NS
RXhpdCYgZXhpdCwgU3BlY3VsYXRpb25SZWNvdmVyeSogcmVjbwogICAgIG1faml0Lm1vdmUoQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1faml0LmJhc2VsaW5lQ29kZUJsb2NrKCkpLCBH
UFJJbmZvOjpyZWdUMCk7CiAgICAgCiAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIGZld0ZhaWxz
ID0gbV9qaXQuYnJhbmNoMzIoQXNzZW1ibHlIZWxwZXJzOjpCZWxvd09yRXF1YWwsIEdQUkluZm86
OnJlZ1QyLCBBc3NlbWJseUhlbHBlcnM6OkltbTMyKG1faml0LmNvZGVCbG9jaygpLT5sYXJnZUZh
aWxDb3VudFRocmVzaG9sZCgpKSk7Ci0gICAgbV9qaXQubXVsMzIoQXNzZW1ibHlIZWxwZXJzOjpJ
bW0zMihIZXVyaXN0aWNzOjpkZXNpcmVkU3BlY3VsYXRpdmVTdWNjZXNzRmFpbFJhdGlvKSwgR1BS
SW5mbzo6cmVnVDIsIEdQUkluZm86OnJlZ1QyKTsKKyAgICBtX2ppdC5tdWwzMihBc3NlbWJseUhl
bHBlcnM6OkltbTMyKE9wdGlvbnM6OmRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW8p
LCBHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6cmVnVDIpOwogICAgIAogICAgIEFzc2VtYmx5SGVs
cGVyczo6SnVtcCBsb3dGYWlsUmF0ZSA9IG1faml0LmJyYW5jaDMyKEFzc2VtYmx5SGVscGVyczo6
QmVsb3dPckVxdWFsLCBHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6cmVnVDEpOwogICAgIAogICAg
IC8vIFJlb3B0aW1pemUgYXMgc29vbiBhcyBwb3NzaWJsZS4KLSAgICBtX2ppdC5zdG9yZTMyKEFz
c2VtYmx5SGVscGVyczo6SW1tMzIoSGV1cmlzdGljczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
T3B0aW1pemVOZXh0SW52b2NhdGlvbiksIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZv
OjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkV4ZWN1dGVDb3VudGVyKCkpKTsKKyAgICBtX2pp
dC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6SW1tMzIoT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRl
clZhbHVlRm9yT3B0aW1pemVOZXh0SW52b2NhdGlvbiksIEFzc2VtYmx5SGVscGVyczo6QWRkcmVz
cyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkV4ZWN1dGVDb3VudGVyKCkpKTsK
ICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgZG9uZUFkanVzdGluZyA9IG1faml0Lmp1bXAoKTsK
ICAgICAKICAgICBmZXdGYWlscy5saW5rKCZtX2ppdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya1N0YWNrLmNwcAppbmRleCAzZjRmZGE3Li5kZDBlNmZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUg
IkNvbnNlcnZhdGl2ZVJvb3RzLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1ZGUgIkhldXJp
c3RpY3MuaCIKKyNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2lu
Y2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCkBAIC02MCw3ICs2MCw3IEBA
IE1hcmtTdGFja1NlZ21lbnQqIE1hcmtTdGFja1NlZ21lbnRBbGxvY2F0b3I6OmFsbG9jYXRlKCkK
ICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxNYXJrU3RhY2tTZWdt
ZW50Kj4oT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoSGV1cmlzdGljczo6Z2NNYXJrU3Rh
Y2tTZWdtZW50U2l6ZSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxNYXJrU3RhY2tTZWdtZW50
Kj4oT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoT3B0aW9uczo6Z2NNYXJrU3RhY2tTZWdt
ZW50U2l6ZSkpOwogfQogCiB2b2lkIE1hcmtTdGFja1NlZ21lbnRBbGxvY2F0b3I6OnJlbGVhc2Uo
TWFya1N0YWNrU2VnbWVudCogc2VnbWVudCkKQEAgLTgxLDEzICs4MSwxMyBAQCB2b2lkIE1hcmtT
dGFja1NlZ21lbnRBbGxvY2F0b3I6OnNocmlua1Jlc2VydmUoKQogICAgIHdoaWxlIChzZWdtZW50
cykgewogICAgICAgICBNYXJrU3RhY2tTZWdtZW50KiB0b0ZyZWUgPSBzZWdtZW50czsKICAgICAg
ICAgc2VnbWVudHMgPSBzZWdtZW50cy0+bV9wcmV2aW91czsKLSAgICAgICAgT1NBbGxvY2F0b3I6
OmRlY29tbWl0QW5kUmVsZWFzZSh0b0ZyZWUsIEhldXJpc3RpY3M6OmdjTWFya1N0YWNrU2VnbWVu
dFNpemUpOworICAgICAgICBPU0FsbG9jYXRvcjo6ZGVjb21taXRBbmRSZWxlYXNlKHRvRnJlZSwg
T3B0aW9uczo6Z2NNYXJrU3RhY2tTZWdtZW50U2l6ZSk7CiAgICAgfQogfQogCiBNYXJrU3RhY2tB
cnJheTo6TWFya1N0YWNrQXJyYXkoTWFya1N0YWNrU2VnbWVudEFsbG9jYXRvciYgYWxsb2NhdG9y
KQogICAgIDogbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQotICAgICwgbV9zZWdtZW50Q2FwYWNpdHko
TWFya1N0YWNrU2VnbWVudDo6Y2FwYWNpdHlGcm9tU2l6ZShIZXVyaXN0aWNzOjpnY01hcmtTdGFj
a1NlZ21lbnRTaXplKSkKKyAgICAsIG1fc2VnbWVudENhcGFjaXR5KE1hcmtTdGFja1NlZ21lbnQ6
OmNhcGFjaXR5RnJvbVNpemUoT3B0aW9uczo6Z2NNYXJrU3RhY2tTZWdtZW50U2l6ZSkpCiAgICAg
LCBtX3RvcCgwKQogICAgICwgbV9udW1iZXJPZlByZXZpb3VzU2VnbWVudHMoMCkKIHsKQEAgLTE0
NSwxMCArMTQ1LDEwIEBAIGJvb2wgTWFya1N0YWNrQXJyYXk6OmRvbmF0ZVNvbWVDZWxsc1RvKE1h
cmtTdGFja0FycmF5JiBvdGhlcikKICAgICBvdGhlci52YWxpZGF0ZVByZXZpb3VzKCk7CiAgICAg
ICAgIAogICAgIC8vIEZhc3QgY2hlY2s6IHNlZSBpZiB0aGUgb3RoZXIgbWFyayBzdGFjayBhbHJl
YWR5IGhhcyBlbm91Z2ggc2VnbWVudHMuCi0gICAgaWYgKG90aGVyLm1fbnVtYmVyT2ZQcmV2aW91
c1NlZ21lbnRzICsgMSA+PSBIZXVyaXN0aWNzOjptYXhpbXVtTnVtYmVyT2ZTaGFyZWRTZWdtZW50
cykKKyAgICBpZiAob3RoZXIubV9udW1iZXJPZlByZXZpb3VzU2VnbWVudHMgKyAxID49IE9wdGlv
bnM6Om1heGltdW1OdW1iZXJPZlNoYXJlZFNlZ21lbnRzKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIAotICAgIHNpemVfdCBudW1iZXJPZkNlbGxzVG9LZWVwID0gSGV1cmlzdGljczo6
bWluaW11bU51bWJlck9mQ2VsbHNUb0tlZXA7CisgICAgc2l6ZV90IG51bWJlck9mQ2VsbHNUb0tl
ZXAgPSBPcHRpb25zOjptaW5pbXVtTnVtYmVyT2ZDZWxsc1RvS2VlcDsKICAgICBBU1NFUlQobV90
b3AgPiBudW1iZXJPZkNlbGxzVG9LZWVwIHx8IG1fdG9wU2VnbWVudC0+bV9wcmV2aW91cyk7CiAg
ICAgICAgIAogICAgIC8vIExvb2tzIGxpa2Ugd2Ugc2hvdWxkIGRvbmF0ZSEgR2l2ZSB0aGUgb3Ro
ZXIgbWFyayBzdGFjayBhbGwgb2Ygb3VyCkBAIC0yMDksOCArMjA5LDggQEAgdm9pZCBNYXJrU3Rh
Y2tBcnJheTo6c3RlYWxTb21lQ2VsbHNGcm9tKE1hcmtTdGFja0FycmF5JiBvdGhlcikKICAgICB9
CiAgICAgICAgIAogICAgIC8vIE90aGVyd2lzZSBkcmFpbiAxL050aCBvZiB0aGUgc2hhcmVkIGFy
cmF5IHdoZXJlIE4gaXMgdGhlIG51bWJlciBvZgotICAgIC8vIHdvcmtlcnMsIG9yIEhldXJpc3Rp
Y3M6Om1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVwLCB3aGljaGV2ZXIgaXMgYmlnZ2VyLgotICAg
IHNpemVfdCBudW1iZXJPZkNlbGxzVG9TdGVhbCA9IHN0ZDo6bWF4KChzaXplX3QpSGV1cmlzdGlj
czo6bWluaW11bU51bWJlck9mQ2VsbHNUb0tlZXAsIG90aGVyLnNpemUoKSAvIEhldXJpc3RpY3M6
Om51bWJlck9mR0NNYXJrZXJzKTsKKyAgICAvLyB3b3JrZXJzLCBvciBPcHRpb25zOjptaW5pbXVt
TnVtYmVyT2ZDZWxsc1RvS2VlcCwgd2hpY2hldmVyIGlzIGJpZ2dlci4KKyAgICBzaXplX3QgbnVt
YmVyT2ZDZWxsc1RvU3RlYWwgPSBzdGQ6Om1heCgoc2l6ZV90KU9wdGlvbnM6Om1pbmltdW1OdW1i
ZXJPZkNlbGxzVG9LZWVwLCBvdGhlci5zaXplKCkgLyBPcHRpb25zOjpudW1iZXJPZkdDTWFya2Vy
cyk7CiAgICAgd2hpbGUgKG51bWJlck9mQ2VsbHNUb1N0ZWFsLS0gPiAwICYmIG90aGVyLmNhblJl
bW92ZUxhc3QoKSkKICAgICAgICAgYXBwZW5kKG90aGVyLnJlbW92ZUxhc3QoKSk7CiB9CkBAIC0y
MzgsNyArMjM4LDcgQEAgTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YTo6TWFya1N0YWNrVGhyZWFk
U2hhcmVkRGF0YShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiAgICAgLCBtX3BhcmFsbGVsTWFy
a2Vyc1Nob3VsZEV4aXQoZmFsc2UpCiB7CiAjaWYgRU5BQkxFKFBBUkFMTEVMX0dDKQotICAgIGZv
ciAodW5zaWduZWQgaSA9IDE7IGkgPCBIZXVyaXN0aWNzOjpudW1iZXJPZkdDTWFya2VyczsgKytp
KSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IE9wdGlvbnM6Om51bWJlck9mR0NNYXJr
ZXJzOyArK2kpIHsKICAgICAgICAgbV9tYXJraW5nVGhyZWFkcy5hcHBlbmQoY3JlYXRlVGhyZWFk
KG1hcmtpbmdUaHJlYWRTdGFydEZ1bmMsIHRoaXMsICJKYXZhU2NyaXB0Q29yZTo6TWFya2luZyIp
KTsKICAgICAgICAgQVNTRVJUKG1fbWFya2luZ1RocmVhZHMubGFzdCgpKTsKICAgICB9CkBAIC0z
MjksNyArMzI5LDcgQEAgdm9pZCBTbG90VmlzaXRvcjo6ZG9uYXRlU2xvdygpCiAgICAgaWYgKG1f
c3RhY2suZG9uYXRlU29tZUNlbGxzVG8obV9zaGFyZWQubV9zaGFyZWRNYXJrU3RhY2spKSB7CiAg
ICAgICAgIC8vIE9ubHkgd2FrZSB1cCB0aHJlYWRzIGlmIHRoZSBzaGFyZWQgc3RhY2sgaXMgYmln
IGVub3VnaDsgb3RoZXJ3aXNlIGFzc3VtZSB0aGF0CiAgICAgICAgIC8vIGl0J3MgbW9yZSBwcm9m
aXRhYmxlIGZvciB1cyB0byBqdXN0IHNjYW4gdGhpcyBvdXJzZWx2ZXMgbGF0ZXIuCi0gICAgICAg
IGlmIChtX3NoYXJlZC5tX3NoYXJlZE1hcmtTdGFjay5zaXplKCkgPj0gSGV1cmlzdGljczo6c2hh
cmVkU3RhY2tXYWtldXBUaHJlc2hvbGQpCisgICAgICAgIGlmIChtX3NoYXJlZC5tX3NoYXJlZE1h
cmtTdGFjay5zaXplKCkgPj0gT3B0aW9uczo6c2hhcmVkU3RhY2tXYWtldXBUaHJlc2hvbGQpCiAg
ICAgICAgICAgICBtX3NoYXJlZC5tX21hcmtpbmdDb25kaXRpb24uYnJvYWRjYXN0KCk7CiAgICAg
fQogfQpAQCAtMzQzLDEwICszNDMsMTAgQEAgdm9pZCBTbG90VmlzaXRvcjo6ZHJhaW4oKQogICAg
IHZvaWQqIGpzU3RyaW5nVlB0ciA9IG1fanNTdHJpbmdWUHRyOwogCiAjaWYgRU5BQkxFKFBBUkFM
TEVMX0dDKQotICAgIGlmIChIZXVyaXN0aWNzOjpudW1iZXJPZkdDTWFya2VycyA+IDEpIHsKKyAg
ICBpZiAoT3B0aW9uczo6bnVtYmVyT2ZHQ01hcmtlcnMgPiAxKSB7CiAgICAgICAgIHdoaWxlICgh
bV9zdGFjay5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIG1fc3RhY2sucmVmaWxsKCk7Ci0gICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGNvdW50ZG93biA9IEhldXJpc3RpY3M6Om1pbmltdW1OdW1i
ZXJPZlNjYW5zQmV0d2VlblJlYmFsYW5jZTsgbV9zdGFjay5jYW5SZW1vdmVMYXN0KCkgJiYgY291
bnRkb3duLS07KQorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBjb3VudGRvd24gPSBPcHRpb25z
OjptaW5pbXVtTnVtYmVyT2ZTY2Fuc0JldHdlZW5SZWJhbGFuY2U7IG1fc3RhY2suY2FuUmVtb3Zl
TGFzdCgpICYmIGNvdW50ZG93bi0tOykKICAgICAgICAgICAgICAgICB2aXNpdENoaWxkcmVuKCp0
aGlzLCBtX3N0YWNrLnJlbW92ZUxhc3QoKSwganNGaW5hbE9iamVjdFZQdHIsIGpzQXJyYXlWUHRy
LCBqc1N0cmluZ1ZQdHIpOwogICAgICAgICAgICAgZG9uYXRlS25vd25QYXJhbGxlbCgpOwogICAg
ICAgICB9CkBAIC0zNjcsMTQgKzM2NywxNCBAQCB2b2lkIFNsb3RWaXNpdG9yOjpkcmFpbkZyb21T
aGFyZWQoU2hhcmVkRHJhaW5Nb2RlIHNoYXJlZERyYWluTW9kZSkKIHsKICAgICBBU1NFUlQobV9p
c0luUGFyYWxsZWxNb2RlKTsKICAgICAKLSAgICBBU1NFUlQoSGV1cmlzdGljczo6bnVtYmVyT2ZH
Q01hcmtlcnMpOworICAgIEFTU0VSVChPcHRpb25zOjpudW1iZXJPZkdDTWFya2Vycyk7CiAgICAg
CiAgICAgYm9vbCBzaG91bGRCZVBhcmFsbGVsOwogCiAjaWYgRU5BQkxFKFBBUkFMTEVMX0dDKQot
ICAgIHNob3VsZEJlUGFyYWxsZWwgPSBIZXVyaXN0aWNzOjpudW1iZXJPZkdDTWFya2VycyA+IDE7
CisgICAgc2hvdWxkQmVQYXJhbGxlbCA9IE9wdGlvbnM6Om51bWJlck9mR0NNYXJrZXJzID4gMTsK
ICNlbHNlCi0gICAgQVNTRVJUKEhldXJpc3RpY3M6Om51bWJlck9mR0NNYXJrZXJzID09IDEpOwor
ICAgIEFTU0VSVChPcHRpb25zOjpudW1iZXJPZkdDTWFya2VycyA9PSAxKTsKICAgICBzaG91bGRC
ZVBhcmFsbGVsID0gZmFsc2U7CiAjZW5kaWYKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya1N0YWNrLmgKaW5kZXggYzUwODAxOS4uOGNiZGM2MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya1N0YWNrLmgKQEAgLTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgTWFya1N0YWNrX2gK
IAogI2luY2x1ZGUgIkhhbmRsZVR5cGVzLmgiCi0jaW5jbHVkZSAiSGV1cmlzdGljcy5oIgorI2lu
Y2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiUmVnaXN0
ZXIuaCIKICNpbmNsdWRlICJVbmNvbmRpdGlvbmFsRmluYWxpemVyLmgiCkBAIC0yNjEsNyArMjYx
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICB2b2lkIG1lcmdlT3BhcXVl
Um9vdHNJZlByb2ZpdGFibGUoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KG1fb3BhcXVlUm9vdHMuc2l6ZSgpKSA8IEhldXJpc3RpY3M6Om9wYXF1ZVJv
b3RNZXJnZVRocmVzaG9sZCkKKyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
bV9vcGFxdWVSb290cy5zaXplKCkpIDwgT3B0aW9uczo6b3BhcXVlUm9vdE1lcmdlVGhyZXNob2xk
KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIG1lcmdlT3BhcXVlUm9vdHMo
KTsKICAgICAgICAgfQpAQCAtMzA5LDcgKzMwOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGlu
bGluZSB2b2lkIE1hcmtTdGFjazo6YWRkT3BhcXVlUm9vdCh2b2lkKiByb290KQogICAgIHsKICNp
ZiBFTkFCTEUoUEFSQUxMRUxfR0MpCi0gICAgICAgIGlmIChIZXVyaXN0aWNzOjpudW1iZXJPZkdD
TWFya2VycyA9PSAxKSB7CisgICAgICAgIGlmIChPcHRpb25zOjpudW1iZXJPZkdDTWFya2VycyA9
PSAxKSB7CiAgICAgICAgICAgICAvLyBQdXQgZGlyZWN0bHkgaW50byB0aGUgc2hhcmVkIEhhc2hT
ZXQuCiAgICAgICAgICAgICBtX3NoYXJlZC5tX29wYXF1ZVJvb3RzLmFkZChyb290KTsKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTM3NSw3ICszNzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGlubGluZSBib29sIE1hcmtTdGFja0FycmF5OjpjYW5Eb25hdGVTb21lQ2VsbHMoKQogICAgIHsK
LSAgICAgICAgc2l6ZV90IG51bWJlck9mQ2VsbHNUb0tlZXAgPSBIZXVyaXN0aWNzOjptaW5pbXVt
TnVtYmVyT2ZDZWxsc1RvS2VlcDsKKyAgICAgICAgc2l6ZV90IG51bWJlck9mQ2VsbHNUb0tlZXAg
PSBPcHRpb25zOjptaW5pbXVtTnVtYmVyT2ZDZWxsc1RvS2VlcDsKICAgICAgICAgLy8gQW5vdGhl
ciBjaGVjazogc2VlIGlmIHdlIGhhdmUgZW5vdWdoIGNlbGxzIHRvIHdhcnJhbnQgZG9uYXRpb24u
CiAgICAgICAgIGlmIChtX3RvcCA8PSBudW1iZXJPZkNlbGxzVG9LZWVwKSB7CiAgICAgICAgICAg
ICAvLyBUaGlzIGluZGljYXRlcyB0aGF0IHdlIG1pZ2h0IG5vdCB3YW50IHRvIGRvbmF0ZSBhbnl0
aGluZzsgY2hlY2sgaWYgd2UgaGF2ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvU2xvdFZpc2l0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNp
dG9yLmgKaW5kZXggYTQ2MTc4MS4uNjQ3YjJjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9TbG90VmlzaXRvci5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRvbmF0
ZSgpCiAgICAgewogICAgICAgICBBU1NFUlQobV9pc0luUGFyYWxsZWxNb2RlKTsKLSAgICAgICAg
aWYgKEhldXJpc3RpY3M6Om51bWJlck9mR0NNYXJrZXJzID09IDEpCisgICAgICAgIGlmIChPcHRp
b25zOjpudW1iZXJPZkdDTWFya2VycyA9PSAxKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAKICAgICAgICAgZG9uYXRlS25vd25QYXJhbGxlbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCmluZGV4IDU0MmI0ODQuLmJkNzNjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
QEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBKSVQ6OmVtaXRPcHRpbWl6YXRpb25DaGVjayhPcHRpbWl6
YXRpb25DaGVja0tpbmQga2luZCkKICAgICBpZiAoIXNob3VsZEVtaXRQcm9maWxpbmcoKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIEp1bXAgc2tpcE9wdGltaXplID0gYnJhbmNoQWRkMzIo
U2lnbmVkLCBUcnVzdGVkSW1tMzIoa2luZCA9PSBMb29wT3B0aW1pemF0aW9uQ2hlY2sgPyBIZXVy
aXN0aWNzOjpleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yTG9vcCA6IEhldXJpc3RpY3M6OmV4
ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JSZXR1cm4pLCBBYnNvbHV0ZUFkZHJlc3MobV9jb2Rl
QmxvY2stPmFkZHJlc3NPZkV4ZWN1dGVDb3VudGVyKCkpKTsKKyAgICBKdW1wIHNraXBPcHRpbWl6
ZSA9IGJyYW5jaEFkZDMyKFNpZ25lZCwgVHJ1c3RlZEltbTMyKGtpbmQgPT0gTG9vcE9wdGltaXph
dGlvbkNoZWNrID8gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvckxvb3AgOiBP
cHRpb25zOjpleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yUmV0dXJuKSwgQWJzb2x1dGVBZGRy
ZXNzKG1fY29kZUJsb2NrLT5hZGRyZXNzT2ZFeGVjdXRlQ291bnRlcigpKSk7CiAgICAgSklUU3R1
YkNhbGwgc3R1YkNhbGwodGhpcywga2luZCA9PSBMb29wT3B0aW1pemF0aW9uQ2hlY2sgPyBjdGlf
b3B0aW1pemVfZnJvbV9sb29wIDogY3RpX29wdGltaXplX2Zyb21fcmV0KTsKICAgICBpZiAoa2lu
ZCA9PSBMb29wT3B0aW1pemF0aW9uQ2hlY2spCiAgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50
KEltbTMyKG1fYnl0ZWNvZGVPZmZzZXQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggZmMwYzU2
MC4uMzZkM2Y3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTEwMiw4ICsxMDIsOCBAQCBzdHJ1
Y3QgU2NyaXB0IHsKICAgICB9CiB9OwogCi1zdHJ1Y3QgT3B0aW9ucyB7Ci0gICAgT3B0aW9ucygp
CitzdHJ1Y3QgQ29tbWFuZExpbmUgeworICAgIENvbW1hbmRMaW5lKCkKICAgICAgICAgOiBpbnRl
cmFjdGl2ZShmYWxzZSkKICAgICAgICAgLCBkdW1wKGZhbHNlKQogICAgIHsKQEAgLTU0OCw3ICs1
NDgsNyBAQCBzdGF0aWMgTk9fUkVUVVJOIHZvaWQgcHJpbnRVc2FnZVN0YXRlbWVudChKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIGJvb2wgaGVscCA9CiAgICAgZXhpdChoZWxwID8gRVhJVF9TVUND
RVNTIDogRVhJVF9GQUlMVVJFKTsKIH0KIAotc3RhdGljIHZvaWQgcGFyc2VBcmd1bWVudHMoaW50
IGFyZ2MsIGNoYXIqKiBhcmd2LCBPcHRpb25zJiBvcHRpb25zLCBKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEpCitzdGF0aWMgdm9pZCBwYXJzZUFyZ3VtZW50cyhpbnQgYXJnYywgY2hhcioqIGFyZ3Ys
IENvbW1hbmRMaW5lJiBvcHRpb25zLCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiB7CiAgICAg
aW50IGkgPSAxOwogICAgIGZvciAoOyBpIDwgYXJnYzsgKytpKSB7CkBAIC02MDIsNyArNjAyLDcg
QEAgaW50IGpzY21haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2LCBKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEpCiB7CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAotICAg
IE9wdGlvbnMgb3B0aW9uczsKKyAgICBDb21tYW5kTGluZSBvcHRpb25zOwogICAgIHBhcnNlQXJn
dW1lbnRzKGFyZ2MsIGFyZ3YsIG9wdGlvbnMsIGdsb2JhbERhdGEpOwogCiAgICAgR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgR2xv
YmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKmdsb2JhbERhdGEsIGpzTnVsbCgpKSwgb3B0aW9u
cy5hcmd1bWVudHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SGV1cmlzdGljcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNz
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzc3M2JjOS4uMDAwMDAwMAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDIxNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJIZXVyaXN0aWNzLmgi
Ci0jaW5jbHVkZSA8d3RmL1BhZ2VCbG9jay5oPgotCi0jaW5jbHVkZSA8bGltaXRzPgotCi0jaWYg
T1MoREFSV0lOKSAmJiBFTkFCTEUoUEFSQUxMRUxfR0MpCi0jaW5jbHVkZSA8c3lzL3N5c2N0bC5o
PgotI2VuZGlmCi0KLS8vIFNldCB0byAxIHRvIGNvbnRyb2wgdGhlIGhldXJpc3RpY3MgdXNpbmcg
ZW52aXJvbm1lbnQgdmFyaWFibGVzLgotI2RlZmluZSBFTkFCTEVfUlVOX1RJTUVfSEVVUklTVElD
UyAwCi0KLSNpZiBFTkFCTEUoUlVOX1RJTUVfSEVVUklTVElDUykKLSNpbmNsdWRlIDxzdGRpby5o
PgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNl
bmRpZgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEhldXJpc3RpY3MgewotCi11bnNpZ25l
ZCBtYXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKLQotdW5zaWdu
ZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7
Ci11bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJbnN0
cnVjdGlvbkNvdW50OwotCi11bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsKLQotaW50MzJf
dCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOwotaW50MzJfdCBl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKLWludDMyX3Qg
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247Ci1pbnQzMl90
IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbjsKLWludDMyX3QgZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9yT3B0aW1pemVOZXh0SW52b2NhdGlvbjsKLQotaW50MzJfdCBleGVjdXRp
b25Db3VudGVySW5jcmVtZW50Rm9yTG9vcDsKLWludDMyX3QgZXhlY3V0aW9uQ291bnRlckluY3Jl
bWVudEZvclJldHVybjsKLQotdW5zaWduZWQgZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxS
YXRpbzsKLQotZG91YmxlIGxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwotZG91YmxlIGNv
dWxkVGFrZVNsb3dDYXNlVGhyZXNob2xkOwotdW5zaWduZWQgbGlrZWx5VG9UYWtlU2xvd0Nhc2VN
aW5pbXVtQ291bnQ7Ci11bnNpZ25lZCBjb3VsZFRha2VTbG93Q2FzZU1pbmltdW1Db3VudDsKLQot
ZG91YmxlIG9zckV4aXRQcm9taW5lbmNlRm9yRnJlcXVlbnRFeGl0U2l0ZTsKLQotdW5zaWduZWQg
bGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlOwotdW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJl
c2hvbGRCYXNlRm9yTG9vcDsKLQotdW5zaWduZWQgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJN
YXg7Ci11bnNpZ25lZCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlclN0ZXA7Ci0KLXVuc2lnbmVk
IG1pbmltdW1PcHRpbWl6YXRpb25EZWxheTsKLXVuc2lnbmVkIG1heGltdW1PcHRpbWl6YXRpb25E
ZWxheTsKLWRvdWJsZSBkZXNpcmVkUHJvZmlsZUxpdmVuZXNzUmF0ZTsKLWRvdWJsZSBkZXNpcmVk
UHJvZmlsZUZ1bGxuZXNzUmF0ZTsKLQotZG91YmxlIGRvdWJsZVZvdGVSYXRpb0ZvckRvdWJsZUZv
cm1hdDsKLQotdW5zaWduZWQgbWluaW11bU51bWJlck9mU2NhbnNCZXR3ZWVuUmViYWxhbmNlOwot
dW5zaWduZWQgZ2NNYXJrU3RhY2tTZWdtZW50U2l6ZTsKLXVuc2lnbmVkIG1pbmltdW1OdW1iZXJP
ZkNlbGxzVG9LZWVwOwotdW5zaWduZWQgbWF4aW11bU51bWJlck9mU2hhcmVkU2VnbWVudHM7Ci11
bnNpZ25lZCBzaGFyZWRTdGFja1dha2V1cFRocmVzaG9sZDsKLXVuc2lnbmVkIG51bWJlck9mR0NN
YXJrZXJzOwotdW5zaWduZWQgb3BhcXVlUm9vdE1lcmdlVGhyZXNob2xkOwotCi0jaWYgRU5BQkxF
KFJVTl9USU1FX0hFVVJJU1RJQ1MpCi1zdGF0aWMgYm9vbCBwYXJzZShjb25zdCBjaGFyKiBzdHJp
bmcsIGludDMyX3QmIHZhbHVlKQotewotICAgIHJldHVybiBzc2NhbmYoc3RyaW5nLCAiJWQiLCAm
dmFsdWUpID09IDE7Ci19Ci0KLXN0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywg
dW5zaWduZWQmIHZhbHVlKQotewotICAgIHJldHVybiBzc2NhbmYoc3RyaW5nLCAiJXUiLCAmdmFs
dWUpID09IDE7Ci19Ci0KLXN0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywgZG91
YmxlJiB2YWx1ZSkKLXsKLSAgICByZXR1cm4gc3NjYW5mKHN0cmluZywgIiVsZiIsICZ2YWx1ZSkg
PT0gMTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLXZvaWQgc2V0SGV1
cmlzdGljKFQmIHZhcmlhYmxlLCBjb25zdCBjaGFyKiBuYW1lLCBVIHZhbHVlKQotewotICAgIGNv
bnN0IGNoYXIqIHN0cmluZ1ZhbHVlID0gZ2V0ZW52KG5hbWUpOwotICAgIGlmICghc3RyaW5nVmFs
dWUpIHsKLSAgICAgICAgdmFyaWFibGUgPSBzYWZlQ2FzdDxUPih2YWx1ZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKHBhcnNlKHN0cmluZ1ZhbHVlLCB2YXJpYWJsZSkp
Ci0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBmcHJpbnRmKHN0ZGVyciwgIldBUk5JTkc6IGZh
aWxlZCB0byBwYXJzZSAlcz0lc1xuIiwgbmFtZSwgc3RyaW5nVmFsdWUpOwotICAgIHZhcmlhYmxl
ID0gc2FmZUNhc3Q8VD4odmFsdWUpOwotfQotCi0jZGVmaW5lIFNFVCh2YXJpYWJsZSwgdmFsdWUp
IHNldEhldXJpc3RpYyh2YXJpYWJsZSwgIkpTQ18iICN2YXJpYWJsZSwgdmFsdWUpCi0jZWxzZQot
I2RlZmluZSBTRVQodmFyaWFibGUsIHZhbHVlKSB2YXJpYWJsZSA9IHZhbHVlCi0jZW5kaWYKLQot
dm9pZCBpbml0aWFsaXplSGV1cmlzdGljcygpCi17Ci0gICAgU0VUKG1heGltdW1PcHRpbWl6YXRp
b25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50LCAxMDAwKTsKLSAgICAKLSAgICBTRVQobWF4aW11
bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQsIDE1MCk7Ci0g
ICAgU0VUKG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0
aW9uQ291bnQsIDgwKTsKLSAgICAKLSAgICBTRVQobWF4aW11bUlubGluaW5nRGVwdGgsIDUpOwot
Ci0gICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAsICAg
ICAtMTAwMCk7Ci0gICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJM
b25nV2FybVVwLCAtNTAwMCk7Ci0gICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRP
cHRpbWl6ZUFueXRpbWVTb29uLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSk7
Ci0gICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbiwgICAgICAgICAg
ICAtMTAwMCk7Ci0gICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplTmV4dElu
dm9jYXRpb24sICAwKTsKLQotICAgIFNFVChleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yTG9v
cCwgICAxKTsKLSAgICBTRVQoZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvclJldHVybiwgMTUp
OwotCi0gICAgU0VUKGRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW8sIDYpOwotICAg
IAotICAgIFNFVChsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZCwgICAgMC4xNSk7Ci0gICAg
U0VUKGNvdWxkVGFrZVNsb3dDYXNlVGhyZXNob2xkLCAgICAgICAwLjA1KTsgLy8gU2hvdWxkbid0
IGJlIHplcm8gYmVjYXVzZSBzb21lIG9wcyB3aWxsIHNwdXJpb3VzbHkgdGFrZSBzbG93IGNhc2Us
IGZvciBleGFtcGxlIGZvciBsaW5raW5nIG9yIGNhY2hpbmcuCi0gICAgU0VUKGxpa2VseVRvVGFr
ZVNsb3dDYXNlTWluaW11bUNvdW50LCAxMDApOwotICAgIFNFVChjb3VsZFRha2VTbG93Q2FzZU1p
bmltdW1Db3VudCwgICAgMTApOwotICAgIAotICAgIFNFVChvc3JFeGl0UHJvbWluZW5jZUZvckZy
ZXF1ZW50RXhpdFNpdGUsIDAuMyk7Ci0KLSAgICBTRVQobGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRC
YXNlLCAgICAgICAgMjApOwotICAgIFNFVChsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2VGb3JM
b29wLCAxKTsKLQotICAgIFNFVChyZW9wdGltaXphdGlvblJldHJ5Q291bnRlclN0ZXAsIDEpOwot
Ci0gICAgU0VUKG1pbmltdW1PcHRpbWl6YXRpb25EZWxheSwgICAxKTsKLSAgICBTRVQobWF4aW11
bU9wdGltaXphdGlvbkRlbGF5LCAgIDUpOwotICAgIFNFVChkZXNpcmVkUHJvZmlsZUxpdmVuZXNz
UmF0ZSwgMC43NSk7Ci0gICAgU0VUKGRlc2lyZWRQcm9maWxlRnVsbG5lc3NSYXRlLCAwLjM1KTsK
LSAgICAKLSAgICBTRVQoZG91YmxlVm90ZVJhdGlvRm9yRG91YmxlRm9ybWF0LCAyKTsKLSAgICAK
LSAgICBTRVQobWluaW11bU51bWJlck9mU2NhbnNCZXR3ZWVuUmViYWxhbmNlLCAxMDAwMCk7Ci0g
ICAgU0VUKGdjTWFya1N0YWNrU2VnbWVudFNpemUsICAgICAgICAgICAgICAgcGFnZVNpemUoKSk7
Ci0gICAgU0VUKG1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVwLCAgICAgICAgICAgMTApOwotICAg
IFNFVChtYXhpbXVtTnVtYmVyT2ZTaGFyZWRTZWdtZW50cywgICAgICAgIDMpOwotICAgIFNFVChz
aGFyZWRTdGFja1dha2V1cFRocmVzaG9sZCwgICAgICAgICAgIDEpOwotICAgIFNFVChvcGFxdWVS
b290TWVyZ2VUaHJlc2hvbGQsICAgICAgICAgICAgIDEwMDApOwotCi0gICAgaW50IGNwdXNUb1Vz
ZSA9IDE7Ci0jaWYgT1MoREFSV0lOKSAmJiBFTkFCTEUoUEFSQUxMRUxfR0MpCi0gICAgaW50IG5h
bWVbMl07Ci0gICAgc2l6ZV90IHZhbHVlU2l6ZSA9IHNpemVvZihjcHVzVG9Vc2UpOwotICAgIG5h
bWVbMF0gPSBDVExfSFc7Ci0gICAgbmFtZVsxXSA9IEhXX0FWQUlMQ1BVOwotICAgIHN5c2N0bChu
YW1lLCAyLCAmY3B1c1RvVXNlLCAmdmFsdWVTaXplLCAwLCAwKTsKLSNlbmRpZgotICAgIC8vIFdl
IGRvbid0IHNjYWxlIHNvIHdlbGwgYmV5b25kIDQuCi0gICAgaWYgKGNwdXNUb1VzZSA+IDQpCi0g
ICAgICAgIGNwdXNUb1VzZSA9IDQ7Ci0gICAgLy8gQmUgcGFyYW5vaWQsIGl0IGlzIHRoZSBPUyB3
ZSdyZSBkZWFsaW5nIHdpdGgsIGFmdGVyIGFsbC4KLSAgICBpZiAoY3B1c1RvVXNlIDwgMSkKLSAg
ICAgICAgY3B1c1RvVXNlID0gMTsKLSAgICAKLSAgICBTRVQobnVtYmVyT2ZHQ01hcmtlcnMsIGNw
dXNUb1VzZSk7Ci0KLSAgICBBU1NFUlQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGlt
aXplQW55dGltZVNvb24gPD0gZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxv
bmdXYXJtVXApOwotICAgIEFTU0VSVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFm
dGVyTG9uZ1dhcm1VcCA8PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2Fy
bVVwKTsKLSAgICBBU1NFUlQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldh
cm1VcCA8PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZVNvb24pOwotICAgIEFTU0VS
VChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwIDwgMCk7Ci0gICAg
QVNTRVJUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbiA8PSBleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JPcHRpbWl6ZU5leHRJbnZvY2F0aW9uKTsKLSAgICAKLSAgICAvLyBDb21w
dXRlIHRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSByZW9wdGltaXphdGlvbiByZXRyeSBjb3VudGVy
LiBUaGlzIGlzIHNpbXBseQotICAgIC8vIHRoZSBsYXJnZXN0IHZhbHVlIGF0IHdoaWNoIHdlIGRv
bid0IG92ZXJmbG93IHRoZSBleGVjdXRlIGNvdW50ZXIsIHdoZW4gdXNpbmcgaXQKLSAgICAvLyB0
byBsZWZ0LXNoaWZ0IHRoZSBleGVjdXRpb24gY291bnRlciBieSB0aGlzIGFtb3VudC4gQ3VycmVu
dGx5IHRoZSB2YWx1ZSBlbmRzCi0gICAgLy8gdXAgYmVpbmcgMTgsIHNvIHRoaXMgbG9vcCBpcyBu
b3Qgc28gdGVycmlibGU7IGl0IHByb2JhYmx5IHRha2VzIHVwIH4xMDAgY3ljbGVzCi0gICAgLy8g
dG90YWwgb24gYSAzMi1iaXQgcHJvY2Vzc29yLgotICAgIHJlb3B0aW1pemF0aW9uUmV0cnlDb3Vu
dGVyTWF4ID0gMDsKLSAgICB3aGlsZSAoKHN0YXRpY19jYXN0PGludDY0X3Q+KGV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKSA8PCAocmVvcHRpbWl6YXRpb25S
ZXRyeUNvdW50ZXJNYXggKyAxKSkgPj0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQzMl90Pjo6bWluKCkpKQotICAgICAgICByZW9wdGltaXphdGlvblJldHJ5Q291
bnRlck1heCsrOwotICAgIAotICAgIEFTU0VSVCgoc3RhdGljX2Nhc3Q8aW50NjRfdD4oZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApIDw8IHJlb3B0aW1pemF0
aW9uUmV0cnlDb3VudGVyTWF4KSA8IDApOwotICAgIEFTU0VSVCgoc3RhdGljX2Nhc3Q8aW50NjRf
dD4oZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApIDw8IHJl
b3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4KSA+PSBzdGF0aWNfY2FzdDxpbnQ2NF90PihzdGQ6
Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSkpOwotfQotCi19IH0gLy8gbmFtZXNwYWNl
IEpTQzo6SGV1cmlzdGljcwotCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0hldXJpc3RpY3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hldXJp
c3RpY3MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2EyMThkMC4uMDAwMDAwMAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw4NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpZm5kZWYgSGV1cmlzdGljc19oCi0jZGVmaW5lIEhldXJpc3RpY3NfaAot
Ci0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgSGV1cmlz
dGljcyB7Ci0KLWV4dGVybiB1bnNpZ25lZCBtYXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5z
dHJ1Y3Rpb25Db3VudDsKLQotZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNhbGxJ
bmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OwotZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1G
dW5jdGlvbkZvckNvbnN0cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7Ci0KLWV4
dGVybiB1bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsgLy8gRGVwdGggb2YgaW5saW5lIHN0
YWNrLCBzbyAxID0gbm8gaW5saW5pbmcsIDIgPSBvbmUgbGV2ZWwsIGV0Yy4KLQotZXh0ZXJuIGlu
dDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcDsKLWV4dGVy
biBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVw
OwotZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55
dGltZVNvb247Ci1leHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6
ZVNvb247Ci1leHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZU5l
eHRJbnZvY2F0aW9uOwotCi1leHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVySW5jcmVtZW50
Rm9yTG9vcDsKLWV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JSZXR1
cm47Ci0KLWV4dGVybiB1bnNpZ25lZCBkZXNpcmVkU3BlY3VsYXRpdmVTdWNjZXNzRmFpbFJhdGlv
OwotCi1leHRlcm4gZG91YmxlIGxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwotZXh0ZXJu
IGRvdWJsZSBjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZDsKLWV4dGVybiB1bnNpZ25lZCBsaWtl
bHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudDsKLWV4dGVybiB1bnNpZ25lZCBjb3VsZFRha2VT
bG93Q2FzZU1pbmltdW1Db3VudDsKLQotZXh0ZXJuIGRvdWJsZSBvc3JFeGl0UHJvbWluZW5jZUZv
ckZyZXF1ZW50RXhpdFNpdGU7Ci0KLWV4dGVybiB1bnNpZ25lZCBsYXJnZUZhaWxDb3VudFRocmVz
aG9sZEJhc2U7Ci1leHRlcm4gdW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlRm9y
TG9vcDsKLQotZXh0ZXJuIHVuc2lnbmVkIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4Owot
ZXh0ZXJuIHVuc2lnbmVkIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyU3RlcDsKLQotZXh0ZXJu
IHVuc2lnbmVkIG1pbmltdW1PcHRpbWl6YXRpb25EZWxheTsKLWV4dGVybiB1bnNpZ25lZCBtYXhp
bXVtT3B0aW1pemF0aW9uRGVsYXk7Ci1leHRlcm4gZG91YmxlIGRlc2lyZWRQcm9maWxlTGl2ZW5l
c3NSYXRlOwotZXh0ZXJuIGRvdWJsZSBkZXNpcmVkUHJvZmlsZUZ1bGxuZXNzUmF0ZTsKLQotZXh0
ZXJuIGRvdWJsZSBkb3VibGVWb3RlUmF0aW9Gb3JEb3VibGVGb3JtYXQ7Ci0KLWV4dGVybiB1bnNp
Z25lZCBtaW5pbXVtTnVtYmVyT2ZTY2Fuc0JldHdlZW5SZWJhbGFuY2U7Ci1leHRlcm4gdW5zaWdu
ZWQgZ2NNYXJrU3RhY2tTZWdtZW50U2l6ZTsKLWV4dGVybiB1bnNpZ25lZCBtaW5pbXVtTnVtYmVy
T2ZDZWxsc1RvS2VlcDsKLWV4dGVybiB1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZTaGFyZWRTZWdt
ZW50czsKLWV4dGVybiB1bnNpZ25lZCBzaGFyZWRTdGFja1dha2V1cFRocmVzaG9sZDsKLWV4dGVy
biB1bnNpZ25lZCBudW1iZXJPZkdDTWFya2VyczsKLWV4dGVybiB1bnNpZ25lZCBvcGFxdWVSb290
TWVyZ2VUaHJlc2hvbGQ7Ci0KLXZvaWQgaW5pdGlhbGl6ZUhldXJpc3RpY3MoKTsKLQotfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkhldXJpc3RpY3MKLQotI2VuZGlmIC8vIEhldXJpc3RpY3NfaAotCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFk
aW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRp
bmcuY3BwCmluZGV4IDNhMzcxZjkuLjY5ODk1NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCkBAIC0zMSw3ICszMSw3
IEBACiAKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSGVhcC5o
IgotI2luY2x1ZGUgIkhldXJpc3RpY3MuaCIKKyNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVk
ZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTRGF0ZU1hdGguaCIKICNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgpAQCAtNTMsNyArNTMsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplVGhy
ZWFkaW5nT25jZSgpCiB7CiAgICAgV1RGOjpkb3VibGVfY29udmVyc2lvbjo6aW5pdGlhbGl6ZSgp
OwogICAgIFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwotICAgIEhldXJpc3RpY3M6OmluaXRp
YWxpemVIZXVyaXN0aWNzKCk7CisgICAgT3B0aW9uczo6aW5pdGlhbGl6ZU9wdGlvbnMoKTsKICNp
ZiBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCiAgICAgV3JpdGVCYXJyaWVyQ291bnRl
cnM6OmluaXRpYWxpemUoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OGQxMGI3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5j
cHAKQEAgLTAsMCArMSwyMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk9wdGlvbnMuaCIKKwor
I2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx3dGYvUGFnZUJsb2NrLmg+CisKKyNpZiBPUyhE
QVJXSU4pICYmIEVOQUJMRShQQVJBTExFTF9HQykKKyNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+Cisj
ZW5kaWYKKworLy8gU2V0IHRvIDEgdG8gY29udHJvbCB0aGUgaGV1cmlzdGljcyB1c2luZyBlbnZp
cm9ubWVudCB2YXJpYWJsZXMuCisjZGVmaW5lIEVOQUJMRV9SVU5fVElNRV9IRVVSSVNUSUNTIDAK
KworI2lmIEVOQUJMRShSVU5fVElNRV9IRVVSSVNUSUNTKQorI2luY2x1ZGUgPHN0ZGlvLmg+Cisj
aW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2VuZGlm
CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgT3B0aW9ucyB7CisKK3Vuc2lnbmVkIG1heGlt
dW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OworCit1bnNpZ25lZCBtYXhp
bXVtRnVuY3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKK3Vuc2ln
bmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9u
Q291bnQ7CisKK3Vuc2lnbmVkIG1heGltdW1JbmxpbmluZ0RlcHRoOworCitpbnQzMl90IGV4ZWN1
dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXA7CitpbnQzMl90IGV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwOworaW50MzJfdCBleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbjsKK2ludDMyX3QgZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVTb29uOworaW50MzJfdCBleGVjdXRpb25Db3VudGVy
VmFsdWVGb3JPcHRpbWl6ZU5leHRJbnZvY2F0aW9uOworCitpbnQzMl90IGV4ZWN1dGlvbkNvdW50
ZXJJbmNyZW1lbnRGb3JMb29wOworaW50MzJfdCBleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9y
UmV0dXJuOworCit1bnNpZ25lZCBkZXNpcmVkU3BlY3VsYXRpdmVTdWNjZXNzRmFpbFJhdGlvOwor
Citkb3VibGUgbGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7Citkb3VibGUgY291bGRUYWtl
U2xvd0Nhc2VUaHJlc2hvbGQ7Cit1bnNpZ25lZCBsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1D
b3VudDsKK3Vuc2lnbmVkIGNvdWxkVGFrZVNsb3dDYXNlTWluaW11bUNvdW50OworCitkb3VibGUg
b3NyRXhpdFByb21pbmVuY2VGb3JGcmVxdWVudEV4aXRTaXRlOworCit1bnNpZ25lZCBsYXJnZUZh
aWxDb3VudFRocmVzaG9sZEJhc2U7Cit1bnNpZ25lZCBsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJh
c2VGb3JMb29wOworCit1bnNpZ25lZCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1heDsKK3Vu
c2lnbmVkIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyU3RlcDsKKwordW5zaWduZWQgbWluaW11
bU9wdGltaXphdGlvbkRlbGF5OwordW5zaWduZWQgbWF4aW11bU9wdGltaXphdGlvbkRlbGF5Owor
ZG91YmxlIGRlc2lyZWRQcm9maWxlTGl2ZW5lc3NSYXRlOworZG91YmxlIGRlc2lyZWRQcm9maWxl
RnVsbG5lc3NSYXRlOworCitkb3VibGUgZG91YmxlVm90ZVJhdGlvRm9yRG91YmxlRm9ybWF0Owor
Cit1bnNpZ25lZCBtaW5pbXVtTnVtYmVyT2ZTY2Fuc0JldHdlZW5SZWJhbGFuY2U7Cit1bnNpZ25l
ZCBnY01hcmtTdGFja1NlZ21lbnRTaXplOwordW5zaWduZWQgbWluaW11bU51bWJlck9mQ2VsbHNU
b0tlZXA7Cit1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZTaGFyZWRTZWdtZW50czsKK3Vuc2lnbmVk
IHNoYXJlZFN0YWNrV2FrZXVwVGhyZXNob2xkOwordW5zaWduZWQgbnVtYmVyT2ZHQ01hcmtlcnM7
Cit1bnNpZ25lZCBvcGFxdWVSb290TWVyZ2VUaHJlc2hvbGQ7CisKKyNpZiBFTkFCTEUoUlVOX1RJ
TUVfSEVVUklTVElDUykKK3N0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywgaW50
MzJfdCYgdmFsdWUpCit7CisgICAgcmV0dXJuIHNzY2FuZihzdHJpbmcsICIlZCIsICZ2YWx1ZSkg
PT0gMTsKK30KKworc3RhdGljIGJvb2wgcGFyc2UoY29uc3QgY2hhciogc3RyaW5nLCB1bnNpZ25l
ZCYgdmFsdWUpCit7CisgICAgcmV0dXJuIHNzY2FuZihzdHJpbmcsICIldSIsICZ2YWx1ZSkgPT0g
MTsKK30KKworc3RhdGljIGJvb2wgcGFyc2UoY29uc3QgY2hhciogc3RyaW5nLCBkb3VibGUmIHZh
bHVlKQoreworICAgIHJldHVybiBzc2NhbmYoc3RyaW5nLCAiJWxmIiwgJnZhbHVlKSA9PSAxOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgordm9pZCBzZXRIZXVyaXN0aWMo
VCYgdmFyaWFibGUsIGNvbnN0IGNoYXIqIG5hbWUsIFUgdmFsdWUpCit7CisgICAgY29uc3QgY2hh
ciogc3RyaW5nVmFsdWUgPSBnZXRlbnYobmFtZSk7CisgICAgaWYgKCFzdHJpbmdWYWx1ZSkgewor
ICAgICAgICB2YXJpYWJsZSA9IHNhZmVDYXN0PFQ+KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICAKKyAgICBpZiAocGFyc2Uoc3RyaW5nVmFsdWUsIHZhcmlhYmxlKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIGZwcmludGYoc3RkZXJyLCAiV0FSTklORzogZmFpbGVkIHRv
IHBhcnNlICVzPSVzXG4iLCBuYW1lLCBzdHJpbmdWYWx1ZSk7CisgICAgdmFyaWFibGUgPSBzYWZl
Q2FzdDxUPih2YWx1ZSk7Cit9CisKKyNkZWZpbmUgU0VUKHZhcmlhYmxlLCB2YWx1ZSkgc2V0SGV1
cmlzdGljKHZhcmlhYmxlLCAiSlNDXyIgI3ZhcmlhYmxlLCB2YWx1ZSkKKyNlbHNlCisjZGVmaW5l
IFNFVCh2YXJpYWJsZSwgdmFsdWUpIHZhcmlhYmxlID0gdmFsdWUKKyNlbmRpZgorCit2b2lkIGlu
aXRpYWxpemVPcHRpb25zKCkKK3sKKyAgICBTRVQobWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0
ZUluc3RydWN0aW9uQ291bnQsIDEwMDApOworICAgIAorICAgIFNFVChtYXhpbXVtRnVuY3Rpb25G
b3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCwgMTUwKTsKKyAgICBTRVQobWF4
aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCwg
ODApOworICAgIAorICAgIFNFVChtYXhpbXVtSW5saW5pbmdEZXB0aCwgNSk7CisKKyAgICBTRVQo
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCwgICAgIC0xMDAwKTsK
KyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAs
IC01MDAwKTsKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55
dGltZVNvb24sIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKTsKKyAgICBTRVQo
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVTb29uLCAgICAgICAgICAgIC0xMDAwKTsK
KyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVOZXh0SW52b2NhdGlvbiwg
IDApOworCisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JMb29wLCAgIDEpOwor
ICAgIFNFVChleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yUmV0dXJuLCAxNSk7CisKKyAgICBT
RVQoZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbywgNik7CisgICAgCisgICAgU0VU
KGxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkLCAgICAwLjE1KTsKKyAgICBTRVQoY291bGRU
YWtlU2xvd0Nhc2VUaHJlc2hvbGQsICAgICAgIDAuMDUpOyAvLyBTaG91bGRuJ3QgYmUgemVybyBi
ZWNhdXNlIHNvbWUgb3BzIHdpbGwgc3B1cmlvdXNseSB0YWtlIHNsb3cgY2FzZSwgZm9yIGV4YW1w
bGUgZm9yIGxpbmtpbmcgb3IgY2FjaGluZy4KKyAgICBTRVQobGlrZWx5VG9UYWtlU2xvd0Nhc2VN
aW5pbXVtQ291bnQsIDEwMCk7CisgICAgU0VUKGNvdWxkVGFrZVNsb3dDYXNlTWluaW11bUNvdW50
LCAgICAxMCk7CisgICAgCisgICAgU0VUKG9zckV4aXRQcm9taW5lbmNlRm9yRnJlcXVlbnRFeGl0
U2l0ZSwgMC4zKTsKKworICAgIFNFVChsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2UsICAgICAg
ICAyMCk7CisgICAgU0VUKGxhcmdlRmFpbENvdW50VGhyZXNob2xkQmFzZUZvckxvb3AsIDEpOwor
CisgICAgU0VUKHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyU3RlcCwgMSk7CisKKyAgICBTRVQo
bWluaW11bU9wdGltaXphdGlvbkRlbGF5LCAgIDEpOworICAgIFNFVChtYXhpbXVtT3B0aW1pemF0
aW9uRGVsYXksICAgNSk7CisgICAgU0VUKGRlc2lyZWRQcm9maWxlTGl2ZW5lc3NSYXRlLCAwLjc1
KTsKKyAgICBTRVQoZGVzaXJlZFByb2ZpbGVGdWxsbmVzc1JhdGUsIDAuMzUpOworICAgIAorICAg
IFNFVChkb3VibGVWb3RlUmF0aW9Gb3JEb3VibGVGb3JtYXQsIDIpOworICAgIAorICAgIFNFVCht
aW5pbXVtTnVtYmVyT2ZTY2Fuc0JldHdlZW5SZWJhbGFuY2UsIDEwMDAwKTsKKyAgICBTRVQoZ2NN
YXJrU3RhY2tTZWdtZW50U2l6ZSwgICAgICAgICAgICAgICBwYWdlU2l6ZSgpKTsKKyAgICBTRVQo
bWluaW11bU51bWJlck9mQ2VsbHNUb0tlZXAsICAgICAgICAgICAxMCk7CisgICAgU0VUKG1heGlt
dW1OdW1iZXJPZlNoYXJlZFNlZ21lbnRzLCAgICAgICAgMyk7CisgICAgU0VUKHNoYXJlZFN0YWNr
V2FrZXVwVGhyZXNob2xkLCAgICAgICAgICAgMSk7CisgICAgU0VUKG9wYXF1ZVJvb3RNZXJnZVRo
cmVzaG9sZCwgICAgICAgICAgICAgMTAwMCk7CisKKyAgICBpbnQgY3B1c1RvVXNlID0gMTsKKyNp
ZiBPUyhEQVJXSU4pICYmIEVOQUJMRShQQVJBTExFTF9HQykKKyAgICBpbnQgbmFtZVsyXTsKKyAg
ICBzaXplX3QgdmFsdWVTaXplID0gc2l6ZW9mKGNwdXNUb1VzZSk7CisgICAgbmFtZVswXSA9IENU
TF9IVzsKKyAgICBuYW1lWzFdID0gSFdfQVZBSUxDUFU7CisgICAgc3lzY3RsKG5hbWUsIDIsICZj
cHVzVG9Vc2UsICZ2YWx1ZVNpemUsIDAsIDApOworI2VuZGlmCisgICAgLy8gV2UgZG9uJ3Qgc2Nh
bGUgc28gd2VsbCBiZXlvbmQgNC4KKyAgICBpZiAoY3B1c1RvVXNlID4gNCkKKyAgICAgICAgY3B1
c1RvVXNlID0gNDsKKyAgICAvLyBCZSBwYXJhbm9pZCwgaXQgaXMgdGhlIE9TIHdlJ3JlIGRlYWxp
bmcgd2l0aCwgYWZ0ZXIgYWxsLgorICAgIGlmIChjcHVzVG9Vc2UgPCAxKQorICAgICAgICBjcHVz
VG9Vc2UgPSAxOworICAgIAorICAgIFNFVChudW1iZXJPZkdDTWFya2VycywgY3B1c1RvVXNlKTsK
KworICAgIEFTU0VSVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1l
U29vbiA8PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCk7
CisgICAgQVNTRVJUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2Fy
bVVwIDw9IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXApOworICAg
IEFTU0VSVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwIDw9IGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbik7CisgICAgQVNTRVJUKGV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAgPCAwKTsKKyAgICBBU1NFUlQoZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVTb29uIDw9IGV4ZWN1dGlvbkNvdW50ZXJWYWx1
ZUZvck9wdGltaXplTmV4dEludm9jYXRpb24pOworICAgIAorICAgIC8vIENvbXB1dGUgdGhlIG1h
eGltdW0gdmFsdWUgb2YgdGhlIHJlb3B0aW1pemF0aW9uIHJldHJ5IGNvdW50ZXIuIFRoaXMgaXMg
c2ltcGx5CisgICAgLy8gdGhlIGxhcmdlc3QgdmFsdWUgYXQgd2hpY2ggd2UgZG9uJ3Qgb3ZlcmZs
b3cgdGhlIGV4ZWN1dGUgY291bnRlciwgd2hlbiB1c2luZyBpdAorICAgIC8vIHRvIGxlZnQtc2hp
ZnQgdGhlIGV4ZWN1dGlvbiBjb3VudGVyIGJ5IHRoaXMgYW1vdW50LiBDdXJyZW50bHkgdGhlIHZh
bHVlIGVuZHMKKyAgICAvLyB1cCBiZWluZyAxOCwgc28gdGhpcyBsb29wIGlzIG5vdCBzbyB0ZXJy
aWJsZTsgaXQgcHJvYmFibHkgdGFrZXMgdXAgfjEwMCBjeWNsZXMKKyAgICAvLyB0b3RhbCBvbiBh
IDMyLWJpdCBwcm9jZXNzb3IuCisgICAgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXggPSAw
OworICAgIHdoaWxlICgoc3RhdGljX2Nhc3Q8aW50NjRfdD4oZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApIDw8IChyZW9wdGltaXphdGlvblJldHJ5Q291bnRl
ck1heCArIDEpKSA+PSBzdGF0aWNfY2FzdDxpbnQ2NF90PihzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dDMyX3Q+OjptaW4oKSkpCisgICAgICAgIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4Kys7
CisgICAgCisgICAgQVNTRVJUKChzdGF0aWNfY2FzdDxpbnQ2NF90PihleGVjdXRpb25Db3VudGVy
VmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCkgPDwgcmVvcHRpbWl6YXRpb25SZXRyeUNv
dW50ZXJNYXgpIDwgMCk7CisgICAgQVNTRVJUKChzdGF0aWNfY2FzdDxpbnQ2NF90PihleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCkgPDwgcmVvcHRpbWl6YXRp
b25SZXRyeUNvdW50ZXJNYXgpID49IHN0YXRpY19jYXN0PGludDY0X3Q+KHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50MzJfdD46Om1pbigpKSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpPcHRp
b25zCisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3Y2M1ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKQEAgLTAsMCArMSw4NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE9wdGlv
bnNfaAorI2RlZmluZSBPcHRpb25zX2gKKworI2luY2x1ZGUgPHN0ZGludC5oPgorCituYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIE9wdGlvbnMgeworCitleHRlcm4gdW5zaWduZWQgbWF4aW11bU9w
dGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CisKK2V4dGVybiB1bnNpZ25lZCBt
YXhpbXVtRnVuY3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKK2V4
dGVybiB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJ
bnN0cnVjdGlvbkNvdW50OworCitleHRlcm4gdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7
IC8vIERlcHRoIG9mIGlubGluZSBzdGFjaywgc28gMSA9IG5vIGlubGluaW5nLCAyID0gb25lIGxl
dmVsLCBldGMuCisKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGlt
aXplQWZ0ZXJXYXJtVXA7CitleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JP
cHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uOworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9yT3B0aW1pemVTb29uOworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291
bnRlclZhbHVlRm9yT3B0aW1pemVOZXh0SW52b2NhdGlvbjsKKworZXh0ZXJuIGludDMyX3QgZXhl
Y3V0aW9uQ291bnRlckluY3JlbWVudEZvckxvb3A7CitleHRlcm4gaW50MzJfdCBleGVjdXRpb25D
b3VudGVySW5jcmVtZW50Rm9yUmV0dXJuOworCitleHRlcm4gdW5zaWduZWQgZGVzaXJlZFNwZWN1
bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbzsKKworZXh0ZXJuIGRvdWJsZSBsaWtlbHlUb1Rha2VTbG93
Q2FzZVRocmVzaG9sZDsKK2V4dGVybiBkb3VibGUgY291bGRUYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7
CitleHRlcm4gdW5zaWduZWQgbGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQ7CitleHRl
cm4gdW5zaWduZWQgY291bGRUYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQ7CisKK2V4dGVybiBkb3Vi
bGUgb3NyRXhpdFByb21pbmVuY2VGb3JGcmVxdWVudEV4aXRTaXRlOworCitleHRlcm4gdW5zaWdu
ZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlOworZXh0ZXJuIHVuc2lnbmVkIGxhcmdlRmFp
bENvdW50VGhyZXNob2xkQmFzZUZvckxvb3A7CisKK2V4dGVybiB1bnNpZ25lZCByZW9wdGltaXph
dGlvblJldHJ5Q291bnRlck1heDsKK2V4dGVybiB1bnNpZ25lZCByZW9wdGltaXphdGlvblJldHJ5
Q291bnRlclN0ZXA7CisKK2V4dGVybiB1bnNpZ25lZCBtaW5pbXVtT3B0aW1pemF0aW9uRGVsYXk7
CitleHRlcm4gdW5zaWduZWQgbWF4aW11bU9wdGltaXphdGlvbkRlbGF5OworZXh0ZXJuIGRvdWJs
ZSBkZXNpcmVkUHJvZmlsZUxpdmVuZXNzUmF0ZTsKK2V4dGVybiBkb3VibGUgZGVzaXJlZFByb2Zp
bGVGdWxsbmVzc1JhdGU7CisKK2V4dGVybiBkb3VibGUgZG91YmxlVm90ZVJhdGlvRm9yRG91Ymxl
Rm9ybWF0OworCitleHRlcm4gdW5zaWduZWQgbWluaW11bU51bWJlck9mU2NhbnNCZXR3ZWVuUmVi
YWxhbmNlOworZXh0ZXJuIHVuc2lnbmVkIGdjTWFya1N0YWNrU2VnbWVudFNpemU7CitleHRlcm4g
dW5zaWduZWQgbWluaW11bU51bWJlck9mQ2VsbHNUb0tlZXA7CitleHRlcm4gdW5zaWduZWQgbWF4
aW11bU51bWJlck9mU2hhcmVkU2VnbWVudHM7CitleHRlcm4gdW5zaWduZWQgc2hhcmVkU3RhY2tX
YWtldXBUaHJlc2hvbGQ7CitleHRlcm4gdW5zaWduZWQgbnVtYmVyT2ZHQ01hcmtlcnM7CitleHRl
cm4gdW5zaWduZWQgb3BhcXVlUm9vdE1lcmdlVGhyZXNob2xkOworCit2b2lkIGluaXRpYWxpemVP
cHRpb25zKCk7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpPcHRpb25zCisKKyNlbmRpZiAvLyBP
cHRpb25zX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCmluZGV4IDdmOWZhN2Eu
LmNmZGQ5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhwLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAKQEAgLTU2LDggKzU2
LDggQEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKIAogc3RhdGljIHZvaWQgY2xlYW51cEdsb2JhbERh
dGEoSlNHbG9iYWxEYXRhKik7CiAKLXN0cnVjdCBPcHRpb25zIHsKLSAgICBPcHRpb25zKCkKK3N0
cnVjdCBDb21tYW5kTGluZSB7CisgICAgQ29tbWFuZExpbmUoKQogICAgICAgICA6IGludGVyYWN0
aXZlKGZhbHNlKQogICAgICAgICAsIHZlcmJvc2UoZmFsc2UpCiAgICAgewpAQCAtNDkwLDcgKzQ5
MCw3IEBAIHN0YXRpYyBOT19SRVRVUk4gdm9pZCBwcmludFVzYWdlU3RhdGVtZW50KEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgYm9vbCBoZWxwID0KICAgICBleGl0KGhlbHAgPyBFWElUX1NVQ0NF
U1MgOiBFWElUX0ZBSUxVUkUpOwogfQogCi1zdGF0aWMgdm9pZCBwYXJzZUFyZ3VtZW50cyhpbnQg
YXJnYywgY2hhcioqIGFyZ3YsIE9wdGlvbnMmIG9wdGlvbnMsIEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSkKK3N0YXRpYyB2b2lkIHBhcnNlQXJndW1lbnRzKGludCBhcmdjLCBjaGFyKiogYXJndiwg
Q29tbWFuZExpbmUmIG9wdGlvbnMsIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKIHsKICAgICBp
bnQgaSA9IDE7CiAgICAgZm9yICg7IGkgPCBhcmdjOyArK2kpIHsKQEAgLTUxMSw3ICs1MTEsNyBA
QCBpbnQgcmVhbE1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2LCBKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEpCiB7CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAotICAg
IE9wdGlvbnMgb3B0aW9uczsKKyAgICBDb21tYW5kTGluZSBvcHRpb25zOwogICAgIHBhcnNlQXJn
dW1lbnRzKGFyZ2MsIGFyZ3YsIG9wdGlvbnMsIGdsb2JhbERhdGEpOwogCiAgICAgR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgR2xv
YmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKmdsb2JhbERhdGEsIGpzTnVsbCgpKSwgb3B0aW9u
cy5hcmd1bWVudHMpOwotLSAKMS43LjcuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119198</attachid>
            <date>2011-12-14 04:13:50 -0800</date>
            <delta_ts>2011-12-14 05:09:50 -0800</delta_ts>
            <desc>Andy&apos;s updated patch</desc>
            <filename>0001-foo.patch</filename>
            <type>text/plain</type>
            <size>67422</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAzMzVjN2RiODdhMjEyYTkzNmMyN2Y1ZmMwMWY4NTFjNDI4MzIxMjkzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmR5IFdpbmdvIDx3aW5nb0BpZ2FsaWEuY29tPgpEYXRlOiBU
dWUsIDIyIE5vdiAyMDExIDEyOjU3OjE2ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gZm9vCgotLS0K
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgIHwgICAg
MiArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
fCAgIDc4ICsrKysrKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
ICAgICAgICAgIHwgICAgNCArLQogLi4uL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvaiAgICAgICAgICAgfCAgIDE2ICstCiAuLi4vSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiAgICAgICB8ICAgMTYgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJn
ZXQucHJpICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgICAgICAgfCAgICA4ICstCiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggICAgICAgICB8ICAgMzYgKystLQogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgICAgfCAgICAyICstCiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oICAgICAgICB8ICAgMTQgKy0K
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAgICAgICAgICAgIHwgICAg
MiArLQogLi4uL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAg
fCAgICA0ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0
LmNwcCB8ICAgIDQgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nl
c3NEYXRhLmggIHwgICAgMiArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNr
LmNwcCAgICAgICAgICAgfCAgIDMwICsrLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtTdGFjay5oICAgICAgICAgICAgIHwgICAgOCArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvU2xvdFZpc2l0b3IuaCAgICAgICAgICAgfCAgICAyICstCiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwICAgICAgICAgICAgICAgICAgICAgIHwgICAgOCArLQogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSGV1cmlzdGljcy5jcHAgICAgICAgfCAgMjE0IC0tLS0tLS0t
LS0tLS0tLS0tLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmgg
ICAgICAgICB8ICAgODQgLS0tLS0tLS0KIC4uLi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRp
YWxpemVUaHJlYWRpbmcuY3BwIHwgICAgNCArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5jcHAgICAgICAgICAgfCAgMjE0ICsrKysrKysrKysrKysrKysrKysrCiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmggICAgICAgICAgICB8ICAgODQgKysr
KysrKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhwLmNwcCAgICAgICAgICAgICAg
IHwgICAgOCArLQogMjUgZmlsZXMgY2hhbmdlZCwgNDY1IGluc2VydGlvbnMoKyksIDM4MyBkZWxl
dGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9IZXVyaXN0aWNzLmNwcAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0hldXJpc3RpY3MuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IDVhMzkzZWEuLmMyNjNiMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKQEAgLTEzNSw3ICsxMzUsNiBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwog
ICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9HQ0FjdGl2aXR5
Q2FsbGJhY2suY3BwCiAgICAgcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCi0gICAgcnVudGltZS9I
ZXVyaXN0aWNzLmNwcAogICAgIHJ1bnRpbWUvSWRlbnRpZmllci5jcHAKICAgICBydW50aW1lL0lu
aXRpYWxpemVUaHJlYWRpbmcuY3BwCiAgICAgcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcApA
QCAtMTcyLDYgKzE3MSw3IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGlt
ZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAK
ICAgICBydW50aW1lL09wZXJhdGlvbnMuY3BwCisgICAgcnVudGltZS9PcHRpb25zLmNwcAogICAg
IHJ1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcAogICAgIHJ1bnRpbWUvUHJvcGVydHlOYW1l
QXJyYXkuY3BwCiAgICAgcnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwppbmRleCA5ZThkMWE0Li43NzU3ZjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw4MSBAQAorMjAxMS0xMi0xNCAgQW5keSBXaW5nbyAgPHdpbmdvQGlnYWxpYS5jb20+
CisKKyAgICAgICAgUmVuYW1lIEpTQzo6SGV1cmlzdGljcyB0byBKU0M6Ok9wdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyODg5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBydW50aW1lL09wdGlv
bnMuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGV1cmlz
dGljcy5jcHAuCisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmguCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2hvdWxkT3B0aW1pemVOb3cpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFr
ZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjb3VsZFRha2VTbG93Q2FzZSk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlU3BlY2lhbEZhc3RDYXNlKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rha2VEZWVwZXN0U2xvd0Nhc2UpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZUFueVNsb3dDYXNlKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpyZW9wdGltaXphdGlvblJldHJ5Q291bnRlcik6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6Y291bnRSZW9wdGltaXphdGlvbik6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6Y291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6Y291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om9wdGltaXplTmV4dEludm9jYXRpb24pOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmRvbnRPcHRpbWl6ZUFueXRpbWVTb29uKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpvcHRpbWl6ZVNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxh
cmdlRmFpbENvdW50VGhyZXNob2xkKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsYXJnZUZh
aWxDb3VudFRocmVzaG9sZEZvckxvb3ApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNob3Vs
ZFJlb3B0aW1pemVOb3cpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNob3VsZFJlb3B0aW1p
emVGcm9tTG9vcE5vdyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAg
ICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjptaWdodENvbXBp
bGVFdmFsKToKKyAgICAgICAgKEpTQzo6REZHOjptaWdodENvbXBpbGVQcm9ncmFtKToKKyAgICAg
ICAgKEpTQzo6REZHOjptaWdodENvbXBpbGVGdW5jdGlvbkZvckNhbGwpOgorICAgICAgICAoSlND
OjpERkc6Om1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6
REZHOjptaWdodElubGluZUZ1bmN0aW9uRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6bWln
aHRJbmxpbmVGdW5jdGlvbkZvckNvbnN0cnVjdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNvbnNpZGVyQWRkaW5nQXNGcmVxdWVu
dEV4aXRTaXRlU2xvdyk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToKKyAg
ICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
Ok9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdWYXJpYWJs
ZUFjY2Vzc0RhdGEuaDoKKyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUFjY2Vzc0RhdGE6OnNo
b3VsZFVzZURvdWJsZUZvcm1hdEFjY29yZGluZ1RvVm90ZSk6CisgICAgICAgICogaGVhcC9NYXJr
U3RhY2suY3BwOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2tTZWdtZW50QWxsb2NhdG9yOjphbGxv
Y2F0ZSk6CisgICAgICAgIChKU0M6Ok1hcmtTdGFja1NlZ21lbnRBbGxvY2F0b3I6OnNocmlua1Jl
c2VydmUpOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2tBcnJheTo6TWFya1N0YWNrQXJyYXkpOgor
ICAgICAgICAoSlNDOjpNYXJrU3RhY2tBcnJheTo6ZG9uYXRlU29tZUNlbGxzVG8pOgorICAgICAg
ICAoSlNDOjpNYXJrU3RhY2tBcnJheTo6c3RlYWxTb21lQ2VsbHNGcm9tKToKKyAgICAgICAgKEpT
Qzo6TWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YTo6TWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YSk6
CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjpkb25hdGVTbG93KToKKyAgICAgICAgKEpTQzo6
U2xvdFZpc2l0b3I6OmRyYWluKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmRyYWluRnJv
bVNoYXJlZCk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suaDoKKyAgICAgICAgKEpTQzo6TWFy
a1N0YWNrOjptZXJnZU9wYXF1ZVJvb3RzSWZQcm9maXRhYmxlKToKKyAgICAgICAgKEpTQzo6TWFy
a1N0YWNrOjphZGRPcGFxdWVSb290KToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrQXJyYXk6OmNh
bkRvbmF0ZVNvbWVDZWxscyk6CisgICAgICAgICogaGVhcC9TbG90VmlzaXRvci5oOgorICAgICAg
ICAoSlNDOjpTbG90VmlzaXRvcjo6ZG9uYXRlKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0T3B0aW1pemF0aW9uQ2hlY2spOgorICAgICAgICAqIHJ1bnRp
bWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVUaHJl
YWRpbmdPbmNlKTogQWRhcHQgY2FsbGVycyBhbmQgYnVpbGQgc3lzdGVtcy4KKworICAgICAgICAq
IHRlc3RSZWdFeHAuY3BwOgorICAgICAgICAoQ29tbWFuZExpbmU6OkNvbW1hbmRMaW5lKToKKyAg
ICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoQ29tbWFuZExpbmU6OkNvbW1hbmRMaW5lKToKKyAg
ICAgICAgUmVuYW1lIGZyb20gT3B0aW9ucywgdG8gYXZvaWQgbmFtZSBjb25mbGljdC4KKwogMjAx
MS0xMi0xMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBz
aG91bGQgaW5mZXIgd2hlbiBsb2NhbCB2YXJpYWJsZXMgYXJlIGRvdWJsZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMzE1ZTNmMy4uZjVlZTA1NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTM1OCw4ICszNTgs
NiBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2V0dGVyU2V0dGVyLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2V0dGVyU2V0dGVyLmggXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hldXJpc3Rp
Y3MuY3BwIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwIFwKQEAgLTQzOSw2ICs0MzcsOCBA
QCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RQcm90b3R5cGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3BlcmF0aW9ucy5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlv
bnMuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAgXAorCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmggXApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagppbmRleCBhNzkzZGQ3
Li44ODgyNjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvagpAQCAtNzM0LDE0ICs3MzQsNiBAQAogCQkJCT4KIAkJCTwvRmls
ZT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXEhldXJpc3RpY3Mu
Y3BwIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwu
LlxydW50aW1lXEhldXJpc3RpY3MuaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQogCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxJZGVudGlmaWVyLmNwcCIKIAkJCQk+CiAJCQk8
L0ZpbGU+CkBAIC0xMDM4LDYgKzEwMzAsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8Rmls
ZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxPcHRpb25zLmNwcCIKKwkJCQk+CisJ
CQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxPcHRp
b25zLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XC4uXHJ1bnRpbWVcUHJvcGVydHlEZXNjcmlwdG9yLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVhMzk3NGIuLjA3MmFiZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDYsOCArMTA2LDggQEAKIAkJMEZEODJFODYxNDFG
M0ZGMTAwMTc5Qzk0IC8qIFByZWRpY3RlZFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEODJFODQxNDFGM0ZEQTAwMTc5Qzk0IC8qIFByZWRp
Y3RlZFR5cGUuY3BwICovOyB9OwogCQkwRkQ4MkU5MDE0MjA3QTVGMDAxNzlDOTQgLyogVmFsdWVQ
cm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGRDgyRThFMTQyMDdBNTEwMDE3OUM5NCAvKiBWYWx1ZVByb2ZpbGUuY3BwICovOyB9OwogCQkw
RkQ4MkY0QjE0MjgwNkExMDAxNzlDOTQgLyogQml0VmVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MkY0OTE0MjgwNjkyMDAxNzlDOTQgLyog
Qml0VmVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKLQkJMEZFMjI4RUQxNDM2QUIyNzAwMTk2QzQ4IC8qIEhldXJpc3RpY3MuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTIyOEVCMTQzNkFCMjMwMDE5
NkM0OCAvKiBIZXVyaXN0aWNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJMEZFMjI4RUUxNDM2QUIyQzAwMTk2QzQ4IC8qIEhldXJpc3RpY3MuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFMjI4RUEx
NDM2QUIyMzAwMTk2QzQ4IC8qIEhldXJpc3RpY3MuY3BwICovOyB9OworCQkwRkUyMjhFRDE0MzZB
QjI3MDAxOTZDNDggLyogT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZFMjI4RUIxNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkUyMjhFRTE0
MzZBQjJDMDAxOTZDNDggLyogT3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkUyMjhFQTE0MzZBQjIzMDAxOTZDNDggLyogT3B0aW9ucy5j
cHAgKi87IH07CiAJCTBGRkY0QkI0MTQzOTU1RTkwMDY1NUJDMCAvKiBERkdTdHJ1Y3R1cmVTZXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkY0QkIy
MTQzOTU1RTYwMDY1NUJDMCAvKiBERkdTdHJ1Y3R1cmVTZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDAwMDY3NzEyQTZGNzgzMDA2NEQxMjMg
LyogT1NBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0MDAwNjc2MTJBNkY3ODMwMDY0RDEyMyAvKiBPU0FsbG9jYXRvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0MDAwNjkzMTJBNkY5
RTEwMDY0RDEyMyAvKiBPU0FsbG9jYXRvclBvc2l4LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MDAwNjkyMTJBNkY5RTEwMDY0RDEyMyAvKiBPU0Fs
bG9jYXRvclBvc2l4LmNwcCAqLzsgfTsKQEAgLTg5MCw4ICs4OTAsOCBAQAogCQkwRkQ4MkU4NDE0
MUYzRkRBMDAxNzlDOTQgLyogUHJlZGljdGVkVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQcmVkaWN0ZWRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZEODJFOEUxNDIwN0E1MTAwMTc5Qzk0IC8qIFZhbHVlUHJvZmlsZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWYWx1ZVByb2ZpbGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkQ4MkY0OTE0MjgwNjkyMDAxNzlDOTQgLyogQml0
VmVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJpdFZlY3Rvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkUyMjhFQTE0MzZBQjIzMDAxOTZDNDggLyog
SGV1cmlzdGljcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZXVy
aXN0aWNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZFMjI4RUIxNDM2QUIy
MzAwMTk2QzQ4IC8qIEhldXJpc3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSGV1cmlzdGljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkUyMjhFQTE0
MzZBQjIzMDAxOTZDNDggLyogT3B0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBPcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZF
MjI4RUIxNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZG
NEJCMjE0Mzk1NUU2MDA2NTVCQzAgLyogREZHU3RydWN0dXJlU2V0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERGR1N0cnVjdHVyZVNldC5oOyBwYXRoID0gZGZnL0RGR1N0cnVj
dHVyZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDAwMDY3NjEyQTZGNzgz
MDA2NEQxMjMgLyogT1NBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gT1NBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQwMDA2OTIx
MkE2RjlFMTAwNjREMTIzIC8qIE9TQWxsb2NhdG9yUG9zaXguY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gT1NBbGxvY2F0b3JQb3NpeC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yMTExLDYgKzIxMTEsOCBAQAogCQk3RUY2RTBCQjBFQjdBMUVDMDA3
OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAg
Ki8sCisJCQkJMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oICov
LAogCQkJCUJDRjYwNTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLywKIAkJCQlC
Q0Y2MDUxMjBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovLAogCQkJCUJDMjU3REU1MEUx
RjUxQzUwMDE2QjZDOSAvKiBBcmd1bWVudHMuY3BwICovLApAQCAtMjI0Niw2ICsyMjQ4LDggQEAK
IAkJCQlCQzI2ODBDOTBFMTZENEU5MDBBMDZFOTIgLyogT2JqZWN0UHJvdG90eXBlLmggKi8sCiAJ
CQkJRjY5MkE4NzcwMjU1NTk3RDAxRkY2MEY3IC8qIE9wZXJhdGlvbnMuY3BwICovLAogCQkJCUY2
OTJBODc4MDI1NTU5N0QwMUZGNjBGNyAvKiBPcGVyYXRpb25zLmggKi8sCisJCQkJMEZFMjI4RUEx
NDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwICovLAorCQkJCTBGRTIyOEVCMTQzNkFCMjMw
MDE5NkM0OCAvKiBPcHRpb25zLmggKi8sCiAJCQkJQTdGQjYwQTMxMDNGN0RDMjAwMTdBMjg2IC8q
IFByb3BlcnR5RGVzY3JpcHRvci5jcHAgKi8sCiAJCQkJQTdGQjYwNEIxMDNGNUVBQjAwMTdBMjg2
IC8qIFByb3BlcnR5RGVzY3JpcHRvci5oICovLAogCQkJCUJDOTU0MzdDMEVCQTcwRkQwMDcyQjZE
MyAvKiBQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oICovLApAQCAtMjk1NCw3ICsyOTU4LDcgQEAKIAkJ
CQkwRjYzNkRBMDE0MkQyN0Q3MDBCMkU2NkEgLyogUGFja2VkSW50VmVjdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNzUyMUUxMzE0MjkxNjlBMDAzQzhEMEMgLyogQ2FyZFNldC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZENTJBQUUxNDMwMzVBMDAwMjZEQzlGIC8qIFVuaW9uRmluZC5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJMEZFMjI4RUQxNDM2QUIyNzAwMTk2QzQ4IC8qIEhldXJpc3RpY3MuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGRTIyOEVEMTQzNkFCMjcwMDE5NkM0OCAvKiBPcHRpb25zLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkZGNEJCNDE0Mzk1NUU5MDA2NTVCQzAgLyogREZHU3RydWN0
dXJlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjA0RjUwNTE0M0NFMUMyMDBCMjk1RjUgLyog
SlNHbG9iYWxUaGlzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYyMDE3NDE0M0ZDRDMzMDA2OEI3
N0MgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTM1MTUsNyAr
MzUxOSw3IEBACiAJCQkJODZGQTlFOTExNDJCQkIyRTAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4Njg4MEYxRjE0MzI4QkI5MDBCMDhENDIgLyogREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4Njg4MEY0RDE0MzUz
QjIxMDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQkwRkUyMjhFRTE0MzZBQjJDMDAxOTZDNDggLyogSGV1cmlzdGljcy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkwRkUyMjhFRTE0MzZBQjJDMDAxOTZDNDggLyogT3B0aW9ucy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjYyMDE3OTE0M0ZDRDQ4MDA2OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0ZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzNDNENBMDE0NThGNTQ1MDAyNUZCNjIgLyogSlNHbG9i
YWxUaGlzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzA5NzZFMTQ2OEFCNTEwMENGMjQ0MiAv
KiBERkdBc3NlbWJseUhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJn
ZXQucHJpCmluZGV4IDdhMmY4YjQuLjVhY2MzNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJp
CkBAIC0xNDksNyArMTQ5LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcnVudGltZS9GdW5jdGlvblBy
b3RvdHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBcCiAgICAg
cnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIFwKLSAgICBydW50aW1lL0hldXJpc3RpY3MuY3BwIFwK
KyAgICBydW50aW1lL09wdGlvbnMuY3BwIFwKICAgICBydW50aW1lL0lkZW50aWZpZXIuY3BwIFwK
ICAgICBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwIFwKICAgICBydW50aW1lL0ludGVy
bmFsRnVuY3Rpb24uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKaW5kZXggY2JkMzk3MS4uNzRkY2YxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTIyMDMsNyArMjIwMyw3IEBAIGJvb2wgQ29k
ZUJsb2NrOjpzaG91bGRPcHRpbWl6ZU5vdygpCiAgICAgZHVtcFZhbHVlUHJvZmlsZXMoKTsKICNl
bmRpZgogCi0gICAgaWYgKG1fb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID49IEhldXJpc3RpY3M6
Om1heGltdW1PcHRpbWl6YXRpb25EZWxheSkKKyAgICBpZiAobV9vcHRpbWl6YXRpb25EZWxheUNv
dW50ZXIgPj0gT3B0aW9uczo6bWF4aW11bU9wdGltaXphdGlvbkRlbGF5KQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAKICAgICB1bnNpZ25lZCBudW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9m
aWxlcyA9IDA7CkBAIC0yMjI5LDkgKzIyMjksOSBAQCBib29sIENvZGVCbG9jazo6c2hvdWxkT3B0
aW1pemVOb3coKQogICAgIHByaW50ZigiUHJvZmlsZSBob3RuZXNzOiAlbGYsICVsZlxuIiwgKGRv
dWJsZSludW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgLyBudW1iZXJPZk5vbkFy
Z3VtZW50VmFsdWVQcm9maWxlcywgKGRvdWJsZSludW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzIC8g
VmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMgLyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSk7
CiAjZW5kaWYKIAotICAgIGlmICgoIW51bWJlck9mTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzIHx8
IChkb3VibGUpbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzIC8gbnVtYmVyT2ZO
b25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPj0gSGV1cmlzdGljczo6ZGVzaXJlZFByb2ZpbGVMaXZl
bmVzc1JhdGUpCi0gICAgICAgICYmICghbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkgfHwgKGRvdWJs
ZSludW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzIC8gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tl
dHMgLyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSA+PSBIZXVyaXN0aWNzOjpkZXNpcmVkUHJvZmls
ZUZ1bGxuZXNzUmF0ZSkKLSAgICAgICAgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fb3B0aW1p
emF0aW9uRGVsYXlDb3VudGVyKSArIDEgPj0gSGV1cmlzdGljczo6bWluaW11bU9wdGltaXphdGlv
bkRlbGF5KQorICAgIGlmICgoIW51bWJlck9mTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzIHx8IChk
b3VibGUpbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzIC8gbnVtYmVyT2ZOb25B
cmd1bWVudFZhbHVlUHJvZmlsZXMgPj0gT3B0aW9uczo6ZGVzaXJlZFByb2ZpbGVMaXZlbmVzc1Jh
dGUpCisgICAgICAgICYmICghbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkgfHwgKGRvdWJsZSludW1i
ZXJPZlNhbXBsZXNJblByb2ZpbGVzIC8gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMgLyBu
dW1iZXJPZlZhbHVlUHJvZmlsZXMoKSA+PSBPcHRpb25zOjpkZXNpcmVkUHJvZmlsZUZ1bGxuZXNz
UmF0ZSkKKyAgICAgICAgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fb3B0aW1pemF0aW9uRGVs
YXlDb3VudGVyKSArIDEgPj0gT3B0aW9uczo6bWluaW11bU9wdGltaXphdGlvbkRlbGF5KQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBBU1NFUlQobV9vcHRpbWl6YXRpb25EZWxheUNv
dW50ZXIgPCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ4X3Q+OjptYXgoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggNjE1ZjJiNS4uNDM1Yjk1OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMzcsNyAr
MzcsNyBAQAogI2luY2x1ZGUgIkRGR09TUkVudHJ5LmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdC5o
IgogI2luY2x1ZGUgIkV2YWxDb2RlQ2FjaGUuaCIKLSNpbmNsdWRlICJIZXVyaXN0aWNzLmgiCisj
aW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAi
SklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFdyaXRlQmFycmllci5oIgpAQCAtNjgzLDEzICs2ODMs
MTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlU2xvd0Nhc2Uo
aW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICB1bnNpZ25lZCB2YWx1
ZSA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9j
b3VudGVyOwotICAgICAgICAgICAgcmV0dXJuIHZhbHVlID49IEhldXJpc3RpY3M6Omxpa2VseVRv
VGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpIC8g
bV9leGVjdXRpb25FbnRyeUNvdW50ID49IEhldXJpc3RpY3M6Omxpa2VseVRvVGFrZVNsb3dDYXNl
VGhyZXNob2xkOworICAgICAgICAgICAgcmV0dXJuIHZhbHVlID49IE9wdGlvbnM6Omxpa2VseVRv
VGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpIC8g
bV9leGVjdXRpb25FbnRyeUNvdW50ID49IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhy
ZXNob2xkOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIGNvdWxkVGFrZVNsb3dD
YXNlKGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgdW5zaWduZWQg
dmFsdWUgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkt
Pm1fY291bnRlcjsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+PSBIZXVyaXN0aWNzOjpjb3Vs
ZFRha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAv
IG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBIZXVyaXN0aWNzOjpjb3VsZFRha2VTbG93Q2FzZVRo
cmVzaG9sZDsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+PSBPcHRpb25zOjpjb3VsZFRha2VT
bG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAvIG1fZXhl
Y3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25zOjpjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZDsK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgUmFyZUNhc2VQcm9maWxlKiBhZGRTcGVjaWFs
RmFzdENhc2VQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkKQEAgLTcwNyw3ICs3MDcsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VTcGVjaWFsRmFzdENhc2Uo
aW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICB1bnNpZ25lZCBzcGVj
aWFsRmFzdENhc2VDb3VudCA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNl
dChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKLSAgICAgICAgICAgIHJldHVybiBzcGVjaWFs
RmFzdENhc2VDb3VudCA+PSBIZXVyaXN0aWNzOjpsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1D
b3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+KHNwZWNpYWxGYXN0Q2FzZUNvdW50KSAvIG1fZXhl
Y3V0aW9uRW50cnlDb3VudCA+PSBIZXVyaXN0aWNzOjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVz
aG9sZDsKKyAgICAgICAgICAgIHJldHVybiBzcGVjaWFsRmFzdENhc2VDb3VudCA+PSBPcHRpb25z
OjpsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+
KHNwZWNpYWxGYXN0Q2FzZUNvdW50KSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25z
OjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQogICAgICAgICAKICAg
ICAgICAgYm9vbCBsaWtlbHlUb1Rha2VEZWVwZXN0U2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0
KQpAQCAtNzE1LDcgKzcxNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgdW5zaWdu
ZWQgc2xvd0Nhc2VDb3VudCA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVj
b2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RD
YXNlQ291bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNv
ZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHNsb3dD
YXNlQ291bnQgLSBzcGVjaWFsRmFzdENhc2VDb3VudDsKLSAgICAgICAgICAgIHJldHVybiB2YWx1
ZSA+PSBIZXVyaXN0aWNzOjpsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0
aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBIZXVyaXN0
aWNzOjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKKyAgICAgICAgICAgIHJldHVybiB2
YWx1ZSA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0
aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25z
OjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQogICAgICAgICAKICAg
ICAgICAgYm9vbCBsaWtlbHlUb1Rha2VBbnlTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCkBA
IC03MjMsNyArNzIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICB1bnNpZ25lZCBz
bG93Q2FzZUNvdW50ID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVP
ZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCBzcGVjaWFsRmFzdENhc2VD
b3VudCA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9m
ZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0gc2xvd0Nhc2VD
b3VudCArIHNwZWNpYWxGYXN0Q2FzZUNvdW50OwotICAgICAgICAgICAgcmV0dXJuIHZhbHVlID49
IEhldXJpc3RpY3M6Omxpa2VseVRvVGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19j
YXN0PGRvdWJsZT4odmFsdWUpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49IEhldXJpc3RpY3M6
Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOworICAgICAgICAgICAgcmV0dXJuIHZhbHVl
ID49IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19j
YXN0PGRvdWJsZT4odmFsdWUpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49IE9wdGlvbnM6Omxp
a2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICB1bnNpZ25lZCBleGVjdXRpb25FbnRyeUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9leGVjdXRp
b25FbnRyeUNvdW50OyB9CkBAIC05MzMsMjUgKzkzMywyNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgLy8gdG8gYXZvaWQgdGhyYXNoaW5nLgogICAgICAgICB1bnNpZ25lZCByZW9wdGltaXph
dGlvblJldHJ5Q291bnRlcigpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCht
X3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyIDw9IEhldXJpc3RpY3M6OnJlb3B0aW1pemF0aW9u
UmV0cnlDb3VudGVyTWF4KTsKKyAgICAgICAgICAgIEFTU0VSVChtX3Jlb3B0aW1pemF0aW9uUmV0
cnlDb3VudGVyIDw9IE9wdGlvbnM6OnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4KTsKICAg
ICAgICAgICAgIHJldHVybiBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICB2b2lkIGNvdW50UmVvcHRpbWl6YXRpb24oKQogICAgICAgICB7
CiAgICAgICAgICAgICBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKys7Ci0gICAgICAgICAg
ICBpZiAobV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA+IEhldXJpc3RpY3M6OnJlb3B0aW1p
emF0aW9uUmV0cnlDb3VudGVyTWF4KQotICAgICAgICAgICAgICAgIG1fcmVvcHRpbWl6YXRpb25S
ZXRyeUNvdW50ZXIgPSBIZXVyaXN0aWNzOjpyZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1heDsK
KyAgICAgICAgICAgIGlmIChtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID4gT3B0aW9uczo6
cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXgpCisgICAgICAgICAgICAgICAgbV9yZW9wdGlt
aXphdGlvblJldHJ5Q291bnRlciA9IE9wdGlvbnM6OnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVy
TWF4OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpbnQzMl90IGNvdW50ZXJWYWx1ZUZv
ck9wdGltaXplQWZ0ZXJXYXJtVXAoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gSGV1
cmlzdGljczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCA8PCBy
ZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpOworICAgICAgICAgICAgcmV0dXJuIE9wdGlvbnM6
OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAgPDwgcmVvcHRpbWl6
YXRpb25SZXRyeUNvdW50ZXIoKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaW50MzJf
dCBjb3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCgpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBIZXVyaXN0aWNzOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRp
bWl6ZUFmdGVyTG9uZ1dhcm1VcCA8PCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpOworICAg
ICAgICAgICAgcmV0dXJuIE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXpl
QWZ0ZXJMb25nV2FybVVwIDw8IHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCk7CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIGludDMyX3QqIGFkZHJlc3NPZkV4ZWN1dGVDb3VudGVyKCkK
QEAgLTk3MCw3ICs5NzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gZXhwZW5zaXZl
IHRoYW4gZXhlY3V0aW5nIGJhc2VsaW5lIGNvZGUuCiAgICAgICAgIHZvaWQgb3B0aW1pemVOZXh0
SW52b2NhdGlvbigpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1fZXhlY3V0ZUNvdW50ZXIgPSBI
ZXVyaXN0aWNzOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZU5leHRJbnZvY2F0aW9u
OworICAgICAgICAgICAgbV9leGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50
ZXJWYWx1ZUZvck9wdGltaXplTmV4dEludm9jYXRpb247CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIC8vIENhbGwgdGhpcyB0byBwcmV2ZW50IG9wdGltaXphdGlvbiBmcm9tIGhhcHBlbmlu
ZyBhZ2Fpbi4gTm90ZSB0aGF0CkBAIC05ODAsNyArOTgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIC8vIHRoZSBmdXR1cmUgYXMgd2VsbC4KICAgICAgICAgdm9pZCBkb250T3B0aW1pemVB
bnl0aW1lU29vbigpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1fZXhlY3V0ZUNvdW50ZXIgPSBI
ZXVyaXN0aWNzOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29v
bjsKKyAgICAgICAgICAgIG1fZXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbjsKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgLy8gQ2FsbCB0aGlzIHRvIHJlaW5pdGlhbGl6ZSB0aGUgY291bnRlciB0byBpdHMg
c3RhcnRpbmcgc3RhdGUsCkBAIC0xMDIxLDcgKzEwMjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgLy8gaW4gdGhlIGJhc2VsaW5lIGNvZGUuCiAgICAgICAgIHZvaWQgb3B0aW1pemVTb29u
KCkKICAgICAgICAgewotICAgICAgICAgICAgbV9leGVjdXRlQ291bnRlciA9IEhldXJpc3RpY3M6
OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbiA8PCByZW9wdGltaXphdGlvblJl
dHJ5Q291bnRlcigpOworICAgICAgICAgICAgbV9leGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbiA8PCByZW9wdGltaXphdGlvblJldHJ5
Q291bnRlcigpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBUaGUgc3BlY3VsYXRp
dmUgSklUIHRyYWNrcyBpdHMgc3VjY2VzcyByYXRlLCBzbyB0aGF0IHdlIGNhbgpAQCAtMTA1NSwx
NyArMTA1NSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAg
IC8vIFRoZSBudW1iZXIgb2YgZmFpbHVyZXMgdGhhdCB0cmlnZ2VycyB0aGUgdXNlIG9mIHRoZSBy
YXRpby4KLSAgICAgICAgdW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGQoKSB7IHJldHVy
biBIZXVyaXN0aWNzOjpsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2UgPDwgYmFzZWxpbmVWZXJz
aW9uKCktPnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCk7IH0KLSAgICAgICAgdW5zaWduZWQg
bGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRGb3JMb29wKCkgeyByZXR1cm4gSGV1cmlzdGljczo6bGFy
Z2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlRm9yTG9vcCA8PCBiYXNlbGluZVZlcnNpb24oKS0+cmVv
cHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKTsgfQorICAgICAgICB1bnNpZ25lZCBsYXJnZUZhaWxD
b3VudFRocmVzaG9sZCgpIHsgcmV0dXJuIE9wdGlvbnM6OmxhcmdlRmFpbENvdW50VGhyZXNob2xk
QmFzZSA8PCBiYXNlbGluZVZlcnNpb24oKS0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKTsg
fQorICAgICAgICB1bnNpZ25lZCBsYXJnZUZhaWxDb3VudFRocmVzaG9sZEZvckxvb3AoKSB7IHJl
dHVybiBPcHRpb25zOjpsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2VGb3JMb29wIDw8IGJhc2Vs
aW5lVmVyc2lvbigpLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpOyB9CiAKICAgICAgICAg
Ym9vbCBzaG91bGRSZW9wdGltaXplTm93KCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IEhldXJpc3RpY3M6OmRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW8gKiBzcGVjdWxh
dGl2ZUZhaWxDb3VudGVyKCkgPj0gc3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigpICYmIHNwZWN1
bGF0aXZlRmFpbENvdW50ZXIoKSA+PSBsYXJnZUZhaWxDb3VudFRocmVzaG9sZCgpOworICAgICAg
ICAgICAgcmV0dXJuIE9wdGlvbnM6OmRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW8g
KiBzcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkgPj0gc3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigp
ICYmIHNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSA+PSBsYXJnZUZhaWxDb3VudFRocmVzaG9sZCgp
OwogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBzaG91bGRSZW9wdGltaXplRnJvbUxvb3BOb3co
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gSGV1cmlzdGljczo6ZGVzaXJlZFNwZWN1
bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbyAqIHNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSA+PSBzcGVj
dWxhdGl2ZVN1Y2Nlc3NDb3VudGVyKCkgJiYgc3BlY3VsYXRpdmVGYWlsQ291bnRlcigpID49IGxh
cmdlRmFpbENvdW50VGhyZXNob2xkRm9yTG9vcCgpOworICAgICAgICAgICAgcmV0dXJuIE9wdGlv
bnM6OmRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW8gKiBzcGVjdWxhdGl2ZUZhaWxD
b3VudGVyKCkgPj0gc3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigpICYmIHNwZWN1bGF0aXZlRmFp
bENvdW50ZXIoKSA+PSBsYXJnZUZhaWxDb3VudFRocmVzaG9sZEZvckxvb3AoKTsKICAgICAgICAg
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggZDIzMWFkNi4uMTFhOGUwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTk3OSw3ICs5NzksNyBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhib29sIHVzZXNSZXN1bHQsIGludCBjYWxs
VGFyZ2V0LCBOb2RlSW5kZXggYwogICAgIHVuc2lnbmVkIGRlcHRoID0gMDsKICAgICBmb3IgKElu
bGluZVN0YWNrRW50cnkqIGVudHJ5ID0gbV9pbmxpbmVTdGFja1RvcDsgZW50cnk7IGVudHJ5ID0g
ZW50cnktPm1fY2FsbGVyKSB7CiAgICAgICAgICsrZGVwdGg7Ci0gICAgICAgIGlmIChkZXB0aCA+
PSBIZXVyaXN0aWNzOjptYXhpbXVtSW5saW5pbmdEZXB0aCkKKyAgICAgICAgaWYgKGRlcHRoID49
IE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ0RlcHRoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OyAvLyBEZXB0aCBleGNlZWRlZC4KICAgICAgICAgCiAgICAgICAgIGlmIChlbnRyeS0+ZXhlY3V0
YWJsZSgpID09IGV4ZWN1dGFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NhcGFiaWxpdGllcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuaAppbmRleCAwZjcwYWE0Li4yNjUzYzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJJ
bnRyaW5zaWMuaCIKICNpbmNsdWRlICJERkdOb2RlLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5o
IgotI2luY2x1ZGUgIkhldXJpc3RpY3MuaCIKKyNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIApAQCAtNDAsMjgg
KzQwLDI4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIC8vIGNoZWNrIG9wY29k
ZXMuCiBpbmxpbmUgYm9vbCBtaWdodENvbXBpbGVFdmFsKENvZGVCbG9jayogY29kZUJsb2NrKQog
ewotICAgIHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBIZXVyaXN0aWNz
OjptYXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKKyAgICByZXR1
cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9uczo6bWF4aW11bU9wdGlt
aXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CiB9CiBpbmxpbmUgYm9vbCBtaWdodENv
bXBpbGVQcm9ncmFtKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIHJldHVybiBjb2RlQmxv
Y2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBIZXVyaXN0aWNzOjptYXhpbXVtT3B0aW1pemF0aW9u
Q2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKKyAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVj
dGlvbkNvdW50KCkgPD0gT3B0aW9uczo6bWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3Ry
dWN0aW9uQ291bnQ7CiB9CiBpbmxpbmUgYm9vbCBtaWdodENvbXBpbGVGdW5jdGlvbkZvckNhbGwo
Q29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgcmV0dXJuIGNvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25Db3VudCgpIDw9IEhldXJpc3RpY3M6Om1heGltdW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0
cnVjdGlvbkNvdW50OworICAgIHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8
PSBPcHRpb25zOjptYXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsK
IH0KIGlubGluZSBib29sIG1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ29uc3RydWN0KENvZGVCbG9j
ayogY29kZUJsb2NrKQogewotICAgIHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQo
KSA8PSBIZXVyaXN0aWNzOjptYXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25D
b3VudDsKKyAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9u
czo6bWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CiB9CiAKIGlu
bGluZSBib29sIG1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JDYWxsKENvZGVCbG9jayogY29kZUJsb2Nr
KQogewotICAgIHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBIZXVyaXN0
aWNzOjptYXhpbXVtRnVuY3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3Vu
dDsKKyAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9uczo6
bWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CiB9
CiBpbmxpbmUgYm9vbCBtaWdodElubGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0KENvZGVCbG9jayog
Y29kZUJsb2NrKQogewotICAgIHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8
PSBIZXVyaXN0aWNzOjptYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJ
bnN0cnVjdGlvbkNvdW50OworICAgIHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQo
KSA8PSBPcHRpb25zOjptYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJ
bnN0cnVjdGlvbkNvdW50OwogfQogCiAvLyBPcGNvZGUgY2hlY2tpbmcuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAppbmRleCAyY2EyYzE4Li43YjE5NDExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgdm9p
ZCBPU1JFeGl0OjpkdW1wKEZJTEUqIG91dCkgY29uc3QKIAogYm9vbCBPU1JFeGl0Ojpjb25zaWRl
ckFkZGluZ0FzRnJlcXVlbnRFeGl0U2l0ZVNsb3coQ29kZUJsb2NrKiBkZmdDb2RlQmxvY2ssIENv
ZGVCbG9jayogcHJvZmlsZWRDb2RlQmxvY2spCiB7Ci0gICAgaWYgKHN0YXRpY19jYXN0PGRvdWJs
ZT4obV9jb3VudCkgLyBkZmdDb2RlQmxvY2stPnNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSA8PSBI
ZXVyaXN0aWNzOjpvc3JFeGl0UHJvbWluZW5jZUZvckZyZXF1ZW50RXhpdFNpdGUpCisgICAgaWYg
KHN0YXRpY19jYXN0PGRvdWJsZT4obV9jb3VudCkgLyBkZmdDb2RlQmxvY2stPnNwZWN1bGF0aXZl
RmFpbENvdW50ZXIoKSA8PSBPcHRpb25zOjpvc3JFeGl0UHJvbWluZW5jZUZvckZyZXF1ZW50RXhp
dFNpdGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICByZXR1cm4gQXNzZW1ibHlI
ZWxwZXJzOjpiYXNlbGluZUNvZGVCbG9ja0Zvck9yaWdpbkFuZEJhc2VsaW5lQ29kZUJsb2NrKG1f
Y29kZU9yaWdpbiwgcHJvZmlsZWRDb2RlQmxvY2spLT5hZGRGcmVxdWVudEV4aXRTaXRlKEZyZXF1
ZW50RXhpdFNpdGUobV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIG1fa2luZCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNw
cAppbmRleCA1OGE1ZjIyLi42MTIyZjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcApAQCAtNTE2LDEyICs1MTYsMTIg
QEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IE9TUkV4aXQmIGV4aXQs
IFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY28KICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVy
czo6VHJ1c3RlZEltbVB0cihtX2ppdC5iYXNlbGluZUNvZGVCbG9jaygpKSwgR1BSSW5mbzo6cmVn
VDApOwogICAgIAogICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCBmZXdGYWlscyA9IG1faml0LmJy
YW5jaDMyKEFzc2VtYmx5SGVscGVyczo6QmVsb3dPckVxdWFsLCBHUFJJbmZvOjpyZWdUMiwgQXNz
ZW1ibHlIZWxwZXJzOjpJbW0zMihtX2ppdC5jb2RlQmxvY2soKS0+bGFyZ2VGYWlsQ291bnRUaHJl
c2hvbGQoKSkpOwotICAgIG1faml0Lm11bDMyKEFzc2VtYmx5SGVscGVyczo6SW1tMzIoSGV1cmlz
dGljczo6ZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbyksIEdQUkluZm86OnJlZ1Qy
LCBHUFJJbmZvOjpyZWdUMik7CisgICAgbV9qaXQubXVsMzIoQXNzZW1ibHlIZWxwZXJzOjpJbW0z
MihPcHRpb25zOjpkZXNpcmVkU3BlY3VsYXRpdmVTdWNjZXNzRmFpbFJhdGlvKSwgR1BSSW5mbzo6
cmVnVDIsIEdQUkluZm86OnJlZ1QyKTsKICAgICAKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAg
bG93RmFpbFJhdGUgPSBtX2ppdC5icmFuY2gzMihBc3NlbWJseUhlbHBlcnM6OkJlbG93T3JFcXVh
bCwgR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OnJlZ1QxKTsKICAgICAKICAgICAvLyBSZW9wdGlt
aXplIGFzIHNvb24gYXMgcG9zc2libGUuCi0gICAgbV9qaXQuc3RvcmUzMihBc3NlbWJseUhlbHBl
cnM6OkltbTMyKEhldXJpc3RpY3M6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplTmV4
dEludm9jYXRpb24pLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENv
ZGVCbG9jazo6b2Zmc2V0T2ZFeGVjdXRlQ291bnRlcigpKSk7CisgICAgbV9qaXQuc3RvcmUzMihB
c3NlbWJseUhlbHBlcnM6OkltbTMyKE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9w
dGltaXplTmV4dEludm9jYXRpb24pLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6
cmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZFeGVjdXRlQ291bnRlcigpKSk7CiAgICAgQXNzZW1i
bHlIZWxwZXJzOjpKdW1wIGRvbmVBZGp1c3RpbmcgPSBtX2ppdC5qdW1wKCk7CiAgICAgCiAgICAg
ZmV3RmFpbHMubGluaygmbV9qaXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAppbmRleCBjOTY1NGM1Li4yNmUyYjkzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcApA
QCAtNTQ0LDEyICs1NDQsMTIgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNv
bnN0IE9TUkV4aXQmIGV4aXQsIFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY28KICAgICBtX2ppdC5t
b3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihtX2ppdC5iYXNlbGluZUNvZGVCbG9j
aygpKSwgR1BSSW5mbzo6cmVnVDApOwogICAgIAogICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCBm
ZXdGYWlscyA9IG1faml0LmJyYW5jaDMyKEFzc2VtYmx5SGVscGVyczo6QmVsb3dPckVxdWFsLCBH
UFJJbmZvOjpyZWdUMiwgQXNzZW1ibHlIZWxwZXJzOjpJbW0zMihtX2ppdC5jb2RlQmxvY2soKS0+
bGFyZ2VGYWlsQ291bnRUaHJlc2hvbGQoKSkpOwotICAgIG1faml0Lm11bDMyKEFzc2VtYmx5SGVs
cGVyczo6SW1tMzIoSGV1cmlzdGljczo6ZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRp
byksIEdQUkluZm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUMik7CisgICAgbV9qaXQubXVsMzIoQXNz
ZW1ibHlIZWxwZXJzOjpJbW0zMihPcHRpb25zOjpkZXNpcmVkU3BlY3VsYXRpdmVTdWNjZXNzRmFp
bFJhdGlvKSwgR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OnJlZ1QyKTsKICAgICAKICAgICBBc3Nl
bWJseUhlbHBlcnM6Okp1bXAgbG93RmFpbFJhdGUgPSBtX2ppdC5icmFuY2gzMihBc3NlbWJseUhl
bHBlcnM6OkJlbG93T3JFcXVhbCwgR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OnJlZ1QxKTsKICAg
ICAKICAgICAvLyBSZW9wdGltaXplIGFzIHNvb24gYXMgcG9zc2libGUuCi0gICAgbV9qaXQuc3Rv
cmUzMihBc3NlbWJseUhlbHBlcnM6OkltbTMyKEhldXJpc3RpY3M6OmV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvck9wdGltaXplTmV4dEludm9jYXRpb24pLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3Mo
R1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZFeGVjdXRlQ291bnRlcigpKSk7Cisg
ICAgbV9qaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OkltbTMyKE9wdGlvbnM6OmV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvck9wdGltaXplTmV4dEludm9jYXRpb24pLCBBc3NlbWJseUhlbHBlcnM6
OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZFeGVjdXRlQ291bnRl
cigpKSk7CiAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIGRvbmVBZGp1c3RpbmcgPSBtX2ppdC5q
dW1wKCk7CiAgICAgCiAgICAgZmV3RmFpbHMubGluaygmbV9qaXQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgKaW5kZXggYTA2NDRlZi4u
YjU5OWYwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJs
ZUFjY2Vzc0RhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxl
QWNjZXNzRGF0YS5oCkBAIC05Nyw3ICs5Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZFVz
ZURvdWJsZUZvcm1hdEFjY29yZGluZ1RvVm90ZSgpCiAgICAgewogICAgICAgICAvLyBGSVhNRTog
bWFrZSB0aGlzIHdvcmsgZm9yIGFyZ3VtZW50cy4KLSAgICAgICAgcmV0dXJuICFvcGVyYW5kSXNB
cmd1bWVudChvcGVyYW5kKCkpICYmICgoaXNOdW1iZXJQcmVkaWN0aW9uKHByZWRpY3Rpb24oKSkg
JiYgZG91YmxlVm90ZVJhdGlvKCkgPj0gSGV1cmlzdGljczo6ZG91YmxlVm90ZVJhdGlvRm9yRG91
YmxlRm9ybWF0KSB8fCBpc0RvdWJsZVByZWRpY3Rpb24ocHJlZGljdGlvbigpKSk7CisgICAgICAg
IHJldHVybiAhb3BlcmFuZElzQXJndW1lbnQob3BlcmFuZCgpKSAmJiAoKGlzTnVtYmVyUHJlZGlj
dGlvbihwcmVkaWN0aW9uKCkpICYmIGRvdWJsZVZvdGVSYXRpbygpID49IE9wdGlvbnM6OmRvdWJs
ZVZvdGVSYXRpb0ZvckRvdWJsZUZvcm1hdCkgfHwgaXNEb3VibGVQcmVkaWN0aW9uKHByZWRpY3Rp
b24oKSkpOwogICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFVzZURvdWJsZUZvcm1hdCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAppbmRleCAzZjRmZGE3Li5kZDBl
NmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKQEAgLTI4LDcg
KzI4LDcgQEAKIAogI2luY2x1ZGUgIkNvbnNlcnZhdGl2ZVJvb3RzLmgiCiAjaW5jbHVkZSAiSGVh
cC5oIgotI2luY2x1ZGUgIkhldXJpc3RpY3MuaCIKKyNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5j
bHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCkBAIC02MCw3ICs2MCw3IEBAIE1hcmtTdGFja1NlZ21lbnQqIE1hcmtTdGFja1NlZ21lbnRB
bGxvY2F0b3I6OmFsbG9jYXRlKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxNYXJrU3RhY2tTZWdtZW50Kj4oT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQo
SGV1cmlzdGljczo6Z2NNYXJrU3RhY2tTZWdtZW50U2l6ZSkpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxNYXJrU3RhY2tTZWdtZW50Kj4oT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoT3B0
aW9uczo6Z2NNYXJrU3RhY2tTZWdtZW50U2l6ZSkpOwogfQogCiB2b2lkIE1hcmtTdGFja1NlZ21l
bnRBbGxvY2F0b3I6OnJlbGVhc2UoTWFya1N0YWNrU2VnbWVudCogc2VnbWVudCkKQEAgLTgxLDEz
ICs4MSwxMyBAQCB2b2lkIE1hcmtTdGFja1NlZ21lbnRBbGxvY2F0b3I6OnNocmlua1Jlc2VydmUo
KQogICAgIHdoaWxlIChzZWdtZW50cykgewogICAgICAgICBNYXJrU3RhY2tTZWdtZW50KiB0b0Zy
ZWUgPSBzZWdtZW50czsKICAgICAgICAgc2VnbWVudHMgPSBzZWdtZW50cy0+bV9wcmV2aW91czsK
LSAgICAgICAgT1NBbGxvY2F0b3I6OmRlY29tbWl0QW5kUmVsZWFzZSh0b0ZyZWUsIEhldXJpc3Rp
Y3M6OmdjTWFya1N0YWNrU2VnbWVudFNpemUpOworICAgICAgICBPU0FsbG9jYXRvcjo6ZGVjb21t
aXRBbmRSZWxlYXNlKHRvRnJlZSwgT3B0aW9uczo6Z2NNYXJrU3RhY2tTZWdtZW50U2l6ZSk7CiAg
ICAgfQogfQogCiBNYXJrU3RhY2tBcnJheTo6TWFya1N0YWNrQXJyYXkoTWFya1N0YWNrU2VnbWVu
dEFsbG9jYXRvciYgYWxsb2NhdG9yKQogICAgIDogbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQotICAg
ICwgbV9zZWdtZW50Q2FwYWNpdHkoTWFya1N0YWNrU2VnbWVudDo6Y2FwYWNpdHlGcm9tU2l6ZShI
ZXVyaXN0aWNzOjpnY01hcmtTdGFja1NlZ21lbnRTaXplKSkKKyAgICAsIG1fc2VnbWVudENhcGFj
aXR5KE1hcmtTdGFja1NlZ21lbnQ6OmNhcGFjaXR5RnJvbVNpemUoT3B0aW9uczo6Z2NNYXJrU3Rh
Y2tTZWdtZW50U2l6ZSkpCiAgICAgLCBtX3RvcCgwKQogICAgICwgbV9udW1iZXJPZlByZXZpb3Vz
U2VnbWVudHMoMCkKIHsKQEAgLTE0NSwxMCArMTQ1LDEwIEBAIGJvb2wgTWFya1N0YWNrQXJyYXk6
OmRvbmF0ZVNvbWVDZWxsc1RvKE1hcmtTdGFja0FycmF5JiBvdGhlcikKICAgICBvdGhlci52YWxp
ZGF0ZVByZXZpb3VzKCk7CiAgICAgICAgIAogICAgIC8vIEZhc3QgY2hlY2s6IHNlZSBpZiB0aGUg
b3RoZXIgbWFyayBzdGFjayBhbHJlYWR5IGhhcyBlbm91Z2ggc2VnbWVudHMuCi0gICAgaWYgKG90
aGVyLm1fbnVtYmVyT2ZQcmV2aW91c1NlZ21lbnRzICsgMSA+PSBIZXVyaXN0aWNzOjptYXhpbXVt
TnVtYmVyT2ZTaGFyZWRTZWdtZW50cykKKyAgICBpZiAob3RoZXIubV9udW1iZXJPZlByZXZpb3Vz
U2VnbWVudHMgKyAxID49IE9wdGlvbnM6Om1heGltdW1OdW1iZXJPZlNoYXJlZFNlZ21lbnRzKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgIHNpemVfdCBudW1iZXJPZkNlbGxz
VG9LZWVwID0gSGV1cmlzdGljczo6bWluaW11bU51bWJlck9mQ2VsbHNUb0tlZXA7CisgICAgc2l6
ZV90IG51bWJlck9mQ2VsbHNUb0tlZXAgPSBPcHRpb25zOjptaW5pbXVtTnVtYmVyT2ZDZWxsc1Rv
S2VlcDsKICAgICBBU1NFUlQobV90b3AgPiBudW1iZXJPZkNlbGxzVG9LZWVwIHx8IG1fdG9wU2Vn
bWVudC0+bV9wcmV2aW91cyk7CiAgICAgICAgIAogICAgIC8vIExvb2tzIGxpa2Ugd2Ugc2hvdWxk
IGRvbmF0ZSEgR2l2ZSB0aGUgb3RoZXIgbWFyayBzdGFjayBhbGwgb2Ygb3VyCkBAIC0yMDksOCAr
MjA5LDggQEAgdm9pZCBNYXJrU3RhY2tBcnJheTo6c3RlYWxTb21lQ2VsbHNGcm9tKE1hcmtTdGFj
a0FycmF5JiBvdGhlcikKICAgICB9CiAgICAgICAgIAogICAgIC8vIE90aGVyd2lzZSBkcmFpbiAx
L050aCBvZiB0aGUgc2hhcmVkIGFycmF5IHdoZXJlIE4gaXMgdGhlIG51bWJlciBvZgotICAgIC8v
IHdvcmtlcnMsIG9yIEhldXJpc3RpY3M6Om1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVwLCB3aGlj
aGV2ZXIgaXMgYmlnZ2VyLgotICAgIHNpemVfdCBudW1iZXJPZkNlbGxzVG9TdGVhbCA9IHN0ZDo6
bWF4KChzaXplX3QpSGV1cmlzdGljczo6bWluaW11bU51bWJlck9mQ2VsbHNUb0tlZXAsIG90aGVy
LnNpemUoKSAvIEhldXJpc3RpY3M6Om51bWJlck9mR0NNYXJrZXJzKTsKKyAgICAvLyB3b3JrZXJz
LCBvciBPcHRpb25zOjptaW5pbXVtTnVtYmVyT2ZDZWxsc1RvS2VlcCwgd2hpY2hldmVyIGlzIGJp
Z2dlci4KKyAgICBzaXplX3QgbnVtYmVyT2ZDZWxsc1RvU3RlYWwgPSBzdGQ6Om1heCgoc2l6ZV90
KU9wdGlvbnM6Om1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVwLCBvdGhlci5zaXplKCkgLyBPcHRp
b25zOjpudW1iZXJPZkdDTWFya2Vycyk7CiAgICAgd2hpbGUgKG51bWJlck9mQ2VsbHNUb1N0ZWFs
LS0gPiAwICYmIG90aGVyLmNhblJlbW92ZUxhc3QoKSkKICAgICAgICAgYXBwZW5kKG90aGVyLnJl
bW92ZUxhc3QoKSk7CiB9CkBAIC0yMzgsNyArMjM4LDcgQEAgTWFya1N0YWNrVGhyZWFkU2hhcmVk
RGF0YTo6TWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEp
CiAgICAgLCBtX3BhcmFsbGVsTWFya2Vyc1Nob3VsZEV4aXQoZmFsc2UpCiB7CiAjaWYgRU5BQkxF
KFBBUkFMTEVMX0dDKQotICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBIZXVyaXN0aWNzOjpu
dW1iZXJPZkdDTWFya2VyczsgKytpKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IE9w
dGlvbnM6Om51bWJlck9mR0NNYXJrZXJzOyArK2kpIHsKICAgICAgICAgbV9tYXJraW5nVGhyZWFk
cy5hcHBlbmQoY3JlYXRlVGhyZWFkKG1hcmtpbmdUaHJlYWRTdGFydEZ1bmMsIHRoaXMsICJKYXZh
U2NyaXB0Q29yZTo6TWFya2luZyIpKTsKICAgICAgICAgQVNTRVJUKG1fbWFya2luZ1RocmVhZHMu
bGFzdCgpKTsKICAgICB9CkBAIC0zMjksNyArMzI5LDcgQEAgdm9pZCBTbG90VmlzaXRvcjo6ZG9u
YXRlU2xvdygpCiAgICAgaWYgKG1fc3RhY2suZG9uYXRlU29tZUNlbGxzVG8obV9zaGFyZWQubV9z
aGFyZWRNYXJrU3RhY2spKSB7CiAgICAgICAgIC8vIE9ubHkgd2FrZSB1cCB0aHJlYWRzIGlmIHRo
ZSBzaGFyZWQgc3RhY2sgaXMgYmlnIGVub3VnaDsgb3RoZXJ3aXNlIGFzc3VtZSB0aGF0CiAgICAg
ICAgIC8vIGl0J3MgbW9yZSBwcm9maXRhYmxlIGZvciB1cyB0byBqdXN0IHNjYW4gdGhpcyBvdXJz
ZWx2ZXMgbGF0ZXIuCi0gICAgICAgIGlmIChtX3NoYXJlZC5tX3NoYXJlZE1hcmtTdGFjay5zaXpl
KCkgPj0gSGV1cmlzdGljczo6c2hhcmVkU3RhY2tXYWtldXBUaHJlc2hvbGQpCisgICAgICAgIGlm
IChtX3NoYXJlZC5tX3NoYXJlZE1hcmtTdGFjay5zaXplKCkgPj0gT3B0aW9uczo6c2hhcmVkU3Rh
Y2tXYWtldXBUaHJlc2hvbGQpCiAgICAgICAgICAgICBtX3NoYXJlZC5tX21hcmtpbmdDb25kaXRp
b24uYnJvYWRjYXN0KCk7CiAgICAgfQogfQpAQCAtMzQzLDEwICszNDMsMTAgQEAgdm9pZCBTbG90
VmlzaXRvcjo6ZHJhaW4oKQogICAgIHZvaWQqIGpzU3RyaW5nVlB0ciA9IG1fanNTdHJpbmdWUHRy
OwogCiAjaWYgRU5BQkxFKFBBUkFMTEVMX0dDKQotICAgIGlmIChIZXVyaXN0aWNzOjpudW1iZXJP
ZkdDTWFya2VycyA+IDEpIHsKKyAgICBpZiAoT3B0aW9uczo6bnVtYmVyT2ZHQ01hcmtlcnMgPiAx
KSB7CiAgICAgICAgIHdoaWxlICghbV9zdGFjay5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIG1f
c3RhY2sucmVmaWxsKCk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGNvdW50ZG93biA9IEhl
dXJpc3RpY3M6Om1pbmltdW1OdW1iZXJPZlNjYW5zQmV0d2VlblJlYmFsYW5jZTsgbV9zdGFjay5j
YW5SZW1vdmVMYXN0KCkgJiYgY291bnRkb3duLS07KQorICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBjb3VudGRvd24gPSBPcHRpb25zOjptaW5pbXVtTnVtYmVyT2ZTY2Fuc0JldHdlZW5SZWJhbGFu
Y2U7IG1fc3RhY2suY2FuUmVtb3ZlTGFzdCgpICYmIGNvdW50ZG93bi0tOykKICAgICAgICAgICAg
ICAgICB2aXNpdENoaWxkcmVuKCp0aGlzLCBtX3N0YWNrLnJlbW92ZUxhc3QoKSwganNGaW5hbE9i
amVjdFZQdHIsIGpzQXJyYXlWUHRyLCBqc1N0cmluZ1ZQdHIpOwogICAgICAgICAgICAgZG9uYXRl
S25vd25QYXJhbGxlbCgpOwogICAgICAgICB9CkBAIC0zNjcsMTQgKzM2NywxNCBAQCB2b2lkIFNs
b3RWaXNpdG9yOjpkcmFpbkZyb21TaGFyZWQoU2hhcmVkRHJhaW5Nb2RlIHNoYXJlZERyYWluTW9k
ZSkKIHsKICAgICBBU1NFUlQobV9pc0luUGFyYWxsZWxNb2RlKTsKICAgICAKLSAgICBBU1NFUlQo
SGV1cmlzdGljczo6bnVtYmVyT2ZHQ01hcmtlcnMpOworICAgIEFTU0VSVChPcHRpb25zOjpudW1i
ZXJPZkdDTWFya2Vycyk7CiAgICAgCiAgICAgYm9vbCBzaG91bGRCZVBhcmFsbGVsOwogCiAjaWYg
RU5BQkxFKFBBUkFMTEVMX0dDKQotICAgIHNob3VsZEJlUGFyYWxsZWwgPSBIZXVyaXN0aWNzOjpu
dW1iZXJPZkdDTWFya2VycyA+IDE7CisgICAgc2hvdWxkQmVQYXJhbGxlbCA9IE9wdGlvbnM6Om51
bWJlck9mR0NNYXJrZXJzID4gMTsKICNlbHNlCi0gICAgQVNTRVJUKEhldXJpc3RpY3M6Om51bWJl
ck9mR0NNYXJrZXJzID09IDEpOworICAgIEFTU0VSVChPcHRpb25zOjpudW1iZXJPZkdDTWFya2Vy
cyA9PSAxKTsKICAgICBzaG91bGRCZVBhcmFsbGVsID0gZmFsc2U7CiAjZW5kaWYKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgKaW5kZXggYzUwODAxOS4uOGNiZGM2MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgKQEAgLTI3LDcgKzI3LDcgQEAK
ICNkZWZpbmUgTWFya1N0YWNrX2gKIAogI2luY2x1ZGUgIkhhbmRsZVR5cGVzLmgiCi0jaW5jbHVk
ZSAiSGV1cmlzdGljcy5oIgorI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJKU1ZhbHVl
LmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJVbmNvbmRpdGlvbmFsRmluYWxp
emVyLmgiCkBAIC0yNjEsNyArMjYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAg
ICAgICB2b2lkIG1lcmdlT3BhcXVlUm9vdHNJZlByb2ZpdGFibGUoKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fb3BhcXVlUm9vdHMuc2l6ZSgpKSA8
IEhldXJpc3RpY3M6Om9wYXF1ZVJvb3RNZXJnZVRocmVzaG9sZCkKKyAgICAgICAgICAgIGlmIChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vcGFxdWVSb290cy5zaXplKCkpIDwgT3B0aW9uczo6b3Bh
cXVlUm9vdE1lcmdlVGhyZXNob2xkKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIG1lcmdlT3BhcXVlUm9vdHMoKTsKICAgICAgICAgfQpAQCAtMzA5LDcgKzMwOSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIGlubGluZSB2b2lkIE1hcmtTdGFjazo6YWRkT3BhcXVlUm9vdCh2
b2lkKiByb290KQogICAgIHsKICNpZiBFTkFCTEUoUEFSQUxMRUxfR0MpCi0gICAgICAgIGlmIChI
ZXVyaXN0aWNzOjpudW1iZXJPZkdDTWFya2VycyA9PSAxKSB7CisgICAgICAgIGlmIChPcHRpb25z
OjpudW1iZXJPZkdDTWFya2VycyA9PSAxKSB7CiAgICAgICAgICAgICAvLyBQdXQgZGlyZWN0bHkg
aW50byB0aGUgc2hhcmVkIEhhc2hTZXQuCiAgICAgICAgICAgICBtX3NoYXJlZC5tX29wYXF1ZVJv
b3RzLmFkZChyb290KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM3NSw3ICszNzUsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGlubGluZSBib29sIE1hcmtTdGFja0FycmF5OjpjYW5Eb25h
dGVTb21lQ2VsbHMoKQogICAgIHsKLSAgICAgICAgc2l6ZV90IG51bWJlck9mQ2VsbHNUb0tlZXAg
PSBIZXVyaXN0aWNzOjptaW5pbXVtTnVtYmVyT2ZDZWxsc1RvS2VlcDsKKyAgICAgICAgc2l6ZV90
IG51bWJlck9mQ2VsbHNUb0tlZXAgPSBPcHRpb25zOjptaW5pbXVtTnVtYmVyT2ZDZWxsc1RvS2Vl
cDsKICAgICAgICAgLy8gQW5vdGhlciBjaGVjazogc2VlIGlmIHdlIGhhdmUgZW5vdWdoIGNlbGxz
IHRvIHdhcnJhbnQgZG9uYXRpb24uCiAgICAgICAgIGlmIChtX3RvcCA8PSBudW1iZXJPZkNlbGxz
VG9LZWVwKSB7CiAgICAgICAgICAgICAvLyBUaGlzIGluZGljYXRlcyB0aGF0IHdlIG1pZ2h0IG5v
dCB3YW50IHRvIGRvbmF0ZSBhbnl0aGluZzsgY2hlY2sgaWYgd2UgaGF2ZQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgKaW5kZXggYTQ2MTc4MS4uNjQ3YjJjYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCkBAIC00MCw3ICs0MCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRvbmF0ZSgpCiAgICAgewogICAgICAgICBBU1NFUlQobV9pc0luUGFy
YWxsZWxNb2RlKTsKLSAgICAgICAgaWYgKEhldXJpc3RpY3M6Om51bWJlck9mR0NNYXJrZXJzID09
IDEpCisgICAgICAgIGlmIChPcHRpb25zOjpudW1iZXJPZkdDTWFya2VycyA9PSAxKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICAgICAgZG9uYXRlS25vd25QYXJhbGxlbCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDU0MmI0ODQuLmJkNzNjZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBKSVQ6OmVtaXRPcHRp
bWl6YXRpb25DaGVjayhPcHRpbWl6YXRpb25DaGVja0tpbmQga2luZCkKICAgICBpZiAoIXNob3Vs
ZEVtaXRQcm9maWxpbmcoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIEp1bXAgc2tpcE9w
dGltaXplID0gYnJhbmNoQWRkMzIoU2lnbmVkLCBUcnVzdGVkSW1tMzIoa2luZCA9PSBMb29wT3B0
aW1pemF0aW9uQ2hlY2sgPyBIZXVyaXN0aWNzOjpleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9y
TG9vcCA6IEhldXJpc3RpY3M6OmV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JSZXR1cm4pLCBB
YnNvbHV0ZUFkZHJlc3MobV9jb2RlQmxvY2stPmFkZHJlc3NPZkV4ZWN1dGVDb3VudGVyKCkpKTsK
KyAgICBKdW1wIHNraXBPcHRpbWl6ZSA9IGJyYW5jaEFkZDMyKFNpZ25lZCwgVHJ1c3RlZEltbTMy
KGtpbmQgPT0gTG9vcE9wdGltaXphdGlvbkNoZWNrID8gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRl
ckluY3JlbWVudEZvckxvb3AgOiBPcHRpb25zOjpleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9y
UmV0dXJuKSwgQWJzb2x1dGVBZGRyZXNzKG1fY29kZUJsb2NrLT5hZGRyZXNzT2ZFeGVjdXRlQ291
bnRlcigpKSk7CiAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywga2luZCA9PSBMb29wT3B0
aW1pemF0aW9uQ2hlY2sgPyBjdGlfb3B0aW1pemVfZnJvbV9sb29wIDogY3RpX29wdGltaXplX2Zy
b21fcmV0KTsKICAgICBpZiAoa2luZCA9PSBMb29wT3B0aW1pemF0aW9uQ2hlY2spCiAgICAgICAg
IHN0dWJDYWxsLmFkZEFyZ3VtZW50KEltbTMyKG1fYnl0ZWNvZGVPZmZzZXQpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAKaW5kZXggZmMwYzU2MC4uMzZkM2Y3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAg
LTEwMiw4ICsxMDIsOCBAQCBzdHJ1Y3QgU2NyaXB0IHsKICAgICB9CiB9OwogCi1zdHJ1Y3QgT3B0
aW9ucyB7Ci0gICAgT3B0aW9ucygpCitzdHJ1Y3QgQ29tbWFuZExpbmUgeworICAgIENvbW1hbmRM
aW5lKCkKICAgICAgICAgOiBpbnRlcmFjdGl2ZShmYWxzZSkKICAgICAgICAgLCBkdW1wKGZhbHNl
KQogICAgIHsKQEAgLTU0OCw3ICs1NDgsNyBAQCBzdGF0aWMgTk9fUkVUVVJOIHZvaWQgcHJpbnRV
c2FnZVN0YXRlbWVudChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGJvb2wgaGVscCA9CiAgICAg
ZXhpdChoZWxwID8gRVhJVF9TVUNDRVNTIDogRVhJVF9GQUlMVVJFKTsKIH0KIAotc3RhdGljIHZv
aWQgcGFyc2VBcmd1bWVudHMoaW50IGFyZ2MsIGNoYXIqKiBhcmd2LCBPcHRpb25zJiBvcHRpb25z
LCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCitzdGF0aWMgdm9pZCBwYXJzZUFyZ3VtZW50cyhp
bnQgYXJnYywgY2hhcioqIGFyZ3YsIENvbW1hbmRMaW5lJiBvcHRpb25zLCBKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEpCiB7CiAgICAgaW50IGkgPSAxOwogICAgIGZvciAoOyBpIDwgYXJnYzsgKytp
KSB7CkBAIC02MDIsNyArNjAyLDcgQEAgaW50IGpzY21haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2
LCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiB7CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFz
c2VydGlvbnNPbmx5KTsKIAotICAgIE9wdGlvbnMgb3B0aW9uczsKKyAgICBDb21tYW5kTGluZSBv
cHRpb25zOwogICAgIHBhcnNlQXJndW1lbnRzKGFyZ2MsIGFyZ3YsIG9wdGlvbnMsIGdsb2JhbERh
dGEpOwogCiAgICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNy
ZWF0ZSgqZ2xvYmFsRGF0YSwgR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKmdsb2JhbERh
dGEsIGpzTnVsbCgpKSwgb3B0aW9ucy5hcmd1bWVudHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSGV1cmlzdGljcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9IZXVyaXN0aWNzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
Nzc3M2JjOS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVy
aXN0aWNzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxNCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJIZXVyaXN0aWNzLmgiCi0jaW5jbHVkZSA8d3RmL1BhZ2VCbG9jay5oPgotCi0jaW5j
bHVkZSA8bGltaXRzPgotCi0jaWYgT1MoREFSV0lOKSAmJiBFTkFCTEUoUEFSQUxMRUxfR0MpCi0j
aW5jbHVkZSA8c3lzL3N5c2N0bC5oPgotI2VuZGlmCi0KLS8vIFNldCB0byAxIHRvIGNvbnRyb2wg
dGhlIGhldXJpc3RpY3MgdXNpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzLgotI2RlZmluZSBFTkFC
TEVfUlVOX1RJTUVfSEVVUklTVElDUyAwCi0KLSNpZiBFTkFCTEUoUlVOX1RJTUVfSEVVUklTVElD
UykKLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEhl
dXJpc3RpY3MgewotCi11bnNpZ25lZCBtYXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1
Y3Rpb25Db3VudDsKLQotdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRp
ZGF0ZUluc3RydWN0aW9uQ291bnQ7Ci11bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1
Y3RJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OwotCi11bnNpZ25lZCBtYXhpbXVtSW5s
aW5pbmdEZXB0aDsKLQotaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFm
dGVyV2FybVVwOwotaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVy
TG9uZ1dhcm1VcDsKLWludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXpl
QW55dGltZVNvb247Ci1pbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29v
bjsKLWludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVOZXh0SW52b2NhdGlv
bjsKLQotaW50MzJfdCBleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yTG9vcDsKLWludDMyX3Qg
ZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvclJldHVybjsKLQotdW5zaWduZWQgZGVzaXJlZFNw
ZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbzsKLQotZG91YmxlIGxpa2VseVRvVGFrZVNsb3dDYXNl
VGhyZXNob2xkOwotZG91YmxlIGNvdWxkVGFrZVNsb3dDYXNlVGhyZXNob2xkOwotdW5zaWduZWQg
bGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQ7Ci11bnNpZ25lZCBjb3VsZFRha2VTbG93
Q2FzZU1pbmltdW1Db3VudDsKLQotZG91YmxlIG9zckV4aXRQcm9taW5lbmNlRm9yRnJlcXVlbnRF
eGl0U2l0ZTsKLQotdW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlOwotdW5zaWdu
ZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlRm9yTG9vcDsKLQotdW5zaWduZWQgcmVvcHRp
bWl6YXRpb25SZXRyeUNvdW50ZXJNYXg7Ci11bnNpZ25lZCByZW9wdGltaXphdGlvblJldHJ5Q291
bnRlclN0ZXA7Ci0KLXVuc2lnbmVkIG1pbmltdW1PcHRpbWl6YXRpb25EZWxheTsKLXVuc2lnbmVk
IG1heGltdW1PcHRpbWl6YXRpb25EZWxheTsKLWRvdWJsZSBkZXNpcmVkUHJvZmlsZUxpdmVuZXNz
UmF0ZTsKLWRvdWJsZSBkZXNpcmVkUHJvZmlsZUZ1bGxuZXNzUmF0ZTsKLQotZG91YmxlIGRvdWJs
ZVZvdGVSYXRpb0ZvckRvdWJsZUZvcm1hdDsKLQotdW5zaWduZWQgbWluaW11bU51bWJlck9mU2Nh
bnNCZXR3ZWVuUmViYWxhbmNlOwotdW5zaWduZWQgZ2NNYXJrU3RhY2tTZWdtZW50U2l6ZTsKLXVu
c2lnbmVkIG1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVwOwotdW5zaWduZWQgbWF4aW11bU51bWJl
ck9mU2hhcmVkU2VnbWVudHM7Ci11bnNpZ25lZCBzaGFyZWRTdGFja1dha2V1cFRocmVzaG9sZDsK
LXVuc2lnbmVkIG51bWJlck9mR0NNYXJrZXJzOwotdW5zaWduZWQgb3BhcXVlUm9vdE1lcmdlVGhy
ZXNob2xkOwotCi0jaWYgRU5BQkxFKFJVTl9USU1FX0hFVVJJU1RJQ1MpCi1zdGF0aWMgYm9vbCBw
YXJzZShjb25zdCBjaGFyKiBzdHJpbmcsIGludDMyX3QmIHZhbHVlKQotewotICAgIHJldHVybiBz
c2NhbmYoc3RyaW5nLCAiJWQiLCAmdmFsdWUpID09IDE7Ci19Ci0KLXN0YXRpYyBib29sIHBhcnNl
KGNvbnN0IGNoYXIqIHN0cmluZywgdW5zaWduZWQmIHZhbHVlKQotewotICAgIHJldHVybiBzc2Nh
bmYoc3RyaW5nLCAiJXUiLCAmdmFsdWUpID09IDE7Ci19Ci0KLXN0YXRpYyBib29sIHBhcnNlKGNv
bnN0IGNoYXIqIHN0cmluZywgZG91YmxlJiB2YWx1ZSkKLXsKLSAgICByZXR1cm4gc3NjYW5mKHN0
cmluZywgIiVsZiIsICZ2YWx1ZSkgPT0gMTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KLXZvaWQgc2V0SGV1cmlzdGljKFQmIHZhcmlhYmxlLCBjb25zdCBjaGFyKiBuYW1l
LCBVIHZhbHVlKQotewotICAgIGNvbnN0IGNoYXIqIHN0cmluZ1ZhbHVlID0gZ2V0ZW52KG5hbWUp
OwotICAgIGlmICghc3RyaW5nVmFsdWUpIHsKLSAgICAgICAgdmFyaWFibGUgPSBzYWZlQ2FzdDxU
Pih2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKHBhcnNlKHN0
cmluZ1ZhbHVlLCB2YXJpYWJsZSkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBmcHJpbnRm
KHN0ZGVyciwgIldBUk5JTkc6IGZhaWxlZCB0byBwYXJzZSAlcz0lc1xuIiwgbmFtZSwgc3RyaW5n
VmFsdWUpOwotICAgIHZhcmlhYmxlID0gc2FmZUNhc3Q8VD4odmFsdWUpOwotfQotCi0jZGVmaW5l
IFNFVCh2YXJpYWJsZSwgdmFsdWUpIHNldEhldXJpc3RpYyh2YXJpYWJsZSwgIkpTQ18iICN2YXJp
YWJsZSwgdmFsdWUpCi0jZWxzZQotI2RlZmluZSBTRVQodmFyaWFibGUsIHZhbHVlKSB2YXJpYWJs
ZSA9IHZhbHVlCi0jZW5kaWYKLQotdm9pZCBpbml0aWFsaXplSGV1cmlzdGljcygpCi17Ci0gICAg
U0VUKG1heGltdW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50LCAxMDAwKTsK
LSAgICAKLSAgICBTRVQobWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3Ry
dWN0aW9uQ291bnQsIDE1MCk7Ci0gICAgU0VUKG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElu
bGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQsIDgwKTsKLSAgICAKLSAgICBTRVQobWF4aW11
bUlubGluaW5nRGVwdGgsIDUpOwotCi0gICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9w
dGltaXplQWZ0ZXJXYXJtVXAsICAgICAtMTAwMCk7Ci0gICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwLCAtNTAwMCk7Ci0gICAgU0VUKGV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uLCBzdGQ6Om51bWVyaWNfbGlt
aXRzPGludDMyX3Q+OjptaW4oKSk7Ci0gICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9w
dGltaXplU29vbiwgICAgICAgICAgICAtMTAwMCk7Ci0gICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvck9wdGltaXplTmV4dEludm9jYXRpb24sICAwKTsKLQotICAgIFNFVChleGVjdXRpb25D
b3VudGVySW5jcmVtZW50Rm9yTG9vcCwgICAxKTsKLSAgICBTRVQoZXhlY3V0aW9uQ291bnRlcklu
Y3JlbWVudEZvclJldHVybiwgMTUpOwotCi0gICAgU0VUKGRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nl
c3NGYWlsUmF0aW8sIDYpOwotICAgIAotICAgIFNFVChsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVz
aG9sZCwgICAgMC4xNSk7Ci0gICAgU0VUKGNvdWxkVGFrZVNsb3dDYXNlVGhyZXNob2xkLCAgICAg
ICAwLjA1KTsgLy8gU2hvdWxkbid0IGJlIHplcm8gYmVjYXVzZSBzb21lIG9wcyB3aWxsIHNwdXJp
b3VzbHkgdGFrZSBzbG93IGNhc2UsIGZvciBleGFtcGxlIGZvciBsaW5raW5nIG9yIGNhY2hpbmcu
Ci0gICAgU0VUKGxpa2VseVRvVGFrZVNsb3dDYXNlTWluaW11bUNvdW50LCAxMDApOwotICAgIFNF
VChjb3VsZFRha2VTbG93Q2FzZU1pbmltdW1Db3VudCwgICAgMTApOwotICAgIAotICAgIFNFVChv
c3JFeGl0UHJvbWluZW5jZUZvckZyZXF1ZW50RXhpdFNpdGUsIDAuMyk7Ci0KLSAgICBTRVQobGFy
Z2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlLCAgICAgICAgMjApOwotICAgIFNFVChsYXJnZUZhaWxD
b3VudFRocmVzaG9sZEJhc2VGb3JMb29wLCAxKTsKLQotICAgIFNFVChyZW9wdGltaXphdGlvblJl
dHJ5Q291bnRlclN0ZXAsIDEpOwotCi0gICAgU0VUKG1pbmltdW1PcHRpbWl6YXRpb25EZWxheSwg
ICAxKTsKLSAgICBTRVQobWF4aW11bU9wdGltaXphdGlvbkRlbGF5LCAgIDUpOwotICAgIFNFVChk
ZXNpcmVkUHJvZmlsZUxpdmVuZXNzUmF0ZSwgMC43NSk7Ci0gICAgU0VUKGRlc2lyZWRQcm9maWxl
RnVsbG5lc3NSYXRlLCAwLjM1KTsKLSAgICAKLSAgICBTRVQoZG91YmxlVm90ZVJhdGlvRm9yRG91
YmxlRm9ybWF0LCAyKTsKLSAgICAKLSAgICBTRVQobWluaW11bU51bWJlck9mU2NhbnNCZXR3ZWVu
UmViYWxhbmNlLCAxMDAwMCk7Ci0gICAgU0VUKGdjTWFya1N0YWNrU2VnbWVudFNpemUsICAgICAg
ICAgICAgICAgcGFnZVNpemUoKSk7Ci0gICAgU0VUKG1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVw
LCAgICAgICAgICAgMTApOwotICAgIFNFVChtYXhpbXVtTnVtYmVyT2ZTaGFyZWRTZWdtZW50cywg
ICAgICAgIDMpOwotICAgIFNFVChzaGFyZWRTdGFja1dha2V1cFRocmVzaG9sZCwgICAgICAgICAg
IDEpOwotICAgIFNFVChvcGFxdWVSb290TWVyZ2VUaHJlc2hvbGQsICAgICAgICAgICAgIDEwMDAp
OwotCi0gICAgaW50IGNwdXNUb1VzZSA9IDE7Ci0jaWYgT1MoREFSV0lOKSAmJiBFTkFCTEUoUEFS
QUxMRUxfR0MpCi0gICAgaW50IG5hbWVbMl07Ci0gICAgc2l6ZV90IHZhbHVlU2l6ZSA9IHNpemVv
ZihjcHVzVG9Vc2UpOwotICAgIG5hbWVbMF0gPSBDVExfSFc7Ci0gICAgbmFtZVsxXSA9IEhXX0FW
QUlMQ1BVOwotICAgIHN5c2N0bChuYW1lLCAyLCAmY3B1c1RvVXNlLCAmdmFsdWVTaXplLCAwLCAw
KTsKLSNlbmRpZgotICAgIC8vIFdlIGRvbid0IHNjYWxlIHNvIHdlbGwgYmV5b25kIDQuCi0gICAg
aWYgKGNwdXNUb1VzZSA+IDQpCi0gICAgICAgIGNwdXNUb1VzZSA9IDQ7Ci0gICAgLy8gQmUgcGFy
YW5vaWQsIGl0IGlzIHRoZSBPUyB3ZSdyZSBkZWFsaW5nIHdpdGgsIGFmdGVyIGFsbC4KLSAgICBp
ZiAoY3B1c1RvVXNlIDwgMSkKLSAgICAgICAgY3B1c1RvVXNlID0gMTsKLSAgICAKLSAgICBTRVQo
bnVtYmVyT2ZHQ01hcmtlcnMsIGNwdXNUb1VzZSk7Ci0KLSAgICBBU1NFUlQoZXhlY3V0aW9uQ291
bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb24gPD0gZXhlY3V0aW9uQ291bnRlclZh
bHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApOwotICAgIEFTU0VSVChleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCA8PSBleGVjdXRpb25Db3VudGVyVmFs
dWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwKTsKLSAgICBBU1NFUlQoZXhlY3V0aW9uQ291bnRlclZh
bHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCA8PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRp
bWl6ZVNvb24pOwotICAgIEFTU0VSVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFm
dGVyV2FybVVwIDwgMCk7Ci0gICAgQVNTRVJUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGlt
aXplU29vbiA8PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZU5leHRJbnZvY2F0aW9u
KTsKLSAgICAKLSAgICAvLyBDb21wdXRlIHRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSByZW9wdGlt
aXphdGlvbiByZXRyeSBjb3VudGVyLiBUaGlzIGlzIHNpbXBseQotICAgIC8vIHRoZSBsYXJnZXN0
IHZhbHVlIGF0IHdoaWNoIHdlIGRvbid0IG92ZXJmbG93IHRoZSBleGVjdXRlIGNvdW50ZXIsIHdo
ZW4gdXNpbmcgaXQKLSAgICAvLyB0byBsZWZ0LXNoaWZ0IHRoZSBleGVjdXRpb24gY291bnRlciBi
eSB0aGlzIGFtb3VudC4gQ3VycmVudGx5IHRoZSB2YWx1ZSBlbmRzCi0gICAgLy8gdXAgYmVpbmcg
MTgsIHNvIHRoaXMgbG9vcCBpcyBub3Qgc28gdGVycmlibGU7IGl0IHByb2JhYmx5IHRha2VzIHVw
IH4xMDAgY3ljbGVzCi0gICAgLy8gdG90YWwgb24gYSAzMi1iaXQgcHJvY2Vzc29yLgotICAgIHJl
b3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4ID0gMDsKLSAgICB3aGlsZSAoKHN0YXRpY19jYXN0
PGludDY0X3Q+KGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVw
KSA8PCAocmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXggKyAxKSkgPj0gc3RhdGljX2Nhc3Q8
aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpKQotICAgICAgICBy
ZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1heCsrOwotICAgIAotICAgIEFTU0VSVCgoc3RhdGlj
X2Nhc3Q8aW50NjRfdD4oZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdX
YXJtVXApIDw8IHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4KSA8IDApOwotICAgIEFTU0VS
VCgoc3RhdGljX2Nhc3Q8aW50NjRfdD4oZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVB
ZnRlckxvbmdXYXJtVXApIDw8IHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4KSA+PSBzdGF0
aWNfY2FzdDxpbnQ2NF90PihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSkpOwot
fQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6SGV1cmlzdGljcwotCi0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hldXJpc3RpY3MuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0hldXJpc3RpY3MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggY2EyMThkMC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9I
ZXVyaXN0aWNzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgSGV1cmlzdGljc19oCi0j
ZGVmaW5lIEhldXJpc3RpY3NfaAotCi0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0KLW5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgSGV1cmlzdGljcyB7Ci0KLWV4dGVybiB1bnNpZ25lZCBtYXhpbXVtT3B0
aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKLQotZXh0ZXJuIHVuc2lnbmVkIG1h
eGltdW1GdW5jdGlvbkZvckNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OwotZXh0
ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGluZUNhbmRpZGF0ZUlu
c3RydWN0aW9uQ291bnQ7Ci0KLWV4dGVybiB1bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsg
Ly8gRGVwdGggb2YgaW5saW5lIHN0YWNrLCBzbyAxID0gbm8gaW5saW5pbmcsIDIgPSBvbmUgbGV2
ZWwsIGV0Yy4KLQotZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1p
emVBZnRlcldhcm1VcDsKLWV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9w
dGltaXplQWZ0ZXJMb25nV2FybVVwOwotZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZh
bHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247Ci1leHRlcm4gaW50MzJfdCBleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JPcHRpbWl6ZVNvb247Ci1leHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JPcHRpbWl6ZU5leHRJbnZvY2F0aW9uOwotCi1leHRlcm4gaW50MzJfdCBleGVj
dXRpb25Db3VudGVySW5jcmVtZW50Rm9yTG9vcDsKLWV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNv
dW50ZXJJbmNyZW1lbnRGb3JSZXR1cm47Ci0KLWV4dGVybiB1bnNpZ25lZCBkZXNpcmVkU3BlY3Vs
YXRpdmVTdWNjZXNzRmFpbFJhdGlvOwotCi1leHRlcm4gZG91YmxlIGxpa2VseVRvVGFrZVNsb3dD
YXNlVGhyZXNob2xkOwotZXh0ZXJuIGRvdWJsZSBjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZDsK
LWV4dGVybiB1bnNpZ25lZCBsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudDsKLWV4dGVy
biB1bnNpZ25lZCBjb3VsZFRha2VTbG93Q2FzZU1pbmltdW1Db3VudDsKLQotZXh0ZXJuIGRvdWJs
ZSBvc3JFeGl0UHJvbWluZW5jZUZvckZyZXF1ZW50RXhpdFNpdGU7Ci0KLWV4dGVybiB1bnNpZ25l
ZCBsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2U7Ci1leHRlcm4gdW5zaWduZWQgbGFyZ2VGYWls
Q291bnRUaHJlc2hvbGRCYXNlRm9yTG9vcDsKLQotZXh0ZXJuIHVuc2lnbmVkIHJlb3B0aW1pemF0
aW9uUmV0cnlDb3VudGVyTWF4OwotZXh0ZXJuIHVuc2lnbmVkIHJlb3B0aW1pemF0aW9uUmV0cnlD
b3VudGVyU3RlcDsKLQotZXh0ZXJuIHVuc2lnbmVkIG1pbmltdW1PcHRpbWl6YXRpb25EZWxheTsK
LWV4dGVybiB1bnNpZ25lZCBtYXhpbXVtT3B0aW1pemF0aW9uRGVsYXk7Ci1leHRlcm4gZG91Ymxl
IGRlc2lyZWRQcm9maWxlTGl2ZW5lc3NSYXRlOwotZXh0ZXJuIGRvdWJsZSBkZXNpcmVkUHJvZmls
ZUZ1bGxuZXNzUmF0ZTsKLQotZXh0ZXJuIGRvdWJsZSBkb3VibGVWb3RlUmF0aW9Gb3JEb3VibGVG
b3JtYXQ7Ci0KLWV4dGVybiB1bnNpZ25lZCBtaW5pbXVtTnVtYmVyT2ZTY2Fuc0JldHdlZW5SZWJh
bGFuY2U7Ci1leHRlcm4gdW5zaWduZWQgZ2NNYXJrU3RhY2tTZWdtZW50U2l6ZTsKLWV4dGVybiB1
bnNpZ25lZCBtaW5pbXVtTnVtYmVyT2ZDZWxsc1RvS2VlcDsKLWV4dGVybiB1bnNpZ25lZCBtYXhp
bXVtTnVtYmVyT2ZTaGFyZWRTZWdtZW50czsKLWV4dGVybiB1bnNpZ25lZCBzaGFyZWRTdGFja1dh
a2V1cFRocmVzaG9sZDsKLWV4dGVybiB1bnNpZ25lZCBudW1iZXJPZkdDTWFya2VyczsKLWV4dGVy
biB1bnNpZ25lZCBvcGFxdWVSb290TWVyZ2VUaHJlc2hvbGQ7Ci0KLXZvaWQgaW5pdGlhbGl6ZUhl
dXJpc3RpY3MoKTsKLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkhldXJpc3RpY3MKLQotI2VuZGlm
IC8vIEhldXJpc3RpY3NfaAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCmluZGV4IDNhMzcxZjkuLjY5ODk1NzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRp
bmcuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9y
LmgiCiAjaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1ZGUgIkhldXJpc3RpY3MuaCIKKyNpbmNsdWRl
ICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTRGF0ZU1h
dGguaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgpAQCAtNTMsNyArNTMsNyBAQCBzdGF0
aWMgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nT25jZSgpCiB7CiAgICAgV1RGOjpkb3VibGVfY29u
dmVyc2lvbjo6aW5pdGlhbGl6ZSgpOwogICAgIFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwot
ICAgIEhldXJpc3RpY3M6OmluaXRpYWxpemVIZXVyaXN0aWNzKCk7CisgICAgT3B0aW9uczo6aW5p
dGlhbGl6ZU9wdGlvbnMoKTsKICNpZiBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCiAg
ICAgV3JpdGVCYXJyaWVyQ291bnRlcnM6OmluaXRpYWxpemUoKTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi42OGQxMGI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKQEAgLTAsMCArMSwyMTQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIk9wdGlvbnMuaCIKKworI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx3dGYvUGFn
ZUJsb2NrLmg+CisKKyNpZiBPUyhEQVJXSU4pICYmIEVOQUJMRShQQVJBTExFTF9HQykKKyNpbmNs
dWRlIDxzeXMvc3lzY3RsLmg+CisjZW5kaWYKKworLy8gU2V0IHRvIDEgdG8gY29udHJvbCB0aGUg
aGV1cmlzdGljcyB1c2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCisjZGVmaW5lIEVOQUJMRV9S
VU5fVElNRV9IRVVSSVNUSUNTIDAKKworI2lmIEVOQUJMRShSVU5fVElNRV9IRVVSSVNUSUNTKQor
I2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgT3B0aW9u
cyB7CisKK3Vuc2lnbmVkIG1heGltdW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNv
dW50OworCit1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5z
dHJ1Y3Rpb25Db3VudDsKK3Vuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGlu
ZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CisKK3Vuc2lnbmVkIG1heGltdW1JbmxpbmluZ0Rl
cHRoOworCitpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJt
VXA7CitpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2Fy
bVVwOworaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1l
U29vbjsKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVTb29uOworaW50
MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZU5leHRJbnZvY2F0aW9uOworCitp
bnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JMb29wOworaW50MzJfdCBleGVjdXRp
b25Db3VudGVySW5jcmVtZW50Rm9yUmV0dXJuOworCit1bnNpZ25lZCBkZXNpcmVkU3BlY3VsYXRp
dmVTdWNjZXNzRmFpbFJhdGlvOworCitkb3VibGUgbGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hv
bGQ7Citkb3VibGUgY291bGRUYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7Cit1bnNpZ25lZCBsaWtlbHlU
b1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudDsKK3Vuc2lnbmVkIGNvdWxkVGFrZVNsb3dDYXNlTWlu
aW11bUNvdW50OworCitkb3VibGUgb3NyRXhpdFByb21pbmVuY2VGb3JGcmVxdWVudEV4aXRTaXRl
OworCit1bnNpZ25lZCBsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2U7Cit1bnNpZ25lZCBsYXJn
ZUZhaWxDb3VudFRocmVzaG9sZEJhc2VGb3JMb29wOworCit1bnNpZ25lZCByZW9wdGltaXphdGlv
blJldHJ5Q291bnRlck1heDsKK3Vuc2lnbmVkIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyU3Rl
cDsKKwordW5zaWduZWQgbWluaW11bU9wdGltaXphdGlvbkRlbGF5OwordW5zaWduZWQgbWF4aW11
bU9wdGltaXphdGlvbkRlbGF5OworZG91YmxlIGRlc2lyZWRQcm9maWxlTGl2ZW5lc3NSYXRlOwor
ZG91YmxlIGRlc2lyZWRQcm9maWxlRnVsbG5lc3NSYXRlOworCitkb3VibGUgZG91YmxlVm90ZVJh
dGlvRm9yRG91YmxlRm9ybWF0OworCit1bnNpZ25lZCBtaW5pbXVtTnVtYmVyT2ZTY2Fuc0JldHdl
ZW5SZWJhbGFuY2U7Cit1bnNpZ25lZCBnY01hcmtTdGFja1NlZ21lbnRTaXplOwordW5zaWduZWQg
bWluaW11bU51bWJlck9mQ2VsbHNUb0tlZXA7Cit1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZTaGFy
ZWRTZWdtZW50czsKK3Vuc2lnbmVkIHNoYXJlZFN0YWNrV2FrZXVwVGhyZXNob2xkOwordW5zaWdu
ZWQgbnVtYmVyT2ZHQ01hcmtlcnM7Cit1bnNpZ25lZCBvcGFxdWVSb290TWVyZ2VUaHJlc2hvbGQ7
CisKKyNpZiBFTkFCTEUoUlVOX1RJTUVfSEVVUklTVElDUykKK3N0YXRpYyBib29sIHBhcnNlKGNv
bnN0IGNoYXIqIHN0cmluZywgaW50MzJfdCYgdmFsdWUpCit7CisgICAgcmV0dXJuIHNzY2FuZihz
dHJpbmcsICIlZCIsICZ2YWx1ZSkgPT0gMTsKK30KKworc3RhdGljIGJvb2wgcGFyc2UoY29uc3Qg
Y2hhciogc3RyaW5nLCB1bnNpZ25lZCYgdmFsdWUpCit7CisgICAgcmV0dXJuIHNzY2FuZihzdHJp
bmcsICIldSIsICZ2YWx1ZSkgPT0gMTsKK30KKworc3RhdGljIGJvb2wgcGFyc2UoY29uc3QgY2hh
ciogc3RyaW5nLCBkb3VibGUmIHZhbHVlKQoreworICAgIHJldHVybiBzc2NhbmYoc3RyaW5nLCAi
JWxmIiwgJnZhbHVlKSA9PSAxOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
Pgordm9pZCBzZXRIZXVyaXN0aWMoVCYgdmFyaWFibGUsIGNvbnN0IGNoYXIqIG5hbWUsIFUgdmFs
dWUpCit7CisgICAgY29uc3QgY2hhciogc3RyaW5nVmFsdWUgPSBnZXRlbnYobmFtZSk7CisgICAg
aWYgKCFzdHJpbmdWYWx1ZSkgeworICAgICAgICB2YXJpYWJsZSA9IHNhZmVDYXN0PFQ+KHZhbHVl
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAocGFyc2Uoc3RyaW5nVmFs
dWUsIHZhcmlhYmxlKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGZwcmludGYoc3RkZXJy
LCAiV0FSTklORzogZmFpbGVkIHRvIHBhcnNlICVzPSVzXG4iLCBuYW1lLCBzdHJpbmdWYWx1ZSk7
CisgICAgdmFyaWFibGUgPSBzYWZlQ2FzdDxUPih2YWx1ZSk7Cit9CisKKyNkZWZpbmUgU0VUKHZh
cmlhYmxlLCB2YWx1ZSkgc2V0SGV1cmlzdGljKHZhcmlhYmxlLCAiSlNDXyIgI3ZhcmlhYmxlLCB2
YWx1ZSkKKyNlbHNlCisjZGVmaW5lIFNFVCh2YXJpYWJsZSwgdmFsdWUpIHZhcmlhYmxlID0gdmFs
dWUKKyNlbmRpZgorCit2b2lkIGluaXRpYWxpemVPcHRpb25zKCkKK3sKKyAgICBTRVQobWF4aW11
bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQsIDEwMDApOworICAgIAorICAg
IFNFVChtYXhpbXVtRnVuY3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3Vu
dCwgMTUwKTsKKyAgICBTRVQobWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saW5lQ2FuZGlk
YXRlSW5zdHJ1Y3Rpb25Db3VudCwgODApOworICAgIAorICAgIFNFVChtYXhpbXVtSW5saW5pbmdE
ZXB0aCwgNSk7CisKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRl
cldhcm1VcCwgICAgIC0xMDAwKTsKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0
aW1pemVBZnRlckxvbmdXYXJtVXAsIC01MDAwKTsKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZh
bHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb24sIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJf
dD46Om1pbigpKTsKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVTb29u
LCAgICAgICAgICAgIC0xMDAwKTsKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0
aW1pemVOZXh0SW52b2NhdGlvbiwgIDApOworCisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJJbmNy
ZW1lbnRGb3JMb29wLCAgIDEpOworICAgIFNFVChleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9y
UmV0dXJuLCAxNSk7CisKKyAgICBTRVQoZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRp
bywgNik7CisgICAgCisgICAgU0VUKGxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkLCAgICAw
LjE1KTsKKyAgICBTRVQoY291bGRUYWtlU2xvd0Nhc2VUaHJlc2hvbGQsICAgICAgIDAuMDUpOyAv
LyBTaG91bGRuJ3QgYmUgemVybyBiZWNhdXNlIHNvbWUgb3BzIHdpbGwgc3B1cmlvdXNseSB0YWtl
IHNsb3cgY2FzZSwgZm9yIGV4YW1wbGUgZm9yIGxpbmtpbmcgb3IgY2FjaGluZy4KKyAgICBTRVQo
bGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQsIDEwMCk7CisgICAgU0VUKGNvdWxkVGFr
ZVNsb3dDYXNlTWluaW11bUNvdW50LCAgICAxMCk7CisgICAgCisgICAgU0VUKG9zckV4aXRQcm9t
aW5lbmNlRm9yRnJlcXVlbnRFeGl0U2l0ZSwgMC4zKTsKKworICAgIFNFVChsYXJnZUZhaWxDb3Vu
dFRocmVzaG9sZEJhc2UsICAgICAgICAyMCk7CisgICAgU0VUKGxhcmdlRmFpbENvdW50VGhyZXNo
b2xkQmFzZUZvckxvb3AsIDEpOworCisgICAgU0VUKHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVy
U3RlcCwgMSk7CisKKyAgICBTRVQobWluaW11bU9wdGltaXphdGlvbkRlbGF5LCAgIDEpOworICAg
IFNFVChtYXhpbXVtT3B0aW1pemF0aW9uRGVsYXksICAgNSk7CisgICAgU0VUKGRlc2lyZWRQcm9m
aWxlTGl2ZW5lc3NSYXRlLCAwLjc1KTsKKyAgICBTRVQoZGVzaXJlZFByb2ZpbGVGdWxsbmVzc1Jh
dGUsIDAuMzUpOworICAgIAorICAgIFNFVChkb3VibGVWb3RlUmF0aW9Gb3JEb3VibGVGb3JtYXQs
IDIpOworICAgIAorICAgIFNFVChtaW5pbXVtTnVtYmVyT2ZTY2Fuc0JldHdlZW5SZWJhbGFuY2Us
IDEwMDAwKTsKKyAgICBTRVQoZ2NNYXJrU3RhY2tTZWdtZW50U2l6ZSwgICAgICAgICAgICAgICBw
YWdlU2l6ZSgpKTsKKyAgICBTRVQobWluaW11bU51bWJlck9mQ2VsbHNUb0tlZXAsICAgICAgICAg
ICAxMCk7CisgICAgU0VUKG1heGltdW1OdW1iZXJPZlNoYXJlZFNlZ21lbnRzLCAgICAgICAgMyk7
CisgICAgU0VUKHNoYXJlZFN0YWNrV2FrZXVwVGhyZXNob2xkLCAgICAgICAgICAgMSk7CisgICAg
U0VUKG9wYXF1ZVJvb3RNZXJnZVRocmVzaG9sZCwgICAgICAgICAgICAgMTAwMCk7CisKKyAgICBp
bnQgY3B1c1RvVXNlID0gMTsKKyNpZiBPUyhEQVJXSU4pICYmIEVOQUJMRShQQVJBTExFTF9HQykK
KyAgICBpbnQgbmFtZVsyXTsKKyAgICBzaXplX3QgdmFsdWVTaXplID0gc2l6ZW9mKGNwdXNUb1Vz
ZSk7CisgICAgbmFtZVswXSA9IENUTF9IVzsKKyAgICBuYW1lWzFdID0gSFdfQVZBSUxDUFU7Cisg
ICAgc3lzY3RsKG5hbWUsIDIsICZjcHVzVG9Vc2UsICZ2YWx1ZVNpemUsIDAsIDApOworI2VuZGlm
CisgICAgLy8gV2UgZG9uJ3Qgc2NhbGUgc28gd2VsbCBiZXlvbmQgNC4KKyAgICBpZiAoY3B1c1Rv
VXNlID4gNCkKKyAgICAgICAgY3B1c1RvVXNlID0gNDsKKyAgICAvLyBCZSBwYXJhbm9pZCwgaXQg
aXMgdGhlIE9TIHdlJ3JlIGRlYWxpbmcgd2l0aCwgYWZ0ZXIgYWxsLgorICAgIGlmIChjcHVzVG9V
c2UgPCAxKQorICAgICAgICBjcHVzVG9Vc2UgPSAxOworICAgIAorICAgIFNFVChudW1iZXJPZkdD
TWFya2VycywgY3B1c1RvVXNlKTsKKworICAgIEFTU0VSVChleGVjdXRpb25Db3VudGVyVmFsdWVG
b3JEb250T3B0aW1pemVBbnl0aW1lU29vbiA8PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRp
bWl6ZUFmdGVyTG9uZ1dhcm1VcCk7CisgICAgQVNTRVJUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ck9wdGltaXplQWZ0ZXJMb25nV2FybVVwIDw9IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGlt
aXplQWZ0ZXJXYXJtVXApOworICAgIEFTU0VSVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRp
bWl6ZUFmdGVyV2FybVVwIDw9IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbik7
CisgICAgQVNTRVJUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAg
PCAwKTsKKyAgICBBU1NFUlQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVTb29uIDw9
IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplTmV4dEludm9jYXRpb24pOworICAgIAor
ICAgIC8vIENvbXB1dGUgdGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIHJlb3B0aW1pemF0aW9uIHJl
dHJ5IGNvdW50ZXIuIFRoaXMgaXMgc2ltcGx5CisgICAgLy8gdGhlIGxhcmdlc3QgdmFsdWUgYXQg
d2hpY2ggd2UgZG9uJ3Qgb3ZlcmZsb3cgdGhlIGV4ZWN1dGUgY291bnRlciwgd2hlbiB1c2luZyBp
dAorICAgIC8vIHRvIGxlZnQtc2hpZnQgdGhlIGV4ZWN1dGlvbiBjb3VudGVyIGJ5IHRoaXMgYW1v
dW50LiBDdXJyZW50bHkgdGhlIHZhbHVlIGVuZHMKKyAgICAvLyB1cCBiZWluZyAxOCwgc28gdGhp
cyBsb29wIGlzIG5vdCBzbyB0ZXJyaWJsZTsgaXQgcHJvYmFibHkgdGFrZXMgdXAgfjEwMCBjeWNs
ZXMKKyAgICAvLyB0b3RhbCBvbiBhIDMyLWJpdCBwcm9jZXNzb3IuCisgICAgcmVvcHRpbWl6YXRp
b25SZXRyeUNvdW50ZXJNYXggPSAwOworICAgIHdoaWxlICgoc3RhdGljX2Nhc3Q8aW50NjRfdD4o
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApIDw8IChyZW9w
dGltaXphdGlvblJldHJ5Q291bnRlck1heCArIDEpKSA+PSBzdGF0aWNfY2FzdDxpbnQ2NF90Pihz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSkpCisgICAgICAgIHJlb3B0aW1pemF0
aW9uUmV0cnlDb3VudGVyTWF4Kys7CisgICAgCisgICAgQVNTRVJUKChzdGF0aWNfY2FzdDxpbnQ2
NF90PihleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCkgPDwg
cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXgpIDwgMCk7CisgICAgQVNTRVJUKChzdGF0aWNf
Y2FzdDxpbnQ2NF90PihleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dh
cm1VcCkgPDwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXgpID49IHN0YXRpY19jYXN0PGlu
dDY0X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKSk7Cit9CisKK30gfSAv
LyBuYW1lc3BhY2UgSlNDOjpPcHRpb25zCisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3Y2M1ZjQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgK
QEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIE9wdGlvbnNfaAorI2RlZmluZSBPcHRpb25zX2gKKworI2luY2x1ZGUg
PHN0ZGludC5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIE9wdGlvbnMgeworCitleHRl
cm4gdW5zaWduZWQgbWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7
CisKK2V4dGVybiB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRl
SW5zdHJ1Y3Rpb25Db3VudDsKK2V4dGVybiB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25z
dHJ1Y3RJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OworCitleHRlcm4gdW5zaWduZWQg
bWF4aW11bUlubGluaW5nRGVwdGg7IC8vIERlcHRoIG9mIGlubGluZSBzdGFjaywgc28gMSA9IG5v
IGlubGluaW5nLCAyID0gb25lIGxldmVsLCBldGMuCisKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXA7CitleHRlcm4gaW50MzJfdCBleGVj
dXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKK2V4dGVybiBpbnQz
Ml90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uOworZXh0
ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVTb29uOworZXh0ZXJu
IGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVOZXh0SW52b2NhdGlvbjsK
KworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvckxvb3A7CitleHRl
cm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yUmV0dXJuOworCitleHRlcm4g
dW5zaWduZWQgZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbzsKKworZXh0ZXJuIGRv
dWJsZSBsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKK2V4dGVybiBkb3VibGUgY291bGRU
YWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CitleHRlcm4gdW5zaWduZWQgbGlrZWx5VG9UYWtlU2xvd0Nh
c2VNaW5pbXVtQ291bnQ7CitleHRlcm4gdW5zaWduZWQgY291bGRUYWtlU2xvd0Nhc2VNaW5pbXVt
Q291bnQ7CisKK2V4dGVybiBkb3VibGUgb3NyRXhpdFByb21pbmVuY2VGb3JGcmVxdWVudEV4aXRT
aXRlOworCitleHRlcm4gdW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlOworZXh0
ZXJuIHVuc2lnbmVkIGxhcmdlRmFpbENvdW50VGhyZXNob2xkQmFzZUZvckxvb3A7CisKK2V4dGVy
biB1bnNpZ25lZCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1heDsKK2V4dGVybiB1bnNpZ25l
ZCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlclN0ZXA7CisKK2V4dGVybiB1bnNpZ25lZCBtaW5p
bXVtT3B0aW1pemF0aW9uRGVsYXk7CitleHRlcm4gdW5zaWduZWQgbWF4aW11bU9wdGltaXphdGlv
bkRlbGF5OworZXh0ZXJuIGRvdWJsZSBkZXNpcmVkUHJvZmlsZUxpdmVuZXNzUmF0ZTsKK2V4dGVy
biBkb3VibGUgZGVzaXJlZFByb2ZpbGVGdWxsbmVzc1JhdGU7CisKK2V4dGVybiBkb3VibGUgZG91
YmxlVm90ZVJhdGlvRm9yRG91YmxlRm9ybWF0OworCitleHRlcm4gdW5zaWduZWQgbWluaW11bU51
bWJlck9mU2NhbnNCZXR3ZWVuUmViYWxhbmNlOworZXh0ZXJuIHVuc2lnbmVkIGdjTWFya1N0YWNr
U2VnbWVudFNpemU7CitleHRlcm4gdW5zaWduZWQgbWluaW11bU51bWJlck9mQ2VsbHNUb0tlZXA7
CitleHRlcm4gdW5zaWduZWQgbWF4aW11bU51bWJlck9mU2hhcmVkU2VnbWVudHM7CitleHRlcm4g
dW5zaWduZWQgc2hhcmVkU3RhY2tXYWtldXBUaHJlc2hvbGQ7CitleHRlcm4gdW5zaWduZWQgbnVt
YmVyT2ZHQ01hcmtlcnM7CitleHRlcm4gdW5zaWduZWQgb3BhcXVlUm9vdE1lcmdlVGhyZXNob2xk
OworCit2b2lkIGluaXRpYWxpemVPcHRpb25zKCk7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpP
cHRpb25zCisKKyNlbmRpZiAvLyBPcHRpb25zX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdF
eHAuY3BwCmluZGV4IDdmOWZhN2EuLmNmZGQ5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0UmVnRXhwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJl
Z0V4cC5jcHAKQEAgLTU2LDggKzU2LDggQEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKIAogc3RhdGlj
IHZvaWQgY2xlYW51cEdsb2JhbERhdGEoSlNHbG9iYWxEYXRhKik7CiAKLXN0cnVjdCBPcHRpb25z
IHsKLSAgICBPcHRpb25zKCkKK3N0cnVjdCBDb21tYW5kTGluZSB7CisgICAgQ29tbWFuZExpbmUo
KQogICAgICAgICA6IGludGVyYWN0aXZlKGZhbHNlKQogICAgICAgICAsIHZlcmJvc2UoZmFsc2Up
CiAgICAgewpAQCAtNDkwLDcgKzQ5MCw3IEBAIHN0YXRpYyBOT19SRVRVUk4gdm9pZCBwcmludFVz
YWdlU3RhdGVtZW50KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgYm9vbCBoZWxwID0KICAgICBl
eGl0KGhlbHAgPyBFWElUX1NVQ0NFU1MgOiBFWElUX0ZBSUxVUkUpOwogfQogCi1zdGF0aWMgdm9p
ZCBwYXJzZUFyZ3VtZW50cyhpbnQgYXJnYywgY2hhcioqIGFyZ3YsIE9wdGlvbnMmIG9wdGlvbnMs
IEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3N0YXRpYyB2b2lkIHBhcnNlQXJndW1lbnRzKGlu
dCBhcmdjLCBjaGFyKiogYXJndiwgQ29tbWFuZExpbmUmIG9wdGlvbnMsIEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSkKIHsKICAgICBpbnQgaSA9IDE7CiAgICAgZm9yICg7IGkgPCBhcmdjOyArK2kp
IHsKQEAgLTUxMSw3ICs1MTEsNyBAQCBpbnQgcmVhbE1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2
LCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiB7CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFz
c2VydGlvbnNPbmx5KTsKIAotICAgIE9wdGlvbnMgb3B0aW9uczsKKyAgICBDb21tYW5kTGluZSBv
cHRpb25zOwogICAgIHBhcnNlQXJndW1lbnRzKGFyZ2MsIGFyZ3YsIG9wdGlvbnMsIGdsb2JhbERh
dGEpOwogCiAgICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNy
ZWF0ZSgqZ2xvYmFsRGF0YSwgR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKmdsb2JhbERh
dGEsIGpzTnVsbCgpKSwgb3B0aW9ucy5hcmd1bWVudHMpOwotLSAKMS43LjcuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119205</attachid>
            <date>2011-12-14 05:09:50 -0800</date>
            <delta_ts>2011-12-14 05:54:20 -0800</delta_ts>
            <desc>Andy&apos;s updated patch</desc>
            <filename>0001-foo.patch</filename>
            <type>text/plain</type>
            <size>68722</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA5MGU2OGQ2MWZlOTMwNTM5MzVmMTI2YjVhY2VjYjljYjJjNzg0ODAzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmR5IFdpbmdvIDx3aW5nb0BpZ2FsaWEuY29tPgpEYXRlOiBU
dWUsIDIyIE5vdiAyMDExIDEyOjU3OjE2ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gZm9vCgotLS0K
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgIHwgICAg
MiArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
fCAgIDc4ICsrKysrKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
ICAgICAgICAgIHwgICAgNCArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LmV4cCAgICAgICAgICAgfCAgICA0ICstCiAuLi4vSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qICAgICAgICAgICB8ICAgMTYgKy0KIC4uLi9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qICAgICAgIHwgICAxOCArLQogU291cmNlL0phdmFTY3JpcHRDb3Jl
L1RhcmdldC5wcmkgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCAgICAgICB8ICAgIDggKy0KIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCAgICAgICAgIHwgICAzNiArKy0tCiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCAgICB8ICAgIDIgKy0K
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmggICAgICAgIHwgICAx
NCArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCAgICAgICAgICAg
fCAgICAyICstCiAuLi4vSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0
LmNwcCB8ICAgIDQgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBp
bGVyNjQuY3BwIHwgICAgNCArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJs
ZUFjY2Vzc0RhdGEuaCAgfCAgICAyICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
U3RhY2suY3BwICAgICAgICAgICB8ICAgMzAgKystLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya1N0YWNrLmggICAgICAgICAgICAgfCAgICA4ICstCiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9TbG90VmlzaXRvci5oICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcCAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAgICAgICAgICAgICAgICAgICAgICAgfCAgICA4ICstCiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmNwcCAgICAgICB8ICAyMTQgLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hldXJpc3Rp
Y3MuaCAgICAgICAgIHwgICA4NCAtLS0tLS0tLQogLi4uL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgfCAgICA0ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmNwcCAgICAgICAgICB8ICAyMTQgKysrKysrKysrKysrKysrKysrKysK
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaCAgICAgICAgICAgIHwgICA4
NCArKysrKysrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwICAgICAgICAg
ICAgICAgfCAgICA4ICstCiAyNiBmaWxlcyBjaGFuZ2VkLCA0NjcgaW5zZXJ0aW9ucygrKSwgMzg3
IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0hldXJpc3RpY3MuY3BwCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSGV1cmlzdGljcy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggNWEzOTNlYS4uYzI2M2IyOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMTM1LDcgKzEzNSw2IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VS
Q0VTCiAgICAgcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0dDQWN0
aXZpdHlDYWxsYmFjay5jcHAKICAgICBydW50aW1lL0dldHRlclNldHRlci5jcHAKLSAgICBydW50
aW1lL0hldXJpc3RpY3MuY3BwCiAgICAgcnVudGltZS9JZGVudGlmaWVyLmNwcAogICAgIHJ1bnRp
bWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKICAgICBydW50aW1lL0ludGVybmFsRnVuY3Rpb24u
Y3BwCkBAIC0xNzIsNiArMTcxLDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBy
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBl
LmNwcAogICAgIHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHAKKyAgICBydW50aW1lL09wdGlvbnMuY3Bw
CiAgICAgcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuY3BwCiAgICAgcnVudGltZS9Qcm9wZXJ0
eU5hbWVBcnJheS5jcHAKICAgICBydW50aW1lL1Byb3BlcnR5U2xvdC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCmluZGV4IDllOGQxYTQuLjc3NTdmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDgxIEBACisyMDExLTEyLTE0ICBBbmR5IFdpbmdvICA8d2luZ29AaWdhbGlh
LmNvbT4KKworICAgICAgICBSZW5hbWUgSlNDOjpIZXVyaXN0aWNzIHRvIEpTQzo6T3B0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI4ODkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUv
T3B0aW9ucy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9I
ZXVyaXN0aWNzLmNwcC4KKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hldXJpc3RpY3MuaC4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzaG91bGRPcHRpbWl6ZU5vdyk6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5
VG9UYWtlU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmNvdWxkVGFrZVNsb3dD
YXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rha2VTcGVjaWFsRmFzdENh
c2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZURlZXBlc3RTbG93Q2Fz
ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlQW55U2xvd0Nhc2UpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjb3VudFJlb3B0aW1pemF0aW9uKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpjb3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpjb3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1V
cCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6b3B0aW1pemVOZXh0SW52b2NhdGlvbik6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZG9udE9wdGltaXplQW55dGltZVNvb24pOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6Om9wdGltaXplU29vbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6bGFyZ2VGYWlsQ291bnRUaHJlc2hvbGQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxh
cmdlRmFpbENvdW50VGhyZXNob2xkRm9yTG9vcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
c2hvdWxkUmVvcHRpbWl6ZU5vdyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2hvdWxkUmVv
cHRpbWl6ZUZyb21Mb29wTm93KToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6Cisg
ICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5oOgorICAgICAgICAoSlNDOjpERkc6Om1pZ2h0
Q29tcGlsZUV2YWwpOgorICAgICAgICAoSlNDOjpERkc6Om1pZ2h0Q29tcGlsZVByb2dyYW0pOgor
ICAgICAgICAoSlNDOjpERkc6Om1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ2FsbCk6CisgICAgICAg
IChKU0M6OkRGRzo6bWlnaHRDb21waWxlRnVuY3Rpb25Gb3JDb25zdHJ1Y3QpOgorICAgICAgICAo
SlNDOjpERkc6Om1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JDYWxsKToKKyAgICAgICAgKEpTQzo6REZH
OjptaWdodElubGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0KToKKyAgICAgICAgKiBkZmcvREZHT1NS
RXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6Y29uc2lkZXJBZGRpbmdBc0Zy
ZXF1ZW50RXhpdFNpdGVTbG93KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyMzJf
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQp
OgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RGR1Zh
cmlhYmxlQWNjZXNzRGF0YS5oOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlQWNjZXNzRGF0
YTo6c2hvdWxkVXNlRG91YmxlRm9ybWF0QWNjb3JkaW5nVG9Wb3RlKToKKyAgICAgICAgKiBoZWFw
L01hcmtTdGFjay5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtTdGFja1NlZ21lbnRBbGxvY2F0b3I6
OmFsbG9jYXRlKToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrU2VnbWVudEFsbG9jYXRvcjo6c2hy
aW5rUmVzZXJ2ZSk6CisgICAgICAgIChKU0M6Ok1hcmtTdGFja0FycmF5OjpNYXJrU3RhY2tBcnJh
eSk6CisgICAgICAgIChKU0M6Ok1hcmtTdGFja0FycmF5Ojpkb25hdGVTb21lQ2VsbHNUbyk6Cisg
ICAgICAgIChKU0M6Ok1hcmtTdGFja0FycmF5OjpzdGVhbFNvbWVDZWxsc0Zyb20pOgorICAgICAg
ICAoSlNDOjpNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhOjpNYXJrU3RhY2tUaHJlYWRTaGFyZWRE
YXRhKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmRvbmF0ZVNsb3cpOgorICAgICAgICAo
SlNDOjpTbG90VmlzaXRvcjo6ZHJhaW4pOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6ZHJh
aW5Gcm9tU2hhcmVkKToKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5oOgorICAgICAgICAoSlND
OjpNYXJrU3RhY2s6Om1lcmdlT3BhcXVlUm9vdHNJZlByb2ZpdGFibGUpOgorICAgICAgICAoSlND
OjpNYXJrU3RhY2s6OmFkZE9wYXF1ZVJvb3QpOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2tBcnJh
eTo6Y2FuRG9uYXRlU29tZUNlbGxzKToKKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmg6Cisg
ICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjpkb25hdGUpOgorICAgICAgICAqIGppdC9KSVQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRPcHRpbWl6YXRpb25DaGVjayk6CisgICAgICAgICog
cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6
ZVRocmVhZGluZ09uY2UpOiBBZGFwdCBjYWxsZXJzIGFuZCBidWlsZCBzeXN0ZW1zLgorCisgICAg
ICAgICogdGVzdFJlZ0V4cC5jcHA6CisgICAgICAgIChDb21tYW5kTGluZTo6Q29tbWFuZExpbmUp
OgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChDb21tYW5kTGluZTo6Q29tbWFuZExpbmUp
OgorICAgICAgICBSZW5hbWUgZnJvbSBPcHRpb25zLCB0byBhdm9pZCBuYW1lIGNvbmZsaWN0Lgor
CiAyMDExLTEyLTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAg
REZHIHNob3VsZCBpbmZlciB3aGVuIGxvY2FsIHZhcmlhYmxlcyBhcmUgZG91YmxlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAzMTVlM2YzLi5mNWVlMDU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzU4LDgg
KzM1OCw2IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZXR0ZXJTZXR0ZXIuaCBcCi0JU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGV1
cmlzdGljcy5jcHAgXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hldXJpc3RpY3Mu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAgXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgXApAQCAtNDM5LDYgKzQz
Nyw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcGVyYXRpb25zLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3Bl
cmF0aW9ucy5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcCBc
CisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuY3BwIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAppbmRleCBiN2U5MzY0Li4wN2Q2MGYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAgLTEwMiw4ICsxMDIsOCBAQCBf
V1RGUmVwb3J0RmF0YWxFcnJvcgogX19aTjE0T3BhcXVlSlNTdHJpbmc2Y3JlYXRlRVJLTjNKU0M3
VVN0cmluZ0UKIF9fWk4zSlNDMTBIYW5kbGVIZWFwMTJ3cml0ZUJhcnJpZXJFUE5TXzdKU1ZhbHVl
RVJLUzFfCiBfX1pOM0pTQzEwSGFuZGxlSGVhcDRncm93RXYKLV9fWk4zSlNDMTBIZXVyaXN0aWNz
MTdudW1iZXJPZkdDTWFya2Vyc0UKLV9fWk4zSlNDMTBIZXVyaXN0aWNzMjRvcGFxdWVSb290TWVy
Z2VUaHJlc2hvbGRFCitfX1pOM0pTQzEwT3B0aW9uczE3bnVtYmVyT2ZHQ01hcmtlcnNFCitfX1pO
M0pTQzEwT3B0aW9uczI0b3BhcXVlUm9vdE1lcmdlVGhyZXNob2xkRQogX19aTjNKU0MxMElkZW50
aWZpZXIxMWFkZFNsb3dDYXNlRVBOU18xMkpTR2xvYmFsRGF0YUVQTjNXVEYxMFN0cmluZ0ltcGxF
CiBfX1pOM0pTQzEwSWRlbnRpZmllcjExYWRkU2xvd0Nhc2VFUE5TXzlFeGVjU3RhdGVFUE4zV1RG
MTBTdHJpbmdJbXBsRQogX19aTjNKU0MxMElkZW50aWZpZXIyN2NoZWNrQ3VycmVudElkZW50aWZp
ZXJUYWJsZUVQTlNfMTJKU0dsb2JhbERhdGFFCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCmluZGV4IGE3OTNkZDcuLjg4ODI2OTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qCkBAIC03MzQsMTQgKzczNCw2IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZp
bGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcSGV1cmlzdGljcy5jcHAiCi0JCQkJ
PgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVc
SGV1cmlzdGljcy5oIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQ
YXRoPSIuLlwuLlxydW50aW1lXElkZW50aWZpZXIuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAg
LTEwMzgsNiArMTAzMCwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXE9wdGlvbnMuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4K
KwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXE9wdGlvbnMuaCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGlt
ZVxQcm9wZXJ0eURlc2NyaXB0b3IuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggZWEzOTc0Yi4uZGIwNTk0OCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTEwNiw4ICsxMDYsOCBAQAogCQkwRkQ4MkU4NjE0MUYzRkYxMDAxNzlD
OTQgLyogUHJlZGljdGVkVHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkQ4MkU4NDE0MUYzRkRBMDAxNzlDOTQgLyogUHJlZGljdGVkVHlwZS5j
cHAgKi87IH07CiAJCTBGRDgyRTkwMTQyMDdBNUYwMDE3OUM5NCAvKiBWYWx1ZVByb2ZpbGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEODJFOEUx
NDIwN0E1MTAwMTc5Qzk0IC8qIFZhbHVlUHJvZmlsZS5jcHAgKi87IH07CiAJCTBGRDgyRjRCMTQy
ODA2QTEwMDE3OUM5NCAvKiBCaXRWZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgyRjQ5MTQyODA2OTIwMDE3OUM5NCAvKiBCaXRWZWN0b3Iu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRkUy
MjhFRDE0MzZBQjI3MDAxOTZDNDggLyogSGV1cmlzdGljcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFMjI4RUIxNDM2QUIyMzAwMTk2QzQ4IC8qIEhl
dXJpc3RpY3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQkwRkUyMjhFRTE0MzZBQjJDMDAxOTZDNDggLyogSGV1cmlzdGljcy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkUyMjhFQTE0MzZBQjIzMDAx
OTZDNDggLyogSGV1cmlzdGljcy5jcHAgKi87IH07CisJCTBGRTIyOEVEMTQzNkFCMjcwMDE5NkM0
OCAvKiBPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkUyMjhFQjE0MzZBQjIzMDAxOTZDNDggLyogT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRTIyOEVFMTQzNkFCMkMwMDE5
NkM0OCAvKiBPcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGRTIyOEVBMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCAqLzsgfTsK
IAkJMEZGRjRCQjQxNDM5NTVFOTAwNjU1QkMwIC8qIERGR1N0cnVjdHVyZVNldC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGRjRCQjIxNDM5NTVFNjAw
NjU1QkMwIC8qIERGR1N0cnVjdHVyZVNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTE0MDAwNjc3MTJBNkY3ODMwMDY0RDEyMyAvKiBPU0FsbG9j
YXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQw
MDA2NzYxMkE2Rjc4MzAwNjREMTIzIC8qIE9TQWxsb2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQwMDA2OTMxMkE2RjlFMTAwNjREMTIz
IC8qIE9TQWxsb2NhdG9yUG9zaXguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTQwMDA2OTIxMkE2RjlFMTAwNjREMTIzIC8qIE9TQWxsb2NhdG9yUG9z
aXguY3BwICovOyB9OwpAQCAtODkwLDggKzg5MCw4IEBACiAJCTBGRDgyRTg0MTQxRjNGREEwMDE3
OUM5NCAvKiBQcmVkaWN0ZWRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFByZWRpY3RlZFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkQ4MkU4RTE0MjA3QTUxMDAxNzlDOTQgLyogVmFsdWVQcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZhbHVlUHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGRDgyRjQ5MTQyODA2OTIwMDE3OUM5NCAvKiBCaXRWZWN0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQml0VmVjdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTBGRTIyOEVBMTQzNkFCMjMwMDE5NkM0OCAvKiBIZXVyaXN0aWNz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhldXJpc3RpY3MuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkUyMjhFQjE0MzZBQjIzMDAxOTZDNDgg
LyogSGV1cmlzdGljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZXVyaXN0
aWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRTIyOEVBMTQzNkFCMjMwMDE5
NkM0OCAvKiBPcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE9wdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkUyMjhFQjE0MzZB
QjIzMDAxOTZDNDggLyogT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRkY0QkIyMTQzOTU1
RTYwMDY1NUJDMCAvKiBERkdTdHJ1Y3R1cmVTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gREZHU3RydWN0dXJlU2V0Lmg7IHBhdGggPSBkZmcvREZHU3RydWN0dXJlU2V0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MDAwNjc2MTJBNkY3ODMwMDY0RDEyMyAv
KiBPU0FsbG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPU0FsbG9j
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDAwMDY5MjEyQTZGOUUxMDA2
NEQxMjMgLyogT1NBbGxvY2F0b3JQb3NpeC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBPU0FsbG9jYXRvclBvc2l4LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTIxMTEsNiArMjExMSw4IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBy
dW50aW1lICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkw
Rjc3MDA5MTE0MDJGRjI4MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCAqLywKKwkJCQkw
Rjc3MDA4RTE0MDJGREQ2MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmggKi8sCiAJCQkJQkNG
NjA1MTEwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuY3BwICovLAogCQkJCUJDRjYwNTEyMEUy
MDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggKi8sCiAJCQkJQkMyNTdERTUwRTFGNTFDNTAwMTZC
NkM5IC8qIEFyZ3VtZW50cy5jcHAgKi8sCkBAIC0yMTY2LDggKzIxNjgsNiBAQAogCQkJCURERjdB
QkQzMTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2tDRi5jcHAgKi8sCiAJCQkJ
QkMwMkU5QjgwRTE4NDU0NTAwMEY5Mjk3IC8qIEdldHRlclNldHRlci5jcHAgKi8sCiAJCQkJQkMz
MzdCREUwRTFBRjBCODAwNzY5MThBIC8qIEdldHRlclNldHRlci5oICovLAotCQkJCTBGRTIyOEVB
MTQzNkFCMjMwMDE5NkM0OCAvKiBIZXVyaXN0aWNzLmNwcCAqLywKLQkJCQkwRkUyMjhFQjE0MzZB
QjIzMDAxOTZDNDggLyogSGV1cmlzdGljcy5oICovLAogCQkJCTkzM0EzNDlEMDM4QUU4MEYwMDg2
MzVDRSAvKiBJZGVudGlmaWVyLmNwcCAqLywKIAkJCQk5MzNBMzQ5QTAzOEFFN0M2MDA4NjM1Q0Ug
LyogSWRlbnRpZmllci5oICovLAogCQkJCUUxNzg2MzZDMEQ5QkVFQzMwMEQ3NEU3NSAvKiBJbml0
aWFsaXplVGhyZWFkaW5nLmNwcCAqLywKQEAgLTIyNDYsNiArMjI0Niw4IEBACiAJCQkJQkMyNjgw
QzkwRTE2RDRFOTAwQTA2RTkyIC8qIE9iamVjdFByb3RvdHlwZS5oICovLAogCQkJCUY2OTJBODc3
MDI1NTU5N0QwMUZGNjBGNyAvKiBPcGVyYXRpb25zLmNwcCAqLywKIAkJCQlGNjkyQTg3ODAyNTU1
OTdEMDFGRjYwRjcgLyogT3BlcmF0aW9ucy5oICovLAorCQkJCTBGRTIyOEVBMTQzNkFCMjMwMDE5
NkM0OCAvKiBPcHRpb25zLmNwcCAqLywKKwkJCQkwRkUyMjhFQjE0MzZBQjIzMDAxOTZDNDggLyog
T3B0aW9ucy5oICovLAogCQkJCUE3RkI2MEEzMTAzRjdEQzIwMDE3QTI4NiAvKiBQcm9wZXJ0eURl
c2NyaXB0b3IuY3BwICovLAogCQkJCUE3RkI2MDRCMTAzRjVFQUIwMDE3QTI4NiAvKiBQcm9wZXJ0
eURlc2NyaXB0b3IuaCAqLywKIAkJCQlCQzk1NDM3QzBFQkE3MEZEMDA3MkI2RDMgLyogUHJvcGVy
dHlNYXBIYXNoVGFibGUuaCAqLywKQEAgLTI5NTQsNyArMjk1Niw3IEBACiAJCQkJMEY2MzZEQTAx
NDJEMjdENzAwQjJFNjZBIC8qIFBhY2tlZEludFZlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTc1MjFFMTMxNDI5MTY5QTAwM0M4RDBDIC8qIENhcmRTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRDUyQUFFMTQzMDM1QTAwMDI2REM5RiAvKiBVbmlvbkZpbmQuaCBpbiBIZWFkZXJzICovLAot
CQkJCTBGRTIyOEVEMTQzNkFCMjcwMDE5NkM0OCAvKiBIZXVyaXN0aWNzLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRkUyMjhFRDE0MzZBQjI3MDAxOTZDNDggLyogT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZGRjRCQjQxNDM5NTVFOTAwNjU1QkMwIC8qIERGR1N0cnVjdHVyZVNldC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODYwNEY1MDUxNDNDRTFDMjAwQjI5NUY1IC8qIEpTR2xvYmFsVGhp
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MjAxNzQxNDNGQ0QzMzAwNjhCNzdDIC8qIERGR1Zh
cmlhYmxlQWNjZXNzRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNTE1LDcgKzM1MTcsNyBAQAog
CQkJCTg2RkE5RTkxMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODY4ODBGMUYxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY4ODBGNEQxNDM1M0IyMTAwQjA4RDQy
IC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEZFMjI4RUUx
NDM2QUIyQzAwMTk2QzQ4IC8qIEhldXJpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZF
MjI4RUUxNDM2QUIyQzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEY2MjAxNzkxNDNGQ0Q0ODAwNjhCNzdDIC8qIERGR0Fic3RyYWN0U3RhdGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkMzQzRDQTAxNDU4RjU0NTAwMjVGQjYyIC8qIEpTR2xvYmFsVGhpcy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkMwOTc2RTE0NjhBQjUxMDBDRjI0NDIgLyogREZHQXNzZW1i
bHlIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQppbmRl
eCA3YTJmOGI0Li41YWNjMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFy
Z2V0LnByaQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQpAQCAtMTQ5LDcg
KzE0OSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
IFwKICAgICBydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAgXAogICAgIHJ1bnRpbWUvR2V0
dGVyU2V0dGVyLmNwcCBcCi0gICAgcnVudGltZS9IZXVyaXN0aWNzLmNwcCBcCisgICAgcnVudGlt
ZS9PcHRpb25zLmNwcCBcCiAgICAgcnVudGltZS9JZGVudGlmaWVyLmNwcCBcCiAgICAgcnVudGlt
ZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcCBcCiAgICAgcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9u
LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmlu
ZGV4IGNiZDM5NzEuLjc0ZGNmMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCkBAIC0yMjAzLDcgKzIyMDMsNyBAQCBib29sIENvZGVCbG9jazo6c2hv
dWxkT3B0aW1pemVOb3coKQogICAgIGR1bXBWYWx1ZVByb2ZpbGVzKCk7CiAjZW5kaWYKIAotICAg
IGlmIChtX29wdGltaXphdGlvbkRlbGF5Q291bnRlciA+PSBIZXVyaXN0aWNzOjptYXhpbXVtT3B0
aW1pemF0aW9uRGVsYXkpCisgICAgaWYgKG1fb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID49IE9w
dGlvbnM6Om1heGltdW1PcHRpbWl6YXRpb25EZWxheSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPSAwOwpA
QCAtMjIyOSw5ICsyMjI5LDkgQEAgYm9vbCBDb2RlQmxvY2s6OnNob3VsZE9wdGltaXplTm93KCkK
ICAgICBwcmludGYoIlByb2ZpbGUgaG90bmVzczogJWxmLCAlbGZcbiIsIChkb3VibGUpbnVtYmVy
T2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzIC8gbnVtYmVyT2ZOb25Bcmd1bWVudFZhbHVl
UHJvZmlsZXMsIChkb3VibGUpbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcyAvIFZhbHVlUHJvZmls
ZTo6bnVtYmVyT2ZCdWNrZXRzIC8gbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkpOwogI2VuZGlmCiAK
LSAgICBpZiAoKCFudW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyB8fCAoZG91YmxlKW51
bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyAvIG51bWJlck9mTm9uQXJndW1lbnRW
YWx1ZVByb2ZpbGVzID49IEhldXJpc3RpY3M6OmRlc2lyZWRQcm9maWxlTGl2ZW5lc3NSYXRlKQot
ICAgICAgICAmJiAoIW51bWJlck9mVmFsdWVQcm9maWxlcygpIHx8IChkb3VibGUpbnVtYmVyT2ZT
YW1wbGVzSW5Qcm9maWxlcyAvIFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIC8gbnVtYmVy
T2ZWYWx1ZVByb2ZpbGVzKCkgPj0gSGV1cmlzdGljczo6ZGVzaXJlZFByb2ZpbGVGdWxsbmVzc1Jh
dGUpCi0gICAgICAgICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29wdGltaXphdGlvbkRlbGF5
Q291bnRlcikgKyAxID49IEhldXJpc3RpY3M6Om1pbmltdW1PcHRpbWl6YXRpb25EZWxheSkKKyAg
ICBpZiAoKCFudW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyB8fCAoZG91YmxlKW51bWJl
ck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyAvIG51bWJlck9mTm9uQXJndW1lbnRWYWx1
ZVByb2ZpbGVzID49IE9wdGlvbnM6OmRlc2lyZWRQcm9maWxlTGl2ZW5lc3NSYXRlKQorICAgICAg
ICAmJiAoIW51bWJlck9mVmFsdWVQcm9maWxlcygpIHx8IChkb3VibGUpbnVtYmVyT2ZTYW1wbGVz
SW5Qcm9maWxlcyAvIFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIC8gbnVtYmVyT2ZWYWx1
ZVByb2ZpbGVzKCkgPj0gT3B0aW9uczo6ZGVzaXJlZFByb2ZpbGVGdWxsbmVzc1JhdGUpCisgICAg
ICAgICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29wdGltaXphdGlvbkRlbGF5Q291bnRlcikg
KyAxID49IE9wdGlvbnM6Om1pbmltdW1PcHRpbWl6YXRpb25EZWxheSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgCiAgICAgQVNTRVJUKG1fb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyIDwgc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50OF90Pjo6bWF4KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDYxNWYyYjUuLjQzNWI5NTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTM3LDcgKzM3LDcgQEAKICNp
bmNsdWRlICJERkdPU1JFbnRyeS5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXQuaCIKICNpbmNsdWRl
ICJFdmFsQ29kZUNhY2hlLmgiCi0jaW5jbHVkZSAiSGV1cmlzdGljcy5oIgorI2luY2x1ZGUgIk9w
dGlvbnMuaCIKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIK
ICNpbmNsdWRlICJKSVRXcml0ZUJhcnJpZXIuaCIKQEAgLTY4MywxMyArNjgzLDEzIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBib29sIGxpa2VseVRvVGFrZVNsb3dDYXNlKGludCBieXRlY29k
ZU9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSByYXJlQ2Fz
ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKLSAg
ICAgICAgICAgIHJldHVybiB2YWx1ZSA+PSBIZXVyaXN0aWNzOjpsaWtlbHlUb1Rha2VTbG93Q2Fz
ZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9u
RW50cnlDb3VudCA+PSBIZXVyaXN0aWNzOjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsK
KyAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93Q2Fz
ZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9u
RW50cnlDb3VudCA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBjb3VsZFRha2VTbG93Q2FzZShpbnQgYnl0
ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0gcmFy
ZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7
Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWUgPj0gSGV1cmlzdGljczo6Y291bGRUYWtlU2xvd0Nh
c2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkgLyBtX2V4ZWN1dGlv
bkVudHJ5Q291bnQgPj0gSGV1cmlzdGljczo6Y291bGRUYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7Cisg
ICAgICAgICAgICByZXR1cm4gdmFsdWUgPj0gT3B0aW9uczo6Y291bGRUYWtlU2xvd0Nhc2VNaW5p
bXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkgLyBtX2V4ZWN1dGlvbkVudHJ5
Q291bnQgPj0gT3B0aW9uczo6Y291bGRUYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIFJhcmVDYXNlUHJvZmlsZSogYWRkU3BlY2lhbEZhc3RDYXNlUHJv
ZmlsZShpbnQgYnl0ZWNvZGVPZmZzZXQpCkBAIC03MDcsNyArNzA3LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlU3BlY2lhbEZhc3RDYXNlKGludCBieXRlY29k
ZU9mZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RDYXNl
Q291bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVP
ZmZzZXQpLT5tX2NvdW50ZXI7Ci0gICAgICAgICAgICByZXR1cm4gc3BlY2lhbEZhc3RDYXNlQ291
bnQgPj0gSGV1cmlzdGljczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3Rh
dGljX2Nhc3Q8ZG91YmxlPihzcGVjaWFsRmFzdENhc2VDb3VudCkgLyBtX2V4ZWN1dGlvbkVudHJ5
Q291bnQgPj0gSGV1cmlzdGljczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CisgICAg
ICAgICAgICByZXR1cm4gc3BlY2lhbEZhc3RDYXNlQ291bnQgPj0gT3B0aW9uczo6bGlrZWx5VG9U
YWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPihzcGVjaWFsRmFz
dENhc2VDb3VudCkgLyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQgPj0gT3B0aW9uczo6bGlrZWx5VG9U
YWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wg
bGlrZWx5VG9UYWtlRGVlcGVzdFNsb3dDYXNlKGludCBieXRlY29kZU9mZnNldCkKQEAgLTcxNSw3
ICs3MTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHVuc2lnbmVkIHNsb3dDYXNl
Q291bnQgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkt
Pm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID0g
c3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+
bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSBzbG93Q2FzZUNvdW50IC0g
c3BlY2lhbEZhc3RDYXNlQ291bnQ7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWUgPj0gSGV1cmlz
dGljczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91
YmxlPih2YWx1ZSkgLyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQgPj0gSGV1cmlzdGljczo6bGlrZWx5
VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CisgICAgICAgICAgICByZXR1cm4gdmFsdWUgPj0gT3B0
aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91
YmxlPih2YWx1ZSkgLyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQgPj0gT3B0aW9uczo6bGlrZWx5VG9U
YWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wg
bGlrZWx5VG9UYWtlQW55U2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQpAQCAtNzIzLDcgKzcy
Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgdW5zaWduZWQgc2xvd0Nhc2VDb3Vu
dCA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9j
b3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBzcGVj
aWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2Nv
dW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHNsb3dDYXNlQ291bnQgKyBzcGVj
aWFsRmFzdENhc2VDb3VudDsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+PSBIZXVyaXN0aWNz
OjpsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+
KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBIZXVyaXN0aWNzOjpsaWtlbHlUb1Rh
a2VTbG93Q2FzZVRocmVzaG9sZDsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+PSBPcHRpb25z
OjpsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+
KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VT
bG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdW5zaWduZWQg
ZXhlY3V0aW9uRW50cnlDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZXhlY3V0aW9uRW50cnlDb3Vu
dDsgfQpAQCAtOTMzLDI1ICs5MzMsMjUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIHRv
IGF2b2lkIHRocmFzaGluZy4KICAgICAgICAgdW5zaWduZWQgcmVvcHRpbWl6YXRpb25SZXRyeUNv
dW50ZXIoKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQobV9yZW9wdGltaXph
dGlvblJldHJ5Q291bnRlciA8PSBIZXVyaXN0aWNzOjpyZW9wdGltaXphdGlvblJldHJ5Q291bnRl
ck1heCk7CisgICAgICAgICAgICBBU1NFUlQobV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA8
PSBPcHRpb25zOjpyZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1heCk7CiAgICAgICAgICAgICBy
ZXR1cm4gbV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcjsKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgdm9pZCBjb3VudFJlb3B0aW1pemF0aW9uKCkKICAgICAgICAgewogICAgICAgICAg
ICAgbV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcisrOwotICAgICAgICAgICAgaWYgKG1fcmVv
cHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPiBIZXVyaXN0aWNzOjpyZW9wdGltaXphdGlvblJldHJ5
Q291bnRlck1heCkKLSAgICAgICAgICAgICAgICBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVy
ID0gSGV1cmlzdGljczo6cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXg7CisgICAgICAgICAg
ICBpZiAobV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA+IE9wdGlvbnM6OnJlb3B0aW1pemF0
aW9uUmV0cnlDb3VudGVyTWF4KQorICAgICAgICAgICAgICAgIG1fcmVvcHRpbWl6YXRpb25SZXRy
eUNvdW50ZXIgPSBPcHRpb25zOjpyZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1heDsKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgaW50MzJfdCBjb3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFm
dGVyV2FybVVwKCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEhldXJpc3RpY3M6OmV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAgPDwgcmVvcHRpbWl6YXRp
b25SZXRyeUNvdW50ZXIoKTsKKyAgICAgICAgICAgIHJldHVybiBPcHRpb25zOjpleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwIDw8IHJlb3B0aW1pemF0aW9uUmV0cnlD
b3VudGVyKCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGludDMyX3QgY291bnRlclZh
bHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAoKQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gSGV1cmlzdGljczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxv
bmdXYXJtVXAgPDwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKTsKKyAgICAgICAgICAgIHJl
dHVybiBPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dh
cm1VcCA8PCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpOwogICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICBpbnQzMl90KiBhZGRyZXNzT2ZFeGVjdXRlQ291bnRlcigpCkBAIC05NzAsNyAr
OTcwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIGV4cGVuc2l2ZSB0aGFuIGV4ZWN1
dGluZyBiYXNlbGluZSBjb2RlLgogICAgICAgICB2b2lkIG9wdGltaXplTmV4dEludm9jYXRpb24o
KQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2V4ZWN1dGVDb3VudGVyID0gSGV1cmlzdGljczo6
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVOZXh0SW52b2NhdGlvbjsKKyAgICAgICAg
ICAgIG1fZXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JP
cHRpbWl6ZU5leHRJbnZvY2F0aW9uOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBD
YWxsIHRoaXMgdG8gcHJldmVudCBvcHRpbWl6YXRpb24gZnJvbSBoYXBwZW5pbmcgYWdhaW4uIE5v
dGUgdGhhdApAQCAtOTgwLDcgKzk4MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyB0
aGUgZnV0dXJlIGFzIHdlbGwuCiAgICAgICAgIHZvaWQgZG9udE9wdGltaXplQW55dGltZVNvb24o
KQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2V4ZWN1dGVDb3VudGVyID0gSGV1cmlzdGljczo6
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247CisgICAgICAg
ICAgICBtX2V4ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
RG9udE9wdGltaXplQW55dGltZVNvb247CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8v
IENhbGwgdGhpcyB0byByZWluaXRpYWxpemUgdGhlIGNvdW50ZXIgdG8gaXRzIHN0YXJ0aW5nIHN0
YXRlLApAQCAtMTAyMSw3ICsxMDIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIGlu
IHRoZSBiYXNlbGluZSBjb2RlLgogICAgICAgICB2b2lkIG9wdGltaXplU29vbigpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIG1fZXhlY3V0ZUNvdW50ZXIgPSBIZXVyaXN0aWNzOjpleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JPcHRpbWl6ZVNvb24gPDwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIo
KTsKKyAgICAgICAgICAgIG1fZXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JPcHRpbWl6ZVNvb24gPDwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKTsK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gVGhlIHNwZWN1bGF0aXZlIEpJVCB0cmFj
a3MgaXRzIHN1Y2Nlc3MgcmF0ZSwgc28gdGhhdCB3ZSBjYW4KQEAgLTEwNTUsMTcgKzEwNTUsMTcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICAvLyBUaGUgbnVt
YmVyIG9mIGZhaWx1cmVzIHRoYXQgdHJpZ2dlcnMgdGhlIHVzZSBvZiB0aGUgcmF0aW8uCi0gICAg
ICAgIHVuc2lnbmVkIGxhcmdlRmFpbENvdW50VGhyZXNob2xkKCkgeyByZXR1cm4gSGV1cmlzdGlj
czo6bGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlIDw8IGJhc2VsaW5lVmVyc2lvbigpLT5yZW9w
dGltaXphdGlvblJldHJ5Q291bnRlcigpOyB9Ci0gICAgICAgIHVuc2lnbmVkIGxhcmdlRmFpbENv
dW50VGhyZXNob2xkRm9yTG9vcCgpIHsgcmV0dXJuIEhldXJpc3RpY3M6OmxhcmdlRmFpbENvdW50
VGhyZXNob2xkQmFzZUZvckxvb3AgPDwgYmFzZWxpbmVWZXJzaW9uKCktPnJlb3B0aW1pemF0aW9u
UmV0cnlDb3VudGVyKCk7IH0KKyAgICAgICAgdW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hv
bGQoKSB7IHJldHVybiBPcHRpb25zOjpsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2UgPDwgYmFz
ZWxpbmVWZXJzaW9uKCktPnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCk7IH0KKyAgICAgICAg
dW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRGb3JMb29wKCkgeyByZXR1cm4gT3B0aW9u
czo6bGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlRm9yTG9vcCA8PCBiYXNlbGluZVZlcnNpb24o
KS0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKTsgfQogCiAgICAgICAgIGJvb2wgc2hvdWxk
UmVvcHRpbWl6ZU5vdygpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBIZXVyaXN0aWNz
OjpkZXNpcmVkU3BlY3VsYXRpdmVTdWNjZXNzRmFpbFJhdGlvICogc3BlY3VsYXRpdmVGYWlsQ291
bnRlcigpID49IHNwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXIoKSAmJiBzcGVjdWxhdGl2ZUZhaWxD
b3VudGVyKCkgPj0gbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGQoKTsKKyAgICAgICAgICAgIHJldHVy
biBPcHRpb25zOjpkZXNpcmVkU3BlY3VsYXRpdmVTdWNjZXNzRmFpbFJhdGlvICogc3BlY3VsYXRp
dmVGYWlsQ291bnRlcigpID49IHNwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXIoKSAmJiBzcGVjdWxh
dGl2ZUZhaWxDb3VudGVyKCkgPj0gbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGQoKTsKICAgICAgICAg
fQogCiAgICAgICAgIGJvb2wgc2hvdWxkUmVvcHRpbWl6ZUZyb21Mb29wTm93KCkKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIEhldXJpc3RpY3M6OmRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nl
c3NGYWlsUmF0aW8gKiBzcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkgPj0gc3BlY3VsYXRpdmVTdWNj
ZXNzQ291bnRlcigpICYmIHNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSA+PSBsYXJnZUZhaWxDb3Vu
dFRocmVzaG9sZEZvckxvb3AoKTsKKyAgICAgICAgICAgIHJldHVybiBPcHRpb25zOjpkZXNpcmVk
U3BlY3VsYXRpdmVTdWNjZXNzRmFpbFJhdGlvICogc3BlY3VsYXRpdmVGYWlsQ291bnRlcigpID49
IHNwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXIoKSAmJiBzcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkg
Pj0gbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRGb3JMb29wKCk7CiAgICAgICAgIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmlu
ZGV4IGQyMzFhZDYuLjExYThlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC05NzksNyArOTc5LDcgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW5saW5pbmcoYm9vbCB1c2VzUmVzdWx0LCBpbnQgY2FsbFRhcmdldCwgTm9k
ZUluZGV4IGMKICAgICB1bnNpZ25lZCBkZXB0aCA9IDA7CiAgICAgZm9yIChJbmxpbmVTdGFja0Vu
dHJ5KiBlbnRyeSA9IG1faW5saW5lU3RhY2tUb3A7IGVudHJ5OyBlbnRyeSA9IGVudHJ5LT5tX2Nh
bGxlcikgewogICAgICAgICArK2RlcHRoOwotICAgICAgICBpZiAoZGVwdGggPj0gSGV1cmlzdGlj
czo6bWF4aW11bUlubGluaW5nRGVwdGgpCisgICAgICAgIGlmIChkZXB0aCA+PSBPcHRpb25zOjpt
YXhpbXVtSW5saW5pbmdEZXB0aCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gRGVwdGgg
ZXhjZWVkZWQuCiAgICAgICAgIAogICAgICAgICBpZiAoZW50cnktPmV4ZWN1dGFibGUoKSA9PSBl
eGVjdXRhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgK
aW5kZXggMGY3MGFhNC4uMjY1M2M3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDYXBhYmlsaXRpZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiSW50cmluc2ljLmgi
CiAjaW5jbHVkZSAiREZHTm9kZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKLSNpbmNsdWRl
ICJIZXVyaXN0aWNzLmgiCisjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgIkludGVycHJl
dGVyLmgiCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKQEAgLTQwLDI4ICs0MCwyOCBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAvLyBjaGVjayBvcGNvZGVzLgogaW5saW5l
IGJvb2wgbWlnaHRDb21waWxlRXZhbChDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKLSAgICByZXR1
cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gSGV1cmlzdGljczo6bWF4aW11bU9w
dGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CisgICAgcmV0dXJuIGNvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1PcHRpbWl6YXRpb25DYW5k
aWRhdGVJbnN0cnVjdGlvbkNvdW50OwogfQogaW5saW5lIGJvb2wgbWlnaHRDb21waWxlUHJvZ3Jh
bShDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKLSAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVj
dGlvbkNvdW50KCkgPD0gSGV1cmlzdGljczo6bWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUlu
c3RydWN0aW9uQ291bnQ7CisgICAgcmV0dXJuIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgp
IDw9IE9wdGlvbnM6Om1heGltdW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50
OwogfQogaW5saW5lIGJvb2wgbWlnaHRDb21waWxlRnVuY3Rpb25Gb3JDYWxsKENvZGVCbG9jayog
Y29kZUJsb2NrKQogewotICAgIHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8
PSBIZXVyaXN0aWNzOjptYXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3Vu
dDsKKyAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9uczo6
bWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CiB9CiBpbmxpbmUg
Ym9vbCBtaWdodENvbXBpbGVGdW5jdGlvbkZvckNvbnN0cnVjdChDb2RlQmxvY2sqIGNvZGVCbG9j
aykKIHsKLSAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gSGV1cmlz
dGljczo6bWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CisgICAg
cmV0dXJuIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1P
cHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OwogfQogCiBpbmxpbmUgYm9vbCBt
aWdodElubGluZUZ1bmN0aW9uRm9yQ2FsbChDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKLSAgICBy
ZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gSGV1cmlzdGljczo6bWF4aW11
bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CisgICAgcmV0
dXJuIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IE9wdGlvbnM6Om1heGltdW1GdW5j
dGlvbkZvckNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OwogfQogaW5saW5lIGJv
b2wgbWlnaHRJbmxpbmVGdW5jdGlvbkZvckNvbnN0cnVjdChDb2RlQmxvY2sqIGNvZGVCbG9jaykK
IHsKLSAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gSGV1cmlzdGlj
czo6bWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25D
b3VudDsKKyAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9u
czo6bWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25D
b3VudDsKIH0KIAogLy8gT3Bjb2RlIGNoZWNraW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdC5jcHAKaW5kZXggMmNhMmMxOC4uN2IxOTQxMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgT1NSRXhpdDo6
ZHVtcChGSUxFKiBvdXQpIGNvbnN0CiAKIGJvb2wgT1NSRXhpdDo6Y29uc2lkZXJBZGRpbmdBc0Zy
ZXF1ZW50RXhpdFNpdGVTbG93KENvZGVCbG9jayogZGZnQ29kZUJsb2NrLCBDb2RlQmxvY2sqIHBy
b2ZpbGVkQ29kZUJsb2NrKQogewotICAgIGlmIChzdGF0aWNfY2FzdDxkb3VibGU+KG1fY291bnQp
IC8gZGZnQ29kZUJsb2NrLT5zcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkgPD0gSGV1cmlzdGljczo6
b3NyRXhpdFByb21pbmVuY2VGb3JGcmVxdWVudEV4aXRTaXRlKQorICAgIGlmIChzdGF0aWNfY2Fz
dDxkb3VibGU+KG1fY291bnQpIC8gZGZnQ29kZUJsb2NrLT5zcGVjdWxhdGl2ZUZhaWxDb3VudGVy
KCkgPD0gT3B0aW9uczo6b3NyRXhpdFByb21pbmVuY2VGb3JGcmVxdWVudEV4aXRTaXRlKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgcmV0dXJuIEFzc2VtYmx5SGVscGVyczo6YmFz
ZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jayhtX2NvZGVPcmlnaW4s
IHByb2ZpbGVkQ29kZUJsb2NrKS0+YWRkRnJlcXVlbnRFeGl0U2l0ZShGcmVxdWVudEV4aXRTaXRl
KG1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBtX2tpbmQpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAKaW5kZXggNThh
NWYyMi4uNjEyMmYyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXIzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAKQEAgLTUxNiwxMiArNTE2LDEyIEBAIHZvaWQgT1NS
RXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCBPU1JFeGl0JiBleGl0LCBTcGVjdWxhdGlv
blJlY292ZXJ5KiByZWNvCiAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIobV9qaXQuYmFzZWxpbmVDb2RlQmxvY2soKSksIEdQUkluZm86OnJlZ1QwKTsKICAgICAK
ICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgZmV3RmFpbHMgPSBtX2ppdC5icmFuY2gzMihBc3Nl
bWJseUhlbHBlcnM6OkJlbG93T3JFcXVhbCwgR1BSSW5mbzo6cmVnVDIsIEFzc2VtYmx5SGVscGVy
czo6SW1tMzIobV9qaXQuY29kZUJsb2NrKCktPmxhcmdlRmFpbENvdW50VGhyZXNob2xkKCkpKTsK
LSAgICBtX2ppdC5tdWwzMihBc3NlbWJseUhlbHBlcnM6OkltbTMyKEhldXJpc3RpY3M6OmRlc2ly
ZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW8pLCBHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6
cmVnVDIpOworICAgIG1faml0Lm11bDMyKEFzc2VtYmx5SGVscGVyczo6SW1tMzIoT3B0aW9uczo6
ZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbyksIEdQUkluZm86OnJlZ1QyLCBHUFJJ
bmZvOjpyZWdUMik7CiAgICAgCiAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIGxvd0ZhaWxSYXRl
ID0gbV9qaXQuYnJhbmNoMzIoQXNzZW1ibHlIZWxwZXJzOjpCZWxvd09yRXF1YWwsIEdQUkluZm86
OnJlZ1QyLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgCiAgICAgLy8gUmVvcHRpbWl6ZSBhcyBzb29u
IGFzIHBvc3NpYmxlLgotICAgIG1faml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpJbW0zMihI
ZXVyaXN0aWNzOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZU5leHRJbnZvY2F0aW9u
KSwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBDb2RlQmxvY2s6Om9m
ZnNldE9mRXhlY3V0ZUNvdW50ZXIoKSkpOworICAgIG1faml0LnN0b3JlMzIoQXNzZW1ibHlIZWxw
ZXJzOjpJbW0zMihPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZU5leHRJ
bnZvY2F0aW9uKSwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBDb2Rl
QmxvY2s6Om9mZnNldE9mRXhlY3V0ZUNvdW50ZXIoKSkpOwogICAgIEFzc2VtYmx5SGVscGVyczo6
SnVtcCBkb25lQWRqdXN0aW5nID0gbV9qaXQuanVtcCgpOwogICAgIAogICAgIGZld0ZhaWxzLmxp
bmsoJm1faml0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdENvbXBpbGVyNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
Q29tcGlsZXI2NC5jcHAKaW5kZXggYzk2NTRjNS4uMjZlMmI5MyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAKQEAgLTU0NCwxMiAr
NTQ0LDEyIEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCBPU1JFeGl0
JiBleGl0LCBTcGVjdWxhdGlvblJlY292ZXJ5KiByZWNvCiAgICAgbV9qaXQubW92ZShBc3NlbWJs
eUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9qaXQuYmFzZWxpbmVDb2RlQmxvY2soKSksIEdQUklu
Zm86OnJlZ1QwKTsKICAgICAKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgZmV3RmFpbHMgPSBt
X2ppdC5icmFuY2gzMihBc3NlbWJseUhlbHBlcnM6OkJlbG93T3JFcXVhbCwgR1BSSW5mbzo6cmVn
VDIsIEFzc2VtYmx5SGVscGVyczo6SW1tMzIobV9qaXQuY29kZUJsb2NrKCktPmxhcmdlRmFpbENv
dW50VGhyZXNob2xkKCkpKTsKLSAgICBtX2ppdC5tdWwzMihBc3NlbWJseUhlbHBlcnM6OkltbTMy
KEhldXJpc3RpY3M6OmRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW8pLCBHUFJJbmZv
OjpyZWdUMiwgR1BSSW5mbzo6cmVnVDIpOworICAgIG1faml0Lm11bDMyKEFzc2VtYmx5SGVscGVy
czo6SW1tMzIoT3B0aW9uczo6ZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbyksIEdQ
UkluZm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgCiAgICAgQXNzZW1ibHlIZWxwZXJz
OjpKdW1wIGxvd0ZhaWxSYXRlID0gbV9qaXQuYnJhbmNoMzIoQXNzZW1ibHlIZWxwZXJzOjpCZWxv
d09yRXF1YWwsIEdQUkluZm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgCiAgICAgLy8g
UmVvcHRpbWl6ZSBhcyBzb29uIGFzIHBvc3NpYmxlLgotICAgIG1faml0LnN0b3JlMzIoQXNzZW1i
bHlIZWxwZXJzOjpJbW0zMihIZXVyaXN0aWNzOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRp
bWl6ZU5leHRJbnZvY2F0aW9uKSwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJl
Z1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mRXhlY3V0ZUNvdW50ZXIoKSkpOworICAgIG1faml0LnN0
b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpJbW0zMihPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFs
dWVGb3JPcHRpbWl6ZU5leHRJbnZvY2F0aW9uKSwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQ
UkluZm86OnJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mRXhlY3V0ZUNvdW50ZXIoKSkpOwogICAg
IEFzc2VtYmx5SGVscGVyczo6SnVtcCBkb25lQWRqdXN0aW5nID0gbV9qaXQuanVtcCgpOwogICAg
IAogICAgIGZld0ZhaWxzLmxpbmsoJm1faml0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oCmluZGV4IGEwNjQ0ZWYuLmI1OTlmMGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRh
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEu
aApAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRVc2VEb3VibGVGb3Jt
YXRBY2NvcmRpbmdUb1ZvdGUoKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IG1ha2UgdGhpcyB3
b3JrIGZvciBhcmd1bWVudHMuCi0gICAgICAgIHJldHVybiAhb3BlcmFuZElzQXJndW1lbnQob3Bl
cmFuZCgpKSAmJiAoKGlzTnVtYmVyUHJlZGljdGlvbihwcmVkaWN0aW9uKCkpICYmIGRvdWJsZVZv
dGVSYXRpbygpID49IEhldXJpc3RpY3M6OmRvdWJsZVZvdGVSYXRpb0ZvckRvdWJsZUZvcm1hdCkg
fHwgaXNEb3VibGVQcmVkaWN0aW9uKHByZWRpY3Rpb24oKSkpOworICAgICAgICByZXR1cm4gIW9w
ZXJhbmRJc0FyZ3VtZW50KG9wZXJhbmQoKSkgJiYgKChpc051bWJlclByZWRpY3Rpb24ocHJlZGlj
dGlvbigpKSAmJiBkb3VibGVWb3RlUmF0aW8oKSA+PSBPcHRpb25zOjpkb3VibGVWb3RlUmF0aW9G
b3JEb3VibGVGb3JtYXQpIHx8IGlzRG91YmxlUHJlZGljdGlvbihwcmVkaWN0aW9uKCkpKTsKICAg
ICB9CiAgICAgCiAgICAgYm9vbCBzaG91bGRVc2VEb3VibGVGb3JtYXQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKaW5kZXggM2Y0ZmRhNy4uZGQwZTZmZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAK
ICNpbmNsdWRlICJDb25zZXJ2YXRpdmVSb290cy5oIgogI2luY2x1ZGUgIkhlYXAuaCIKLSNpbmNs
dWRlICJIZXVyaXN0aWNzLmgiCisjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgIkpTQXJy
YXkuaCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgpAQCAtNjAs
NyArNjAsNyBAQCBNYXJrU3RhY2tTZWdtZW50KiBNYXJrU3RhY2tTZWdtZW50QWxsb2NhdG9yOjph
bGxvY2F0ZSgpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWFy
a1N0YWNrU2VnbWVudCo+KE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KEhldXJpc3RpY3M6
OmdjTWFya1N0YWNrU2VnbWVudFNpemUpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWFya1N0
YWNrU2VnbWVudCo+KE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KE9wdGlvbnM6OmdjTWFy
a1N0YWNrU2VnbWVudFNpemUpKTsKIH0KIAogdm9pZCBNYXJrU3RhY2tTZWdtZW50QWxsb2NhdG9y
OjpyZWxlYXNlKE1hcmtTdGFja1NlZ21lbnQqIHNlZ21lbnQpCkBAIC04MSwxMyArODEsMTMgQEAg
dm9pZCBNYXJrU3RhY2tTZWdtZW50QWxsb2NhdG9yOjpzaHJpbmtSZXNlcnZlKCkKICAgICB3aGls
ZSAoc2VnbWVudHMpIHsKICAgICAgICAgTWFya1N0YWNrU2VnbWVudCogdG9GcmVlID0gc2VnbWVu
dHM7CiAgICAgICAgIHNlZ21lbnRzID0gc2VnbWVudHMtPm1fcHJldmlvdXM7Ci0gICAgICAgIE9T
QWxsb2NhdG9yOjpkZWNvbW1pdEFuZFJlbGVhc2UodG9GcmVlLCBIZXVyaXN0aWNzOjpnY01hcmtT
dGFja1NlZ21lbnRTaXplKTsKKyAgICAgICAgT1NBbGxvY2F0b3I6OmRlY29tbWl0QW5kUmVsZWFz
ZSh0b0ZyZWUsIE9wdGlvbnM6OmdjTWFya1N0YWNrU2VnbWVudFNpemUpOwogICAgIH0KIH0KIAog
TWFya1N0YWNrQXJyYXk6Ok1hcmtTdGFja0FycmF5KE1hcmtTdGFja1NlZ21lbnRBbGxvY2F0b3Im
IGFsbG9jYXRvcikKICAgICA6IG1fYWxsb2NhdG9yKGFsbG9jYXRvcikKLSAgICAsIG1fc2VnbWVu
dENhcGFjaXR5KE1hcmtTdGFja1NlZ21lbnQ6OmNhcGFjaXR5RnJvbVNpemUoSGV1cmlzdGljczo6
Z2NNYXJrU3RhY2tTZWdtZW50U2l6ZSkpCisgICAgLCBtX3NlZ21lbnRDYXBhY2l0eShNYXJrU3Rh
Y2tTZWdtZW50OjpjYXBhY2l0eUZyb21TaXplKE9wdGlvbnM6OmdjTWFya1N0YWNrU2VnbWVudFNp
emUpKQogICAgICwgbV90b3AoMCkKICAgICAsIG1fbnVtYmVyT2ZQcmV2aW91c1NlZ21lbnRzKDAp
CiB7CkBAIC0xNDUsMTAgKzE0NSwxMCBAQCBib29sIE1hcmtTdGFja0FycmF5Ojpkb25hdGVTb21l
Q2VsbHNUbyhNYXJrU3RhY2tBcnJheSYgb3RoZXIpCiAgICAgb3RoZXIudmFsaWRhdGVQcmV2aW91
cygpOwogICAgICAgICAKICAgICAvLyBGYXN0IGNoZWNrOiBzZWUgaWYgdGhlIG90aGVyIG1hcmsg
c3RhY2sgYWxyZWFkeSBoYXMgZW5vdWdoIHNlZ21lbnRzLgotICAgIGlmIChvdGhlci5tX251bWJl
ck9mUHJldmlvdXNTZWdtZW50cyArIDEgPj0gSGV1cmlzdGljczo6bWF4aW11bU51bWJlck9mU2hh
cmVkU2VnbWVudHMpCisgICAgaWYgKG90aGVyLm1fbnVtYmVyT2ZQcmV2aW91c1NlZ21lbnRzICsg
MSA+PSBPcHRpb25zOjptYXhpbXVtTnVtYmVyT2ZTaGFyZWRTZWdtZW50cykKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAKLSAgICBzaXplX3QgbnVtYmVyT2ZDZWxsc1RvS2VlcCA9IEhl
dXJpc3RpY3M6Om1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVwOworICAgIHNpemVfdCBudW1iZXJP
ZkNlbGxzVG9LZWVwID0gT3B0aW9uczo6bWluaW11bU51bWJlck9mQ2VsbHNUb0tlZXA7CiAgICAg
QVNTRVJUKG1fdG9wID4gbnVtYmVyT2ZDZWxsc1RvS2VlcCB8fCBtX3RvcFNlZ21lbnQtPm1fcHJl
dmlvdXMpOwogICAgICAgICAKICAgICAvLyBMb29rcyBsaWtlIHdlIHNob3VsZCBkb25hdGUhIEdp
dmUgdGhlIG90aGVyIG1hcmsgc3RhY2sgYWxsIG9mIG91cgpAQCAtMjA5LDggKzIwOSw4IEBAIHZv
aWQgTWFya1N0YWNrQXJyYXk6OnN0ZWFsU29tZUNlbGxzRnJvbShNYXJrU3RhY2tBcnJheSYgb3Ro
ZXIpCiAgICAgfQogICAgICAgICAKICAgICAvLyBPdGhlcndpc2UgZHJhaW4gMS9OdGggb2YgdGhl
IHNoYXJlZCBhcnJheSB3aGVyZSBOIGlzIHRoZSBudW1iZXIgb2YKLSAgICAvLyB3b3JrZXJzLCBv
ciBIZXVyaXN0aWNzOjptaW5pbXVtTnVtYmVyT2ZDZWxsc1RvS2VlcCwgd2hpY2hldmVyIGlzIGJp
Z2dlci4KLSAgICBzaXplX3QgbnVtYmVyT2ZDZWxsc1RvU3RlYWwgPSBzdGQ6Om1heCgoc2l6ZV90
KUhldXJpc3RpY3M6Om1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVwLCBvdGhlci5zaXplKCkgLyBI
ZXVyaXN0aWNzOjpudW1iZXJPZkdDTWFya2Vycyk7CisgICAgLy8gd29ya2Vycywgb3IgT3B0aW9u
czo6bWluaW11bU51bWJlck9mQ2VsbHNUb0tlZXAsIHdoaWNoZXZlciBpcyBiaWdnZXIuCisgICAg
c2l6ZV90IG51bWJlck9mQ2VsbHNUb1N0ZWFsID0gc3RkOjptYXgoKHNpemVfdClPcHRpb25zOjpt
aW5pbXVtTnVtYmVyT2ZDZWxsc1RvS2VlcCwgb3RoZXIuc2l6ZSgpIC8gT3B0aW9uczo6bnVtYmVy
T2ZHQ01hcmtlcnMpOwogICAgIHdoaWxlIChudW1iZXJPZkNlbGxzVG9TdGVhbC0tID4gMCAmJiBv
dGhlci5jYW5SZW1vdmVMYXN0KCkpCiAgICAgICAgIGFwcGVuZChvdGhlci5yZW1vdmVMYXN0KCkp
OwogfQpAQCAtMjM4LDcgKzIzOCw3IEBAIE1hcmtTdGFja1RocmVhZFNoYXJlZERhdGE6Ok1hcmtT
dGFja1RocmVhZFNoYXJlZERhdGEoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogICAgICwgbV9w
YXJhbGxlbE1hcmtlcnNTaG91bGRFeGl0KGZhbHNlKQogewogI2lmIEVOQUJMRShQQVJBTExFTF9H
QykKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgSGV1cmlzdGljczo6bnVtYmVyT2ZHQ01h
cmtlcnM7ICsraSkgeworICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBPcHRpb25zOjpudW1i
ZXJPZkdDTWFya2VyczsgKytpKSB7CiAgICAgICAgIG1fbWFya2luZ1RocmVhZHMuYXBwZW5kKGNy
ZWF0ZVRocmVhZChtYXJraW5nVGhyZWFkU3RhcnRGdW5jLCB0aGlzLCAiSmF2YVNjcmlwdENvcmU6
Ok1hcmtpbmciKSk7CiAgICAgICAgIEFTU0VSVChtX21hcmtpbmdUaHJlYWRzLmxhc3QoKSk7CiAg
ICAgfQpAQCAtMzI5LDcgKzMyOSw3IEBAIHZvaWQgU2xvdFZpc2l0b3I6OmRvbmF0ZVNsb3coKQog
ICAgIGlmIChtX3N0YWNrLmRvbmF0ZVNvbWVDZWxsc1RvKG1fc2hhcmVkLm1fc2hhcmVkTWFya1N0
YWNrKSkgewogICAgICAgICAvLyBPbmx5IHdha2UgdXAgdGhyZWFkcyBpZiB0aGUgc2hhcmVkIHN0
YWNrIGlzIGJpZyBlbm91Z2g7IG90aGVyd2lzZSBhc3N1bWUgdGhhdAogICAgICAgICAvLyBpdCdz
IG1vcmUgcHJvZml0YWJsZSBmb3IgdXMgdG8ganVzdCBzY2FuIHRoaXMgb3Vyc2VsdmVzIGxhdGVy
LgotICAgICAgICBpZiAobV9zaGFyZWQubV9zaGFyZWRNYXJrU3RhY2suc2l6ZSgpID49IEhldXJp
c3RpY3M6OnNoYXJlZFN0YWNrV2FrZXVwVGhyZXNob2xkKQorICAgICAgICBpZiAobV9zaGFyZWQu
bV9zaGFyZWRNYXJrU3RhY2suc2l6ZSgpID49IE9wdGlvbnM6OnNoYXJlZFN0YWNrV2FrZXVwVGhy
ZXNob2xkKQogICAgICAgICAgICAgbV9zaGFyZWQubV9tYXJraW5nQ29uZGl0aW9uLmJyb2FkY2Fz
dCgpOwogICAgIH0KIH0KQEAgLTM0MywxMCArMzQzLDEwIEBAIHZvaWQgU2xvdFZpc2l0b3I6OmRy
YWluKCkKICAgICB2b2lkKiBqc1N0cmluZ1ZQdHIgPSBtX2pzU3RyaW5nVlB0cjsKIAogI2lmIEVO
QUJMRShQQVJBTExFTF9HQykKLSAgICBpZiAoSGV1cmlzdGljczo6bnVtYmVyT2ZHQ01hcmtlcnMg
PiAxKSB7CisgICAgaWYgKE9wdGlvbnM6Om51bWJlck9mR0NNYXJrZXJzID4gMSkgewogICAgICAg
ICB3aGlsZSAoIW1fc3RhY2suaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBtX3N0YWNrLnJlZmls
bCgpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBjb3VudGRvd24gPSBIZXVyaXN0aWNzOjpt
aW5pbXVtTnVtYmVyT2ZTY2Fuc0JldHdlZW5SZWJhbGFuY2U7IG1fc3RhY2suY2FuUmVtb3ZlTGFz
dCgpICYmIGNvdW50ZG93bi0tOykKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgY291bnRkb3du
ID0gT3B0aW9uczo6bWluaW11bU51bWJlck9mU2NhbnNCZXR3ZWVuUmViYWxhbmNlOyBtX3N0YWNr
LmNhblJlbW92ZUxhc3QoKSAmJiBjb3VudGRvd24tLTspCiAgICAgICAgICAgICAgICAgdmlzaXRD
aGlsZHJlbigqdGhpcywgbV9zdGFjay5yZW1vdmVMYXN0KCksIGpzRmluYWxPYmplY3RWUHRyLCBq
c0FycmF5VlB0ciwganNTdHJpbmdWUHRyKTsKICAgICAgICAgICAgIGRvbmF0ZUtub3duUGFyYWxs
ZWwoKTsKICAgICAgICAgfQpAQCAtMzY3LDE0ICszNjcsMTQgQEAgdm9pZCBTbG90VmlzaXRvcjo6
ZHJhaW5Gcm9tU2hhcmVkKFNoYXJlZERyYWluTW9kZSBzaGFyZWREcmFpbk1vZGUpCiB7CiAgICAg
QVNTRVJUKG1faXNJblBhcmFsbGVsTW9kZSk7CiAgICAgCi0gICAgQVNTRVJUKEhldXJpc3RpY3M6
Om51bWJlck9mR0NNYXJrZXJzKTsKKyAgICBBU1NFUlQoT3B0aW9uczo6bnVtYmVyT2ZHQ01hcmtl
cnMpOwogICAgIAogICAgIGJvb2wgc2hvdWxkQmVQYXJhbGxlbDsKIAogI2lmIEVOQUJMRShQQVJB
TExFTF9HQykKLSAgICBzaG91bGRCZVBhcmFsbGVsID0gSGV1cmlzdGljczo6bnVtYmVyT2ZHQ01h
cmtlcnMgPiAxOworICAgIHNob3VsZEJlUGFyYWxsZWwgPSBPcHRpb25zOjpudW1iZXJPZkdDTWFy
a2VycyA+IDE7CiAjZWxzZQotICAgIEFTU0VSVChIZXVyaXN0aWNzOjpudW1iZXJPZkdDTWFya2Vy
cyA9PSAxKTsKKyAgICBBU1NFUlQoT3B0aW9uczo6bnVtYmVyT2ZHQ01hcmtlcnMgPT0gMSk7CiAg
ICAgc2hvdWxkQmVQYXJhbGxlbCA9IGZhbHNlOwogI2VuZGlmCiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtTdGFjay5oCmluZGV4IGM1MDgwMTkuLjhjYmRjNjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCkBAIC0yNyw3ICsyNyw3IEBACiAjZGVmaW5lIE1h
cmtTdGFja19oCiAKICNpbmNsdWRlICJIYW5kbGVUeXBlcy5oIgotI2luY2x1ZGUgIkhldXJpc3Rp
Y3MuaCIKKyNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1
ZGUgIlJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiVW5jb25kaXRpb25hbEZpbmFsaXplci5oIgpAQCAt
MjYxLDcgKzI2MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgdm9pZCBt
ZXJnZU9wYXF1ZVJvb3RzSWZQcm9maXRhYmxlKCkKICAgICAgICAgewotICAgICAgICAgICAgaWYg
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29wYXF1ZVJvb3RzLnNpemUoKSkgPCBIZXVyaXN0aWNz
OjpvcGFxdWVSb290TWVyZ2VUaHJlc2hvbGQpCisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG1fb3BhcXVlUm9vdHMuc2l6ZSgpKSA8IE9wdGlvbnM6Om9wYXF1ZVJvb3RNZXJn
ZVRocmVzaG9sZCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBtZXJnZU9w
YXF1ZVJvb3RzKCk7CiAgICAgICAgIH0KQEAgLTMwOSw3ICszMDksNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBpbmxpbmUgdm9pZCBNYXJrU3RhY2s6OmFkZE9wYXF1ZVJvb3Qodm9pZCogcm9vdCkK
ICAgICB7CiAjaWYgRU5BQkxFKFBBUkFMTEVMX0dDKQotICAgICAgICBpZiAoSGV1cmlzdGljczo6
bnVtYmVyT2ZHQ01hcmtlcnMgPT0gMSkgeworICAgICAgICBpZiAoT3B0aW9uczo6bnVtYmVyT2ZH
Q01hcmtlcnMgPT0gMSkgewogICAgICAgICAgICAgLy8gUHV0IGRpcmVjdGx5IGludG8gdGhlIHNo
YXJlZCBIYXNoU2V0LgogICAgICAgICAgICAgbV9zaGFyZWQubV9vcGFxdWVSb290cy5hZGQocm9v
dCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0zNzUsNyArMzc1LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBpbmxpbmUgYm9vbCBNYXJrU3RhY2tBcnJheTo6Y2FuRG9uYXRlU29tZUNlbGxz
KCkKICAgICB7Ci0gICAgICAgIHNpemVfdCBudW1iZXJPZkNlbGxzVG9LZWVwID0gSGV1cmlzdGlj
czo6bWluaW11bU51bWJlck9mQ2VsbHNUb0tlZXA7CisgICAgICAgIHNpemVfdCBudW1iZXJPZkNl
bGxzVG9LZWVwID0gT3B0aW9uczo6bWluaW11bU51bWJlck9mQ2VsbHNUb0tlZXA7CiAgICAgICAg
IC8vIEFub3RoZXIgY2hlY2s6IHNlZSBpZiB3ZSBoYXZlIGVub3VnaCBjZWxscyB0byB3YXJyYW50
IGRvbmF0aW9uLgogICAgICAgICBpZiAobV90b3AgPD0gbnVtYmVyT2ZDZWxsc1RvS2VlcCkgewog
ICAgICAgICAgICAgLy8gVGhpcyBpbmRpY2F0ZXMgdGhhdCB3ZSBtaWdodCBub3Qgd2FudCB0byBk
b25hdGUgYW55dGhpbmc7IGNoZWNrIGlmIHdlIGhhdmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9TbG90VmlzaXRvci5oCmluZGV4IGE0NjE3ODEuLjY0N2IyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkb25hdGUoKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1faXNJblBhcmFsbGVsTW9kZSk7
Ci0gICAgICAgIGlmIChIZXVyaXN0aWNzOjpudW1iZXJPZkdDTWFya2VycyA9PSAxKQorICAgICAg
ICBpZiAoT3B0aW9uczo6bnVtYmVyT2ZHQ01hcmtlcnMgPT0gMSkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgCiAgICAgICAgIGRvbmF0ZUtub3duUGFyYWxsZWwoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAppbmRleCA1NDJiNDg0Li5iZDczY2UwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgSklUOjplbWl0T3B0aW1pemF0aW9uQ2hl
Y2soT3B0aW1pemF0aW9uQ2hlY2tLaW5kIGtpbmQpCiAgICAgaWYgKCFzaG91bGRFbWl0UHJvZmls
aW5nKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBKdW1wIHNraXBPcHRpbWl6ZSA9IGJy
YW5jaEFkZDMyKFNpZ25lZCwgVHJ1c3RlZEltbTMyKGtpbmQgPT0gTG9vcE9wdGltaXphdGlvbkNo
ZWNrID8gSGV1cmlzdGljczo6ZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvckxvb3AgOiBIZXVy
aXN0aWNzOjpleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yUmV0dXJuKSwgQWJzb2x1dGVBZGRy
ZXNzKG1fY29kZUJsb2NrLT5hZGRyZXNzT2ZFeGVjdXRlQ291bnRlcigpKSk7CisgICAgSnVtcCBz
a2lwT3B0aW1pemUgPSBicmFuY2hBZGQzMihTaWduZWQsIFRydXN0ZWRJbW0zMihraW5kID09IExv
b3BPcHRpbWl6YXRpb25DaGVjayA/IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRG
b3JMb29wIDogT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvclJldHVybiksIEFi
c29sdXRlQWRkcmVzcyhtX2NvZGVCbG9jay0+YWRkcmVzc09mRXhlY3V0ZUNvdW50ZXIoKSkpOwog
ICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGtpbmQgPT0gTG9vcE9wdGltaXphdGlvbkNo
ZWNrID8gY3RpX29wdGltaXplX2Zyb21fbG9vcCA6IGN0aV9vcHRpbWl6ZV9mcm9tX3JldCk7CiAg
ICAgaWYgKGtpbmQgPT0gTG9vcE9wdGltaXphdGlvbkNoZWNrKQogICAgICAgICBzdHViQ2FsbC5h
ZGRBcmd1bWVudChJbW0zMihtX2J5dGVjb2RlT2Zmc2V0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmlu
ZGV4IGZjMGM1NjAuLjM2ZDNmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0xMDIsOCArMTAy
LDggQEAgc3RydWN0IFNjcmlwdCB7CiAgICAgfQogfTsKIAotc3RydWN0IE9wdGlvbnMgewotICAg
IE9wdGlvbnMoKQorc3RydWN0IENvbW1hbmRMaW5lIHsKKyAgICBDb21tYW5kTGluZSgpCiAgICAg
ICAgIDogaW50ZXJhY3RpdmUoZmFsc2UpCiAgICAgICAgICwgZHVtcChmYWxzZSkKICAgICB7CkBA
IC01NDgsNyArNTQ4LDcgQEAgc3RhdGljIE5PX1JFVFVSTiB2b2lkIHByaW50VXNhZ2VTdGF0ZW1l
bnQoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBib29sIGhlbHAgPQogICAgIGV4aXQoaGVscCA/
IEVYSVRfU1VDQ0VTUyA6IEVYSVRfRkFJTFVSRSk7CiB9CiAKLXN0YXRpYyB2b2lkIHBhcnNlQXJn
dW1lbnRzKGludCBhcmdjLCBjaGFyKiogYXJndiwgT3B0aW9ucyYgb3B0aW9ucywgSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhKQorc3RhdGljIHZvaWQgcGFyc2VBcmd1bWVudHMoaW50IGFyZ2MsIGNo
YXIqKiBhcmd2LCBDb21tYW5kTGluZSYgb3B0aW9ucywgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
KQogewogICAgIGludCBpID0gMTsKICAgICBmb3IgKDsgaSA8IGFyZ2M7ICsraSkgewpAQCAtNjAy
LDcgKzYwMiw3IEBAIGludCBqc2NtYWluKGludCBhcmdjLCBjaGFyKiogYXJndiwgSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhKQogewogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25s
eSk7CiAKLSAgICBPcHRpb25zIG9wdGlvbnM7CisgICAgQ29tbWFuZExpbmUgb3B0aW9uczsKICAg
ICBwYXJzZUFyZ3VtZW50cyhhcmdjLCBhcmd2LCBvcHRpb25zLCBnbG9iYWxEYXRhKTsKIAogICAg
IEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUoKmdsb2Jh
bERhdGEsIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKCpnbG9iYWxEYXRhLCBqc051bGwo
KSksIG9wdGlvbnMuYXJndW1lbnRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0hldXJpc3RpY3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SGV1cmlzdGljcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3NzNiYzkuLjAw
MDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGV1cmlzdGljcy5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwyMTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSGV1
cmlzdGljcy5oIgotI2luY2x1ZGUgPHd0Zi9QYWdlQmxvY2suaD4KLQotI2luY2x1ZGUgPGxpbWl0
cz4KLQotI2lmIE9TKERBUldJTikgJiYgRU5BQkxFKFBBUkFMTEVMX0dDKQotI2luY2x1ZGUgPHN5
cy9zeXNjdGwuaD4KLSNlbmRpZgotCi0vLyBTZXQgdG8gMSB0byBjb250cm9sIHRoZSBoZXVyaXN0
aWNzIHVzaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcy4KLSNkZWZpbmUgRU5BQkxFX1JVTl9USU1F
X0hFVVJJU1RJQ1MgMAotCi0jaWYgRU5BQkxFKFJVTl9USU1FX0hFVVJJU1RJQ1MpCi0jaW5jbHVk
ZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBIZXVyaXN0aWNzIHsK
LQotdW5zaWduZWQgbWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7
Ci0KLXVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVj
dGlvbkNvdW50OwotdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saW5lQ2Fu
ZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKLQotdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7
Ci0KLWludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcDsK
LWludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXA7
Ci1pbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29u
OwotaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZVNvb247Ci1pbnQzMl90
IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplTmV4dEludm9jYXRpb247Ci0KLWludDMy
X3QgZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvckxvb3A7Ci1pbnQzMl90IGV4ZWN1dGlvbkNv
dW50ZXJJbmNyZW1lbnRGb3JSZXR1cm47Ci0KLXVuc2lnbmVkIGRlc2lyZWRTcGVjdWxhdGl2ZVN1
Y2Nlc3NGYWlsUmF0aW87Ci0KLWRvdWJsZSBsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsK
LWRvdWJsZSBjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZDsKLXVuc2lnbmVkIGxpa2VseVRvVGFr
ZVNsb3dDYXNlTWluaW11bUNvdW50OwotdW5zaWduZWQgY291bGRUYWtlU2xvd0Nhc2VNaW5pbXVt
Q291bnQ7Ci0KLWRvdWJsZSBvc3JFeGl0UHJvbWluZW5jZUZvckZyZXF1ZW50RXhpdFNpdGU7Ci0K
LXVuc2lnbmVkIGxhcmdlRmFpbENvdW50VGhyZXNob2xkQmFzZTsKLXVuc2lnbmVkIGxhcmdlRmFp
bENvdW50VGhyZXNob2xkQmFzZUZvckxvb3A7Ci0KLXVuc2lnbmVkIHJlb3B0aW1pemF0aW9uUmV0
cnlDb3VudGVyTWF4OwotdW5zaWduZWQgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJTdGVwOwot
Ci11bnNpZ25lZCBtaW5pbXVtT3B0aW1pemF0aW9uRGVsYXk7Ci11bnNpZ25lZCBtYXhpbXVtT3B0
aW1pemF0aW9uRGVsYXk7Ci1kb3VibGUgZGVzaXJlZFByb2ZpbGVMaXZlbmVzc1JhdGU7Ci1kb3Vi
bGUgZGVzaXJlZFByb2ZpbGVGdWxsbmVzc1JhdGU7Ci0KLWRvdWJsZSBkb3VibGVWb3RlUmF0aW9G
b3JEb3VibGVGb3JtYXQ7Ci0KLXVuc2lnbmVkIG1pbmltdW1OdW1iZXJPZlNjYW5zQmV0d2VlblJl
YmFsYW5jZTsKLXVuc2lnbmVkIGdjTWFya1N0YWNrU2VnbWVudFNpemU7Ci11bnNpZ25lZCBtaW5p
bXVtTnVtYmVyT2ZDZWxsc1RvS2VlcDsKLXVuc2lnbmVkIG1heGltdW1OdW1iZXJPZlNoYXJlZFNl
Z21lbnRzOwotdW5zaWduZWQgc2hhcmVkU3RhY2tXYWtldXBUaHJlc2hvbGQ7Ci11bnNpZ25lZCBu
dW1iZXJPZkdDTWFya2VyczsKLXVuc2lnbmVkIG9wYXF1ZVJvb3RNZXJnZVRocmVzaG9sZDsKLQot
I2lmIEVOQUJMRShSVU5fVElNRV9IRVVSSVNUSUNTKQotc3RhdGljIGJvb2wgcGFyc2UoY29uc3Qg
Y2hhciogc3RyaW5nLCBpbnQzMl90JiB2YWx1ZSkKLXsKLSAgICByZXR1cm4gc3NjYW5mKHN0cmlu
ZywgIiVkIiwgJnZhbHVlKSA9PSAxOwotfQotCi1zdGF0aWMgYm9vbCBwYXJzZShjb25zdCBjaGFy
KiBzdHJpbmcsIHVuc2lnbmVkJiB2YWx1ZSkKLXsKLSAgICByZXR1cm4gc3NjYW5mKHN0cmluZywg
IiV1IiwgJnZhbHVlKSA9PSAxOwotfQotCi1zdGF0aWMgYm9vbCBwYXJzZShjb25zdCBjaGFyKiBz
dHJpbmcsIGRvdWJsZSYgdmFsdWUpCi17Ci0gICAgcmV0dXJuIHNzY2FuZihzdHJpbmcsICIlbGYi
LCAmdmFsdWUpID09IDE7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci12
b2lkIHNldEhldXJpc3RpYyhUJiB2YXJpYWJsZSwgY29uc3QgY2hhciogbmFtZSwgVSB2YWx1ZSkK
LXsKLSAgICBjb25zdCBjaGFyKiBzdHJpbmdWYWx1ZSA9IGdldGVudihuYW1lKTsKLSAgICBpZiAo
IXN0cmluZ1ZhbHVlKSB7Ci0gICAgICAgIHZhcmlhYmxlID0gc2FmZUNhc3Q8VD4odmFsdWUpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGlmIChwYXJzZShzdHJpbmdWYWx1ZSwg
dmFyaWFibGUpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgZnByaW50ZihzdGRlcnIsICJX
QVJOSU5HOiBmYWlsZWQgdG8gcGFyc2UgJXM9JXNcbiIsIG5hbWUsIHN0cmluZ1ZhbHVlKTsKLSAg
ICB2YXJpYWJsZSA9IHNhZmVDYXN0PFQ+KHZhbHVlKTsKLX0KLQotI2RlZmluZSBTRVQodmFyaWFi
bGUsIHZhbHVlKSBzZXRIZXVyaXN0aWModmFyaWFibGUsICJKU0NfIiAjdmFyaWFibGUsIHZhbHVl
KQotI2Vsc2UKLSNkZWZpbmUgU0VUKHZhcmlhYmxlLCB2YWx1ZSkgdmFyaWFibGUgPSB2YWx1ZQot
I2VuZGlmCi0KLXZvaWQgaW5pdGlhbGl6ZUhldXJpc3RpY3MoKQotewotICAgIFNFVChtYXhpbXVt
T3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCwgMTAwMCk7Ci0gICAgCi0gICAg
U0VUKG1heGltdW1GdW5jdGlvbkZvckNhbGxJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50
LCAxNTApOwotICAgIFNFVChtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRh
dGVJbnN0cnVjdGlvbkNvdW50LCA4MCk7Ci0gICAgCi0gICAgU0VUKG1heGltdW1JbmxpbmluZ0Rl
cHRoLCA1KTsKLQotICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVy
V2FybVVwLCAgICAgLTEwMDApOwotICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRp
bWl6ZUFmdGVyTG9uZ1dhcm1VcCwgLTUwMDApOwotICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFs
dWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbiwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90
Pjo6bWluKCkpOwotICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZVNvb24s
ICAgICAgICAgICAgLTEwMDApOwotICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRp
bWl6ZU5leHRJbnZvY2F0aW9uLCAgMCk7Ci0KLSAgICBTRVQoZXhlY3V0aW9uQ291bnRlckluY3Jl
bWVudEZvckxvb3AsICAgMSk7Ci0gICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JS
ZXR1cm4sIDE1KTsKLQotICAgIFNFVChkZXNpcmVkU3BlY3VsYXRpdmVTdWNjZXNzRmFpbFJhdGlv
LCA2KTsKLSAgICAKLSAgICBTRVQobGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQsICAgIDAu
MTUpOwotICAgIFNFVChjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZCwgICAgICAgMC4wNSk7IC8v
IFNob3VsZG4ndCBiZSB6ZXJvIGJlY2F1c2Ugc29tZSBvcHMgd2lsbCBzcHVyaW91c2x5IHRha2Ug
c2xvdyBjYXNlLCBmb3IgZXhhbXBsZSBmb3IgbGlua2luZyBvciBjYWNoaW5nLgotICAgIFNFVChs
aWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCwgMTAwKTsKLSAgICBTRVQoY291bGRUYWtl
U2xvd0Nhc2VNaW5pbXVtQ291bnQsICAgIDEwKTsKLSAgICAKLSAgICBTRVQob3NyRXhpdFByb21p
bmVuY2VGb3JGcmVxdWVudEV4aXRTaXRlLCAwLjMpOwotCi0gICAgU0VUKGxhcmdlRmFpbENvdW50
VGhyZXNob2xkQmFzZSwgICAgICAgIDIwKTsKLSAgICBTRVQobGFyZ2VGYWlsQ291bnRUaHJlc2hv
bGRCYXNlRm9yTG9vcCwgMSk7Ci0KLSAgICBTRVQocmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJT
dGVwLCAxKTsKLQotICAgIFNFVChtaW5pbXVtT3B0aW1pemF0aW9uRGVsYXksICAgMSk7Ci0gICAg
U0VUKG1heGltdW1PcHRpbWl6YXRpb25EZWxheSwgICA1KTsKLSAgICBTRVQoZGVzaXJlZFByb2Zp
bGVMaXZlbmVzc1JhdGUsIDAuNzUpOwotICAgIFNFVChkZXNpcmVkUHJvZmlsZUZ1bGxuZXNzUmF0
ZSwgMC4zNSk7Ci0gICAgCi0gICAgU0VUKGRvdWJsZVZvdGVSYXRpb0ZvckRvdWJsZUZvcm1hdCwg
Mik7Ci0gICAgCi0gICAgU0VUKG1pbmltdW1OdW1iZXJPZlNjYW5zQmV0d2VlblJlYmFsYW5jZSwg
MTAwMDApOwotICAgIFNFVChnY01hcmtTdGFja1NlZ21lbnRTaXplLCAgICAgICAgICAgICAgIHBh
Z2VTaXplKCkpOwotICAgIFNFVChtaW5pbXVtTnVtYmVyT2ZDZWxsc1RvS2VlcCwgICAgICAgICAg
IDEwKTsKLSAgICBTRVQobWF4aW11bU51bWJlck9mU2hhcmVkU2VnbWVudHMsICAgICAgICAzKTsK
LSAgICBTRVQoc2hhcmVkU3RhY2tXYWtldXBUaHJlc2hvbGQsICAgICAgICAgICAxKTsKLSAgICBT
RVQob3BhcXVlUm9vdE1lcmdlVGhyZXNob2xkLCAgICAgICAgICAgICAxMDAwKTsKLQotICAgIGlu
dCBjcHVzVG9Vc2UgPSAxOwotI2lmIE9TKERBUldJTikgJiYgRU5BQkxFKFBBUkFMTEVMX0dDKQot
ICAgIGludCBuYW1lWzJdOwotICAgIHNpemVfdCB2YWx1ZVNpemUgPSBzaXplb2YoY3B1c1RvVXNl
KTsKLSAgICBuYW1lWzBdID0gQ1RMX0hXOwotICAgIG5hbWVbMV0gPSBIV19BVkFJTENQVTsKLSAg
ICBzeXNjdGwobmFtZSwgMiwgJmNwdXNUb1VzZSwgJnZhbHVlU2l6ZSwgMCwgMCk7Ci0jZW5kaWYK
LSAgICAvLyBXZSBkb24ndCBzY2FsZSBzbyB3ZWxsIGJleW9uZCA0LgotICAgIGlmIChjcHVzVG9V
c2UgPiA0KQotICAgICAgICBjcHVzVG9Vc2UgPSA0OwotICAgIC8vIEJlIHBhcmFub2lkLCBpdCBp
cyB0aGUgT1Mgd2UncmUgZGVhbGluZyB3aXRoLCBhZnRlciBhbGwuCi0gICAgaWYgKGNwdXNUb1Vz
ZSA8IDEpCi0gICAgICAgIGNwdXNUb1VzZSA9IDE7Ci0gICAgCi0gICAgU0VUKG51bWJlck9mR0NN
YXJrZXJzLCBjcHVzVG9Vc2UpOwotCi0gICAgQVNTRVJUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uIDw9IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGlt
aXplQWZ0ZXJMb25nV2FybVVwKTsKLSAgICBBU1NFUlQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
T3B0aW1pemVBZnRlckxvbmdXYXJtVXAgPD0gZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1p
emVBZnRlcldhcm1VcCk7Ci0gICAgQVNTRVJUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGlt
aXplQWZ0ZXJXYXJtVXAgPD0gZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVTb29uKTsK
LSAgICBBU1NFUlQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCA8
IDApOwotICAgIEFTU0VSVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZVNvb24gPD0g
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVOZXh0SW52b2NhdGlvbik7Ci0gICAgCi0g
ICAgLy8gQ29tcHV0ZSB0aGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgcmVvcHRpbWl6YXRpb24gcmV0
cnkgY291bnRlci4gVGhpcyBpcyBzaW1wbHkKLSAgICAvLyB0aGUgbGFyZ2VzdCB2YWx1ZSBhdCB3
aGljaCB3ZSBkb24ndCBvdmVyZmxvdyB0aGUgZXhlY3V0ZSBjb3VudGVyLCB3aGVuIHVzaW5nIGl0
Ci0gICAgLy8gdG8gbGVmdC1zaGlmdCB0aGUgZXhlY3V0aW9uIGNvdW50ZXIgYnkgdGhpcyBhbW91
bnQuIEN1cnJlbnRseSB0aGUgdmFsdWUgZW5kcwotICAgIC8vIHVwIGJlaW5nIDE4LCBzbyB0aGlz
IGxvb3AgaXMgbm90IHNvIHRlcnJpYmxlOyBpdCBwcm9iYWJseSB0YWtlcyB1cCB+MTAwIGN5Y2xl
cwotICAgIC8vIHRvdGFsIG9uIGEgMzItYml0IHByb2Nlc3Nvci4KLSAgICByZW9wdGltaXphdGlv
blJldHJ5Q291bnRlck1heCA9IDA7Ci0gICAgd2hpbGUgKChzdGF0aWNfY2FzdDxpbnQ2NF90Pihl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCkgPDwgKHJlb3B0
aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4ICsgMSkpID49IHN0YXRpY19jYXN0PGludDY0X3Q+KHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKSkKLSAgICAgICAgcmVvcHRpbWl6YXRp
b25SZXRyeUNvdW50ZXJNYXgrKzsKLSAgICAKLSAgICBBU1NFUlQoKHN0YXRpY19jYXN0PGludDY0
X3Q+KGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKSA8PCBy
ZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1heCkgPCAwKTsKLSAgICBBU1NFUlQoKHN0YXRpY19j
YXN0PGludDY0X3Q+KGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2Fy
bVVwKSA8PCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1heCkgPj0gc3RhdGljX2Nhc3Q8aW50
NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpKTsKLX0KLQotfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkhldXJpc3RpY3MKLQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9IZXVyaXN0aWNzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhMjE4ZDAu
LjAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGV1cmlzdGljcy5o
CisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEhldXJpc3RpY3NfaAotI2RlZmluZSBIZXVy
aXN0aWNzX2gKLQotI2luY2x1ZGUgPHN0ZGludC5oPgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIEhldXJpc3RpY3MgewotCi1leHRlcm4gdW5zaWduZWQgbWF4aW11bU9wdGltaXphdGlvbkNh
bmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7Ci0KLWV4dGVybiB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rp
b25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKLWV4dGVybiB1bnNpZ25l
ZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNv
dW50OwotCi1leHRlcm4gdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7IC8vIERlcHRoIG9m
IGlubGluZSBzdGFjaywgc28gMSA9IG5vIGlubGluaW5nLCAyID0gb25lIGxldmVsLCBldGMuCi0K
LWV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJt
VXA7Ci1leHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVy
TG9uZ1dhcm1VcDsKLWV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRP
cHRpbWl6ZUFueXRpbWVTb29uOwotZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9yT3B0aW1pemVTb29uOwotZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
T3B0aW1pemVOZXh0SW52b2NhdGlvbjsKLQotZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRl
ckluY3JlbWVudEZvckxvb3A7Ci1leHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVySW5jcmVt
ZW50Rm9yUmV0dXJuOwotCi1leHRlcm4gdW5zaWduZWQgZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vz
c0ZhaWxSYXRpbzsKLQotZXh0ZXJuIGRvdWJsZSBsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9s
ZDsKLWV4dGVybiBkb3VibGUgY291bGRUYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7Ci1leHRlcm4gdW5z
aWduZWQgbGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQ7Ci1leHRlcm4gdW5zaWduZWQg
Y291bGRUYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQ7Ci0KLWV4dGVybiBkb3VibGUgb3NyRXhpdFBy
b21pbmVuY2VGb3JGcmVxdWVudEV4aXRTaXRlOwotCi1leHRlcm4gdW5zaWduZWQgbGFyZ2VGYWls
Q291bnRUaHJlc2hvbGRCYXNlOwotZXh0ZXJuIHVuc2lnbmVkIGxhcmdlRmFpbENvdW50VGhyZXNo
b2xkQmFzZUZvckxvb3A7Ci0KLWV4dGVybiB1bnNpZ25lZCByZW9wdGltaXphdGlvblJldHJ5Q291
bnRlck1heDsKLWV4dGVybiB1bnNpZ25lZCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlclN0ZXA7
Ci0KLWV4dGVybiB1bnNpZ25lZCBtaW5pbXVtT3B0aW1pemF0aW9uRGVsYXk7Ci1leHRlcm4gdW5z
aWduZWQgbWF4aW11bU9wdGltaXphdGlvbkRlbGF5OwotZXh0ZXJuIGRvdWJsZSBkZXNpcmVkUHJv
ZmlsZUxpdmVuZXNzUmF0ZTsKLWV4dGVybiBkb3VibGUgZGVzaXJlZFByb2ZpbGVGdWxsbmVzc1Jh
dGU7Ci0KLWV4dGVybiBkb3VibGUgZG91YmxlVm90ZVJhdGlvRm9yRG91YmxlRm9ybWF0OwotCi1l
eHRlcm4gdW5zaWduZWQgbWluaW11bU51bWJlck9mU2NhbnNCZXR3ZWVuUmViYWxhbmNlOwotZXh0
ZXJuIHVuc2lnbmVkIGdjTWFya1N0YWNrU2VnbWVudFNpemU7Ci1leHRlcm4gdW5zaWduZWQgbWlu
aW11bU51bWJlck9mQ2VsbHNUb0tlZXA7Ci1leHRlcm4gdW5zaWduZWQgbWF4aW11bU51bWJlck9m
U2hhcmVkU2VnbWVudHM7Ci1leHRlcm4gdW5zaWduZWQgc2hhcmVkU3RhY2tXYWtldXBUaHJlc2hv
bGQ7Ci1leHRlcm4gdW5zaWduZWQgbnVtYmVyT2ZHQ01hcmtlcnM7Ci1leHRlcm4gdW5zaWduZWQg
b3BhcXVlUm9vdE1lcmdlVGhyZXNob2xkOwotCi12b2lkIGluaXRpYWxpemVIZXVyaXN0aWNzKCk7
Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpIZXVyaXN0aWNzCi0KLSNlbmRpZiAvLyBIZXVyaXN0
aWNzX2gKLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlh
bGl6ZVRocmVhZGluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFs
aXplVGhyZWFkaW5nLmNwcAppbmRleCAzYTM3MWY5Li42OTg5NTcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcApAQCAt
MzEsNyArMzEsNyBAQAogCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1
ZGUgIkhlYXAuaCIKLSNpbmNsdWRlICJIZXVyaXN0aWNzLmgiCisjaW5jbHVkZSAiT3B0aW9ucy5o
IgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU0RhdGVNYXRoLmgiCiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIHZvaWQgaW5p
dGlhbGl6ZVRocmVhZGluZ09uY2UoKQogewogICAgIFdURjo6ZG91YmxlX2NvbnZlcnNpb246Omlu
aXRpYWxpemUoKTsKICAgICBXVEY6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICBIZXVyaXN0
aWNzOjppbml0aWFsaXplSGV1cmlzdGljcygpOworICAgIE9wdGlvbnM6OmluaXRpYWxpemVPcHRp
b25zKCk7CiAjaWYgRU5BQkxFKFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQogICAgIFdyaXRlQmFy
cmllckNvdW50ZXJzOjppbml0aWFsaXplKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
NjhkMTBiNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnMuY3BwCkBAIC0wLDAgKzEsMjE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJPcHRp
b25zLmgiCisKKyNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8d3RmL1BhZ2VCbG9jay5oPgor
CisjaWYgT1MoREFSV0lOKSAmJiBFTkFCTEUoUEFSQUxMRUxfR0MpCisjaW5jbHVkZSA8c3lzL3N5
c2N0bC5oPgorI2VuZGlmCisKKy8vIFNldCB0byAxIHRvIGNvbnRyb2wgdGhlIGhldXJpc3RpY3Mg
dXNpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzLgorI2RlZmluZSBFTkFCTEVfUlVOX1RJTUVfSEVV
UklTVElDUyAwCisKKyNpZiBFTkFCTEUoUlVOX1RJTUVfSEVVUklTVElDUykKKyNpbmNsdWRlIDxz
dGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KKyNlbmRpZgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIE9wdGlvbnMgeworCit1bnNp
Z25lZCBtYXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKKwordW5z
aWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291
bnQ7Cit1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJ
bnN0cnVjdGlvbkNvdW50OworCit1bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsKKworaW50
MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOworaW50MzJf
dCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKK2ludDMy
X3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247CitpbnQz
Ml90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbjsKK2ludDMyX3QgZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVOZXh0SW52b2NhdGlvbjsKKworaW50MzJfdCBleGVj
dXRpb25Db3VudGVySW5jcmVtZW50Rm9yTG9vcDsKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlcklu
Y3JlbWVudEZvclJldHVybjsKKwordW5zaWduZWQgZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0Zh
aWxSYXRpbzsKKworZG91YmxlIGxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOworZG91Ymxl
IGNvdWxkVGFrZVNsb3dDYXNlVGhyZXNob2xkOwordW5zaWduZWQgbGlrZWx5VG9UYWtlU2xvd0Nh
c2VNaW5pbXVtQ291bnQ7Cit1bnNpZ25lZCBjb3VsZFRha2VTbG93Q2FzZU1pbmltdW1Db3VudDsK
KworZG91YmxlIG9zckV4aXRQcm9taW5lbmNlRm9yRnJlcXVlbnRFeGl0U2l0ZTsKKwordW5zaWdu
ZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlOwordW5zaWduZWQgbGFyZ2VGYWlsQ291bnRU
aHJlc2hvbGRCYXNlRm9yTG9vcDsKKwordW5zaWduZWQgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50
ZXJNYXg7Cit1bnNpZ25lZCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlclN0ZXA7CisKK3Vuc2ln
bmVkIG1pbmltdW1PcHRpbWl6YXRpb25EZWxheTsKK3Vuc2lnbmVkIG1heGltdW1PcHRpbWl6YXRp
b25EZWxheTsKK2RvdWJsZSBkZXNpcmVkUHJvZmlsZUxpdmVuZXNzUmF0ZTsKK2RvdWJsZSBkZXNp
cmVkUHJvZmlsZUZ1bGxuZXNzUmF0ZTsKKworZG91YmxlIGRvdWJsZVZvdGVSYXRpb0ZvckRvdWJs
ZUZvcm1hdDsKKwordW5zaWduZWQgbWluaW11bU51bWJlck9mU2NhbnNCZXR3ZWVuUmViYWxhbmNl
OwordW5zaWduZWQgZ2NNYXJrU3RhY2tTZWdtZW50U2l6ZTsKK3Vuc2lnbmVkIG1pbmltdW1OdW1i
ZXJPZkNlbGxzVG9LZWVwOwordW5zaWduZWQgbWF4aW11bU51bWJlck9mU2hhcmVkU2VnbWVudHM7
Cit1bnNpZ25lZCBzaGFyZWRTdGFja1dha2V1cFRocmVzaG9sZDsKK3Vuc2lnbmVkIG51bWJlck9m
R0NNYXJrZXJzOwordW5zaWduZWQgb3BhcXVlUm9vdE1lcmdlVGhyZXNob2xkOworCisjaWYgRU5B
QkxFKFJVTl9USU1FX0hFVVJJU1RJQ1MpCitzdGF0aWMgYm9vbCBwYXJzZShjb25zdCBjaGFyKiBz
dHJpbmcsIGludDMyX3QmIHZhbHVlKQoreworICAgIHJldHVybiBzc2NhbmYoc3RyaW5nLCAiJWQi
LCAmdmFsdWUpID09IDE7Cit9CisKK3N0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmlu
ZywgdW5zaWduZWQmIHZhbHVlKQoreworICAgIHJldHVybiBzc2NhbmYoc3RyaW5nLCAiJXUiLCAm
dmFsdWUpID09IDE7Cit9CisKK3N0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywg
ZG91YmxlJiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gc3NjYW5mKHN0cmluZywgIiVsZiIsICZ2YWx1
ZSkgPT0gMTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK3ZvaWQgc2V0
SGV1cmlzdGljKFQmIHZhcmlhYmxlLCBjb25zdCBjaGFyKiBuYW1lLCBVIHZhbHVlKQoreworICAg
IGNvbnN0IGNoYXIqIHN0cmluZ1ZhbHVlID0gZ2V0ZW52KG5hbWUpOworICAgIGlmICghc3RyaW5n
VmFsdWUpIHsKKyAgICAgICAgdmFyaWFibGUgPSBzYWZlQ2FzdDxUPih2YWx1ZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKHBhcnNlKHN0cmluZ1ZhbHVlLCB2YXJpYWJs
ZSkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBmcHJpbnRmKHN0ZGVyciwgIldBUk5JTkc6
IGZhaWxlZCB0byBwYXJzZSAlcz0lc1xuIiwgbmFtZSwgc3RyaW5nVmFsdWUpOworICAgIHZhcmlh
YmxlID0gc2FmZUNhc3Q8VD4odmFsdWUpOworfQorCisjZGVmaW5lIFNFVCh2YXJpYWJsZSwgdmFs
dWUpIHNldEhldXJpc3RpYyh2YXJpYWJsZSwgIkpTQ18iICN2YXJpYWJsZSwgdmFsdWUpCisjZWxz
ZQorI2RlZmluZSBTRVQodmFyaWFibGUsIHZhbHVlKSB2YXJpYWJsZSA9IHZhbHVlCisjZW5kaWYK
Kwordm9pZCBpbml0aWFsaXplT3B0aW9ucygpCit7CisgICAgU0VUKG1heGltdW1PcHRpbWl6YXRp
b25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50LCAxMDAwKTsKKyAgICAKKyAgICBTRVQobWF4aW11
bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQsIDE1MCk7Cisg
ICAgU0VUKG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0
aW9uQ291bnQsIDgwKTsKKyAgICAKKyAgICBTRVQobWF4aW11bUlubGluaW5nRGVwdGgsIDUpOwor
CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAsICAg
ICAtMTAwMCk7CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJM
b25nV2FybVVwLCAtNTAwMCk7CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRP
cHRpbWl6ZUFueXRpbWVTb29uLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSk7
CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbiwgICAgICAgICAg
ICAtMTAwMCk7CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplTmV4dElu
dm9jYXRpb24sICAwKTsKKworICAgIFNFVChleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yTG9v
cCwgICAxKTsKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvclJldHVybiwgMTUp
OworCisgICAgU0VUKGRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW8sIDYpOworICAg
IAorICAgIFNFVChsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZCwgICAgMC4xNSk7CisgICAg
U0VUKGNvdWxkVGFrZVNsb3dDYXNlVGhyZXNob2xkLCAgICAgICAwLjA1KTsgLy8gU2hvdWxkbid0
IGJlIHplcm8gYmVjYXVzZSBzb21lIG9wcyB3aWxsIHNwdXJpb3VzbHkgdGFrZSBzbG93IGNhc2Us
IGZvciBleGFtcGxlIGZvciBsaW5raW5nIG9yIGNhY2hpbmcuCisgICAgU0VUKGxpa2VseVRvVGFr
ZVNsb3dDYXNlTWluaW11bUNvdW50LCAxMDApOworICAgIFNFVChjb3VsZFRha2VTbG93Q2FzZU1p
bmltdW1Db3VudCwgICAgMTApOworICAgIAorICAgIFNFVChvc3JFeGl0UHJvbWluZW5jZUZvckZy
ZXF1ZW50RXhpdFNpdGUsIDAuMyk7CisKKyAgICBTRVQobGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRC
YXNlLCAgICAgICAgMjApOworICAgIFNFVChsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2VGb3JM
b29wLCAxKTsKKworICAgIFNFVChyZW9wdGltaXphdGlvblJldHJ5Q291bnRlclN0ZXAsIDEpOwor
CisgICAgU0VUKG1pbmltdW1PcHRpbWl6YXRpb25EZWxheSwgICAxKTsKKyAgICBTRVQobWF4aW11
bU9wdGltaXphdGlvbkRlbGF5LCAgIDUpOworICAgIFNFVChkZXNpcmVkUHJvZmlsZUxpdmVuZXNz
UmF0ZSwgMC43NSk7CisgICAgU0VUKGRlc2lyZWRQcm9maWxlRnVsbG5lc3NSYXRlLCAwLjM1KTsK
KyAgICAKKyAgICBTRVQoZG91YmxlVm90ZVJhdGlvRm9yRG91YmxlRm9ybWF0LCAyKTsKKyAgICAK
KyAgICBTRVQobWluaW11bU51bWJlck9mU2NhbnNCZXR3ZWVuUmViYWxhbmNlLCAxMDAwMCk7Cisg
ICAgU0VUKGdjTWFya1N0YWNrU2VnbWVudFNpemUsICAgICAgICAgICAgICAgcGFnZVNpemUoKSk7
CisgICAgU0VUKG1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVwLCAgICAgICAgICAgMTApOworICAg
IFNFVChtYXhpbXVtTnVtYmVyT2ZTaGFyZWRTZWdtZW50cywgICAgICAgIDMpOworICAgIFNFVChz
aGFyZWRTdGFja1dha2V1cFRocmVzaG9sZCwgICAgICAgICAgIDEpOworICAgIFNFVChvcGFxdWVS
b290TWVyZ2VUaHJlc2hvbGQsICAgICAgICAgICAgIDEwMDApOworCisgICAgaW50IGNwdXNUb1Vz
ZSA9IDE7CisjaWYgT1MoREFSV0lOKSAmJiBFTkFCTEUoUEFSQUxMRUxfR0MpCisgICAgaW50IG5h
bWVbMl07CisgICAgc2l6ZV90IHZhbHVlU2l6ZSA9IHNpemVvZihjcHVzVG9Vc2UpOworICAgIG5h
bWVbMF0gPSBDVExfSFc7CisgICAgbmFtZVsxXSA9IEhXX0FWQUlMQ1BVOworICAgIHN5c2N0bChu
YW1lLCAyLCAmY3B1c1RvVXNlLCAmdmFsdWVTaXplLCAwLCAwKTsKKyNlbmRpZgorICAgIC8vIFdl
IGRvbid0IHNjYWxlIHNvIHdlbGwgYmV5b25kIDQuCisgICAgaWYgKGNwdXNUb1VzZSA+IDQpCisg
ICAgICAgIGNwdXNUb1VzZSA9IDQ7CisgICAgLy8gQmUgcGFyYW5vaWQsIGl0IGlzIHRoZSBPUyB3
ZSdyZSBkZWFsaW5nIHdpdGgsIGFmdGVyIGFsbC4KKyAgICBpZiAoY3B1c1RvVXNlIDwgMSkKKyAg
ICAgICAgY3B1c1RvVXNlID0gMTsKKyAgICAKKyAgICBTRVQobnVtYmVyT2ZHQ01hcmtlcnMsIGNw
dXNUb1VzZSk7CisKKyAgICBBU1NFUlQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGlt
aXplQW55dGltZVNvb24gPD0gZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxv
bmdXYXJtVXApOworICAgIEFTU0VSVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFm
dGVyTG9uZ1dhcm1VcCA8PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2Fy
bVVwKTsKKyAgICBBU1NFUlQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldh
cm1VcCA8PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZVNvb24pOworICAgIEFTU0VS
VChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwIDwgMCk7CisgICAg
QVNTRVJUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbiA8PSBleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JPcHRpbWl6ZU5leHRJbnZvY2F0aW9uKTsKKyAgICAKKyAgICAvLyBDb21w
dXRlIHRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSByZW9wdGltaXphdGlvbiByZXRyeSBjb3VudGVy
LiBUaGlzIGlzIHNpbXBseQorICAgIC8vIHRoZSBsYXJnZXN0IHZhbHVlIGF0IHdoaWNoIHdlIGRv
bid0IG92ZXJmbG93IHRoZSBleGVjdXRlIGNvdW50ZXIsIHdoZW4gdXNpbmcgaXQKKyAgICAvLyB0
byBsZWZ0LXNoaWZ0IHRoZSBleGVjdXRpb24gY291bnRlciBieSB0aGlzIGFtb3VudC4gQ3VycmVu
dGx5IHRoZSB2YWx1ZSBlbmRzCisgICAgLy8gdXAgYmVpbmcgMTgsIHNvIHRoaXMgbG9vcCBpcyBu
b3Qgc28gdGVycmlibGU7IGl0IHByb2JhYmx5IHRha2VzIHVwIH4xMDAgY3ljbGVzCisgICAgLy8g
dG90YWwgb24gYSAzMi1iaXQgcHJvY2Vzc29yLgorICAgIHJlb3B0aW1pemF0aW9uUmV0cnlDb3Vu
dGVyTWF4ID0gMDsKKyAgICB3aGlsZSAoKHN0YXRpY19jYXN0PGludDY0X3Q+KGV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKSA8PCAocmVvcHRpbWl6YXRpb25S
ZXRyeUNvdW50ZXJNYXggKyAxKSkgPj0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQzMl90Pjo6bWluKCkpKQorICAgICAgICByZW9wdGltaXphdGlvblJldHJ5Q291
bnRlck1heCsrOworICAgIAorICAgIEFTU0VSVCgoc3RhdGljX2Nhc3Q8aW50NjRfdD4oZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApIDw8IHJlb3B0aW1pemF0
aW9uUmV0cnlDb3VudGVyTWF4KSA8IDApOworICAgIEFTU0VSVCgoc3RhdGljX2Nhc3Q8aW50NjRf
dD4oZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApIDw8IHJl
b3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4KSA+PSBzdGF0aWNfY2FzdDxpbnQ2NF90PihzdGQ6
Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSkpOworfQorCit9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6T3B0aW9ucworCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mN2NjNWY0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCkBAIC0wLDAgKzEs
ODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBPcHRpb25zX2gKKyNkZWZpbmUgT3B0aW9uc19oCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4K
KworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBPcHRpb25zIHsKKworZXh0ZXJuIHVuc2lnbmVk
IG1heGltdW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OworCitleHRlcm4g
dW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9u
Q291bnQ7CitleHRlcm4gdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saW5l
Q2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKKworZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1Jbmxp
bmluZ0RlcHRoOyAvLyBEZXB0aCBvZiBpbmxpbmUgc3RhY2ssIHNvIDEgPSBubyBpbmxpbmluZywg
MiA9IG9uZSBsZXZlbCwgZXRjLgorCitleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFs
dWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRl
clZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXA7CitleHRlcm4gaW50MzJfdCBleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbjsKK2V4dGVybiBpbnQzMl90
IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbjsKK2V4dGVybiBpbnQzMl90IGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplTmV4dEludm9jYXRpb247CisKK2V4dGVybiBp
bnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JMb29wOworZXh0ZXJuIGludDMyX3Qg
ZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvclJldHVybjsKKworZXh0ZXJuIHVuc2lnbmVkIGRl
c2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW87CisKK2V4dGVybiBkb3VibGUgbGlrZWx5
VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CitleHRlcm4gZG91YmxlIGNvdWxkVGFrZVNsb3dDYXNl
VGhyZXNob2xkOworZXh0ZXJuIHVuc2lnbmVkIGxpa2VseVRvVGFrZVNsb3dDYXNlTWluaW11bUNv
dW50OworZXh0ZXJuIHVuc2lnbmVkIGNvdWxkVGFrZVNsb3dDYXNlTWluaW11bUNvdW50OworCitl
eHRlcm4gZG91YmxlIG9zckV4aXRQcm9taW5lbmNlRm9yRnJlcXVlbnRFeGl0U2l0ZTsKKworZXh0
ZXJuIHVuc2lnbmVkIGxhcmdlRmFpbENvdW50VGhyZXNob2xkQmFzZTsKK2V4dGVybiB1bnNpZ25l
ZCBsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2VGb3JMb29wOworCitleHRlcm4gdW5zaWduZWQg
cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXg7CitleHRlcm4gdW5zaWduZWQgcmVvcHRpbWl6
YXRpb25SZXRyeUNvdW50ZXJTdGVwOworCitleHRlcm4gdW5zaWduZWQgbWluaW11bU9wdGltaXph
dGlvbkRlbGF5OworZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1PcHRpbWl6YXRpb25EZWxheTsKK2V4
dGVybiBkb3VibGUgZGVzaXJlZFByb2ZpbGVMaXZlbmVzc1JhdGU7CitleHRlcm4gZG91YmxlIGRl
c2lyZWRQcm9maWxlRnVsbG5lc3NSYXRlOworCitleHRlcm4gZG91YmxlIGRvdWJsZVZvdGVSYXRp
b0ZvckRvdWJsZUZvcm1hdDsKKworZXh0ZXJuIHVuc2lnbmVkIG1pbmltdW1OdW1iZXJPZlNjYW5z
QmV0d2VlblJlYmFsYW5jZTsKK2V4dGVybiB1bnNpZ25lZCBnY01hcmtTdGFja1NlZ21lbnRTaXpl
OworZXh0ZXJuIHVuc2lnbmVkIG1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVwOworZXh0ZXJuIHVu
c2lnbmVkIG1heGltdW1OdW1iZXJPZlNoYXJlZFNlZ21lbnRzOworZXh0ZXJuIHVuc2lnbmVkIHNo
YXJlZFN0YWNrV2FrZXVwVGhyZXNob2xkOworZXh0ZXJuIHVuc2lnbmVkIG51bWJlck9mR0NNYXJr
ZXJzOworZXh0ZXJuIHVuc2lnbmVkIG9wYXF1ZVJvb3RNZXJnZVRocmVzaG9sZDsKKwordm9pZCBp
bml0aWFsaXplT3B0aW9ucygpOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6T3B0aW9ucworCisj
ZW5kaWYgLy8gT3B0aW9uc19oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0UmVnRXhwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhwLmNwcAppbmRl
eCA3ZjlmYTdhLi5jZmRkOWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dFJlZ0V4cC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCkBA
IC01Niw4ICs1Niw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIHN0YXRpYyB2b2lkIGNsZWFu
dXBHbG9iYWxEYXRhKEpTR2xvYmFsRGF0YSopOwogCi1zdHJ1Y3QgT3B0aW9ucyB7Ci0gICAgT3B0
aW9ucygpCitzdHJ1Y3QgQ29tbWFuZExpbmUgeworICAgIENvbW1hbmRMaW5lKCkKICAgICAgICAg
OiBpbnRlcmFjdGl2ZShmYWxzZSkKICAgICAgICAgLCB2ZXJib3NlKGZhbHNlKQogICAgIHsKQEAg
LTQ5MCw3ICs0OTAsNyBAQCBzdGF0aWMgTk9fUkVUVVJOIHZvaWQgcHJpbnRVc2FnZVN0YXRlbWVu
dChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGJvb2wgaGVscCA9CiAgICAgZXhpdChoZWxwID8g
RVhJVF9TVUNDRVNTIDogRVhJVF9GQUlMVVJFKTsKIH0KIAotc3RhdGljIHZvaWQgcGFyc2VBcmd1
bWVudHMoaW50IGFyZ2MsIGNoYXIqKiBhcmd2LCBPcHRpb25zJiBvcHRpb25zLCBKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEpCitzdGF0aWMgdm9pZCBwYXJzZUFyZ3VtZW50cyhpbnQgYXJnYywgY2hh
cioqIGFyZ3YsIENvbW1hbmRMaW5lJiBvcHRpb25zLCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEp
CiB7CiAgICAgaW50IGkgPSAxOwogICAgIGZvciAoOyBpIDwgYXJnYzsgKytpKSB7CkBAIC01MTEs
NyArNTExLDcgQEAgaW50IHJlYWxNYWluKGludCBhcmdjLCBjaGFyKiogYXJndiwgSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhKQogewogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25s
eSk7CiAKLSAgICBPcHRpb25zIG9wdGlvbnM7CisgICAgQ29tbWFuZExpbmUgb3B0aW9uczsKICAg
ICBwYXJzZUFyZ3VtZW50cyhhcmdjLCBhcmd2LCBvcHRpb25zLCBnbG9iYWxEYXRhKTsKIAogICAg
IEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUoKmdsb2Jh
bERhdGEsIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKCpnbG9iYWxEYXRhLCBqc051bGwo
KSksIG9wdGlvbnMuYXJndW1lbnRzKTsKLS0gCjEuNy43LjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119211</attachid>
            <date>2011-12-14 05:54:20 -0800</date>
            <delta_ts>2011-12-15 04:01:47 -0800</delta_ts>
            <desc>Andy&apos;s updated patch</desc>
            <filename>0001-foo.patch</filename>
            <type>text/plain</type>
            <size>68760</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBkMjk1NTBjMWIwZmZmZjZmMWM1MDE4ODI0NjRlMDIwMjg4M2NkZjM0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmR5IFdpbmdvIDx3aW5nb0BpZ2FsaWEuY29tPgpEYXRlOiBU
dWUsIDIyIE5vdiAyMDExIDEyOjU3OjE2ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gZm9vCgotLS0K
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgIHwgICAg
MiArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
fCAgIDc4ICsrKysrKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
ICAgICAgICAgIHwgICAgNCArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LmV4cCAgICAgICAgICAgfCAgICA0ICstCiAuLi4vSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qICAgICAgICAgICB8ICAgMTYgKy0KIC4uLi9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qICAgICAgIHwgICAxOCArLQogU291cmNlL0phdmFTY3JpcHRDb3Jl
L1RhcmdldC5wcmkgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCAgICAgICB8ICAgIDggKy0KIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCAgICAgICAgIHwgICAzNiArKy0tCiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCAgICB8ICAgIDIgKy0K
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmggICAgICAgIHwgICAx
NCArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCAgICAgICAgICAg
fCAgICAyICstCiAuLi4vSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0
LmNwcCB8ICAgIDQgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBp
bGVyNjQuY3BwIHwgICAgNCArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJs
ZUFjY2Vzc0RhdGEuaCAgfCAgICAyICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
U3RhY2suY3BwICAgICAgICAgICB8ICAgMzAgKystLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya1N0YWNrLmggICAgICAgICAgICAgfCAgICA4ICstCiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9TbG90VmlzaXRvci5oICAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcCAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAgICAgICAgICAgICAgICAgICAgICAgfCAgICA4ICstCiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmNwcCAgICAgICB8ICAyMTQgLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hldXJpc3Rp
Y3MuaCAgICAgICAgIHwgICA4NCAtLS0tLS0tLQogLi4uL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgfCAgICA0ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmNwcCAgICAgICAgICB8ICAyMTQgKysrKysrKysrKysrKysrKysrKysK
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaCAgICAgICAgICAgIHwgICA4
NCArKysrKysrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwICAgICAgICAg
ICAgICAgfCAgICA4ICstCiAyNiBmaWxlcyBjaGFuZ2VkLCA0NjcgaW5zZXJ0aW9ucygrKSwgMzg3
IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0hldXJpc3RpY3MuY3BwCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSGV1cmlzdGljcy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggNWEzOTNlYS4uYzI2M2IyOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMTM1LDcgKzEzNSw2IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VS
Q0VTCiAgICAgcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0dDQWN0
aXZpdHlDYWxsYmFjay5jcHAKICAgICBydW50aW1lL0dldHRlclNldHRlci5jcHAKLSAgICBydW50
aW1lL0hldXJpc3RpY3MuY3BwCiAgICAgcnVudGltZS9JZGVudGlmaWVyLmNwcAogICAgIHJ1bnRp
bWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKICAgICBydW50aW1lL0ludGVybmFsRnVuY3Rpb24u
Y3BwCkBAIC0xNzIsNiArMTcxLDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBy
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBl
LmNwcAogICAgIHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHAKKyAgICBydW50aW1lL09wdGlvbnMuY3Bw
CiAgICAgcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuY3BwCiAgICAgcnVudGltZS9Qcm9wZXJ0
eU5hbWVBcnJheS5jcHAKICAgICBydW50aW1lL1Byb3BlcnR5U2xvdC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCmluZGV4IDllOGQxYTQuLjc3NTdmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDgxIEBACisyMDExLTEyLTE0ICBBbmR5IFdpbmdvICA8d2luZ29AaWdhbGlh
LmNvbT4KKworICAgICAgICBSZW5hbWUgSlNDOjpIZXVyaXN0aWNzIHRvIEpTQzo6T3B0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI4ODkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUv
T3B0aW9ucy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9I
ZXVyaXN0aWNzLmNwcC4KKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hldXJpc3RpY3MuaC4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzaG91bGRPcHRpbWl6ZU5vdyk6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5
VG9UYWtlU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmNvdWxkVGFrZVNsb3dD
YXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rha2VTcGVjaWFsRmFzdENh
c2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZURlZXBlc3RTbG93Q2Fz
ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlQW55U2xvd0Nhc2UpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjb3VudFJlb3B0aW1pemF0aW9uKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpjb3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpjb3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1V
cCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6b3B0aW1pemVOZXh0SW52b2NhdGlvbik6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZG9udE9wdGltaXplQW55dGltZVNvb24pOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6Om9wdGltaXplU29vbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6bGFyZ2VGYWlsQ291bnRUaHJlc2hvbGQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxh
cmdlRmFpbENvdW50VGhyZXNob2xkRm9yTG9vcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
c2hvdWxkUmVvcHRpbWl6ZU5vdyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2hvdWxkUmVv
cHRpbWl6ZUZyb21Mb29wTm93KToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6Cisg
ICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5oOgorICAgICAgICAoSlNDOjpERkc6Om1pZ2h0
Q29tcGlsZUV2YWwpOgorICAgICAgICAoSlNDOjpERkc6Om1pZ2h0Q29tcGlsZVByb2dyYW0pOgor
ICAgICAgICAoSlNDOjpERkc6Om1pZ2h0Q29tcGlsZUZ1bmN0aW9uRm9yQ2FsbCk6CisgICAgICAg
IChKU0M6OkRGRzo6bWlnaHRDb21waWxlRnVuY3Rpb25Gb3JDb25zdHJ1Y3QpOgorICAgICAgICAo
SlNDOjpERkc6Om1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JDYWxsKToKKyAgICAgICAgKEpTQzo6REZH
OjptaWdodElubGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0KToKKyAgICAgICAgKiBkZmcvREZHT1NS
RXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6Y29uc2lkZXJBZGRpbmdBc0Zy
ZXF1ZW50RXhpdFNpdGVTbG93KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyMzJf
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQp
OgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RGR1Zh
cmlhYmxlQWNjZXNzRGF0YS5oOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlQWNjZXNzRGF0
YTo6c2hvdWxkVXNlRG91YmxlRm9ybWF0QWNjb3JkaW5nVG9Wb3RlKToKKyAgICAgICAgKiBoZWFw
L01hcmtTdGFjay5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtTdGFja1NlZ21lbnRBbGxvY2F0b3I6
OmFsbG9jYXRlKToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNrU2VnbWVudEFsbG9jYXRvcjo6c2hy
aW5rUmVzZXJ2ZSk6CisgICAgICAgIChKU0M6Ok1hcmtTdGFja0FycmF5OjpNYXJrU3RhY2tBcnJh
eSk6CisgICAgICAgIChKU0M6Ok1hcmtTdGFja0FycmF5Ojpkb25hdGVTb21lQ2VsbHNUbyk6Cisg
ICAgICAgIChKU0M6Ok1hcmtTdGFja0FycmF5OjpzdGVhbFNvbWVDZWxsc0Zyb20pOgorICAgICAg
ICAoSlNDOjpNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhOjpNYXJrU3RhY2tUaHJlYWRTaGFyZWRE
YXRhKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmRvbmF0ZVNsb3cpOgorICAgICAgICAo
SlNDOjpTbG90VmlzaXRvcjo6ZHJhaW4pOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6ZHJh
aW5Gcm9tU2hhcmVkKToKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5oOgorICAgICAgICAoSlND
OjpNYXJrU3RhY2s6Om1lcmdlT3BhcXVlUm9vdHNJZlByb2ZpdGFibGUpOgorICAgICAgICAoSlND
OjpNYXJrU3RhY2s6OmFkZE9wYXF1ZVJvb3QpOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2tBcnJh
eTo6Y2FuRG9uYXRlU29tZUNlbGxzKToKKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmg6Cisg
ICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjpkb25hdGUpOgorICAgICAgICAqIGppdC9KSVQuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRPcHRpbWl6YXRpb25DaGVjayk6CisgICAgICAgICog
cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6
ZVRocmVhZGluZ09uY2UpOiBBZGFwdCBjYWxsZXJzIGFuZCBidWlsZCBzeXN0ZW1zLgorCisgICAg
ICAgICogdGVzdFJlZ0V4cC5jcHA6CisgICAgICAgIChDb21tYW5kTGluZTo6Q29tbWFuZExpbmUp
OgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChDb21tYW5kTGluZTo6Q29tbWFuZExpbmUp
OgorICAgICAgICBSZW5hbWUgZnJvbSBPcHRpb25zLCB0byBhdm9pZCBuYW1lIGNvbmZsaWN0Lgor
CiAyMDExLTEyLTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAg
REZHIHNob3VsZCBpbmZlciB3aGVuIGxvY2FsIHZhcmlhYmxlcyBhcmUgZG91YmxlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAzMTVlM2YzLi5mNWVlMDU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzU4LDgg
KzM1OCw2IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dDQWN0aXZpdHlDYWxsYmFjay5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZXR0ZXJTZXR0ZXIuaCBcCi0JU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGV1
cmlzdGljcy5jcHAgXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hldXJpc3RpY3Mu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAgXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAgXApAQCAtNDM5LDYgKzQz
Nyw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcGVyYXRpb25zLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3Bl
cmF0aW9ucy5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcCBc
CisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuY3BwIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAppbmRleCBiN2U5MzY0Li40ZjgzNTJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAgLTEwMCwxMCArMTAwLDEwIEBA
IF9XVEZSZXBvcnRCYWNrdHJhY2UKIF9XVEZSZXBvcnRFcnJvcgogX1dURlJlcG9ydEZhdGFsRXJy
b3IKIF9fWk4xNE9wYXF1ZUpTU3RyaW5nNmNyZWF0ZUVSS04zSlNDN1VTdHJpbmdFCitfX1pOM0pT
QzdPcHRpb25zMTdudW1iZXJPZkdDTWFya2Vyc0UKK19fWk4zSlNDN09wdGlvbnMyNG9wYXF1ZVJv
b3RNZXJnZVRocmVzaG9sZEUKIF9fWk4zSlNDMTBIYW5kbGVIZWFwMTJ3cml0ZUJhcnJpZXJFUE5T
XzdKU1ZhbHVlRVJLUzFfCiBfX1pOM0pTQzEwSGFuZGxlSGVhcDRncm93RXYKLV9fWk4zSlNDMTBI
ZXVyaXN0aWNzMTdudW1iZXJPZkdDTWFya2Vyc0UKLV9fWk4zSlNDMTBIZXVyaXN0aWNzMjRvcGFx
dWVSb290TWVyZ2VUaHJlc2hvbGRFCiBfX1pOM0pTQzEwSWRlbnRpZmllcjExYWRkU2xvd0Nhc2VF
UE5TXzEySlNHbG9iYWxEYXRhRVBOM1dURjEwU3RyaW5nSW1wbEUKIF9fWk4zSlNDMTBJZGVudGlm
aWVyMTFhZGRTbG93Q2FzZUVQTlNfOUV4ZWNTdGF0ZUVQTjNXVEYxMFN0cmluZ0ltcGxFCiBfX1pO
M0pTQzEwSWRlbnRpZmllcjI3Y2hlY2tDdXJyZW50SWRlbnRpZmllclRhYmxlRVBOU18xMkpTR2xv
YmFsRGF0YUUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2oKaW5kZXggYTc5M2RkNy4uODg4MjY5NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKQEAgLTczNCwx
NCArNzM0LDYgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0
aD0iLi5cLi5ccnVudGltZVxIZXVyaXN0aWNzLmNwcCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8
RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxIZXVyaXN0aWNzLmgiCi0JCQkJ
PgotCQkJPC9GaWxlPgotCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVc
SWRlbnRpZmllci5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpAQCAtMTAzOCw2ICsxMDMwLDE0IEBA
CiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHJ1
bnRpbWVcT3B0aW9ucy5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXC4uXHJ1bnRpbWVcT3B0aW9ucy5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxydW50aW1lXFByb3BlcnR5RGVzY3JpcHRv
ci5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBlYTM5NzRiLi5kYjA1OTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA2
LDggKzEwNiw4IEBACiAJCTBGRDgyRTg2MTQxRjNGRjEwMDE3OUM5NCAvKiBQcmVkaWN0ZWRUeXBl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgy
RTg0MTQxRjNGREEwMDE3OUM5NCAvKiBQcmVkaWN0ZWRUeXBlLmNwcCAqLzsgfTsKIAkJMEZEODJF
OTAxNDIwN0E1RjAwMTc5Qzk0IC8qIFZhbHVlUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MkU4RTE0MjA3QTUxMDAxNzlDOTQgLyog
VmFsdWVQcm9maWxlLmNwcCAqLzsgfTsKIAkJMEZEODJGNEIxNDI4MDZBMTAwMTc5Qzk0IC8qIEJp
dFZlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZEODJGNDkxNDI4MDY5MjAwMTc5Qzk0IC8qIEJpdFZlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGRTIyOEVEMTQzNkFCMjcwMDE5NkM0
OCAvKiBIZXVyaXN0aWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkUyMjhFQjE0MzZBQjIzMDAxOTZDNDggLyogSGV1cmlzdGljcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGRTIyOEVFMTQzNkFC
MkMwMDE5NkM0OCAvKiBIZXVyaXN0aWNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTIyOEVBMTQzNkFCMjMwMDE5NkM0OCAvKiBIZXVyaXN0aWNz
LmNwcCAqLzsgfTsKKwkJMEZFMjI4RUQxNDM2QUIyNzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTIyOEVCMTQzNkFC
MjMwMDE5NkM0OCAvKiBPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEZFMjI4RUUxNDM2QUIyQzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFMjI4RUEx
NDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwICovOyB9OwogCQkwRkZGNEJCNDE0Mzk1NUU5
MDA2NTVCQzAgLyogREZHU3RydWN0dXJlU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGNEJCMjE0Mzk1NUU2MDA2NTVCQzAgLyogREZHU3RydWN0
dXJlU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMTQwMDA2NzcxMkE2Rjc4MzAwNjREMTIzIC8qIE9TQWxsb2NhdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAwMDY3NjEyQTZGNzgzMDA2NEQx
MjMgLyogT1NBbGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkxNDAwMDY5MzEyQTZGOUUxMDA2NEQxMjMgLyogT1NBbGxvY2F0b3JQb3Np
eC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAw
MDY5MjEyQTZGOUUxMDA2NEQxMjMgLyogT1NBbGxvY2F0b3JQb3NpeC5jcHAgKi87IH07CkBAIC04
OTAsOCArODkwLDggQEAKIAkJMEZEODJFODQxNDFGM0ZEQTAwMTc5Qzk0IC8qIFByZWRpY3RlZFR5
cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJlZGljdGVkVHlw
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDgyRThFMTQyMDdBNTEwMDE3
OUM5NCAvKiBWYWx1ZVByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVmFsdWVQcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZE
ODJGNDkxNDI4MDY5MjAwMTc5Qzk0IC8qIEJpdFZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBCaXRWZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MEZFMjI4RUExNDM2QUIyMzAwMTk2QzQ4IC8qIEhldXJpc3RpY3MuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGV1cmlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAvKiBIZXVyaXN0aWNzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhldXJpc3RpY3MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEZFMjI4RUExNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT3B0aW9ucy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRp
b25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wdGlvbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGRjRCQjIxNDM5NTVFNjAwNjU1QkMwIC8qIERGR1N0
cnVjdHVyZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdTdHJ1Y3R1
cmVTZXQuaDsgcGF0aCA9IGRmZy9ERkdTdHJ1Y3R1cmVTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMTQwMDA2NzYxMkE2Rjc4MzAwNjREMTIzIC8qIE9TQWxsb2NhdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9TQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTE0MDAwNjkyMTJBNkY5RTEwMDY0RDEyMyAvKiBPU0FsbG9jYXRv
clBvc2l4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9TQWxsb2Nh
dG9yUG9zaXguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjExMSw2ICsyMTEx
LDggQEAKIAkJN0VGNkUwQkIwRUI3QTFFQzAwNzlBRkFGIC8qIHJ1bnRpbWUgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGNzcwMDkxMTQwMkZGMjgwMDc4
RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwICovLAorCQkJCTBGNzcwMDhFMTQwMkZERDYwMDc4
RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuaCAqLywKIAkJCQlCQ0Y2MDUxMTBFMjAzRUY4MDBCOUE2
NEQgLyogQXJnTGlzdC5jcHAgKi8sCiAJCQkJQkNGNjA1MTIwRTIwM0VGODAwQjlBNjREIC8qIEFy
Z0xpc3QuaCAqLywKIAkJCQlCQzI1N0RFNTBFMUY1MUM1MDAxNkI2QzkgLyogQXJndW1lbnRzLmNw
cCAqLywKQEAgLTIxNjYsOCArMjE2OCw2IEBACiAJCQkJRERGN0FCRDMxMUY2MEVEMjAwMTA4RTM2
IC8qIEdDQWN0aXZpdHlDYWxsYmFja0NGLmNwcCAqLywKIAkJCQlCQzAyRTlCODBFMTg0NTQ1MDAw
RjkyOTcgLyogR2V0dGVyU2V0dGVyLmNwcCAqLywKIAkJCQlCQzMzN0JERTBFMUFGMEI4MDA3Njkx
OEEgLyogR2V0dGVyU2V0dGVyLmggKi8sCi0JCQkJMEZFMjI4RUExNDM2QUIyMzAwMTk2QzQ4IC8q
IEhldXJpc3RpY3MuY3BwICovLAotCQkJCTBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAvKiBIZXVy
aXN0aWNzLmggKi8sCiAJCQkJOTMzQTM0OUQwMzhBRTgwRjAwODYzNUNFIC8qIElkZW50aWZpZXIu
Y3BwICovLAogCQkJCTkzM0EzNDlBMDM4QUU3QzYwMDg2MzVDRSAvKiBJZGVudGlmaWVyLmggKi8s
CiAJCQkJRTE3ODYzNkMwRDlCRUVDMzAwRDc0RTc1IC8qIEluaXRpYWxpemVUaHJlYWRpbmcuY3Bw
ICovLApAQCAtMjI0Niw2ICsyMjQ2LDggQEAKIAkJCQlCQzI2ODBDOTBFMTZENEU5MDBBMDZFOTIg
LyogT2JqZWN0UHJvdG90eXBlLmggKi8sCiAJCQkJRjY5MkE4NzcwMjU1NTk3RDAxRkY2MEY3IC8q
IE9wZXJhdGlvbnMuY3BwICovLAogCQkJCUY2OTJBODc4MDI1NTU5N0QwMUZGNjBGNyAvKiBPcGVy
YXRpb25zLmggKi8sCisJCQkJMEZFMjI4RUExNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3Bw
ICovLAorCQkJCTBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmggKi8sCiAJCQkJ
QTdGQjYwQTMxMDNGN0RDMjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5jcHAgKi8sCiAJ
CQkJQTdGQjYwNEIxMDNGNUVBQjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5oICovLAog
CQkJCUJDOTU0MzdDMEVCQTcwRkQwMDcyQjZEMyAvKiBQcm9wZXJ0eU1hcEhhc2hUYWJsZS5oICov
LApAQCAtMjk1NCw3ICsyOTU2LDcgQEAKIAkJCQkwRjYzNkRBMDE0MkQyN0Q3MDBCMkU2NkEgLyog
UGFja2VkSW50VmVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzUyMUUxMzE0MjkxNjlBMDAz
QzhEMEMgLyogQ2FyZFNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZENTJBQUUxNDMwMzVBMDAw
MjZEQzlGIC8qIFVuaW9uRmluZC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZFMjI4RUQxNDM2QUIy
NzAwMTk2QzQ4IC8qIEhldXJpc3RpY3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRTIyOEVEMTQz
NkFCMjcwMDE5NkM0OCAvKiBPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZGNEJCNDE0
Mzk1NUU5MDA2NTVCQzAgLyogREZHU3RydWN0dXJlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NjA0RjUwNTE0M0NFMUMyMDBCMjk1RjUgLyogSlNHbG9iYWxUaGlzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjYyMDE3NDE0M0ZDRDMzMDA2OEI3N0MgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgg
aW4gSGVhZGVycyAqLywKQEAgLTM1MTUsNyArMzUxNyw3IEBACiAJCQkJODZGQTlFOTExNDJCQkIy
RTAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4Njg4
MEYxRjE0MzI4QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk4Njg4MEY0RDE0MzUzQjIxMDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwRkUyMjhFRTE0MzZBQjJDMDAxOTZDNDggLyog
SGV1cmlzdGljcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkUyMjhFRTE0MzZBQjJDMDAxOTZD
NDggLyogT3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjYyMDE3OTE0M0ZDRDQ4MDA2
OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzNDNENB
MDE0NThGNTQ1MDAyNUZCNjIgLyogSlNHbG9iYWxUaGlzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGQzA5NzZFMTQ2OEFCNTEwMENGMjQ0MiAvKiBERkdBc3NlbWJseUhlbHBlcnMuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCmluZGV4IDdhMmY4YjQuLjVhY2MzNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCkBAIC0xNDksNyArMTQ5LDcgQEAgU09VUkNFUyAr
PSBcCiAgICAgcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvR0NB
Y3Rpdml0eUNhbGxiYWNrLmNwcCBcCiAgICAgcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIFwKLSAg
ICBydW50aW1lL0hldXJpc3RpY3MuY3BwIFwKKyAgICBydW50aW1lL09wdGlvbnMuY3BwIFwKICAg
ICBydW50aW1lL0lkZW50aWZpZXIuY3BwIFwKICAgICBydW50aW1lL0luaXRpYWxpemVUaHJlYWRp
bmcuY3BwIFwKICAgICBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggY2JkMzk3MS4uNzRkY2Yx
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAg
LTIyMDMsNyArMjIwMyw3IEBAIGJvb2wgQ29kZUJsb2NrOjpzaG91bGRPcHRpbWl6ZU5vdygpCiAg
ICAgZHVtcFZhbHVlUHJvZmlsZXMoKTsKICNlbmRpZgogCi0gICAgaWYgKG1fb3B0aW1pemF0aW9u
RGVsYXlDb3VudGVyID49IEhldXJpc3RpY3M6Om1heGltdW1PcHRpbWl6YXRpb25EZWxheSkKKyAg
ICBpZiAobV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIgPj0gT3B0aW9uczo6bWF4aW11bU9wdGlt
aXphdGlvbkRlbGF5KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICB1bnNpZ25lZCBu
dW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyA9IDA7CkBAIC0yMjI5LDkgKzIyMjksOSBA
QCBib29sIENvZGVCbG9jazo6c2hvdWxkT3B0aW1pemVOb3coKQogICAgIHByaW50ZigiUHJvZmls
ZSBob3RuZXNzOiAlbGYsICVsZlxuIiwgKGRvdWJsZSludW1iZXJPZkxpdmVOb25Bcmd1bWVudFZh
bHVlUHJvZmlsZXMgLyBudW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcywgKGRvdWJsZSlu
dW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzIC8gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMg
LyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSk7CiAjZW5kaWYKIAotICAgIGlmICgoIW51bWJlck9m
Tm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzIHx8IChkb3VibGUpbnVtYmVyT2ZMaXZlTm9uQXJndW1l
bnRWYWx1ZVByb2ZpbGVzIC8gbnVtYmVyT2ZOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPj0gSGV1
cmlzdGljczo6ZGVzaXJlZFByb2ZpbGVMaXZlbmVzc1JhdGUpCi0gICAgICAgICYmICghbnVtYmVy
T2ZWYWx1ZVByb2ZpbGVzKCkgfHwgKGRvdWJsZSludW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzIC8g
VmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMgLyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSA+
PSBIZXVyaXN0aWNzOjpkZXNpcmVkUHJvZmlsZUZ1bGxuZXNzUmF0ZSkKLSAgICAgICAgJiYgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG1fb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKSArIDEgPj0gSGV1
cmlzdGljczo6bWluaW11bU9wdGltaXphdGlvbkRlbGF5KQorICAgIGlmICgoIW51bWJlck9mTm9u
QXJndW1lbnRWYWx1ZVByb2ZpbGVzIHx8IChkb3VibGUpbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRW
YWx1ZVByb2ZpbGVzIC8gbnVtYmVyT2ZOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPj0gT3B0aW9u
czo6ZGVzaXJlZFByb2ZpbGVMaXZlbmVzc1JhdGUpCisgICAgICAgICYmICghbnVtYmVyT2ZWYWx1
ZVByb2ZpbGVzKCkgfHwgKGRvdWJsZSludW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzIC8gVmFsdWVQ
cm9maWxlOjpudW1iZXJPZkJ1Y2tldHMgLyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSA+PSBPcHRp
b25zOjpkZXNpcmVkUHJvZmlsZUZ1bGxuZXNzUmF0ZSkKKyAgICAgICAgJiYgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG1fb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKSArIDEgPj0gT3B0aW9uczo6bWlu
aW11bU9wdGltaXphdGlvbkRlbGF5KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBB
U1NFUlQobV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIgPCBzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQ4X3Q+OjptYXgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKaW5kZXggNjE1ZjJiNS4uNDM1Yjk1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIkRGR09TUkVudHJ5
LmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdC5oIgogI2luY2x1ZGUgIkV2YWxDb2RlQ2FjaGUuaCIK
LSNpbmNsdWRlICJIZXVyaXN0aWNzLmgiCisjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUg
Ikluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFdyaXRl
QmFycmllci5oIgpAQCAtNjgzLDEzICs2ODMsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IGJvb2wgbGlrZWx5VG9UYWtlU2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7
CiAgICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2Rl
T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwotICAgICAgICAgICAgcmV0dXJuIHZh
bHVlID49IEhldXJpc3RpY3M6Omxpa2VseVRvVGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0
YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49IEhldXJp
c3RpY3M6Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOworICAgICAgICAgICAgcmV0dXJu
IHZhbHVlID49IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0
YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49IE9wdGlv
bnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBib29sIGNvdWxkVGFrZVNsb3dDYXNlKGludCBieXRlY29kZU9mZnNldCkKICAgICAg
ICAgewogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRl
Y29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKLSAgICAgICAgICAgIHJldHVy
biB2YWx1ZSA+PSBIZXVyaXN0aWNzOjpjb3VsZFRha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBz
dGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBIZXVy
aXN0aWNzOjpjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZDsKKyAgICAgICAgICAgIHJldHVybiB2
YWx1ZSA+PSBPcHRpb25zOjpjb3VsZFRha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNf
Y2FzdDxkb3VibGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25zOjpj
b3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
UmFyZUNhc2VQcm9maWxlKiBhZGRTcGVjaWFsRmFzdENhc2VQcm9maWxlKGludCBieXRlY29kZU9m
ZnNldCkKQEAgLTcwNyw3ICs3MDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBs
aWtlbHlUb1Rha2VTcGVjaWFsRmFzdENhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7
CiAgICAgICAgICAgICB1bnNpZ25lZCBzcGVjaWFsRmFzdENhc2VDb3VudCA9IHNwZWNpYWxGYXN0
Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsK
LSAgICAgICAgICAgIHJldHVybiBzcGVjaWFsRmFzdENhc2VDb3VudCA+PSBIZXVyaXN0aWNzOjps
aWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+KHNw
ZWNpYWxGYXN0Q2FzZUNvdW50KSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBIZXVyaXN0aWNz
OjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKKyAgICAgICAgICAgIHJldHVybiBzcGVj
aWFsRmFzdENhc2VDb3VudCA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1D
b3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+KHNwZWNpYWxGYXN0Q2FzZUNvdW50KSAvIG1fZXhl
Y3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9s
ZDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VEZWVwZXN0
U2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQpAQCAtNzE1LDcgKzcxNSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgdW5zaWduZWQgc2xvd0Nhc2VDb3VudCA9IHJhcmVDYXNlUHJv
ZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAg
ICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9m
aWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAg
ICAgICB1bnNpZ25lZCB2YWx1ZSA9IHNsb3dDYXNlQ291bnQgLSBzcGVjaWFsRmFzdENhc2VDb3Vu
dDsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+PSBIZXVyaXN0aWNzOjpsaWtlbHlUb1Rha2VT
bG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAvIG1fZXhl
Y3V0aW9uRW50cnlDb3VudCA+PSBIZXVyaXN0aWNzOjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVz
aG9sZDsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VT
bG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAvIG1fZXhl
Y3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9s
ZDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VBbnlTbG93
Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCkBAIC03MjMsNyArNzIzLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICB1bnNpZ25lZCBzbG93Q2FzZUNvdW50ID0gcmFyZUNhc2VQcm9maWxl
Rm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAg
ICB1bnNpZ25lZCBzcGVjaWFsRmFzdENhc2VDb3VudCA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVG
b3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAg
IHVuc2lnbmVkIHZhbHVlID0gc2xvd0Nhc2VDb3VudCArIHNwZWNpYWxGYXN0Q2FzZUNvdW50Owot
ICAgICAgICAgICAgcmV0dXJuIHZhbHVlID49IEhldXJpc3RpY3M6Omxpa2VseVRvVGFrZVNsb3dD
YXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpIC8gbV9leGVjdXRp
b25FbnRyeUNvdW50ID49IEhldXJpc3RpY3M6Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xk
OworICAgICAgICAgICAgcmV0dXJuIHZhbHVlID49IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dD
YXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpIC8gbV9leGVjdXRp
b25FbnRyeUNvdW50ID49IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCBleGVjdXRpb25FbnRyeUNvdW50
KCkgY29uc3QgeyByZXR1cm4gbV9leGVjdXRpb25FbnRyeUNvdW50OyB9CkBAIC05MzMsMjUgKzkz
MywyNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gdG8gYXZvaWQgdGhyYXNoaW5nLgog
ICAgICAgICB1bnNpZ25lZCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpIGNvbnN0CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyIDw9
IEhldXJpc3RpY3M6OnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4KTsKKyAgICAgICAgICAg
IEFTU0VSVChtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyIDw9IE9wdGlvbnM6OnJlb3B0aW1p
emF0aW9uUmV0cnlDb3VudGVyTWF4KTsKICAgICAgICAgICAgIHJldHVybiBtX3Jlb3B0aW1pemF0
aW9uUmV0cnlDb3VudGVyOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB2b2lkIGNvdW50
UmVvcHRpbWl6YXRpb24oKQogICAgICAgICB7CiAgICAgICAgICAgICBtX3Jlb3B0aW1pemF0aW9u
UmV0cnlDb3VudGVyKys7Ci0gICAgICAgICAgICBpZiAobV9yZW9wdGltaXphdGlvblJldHJ5Q291
bnRlciA+IEhldXJpc3RpY3M6OnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4KQotICAgICAg
ICAgICAgICAgIG1fcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSBIZXVyaXN0aWNzOjpyZW9w
dGltaXphdGlvblJldHJ5Q291bnRlck1heDsKKyAgICAgICAgICAgIGlmIChtX3Jlb3B0aW1pemF0
aW9uUmV0cnlDb3VudGVyID4gT3B0aW9uczo6cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXgp
CisgICAgICAgICAgICAgICAgbV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA9IE9wdGlvbnM6
OnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4OwogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICBpbnQzMl90IGNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAoKQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gSGV1cmlzdGljczo6ZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9yT3B0aW1pemVBZnRlcldhcm1VcCA8PCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpOwor
ICAgICAgICAgICAgcmV0dXJuIE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGlt
aXplQWZ0ZXJXYXJtVXAgPDwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKTsKICAgICAgICAg
fQogICAgICAgICAKICAgICAgICAgaW50MzJfdCBjb3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVy
TG9uZ1dhcm1VcCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBIZXVyaXN0aWNzOjpl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCA8PCByZW9wdGlt
aXphdGlvblJldHJ5Q291bnRlcigpOworICAgICAgICAgICAgcmV0dXJuIE9wdGlvbnM6OmV4ZWN1
dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwIDw8IHJlb3B0aW1pemF0
aW9uUmV0cnlDb3VudGVyKCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGludDMyX3Qq
IGFkZHJlc3NPZkV4ZWN1dGVDb3VudGVyKCkKQEAgLTk3MCw3ICs5NzAsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgLy8gZXhwZW5zaXZlIHRoYW4gZXhlY3V0aW5nIGJhc2VsaW5lIGNvZGUu
CiAgICAgICAgIHZvaWQgb3B0aW1pemVOZXh0SW52b2NhdGlvbigpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIG1fZXhlY3V0ZUNvdW50ZXIgPSBIZXVyaXN0aWNzOjpleGVjdXRpb25Db3VudGVyVmFs
dWVGb3JPcHRpbWl6ZU5leHRJbnZvY2F0aW9uOworICAgICAgICAgICAgbV9leGVjdXRlQ291bnRl
ciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplTmV4dEludm9jYXRp
b247CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIENhbGwgdGhpcyB0byBwcmV2ZW50
IG9wdGltaXphdGlvbiBmcm9tIGhhcHBlbmluZyBhZ2Fpbi4gTm90ZSB0aGF0CkBAIC05ODAsNyAr
OTgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIHRoZSBmdXR1cmUgYXMgd2VsbC4K
ICAgICAgICAgdm9pZCBkb250T3B0aW1pemVBbnl0aW1lU29vbigpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIG1fZXhlY3V0ZUNvdW50ZXIgPSBIZXVyaXN0aWNzOjpleGVjdXRpb25Db3VudGVyVmFs
dWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbjsKKyAgICAgICAgICAgIG1fZXhlY3V0ZUNvdW50
ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1l
U29vbjsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gQ2FsbCB0aGlzIHRvIHJlaW5p
dGlhbGl6ZSB0aGUgY291bnRlciB0byBpdHMgc3RhcnRpbmcgc3RhdGUsCkBAIC0xMDIxLDcgKzEw
MjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gaW4gdGhlIGJhc2VsaW5lIGNvZGUu
CiAgICAgICAgIHZvaWQgb3B0aW1pemVTb29uKCkKICAgICAgICAgewotICAgICAgICAgICAgbV9l
eGVjdXRlQ291bnRlciA9IEhldXJpc3RpY3M6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGlt
aXplU29vbiA8PCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpOworICAgICAgICAgICAgbV9l
eGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXpl
U29vbiA8PCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpOwogICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICAvLyBUaGUgc3BlY3VsYXRpdmUgSklUIHRyYWNrcyBpdHMgc3VjY2VzcyByYXRl
LCBzbyB0aGF0IHdlIGNhbgpAQCAtMTA1NSwxNyArMTA1NSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIC8vIFRoZSBudW1iZXIgb2YgZmFpbHVyZXMgdGhh
dCB0cmlnZ2VycyB0aGUgdXNlIG9mIHRoZSByYXRpby4KLSAgICAgICAgdW5zaWduZWQgbGFyZ2VG
YWlsQ291bnRUaHJlc2hvbGQoKSB7IHJldHVybiBIZXVyaXN0aWNzOjpsYXJnZUZhaWxDb3VudFRo
cmVzaG9sZEJhc2UgPDwgYmFzZWxpbmVWZXJzaW9uKCktPnJlb3B0aW1pemF0aW9uUmV0cnlDb3Vu
dGVyKCk7IH0KLSAgICAgICAgdW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRGb3JMb29w
KCkgeyByZXR1cm4gSGV1cmlzdGljczo6bGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlRm9yTG9v
cCA8PCBiYXNlbGluZVZlcnNpb24oKS0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKTsgfQor
ICAgICAgICB1bnNpZ25lZCBsYXJnZUZhaWxDb3VudFRocmVzaG9sZCgpIHsgcmV0dXJuIE9wdGlv
bnM6OmxhcmdlRmFpbENvdW50VGhyZXNob2xkQmFzZSA8PCBiYXNlbGluZVZlcnNpb24oKS0+cmVv
cHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKTsgfQorICAgICAgICB1bnNpZ25lZCBsYXJnZUZhaWxD
b3VudFRocmVzaG9sZEZvckxvb3AoKSB7IHJldHVybiBPcHRpb25zOjpsYXJnZUZhaWxDb3VudFRo
cmVzaG9sZEJhc2VGb3JMb29wIDw8IGJhc2VsaW5lVmVyc2lvbigpLT5yZW9wdGltaXphdGlvblJl
dHJ5Q291bnRlcigpOyB9CiAKICAgICAgICAgYm9vbCBzaG91bGRSZW9wdGltaXplTm93KCkKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEhldXJpc3RpY3M6OmRlc2lyZWRTcGVjdWxhdGl2
ZVN1Y2Nlc3NGYWlsUmF0aW8gKiBzcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkgPj0gc3BlY3VsYXRp
dmVTdWNjZXNzQ291bnRlcigpICYmIHNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSA+PSBsYXJnZUZh
aWxDb3VudFRocmVzaG9sZCgpOworICAgICAgICAgICAgcmV0dXJuIE9wdGlvbnM6OmRlc2lyZWRT
cGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW8gKiBzcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkgPj0g
c3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigpICYmIHNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSA+
PSBsYXJnZUZhaWxDb3VudFRocmVzaG9sZCgpOwogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBz
aG91bGRSZW9wdGltaXplRnJvbUxvb3BOb3coKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gSGV1cmlzdGljczo6ZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbyAqIHNwZWN1
bGF0aXZlRmFpbENvdW50ZXIoKSA+PSBzcGVjdWxhdGl2ZVN1Y2Nlc3NDb3VudGVyKCkgJiYgc3Bl
Y3VsYXRpdmVGYWlsQ291bnRlcigpID49IGxhcmdlRmFpbENvdW50VGhyZXNob2xkRm9yTG9vcCgp
OworICAgICAgICAgICAgcmV0dXJuIE9wdGlvbnM6OmRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NG
YWlsUmF0aW8gKiBzcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkgPj0gc3BlY3VsYXRpdmVTdWNjZXNz
Q291bnRlcigpICYmIHNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSA+PSBsYXJnZUZhaWxDb3VudFRo
cmVzaG9sZEZvckxvb3AoKTsKICAgICAgICAgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggZDIzMWFkNi4uMTFhOGUw
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKQEAgLTk3OSw3ICs5NzksNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmlu
Zyhib29sIHVzZXNSZXN1bHQsIGludCBjYWxsVGFyZ2V0LCBOb2RlSW5kZXggYwogICAgIHVuc2ln
bmVkIGRlcHRoID0gMDsKICAgICBmb3IgKElubGluZVN0YWNrRW50cnkqIGVudHJ5ID0gbV9pbmxp
bmVTdGFja1RvcDsgZW50cnk7IGVudHJ5ID0gZW50cnktPm1fY2FsbGVyKSB7CiAgICAgICAgICsr
ZGVwdGg7Ci0gICAgICAgIGlmIChkZXB0aCA+PSBIZXVyaXN0aWNzOjptYXhpbXVtSW5saW5pbmdE
ZXB0aCkKKyAgICAgICAgaWYgKGRlcHRoID49IE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ0RlcHRo
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBEZXB0aCBleGNlZWRlZC4KICAgICAgICAg
CiAgICAgICAgIGlmIChlbnRyeS0+ZXhlY3V0YWJsZSgpID09IGV4ZWN1dGFibGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAppbmRleCAwZjcwYWE0Li4yNjUz
YzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKQEAg
LTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJERkdOb2Rl
LmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgotI2luY2x1ZGUgIkhldXJpc3RpY3MuaCIKKyNp
bmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlIDx3
dGYvUGxhdGZvcm0uaD4KIApAQCAtNDAsMjggKzQwLDI4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKIC8vIGNoZWNrIG9wY29kZXMuCiBpbmxpbmUgYm9vbCBtaWdodENvbXBpbGVF
dmFsKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIHJldHVybiBjb2RlQmxvY2stPmluc3Ry
dWN0aW9uQ291bnQoKSA8PSBIZXVyaXN0aWNzOjptYXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRl
SW5zdHJ1Y3Rpb25Db3VudDsKKyAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50
KCkgPD0gT3B0aW9uczo6bWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291
bnQ7CiB9CiBpbmxpbmUgYm9vbCBtaWdodENvbXBpbGVQcm9ncmFtKENvZGVCbG9jayogY29kZUJs
b2NrKQogewotICAgIHJldHVybiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBIZXVy
aXN0aWNzOjptYXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKKyAg
ICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9uczo6bWF4aW11
bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CiB9CiBpbmxpbmUgYm9vbCBt
aWdodENvbXBpbGVGdW5jdGlvbkZvckNhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAg
cmV0dXJuIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpIDw9IEhldXJpc3RpY3M6Om1heGlt
dW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OworICAgIHJldHVybiBjb2Rl
QmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBPcHRpb25zOjptYXhpbXVtT3B0aW1pemF0aW9u
Q2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKIH0KIGlubGluZSBib29sIG1pZ2h0Q29tcGlsZUZ1
bmN0aW9uRm9yQ29uc3RydWN0KENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIHJldHVybiBj
b2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBIZXVyaXN0aWNzOjptYXhpbXVtT3B0aW1p
emF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKKyAgICByZXR1cm4gY29kZUJsb2NrLT5p
bnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9uczo6bWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0
ZUluc3RydWN0aW9uQ291bnQ7CiB9CiAKIGlubGluZSBib29sIG1pZ2h0SW5saW5lRnVuY3Rpb25G
b3JDYWxsKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIHJldHVybiBjb2RlQmxvY2stPmlu
c3RydWN0aW9uQ291bnQoKSA8PSBIZXVyaXN0aWNzOjptYXhpbXVtRnVuY3Rpb25Gb3JDYWxsSW5s
aW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKKyAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0
cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNh
bmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CiB9CiBpbmxpbmUgYm9vbCBtaWdodElubGluZUZ1bmN0
aW9uRm9yQ29uc3RydWN0KENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIHJldHVybiBjb2Rl
QmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBIZXVyaXN0aWNzOjptYXhpbXVtRnVuY3Rpb25G
b3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OworICAgIHJldHVybiBj
b2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBPcHRpb25zOjptYXhpbXVtRnVuY3Rpb25G
b3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OwogfQogCiAvLyBPcGNv
ZGUgY2hlY2tpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAppbmRl
eCAyY2EyYzE4Li43YjE5NDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBPU1JFeGl0OjpkdW1wKEZJTEUqIG91dCkgY29u
c3QKIAogYm9vbCBPU1JFeGl0Ojpjb25zaWRlckFkZGluZ0FzRnJlcXVlbnRFeGl0U2l0ZVNsb3co
Q29kZUJsb2NrKiBkZmdDb2RlQmxvY2ssIENvZGVCbG9jayogcHJvZmlsZWRDb2RlQmxvY2spCiB7
Ci0gICAgaWYgKHN0YXRpY19jYXN0PGRvdWJsZT4obV9jb3VudCkgLyBkZmdDb2RlQmxvY2stPnNw
ZWN1bGF0aXZlRmFpbENvdW50ZXIoKSA8PSBIZXVyaXN0aWNzOjpvc3JFeGl0UHJvbWluZW5jZUZv
ckZyZXF1ZW50RXhpdFNpdGUpCisgICAgaWYgKHN0YXRpY19jYXN0PGRvdWJsZT4obV9jb3VudCkg
LyBkZmdDb2RlQmxvY2stPnNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSA8PSBPcHRpb25zOjpvc3JF
eGl0UHJvbWluZW5jZUZvckZyZXF1ZW50RXhpdFNpdGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAKICAgICByZXR1cm4gQXNzZW1ibHlIZWxwZXJzOjpiYXNlbGluZUNvZGVCbG9ja0Zvck9y
aWdpbkFuZEJhc2VsaW5lQ29kZUJsb2NrKG1fY29kZU9yaWdpbiwgcHJvZmlsZWRDb2RlQmxvY2sp
LT5hZGRGcmVxdWVudEV4aXRTaXRlKEZyZXF1ZW50RXhpdFNpdGUobV9jb2RlT3JpZ2luLmJ5dGVj
b2RlSW5kZXgsIG1fa2luZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAppbmRleCA1OGE1ZjIyLi42MTIyZjIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMy
XzY0LmNwcApAQCAtNTE2LDEyICs1MTYsMTIgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBp
bGVFeGl0KGNvbnN0IE9TUkV4aXQmIGV4aXQsIFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY28KICAg
ICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihtX2ppdC5iYXNlbGlu
ZUNvZGVCbG9jaygpKSwgR1BSSW5mbzo6cmVnVDApOwogICAgIAogICAgIEFzc2VtYmx5SGVscGVy
czo6SnVtcCBmZXdGYWlscyA9IG1faml0LmJyYW5jaDMyKEFzc2VtYmx5SGVscGVyczo6QmVsb3dP
ckVxdWFsLCBHUFJJbmZvOjpyZWdUMiwgQXNzZW1ibHlIZWxwZXJzOjpJbW0zMihtX2ppdC5jb2Rl
QmxvY2soKS0+bGFyZ2VGYWlsQ291bnRUaHJlc2hvbGQoKSkpOwotICAgIG1faml0Lm11bDMyKEFz
c2VtYmx5SGVscGVyczo6SW1tMzIoSGV1cmlzdGljczo6ZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vz
c0ZhaWxSYXRpbyksIEdQUkluZm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUMik7CisgICAgbV9qaXQu
bXVsMzIoQXNzZW1ibHlIZWxwZXJzOjpJbW0zMihPcHRpb25zOjpkZXNpcmVkU3BlY3VsYXRpdmVT
dWNjZXNzRmFpbFJhdGlvKSwgR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OnJlZ1QyKTsKICAgICAK
ICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgbG93RmFpbFJhdGUgPSBtX2ppdC5icmFuY2gzMihB
c3NlbWJseUhlbHBlcnM6OkJlbG93T3JFcXVhbCwgR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OnJl
Z1QxKTsKICAgICAKICAgICAvLyBSZW9wdGltaXplIGFzIHNvb24gYXMgcG9zc2libGUuCi0gICAg
bV9qaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OkltbTMyKEhldXJpc3RpY3M6OmV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvck9wdGltaXplTmV4dEludm9jYXRpb24pLCBBc3NlbWJseUhlbHBlcnM6
OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZFeGVjdXRlQ291bnRl
cigpKSk7CisgICAgbV9qaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OkltbTMyKE9wdGlvbnM6
OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplTmV4dEludm9jYXRpb24pLCBBc3NlbWJs
eUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZFeGVj
dXRlQ291bnRlcigpKSk7CiAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIGRvbmVBZGp1c3Rpbmcg
PSBtX2ppdC5qdW1wKCk7CiAgICAgCiAgICAgZmV3RmFpbHMubGluaygmbV9qaXQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAppbmRl
eCBjOTY1NGM1Li4yNmUyYjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlcjY0LmNwcApAQCAtNTQ0LDEyICs1NDQsMTIgQEAgdm9pZCBPU1JF
eGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IE9TUkV4aXQmIGV4aXQsIFNwZWN1bGF0aW9u
UmVjb3ZlcnkqIHJlY28KICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bVB0cihtX2ppdC5iYXNlbGluZUNvZGVCbG9jaygpKSwgR1BSSW5mbzo6cmVnVDApOwogICAgIAog
ICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCBmZXdGYWlscyA9IG1faml0LmJyYW5jaDMyKEFzc2Vt
Ymx5SGVscGVyczo6QmVsb3dPckVxdWFsLCBHUFJJbmZvOjpyZWdUMiwgQXNzZW1ibHlIZWxwZXJz
OjpJbW0zMihtX2ppdC5jb2RlQmxvY2soKS0+bGFyZ2VGYWlsQ291bnRUaHJlc2hvbGQoKSkpOwot
ICAgIG1faml0Lm11bDMyKEFzc2VtYmx5SGVscGVyczo6SW1tMzIoSGV1cmlzdGljczo6ZGVzaXJl
ZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbyksIEdQUkluZm86OnJlZ1QyLCBHUFJJbmZvOjpy
ZWdUMik7CisgICAgbV9qaXQubXVsMzIoQXNzZW1ibHlIZWxwZXJzOjpJbW0zMihPcHRpb25zOjpk
ZXNpcmVkU3BlY3VsYXRpdmVTdWNjZXNzRmFpbFJhdGlvKSwgR1BSSW5mbzo6cmVnVDIsIEdQUklu
Zm86OnJlZ1QyKTsKICAgICAKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgbG93RmFpbFJhdGUg
PSBtX2ppdC5icmFuY2gzMihBc3NlbWJseUhlbHBlcnM6OkJlbG93T3JFcXVhbCwgR1BSSW5mbzo6
cmVnVDIsIEdQUkluZm86OnJlZ1QxKTsKICAgICAKICAgICAvLyBSZW9wdGltaXplIGFzIHNvb24g
YXMgcG9zc2libGUuCi0gICAgbV9qaXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OkltbTMyKEhl
dXJpc3RpY3M6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplTmV4dEludm9jYXRpb24p
LCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6b2Zm
c2V0T2ZFeGVjdXRlQ291bnRlcigpKSk7CisgICAgbV9qaXQuc3RvcmUzMihBc3NlbWJseUhlbHBl
cnM6OkltbTMyKE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplTmV4dElu
dm9jYXRpb24pLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVC
bG9jazo6b2Zmc2V0T2ZFeGVjdXRlQ291bnRlcigpKSk7CiAgICAgQXNzZW1ibHlIZWxwZXJzOjpK
dW1wIGRvbmVBZGp1c3RpbmcgPSBtX2ppdC5qdW1wKCk7CiAgICAgCiAgICAgZmV3RmFpbHMubGlu
aygmbV9qaXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJp
YWJsZUFjY2Vzc0RhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVB
Y2Nlc3NEYXRhLmgKaW5kZXggYTA2NDRlZi4uYjU5OWYwYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oCkBAIC05Nyw3ICs5Nyw3IEBA
IHB1YmxpYzoKICAgICBib29sIHNob3VsZFVzZURvdWJsZUZvcm1hdEFjY29yZGluZ1RvVm90ZSgp
CiAgICAgewogICAgICAgICAvLyBGSVhNRTogbWFrZSB0aGlzIHdvcmsgZm9yIGFyZ3VtZW50cy4K
LSAgICAgICAgcmV0dXJuICFvcGVyYW5kSXNBcmd1bWVudChvcGVyYW5kKCkpICYmICgoaXNOdW1i
ZXJQcmVkaWN0aW9uKHByZWRpY3Rpb24oKSkgJiYgZG91YmxlVm90ZVJhdGlvKCkgPj0gSGV1cmlz
dGljczo6ZG91YmxlVm90ZVJhdGlvRm9yRG91YmxlRm9ybWF0KSB8fCBpc0RvdWJsZVByZWRpY3Rp
b24ocHJlZGljdGlvbigpKSk7CisgICAgICAgIHJldHVybiAhb3BlcmFuZElzQXJndW1lbnQob3Bl
cmFuZCgpKSAmJiAoKGlzTnVtYmVyUHJlZGljdGlvbihwcmVkaWN0aW9uKCkpICYmIGRvdWJsZVZv
dGVSYXRpbygpID49IE9wdGlvbnM6OmRvdWJsZVZvdGVSYXRpb0ZvckRvdWJsZUZvcm1hdCkgfHwg
aXNEb3VibGVQcmVkaWN0aW9uKHByZWRpY3Rpb24oKSkpOwogICAgIH0KICAgICAKICAgICBib29s
IHNob3VsZFVzZURvdWJsZUZvcm1hdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrU3RhY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0
YWNrLmNwcAppbmRleCAzZjRmZGE3Li5kZDBlNmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtTdGFjay5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNvbnNlcnZh
dGl2ZVJvb3RzLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1ZGUgIkhldXJpc3RpY3MuaCIK
KyNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpT
Q2VsbC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCkBAIC02MCw3ICs2MCw3IEBAIE1hcmtTdGFj
a1NlZ21lbnQqIE1hcmtTdGFja1NlZ21lbnRBbGxvY2F0b3I6OmFsbG9jYXRlKCkKICAgICAgICAg
fQogICAgIH0KIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxNYXJrU3RhY2tTZWdtZW50Kj4oT1NB
bGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoSGV1cmlzdGljczo6Z2NNYXJrU3RhY2tTZWdtZW50
U2l6ZSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxNYXJrU3RhY2tTZWdtZW50Kj4oT1NBbGxv
Y2F0b3I6OnJlc2VydmVBbmRDb21taXQoT3B0aW9uczo6Z2NNYXJrU3RhY2tTZWdtZW50U2l6ZSkp
OwogfQogCiB2b2lkIE1hcmtTdGFja1NlZ21lbnRBbGxvY2F0b3I6OnJlbGVhc2UoTWFya1N0YWNr
U2VnbWVudCogc2VnbWVudCkKQEAgLTgxLDEzICs4MSwxMyBAQCB2b2lkIE1hcmtTdGFja1NlZ21l
bnRBbGxvY2F0b3I6OnNocmlua1Jlc2VydmUoKQogICAgIHdoaWxlIChzZWdtZW50cykgewogICAg
ICAgICBNYXJrU3RhY2tTZWdtZW50KiB0b0ZyZWUgPSBzZWdtZW50czsKICAgICAgICAgc2VnbWVu
dHMgPSBzZWdtZW50cy0+bV9wcmV2aW91czsKLSAgICAgICAgT1NBbGxvY2F0b3I6OmRlY29tbWl0
QW5kUmVsZWFzZSh0b0ZyZWUsIEhldXJpc3RpY3M6OmdjTWFya1N0YWNrU2VnbWVudFNpemUpOwor
ICAgICAgICBPU0FsbG9jYXRvcjo6ZGVjb21taXRBbmRSZWxlYXNlKHRvRnJlZSwgT3B0aW9uczo6
Z2NNYXJrU3RhY2tTZWdtZW50U2l6ZSk7CiAgICAgfQogfQogCiBNYXJrU3RhY2tBcnJheTo6TWFy
a1N0YWNrQXJyYXkoTWFya1N0YWNrU2VnbWVudEFsbG9jYXRvciYgYWxsb2NhdG9yKQogICAgIDog
bV9hbGxvY2F0b3IoYWxsb2NhdG9yKQotICAgICwgbV9zZWdtZW50Q2FwYWNpdHkoTWFya1N0YWNr
U2VnbWVudDo6Y2FwYWNpdHlGcm9tU2l6ZShIZXVyaXN0aWNzOjpnY01hcmtTdGFja1NlZ21lbnRT
aXplKSkKKyAgICAsIG1fc2VnbWVudENhcGFjaXR5KE1hcmtTdGFja1NlZ21lbnQ6OmNhcGFjaXR5
RnJvbVNpemUoT3B0aW9uczo6Z2NNYXJrU3RhY2tTZWdtZW50U2l6ZSkpCiAgICAgLCBtX3RvcCgw
KQogICAgICwgbV9udW1iZXJPZlByZXZpb3VzU2VnbWVudHMoMCkKIHsKQEAgLTE0NSwxMCArMTQ1
LDEwIEBAIGJvb2wgTWFya1N0YWNrQXJyYXk6OmRvbmF0ZVNvbWVDZWxsc1RvKE1hcmtTdGFja0Fy
cmF5JiBvdGhlcikKICAgICBvdGhlci52YWxpZGF0ZVByZXZpb3VzKCk7CiAgICAgICAgIAogICAg
IC8vIEZhc3QgY2hlY2s6IHNlZSBpZiB0aGUgb3RoZXIgbWFyayBzdGFjayBhbHJlYWR5IGhhcyBl
bm91Z2ggc2VnbWVudHMuCi0gICAgaWYgKG90aGVyLm1fbnVtYmVyT2ZQcmV2aW91c1NlZ21lbnRz
ICsgMSA+PSBIZXVyaXN0aWNzOjptYXhpbXVtTnVtYmVyT2ZTaGFyZWRTZWdtZW50cykKKyAgICBp
ZiAob3RoZXIubV9udW1iZXJPZlByZXZpb3VzU2VnbWVudHMgKyAxID49IE9wdGlvbnM6Om1heGlt
dW1OdW1iZXJPZlNoYXJlZFNlZ21lbnRzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IAotICAgIHNpemVfdCBudW1iZXJPZkNlbGxzVG9LZWVwID0gSGV1cmlzdGljczo6bWluaW11bU51
bWJlck9mQ2VsbHNUb0tlZXA7CisgICAgc2l6ZV90IG51bWJlck9mQ2VsbHNUb0tlZXAgPSBPcHRp
b25zOjptaW5pbXVtTnVtYmVyT2ZDZWxsc1RvS2VlcDsKICAgICBBU1NFUlQobV90b3AgPiBudW1i
ZXJPZkNlbGxzVG9LZWVwIHx8IG1fdG9wU2VnbWVudC0+bV9wcmV2aW91cyk7CiAgICAgICAgIAog
ICAgIC8vIExvb2tzIGxpa2Ugd2Ugc2hvdWxkIGRvbmF0ZSEgR2l2ZSB0aGUgb3RoZXIgbWFyayBz
dGFjayBhbGwgb2Ygb3VyCkBAIC0yMDksOCArMjA5LDggQEAgdm9pZCBNYXJrU3RhY2tBcnJheTo6
c3RlYWxTb21lQ2VsbHNGcm9tKE1hcmtTdGFja0FycmF5JiBvdGhlcikKICAgICB9CiAgICAgICAg
IAogICAgIC8vIE90aGVyd2lzZSBkcmFpbiAxL050aCBvZiB0aGUgc2hhcmVkIGFycmF5IHdoZXJl
IE4gaXMgdGhlIG51bWJlciBvZgotICAgIC8vIHdvcmtlcnMsIG9yIEhldXJpc3RpY3M6Om1pbmlt
dW1OdW1iZXJPZkNlbGxzVG9LZWVwLCB3aGljaGV2ZXIgaXMgYmlnZ2VyLgotICAgIHNpemVfdCBu
dW1iZXJPZkNlbGxzVG9TdGVhbCA9IHN0ZDo6bWF4KChzaXplX3QpSGV1cmlzdGljczo6bWluaW11
bU51bWJlck9mQ2VsbHNUb0tlZXAsIG90aGVyLnNpemUoKSAvIEhldXJpc3RpY3M6Om51bWJlck9m
R0NNYXJrZXJzKTsKKyAgICAvLyB3b3JrZXJzLCBvciBPcHRpb25zOjptaW5pbXVtTnVtYmVyT2ZD
ZWxsc1RvS2VlcCwgd2hpY2hldmVyIGlzIGJpZ2dlci4KKyAgICBzaXplX3QgbnVtYmVyT2ZDZWxs
c1RvU3RlYWwgPSBzdGQ6Om1heCgoc2l6ZV90KU9wdGlvbnM6Om1pbmltdW1OdW1iZXJPZkNlbGxz
VG9LZWVwLCBvdGhlci5zaXplKCkgLyBPcHRpb25zOjpudW1iZXJPZkdDTWFya2Vycyk7CiAgICAg
d2hpbGUgKG51bWJlck9mQ2VsbHNUb1N0ZWFsLS0gPiAwICYmIG90aGVyLmNhblJlbW92ZUxhc3Qo
KSkKICAgICAgICAgYXBwZW5kKG90aGVyLnJlbW92ZUxhc3QoKSk7CiB9CkBAIC0yMzgsNyArMjM4
LDcgQEAgTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YTo6TWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0
YShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiAgICAgLCBtX3BhcmFsbGVsTWFya2Vyc1Nob3Vs
ZEV4aXQoZmFsc2UpCiB7CiAjaWYgRU5BQkxFKFBBUkFMTEVMX0dDKQotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDE7IGkgPCBIZXVyaXN0aWNzOjpudW1iZXJPZkdDTWFya2VyczsgKytpKSB7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IE9wdGlvbnM6Om51bWJlck9mR0NNYXJrZXJzOyArK2kp
IHsKICAgICAgICAgbV9tYXJraW5nVGhyZWFkcy5hcHBlbmQoY3JlYXRlVGhyZWFkKG1hcmtpbmdU
aHJlYWRTdGFydEZ1bmMsIHRoaXMsICJKYXZhU2NyaXB0Q29yZTo6TWFya2luZyIpKTsKICAgICAg
ICAgQVNTRVJUKG1fbWFya2luZ1RocmVhZHMubGFzdCgpKTsKICAgICB9CkBAIC0zMjksNyArMzI5
LDcgQEAgdm9pZCBTbG90VmlzaXRvcjo6ZG9uYXRlU2xvdygpCiAgICAgaWYgKG1fc3RhY2suZG9u
YXRlU29tZUNlbGxzVG8obV9zaGFyZWQubV9zaGFyZWRNYXJrU3RhY2spKSB7CiAgICAgICAgIC8v
IE9ubHkgd2FrZSB1cCB0aHJlYWRzIGlmIHRoZSBzaGFyZWQgc3RhY2sgaXMgYmlnIGVub3VnaDsg
b3RoZXJ3aXNlIGFzc3VtZSB0aGF0CiAgICAgICAgIC8vIGl0J3MgbW9yZSBwcm9maXRhYmxlIGZv
ciB1cyB0byBqdXN0IHNjYW4gdGhpcyBvdXJzZWx2ZXMgbGF0ZXIuCi0gICAgICAgIGlmIChtX3No
YXJlZC5tX3NoYXJlZE1hcmtTdGFjay5zaXplKCkgPj0gSGV1cmlzdGljczo6c2hhcmVkU3RhY2tX
YWtldXBUaHJlc2hvbGQpCisgICAgICAgIGlmIChtX3NoYXJlZC5tX3NoYXJlZE1hcmtTdGFjay5z
aXplKCkgPj0gT3B0aW9uczo6c2hhcmVkU3RhY2tXYWtldXBUaHJlc2hvbGQpCiAgICAgICAgICAg
ICBtX3NoYXJlZC5tX21hcmtpbmdDb25kaXRpb24uYnJvYWRjYXN0KCk7CiAgICAgfQogfQpAQCAt
MzQzLDEwICszNDMsMTAgQEAgdm9pZCBTbG90VmlzaXRvcjo6ZHJhaW4oKQogICAgIHZvaWQqIGpz
U3RyaW5nVlB0ciA9IG1fanNTdHJpbmdWUHRyOwogCiAjaWYgRU5BQkxFKFBBUkFMTEVMX0dDKQot
ICAgIGlmIChIZXVyaXN0aWNzOjpudW1iZXJPZkdDTWFya2VycyA+IDEpIHsKKyAgICBpZiAoT3B0
aW9uczo6bnVtYmVyT2ZHQ01hcmtlcnMgPiAxKSB7CiAgICAgICAgIHdoaWxlICghbV9zdGFjay5p
c0VtcHR5KCkpIHsKICAgICAgICAgICAgIG1fc3RhY2sucmVmaWxsKCk7Ci0gICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGNvdW50ZG93biA9IEhldXJpc3RpY3M6Om1pbmltdW1OdW1iZXJPZlNjYW5z
QmV0d2VlblJlYmFsYW5jZTsgbV9zdGFjay5jYW5SZW1vdmVMYXN0KCkgJiYgY291bnRkb3duLS07
KQorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBjb3VudGRvd24gPSBPcHRpb25zOjptaW5pbXVt
TnVtYmVyT2ZTY2Fuc0JldHdlZW5SZWJhbGFuY2U7IG1fc3RhY2suY2FuUmVtb3ZlTGFzdCgpICYm
IGNvdW50ZG93bi0tOykKICAgICAgICAgICAgICAgICB2aXNpdENoaWxkcmVuKCp0aGlzLCBtX3N0
YWNrLnJlbW92ZUxhc3QoKSwganNGaW5hbE9iamVjdFZQdHIsIGpzQXJyYXlWUHRyLCBqc1N0cmlu
Z1ZQdHIpOwogICAgICAgICAgICAgZG9uYXRlS25vd25QYXJhbGxlbCgpOwogICAgICAgICB9CkBA
IC0zNjcsMTQgKzM2NywxNCBAQCB2b2lkIFNsb3RWaXNpdG9yOjpkcmFpbkZyb21TaGFyZWQoU2hh
cmVkRHJhaW5Nb2RlIHNoYXJlZERyYWluTW9kZSkKIHsKICAgICBBU1NFUlQobV9pc0luUGFyYWxs
ZWxNb2RlKTsKICAgICAKLSAgICBBU1NFUlQoSGV1cmlzdGljczo6bnVtYmVyT2ZHQ01hcmtlcnMp
OworICAgIEFTU0VSVChPcHRpb25zOjpudW1iZXJPZkdDTWFya2Vycyk7CiAgICAgCiAgICAgYm9v
bCBzaG91bGRCZVBhcmFsbGVsOwogCiAjaWYgRU5BQkxFKFBBUkFMTEVMX0dDKQotICAgIHNob3Vs
ZEJlUGFyYWxsZWwgPSBIZXVyaXN0aWNzOjpudW1iZXJPZkdDTWFya2VycyA+IDE7CisgICAgc2hv
dWxkQmVQYXJhbGxlbCA9IE9wdGlvbnM6Om51bWJlck9mR0NNYXJrZXJzID4gMTsKICNlbHNlCi0g
ICAgQVNTRVJUKEhldXJpc3RpY3M6Om51bWJlck9mR0NNYXJrZXJzID09IDEpOworICAgIEFTU0VS
VChPcHRpb25zOjpudW1iZXJPZkdDTWFya2VycyA9PSAxKTsKICAgICBzaG91bGRCZVBhcmFsbGVs
ID0gZmFsc2U7CiAjZW5kaWYKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtTdGFjay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNr
LmgKaW5kZXggYzUwODAxOS4uOGNiZGM2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya1N0YWNrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a1N0YWNrLmgKQEAgLTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgTWFya1N0YWNrX2gKIAogI2luY2x1
ZGUgIkhhbmRsZVR5cGVzLmgiCi0jaW5jbHVkZSAiSGV1cmlzdGljcy5oIgorI2luY2x1ZGUgIk9w
dGlvbnMuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXIuaCIKICNp
bmNsdWRlICJVbmNvbmRpdGlvbmFsRmluYWxpemVyLmgiCkBAIC0yNjEsNyArMjYxLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICB2b2lkIG1lcmdlT3BhcXVlUm9vdHNJZlBy
b2ZpdGFibGUoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG1fb3BhcXVlUm9vdHMuc2l6ZSgpKSA8IEhldXJpc3RpY3M6Om9wYXF1ZVJvb3RNZXJnZVRo
cmVzaG9sZCkKKyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vcGFxdWVS
b290cy5zaXplKCkpIDwgT3B0aW9uczo6b3BhcXVlUm9vdE1lcmdlVGhyZXNob2xkKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIG1lcmdlT3BhcXVlUm9vdHMoKTsKICAgICAg
ICAgfQpAQCAtMzA5LDcgKzMwOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGlubGluZSB2b2lk
IE1hcmtTdGFjazo6YWRkT3BhcXVlUm9vdCh2b2lkKiByb290KQogICAgIHsKICNpZiBFTkFCTEUo
UEFSQUxMRUxfR0MpCi0gICAgICAgIGlmIChIZXVyaXN0aWNzOjpudW1iZXJPZkdDTWFya2VycyA9
PSAxKSB7CisgICAgICAgIGlmIChPcHRpb25zOjpudW1iZXJPZkdDTWFya2VycyA9PSAxKSB7CiAg
ICAgICAgICAgICAvLyBQdXQgZGlyZWN0bHkgaW50byB0aGUgc2hhcmVkIEhhc2hTZXQuCiAgICAg
ICAgICAgICBtX3NoYXJlZC5tX29wYXF1ZVJvb3RzLmFkZChyb290KTsKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTM3NSw3ICszNzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGlubGluZSBi
b29sIE1hcmtTdGFja0FycmF5OjpjYW5Eb25hdGVTb21lQ2VsbHMoKQogICAgIHsKLSAgICAgICAg
c2l6ZV90IG51bWJlck9mQ2VsbHNUb0tlZXAgPSBIZXVyaXN0aWNzOjptaW5pbXVtTnVtYmVyT2ZD
ZWxsc1RvS2VlcDsKKyAgICAgICAgc2l6ZV90IG51bWJlck9mQ2VsbHNUb0tlZXAgPSBPcHRpb25z
OjptaW5pbXVtTnVtYmVyT2ZDZWxsc1RvS2VlcDsKICAgICAgICAgLy8gQW5vdGhlciBjaGVjazog
c2VlIGlmIHdlIGhhdmUgZW5vdWdoIGNlbGxzIHRvIHdhcnJhbnQgZG9uYXRpb24uCiAgICAgICAg
IGlmIChtX3RvcCA8PSBudW1iZXJPZkNlbGxzVG9LZWVwKSB7CiAgICAgICAgICAgICAvLyBUaGlz
IGluZGljYXRlcyB0aGF0IHdlIG1pZ2h0IG5vdCB3YW50IHRvIGRvbmF0ZSBhbnl0aGluZzsgY2hl
Y2sgaWYgd2UgaGF2ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xv
dFZpc2l0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgKaW5k
ZXggYTQ2MTc4MS4uNjQ3YjJjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvU2xvdFZpc2l0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90Vmlz
aXRvci5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRvbmF0ZSgpCiAgICAg
ewogICAgICAgICBBU1NFUlQobV9pc0luUGFyYWxsZWxNb2RlKTsKLSAgICAgICAgaWYgKEhldXJp
c3RpY3M6Om51bWJlck9mR0NNYXJrZXJzID09IDEpCisgICAgICAgIGlmIChPcHRpb25zOjpudW1i
ZXJPZkdDTWFya2VycyA9PSAxKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICAg
ICAgZG9uYXRlS25vd25QYXJhbGxlbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4
IDU0MmI0ODQuLmJkNzNjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTk5LDcg
Kzk5LDcgQEAgdm9pZCBKSVQ6OmVtaXRPcHRpbWl6YXRpb25DaGVjayhPcHRpbWl6YXRpb25DaGVj
a0tpbmQga2luZCkKICAgICBpZiAoIXNob3VsZEVtaXRQcm9maWxpbmcoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIEp1bXAgc2tpcE9wdGltaXplID0gYnJhbmNoQWRkMzIoU2lnbmVkLCBU
cnVzdGVkSW1tMzIoa2luZCA9PSBMb29wT3B0aW1pemF0aW9uQ2hlY2sgPyBIZXVyaXN0aWNzOjpl
eGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yTG9vcCA6IEhldXJpc3RpY3M6OmV4ZWN1dGlvbkNv
dW50ZXJJbmNyZW1lbnRGb3JSZXR1cm4pLCBBYnNvbHV0ZUFkZHJlc3MobV9jb2RlQmxvY2stPmFk
ZHJlc3NPZkV4ZWN1dGVDb3VudGVyKCkpKTsKKyAgICBKdW1wIHNraXBPcHRpbWl6ZSA9IGJyYW5j
aEFkZDMyKFNpZ25lZCwgVHJ1c3RlZEltbTMyKGtpbmQgPT0gTG9vcE9wdGltaXphdGlvbkNoZWNr
ID8gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvckxvb3AgOiBPcHRpb25zOjpl
eGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yUmV0dXJuKSwgQWJzb2x1dGVBZGRyZXNzKG1fY29k
ZUJsb2NrLT5hZGRyZXNzT2ZFeGVjdXRlQ291bnRlcigpKSk7CiAgICAgSklUU3R1YkNhbGwgc3R1
YkNhbGwodGhpcywga2luZCA9PSBMb29wT3B0aW1pemF0aW9uQ2hlY2sgPyBjdGlfb3B0aW1pemVf
ZnJvbV9sb29wIDogY3RpX29wdGltaXplX2Zyb21fcmV0KTsKICAgICBpZiAoa2luZCA9PSBMb29w
T3B0aW1pemF0aW9uQ2hlY2spCiAgICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KEltbTMyKG1f
Ynl0ZWNvZGVPZmZzZXQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggZmMwYzU2MC4uMzZkM2Y3
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTEwMiw4ICsxMDIsOCBAQCBzdHJ1Y3QgU2NyaXB0
IHsKICAgICB9CiB9OwogCi1zdHJ1Y3QgT3B0aW9ucyB7Ci0gICAgT3B0aW9ucygpCitzdHJ1Y3Qg
Q29tbWFuZExpbmUgeworICAgIENvbW1hbmRMaW5lKCkKICAgICAgICAgOiBpbnRlcmFjdGl2ZShm
YWxzZSkKICAgICAgICAgLCBkdW1wKGZhbHNlKQogICAgIHsKQEAgLTU0OCw3ICs1NDgsNyBAQCBz
dGF0aWMgTk9fUkVUVVJOIHZvaWQgcHJpbnRVc2FnZVN0YXRlbWVudChKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIGJvb2wgaGVscCA9CiAgICAgZXhpdChoZWxwID8gRVhJVF9TVUNDRVNTIDogRVhJ
VF9GQUlMVVJFKTsKIH0KIAotc3RhdGljIHZvaWQgcGFyc2VBcmd1bWVudHMoaW50IGFyZ2MsIGNo
YXIqKiBhcmd2LCBPcHRpb25zJiBvcHRpb25zLCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCitz
dGF0aWMgdm9pZCBwYXJzZUFyZ3VtZW50cyhpbnQgYXJnYywgY2hhcioqIGFyZ3YsIENvbW1hbmRM
aW5lJiBvcHRpb25zLCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiB7CiAgICAgaW50IGkgPSAx
OwogICAgIGZvciAoOyBpIDwgYXJnYzsgKytpKSB7CkBAIC02MDIsNyArNjAyLDcgQEAgaW50IGpz
Y21haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2LCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiB7
CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAotICAgIE9wdGlvbnMg
b3B0aW9uczsKKyAgICBDb21tYW5kTGluZSBvcHRpb25zOwogICAgIHBhcnNlQXJndW1lbnRzKGFy
Z2MsIGFyZ3YsIG9wdGlvbnMsIGdsb2JhbERhdGEpOwogCiAgICAgR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgR2xvYmFsT2JqZWN0
OjpjcmVhdGVTdHJ1Y3R1cmUoKmdsb2JhbERhdGEsIGpzTnVsbCgpKSwgb3B0aW9ucy5hcmd1bWVu
dHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGV1cmlzdGlj
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzc3M2JjOS4uMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDIxNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJIZXVyaXN0aWNzLmgiCi0jaW5jbHVk
ZSA8d3RmL1BhZ2VCbG9jay5oPgotCi0jaW5jbHVkZSA8bGltaXRzPgotCi0jaWYgT1MoREFSV0lO
KSAmJiBFTkFCTEUoUEFSQUxMRUxfR0MpCi0jaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgotI2VuZGlm
Ci0KLS8vIFNldCB0byAxIHRvIGNvbnRyb2wgdGhlIGhldXJpc3RpY3MgdXNpbmcgZW52aXJvbm1l
bnQgdmFyaWFibGVzLgotI2RlZmluZSBFTkFCTEVfUlVOX1RJTUVfSEVVUklTVElDUyAwCi0KLSNp
ZiBFTkFCTEUoUlVOX1RJTUVfSEVVUklTVElDUykKLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1
ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNlbmRpZgotCi1u
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEhldXJpc3RpY3MgewotCi11bnNpZ25lZCBtYXhpbXVt
T3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKLQotdW5zaWduZWQgbWF4aW11
bUZ1bmN0aW9uRm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7Ci11bnNpZ25l
ZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlvbkNv
dW50OwotCi11bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsKLQotaW50MzJfdCBleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOwotaW50MzJfdCBleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKLWludDMyX3QgZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247Ci1pbnQzMl90IGV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbjsKLWludDMyX3QgZXhlY3V0aW9uQ291bnRlclZh
bHVlRm9yT3B0aW1pemVOZXh0SW52b2NhdGlvbjsKLQotaW50MzJfdCBleGVjdXRpb25Db3VudGVy
SW5jcmVtZW50Rm9yTG9vcDsKLWludDMyX3QgZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvclJl
dHVybjsKLQotdW5zaWduZWQgZGVzaXJlZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbzsKLQot
ZG91YmxlIGxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwotZG91YmxlIGNvdWxkVGFrZVNs
b3dDYXNlVGhyZXNob2xkOwotdW5zaWduZWQgbGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291
bnQ7Ci11bnNpZ25lZCBjb3VsZFRha2VTbG93Q2FzZU1pbmltdW1Db3VudDsKLQotZG91YmxlIG9z
ckV4aXRQcm9taW5lbmNlRm9yRnJlcXVlbnRFeGl0U2l0ZTsKLQotdW5zaWduZWQgbGFyZ2VGYWls
Q291bnRUaHJlc2hvbGRCYXNlOwotdW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNl
Rm9yTG9vcDsKLQotdW5zaWduZWQgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXg7Ci11bnNp
Z25lZCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlclN0ZXA7Ci0KLXVuc2lnbmVkIG1pbmltdW1P
cHRpbWl6YXRpb25EZWxheTsKLXVuc2lnbmVkIG1heGltdW1PcHRpbWl6YXRpb25EZWxheTsKLWRv
dWJsZSBkZXNpcmVkUHJvZmlsZUxpdmVuZXNzUmF0ZTsKLWRvdWJsZSBkZXNpcmVkUHJvZmlsZUZ1
bGxuZXNzUmF0ZTsKLQotZG91YmxlIGRvdWJsZVZvdGVSYXRpb0ZvckRvdWJsZUZvcm1hdDsKLQot
dW5zaWduZWQgbWluaW11bU51bWJlck9mU2NhbnNCZXR3ZWVuUmViYWxhbmNlOwotdW5zaWduZWQg
Z2NNYXJrU3RhY2tTZWdtZW50U2l6ZTsKLXVuc2lnbmVkIG1pbmltdW1OdW1iZXJPZkNlbGxzVG9L
ZWVwOwotdW5zaWduZWQgbWF4aW11bU51bWJlck9mU2hhcmVkU2VnbWVudHM7Ci11bnNpZ25lZCBz
aGFyZWRTdGFja1dha2V1cFRocmVzaG9sZDsKLXVuc2lnbmVkIG51bWJlck9mR0NNYXJrZXJzOwot
dW5zaWduZWQgb3BhcXVlUm9vdE1lcmdlVGhyZXNob2xkOwotCi0jaWYgRU5BQkxFKFJVTl9USU1F
X0hFVVJJU1RJQ1MpCi1zdGF0aWMgYm9vbCBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcsIGludDMy
X3QmIHZhbHVlKQotewotICAgIHJldHVybiBzc2NhbmYoc3RyaW5nLCAiJWQiLCAmdmFsdWUpID09
IDE7Ci19Ci0KLXN0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywgdW5zaWduZWQm
IHZhbHVlKQotewotICAgIHJldHVybiBzc2NhbmYoc3RyaW5nLCAiJXUiLCAmdmFsdWUpID09IDE7
Ci19Ci0KLXN0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywgZG91YmxlJiB2YWx1
ZSkKLXsKLSAgICByZXR1cm4gc3NjYW5mKHN0cmluZywgIiVsZiIsICZ2YWx1ZSkgPT0gMTsKLX0K
LQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLXZvaWQgc2V0SGV1cmlzdGljKFQm
IHZhcmlhYmxlLCBjb25zdCBjaGFyKiBuYW1lLCBVIHZhbHVlKQotewotICAgIGNvbnN0IGNoYXIq
IHN0cmluZ1ZhbHVlID0gZ2V0ZW52KG5hbWUpOwotICAgIGlmICghc3RyaW5nVmFsdWUpIHsKLSAg
ICAgICAgdmFyaWFibGUgPSBzYWZlQ2FzdDxUPih2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgCi0gICAgaWYgKHBhcnNlKHN0cmluZ1ZhbHVlLCB2YXJpYWJsZSkpCi0gICAgICAg
IHJldHVybjsKLSAgICAKLSAgICBmcHJpbnRmKHN0ZGVyciwgIldBUk5JTkc6IGZhaWxlZCB0byBw
YXJzZSAlcz0lc1xuIiwgbmFtZSwgc3RyaW5nVmFsdWUpOwotICAgIHZhcmlhYmxlID0gc2FmZUNh
c3Q8VD4odmFsdWUpOwotfQotCi0jZGVmaW5lIFNFVCh2YXJpYWJsZSwgdmFsdWUpIHNldEhldXJp
c3RpYyh2YXJpYWJsZSwgIkpTQ18iICN2YXJpYWJsZSwgdmFsdWUpCi0jZWxzZQotI2RlZmluZSBT
RVQodmFyaWFibGUsIHZhbHVlKSB2YXJpYWJsZSA9IHZhbHVlCi0jZW5kaWYKLQotdm9pZCBpbml0
aWFsaXplSGV1cmlzdGljcygpCi17Ci0gICAgU0VUKG1heGltdW1PcHRpbWl6YXRpb25DYW5kaWRh
dGVJbnN0cnVjdGlvbkNvdW50LCAxMDAwKTsKLSAgICAKLSAgICBTRVQobWF4aW11bUZ1bmN0aW9u
Rm9yQ2FsbElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQsIDE1MCk7Ci0gICAgU0VUKG1h
eGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQs
IDgwKTsKLSAgICAKLSAgICBTRVQobWF4aW11bUlubGluaW5nRGVwdGgsIDUpOwotCi0gICAgU0VU
KGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAsICAgICAtMTAwMCk7
Ci0gICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVw
LCAtNTAwMCk7Ci0gICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFu
eXRpbWVTb29uLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSk7Ci0gICAgU0VU
KGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbiwgICAgICAgICAgICAtMTAwMCk7
Ci0gICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplTmV4dEludm9jYXRpb24s
ICAwKTsKLQotICAgIFNFVChleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yTG9vcCwgICAxKTsK
LSAgICBTRVQoZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvclJldHVybiwgMTUpOwotCi0gICAg
U0VUKGRlc2lyZWRTcGVjdWxhdGl2ZVN1Y2Nlc3NGYWlsUmF0aW8sIDYpOwotICAgIAotICAgIFNF
VChsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZCwgICAgMC4xNSk7Ci0gICAgU0VUKGNvdWxk
VGFrZVNsb3dDYXNlVGhyZXNob2xkLCAgICAgICAwLjA1KTsgLy8gU2hvdWxkbid0IGJlIHplcm8g
YmVjYXVzZSBzb21lIG9wcyB3aWxsIHNwdXJpb3VzbHkgdGFrZSBzbG93IGNhc2UsIGZvciBleGFt
cGxlIGZvciBsaW5raW5nIG9yIGNhY2hpbmcuCi0gICAgU0VUKGxpa2VseVRvVGFrZVNsb3dDYXNl
TWluaW11bUNvdW50LCAxMDApOwotICAgIFNFVChjb3VsZFRha2VTbG93Q2FzZU1pbmltdW1Db3Vu
dCwgICAgMTApOwotICAgIAotICAgIFNFVChvc3JFeGl0UHJvbWluZW5jZUZvckZyZXF1ZW50RXhp
dFNpdGUsIDAuMyk7Ci0KLSAgICBTRVQobGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlLCAgICAg
ICAgMjApOwotICAgIFNFVChsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2VGb3JMb29wLCAxKTsK
LQotICAgIFNFVChyZW9wdGltaXphdGlvblJldHJ5Q291bnRlclN0ZXAsIDEpOwotCi0gICAgU0VU
KG1pbmltdW1PcHRpbWl6YXRpb25EZWxheSwgICAxKTsKLSAgICBTRVQobWF4aW11bU9wdGltaXph
dGlvbkRlbGF5LCAgIDUpOwotICAgIFNFVChkZXNpcmVkUHJvZmlsZUxpdmVuZXNzUmF0ZSwgMC43
NSk7Ci0gICAgU0VUKGRlc2lyZWRQcm9maWxlRnVsbG5lc3NSYXRlLCAwLjM1KTsKLSAgICAKLSAg
ICBTRVQoZG91YmxlVm90ZVJhdGlvRm9yRG91YmxlRm9ybWF0LCAyKTsKLSAgICAKLSAgICBTRVQo
bWluaW11bU51bWJlck9mU2NhbnNCZXR3ZWVuUmViYWxhbmNlLCAxMDAwMCk7Ci0gICAgU0VUKGdj
TWFya1N0YWNrU2VnbWVudFNpemUsICAgICAgICAgICAgICAgcGFnZVNpemUoKSk7Ci0gICAgU0VU
KG1pbmltdW1OdW1iZXJPZkNlbGxzVG9LZWVwLCAgICAgICAgICAgMTApOwotICAgIFNFVChtYXhp
bXVtTnVtYmVyT2ZTaGFyZWRTZWdtZW50cywgICAgICAgIDMpOwotICAgIFNFVChzaGFyZWRTdGFj
a1dha2V1cFRocmVzaG9sZCwgICAgICAgICAgIDEpOwotICAgIFNFVChvcGFxdWVSb290TWVyZ2VU
aHJlc2hvbGQsICAgICAgICAgICAgIDEwMDApOwotCi0gICAgaW50IGNwdXNUb1VzZSA9IDE7Ci0j
aWYgT1MoREFSV0lOKSAmJiBFTkFCTEUoUEFSQUxMRUxfR0MpCi0gICAgaW50IG5hbWVbMl07Ci0g
ICAgc2l6ZV90IHZhbHVlU2l6ZSA9IHNpemVvZihjcHVzVG9Vc2UpOwotICAgIG5hbWVbMF0gPSBD
VExfSFc7Ci0gICAgbmFtZVsxXSA9IEhXX0FWQUlMQ1BVOwotICAgIHN5c2N0bChuYW1lLCAyLCAm
Y3B1c1RvVXNlLCAmdmFsdWVTaXplLCAwLCAwKTsKLSNlbmRpZgotICAgIC8vIFdlIGRvbid0IHNj
YWxlIHNvIHdlbGwgYmV5b25kIDQuCi0gICAgaWYgKGNwdXNUb1VzZSA+IDQpCi0gICAgICAgIGNw
dXNUb1VzZSA9IDQ7Ci0gICAgLy8gQmUgcGFyYW5vaWQsIGl0IGlzIHRoZSBPUyB3ZSdyZSBkZWFs
aW5nIHdpdGgsIGFmdGVyIGFsbC4KLSAgICBpZiAoY3B1c1RvVXNlIDwgMSkKLSAgICAgICAgY3B1
c1RvVXNlID0gMTsKLSAgICAKLSAgICBTRVQobnVtYmVyT2ZHQ01hcmtlcnMsIGNwdXNUb1VzZSk7
Ci0KLSAgICBBU1NFUlQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGlt
ZVNvb24gPD0gZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAp
OwotICAgIEFTU0VSVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dh
cm1VcCA8PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwKTsKLSAg
ICBBU1NFUlQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCA8PSBl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZVNvb24pOwotICAgIEFTU0VSVChleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwIDwgMCk7Ci0gICAgQVNTRVJUKGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplU29vbiA8PSBleGVjdXRpb25Db3VudGVyVmFs
dWVGb3JPcHRpbWl6ZU5leHRJbnZvY2F0aW9uKTsKLSAgICAKLSAgICAvLyBDb21wdXRlIHRoZSBt
YXhpbXVtIHZhbHVlIG9mIHRoZSByZW9wdGltaXphdGlvbiByZXRyeSBjb3VudGVyLiBUaGlzIGlz
IHNpbXBseQotICAgIC8vIHRoZSBsYXJnZXN0IHZhbHVlIGF0IHdoaWNoIHdlIGRvbid0IG92ZXJm
bG93IHRoZSBleGVjdXRlIGNvdW50ZXIsIHdoZW4gdXNpbmcgaXQKLSAgICAvLyB0byBsZWZ0LXNo
aWZ0IHRoZSBleGVjdXRpb24gY291bnRlciBieSB0aGlzIGFtb3VudC4gQ3VycmVudGx5IHRoZSB2
YWx1ZSBlbmRzCi0gICAgLy8gdXAgYmVpbmcgMTgsIHNvIHRoaXMgbG9vcCBpcyBub3Qgc28gdGVy
cmlibGU7IGl0IHByb2JhYmx5IHRha2VzIHVwIH4xMDAgY3ljbGVzCi0gICAgLy8gdG90YWwgb24g
YSAzMi1iaXQgcHJvY2Vzc29yLgotICAgIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4ID0g
MDsKLSAgICB3aGlsZSAoKHN0YXRpY19jYXN0PGludDY0X3Q+KGV4ZWN1dGlvbkNvdW50ZXJWYWx1
ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKSA8PCAocmVvcHRpbWl6YXRpb25SZXRyeUNvdW50
ZXJNYXggKyAxKSkgPj0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czxp
bnQzMl90Pjo6bWluKCkpKQotICAgICAgICByZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1heCsr
OwotICAgIAotICAgIEFTU0VSVCgoc3RhdGljX2Nhc3Q8aW50NjRfdD4oZXhlY3V0aW9uQ291bnRl
clZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApIDw8IHJlb3B0aW1pemF0aW9uUmV0cnlD
b3VudGVyTWF4KSA8IDApOwotICAgIEFTU0VSVCgoc3RhdGljX2Nhc3Q8aW50NjRfdD4oZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApIDw8IHJlb3B0aW1pemF0
aW9uUmV0cnlDb3VudGVyTWF4KSA+PSBzdGF0aWNfY2FzdDxpbnQ2NF90PihzdGQ6Om51bWVyaWNf
bGltaXRzPGludDMyX3Q+OjptaW4oKSkpOwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6SGV1
cmlzdGljcwotCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hl
dXJpc3RpY3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hldXJpc3RpY3MuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2EyMThkMC4uMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw4NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpZm5kZWYgSGV1cmlzdGljc19oCi0jZGVmaW5lIEhldXJpc3RpY3NfaAotCi0jaW5jbHVk
ZSA8c3RkaW50Lmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgSGV1cmlzdGljcyB7Ci0K
LWV4dGVybiB1bnNpZ25lZCBtYXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25D
b3VudDsKLQotZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNhbGxJbmxpbmVDYW5k
aWRhdGVJbnN0cnVjdGlvbkNvdW50OwotZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZv
ckNvbnN0cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7Ci0KLWV4dGVybiB1bnNp
Z25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsgLy8gRGVwdGggb2YgaW5saW5lIHN0YWNrLCBzbyAx
ID0gbm8gaW5saW5pbmcsIDIgPSBvbmUgbGV2ZWwsIGV0Yy4KLQotZXh0ZXJuIGludDMyX3QgZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcDsKLWV4dGVybiBpbnQzMl90
IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwOwotZXh0ZXJu
IGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247
Ci1leHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZVNvb247Ci1l
eHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZU5leHRJbnZvY2F0
aW9uOwotCi1leHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yTG9vcDsK
LWV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JSZXR1cm47Ci0KLWV4
dGVybiB1bnNpZ25lZCBkZXNpcmVkU3BlY3VsYXRpdmVTdWNjZXNzRmFpbFJhdGlvOwotCi1leHRl
cm4gZG91YmxlIGxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwotZXh0ZXJuIGRvdWJsZSBj
b3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZDsKLWV4dGVybiB1bnNpZ25lZCBsaWtlbHlUb1Rha2VT
bG93Q2FzZU1pbmltdW1Db3VudDsKLWV4dGVybiB1bnNpZ25lZCBjb3VsZFRha2VTbG93Q2FzZU1p
bmltdW1Db3VudDsKLQotZXh0ZXJuIGRvdWJsZSBvc3JFeGl0UHJvbWluZW5jZUZvckZyZXF1ZW50
RXhpdFNpdGU7Ci0KLWV4dGVybiB1bnNpZ25lZCBsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2U7
Ci1leHRlcm4gdW5zaWduZWQgbGFyZ2VGYWlsQ291bnRUaHJlc2hvbGRCYXNlRm9yTG9vcDsKLQot
ZXh0ZXJuIHVuc2lnbmVkIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4OwotZXh0ZXJuIHVu
c2lnbmVkIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyU3RlcDsKLQotZXh0ZXJuIHVuc2lnbmVk
IG1pbmltdW1PcHRpbWl6YXRpb25EZWxheTsKLWV4dGVybiB1bnNpZ25lZCBtYXhpbXVtT3B0aW1p
emF0aW9uRGVsYXk7Ci1leHRlcm4gZG91YmxlIGRlc2lyZWRQcm9maWxlTGl2ZW5lc3NSYXRlOwot
ZXh0ZXJuIGRvdWJsZSBkZXNpcmVkUHJvZmlsZUZ1bGxuZXNzUmF0ZTsKLQotZXh0ZXJuIGRvdWJs
ZSBkb3VibGVWb3RlUmF0aW9Gb3JEb3VibGVGb3JtYXQ7Ci0KLWV4dGVybiB1bnNpZ25lZCBtaW5p
bXVtTnVtYmVyT2ZTY2Fuc0JldHdlZW5SZWJhbGFuY2U7Ci1leHRlcm4gdW5zaWduZWQgZ2NNYXJr
U3RhY2tTZWdtZW50U2l6ZTsKLWV4dGVybiB1bnNpZ25lZCBtaW5pbXVtTnVtYmVyT2ZDZWxsc1Rv
S2VlcDsKLWV4dGVybiB1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZTaGFyZWRTZWdtZW50czsKLWV4
dGVybiB1bnNpZ25lZCBzaGFyZWRTdGFja1dha2V1cFRocmVzaG9sZDsKLWV4dGVybiB1bnNpZ25l
ZCBudW1iZXJPZkdDTWFya2VyczsKLWV4dGVybiB1bnNpZ25lZCBvcGFxdWVSb290TWVyZ2VUaHJl
c2hvbGQ7Ci0KLXZvaWQgaW5pdGlhbGl6ZUhldXJpc3RpY3MoKTsKLQotfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkhldXJpc3RpY3MKLQotI2VuZGlmIC8vIEhldXJpc3RpY3NfaAotCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCmlu
ZGV4IDNhMzcxZjkuLjY5ODk1NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAKICNp
bmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1
ZGUgIkhldXJpc3RpY3MuaCIKKyNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIkpTRGF0ZU1hdGguaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dC5oIgpAQCAtNTMsNyArNTMsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nT25j
ZSgpCiB7CiAgICAgV1RGOjpkb3VibGVfY29udmVyc2lvbjo6aW5pdGlhbGl6ZSgpOwogICAgIFdU
Rjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwotICAgIEhldXJpc3RpY3M6OmluaXRpYWxpemVIZXVy
aXN0aWNzKCk7CisgICAgT3B0aW9uczo6aW5pdGlhbGl6ZU9wdGlvbnMoKTsKICNpZiBFTkFCTEUo
V1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCiAgICAgV3JpdGVCYXJyaWVyQ291bnRlcnM6OmluaXRp
YWxpemUoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OGQxMGI3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKQEAgLTAs
MCArMSwyMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk9wdGlvbnMuaCIKKworI2luY2x1ZGUg
PGxpbWl0cz4KKyNpbmNsdWRlIDx3dGYvUGFnZUJsb2NrLmg+CisKKyNpZiBPUyhEQVJXSU4pICYm
IEVOQUJMRShQQVJBTExFTF9HQykKKyNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CisjZW5kaWYKKwor
Ly8gU2V0IHRvIDEgdG8gY29udHJvbCB0aGUgaGV1cmlzdGljcyB1c2luZyBlbnZpcm9ubWVudCB2
YXJpYWJsZXMuCisjZGVmaW5lIEVOQUJMRV9SVU5fVElNRV9IRVVSSVNUSUNTIDAKKworI2lmIEVO
QUJMRShSVU5fVElNRV9IRVVSSVNUSUNTKQorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8
c3RkbGliLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2VuZGlmCisKK25hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgT3B0aW9ucyB7CisKK3Vuc2lnbmVkIG1heGltdW1PcHRpbWl6
YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50OworCit1bnNpZ25lZCBtYXhpbXVtRnVuY3Rp
b25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKK3Vuc2lnbmVkIG1heGlt
dW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGluZUNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CisK
K3Vuc2lnbmVkIG1heGltdW1JbmxpbmluZ0RlcHRoOworCitpbnQzMl90IGV4ZWN1dGlvbkNvdW50
ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXA7CitpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwOworaW50MzJfdCBleGVjdXRpb25Db3VudGVy
VmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbjsKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRl
clZhbHVlRm9yT3B0aW1pemVTb29uOworaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JP
cHRpbWl6ZU5leHRJbnZvY2F0aW9uOworCitpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1l
bnRGb3JMb29wOworaW50MzJfdCBleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yUmV0dXJuOwor
Cit1bnNpZ25lZCBkZXNpcmVkU3BlY3VsYXRpdmVTdWNjZXNzRmFpbFJhdGlvOworCitkb3VibGUg
bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7Citkb3VibGUgY291bGRUYWtlU2xvd0Nhc2VU
aHJlc2hvbGQ7Cit1bnNpZ25lZCBsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudDsKK3Vu
c2lnbmVkIGNvdWxkVGFrZVNsb3dDYXNlTWluaW11bUNvdW50OworCitkb3VibGUgb3NyRXhpdFBy
b21pbmVuY2VGb3JGcmVxdWVudEV4aXRTaXRlOworCit1bnNpZ25lZCBsYXJnZUZhaWxDb3VudFRo
cmVzaG9sZEJhc2U7Cit1bnNpZ25lZCBsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2VGb3JMb29w
OworCit1bnNpZ25lZCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1heDsKK3Vuc2lnbmVkIHJl
b3B0aW1pemF0aW9uUmV0cnlDb3VudGVyU3RlcDsKKwordW5zaWduZWQgbWluaW11bU9wdGltaXph
dGlvbkRlbGF5OwordW5zaWduZWQgbWF4aW11bU9wdGltaXphdGlvbkRlbGF5OworZG91YmxlIGRl
c2lyZWRQcm9maWxlTGl2ZW5lc3NSYXRlOworZG91YmxlIGRlc2lyZWRQcm9maWxlRnVsbG5lc3NS
YXRlOworCitkb3VibGUgZG91YmxlVm90ZVJhdGlvRm9yRG91YmxlRm9ybWF0OworCit1bnNpZ25l
ZCBtaW5pbXVtTnVtYmVyT2ZTY2Fuc0JldHdlZW5SZWJhbGFuY2U7Cit1bnNpZ25lZCBnY01hcmtT
dGFja1NlZ21lbnRTaXplOwordW5zaWduZWQgbWluaW11bU51bWJlck9mQ2VsbHNUb0tlZXA7Cit1
bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZTaGFyZWRTZWdtZW50czsKK3Vuc2lnbmVkIHNoYXJlZFN0
YWNrV2FrZXVwVGhyZXNob2xkOwordW5zaWduZWQgbnVtYmVyT2ZHQ01hcmtlcnM7Cit1bnNpZ25l
ZCBvcGFxdWVSb290TWVyZ2VUaHJlc2hvbGQ7CisKKyNpZiBFTkFCTEUoUlVOX1RJTUVfSEVVUklT
VElDUykKK3N0YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywgaW50MzJfdCYgdmFs
dWUpCit7CisgICAgcmV0dXJuIHNzY2FuZihzdHJpbmcsICIlZCIsICZ2YWx1ZSkgPT0gMTsKK30K
Kworc3RhdGljIGJvb2wgcGFyc2UoY29uc3QgY2hhciogc3RyaW5nLCB1bnNpZ25lZCYgdmFsdWUp
Cit7CisgICAgcmV0dXJuIHNzY2FuZihzdHJpbmcsICIldSIsICZ2YWx1ZSkgPT0gMTsKK30KKwor
c3RhdGljIGJvb2wgcGFyc2UoY29uc3QgY2hhciogc3RyaW5nLCBkb3VibGUmIHZhbHVlKQorewor
ICAgIHJldHVybiBzc2NhbmYoc3RyaW5nLCAiJWxmIiwgJnZhbHVlKSA9PSAxOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgordm9pZCBzZXRIZXVyaXN0aWMoVCYgdmFyaWFi
bGUsIGNvbnN0IGNoYXIqIG5hbWUsIFUgdmFsdWUpCit7CisgICAgY29uc3QgY2hhciogc3RyaW5n
VmFsdWUgPSBnZXRlbnYobmFtZSk7CisgICAgaWYgKCFzdHJpbmdWYWx1ZSkgeworICAgICAgICB2
YXJpYWJsZSA9IHNhZmVDYXN0PFQ+KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAKKyAgICBpZiAocGFyc2Uoc3RyaW5nVmFsdWUsIHZhcmlhYmxlKSkKKyAgICAgICAgcmV0dXJu
OworICAgIAorICAgIGZwcmludGYoc3RkZXJyLCAiV0FSTklORzogZmFpbGVkIHRvIHBhcnNlICVz
PSVzXG4iLCBuYW1lLCBzdHJpbmdWYWx1ZSk7CisgICAgdmFyaWFibGUgPSBzYWZlQ2FzdDxUPih2
YWx1ZSk7Cit9CisKKyNkZWZpbmUgU0VUKHZhcmlhYmxlLCB2YWx1ZSkgc2V0SGV1cmlzdGljKHZh
cmlhYmxlLCAiSlNDXyIgI3ZhcmlhYmxlLCB2YWx1ZSkKKyNlbHNlCisjZGVmaW5lIFNFVCh2YXJp
YWJsZSwgdmFsdWUpIHZhcmlhYmxlID0gdmFsdWUKKyNlbmRpZgorCit2b2lkIGluaXRpYWxpemVP
cHRpb25zKCkKK3sKKyAgICBTRVQobWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0
aW9uQ291bnQsIDEwMDApOworICAgIAorICAgIFNFVChtYXhpbXVtRnVuY3Rpb25Gb3JDYWxsSW5s
aW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCwgMTUwKTsKKyAgICBTRVQobWF4aW11bUZ1bmN0
aW9uRm9yQ29uc3RydWN0SW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCwgODApOworICAg
IAorICAgIFNFVChtYXhpbXVtSW5saW5pbmdEZXB0aCwgNSk7CisKKyAgICBTRVQoZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCwgICAgIC0xMDAwKTsKKyAgICBTRVQo
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAsIC01MDAwKTsK
KyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb24s
IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKTsKKyAgICBTRVQoZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9yT3B0aW1pemVTb29uLCAgICAgICAgICAgIC0xMDAwKTsKKyAgICBTRVQo
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVOZXh0SW52b2NhdGlvbiwgIDApOworCisg
ICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JMb29wLCAgIDEpOworICAgIFNFVChl
eGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yUmV0dXJuLCAxNSk7CisKKyAgICBTRVQoZGVzaXJl
ZFNwZWN1bGF0aXZlU3VjY2Vzc0ZhaWxSYXRpbywgNik7CisgICAgCisgICAgU0VUKGxpa2VseVRv
VGFrZVNsb3dDYXNlVGhyZXNob2xkLCAgICAwLjE1KTsKKyAgICBTRVQoY291bGRUYWtlU2xvd0Nh
c2VUaHJlc2hvbGQsICAgICAgIDAuMDUpOyAvLyBTaG91bGRuJ3QgYmUgemVybyBiZWNhdXNlIHNv
bWUgb3BzIHdpbGwgc3B1cmlvdXNseSB0YWtlIHNsb3cgY2FzZSwgZm9yIGV4YW1wbGUgZm9yIGxp
bmtpbmcgb3IgY2FjaGluZy4KKyAgICBTRVQobGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291
bnQsIDEwMCk7CisgICAgU0VUKGNvdWxkVGFrZVNsb3dDYXNlTWluaW11bUNvdW50LCAgICAxMCk7
CisgICAgCisgICAgU0VUKG9zckV4aXRQcm9taW5lbmNlRm9yRnJlcXVlbnRFeGl0U2l0ZSwgMC4z
KTsKKworICAgIFNFVChsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2UsICAgICAgICAyMCk7Cisg
ICAgU0VUKGxhcmdlRmFpbENvdW50VGhyZXNob2xkQmFzZUZvckxvb3AsIDEpOworCisgICAgU0VU
KHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyU3RlcCwgMSk7CisKKyAgICBTRVQobWluaW11bU9w
dGltaXphdGlvbkRlbGF5LCAgIDEpOworICAgIFNFVChtYXhpbXVtT3B0aW1pemF0aW9uRGVsYXks
ICAgNSk7CisgICAgU0VUKGRlc2lyZWRQcm9maWxlTGl2ZW5lc3NSYXRlLCAwLjc1KTsKKyAgICBT
RVQoZGVzaXJlZFByb2ZpbGVGdWxsbmVzc1JhdGUsIDAuMzUpOworICAgIAorICAgIFNFVChkb3Vi
bGVWb3RlUmF0aW9Gb3JEb3VibGVGb3JtYXQsIDIpOworICAgIAorICAgIFNFVChtaW5pbXVtTnVt
YmVyT2ZTY2Fuc0JldHdlZW5SZWJhbGFuY2UsIDEwMDAwKTsKKyAgICBTRVQoZ2NNYXJrU3RhY2tT
ZWdtZW50U2l6ZSwgICAgICAgICAgICAgICBwYWdlU2l6ZSgpKTsKKyAgICBTRVQobWluaW11bU51
bWJlck9mQ2VsbHNUb0tlZXAsICAgICAgICAgICAxMCk7CisgICAgU0VUKG1heGltdW1OdW1iZXJP
ZlNoYXJlZFNlZ21lbnRzLCAgICAgICAgMyk7CisgICAgU0VUKHNoYXJlZFN0YWNrV2FrZXVwVGhy
ZXNob2xkLCAgICAgICAgICAgMSk7CisgICAgU0VUKG9wYXF1ZVJvb3RNZXJnZVRocmVzaG9sZCwg
ICAgICAgICAgICAgMTAwMCk7CisKKyAgICBpbnQgY3B1c1RvVXNlID0gMTsKKyNpZiBPUyhEQVJX
SU4pICYmIEVOQUJMRShQQVJBTExFTF9HQykKKyAgICBpbnQgbmFtZVsyXTsKKyAgICBzaXplX3Qg
dmFsdWVTaXplID0gc2l6ZW9mKGNwdXNUb1VzZSk7CisgICAgbmFtZVswXSA9IENUTF9IVzsKKyAg
ICBuYW1lWzFdID0gSFdfQVZBSUxDUFU7CisgICAgc3lzY3RsKG5hbWUsIDIsICZjcHVzVG9Vc2Us
ICZ2YWx1ZVNpemUsIDAsIDApOworI2VuZGlmCisgICAgLy8gV2UgZG9uJ3Qgc2NhbGUgc28gd2Vs
bCBiZXlvbmQgNC4KKyAgICBpZiAoY3B1c1RvVXNlID4gNCkKKyAgICAgICAgY3B1c1RvVXNlID0g
NDsKKyAgICAvLyBCZSBwYXJhbm9pZCwgaXQgaXMgdGhlIE9TIHdlJ3JlIGRlYWxpbmcgd2l0aCwg
YWZ0ZXIgYWxsLgorICAgIGlmIChjcHVzVG9Vc2UgPCAxKQorICAgICAgICBjcHVzVG9Vc2UgPSAx
OworICAgIAorICAgIFNFVChudW1iZXJPZkdDTWFya2VycywgY3B1c1RvVXNlKTsKKworICAgIEFT
U0VSVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbiA8PSBl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCk7CisgICAgQVNT
RVJUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwIDw9IGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXApOworICAgIEFTU0VSVChl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwIDw9IGV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvck9wdGltaXplU29vbik7CisgICAgQVNTRVJUKGV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAgPCAwKTsKKyAgICBBU1NFUlQoZXhlY3V0aW9uQ291
bnRlclZhbHVlRm9yT3B0aW1pemVTb29uIDw9IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGlt
aXplTmV4dEludm9jYXRpb24pOworICAgIAorICAgIC8vIENvbXB1dGUgdGhlIG1heGltdW0gdmFs
dWUgb2YgdGhlIHJlb3B0aW1pemF0aW9uIHJldHJ5IGNvdW50ZXIuIFRoaXMgaXMgc2ltcGx5Cisg
ICAgLy8gdGhlIGxhcmdlc3QgdmFsdWUgYXQgd2hpY2ggd2UgZG9uJ3Qgb3ZlcmZsb3cgdGhlIGV4
ZWN1dGUgY291bnRlciwgd2hlbiB1c2luZyBpdAorICAgIC8vIHRvIGxlZnQtc2hpZnQgdGhlIGV4
ZWN1dGlvbiBjb3VudGVyIGJ5IHRoaXMgYW1vdW50LiBDdXJyZW50bHkgdGhlIHZhbHVlIGVuZHMK
KyAgICAvLyB1cCBiZWluZyAxOCwgc28gdGhpcyBsb29wIGlzIG5vdCBzbyB0ZXJyaWJsZTsgaXQg
cHJvYmFibHkgdGFrZXMgdXAgfjEwMCBjeWNsZXMKKyAgICAvLyB0b3RhbCBvbiBhIDMyLWJpdCBw
cm9jZXNzb3IuCisgICAgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXggPSAwOworICAgIHdo
aWxlICgoc3RhdGljX2Nhc3Q8aW50NjRfdD4oZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1p
emVBZnRlckxvbmdXYXJtVXApIDw8IChyZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1heCArIDEp
KSA+PSBzdGF0aWNfY2FzdDxpbnQ2NF90PihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+Ojpt
aW4oKSkpCisgICAgICAgIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyTWF4Kys7CisgICAgCisg
ICAgQVNTRVJUKChzdGF0aWNfY2FzdDxpbnQ2NF90PihleGVjdXRpb25Db3VudGVyVmFsdWVGb3JP
cHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCkgPDwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXJNYXgp
IDwgMCk7CisgICAgQVNTRVJUKChzdGF0aWNfY2FzdDxpbnQ2NF90PihleGVjdXRpb25Db3VudGVy
VmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCkgPDwgcmVvcHRpbWl6YXRpb25SZXRyeUNv
dW50ZXJNYXgpID49IHN0YXRpY19jYXN0PGludDY0X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
MzJfdD46Om1pbigpKSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpPcHRpb25zCisKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmY3Y2M1ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE9wdGlvbnNfaAorI2Rl
ZmluZSBPcHRpb25zX2gKKworI2luY2x1ZGUgPHN0ZGludC5oPgorCituYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIE9wdGlvbnMgeworCitleHRlcm4gdW5zaWduZWQgbWF4aW11bU9wdGltaXphdGlv
bkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQ7CisKK2V4dGVybiB1bnNpZ25lZCBtYXhpbXVtRnVu
Y3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudDsKK2V4dGVybiB1bnNp
Z25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpbmVDYW5kaWRhdGVJbnN0cnVjdGlv
bkNvdW50OworCitleHRlcm4gdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7IC8vIERlcHRo
IG9mIGlubGluZSBzdGFjaywgc28gMSA9IG5vIGlubGluaW5nLCAyID0gb25lIGxldmVsLCBldGMu
CisKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJX
YXJtVXA7CitleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFm
dGVyTG9uZ1dhcm1VcDsKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRv
bnRPcHRpbWl6ZUFueXRpbWVTb29uOworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZh
bHVlRm9yT3B0aW1pemVTb29uOworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9yT3B0aW1pemVOZXh0SW52b2NhdGlvbjsKKworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291
bnRlckluY3JlbWVudEZvckxvb3A7CitleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVySW5j
cmVtZW50Rm9yUmV0dXJuOworCitleHRlcm4gdW5zaWduZWQgZGVzaXJlZFNwZWN1bGF0aXZlU3Vj
Y2Vzc0ZhaWxSYXRpbzsKKworZXh0ZXJuIGRvdWJsZSBsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVz
aG9sZDsKK2V4dGVybiBkb3VibGUgY291bGRUYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CitleHRlcm4g
dW5zaWduZWQgbGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQ7CitleHRlcm4gdW5zaWdu
ZWQgY291bGRUYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQ7CisKK2V4dGVybiBkb3VibGUgb3NyRXhp
dFByb21pbmVuY2VGb3JGcmVxdWVudEV4aXRTaXRlOworCitleHRlcm4gdW5zaWduZWQgbGFyZ2VG
YWlsQ291bnRUaHJlc2hvbGRCYXNlOworZXh0ZXJuIHVuc2lnbmVkIGxhcmdlRmFpbENvdW50VGhy
ZXNob2xkQmFzZUZvckxvb3A7CisKK2V4dGVybiB1bnNpZ25lZCByZW9wdGltaXphdGlvblJldHJ5
Q291bnRlck1heDsKK2V4dGVybiB1bnNpZ25lZCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlclN0
ZXA7CisKK2V4dGVybiB1bnNpZ25lZCBtaW5pbXVtT3B0aW1pemF0aW9uRGVsYXk7CitleHRlcm4g
dW5zaWduZWQgbWF4aW11bU9wdGltaXphdGlvbkRlbGF5OworZXh0ZXJuIGRvdWJsZSBkZXNpcmVk
UHJvZmlsZUxpdmVuZXNzUmF0ZTsKK2V4dGVybiBkb3VibGUgZGVzaXJlZFByb2ZpbGVGdWxsbmVz
c1JhdGU7CisKK2V4dGVybiBkb3VibGUgZG91YmxlVm90ZVJhdGlvRm9yRG91YmxlRm9ybWF0Owor
CitleHRlcm4gdW5zaWduZWQgbWluaW11bU51bWJlck9mU2NhbnNCZXR3ZWVuUmViYWxhbmNlOwor
ZXh0ZXJuIHVuc2lnbmVkIGdjTWFya1N0YWNrU2VnbWVudFNpemU7CitleHRlcm4gdW5zaWduZWQg
bWluaW11bU51bWJlck9mQ2VsbHNUb0tlZXA7CitleHRlcm4gdW5zaWduZWQgbWF4aW11bU51bWJl
ck9mU2hhcmVkU2VnbWVudHM7CitleHRlcm4gdW5zaWduZWQgc2hhcmVkU3RhY2tXYWtldXBUaHJl
c2hvbGQ7CitleHRlcm4gdW5zaWduZWQgbnVtYmVyT2ZHQ01hcmtlcnM7CitleHRlcm4gdW5zaWdu
ZWQgb3BhcXVlUm9vdE1lcmdlVGhyZXNob2xkOworCit2b2lkIGluaXRpYWxpemVPcHRpb25zKCk7
CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpPcHRpb25zCisKKyNlbmRpZiAvLyBPcHRpb25zX2gK
KwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCmluZGV4IDdmOWZhN2EuLmNmZGQ5YTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhwLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAKQEAgLTU2LDggKzU2LDggQEAgdXNp
bmcgbmFtZXNwYWNlIFdURjsKIAogc3RhdGljIHZvaWQgY2xlYW51cEdsb2JhbERhdGEoSlNHbG9i
YWxEYXRhKik7CiAKLXN0cnVjdCBPcHRpb25zIHsKLSAgICBPcHRpb25zKCkKK3N0cnVjdCBDb21t
YW5kTGluZSB7CisgICAgQ29tbWFuZExpbmUoKQogICAgICAgICA6IGludGVyYWN0aXZlKGZhbHNl
KQogICAgICAgICAsIHZlcmJvc2UoZmFsc2UpCiAgICAgewpAQCAtNDkwLDcgKzQ5MCw3IEBAIHN0
YXRpYyBOT19SRVRVUk4gdm9pZCBwcmludFVzYWdlU3RhdGVtZW50KEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgYm9vbCBoZWxwID0KICAgICBleGl0KGhlbHAgPyBFWElUX1NVQ0NFU1MgOiBFWElU
X0ZBSUxVUkUpOwogfQogCi1zdGF0aWMgdm9pZCBwYXJzZUFyZ3VtZW50cyhpbnQgYXJnYywgY2hh
cioqIGFyZ3YsIE9wdGlvbnMmIG9wdGlvbnMsIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3N0
YXRpYyB2b2lkIHBhcnNlQXJndW1lbnRzKGludCBhcmdjLCBjaGFyKiogYXJndiwgQ29tbWFuZExp
bmUmIG9wdGlvbnMsIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKIHsKICAgICBpbnQgaSA9IDE7
CiAgICAgZm9yICg7IGkgPCBhcmdjOyArK2kpIHsKQEAgLTUxMSw3ICs1MTEsNyBAQCBpbnQgcmVh
bE1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2LCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiB7
CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAotICAgIE9wdGlvbnMg
b3B0aW9uczsKKyAgICBDb21tYW5kTGluZSBvcHRpb25zOwogICAgIHBhcnNlQXJndW1lbnRzKGFy
Z2MsIGFyZ3YsIG9wdGlvbnMsIGdsb2JhbERhdGEpOwogCiAgICAgR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgR2xvYmFsT2JqZWN0
OjpjcmVhdGVTdHJ1Y3R1cmUoKmdsb2JhbERhdGEsIGpzTnVsbCgpKSwgb3B0aW9ucy5hcmd1bWVu
dHMpOwotLSAKMS43LjcuMwoK
</data>

          </attachment>
      

    </bug>

</bugzilla>