<?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>65839</bug_id>
          
          <creation_ts>2011-08-07 21:23:51 -0700</creation_ts>
          <short_desc>[meta] CodeGenerator*.pm should support [Constructor] IDL</short_desc>
          <delta_ts>2013-01-03 01:09:45 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          <dependson>66454</dependson>
    
    <dependson>66455</dependson>
    
    <dependson>66456</dependson>
    
    <dependson>66536</dependson>
    
    <dependson>67381</dependson>
    
    <dependson>67412</dependson>
    
    <dependson>67414</dependson>
    
    <dependson>67447</dependson>
    
    <dependson>67458</dependson>
    
    <dependson>67459</dependson>
    
    <dependson>67879</dependson>
    
    <dependson>69074</dependson>
    
    <dependson>69801</dependson>
    
    <dependson>70101</dependson>
    
    <dependson>70206</dependson>
    
    <dependson>70208</dependson>
    
    <dependson>70212</dependson>
    
    <dependson>70214</dependson>
    
    <dependson>70215</dependson>
    
    <dependson>73064</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>arv</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>gustavo</cc>
    
    <cc>haraken</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>447830</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-07 21:23:51 -0700</bug_when>
    <thetext>CodeGeneratorJS.pm and CodeGeneratorV8.pm should support Web IDL [Constructor] attribute:
http://www.w3.org/TR/WebIDL/#Constructor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447832</commentid>
    <comment_count>1</comment_count>
      <attachid>103199</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-07 21:44:05 -0700</bug_when>
    <thetext>Created attachment 103199
WIP patch

Dominicc: For now, this patch generates a code for a constructor of XMLHttpRequest, i.e. a specific code for one DOM object. I guess that the code that [Constructor] should generate by default would be the code of V8Proxy::constructDOMObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447979</commentid>
    <comment_count>2</comment_count>
      <attachid>103199</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-08-08 07:08:53 -0700</bug_when>
    <thetext>Comment on attachment 103199
WIP patch

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

I love the direction this is going in. Some comments and questions inline.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1972
&gt; +    if ($dataNode-&gt;extendedAttributes-&gt;{&quot;CanBeConstructed&quot;} &amp;&amp; !$dataNode-&gt;extendedAttributes-&gt;{&quot;CustomConstructor&quot;} &amp;&amp; !$dataNode-&gt;extendedAttributes-&gt;{&quot;V8CustomConstructor&quot;} &amp;&amp; !$dataNode-&gt;extendedAttributes-&gt;{&quot;Constructor&quot;}) {

We may want to consider Constructor implies CanBeConstructed. I am not sure about what you’ve got here, since the one case—XMLHttpRequest—has CanBeConstructed, Constructor. What’s your thinking here?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1989
&gt; +    if ($dataNode-&gt;extendedAttributes-&gt;{&quot;Constructor&quot;}) {

This is a solid start. Should we try doing two or three more constructors to generalize it a bit? (Arguments, for example.)

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1998
&gt; +    ScriptExecutionContext* context = getScriptExecutionContext();

I expect many objects have a &quot;context&quot;, eg XMLHttpRequest has ScriptExecutionContext; Node has Document; etc. Maybe we could support different kinds of contexts (hopefully there are only few) with metadata like ConstructorContext=ScriptExecutionContext|Document|etc.

&gt; Source/WebCore/bindings/v8/custom/V8XMLHttpRequestConstructor.cpp:-1
&gt; -/*

Yay, killing code. I love it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450935</commentid>
    <comment_count>3</comment_count>
      <attachid>103879</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-14 04:26:20 -0700</bug_when>
    <thetext>Created attachment 103879
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450967</commentid>
    <comment_count>4</comment_count>
      <attachid>103879</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-08-14 18:30:20 -0700</bug_when>
    <thetext>Comment on attachment 103879
WIP patch

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

This looks really good. Since this patch is pretty big we should work to get this in without expanding the scope any further yet.

You can edit the files in Source/WebCore/bindings/scripts/test/*.idl and run Tools/Scripts/run-bindings-tests to generate test output. There is a flag to reset the expected output too. This can be useful because it is possible to review the effect of changes to CodeGeneratorV8.pm; what effect metadata has.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1487
&gt; +        push(@implContent, &lt;&lt;END);

Maybe just use a string literal?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1552
&gt; +sub IsContainValue

Just call it ContainsValue

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1558
&gt; +    my @valueList = split(/\|/, $orSeparatedValueString);

Does the | mean &quot;either&quot; or &quot;and&quot;. Maybe | is not the best choice of separator?

&gt; Source/WebCore/bindings/scripts/IDLParser.pm:186
&gt; +        }

I wish the IDL parser was recursive descent too; I think this is still quite readable though.

&gt; Source/WebCore/css/WebKitCSSMatrix.idl:34
&gt; +        ConstructorWith=CreateException|DOMObject

You don’t really need to do this | thing. You could have separate attributes like:

Constructor(…)
ConstructWith=ScriptExecutionContext
ConstructorSetsDOMWrapper
ConstructorRaisesException

This is verbose, but it is clearer. Also, I think &quot;DOMObject&quot; might only apply to V8, not JSC (not sure) so we could make that one V8ConstructorSetsDOMWrapper.

Do you think that there are any constructors that have different attributes in these dimensions (eg one overload that throws exceptions and one that doesn’t?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451450</commentid>
    <comment_count>5</comment_count>
      <attachid>103992</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-15 18:58:18 -0700</bug_when>
    <thetext>Created attachment 103992
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451451</commentid>
    <comment_count>6</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-15 18:58:28 -0700</bug_when>
    <thetext>Dominic: I confirmed that the patch passes all tests. Basically, this patch intends to replace 6 custom constructors (EventSource, FileReader, SharedWorker, WebKitCSSMatrix, Worker, XSLTProcessor) with the Web IDL [Constructor] extended attribute without changing their original behaviors. 

However, this patch changes an exception thrown by EventSource, SharedWorker and Worker constructors, when an argument for them is not valid. Specifically, without this patch, these constructors throw &quot;throwError(&quot;Not enough arguments&quot;, V8Proxy::SyntaxError)&quot; from constructorCallback(). On the other hand, with this patch, these constructors throw &quot;throwError(SYNTAX_ERR)&quot; from XXXXXX::create(). In other words, this patch moves the code for throwing an exception from constructorCallback() to inside XXXXXX::create(). (Currently, some constructors throw the syntax error from constructorCallback(), and others throw it from XXXXXX::create(). I want to make them consistent, so that they throw the syntax error from XXXXXX::create().)


Since this patch is too big to commit without regressions, I would like to commit it in the following steps. 

[1] Make the change of exceptions in EventSource constructor.
[2] Make the change of exceptions in SharedWorker constructor.
[3] Make the change of exceptions in Worker constructor.
[4] Implement the Web IDL Constructor extended attribute in IDLParser.pm and CodeGeneratorV8.pm. (How can I write the tests for this?)
[5] Replace EventSource constructor with the Web IDL Constructor extended attribute.
[6] Replace FileReader constructor with the Web IDL Constructor extended attribute.
[7] Replace SharedWorker constructor with the Web IDL Constructor extended attribute.
[8] Replace WebKitCSSMatrix constructor with the Web IDL Constructor extended attribute.
[9] Replace Worker constructor with the Web IDL Constructor extended attribute.
[10] Replace XSLTProcessor constructor with the Web IDL Constructor extended attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451452</commentid>
    <comment_count>7</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-08-15 19:06:28 -0700</bug_when>
    <thetext>Sounds like a good plan. As you work on these, can you file each one as a bug that blocks this bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451454</commentid>
    <comment_count>8</comment_count>
      <attachid>103879</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-15 19:19:17 -0700</bug_when>
    <thetext>Comment on attachment 103879
WIP patch

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

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1487
&gt;&gt; +        push(@implContent, &lt;&lt;END);
&gt; 
&gt; Maybe just use a string literal?

Done.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1552
&gt;&gt; +sub IsContainValue
&gt; 
&gt; Just call it ContainsValue

Done.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1558
&gt;&gt; +    my @valueList = split(/\|/, $orSeparatedValueString);
&gt; 
&gt; Does the | mean &quot;either&quot; or &quot;and&quot;. Maybe | is not the best choice of separator?

Removed the separator, since the separator is not necessary any longer.

&gt;&gt; Source/WebCore/css/WebKitCSSMatrix.idl:34
&gt;&gt; +        ConstructorWith=CreateException|DOMObject
&gt; 
&gt; You don’t really need to do this | thing. You could have separate attributes like:
&gt; 
&gt; Constructor(…)
&gt; ConstructWith=ScriptExecutionContext
&gt; ConstructorSetsDOMWrapper
&gt; ConstructorRaisesException
&gt; 
&gt; This is verbose, but it is clearer. Also, I think &quot;DOMObject&quot; might only apply to V8, not JSC (not sure) so we could make that one V8ConstructorSetsDOMWrapper.
&gt; 
&gt; Do you think that there are any constructors that have different attributes in these dimensions (eg one overload that throws exceptions and one that doesn’t?)

&gt; Constructor(…)
&gt; ConstructWith=ScriptExecutionContext
&gt; ConstructorSetsDOMWrapper
&gt; ConstructorRaisesException

Done. 

&gt; Do you think that there are any constructors that have different attributes in these dimensions

I am not sure yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452887</commentid>
    <comment_count>9</comment_count>
      <attachid>104309</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-18 00:36:25 -0700</bug_when>
    <thetext>Created attachment 104309
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452888</commentid>
    <comment_count>10</comment_count>
      <attachid>104310</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-18 00:38:27 -0700</bug_when>
    <thetext>Created attachment 104310
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452890</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-18 00:45:14 -0700</bug_when>
    <thetext>OMG.  This is so exciting!  Thank you for working on this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452891</commentid>
    <comment_count>12</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-08-18 00:53:03 -0700</bug_when>
    <thetext>I updated the WIP patch, since I found that the previous patch was violating the spec (Please see the comments by abarth and ap in bug 66274, bug 66275 and bug 66276). 

Now, I am planning to land this WIP patch in the following steps.

[1] Throw TypeError from the EventSource constructor (of V8 and JSC), when the number of arguments is not enough. 
[2] Throw TypeError from the SharedWorker constructor (of V8 and JSC), when the number of arguments is not enough. 
[3] Throw TypeError from the Worker constructor (of V8 and JSC), when the number of arguments is not enough. 
[4] Implement the Web IDL Constructor extended attribute in IDLParser.pm and CodeGeneratorV8.pm.
[5] Replace EventSource constructor of V8 with the Web IDL Constructor extended attribute.
[6] Replace FileReader constructor of V8 with the Web IDL Constructor extended attribute.
[7] Replace SharedWorker constructor of V8 with the Web IDL Constructor extended attribute.
[8] Replace WebKitCSSMatrix constructor of V8 with the Web IDL Constructor extended attribute.
[9] Replace Worker constructor of V8 with the Web IDL Constructor extended attribute.
[10] Replace XSLTProcessor constructor of V8 with the Web IDL Constructor extended attribute.

Dependency: [5][6][7][8][9][10] depends on [1][2][3][4].</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477450</commentid>
    <comment_count>13</comment_count>
      <attachid>109583</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-10-03 23:19:47 -0700</bug_when>
    <thetext>Created attachment 109583
Hey! WIP patch for JSC!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477454</commentid>
    <comment_count>14</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-10-03 23:29:46 -0700</bug_when>
    <thetext>Next round.

I uploaded a WIP patch for implementing [Constructor] IDL for JSC. I would be happy if you could take a rough look at it. Comments are appreciated.

I am planning to land this big patch in the following steps:

[1] Deprecate [CallWith=ScriptExecutionContext] for constructors, since it has the same meaning as [ConstructorWith=ScriptExecutionContext].
[2] Make a change in CodeGeneratorJS.pm to support [Constructor] IDL, [ConstructorWith=ScriptExecutionContext] and [ConstructorRaisesException].
[3] Replace a custom constructor of XSLTProcessor with [Constructor] IDL.
[4] Replace a custom constructor of XMLHttpRequest with [Constructor] IDL.
[5] Replace a custom constructor of FileReader with [Constructor] IDL.
[6] Replace a custom constructor of MessageChannel with [Constructor] IDL.
[7] Replace a custom constructor of EventSource with [Constructor] IDL.
[8] Introduce MAYBE_MISSING_PARAMETER() macro. Replace a custom constructor of WebKitCSSMatrix with [Constructor] IDL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477476</commentid>
    <comment_count>15</comment_count>
      <attachid>109583</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-04 01:03:01 -0700</bug_when>
    <thetext>Comment on attachment 109583
Hey! WIP patch for JSC!

Attachment 109583 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9938331

New failing tests:
http/tests/inspector/network/network-xhr-same-url-as-main-resource.html
http/tests/inspector/network/network-disabling-check-no-memory-leak.html
http/tests/inspector/network/network-content-replacement-xhr.html
http/tests/inspector/search/search-in-concatenated-script.html
fast/events/event-fire-order.html
http/tests/inspector/resource-tree/resource-tree-no-xhrs.html
http/tests/inspector/network/network-xhr-sync.html
http/tests/inspector/network-preflight-options.html
fast/events/nested-event-remove-node-crash.html
http/tests/local/formdata/upload-events.html
fast/dom/Window/window-early-properties-xhr.html
http/tests/inspector/network/network-xhr-async.html
http/tests/inspector/network/network-initiator.html
http/tests/appcache/fallback.html
http/tests/inspector/network/network-sidebar-width.html
http/tests/local/formdata/form-data-with-unknown-file-extension.html
fast/dom/xmlhttprequest-constructor-in-detached-document.html
http/tests/inspector/network/network-disable-cache-xhrs.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477485</commentid>
    <comment_count>16</comment_count>
      <attachid>109583</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-10-04 01:35:47 -0700</bug_when>
    <thetext>Comment on attachment 109583
Hey! WIP patch for JSC!

Attachment 109583 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9940296</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477521</commentid>
    <comment_count>17</comment_count>
      <attachid>109583</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-10-04 03:42:26 -0700</bug_when>
    <thetext>Comment on attachment 109583
Hey! WIP patch for JSC!

Attachment 109583 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/9938377</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479957</commentid>
    <comment_count>18</comment_count>
      <attachid>110132</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-10-07 06:02:25 -0700</bug_when>
    <thetext>Created attachment 110132
WIP patch: just see if build succeeds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480464</commentid>
    <comment_count>19</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-10-07 20:57:30 -0700</bug_when>
    <thetext>The uploaded WIP patch passed all tests. I am planning to land this big patch in the following steps, but any thoughts?

[1] Deprecate [CallWith=ScriptExecutionContext] for constructors, since it has the same meaning as [ConstructorWith=ScriptExecutionContext].
[2] Make a change in CodeGeneratorJS.pm to support [Constructor] IDL, [ConstructorWith=ScriptExecutionContext] and [ConstructorRaisesException].
[3] Replace a custom constructor of XSLTProcessor with [Constructor] IDL.
[4] Replace a custom constructor of XMLHttpRequest with [Constructor] IDL.
[5] Replace a custom constructor of FileReader with [Constructor] IDL.
[6] Replace a custom constructor of MessageChannel with [Constructor] IDL.
[7] Replace a custom constructor of EventSource with [Constructor] IDL.
[8] Introduce MAYBE_MISSING_PARAMETER() macro. Replace a custom constructor of WebKitCSSMatrix with [Constructor] IDL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480481</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-07 22:00:00 -0700</bug_when>
    <thetext>&gt; any thoughts?

Sounds great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799303</commentid>
    <comment_count>21</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-01-03 01:05:14 -0800</bug_when>
    <thetext>I guess this bug can now be marked as fixed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799305</commentid>
    <comment_count>22</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-01-03 01:09:45 -0800</bug_when>
    <thetext>Yes, you fixed it:) Thanks.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103199</attachid>
            <date>2011-08-07 21:44:05 -0700</date>
            <delta_ts>2011-08-14 04:26:20 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>diff.txt</filename>
            <type>text/plain</type>
            <size>10131</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiMWQzNjdhLi4yYzFjNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMTEtMDgtMDcgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KKworICAg
ICAgICBDb2RlR2VuZXJhdG9yKi5wbSBzaG91bGQgc3VwcG9ydCBXZWIgSURMIENvbnN0cnVjdG9y
IGF0dHJpYnV0ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY1ODM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV0lQOiBGb3Igbm93LCB0aGlzIHBhdGNoIHJlcGxhY2VzIFY4Q3VzdG9tQ29uc3RydWN0b3Ig
d2l0aCBDb25zdHJ1Y3RvciBmb3IgWE1MSHR0cFJlcXVlc3QuCisgICAgICAgIFdlIHJlbW92ZSBW
OFhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3BwLCBzaW5jZSB0aGlzIHBhdGNoIGVuYWJsZXMg
Q29kZUdlbmVyYXRvclY4LnBtIHRvCisgICAgICAgIGdlbmVyYXRlIHRoZSBWOCBjb25zdHJ1Y3Rv
ciBvZiBYTUxIdHRwUmVxdWVzdC4KKworICAgICAgICBUZXN0OiBOb25lIGZvciBub3cuCisKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6IFJlbW92ZWQgVjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9y
LmNwcC4KKyAgICAgICAgKiBXZWJDb3JlLnBybzogUmVtb3ZlZCBWOFhNTEh0dHBSZXF1ZXN0Q29u
c3RydWN0b3IuY3BwLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4
LnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOiBHZW5lcmF0ZXMgYSBoZWFkZXIgZm9yIGEg
Y29uc3RydWN0b3IuCisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKTogR2VuZXJhdGVz
IHRoZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRw
UmVxdWVzdENvbnN0cnVjdG9yLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiB4bWwvWE1MSHR0cFJl
cXVlc3QuaWRsOiBSZXBsYWNlZCBWOEN1c3RvbUNvbnN0cnVjdG9yIHdpdGggQ29uc3RydWN0b3Iu
CisKIDIwMTEtMDgtMDcgIEphbWVzIEtvemlhbnNraSAgPGtvekBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgTWFrZSB0aGUgZnVsbHNjcmVlbiBKUyBBUEkgZW5hYmxlZCBhdCBydW50aW1lLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IDhkMGRmZjUuLmFiMjFiMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTIy
MTEsNyArMjIxMSw2IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29j
a2V0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2Vy
Q29udGV4dEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdv
cmtlckN1c3RvbS5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0
dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0
b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFhTTFRQcm9jZXNzb3JDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9ucHJ1bnRpbWUuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggMmYxNTM5Mi4uYmVhOGU2MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5wcm8KQEAgLTIxMiw3ICsyMTIsNiBAQCB2OCB7CiAgICAgICAgIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOFdlYktpdFBvaW50Q29uc3RydWN0b3IuY3BwIFwKICAgICAgICAgYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5n
cy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20uY3BwIFwKLSAgICAgICAgYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAgXAogICAgICAgICBiaW5kaW5ncy92
OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgXAogICAgICAgICBcCiAgICAgICAg
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0RvY3VtZW50Q3VzdG9tLmNwcCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDZi
Mzc5MGUuLjVjNDE5YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0zNDksNyArMzQ5LDcgQEAgRU5ECiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
Q29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOEN1c3Rv
bUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FuQmVD
b25zdHJ1Y3RlZCJ9KSB7CisgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkN1c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
VjhDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkNhbkJlQ29uc3RydWN0ZWQifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
b25zdHJ1Y3RvciJ9KSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKICAg
ICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncyk7CiBFTkQKQEAgLTE5NjksNyArMTk2OSw3IEBAIEVORAogICAg
IHB1c2goQGltcGxDb250ZW50RGVjbHMsICJ9IC8vIG5hbWVzcGFjZSAke2ludGVyZmFjZU5hbWV9
SW50ZXJuYWxcblxuIik7CiAKICAgICAjIEluIG5hbWVzcGFjZSBXZWJDb3JlLCBhZGQgZ2VuZXJh
dGVkIGltcGxlbWVudGF0aW9uIGZvciAnQ2FuQmVDb25zdHJ1Y3RlZCcuCi0gICAgaWYgKCRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbkJlQ29uc3RydWN0ZWQifSAmJiAhJGRhdGFO
b2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ29uc3RydWN0b3IifSAmJiAhJGRhdGFO
b2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhDdXN0b21Db25zdHJ1Y3RvciJ9KSB7CisgICAg
aWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbkJlQ29uc3RydWN0ZWQifSAm
JiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ29uc3RydWN0b3IifSAm
JiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhDdXN0b21Db25zdHJ1Y3RvciJ9
ICYmICEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvciJ9KSB7CiAg
ICAgICAgIG15ICR2OENvbnN0cnVjdEZ1bmN0aW9uOwogICAgICAgICBteSAkY2FsbFdpdGggPSAk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9OwogICAgICAgICBpZiAo
JGNhbGxXaXRoIGFuZCAkY2FsbFdpdGggZXEgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKSB7CkBA
IC0xOTg2LDYgKzE5ODYsMzMgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7Y2xhc3NOYW1lfTo6
Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmcKIEVORAogICAgfQog
CisgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yIn0p
IHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOCR7aW50ZXJmYWNlTmFtZX06OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS4ke2ludGVyZmFjZU5hbWV9LkNv
bnN0cnVjdG9yIik7CisKKyAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCisgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxs
ZWQgYXMgYSBmdW5jdGlvbi4iLCBWOFByb3h5OjpUeXBlRXJyb3IpOworCisgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAg
ICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCIke2ludGVyZmFjZU5h
bWV9IGNvbnN0cnVjdG9yJ3MgYXNzb2NpYXRlZCBjb250ZXh0IGlzIG5vdCBhdmFpbGFibGUiLCBW
OFByb3h5OjpSZWZlcmVuY2VFcnJvcik7CisKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNl
Y3VyaXR5T3JpZ2luOworICAgIGlmIChWOElzb2xhdGVkQ29udGV4dCogaXNvbGF0ZWRDb250ZXh0
ID0gVjhJc29sYXRlZENvbnRleHQ6OmdldEVudGVyZWQoKSkKKyAgICAgICAgc2VjdXJpdHlPcmln
aW4gPSBpc29sYXRlZENvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCk7CisgICAgUmVmUHRyPCR7aW50
ZXJmYWNlTmFtZX0+IG9iaiA9ICR7aW50ZXJmYWNlTmFtZX06OmNyZWF0ZShjb250ZXh0LCBzZWN1
cml0eU9yaWdpbik7CisgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVy
KCksICZpbmZvLCBvYmouZ2V0KCkpOworCisgICAgLy8gQWRkIG9iamVjdCB0byB0aGUgd3JhcHBl
ciBtYXAuCisgICAgb2JqLT5yZWYoKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZv
ckFjdGl2ZURPTU9iamVjdChvYmouZ2V0KCksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpO
ZXcoYXJncy5Ib2xkZXIoKSkpOworICAgIHJldHVybiBhcmdzLkhvbGRlcigpOworfQorRU5ECisg
ICAgfQorCiAgICAgbXkgJGFjY2Vzc19jaGVjayA9ICIiOwogICAgIGlmICgkZGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja0RvbWFpblNlY3VyaXR5In0gJiYgISgkaW50ZXJmYWNl
TmFtZSBlcSAiRE9NV2luZG93IikpIHsKICAgICAgICAgJGFjY2Vzc19jaGVjayA9ICJpbnN0YW5j
ZS0+U2V0QWNjZXNzQ2hlY2tDYWxsYmFja3MoVjgke2ludGVyZmFjZU5hbWV9OjpuYW1lZFNlY3Vy
aXR5Q2hlY2ssIFY4JHtpbnRlcmZhY2VOYW1lfTo6aW5kZXhlZFNlY3VyaXR5Q2hlY2ssIHY4OjpF
eHRlcm5hbDo6V3JhcCgmVjgke2ludGVyZmFjZU5hbWV9OjppbmZvKSk7IjsKQEAgLTIwNDAsOSAr
MjA2Nyw5IEBAIEVORAogICAgICAgICAkaW1wbEluY2x1ZGVzeyJ3dGYvVW51c2VkUGFyYW0uaCJ9
ID0gMTsKICAgICB9CiAKLSAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q3VzdG9tQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJW
OEN1c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q2FuQmVDb25zdHJ1Y3RlZCJ9KSB7CisgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiVjhDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkNhbkJlQ29uc3RydWN0ZWQifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDb25zdHJ1Y3RvciJ9KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7
Ci0gICAgICAgIGRlc2MtPlNldENhbGxIYW5kbGVyKFY4JHtpbnRlcmZhY2VOYW1lfTo6Y29uc3Ry
dWN0b3JDYWxsYmFjayk7CisgICAgZGVzYy0+U2V0Q2FsbEhhbmRsZXIoVjgke2ludGVyZmFjZU5h
bWV9Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKTsKIEVORAogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVz
dENvbnN0cnVjdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmEzZDEwMy4u
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRw
UmVxdWVzdENvbnN0cnVjdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVjhYTUxIdHRwUmVxdWVzdC5oIgotCi0j
aW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJPcmlnaW5BY2Nlc3NFbnRyeS5oIgotI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVkZSAi
VjhJc29sYXRlZENvbnRleHQuaCIKLSNpbmNsdWRlICJWOFByb3h5LmgiCi0jaW5jbHVkZSAiVjhV
dGlsaXRpZXMuaCIKLSNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCi0jaW5jbHVkZSAiV29ya2Vy
Q29udGV4dEV4ZWN1dGlvblByb3h5LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5YTUxIdHRwUmVx
dWVzdC5Db25zdHJ1Y3RvciIpOwotCi0gICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3Qg
YmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKLQotICAgIC8v
IEV4cGVjdCBubyBwYXJhbWV0ZXJzLgotICAgIC8vIEFsbG9jYXRlIGEgWE1MSHR0cFJlcXVlc3Qg
b2JqZWN0IGFzIGl0cyBpbnRlcm5hbCBmaWVsZC4KLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmICghY29udGV4
dCkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIlhNTEh0dHBSZXF1ZXN0IGNvbnN0cnVjdG9y
J3MgYXNzb2NpYXRlZCBjb250ZXh0IGlzIG5vdCBhdmFpbGFibGUiLCBWOFByb3h5OjpSZWZlcmVu
Y2VFcnJvcik7Ci0KLSAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luOwot
ICAgIGlmIChWOElzb2xhdGVkQ29udGV4dCogaXNvbGF0ZWRDb250ZXh0ID0gVjhJc29sYXRlZENv
bnRleHQ6OmdldEVudGVyZWQoKSkKLSAgICAgICAgc2VjdXJpdHlPcmlnaW4gPSBpc29sYXRlZENv
bnRleHQtPnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgUmVmUHRyPFhNTEh0dHBSZXF1ZXN0PiB4bWxI
dHRwUmVxdWVzdCA9IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgc2VjdXJpdHlPcmln
aW4pOwotICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihhcmdzLkhvbGRlcigpLCAmaW5m
bywgeG1sSHR0cFJlcXVlc3QuZ2V0KCkpOwotCi0gICAgLy8gQWRkIG9iamVjdCB0byB0aGUgd3Jh
cHBlciBtYXAuCi0gICAgeG1sSHR0cFJlcXVlc3QtPnJlZigpOwotICAgIFY4RE9NV3JhcHBlcjo6
c2V0SlNXcmFwcGVyRm9yQWN0aXZlRE9NT2JqZWN0KHhtbEh0dHBSZXF1ZXN0LmdldCgpLCB2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGFyZ3MuSG9sZGVyKCkpKTsKLSAgICByZXR1cm4g
YXJncy5Ib2xkZXIoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5pZGwKaW5kZXggYzliNGExZS4uZTBlNWVjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuaWRsCkBAIC0zMiw3ICszMiw3IEBAIG1vZHVsZSB4bWwgewog
ICAgICAgICBBY3RpdmVET01PYmplY3QsCiAgICAgICAgIENhbkJlQ29uc3RydWN0ZWQsCiAgICAg
ICAgIEN1c3RvbUNvbnN0cnVjdEZ1bmN0aW9uLAotICAgICAgICBWOEN1c3RvbUNvbnN0cnVjdG9y
LAorICAgICAgICBDb25zdHJ1Y3RvciwKICAgICAgICAgQ3VzdG9tTWFya0Z1bmN0aW9uLAogICAg
ICAgICBFdmVudFRhcmdldCwKICAgICAgICAgTm9TdGF0aWNUYWJsZXMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103879</attachid>
            <date>2011-08-14 04:26:20 -0700</date>
            <delta_ts>2011-08-18 00:36:25 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>diff.txt</filename>
            <type>text/plain</type>
            <size>54044</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCAxNjg0NGI3Li40ZTRmMzcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0yMTM4LDcgKzIxMzgsNiBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEVu
dHJ5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RW50cnlT
eW5jQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRD
dXN0b20uY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudFNvdXJj
ZUNvbnN0cnVjdG9yLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Rmls
ZVJlYWRlckN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEZs
b2F0MzJBcnJheUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEZsb2F0NjRBcnJheUN1c3RvbS5jcHAnLApAQCAtMjE5OSw3ICsyMTk4LDYgQEAKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhTVkdQYXRoU2VnQ3VzdG9tLmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZUN1c3RvbS5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNw
cCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2hhcmVkV29ya2VyQ3VzdG9t
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3RvcmFnZUN1c3RvbS5j
cHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0eWxlU2hlZXRDdXN0b20u
Y3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhTdHlsZVNoZWV0TGlzdEN1
c3RvbS5jcHAnLApAQCAtMjIwOCw3ICsyMjA2LDYgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhVaW50OEFycmF5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcCcsCi0gICAg
ICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3Iu
Y3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludENvbnN0
cnVjdG9yLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0
Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29u
dGV4dEN1c3RvbS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8g
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA5OTVjMGE5Li5hZjVlNWNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnBybwpAQCAtMTY1LDcgKzE2NSw2IEBAIHY4IHsKICAgICAgICAgYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RG9jdW1lbnRMb2NhdGlvbkN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92
OC9jdXN0b20vVjhFbGVtZW50Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEV2ZW50Q3VzdG9tLmNwcCBcCi0gICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50
U291cmNlQ29uc3RydWN0b3IuY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4Rmls
ZVJlYWRlckN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQWxs
Q29sbGVjdGlvbkN1c3RvbS5jcHAKIApAQCAtMjAzLDEyICsyMDIsMTAgQEAgdjggewogICAgICAg
ICBiaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAgXAogICAgICAg
ICBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwIFwKICAgICAgICAgXAot
ICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhTaGFyZWRXb3JrZXJDdXN0b20uY3BwIFwKICAg
ICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3RvcmFnZUN1c3RvbS5jcHAgXAogICAgICAgICBi
aW5kaW5ncy92OC9jdXN0b20vVjhTdHlsZVNoZWV0Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOFN0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAgXAotICAgICAgICBiaW5k
aW5ncy92OC9jdXN0b20vVjhXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5jcHAgXAogICAgICAg
ICBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludENvbnN0cnVjdG9yLmNwcCBcCiAgICAg
ICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwIFwKICAgICAg
ICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IGQ2YzBm
ZTAuLjBiOWFkZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtCkBAIC0zNDksNyArMzQ5LDcgQEAgRU5ECiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ29u
c3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOEN1c3RvbUNv
bnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FuQmVDb25z
dHJ1Y3RlZCJ9KSB7CisgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNh
bkJlQ29uc3RydWN0ZWQifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0
b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3Vz
dG9tQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25z
dHJ1Y3RvciJ9KSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKICAgICBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncyk7CiBFTkQKQEAgLTEzNDAsNiArMTM0MCwzMCBAQCBFTkQKIEVORAog
ICAgIH0KIAorICAgIG15ICgkcGFyYW1ldGVyQ2hlY2tTdHJpbmcsICRwYXJhbUluZGV4KSA9IEdl
bmVyYXRlUGFyYW1ldGVyc0NoZWNrKCRmdW5jdGlvbiwgJGltcGxDbGFzc05hbWUsIDApOworICAg
IHB1c2goQGltcGxDb250ZW50RGVjbHMsICRwYXJhbWV0ZXJDaGVja1N0cmluZyk7CisKKyAgICAj
IEJ1aWxkIHRoZSBmdW5jdGlvbiBjYWxsIHN0cmluZy4KKyAgICBteSAkY2FsbFN0cmluZyA9IEdl
bmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKCRmdW5jdGlvbiwgJHBhcmFtSW5kZXgsICIgICAgIiwg
JGltcGxDbGFzc05hbWUpOworICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIkY2FsbFN0cmlu
ZyIpOworCisgICAgaWYgKCRyYWlzZXNFeGNlcHRpb25zKSB7CisgICAgICAgIHB1c2goQGltcGxD
b250ZW50RGVjbHMsICIgICAgfVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMs
ICIgICAgZmFpbDpcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIFY4
UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRl
bnREZWNscywgIiAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7XG4iKTsKKyAgICB9
CisKKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAifVxuXG4iKTsKK30KKworc3ViIEdlbmVy
YXRlUGFyYW1ldGVyc0NoZWNrCit7CisgICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CisgICAgbXkg
JGltcGxDbGFzc05hbWUgPSBzaGlmdDsKKyAgICBteSAkaXNDb25zdHJ1Y3RvciA9IHNoaWZ0Owor
CisgICAgbXkgJHBhcmFtZXRlckNoZWNrU3RyaW5nID0gIiI7CiAgICAgbXkgJHBhcmFtSW5kZXgg
PSAwOwogICAgIGZvcmVhY2ggbXkgJHBhcmFtZXRlciAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9
KSB7CiAgICAgICAgIFRyYW5zbGF0ZVBhcmFtZXRlcigkcGFyYW1ldGVyKTsKQEAgLTEzNDgsMTQg
KzEzNzIsMTQgQEAgRU5ECiAKICAgICAgICAgIyBPcHRpb25hbCBjYWxsYmFja3Mgc2hvdWxkIGJl
IHRyZWF0ZWQgZGlmZmVyZW50bHksIGJlY2F1c2UgdGhleSBhbHdheXMgaGF2ZSBhIGRlZmF1bHQg
dmFsdWUgKDApLAogICAgICAgICAjIGFuZCB3ZSBjYW4gcmVkdWNlIHRoZSBudW1iZXIgb2Ygb3Zl
cmxvYWRlZCBmdW5jdGlvbnMgdGhhdCB0YWtlIGEgZGlmZmVyZW50IG51bWJlciBvZiBwYXJhbWV0
ZXJzLgotICAgICAgICAjIE9wdGlvbmFsIGFyZ3VtZW50cyB3aXRoIGRlZmF1bHQgdmFsdWVzIFtP
cHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gc2hvdWxkIG5vdCBnZW5lcmF0ZSBhbiBlYXJs
eSBjYWxsLgorICAgICAgICAjIE9wdGlvbmFsIGFyZ3VtZW50cyB3aXRoIGRlZmF1bHQgdmFsdWVz
IFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gb3IgdW5kZWZpbmVkIHZhbHVlcyBbT3B0
aW9uYWw9Q2FsbFdpdGhVbmRlZmluZWRWYWx1ZV0gc2hvdWxkIG5vdCBnZW5lcmF0ZSBhbiBlYXJs
eSBjYWxsLgogICAgICAgICBteSAkb3B0aW9uYWwgPSAkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiT3B0aW9uYWwifTsgICAgICAgIAotICAgICAgICBpZiAoJG9wdGlvbmFsICYmICRv
cHRpb25hbCBuZSAiQ2FsbFdpdGhEZWZhdWx0VmFsdWUiICYmICEkcGFyYW1ldGVyLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ2FsbGJhY2sifSkgeworICAgICAgICBpZiAoJG9wdGlvbmFsICYmICRv
cHRpb25hbCBuZSAiQ2FsbFdpdGhEZWZhdWx0VmFsdWUiICYmICEkcGFyYW1ldGVyLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ2FsbGJhY2sifSAmJiAkb3B0aW9uYWwgbmUgIkNhbGxXaXRoVW5kZWZp
bmVkVmFsdWUiKSB7CiAgICAgICAgICAgICAjIEdlbmVyYXRlIGVhcmx5IGNhbGwgaWYgdGhlcmUg
YXJlIG5vdCBlbm91Z2ggcGFyYW1ldGVycy4KLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
RGVjbHMsICIgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPD0gJHBhcmFtSW5kZXgpIHtcbiIpOworICAg
ICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgaWYgKGFyZ3MuTGVuZ3RoKCkg
PD0gJHBhcmFtSW5kZXgpIHtcbiI7CiAgICAgICAgICAgICBteSAkZnVuY3Rpb25DYWxsID0gR2Vu
ZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcoJGZ1bmN0aW9uLCAkcGFyYW1JbmRleCwgIiAgICAiIHgg
MiwgJGltcGxDbGFzc05hbWUpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywg
JGZ1bmN0aW9uQ2FsbCk7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAg
IH1cbiIpOworICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICRmdW5jdGlvbkNh
bGw7CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICB9XG4iOwogICAg
ICAgICB9CiAKICAgICAgICAgJGltcGxJbmNsdWRlc3siRXhjZXB0aW9uQ29kZS5oIn0gPSAxOwpA
QCAtMTM2NCwzMyArMTM4OCwzOSBAQCBFTkQKICAgICAgICAgICAgIG15ICRjbGFzc05hbWUgPSBH
ZXRDYWxsYmFja0NsYXNzTmFtZSgkcGFyYW1ldGVyLT50eXBlKTsKICAgICAgICAgICAgICRpbXBs
SW5jbHVkZXN7IiRjbGFzc05hbWUuaCJ9ID0gMTsKICAgICAgICAgICAgIGlmICgkcGFyYW1ldGVy
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT3B0aW9uYWwifSkgewotICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgUmVmUHRyPCIgLiAkcGFyYW1ldGVyLT50eXBlIC4g
Ij4gJHBhcmFtZXRlck5hbWU7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dERlY2xzLCAiICAgIGlmIChhcmdzLkxlbmd0aCgpID4gJHBhcmFtSW5kZXggJiYgIWFyZ3NbJHBh
cmFtSW5kZXhdLT5Jc051bGwoKSAmJiAhYXJnc1skcGFyYW1JbmRleF0tPklzVW5kZWZpbmVkKCkp
IHtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAg
IGlmICghYXJnc1skcGFyYW1JbmRleF0tPklzT2JqZWN0KCkpXG4iKTsKLSAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3Io
VFlQRV9NSVNNQVRDSF9FUlIpO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnREZWNscywgIiAgICAgICAgJHBhcmFtZXRlck5hbWUgPSAke2NsYXNzTmFtZX06OmNyZWF0ZShh
cmdzWyRwYXJhbUluZGV4XSwgZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTtcbiIpOwotICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgfVxuIik7CisgICAgICAg
ICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgUmVmUHRyPCIgLiAkcGFyYW1l
dGVyLT50eXBlIC4gIj4gJHBhcmFtZXRlck5hbWU7XG4iOworICAgICAgICAgICAgICAgICRwYXJh
bWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIGlmIChhcmdzLkxlbmd0aCgpID4gJHBhcmFtSW5kZXgg
JiYgIWFyZ3NbJHBhcmFtSW5kZXhdLT5Jc051bGwoKSAmJiAhYXJnc1skcGFyYW1JbmRleF0tPklz
VW5kZWZpbmVkKCkpIHtcbiI7CisgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5n
IC49ICIgICAgICAgIGlmICghYXJnc1skcGFyYW1JbmRleF0tPklzT2JqZWN0KCkpXG4iOworICAg
ICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICAgICAgcmV0dXJu
IHRocm93RXJyb3IoVFlQRV9NSVNNQVRDSF9FUlIpO1xuIjsKKyAgICAgICAgICAgICAgICAkcGFy
YW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgJHBhcmFtZXRlck5hbWUgPSAke2NsYXNzTmFt
ZX06OmNyZWF0ZShhcmdzWyRwYXJhbUluZGV4XSwgZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTtcbiI7CisgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgfVxu
IjsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnREZWNscywgIiAgICBpZiAoYXJncy5MZW5ndGgoKSA8PSAkcGFyYW1JbmRleCB8fCAhYXJnc1sk
cGFyYW1JbmRleF0tPklzT2JqZWN0KCkpXG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudERlY2xzLCAiICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihUWVBFX01JU01BVENIX0VS
Uik7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIFJl
ZlB0cjwiIC4gJHBhcmFtZXRlci0+dHlwZSAuICI+ICRwYXJhbWV0ZXJOYW1lID0gJHtjbGFzc05h
bWV9OjpjcmVhdGUoYXJnc1skcGFyYW1JbmRleF0sIGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSk7XG4iKTsKKyAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBp
ZiAoYXJncy5MZW5ndGgoKSA8PSAkcGFyYW1JbmRleCB8fCAhYXJnc1skcGFyYW1JbmRleF0tPklz
T2JqZWN0KCkpXG4iOworICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAi
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihUWVBFX01JU01BVENIX0VSUik7XG4iOworICAgICAg
ICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIFJlZlB0cjwiIC4gJHBhcmFt
ZXRlci0+dHlwZSAuICI+ICRwYXJhbWV0ZXJOYW1lID0gJHtjbGFzc05hbWV9OjpjcmVhdGUoYXJn
c1skcGFyYW1JbmRleF0sIGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7XG4iOwogICAgICAg
ICAgICAgfQogICAgICAgICB9IGVsc2lmICgkcGFyYW1ldGVyLT50eXBlIGVxICJTZXJpYWxpemVk
U2NyaXB0VmFsdWUiKSB7CiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaCJ9ID0gMTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIg
ICAgYm9vbCAke3BhcmFtZXRlck5hbWV9RGlkVGhyb3cgPSBmYWxzZTtcbiIpOwotICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAkbmF0aXZlVHlwZSAkcGFyYW1ldGVyTmFt
ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbJHBhcmFtSW5kZXhdLCAke3Bh
cmFtZXRlck5hbWV9RGlkVGhyb3cpO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dERlY2xzLCAiICAgIGlmICgke3BhcmFtZXRlck5hbWV9RGlkVGhyb3cpXG4iKTsKLSAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7XG4iKTsKKyAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIGJvb2wg
JHtwYXJhbWV0ZXJOYW1lfURpZFRocm93ID0gZmFsc2U7XG4iOworICAgICAgICAgICAgJHBhcmFt
ZXRlckNoZWNrU3RyaW5nIC49ICIgICAgJG5hdGl2ZVR5cGUgJHBhcmFtZXRlck5hbWUgPSBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWyRwYXJhbUluZGV4XSwgJHtwYXJhbWV0ZXJO
YW1lfURpZFRocm93KTtcbiI7CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0g
IiAgICBpZiAoJHtwYXJhbWV0ZXJOYW1lfURpZFRocm93KVxuIjsKKyAgICAgICAgICAgICRwYXJh
bWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpO1xuIjsK
ICAgICAgICAgfSBlbHNpZiAoVHlwZUNhbkZhaWxDb252ZXJzaW9uKCRwYXJhbWV0ZXIpKSB7Ci0g
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICRuYXRpdmVUeXBlICRwYXJh
bWV0ZXJOYW1lID0gIiAuCi0gICAgICAgICAgICAgICAgIEpTVmFsdWVUb05hdGl2ZSgkcGFyYW1l
dGVyLCAiYXJnc1skcGFyYW1JbmRleF0iKSAuICI7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50RGVjbHMsICIgICAgaWYgKFVOTElLRUxZKCEkcGFyYW1ldGVyTmFtZSkpIHtcbiIp
OwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAgZWMgPSBUWVBF
X01JU01BVENIX0VSUjtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywg
IiAgICAgICAgZ290byBmYWlsO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERl
Y2xzLCAiICAgIH1cbiIpOworICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIg
ICAgJG5hdGl2ZVR5cGUgJHBhcmFtZXRlck5hbWUgPSAiIC4KKyAgICAgICAgICAgICAgICAgSlNW
YWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICJhcmdzWyRwYXJhbUluZGV4XSIpIC4gIjtcbiI7Cisg
ICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBpZiAoVU5MSUtFTFkoISRw
YXJhbWV0ZXJOYW1lKSkge1xuIjsKKyAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAu
PSAiICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSO1xuIjsKKyAgICAgICAgICAgICRwYXJh
bWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICBnb3RvIGZhaWw7XG4iOworICAgICAgICAgICAg
JHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgfVxuIjsKICAgICAgICAgfSBlbHNpZiAoJG5h
dGl2ZVR5cGUgPX4gL15WOFBhcmFtZXRlci8pIHsKICAgICAgICAgICAgIG15ICR2YWx1ZSA9IEpT
VmFsdWVUb05hdGl2ZSgkcGFyYW1ldGVyLCAiYXJnc1skcGFyYW1JbmRleF0iKTsKLSAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgIiAuIENvbnZlcnRUb1Y4UGFyYW1ldGVy
KCRwYXJhbWV0ZXIsICRuYXRpdmVUeXBlLCAkcGFyYW1ldGVyTmFtZSwgJHZhbHVlKSAuICJcbiIp
OworICAgICAgICAgICAgaWYgKCRvcHRpb25hbCAmJiAkb3B0aW9uYWwgZXEgIkNhbGxXaXRoVW5k
ZWZpbmVkVmFsdWUiKSB7CisgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49
ICIgICAgJG5hdGl2ZVR5cGUgJHBhcmFtZXRlck5hbWUoJHZhbHVlKTtcbiI7CisgICAgICAgICAg
ICB9IGVsc2lmICgkaXNDb25zdHJ1Y3RvcikgeworICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJD
aGVja1N0cmluZyAuPSAiICAgICIgLiBDb252ZXJ0VG9WOFBhcmFtZXRlcigkcGFyYW1ldGVyLCAk
bmF0aXZlVHlwZSwgJHBhcmFtZXRlck5hbWUsICR2YWx1ZSwgIlRIUk9XIiwgIlY4UHJveHk6OlN5
bnRheEVycm9yIikgLiAiXG4iOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAiIC4gQ29udmVydFRvVjhQYXJhbWV0ZXIo
JHBhcmFtZXRlciwgJG5hdGl2ZVR5cGUsICRwYXJhbWV0ZXJOYW1lLCAkdmFsdWUpIC4gIlxuIjsK
KyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICRpbXBsSW5jbHVk
ZXN7IlY4QmluZGluZ01hY3Jvcy5oIn0gPSAxOwogICAgICAgICAgICAgIyBJZiB0aGUgIlN0cmlj
dFR5cGVDaGVja2luZyIgZXh0ZW5kZWQgYXR0cmlidXRlIGlzIHByZXNlbnQsIGFuZCB0aGUgYXJn
dW1lbnQncyB0eXBlIGlzIGFuCkBAIC0xMzk5LDQyICsxNDI5LDEzNyBAQCBFTkQKICAgICAgICAg
ICAgICMgUGVyIHRoZSBXZWIgSURMIGFuZCBFQ01BU2NyaXB0IHNwZWNpZmljYXRpb25zLCBpbmNv
bWluZyB2YWx1ZXMgY2FuIGFsd2F5cyBiZSBjb252ZXJ0ZWQKICAgICAgICAgICAgICMgdG8gYm90
aCBzdHJpbmdzIGFuZCBudW1iZXJzLCBzbyBkbyBub3QgdGhyb3cgVHlwZUVycm9yIGlmIHRoZSBh
cmd1bWVudCBpcyBvZiB0aGVzZQogICAgICAgICAgICAgIyB0eXBlcy4KLSAgICAgICAgICAgIGlm
ICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlN0cmljdFR5cGVD
aGVja2luZyJ9KSB7CisgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUgJiYgJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJTdHJpY3RUeXBlQ2hlY2tp
bmcifSkgewogICAgICAgICAgICAgICAgIG15ICRhcmdWYWx1ZSA9ICJhcmdzWyRwYXJhbUluZGV4
XSI7CiAgICAgICAgICAgICAgICAgbXkgJGFyZ1R5cGUgPSBHZXRUeXBlRnJvbVNpZ25hdHVyZSgk
cGFyYW1ldGVyKTsKICAgICAgICAgICAgICAgICBpZiAoSXNXcmFwcGVyVHlwZSgkYXJnVHlwZSkp
IHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBpZiAo
YXJncy5MZW5ndGgoKSA+ICRwYXJhbUluZGV4ICYmICFpc1VuZGVmaW5lZE9yTnVsbCgkYXJnVmFs
dWUpICYmICFWOCR7YXJnVHlwZX06Okhhc0luc3RhbmNlKCRhcmdWYWx1ZSkpIHtcbiIpOwotICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICAgICBWOFByb3h5
Ojp0aHJvd1R5cGVFcnJvcigpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50RGVjbHMsICIgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpO1xu
Iik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgfVxu
Iik7CisgICAgICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIGlm
IChhcmdzLkxlbmd0aCgpID4gJHBhcmFtSW5kZXggJiYgIWlzVW5kZWZpbmVkT3JOdWxsKCRhcmdW
YWx1ZSkgJiYgIVY4JHthcmdUeXBlfTo6SGFzSW5zdGFuY2UoJGFyZ1ZhbHVlKSkge1xuIjsKKyAg
ICAgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIFY4UHJv
eHk6OnRocm93VHlwZUVycm9yKCk7XG4iOworICAgICAgICAgICAgICAgICAgICAkcGFyYW1ldGVy
Q2hlY2tTdHJpbmcgLj0gIiAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7
XG4iOworICAgICAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICB9
XG4iOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsICIgICAgRVhDRVBUSU9OX0JMT0NLKCRuYXRpdmVUeXBlLCAkcGFy
YW1ldGVyTmFtZSwgIiAuCi0gICAgICAgICAgICAgICAgIEpTVmFsdWVUb05hdGl2ZSgkcGFyYW1l
dGVyLCAiYXJnc1skcGFyYW1JbmRleF0iKSAuICIpO1xuIik7CisgICAgICAgICAgICAkcGFyYW1l
dGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBFWENFUFRJT05fQkxPQ0soJG5hdGl2ZVR5cGUsICRwYXJh
bWV0ZXJOYW1lLCAiIC4KKyAgICAgICAgICAgICAgICAgSlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0
ZXIsICJhcmdzWyRwYXJhbUluZGV4XSIpIC4gIik7XG4iOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKCRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJc0luZGV4In0pIHsKLSAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaWYgKFVOTElLRUxZKCRwYXJhbWV0
ZXJOYW1lIDwgMCkpIHtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywg
IiAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnREZWNscywgIiAgICAgICAgZ290byBmYWlsO1xuIik7Ci0gICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudERlY2xzLCAiICAgIH1cbiIpOworICAgICAgICAgICAgJHBhcmFtZXRlckNo
ZWNrU3RyaW5nIC49ICIgICAgaWYgKFVOTElLRUxZKCRwYXJhbWV0ZXJOYW1lIDwgMCkpIHtcbiI7
CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgZWMgPSBJTkRF
WF9TSVpFX0VSUjtcbiI7CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAg
ICAgICAgZ290byBmYWlsO1xuIjsKKyAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAu
PSAiICAgIH1cbiI7CiAgICAgICAgIH0KIAogICAgICAgICAkcGFyYW1JbmRleCsrOwogICAgIH0K
KyAgICByZXR1cm4gKCRwYXJhbWV0ZXJDaGVja1N0cmluZywgJHBhcmFtSW5kZXgpOworfQorCitz
dWIgR2VuZXJhdGVDb25zdHJ1Y3RvckNhbGxiYWNrCit7CisgICAgbXkgJGZ1bmN0aW9uID0gc2hp
ZnQ7CisgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CisgICAgbXkgJGltcGxDbGFzc05hbWUgPSBz
aGlmdDsKKworICAgIG15ICRyYWlzZXNFeGNlcHRpb25zID0gQHskZnVuY3Rpb24tPnJhaXNlc0V4
Y2VwdGlvbnN9OworICAgIGlmIChJc0NvbnRhaW5WYWx1ZSgiQ3JlYXRlRXhjZXB0aW9uIiwgJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JXaXRoIn0pKSB7CisgICAg
ICAgICRyYWlzZXNFeGNlcHRpb25zID0gMTsKKyAgICB9CisgICAgaWYgKCEkcmFpc2VzRXhjZXB0
aW9ucykgeworICAgICAgICBmb3JlYWNoIG15ICRwYXJhbWV0ZXIgKEB7JGZ1bmN0aW9uLT5wYXJh
bWV0ZXJzfSkgeworICAgICAgICAgICAgaWYgKCghJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkNhbGxiYWNrIn0gYW5kIFR5cGVDYW5GYWlsQ29udmVyc2lvbigkcGFyYW1ldGVyKSkg
b3IgJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IklzSW5kZXgifSkgeworICAgICAg
ICAgICAgICAgICRyYWlzZXNFeGNlcHRpb25zID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KIAotICAgICMgQnVpbGQgdGhlIGZ1bmN0aW9uIGNhbGwgc3RyaW5nLgotICAgIG15
ICRjYWxsU3RyaW5nID0gR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcoJGZ1bmN0aW9uLCAkcGFy
YW1JbmRleCwgIiAgICAiLCAkaW1wbENsYXNzTmFtZSk7Ci0gICAgcHVzaChAaW1wbENvbnRlbnRE
ZWNscywgIiRjYWxsU3RyaW5nIik7CisgICAgbXkgQGV4dHJhQXJndW1lbnRMaXN0OworICAgIHB1
c2goQGltcGxDb250ZW50LCA8PEVORCk7Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjgke2ltcGxD
bGFzc05hbWV9Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
Cit7CisgICAgSU5DX1NUQVRTKCJET00uJHtpbXBsQ2xhc3NOYW1lfS5Db25zdHJ1Y3RvciIpOwor
CisgICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQorICAgICAgICByZXR1cm4gdGhyb3dF
cnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rp
b24uIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKK0VORAogCiAgICAgaWYgKCRyYWlzZXNFeGNlcHRp
b25zKSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgfVxuIik7Ci0gICAg
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgZmFpbDpcbiIpOwotICAgICAgICBwdXNo
KEBpbXBsQ29udGVudERlY2xzLCAiICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7XG4i
KTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICByZXR1cm4gdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+KCk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsK
KyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKK0VORAogICAgIH0KIAotICAgIHB1c2goQGltcGxD
b250ZW50RGVjbHMsICJ9XG5cbiIpOworICAgIG15ICgkcGFyYW1ldGVyQ2hlY2tTdHJpbmcsICRw
YXJhbUluZGV4KSA9IEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKCRmdW5jdGlvbiwgJGltcGxDbGFz
c05hbWUsIDEpOworICAgIHB1c2goQGltcGxDb250ZW50LCAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcp
OworCisgICAgaWYgKElzQ29udGFpblZhbHVlKCJTY3JpcHRFeGVjdXRpb25Db250ZXh0IiwgJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JXaXRoIn0pKSB7CisgICAg
ICAgIHB1c2goQGV4dHJhQXJndW1lbnRMaXN0LCAiY29udGV4dCIpOworICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgPDxFTkQpOworCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKCIke2ltcGxDbGFzc05hbWV9IGNvbnN0cnVjdG9yJ3MgYXNz
b2NpYXRlZCBjb250ZXh0IGlzIG5vdCBhdmFpbGFibGUiLCBWOFByb3h5OjpSZWZlcmVuY2VFcnJv
cik7CitFTkQKKyAgICB9CisKKyAgICBpZiAoSXNDb250YWluVmFsdWUoIkNyZWF0ZUV4Y2VwdGlv
biIsICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yV2l0aCJ9KSkg
eworICAgICAgICBwdXNoKEBleHRyYUFyZ3VtZW50TGlzdCwgImVjIik7CisgICAgfQorCisgICAg
bXkgQGFyZ3VtZW50TGlzdDsKKyAgICBteSAkaW5kZXggPSAwOworICAgIGZvcmVhY2ggbXkgJHBh
cmFtZXRlciAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7CisgICAgICAgIGxhc3QgaWYgJGlu
ZGV4IGVxICRwYXJhbUluZGV4OworICAgICAgICBwdXNoKEBhcmd1bWVudExpc3QsICRwYXJhbWV0
ZXItPm5hbWUpOworICAgICAgICAkaW5kZXgrKzsKKyAgICB9CisKKyAgICBteSAkYXJndW1lbnRT
dHJpbmcgPSBqb2luKCIsICIsIEBhcmd1bWVudExpc3QsIEBleHRyYUFyZ3VtZW50TGlzdCk7Cisg
ICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKKworICAgIFJlZlB0cjwke2ltcGxDbGFzc05h
bWV9PiBvYmogPSAke2ltcGxDbGFzc05hbWV9OjpjcmVhdGUoJHthcmd1bWVudFN0cmluZ30pOwor
RU5ECisKKyAgICBpZiAoSXNDb250YWluVmFsdWUoIkNyZWF0ZUV4Y2VwdGlvbiIsICRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yV2l0aCJ9KSkgeworICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOworICAgIGlmIChlYykKKyAgICAgICAgZ290byBmYWls
OworRU5ECisgICAgfQorCisgICAgbXkgJERPTU9iamVjdCA9IChJc0NvbnRhaW5WYWx1ZSgiRE9N
T2JqZWN0IiwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JXaXRo
In0pKSA/ICJET01PYmplY3QiIDogIkFjdGl2ZURPTU9iamVjdCI7CisgICAgcHVzaChAaW1wbENv
bnRlbnQsIDw8RU5EKTsKKworICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihhcmdzLkhv
bGRlcigpLCAmaW5mbywgb2JqLmdldCgpKTsKKyAgICBvYmotPnJlZigpOworICAgIFY4RE9NV3Jh
cHBlcjo6c2V0SlNXcmFwcGVyRm9yJHtET01PYmplY3R9KG9iai5nZXQoKSwgdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD46Ok5ldyhhcmdzLkhvbGRlcigpKSk7CisgICAgcmV0dXJuIGFyZ3MuSG9s
ZGVyKCk7CitFTkQKKworICAgIGlmICgkcmFpc2VzRXhjZXB0aW9ucykgeworICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgPDxFTkQpOworICBmYWlsOgorICAgIHJldHVybiB0aHJvd0Vycm9yKGVj
KTsKK0VORAorICAgIH0KKworICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Cit9CisKK0VO
RAorfQorCitzdWIgSXNDb250YWluVmFsdWUKK3sKKyAgICBteSAkc2VhcmNoVmFsdWUgPSBzaGlm
dDsKKyAgICBteSAkb3JTZXBhcmF0ZWRWYWx1ZVN0cmluZyA9IHNoaWZ0OworICAgIHJldHVybiAw
IGlmICEkc2VhcmNoVmFsdWUgfHwgISRvclNlcGFyYXRlZFZhbHVlU3RyaW5nOworCisgICAgbXkg
QHZhbHVlTGlzdCA9IHNwbGl0KC9cfC8sICRvclNlcGFyYXRlZFZhbHVlU3RyaW5nKTsKKyAgICBm
b3JlYWNoIG15ICR2YWx1ZSAoQHZhbHVlTGlzdCkgeworICAgICAgICByZXR1cm4gMSBpZiAkdmFs
dWUgZXEgJHNlYXJjaFZhbHVlOworICAgIH0KKyAgICByZXR1cm4gMDsKIH0KIAogc3ViIEdlbmVy
YXRlQmF0Y2hlZEF0dHJpYnV0ZURhdGEKQEAgLTE4OTYsNyArMjAyMSw3IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgaWYgKEBkaXNhbGxvd3NTaGFkb3dpbmcpIHsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSBzaGFkb3dB
dHRyc1tdID0ge1xuIik7CiAgICAgICAgIEdlbmVyYXRlQmF0Y2hlZEF0dHJpYnV0ZURhdGEoJGRh
dGFOb2RlLCBcQGRpc2FsbG93c1NoYWRvd2luZyk7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAifTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn07XG5cbiIpOwogICAgIH0K
IAogICAgIG15ICRoYXNfYXR0cmlidXRlcyA9IDA7CkBAIC0xOTA0LDcgKzIwMjksNyBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAkaGFzX2F0dHJpYnV0ZXMgPSAxOwogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBjb25zdCBCYXRjaGVkQXR0cmlidXRlICR7
aW50ZXJmYWNlTmFtZX1BdHRyc1tdID0ge1xuIik7CiAgICAgICAgIEdlbmVyYXRlQmF0Y2hlZEF0
dHJpYnV0ZURhdGEoJGRhdGFOb2RlLCAkYXR0cmlidXRlcyk7Ci0gICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAifTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn07XG5cbiIpOwog
ICAgIH0KIAogICAgICMgU2V0dXAgdGFibGUgb2Ygc3RhbmRhcmQgY2FsbGJhY2sgZnVuY3Rpb25z
CkBAIC0xOTQzLDcgKzIwNjgsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogRU5ECiAg
ICAgICAgICRudW1fY2FsbGJhY2tzKys7CiAgICAgfQotICAgIHB1c2goQGltcGxDb250ZW50LCAi
fTtcbiIpICBpZiAkaGFzX2NhbGxiYWNrczsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIn07XG5c
biIpICBpZiAkaGFzX2NhbGxiYWNrczsKIAogICAgICMgU2V0dXAgY29uc3RhbnRzCiAgICAgbXkg
JGhhc19jb25zdGFudHMgPSAwOwpAQCAtMTk2MiwxNCArMjA4NywxNCBAQCBFTkQKIEVORAogICAg
IH0KICAgICBpZiAoJGhhc19jb25zdGFudHMpIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ9O1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifTtcblxuIik7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb21waWxlVGltZUNo
ZWNrRm9yRW51bXNJZk5lZWRlZCgkZGF0YU5vZGUpKTsKICAgICB9CiAKICAgICBwdXNoKEBpbXBs
Q29udGVudERlY2xzLCAifSAvLyBuYW1lc3BhY2UgJHtpbnRlcmZhY2VOYW1lfUludGVybmFsXG5c
biIpOwogCiAgICAgIyBJbiBuYW1lc3BhY2UgV2ViQ29yZSwgYWRkIGdlbmVyYXRlZCBpbXBsZW1l
bnRhdGlvbiBmb3IgJ0NhbkJlQ29uc3RydWN0ZWQnLgotICAgIGlmICgkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDYW5CZUNvbnN0cnVjdGVkIn0gJiYgISRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn0gJiYgISRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tQ29uc3RydWN0b3IifSkgeworICAgIGlmICgkZGF0YU5v
ZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYW5CZUNvbnN0cnVjdGVkIn0gJiYgISRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn0gJiYgISRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tQ29uc3RydWN0b3IifSAmJiAhJGRhdGFO
b2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3IifSkgewogICAgICAgICBteSAk
djhDb25zdHJ1Y3RGdW5jdGlvbjsKICAgICAgICAgbXkgJGNhbGxXaXRoID0gJGRhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifTsKICAgICAgICAgaWYgKCRjYWxsV2l0aCBh
bmQgJGNhbGxXaXRoIGVxICJTY3JpcHRFeGVjdXRpb25Db250ZXh0IikgewpAQCAtMTk4Myw4ICsy
MTA4LDEzIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke2NsYXNzTmFtZX06OmNvbnN0cnVjdG9y
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJnCiAgICAgSU5DX1NUQVRTKCJET00uJHtp
bnRlcmZhY2VOYW1lfS5Db250cnVjdG9yIik7CiAgICAgcmV0dXJuIFY4UHJveHk6OiR7djhDb25z
dHJ1Y3RGdW5jdGlvbn08JGludGVyZmFjZU5hbWU+KGFyZ3MsICZpbmZvKTsKIH0KKwogRU5ECi0g
ICB9CisgICAgfQorCisgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNv
bnN0cnVjdG9yIn0pIHsKKyAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckNhbGxiYWNrKCRkYXRh
Tm9kZS0+Y29uc3RydWN0b3IsICRkYXRhTm9kZSwgJGludGVyZmFjZU5hbWUpOworICAgIH0KIAog
ICAgIG15ICRhY2Nlc3NfY2hlY2sgPSAiIjsKICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ2hlY2tEb21haW5TZWN1cml0eSJ9ICYmICEoJGludGVyZmFjZU5hbWUgZXEg
IkRPTVdpbmRvdyIpKSB7CkBAIC0yMDQyLDkgKzIxNzIsOSBAQCBFTkQKICAgICAgICAgJGltcGxJ
bmNsdWRlc3sid3RmL1VudXNlZFBhcmFtLmgifSA9IDE7CiAgICAgfQogCi0gICAgaWYgKCRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFO
b2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbkJlQ29uc3RydWN0ZWQifSkgeworICAgIGlm
ICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYW5CZUNvbnN0cnVjdGVkIn0gfHwg
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ29uc3RydWN0b3IifSB8fCAk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOEN1c3RvbUNvbnN0cnVjdG9yIn0gfHwg
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0ZXIifSkgewogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotICAgICAgICBkZXNjLT5TZXRDYWxsSGFuZGxl
cihWOCR7aW50ZXJmYWNlTmFtZX06OmNvbnN0cnVjdG9yQ2FsbGJhY2spOworICAgIGRlc2MtPlNl
dENhbGxIYW5kbGVyKFY4JHtpbnRlcmZhY2VOYW1lfTo6Y29uc3RydWN0b3JDYWxsYmFjayk7CiBF
TkQKICAgICB9CiAKQEAgLTMxMTYsNyArMzI0Niw3IEBAIHN1YiBSZXF1aXJlc0N1c3RvbVNpZ25h
dHVyZQogICAgIH0KICAgICBmb3JlYWNoIG15ICRwYXJhbWV0ZXIgKEB7JGZ1bmN0aW9uLT5wYXJh
bWV0ZXJzfSkgewogICAgICAgICBteSAkb3B0aW9uYWwgPSAkcGFyYW1ldGVyLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiT3B0aW9uYWwifTsKLSAgICAgICAgaWYgKCgkb3B0aW9uYWwgJiYgKCRvcHRp
b25hbCBuZSAiQ2FsbFdpdGhEZWZhdWx0VmFsdWUiKSkgfHwgJHBhcmFtZXRlci0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkNhbGxiYWNrIn0pIHsKKyAgICAgICAgaWYgKCgkb3B0aW9uYWwgJiYgKCRv
cHRpb25hbCBuZSAiQ2FsbFdpdGhEZWZhdWx0VmFsdWUiKSkgfHwgJHBhcmFtZXRlci0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkNhbGxiYWNrIn0gfHwgJG9wdGlvbmFsIG5lICJDYWxsV2l0aFVuZGVm
aW5lZFZhbHVlIikgewogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICB9CkBA
IC0zMzM5LDEzICszNDY5LDE4IEBAIHN1YiBDb252ZXJ0VG9WOFBhcmFtZXRlcgogICAgIG15ICR2
YXJpYWJsZU5hbWUgPSBzaGlmdDsKICAgICBteSAkdmFsdWUgPSBzaGlmdDsKICAgICBteSAkc3Vm
Zml4ID0gc2hpZnQ7CisgICAgbXkgJGVyciA9IHNoaWZ0OwogCiAgICAgZGllICJXcm9uZyBuYXRp
dmUgdHlwZSBwYXNzZWQ6ICRuYXRpdmVUeXBlIiB1bmxlc3MgJG5hdGl2ZVR5cGUgPX4gL15WOFBh
cmFtZXRlci87CiAgICAgaWYgKCRzaWduYXR1cmUtPnR5cGUgZXEgIkRPTVN0cmluZyIpIHsKICAg
ICAgICAgJGltcGxJbmNsdWRlc3siVjhCaW5kaW5nTWFjcm9zLmgifSA9IDE7CiAgICAgICAgIG15
ICRtYWNybyA9ICJTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLIjsKICAgICAg
ICAgJG1hY3JvIC49ICJfJHN1ZmZpeCIgaWYgJHN1ZmZpeDsKLSAgICAgICAgcmV0dXJuICIkbWFj
cm8oJG5hdGl2ZVR5cGUsICR2YXJpYWJsZU5hbWUsICR2YWx1ZSk7IgorICAgICAgICBpZiAoJHN1
ZmZpeCAmJiAkc3VmZml4IGVxICJUSFJPVyIpIHsKKyAgICAgICAgICAgIHJldHVybiAiJG1hY3Jv
KCRuYXRpdmVUeXBlLCAkdmFyaWFibGVOYW1lLCAkdmFsdWUsICRlcnIpOyIKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIHJldHVybiAiJG1hY3JvKCRuYXRpdmVUeXBlLCAkdmFyaWFibGVO
YW1lLCAkdmFsdWUpOyIKKyAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgICMgRG9uJ3Qg
a25vdyBob3cgdG8gcHJvcGVybHkgY2hlY2sgZm9yIGNvbnZlcnNpb24gZXhjZXB0aW9ucyB3aGVu
ICRwYXJhbWV0ZXItPnR5cGUgaXMgIkRPTVVzZXJEYXRhIgogICAgICAgICByZXR1cm4gIiRuYXRp
dmVUeXBlICR2YXJpYWJsZU5hbWUoJHZhbHVlLCB0cnVlKTsiOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQppbmRleCAwMmZhNjI3Li4yY2E0NzVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQpAQCAtMjIsNiAr
MjIsNyBAQAogcGFja2FnZSBJRExQYXJzZXI7CiAKIHVzZSBzdHJpY3Q7Cit1c2UgcmUgJ2V2YWwn
OwogCiB1c2UgSVBDOjpPcGVuMjsKIHVzZSBJRExTdHJ1Y3R1cmU7CkBAIC0xMTMsNyArMTE0LDcg
QEAgc3ViIFBhcnNlTW9kdWxlCiAgICAgbXkgJGRhdGEgPSBqb2luKCIiLCBAdGVtcG9yYXJ5Q29u
dGVudCk7CiAgICAgJGRhdGEgPX4gLyRJRExTdHJ1Y3R1cmU6Om1vZHVsZVNlbGVjdG9yLzsKIAot
ICAgIG15ICRtb2R1bGVOYW1lID0gKGRlZmluZWQoJDEpID8gJDEgOiBkaWUoIlBhcnNpbmcgZXJy
b3IhXG5Tb3VyY2U6XG4kZGF0YVxuKSIpKTsKKyAgICBteSAkbW9kdWxlTmFtZSA9IChkZWZpbmVk
KCQxKSA/ICQxIDogZGllKCJhIFBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kZGF0YVxuKSIpKTsK
ICAgICAkZGF0YU5vZGUtPm1vZHVsZSgkbW9kdWxlTmFtZSk7CiAKICAgICBwcmludCAiICB8LS0t
LT4gTW9kdWxlOyBOQU1FIFwiJG1vZHVsZU5hbWVcIlxuIHwtXG4gfFxuIiB1bmxlc3MgJGJlUXVp
ZXQ7CkBAIC0xMzksMjIgKzE0MCw4OCBAQCBzdWIgZHVtcEV4dGVuZGVkQXR0cmlidXRlcwogc3Vi
IHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVzCiB7CiAgICAgbXkgJHN0ciA9IHNoaWZ0OwotICAgICRz
dHIgPX4gcy9cW1xzKiguKj8pXHMqXF0vJDEvZzsKKyAgICAkc3RyID1+IHMvXFtccyooLiopXHMq
XF0vJDEvZzsKIAogICAgIG15ICVhdHRycyA9ICgpOwogCi0gICAgZm9yZWFjaCBteSAkdmFsdWUg
KHNwbGl0KC9ccyosXHMqLywgJHN0cikpIHsKLSAgICAgICAgKG15ICRuYW1lLCBteSAkdmFsKSA9
IHNwbGl0KC9ccyo9XHMqLywgJHZhbHVlLCAyKTsKLQotICAgICAgICAjIEF0dHJpYnV0ZXMgd2l0
aCBubyB2YWx1ZSBhcmUgc2V0IHRvIGJlIHRydWUKLSAgICAgICAgJHZhbCA9IDEgdW5sZXNzIGRl
ZmluZWQgJHZhbDsKLSAgICAgICAgJGF0dHJzeyRuYW1lfSA9ICR2YWw7Ci0gICAgICAgIGRpZSgi
SW52YWxpZCBleHRlbmRlZCBhdHRyaWJ1dGUgbmFtZTogJyRuYW1lJ1xuIikgaWYgJG5hbWUgPX4g
L1xzLzsKKyAgICB3aGlsZSAoJHN0ciAhfiAvXlxzKiQvKSB7CisgICAgICAgICMgUGFyc2UgbmFt
ZQorICAgICAgICBpZiAoJHN0ciAhfiAvXlxzKihbXHdcZF0rKS8pIHsKKyAgICAgICAgICAgIGRp
ZSgiMSBJbnZhbGlkIGV4dGVuZGVkIGF0dHJpYnV0ZTogJyRzdHInXG4iKTsKKyAgICAgICAgfQor
ICAgICAgICBteSAkbmFtZSA9ICQxOworICAgICAgICAkc3RyID1+IHMvXlxzKihbXHdcZF0rKS8v
OworCisgICAgICAgIGlmICgkc3RyID1+IC9eXHMqPS8pIHsKKyAgICAgICAgICAgICMgUGFyc2Ug
Jz0nIHZhbHVlIHwgJz0nIHZhbHVlICcsJworICAgICAgICAgICAgJHN0ciA9fiBzL15ccyo9Ly87
CisgICAgICAgICAgICBpZiAoJHN0ciA9fiAvXlxzKihbXixdKiksPy8pIHsKKyAgICAgICAgICAg
ICAgICAkYXR0cnN7JG5hbWV9ID0gJDE7CisgICAgICAgICAgICAgICAgJGF0dHJzeyRuYW1lfSA9
fiBzL14oLio/KVxzKiQvJDEvOworICAgICAgICAgICAgICAgICRzdHIgPX4gcy9eXHMqKFteLF0q
KSw/Ly87CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpZSgiMiBJbnZh
bGlkIGV4dGVuZGVkIGF0dHJpYnV0ZTogJyRzdHInXG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSBlbHNpZiAoJHN0ciA9fiAvXlxzKlwoLykgeworICAgICAgICAgICAgIyBQYXJzZSAnKCcg
YXJndW1lbnRzICcpJyB8ICcoJyBhcmd1bWVudHMgJyknICcsJworICAgICAgICAgICAgJGF0dHJz
eyRuYW1lfSA9IDE7CisgICAgICAgICAgICAkc3RyID1+IHMvXlxzKlwoLy87CisgICAgICAgICAg
ICBpZiAoJHN0ciA9fiAvXihbXildKilcKSw/LykgeworICAgICAgICAgICAgICAgICRhdHRyc3sk
bmFtZX0gPSAkMTsKKyAgICAgICAgICAgICAgICAkYXR0cnN7JG5hbWV9ID1+IHMvXiguKj8pXHMq
JC8kMS87CisgICAgICAgICAgICAgICAgJHN0ciA9fiBzL14oW14pXSopXCksPy8vOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaWUoIjMgSW52YWxpZCBleHRlbmRlZCBh
dHRyaWJ1dGU6ICckc3RyJ1xuIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzaWYgKCRz
dHIgPX4gL15ccyosPy8pIHsKKyAgICAgICAgICAgICMgUGFyc2UgJycgfCAnLCcKKyAgICAgICAg
ICAgIGlmICgkbmFtZSBlcSAiQ29uc3RydWN0b3IiKSB7CisgICAgICAgICAgICAgICAgJGF0dHJz
eyRuYW1lfSA9ICIiOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAkYXR0
cnN7JG5hbWV9ID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICRzdHIgPX4gcy9eXHMq
LD8vLzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRpZSgiNCBJbnZhbGlkIGV4dGVu
ZGVkIGF0dHJpYnV0ZTogJyRzdHInXG4iKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVy
biBcJWF0dHJzOwogfQogCitzdWIgcGFyc2VQYXJhbWV0ZXJzCit7CisgICAgbXkgJG5ld0RhdGFO
b2RlID0gc2hpZnQ7CisgICAgbXkgJG1ldGhvZFNpZ25hdHVyZSA9IHNoaWZ0OworCisgICAgIyBT
cGxpdCBhcmd1bWVudHMgYXQgY29tbWFzIGJ1dCBvbmx5IGlmIHRoZSBjb21tYQorICAgICMgaXMg
bm90IHdpdGhpbiBhdHRyaWJ1dGUgYnJhY2tldHMsIGV4cHJlc3NlZCBoZXJlCisgICAgIyBhcyBi
ZWluZyBmb2xsb3dlZCBieSBhICddJyB3aXRob3V0IGEgcHJlY2VkaW5nICdbJy4KKyAgICAjIE5v
dGUgdGhhdCB0aGlzIGFzc3VtZXMgdGhhdCBhdHRyaWJ1dGVzIGRvbid0IG5lc3QuCisgICAgbXkg
QHBhcmFtcyA9IHNwbGl0KC8sKD8hW15bXSpcXSkvLCAkbWV0aG9kU2lnbmF0dXJlKTsKKyAgICBm
b3JlYWNoIChAcGFyYW1zKSB7CisgICAgICAgIG15ICRsaW5lID0gJF87CisKKyAgICAgICAgJGxp
bmUgPX4gLyRJRExTdHJ1Y3R1cmU6OmludGVyZmFjZVBhcmFtZXRlclNlbGVjdG9yLzsKKyAgICAg
ICAgbXkgJHBhcmFtRGlyZWN0aW9uID0gJDE7CisgICAgICAgIG15ICRwYXJhbUV4dGVuZGVkQXR0
cmlidXRlcyA9IChkZWZpbmVkKCQyKSA/ICQyIDogIiAiKTsgY2hvcCgkcGFyYW1FeHRlbmRlZEF0
dHJpYnV0ZXMpOworICAgICAgICBteSAkcGFyYW1UeXBlID0gKGRlZmluZWQoJDMpID8gJDMgOiBk
aWUoImIgUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOworICAgICAgICBteSAk
cGFyYW1OYW1lID0gKGRlZmluZWQoJDQpID8gJDQgOiBkaWUoImMgUGFyc2luZyBlcnJvciFcblNv
dXJjZTpcbiRsaW5lXG4pIikpOworCisgICAgICAgIG15ICRwYXJhbURhdGFOb2RlID0gbmV3IGRv
bVNpZ25hdHVyZSgpOworICAgICAgICAkcGFyYW1EYXRhTm9kZS0+ZGlyZWN0aW9uKCRwYXJhbURp
cmVjdGlvbik7CisgICAgICAgICRwYXJhbURhdGFOb2RlLT5uYW1lKCRwYXJhbU5hbWUpOworICAg
ICAgICAkcGFyYW1EYXRhTm9kZS0+dHlwZSgkcGFyYW1UeXBlKTsKKyAgICAgICAgJHBhcmFtRGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcyhwYXJzZUV4dGVuZGVkQXR0cmlidXRlcygkcGFyYW1F
eHRlbmRlZEF0dHJpYnV0ZXMpKTsKKworICAgICAgICBteSAkYXJyYXlSZWYgPSAkbmV3RGF0YU5v
ZGUtPnBhcmFtZXRlcnM7CisgICAgICAgIHB1c2goQCRhcnJheVJlZiwgJHBhcmFtRGF0YU5vZGUp
OworCisgICAgICAgIHByaW50ICIgIHwgICB8PiAgUGFyYW07IFRZUEUgXCIkcGFyYW1UeXBlXCIg
TkFNRSBcIiRwYXJhbU5hbWVcIiIgLiAKKyAgICAgICAgICAgIGR1bXBFeHRlbmRlZEF0dHJpYnV0
ZXMoIlxuICB8ICAgICAgICAgICAgICAiLCAkcGFyYW1EYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzKSAuICJcbiIgdW5sZXNzICRiZVF1aWV0OyAgICAgICAgICAKKyAgICB9Cit9CisKIHN1YiBQ
YXJzZUludGVyZmFjZQogewogICAgIG15ICRvYmplY3QgPSBzaGlmdDsKQEAgLTE4MCwxNSArMjQ3
LDE1IEBAIHN1YiBQYXJzZUludGVyZmFjZQogCiAgICAgICAgICMgTWF0Y2ggaWRlbnRpZmllciBv
ZiB0aGUgZXhjZXB0aW9uLCBhbmQgZW5jbG9zZWQgZGF0YS4uLgogICAgICAgICAkZGF0YSA9fiAv
JElETFN0cnVjdHVyZTo6ZXhjZXB0aW9uU2VsZWN0b3IvOwotICAgICAgICAkZXhjZXB0aW9uTmFt
ZSA9IChkZWZpbmVkKCQxKSA/ICQxIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGRh
dGFcbikiKSk7Ci0gICAgICAgICRleGNlcHRpb25EYXRhID0gKGRlZmluZWQoJDIpID8gJDIgOiBk
aWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kZGF0YVxuKSIpKTsKKyAgICAgICAgJGV4Y2Vw
dGlvbk5hbWUgPSAoZGVmaW5lZCgkMSkgPyAkMSA6IGRpZSgiZCBQYXJzaW5nIGVycm9yIVxuU291
cmNlOlxuJGRhdGFcbikiKSk7CisgICAgICAgICRleGNlcHRpb25EYXRhID0gKGRlZmluZWQoJDIp
ID8gJDIgOiBkaWUoImUgUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRkYXRhXG4pIikpOwogCiAg
ICAgICAgICgnJyA9fiAvXi8pOyAjIFJlc2V0IHZhcmlhYmxlcyBuZWVkZWQgZm9yIHJlZ2V4cCBt
YXRjaGluZwogCiAgICAgICAgICMgLi4uIHBhcnNlIGVuY2xvc2VkIGRhdGEgKGdldC4gbmFtZSAm
IHR5cGUpCiAgICAgICAgICRleGNlcHRpb25EYXRhID1+IC8kSURMU3RydWN0dXJlOjpleGNlcHRp
b25TdWJTZWxlY3Rvci87Ci0gICAgICAgICRleGNlcHRpb25EYXRhVHlwZSA9IChkZWZpbmVkKCQx
KSA/ICQxIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGRhdGFcbikiKSk7Ci0gICAg
ICAgICRleGNlcHRpb25EYXRhTmFtZSA9IChkZWZpbmVkKCQyKSA/ICQyIDogZGllKCJQYXJzaW5n
IGVycm9yIVxuU291cmNlOlxuJGRhdGFcbikiKSk7CisgICAgICAgICRleGNlcHRpb25EYXRhVHlw
ZSA9IChkZWZpbmVkKCQxKSA/ICQxIDogZGllKCJmIFBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4k
ZGF0YVxuKSIpKTsKKyAgICAgICAgJGV4Y2VwdGlvbkRhdGFOYW1lID0gKGRlZmluZWQoJDIpID8g
JDIgOiBkaWUoImcgUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRkYXRhXG4pIikpOwogCiAgICAg
ICAgICMgRmlsbCBpbiBkb21DbGFzcyBkYXRhc3RydWN0dXJlCiAgICAgICAgICRkYXRhTm9kZS0+
bmFtZSgkZXhjZXB0aW9uTmFtZSk7CkBAIC0yMTQsMTMgKzI4MSwyMCBAQCBzdWIgUGFyc2VJbnRl
cmZhY2UKICAgICAgICAgJGRhdGEgPX4gLyRJRExTdHJ1Y3R1cmU6OmludGVyZmFjZVNlbGVjdG9y
LzsKIAogICAgICAgICBteSAkaW50ZXJmYWNlRXh0ZW5kZWRBdHRyaWJ1dGVzID0gKGRlZmluZWQo
JDEpID8gJDEgOiAiICIpOyBjaG9wKCRpbnRlcmZhY2VFeHRlbmRlZEF0dHJpYnV0ZXMpOwotICAg
ICAgICAkaW50ZXJmYWNlTmFtZSA9IChkZWZpbmVkKCQyKSA/ICQyIDogZGllKCJQYXJzaW5nIGVy
cm9yIVxuU291cmNlOlxuJGRhdGFcbikiKSk7CisgICAgICAgICRpbnRlcmZhY2VOYW1lID0gKGRl
ZmluZWQoJDIpID8gJDIgOiBkaWUoImggUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRkYXRhXG4p
IikpOwogICAgICAgICBteSAkaW50ZXJmYWNlQmFzZSA9IChkZWZpbmVkKCQzKSA/ICQzIDogIiIp
OwotICAgICAgICAkaW50ZXJmYWNlRGF0YSA9IChkZWZpbmVkKCQ0KSA/ICQ0IDogZGllKCJQYXJz
aW5nIGVycm9yIVxuU291cmNlOlxuJGRhdGFcbikiKSk7CisgICAgICAgICRpbnRlcmZhY2VEYXRh
ID0gKGRlZmluZWQoJDQpID8gJDQgOiBkaWUoImkgUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRk
YXRhXG4pIikpOwogCiAgICAgICAgICMgRmlsbCBpbiBrbm93biBwYXJ0cyBvZiB0aGUgZG9tQ2xh
c3MgZGF0YXN0cnVjdHVyZSBub3cuLi4KICAgICAgICAgJGRhdGFOb2RlLT5uYW1lKCRpbnRlcmZh
Y2VOYW1lKTsKLSAgICAgICAgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMocGFyc2VFeHRl
bmRlZEF0dHJpYnV0ZXMoJGludGVyZmFjZUV4dGVuZGVkQXR0cmlidXRlcykpOworICAgICAgICBt
eSAkZXh0ZW5kZWRBdHRyaWJ1dGVzID0gcGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMoJGludGVyZmFj
ZUV4dGVuZGVkQXR0cmlidXRlcyk7CisgICAgICAgIGlmIChkZWZpbmVkICRleHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ29uc3RydWN0b3IifSkgeworICAgICAgICAgICAgbXkgJG5ld0RhdGFOb2RlID0g
bmV3IGRvbUZ1bmN0aW9uKCk7CisgICAgICAgICAgICBwYXJzZVBhcmFtZXRlcnMoJG5ld0RhdGFO
b2RlLCAkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yIn0pOworICAgICAgICAgICAg
JGV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvciJ9ID0gMTsKKyAgICAgICAgICAgICRk
YXRhTm9kZS0+Y29uc3RydWN0b3IoJG5ld0RhdGFOb2RlKTsKKyAgICAgICAgfQorICAgICAgICAk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVzKTsKIAogICAg
ICAgICAjIEluaGVyaXRhbmNlIGRldGVjdGlvbgogICAgICAgICBteSBAaW50ZXJmYWNlUGFyZW50
cyA9IHNwbGl0KC8sLywgJGludGVyZmFjZUJhc2UpOwpAQCAtMjQxLDExICszMTUsMTEgQEAgc3Vi
IFBhcnNlSW50ZXJmYWNlCiAgICAgICAgICAgICBpZiAoJGxpbmUgPX4gL1xXYXR0cmlidXRlXFcv
KSB7CiAgICAgICAgICAgICAgICAgJGxpbmUgPX4gLyRJRExTdHJ1Y3R1cmU6OmludGVyZmFjZUF0
dHJpYnV0ZVNlbGVjdG9yLzsKIAotICAgICAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVUeXBlID0g
KGRlZmluZWQoJDEpID8gJDEgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxu
KSIpKTsKKyAgICAgICAgICAgICAgICBteSAkYXR0cmlidXRlVHlwZSA9IChkZWZpbmVkKCQxKSA/
ICQxIDogZGllKCJqIFBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxuKSIpKTsKICAgICAg
ICAgICAgICAgICBteSAkYXR0cmlidXRlRXh0ZW5kZWRBdHRyaWJ1dGVzID0gKGRlZmluZWQoJDIp
ID8gJDIgOiAiICIpOyBjaG9wKCRhdHRyaWJ1dGVFeHRlbmRlZEF0dHJpYnV0ZXMpOwogCi0gICAg
ICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZURhdGFUeXBlID0gKGRlZmluZWQoJDMpID8gJDMgOiBk
aWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxuKSIpKTsKLSAgICAgICAgICAgICAg
ICBteSAkYXR0cmlidXRlRGF0YU5hbWUgPSAoZGVmaW5lZCgkNCkgPyAkNCA6IGRpZSgiUGFyc2lu
ZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOworICAgICAgICAgICAgICAgIG15ICRhdHRy
aWJ1dGVEYXRhVHlwZSA9IChkZWZpbmVkKCQzKSA/ICQzIDogZGllKCJrIFBhcnNpbmcgZXJyb3Ih
XG5Tb3VyY2U6XG4kbGluZVxuKSIpKTsKKyAgICAgICAgICAgICAgICBteSAkYXR0cmlidXRlRGF0
YU5hbWUgPSAoZGVmaW5lZCgkNCkgPyAkNCA6IGRpZSgibCBQYXJzaW5nIGVycm9yIVxuU291cmNl
OlxuJGxpbmVcbikiKSk7CiAgIAogICAgICAgICAgICAgICAgICgnJyA9fiAvXi8pOyAjIFJlc2V0
IHZhcmlhYmxlcyBuZWVkZWQgZm9yIHJlZ2V4cCBtYXRjaGluZwogCkBAIC0yNzQsMTIgKzM0OCwx
MiBAQCBzdWIgUGFyc2VJbnRlcmZhY2UKICAgICAgICAgICAgICAgICBAeyRuZXdEYXRhTm9kZS0+
Z2V0dGVyRXhjZXB0aW9uc30gPSBzcGxpdCgvLC8sICRnZXR0ZXJFeGNlcHRpb24pOwogICAgICAg
ICAgICAgICAgIEB7JG5ld0RhdGFOb2RlLT5zZXR0ZXJFeGNlcHRpb25zfSA9IHNwbGl0KC8sLywg
JHNldHRlckV4Y2VwdGlvbik7CiAgICAgICAgICAgICB9IGVsc2lmICgoJGxpbmUgIX4gcy9eXHMq
JC8vZykgYW5kICgkbGluZSAhfiAvXlxzKmNvbnN0LykpIHsKLSAgICAgICAgICAgICAgICAkbGlu
ZSA9fiAvJElETFN0cnVjdHVyZTo6aW50ZXJmYWNlTWV0aG9kU2VsZWN0b3IvIG9yIGRpZSAiUGFy
c2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIjsKKyAgICAgICAgICAgICAgICAkbGluZSA9
fiAvJElETFN0cnVjdHVyZTo6aW50ZXJmYWNlTWV0aG9kU2VsZWN0b3IvIG9yIGRpZSAibSBQYXJz
aW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiOwogCiAgICAgICAgICAgICAgICAgbXkgJG1l
dGhvZEV4dGVuZGVkQXR0cmlidXRlcyA9IChkZWZpbmVkKCQxKSA/ICQxIDogIiAiKTsgY2hvcCgk
bWV0aG9kRXh0ZW5kZWRBdHRyaWJ1dGVzKTsKLSAgICAgICAgICAgICAgICBteSAkbWV0aG9kVHlw
ZSA9IChkZWZpbmVkKCQyKSA/ICQyIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxp
bmVcbikiKSk7Ci0gICAgICAgICAgICAgICAgbXkgJG1ldGhvZE5hbWUgPSAoZGVmaW5lZCgkMykg
PyAkMyA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOwotICAgICAg
ICAgICAgICAgIG15ICRtZXRob2RTaWduYXR1cmUgPSAoZGVmaW5lZCgkNCkgPyAkNCA6IGRpZSgi
UGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOworICAgICAgICAgICAgICAgIG15
ICRtZXRob2RUeXBlID0gKGRlZmluZWQoJDIpID8gJDIgOiBkaWUoIm4gUGFyc2luZyBlcnJvciFc
blNvdXJjZTpcbiRsaW5lXG4pIikpOworICAgICAgICAgICAgICAgIG15ICRtZXRob2ROYW1lID0g
KGRlZmluZWQoJDMpID8gJDMgOiBkaWUoIm8gUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5l
XG4pIikpOworICAgICAgICAgICAgICAgIG15ICRtZXRob2RTaWduYXR1cmUgPSAoZGVmaW5lZCgk
NCkgPyAkNCA6IGRpZSgicCBQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7CiAK
ICAgICAgICAgICAgICAgICAoJycgPX4gL14vKTsgIyBSZXNldCB2YXJpYWJsZXMgbmVlZGVkIGZv
ciByZWdleHAgbWF0Y2hpbmcKIApAQCAtMjk5LDQwICszNzMsMTUgQEAgc3ViIFBhcnNlSW50ZXJm
YWNlCiAgICAgICAgICAgICAgICAgJG1ldGhvZEV4Y2VwdGlvbiA9fiBzL1xzKy8vZzsKICAgICAg
ICAgICAgICAgICBAeyRuZXdEYXRhTm9kZS0+cmFpc2VzRXhjZXB0aW9uc30gPSBzcGxpdCgvLC8s
ICRtZXRob2RFeGNlcHRpb24pOwogCi0gICAgICAgICAgICAgICAgIyBTcGxpdCBhcmd1bWVudHMg
YXQgY29tbWFzIGJ1dCBvbmx5IGlmIHRoZSBjb21tYQotICAgICAgICAgICAgICAgICMgaXMgbm90
IHdpdGhpbiBhdHRyaWJ1dGUgYnJhY2tldHMsIGV4cHJlc3NlZCBoZXJlCi0gICAgICAgICAgICAg
ICAgIyBhcyBiZWluZyBmb2xsb3dlZCBieSBhICddJyB3aXRob3V0IGEgcHJlY2VkaW5nICdbJy4K
LSAgICAgICAgICAgICAgICAjIE5vdGUgdGhhdCB0aGlzIGFzc3VtZXMgdGhhdCBhdHRyaWJ1dGVz
IGRvbid0IG5lc3QuCi0gICAgICAgICAgICAgICAgbXkgQHBhcmFtcyA9IHNwbGl0KC8sKD8hW15b
XSpcXSkvLCAkbWV0aG9kU2lnbmF0dXJlKTsKLSAgICAgICAgICAgICAgICBmb3JlYWNoKEBwYXJh
bXMpIHsKLSAgICAgICAgICAgICAgICAgICAgbXkgJGxpbmUgPSAkXzsKLQotICAgICAgICAgICAg
ICAgICAgICAkbGluZSA9fiAvJElETFN0cnVjdHVyZTo6aW50ZXJmYWNlUGFyYW1ldGVyU2VsZWN0
b3IvOwotICAgICAgICAgICAgICAgICAgICBteSAkcGFyYW1EaXJlY3Rpb24gPSAkMTsKLSAgICAg
ICAgICAgICAgICAgICAgbXkgJHBhcmFtRXh0ZW5kZWRBdHRyaWJ1dGVzID0gKGRlZmluZWQoJDIp
ID8gJDIgOiAiICIpOyBjaG9wKCRwYXJhbUV4dGVuZGVkQXR0cmlidXRlcyk7Ci0gICAgICAgICAg
ICAgICAgICAgIG15ICRwYXJhbVR5cGUgPSAoZGVmaW5lZCgkMykgPyAkMyA6IGRpZSgiUGFyc2lu
ZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOwotICAgICAgICAgICAgICAgICAgICBteSAk
cGFyYW1OYW1lID0gKGRlZmluZWQoJDQpID8gJDQgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3Vy
Y2U6XG4kbGluZVxuKSIpKTsKLQotICAgICAgICAgICAgICAgICAgICBteSAkcGFyYW1EYXRhTm9k
ZSA9IG5ldyBkb21TaWduYXR1cmUoKTsKLSAgICAgICAgICAgICAgICAgICAgJHBhcmFtRGF0YU5v
ZGUtPmRpcmVjdGlvbigkcGFyYW1EaXJlY3Rpb24pOwotICAgICAgICAgICAgICAgICAgICAkcGFy
YW1EYXRhTm9kZS0+bmFtZSgkcGFyYW1OYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgJHBhcmFt
RGF0YU5vZGUtPnR5cGUoJHBhcmFtVHlwZSk7Ci0gICAgICAgICAgICAgICAgICAgICRwYXJhbURh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMoJHBhcmFt
RXh0ZW5kZWRBdHRyaWJ1dGVzKSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgbXkgJGFycmF5UmVm
ID0gJG5ld0RhdGFOb2RlLT5wYXJhbWV0ZXJzOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEAk
YXJyYXlSZWYsICRwYXJhbURhdGFOb2RlKTsKLQotICAgICAgICAgICAgICAgICAgICBwcmludCAi
ICB8ICAgfD4gIFBhcmFtOyBUWVBFIFwiJHBhcmFtVHlwZVwiIE5BTUUgXCIkcGFyYW1OYW1lXCIi
IC4gCi0gICAgICAgICAgICAgICAgICAgICAgICBkdW1wRXh0ZW5kZWRBdHRyaWJ1dGVzKCJcbiAg
fCAgICAgICAgICAgICAgIiwgJHBhcmFtRGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcykgLiAi
XG4iIHVubGVzcyAkYmVRdWlldDsgICAgICAgICAgCi0gICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIHBhcnNlUGFyYW1ldGVycygkbmV3RGF0YU5vZGUsICRtZXRob2RTaWduYXR1cmUp
OwogCiAgICAgICAgICAgICAgICAgbXkgJGFycmF5UmVmID0gJGRhdGFOb2RlLT5mdW5jdGlvbnM7
CiAgICAgICAgICAgICAgICAgcHVzaChAJGFycmF5UmVmLCAkbmV3RGF0YU5vZGUpOwogICAgICAg
ICAgICAgfSBlbHNpZiAoJGxpbmUgPX4gL15ccypjb25zdC8pIHsKICAgICAgICAgICAgICAgICAk
bGluZSA9fiAvJElETFN0cnVjdHVyZTo6Y29uc3RhbnRTZWxlY3Rvci87Ci0gICAgICAgICAgICAg
ICAgbXkgJGNvbnN0VHlwZSA9IChkZWZpbmVkKCQxKSA/ICQxIDogZGllKCJQYXJzaW5nIGVycm9y
IVxuU291cmNlOlxuJGxpbmVcbikiKSk7Ci0gICAgICAgICAgICAgICAgbXkgJGNvbnN0TmFtZSA9
IChkZWZpbmVkKCQyKSA/ICQyIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVc
bikiKSk7Ci0gICAgICAgICAgICAgICAgbXkgJGNvbnN0VmFsdWUgPSAoZGVmaW5lZCgkMykgPyAk
MyA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOworICAgICAgICAg
ICAgICAgIG15ICRjb25zdFR5cGUgPSAoZGVmaW5lZCgkMSkgPyAkMSA6IGRpZSgicSBQYXJzaW5n
IGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7CisgICAgICAgICAgICAgICAgbXkgJGNvbnN0
TmFtZSA9IChkZWZpbmVkKCQyKSA/ICQyIDogZGllKCJyIFBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6
XG4kbGluZVxuKSIpKTsKKyAgICAgICAgICAgICAgICBteSAkY29uc3RWYWx1ZSA9IChkZWZpbmVk
KCQzKSA/ICQzIDogZGllKCJzIFBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxuKSIpKTsK
IAogICAgICAgICAgICAgICAgIG15ICRuZXdEYXRhTm9kZSA9IG5ldyBkb21Db25zdGFudCgpOwog
ICAgICAgICAgICAgICAgICRuZXdEYXRhTm9kZS0+bmFtZSgkY29uc3ROYW1lKTsKQEAgLTQwMiw4
ICs0NTEsOCBAQCBzdWIgUHJvY2Vzc1NlY3Rpb24KICAgICAgICAgbXkgJGxpbmUgPSBqb2luKCIi
LCBAdGVtcG9yYXJ5Q29udGVudCk7CiAgICAgICAgICRsaW5lID1+IC8kSURMU3RydWN0dXJlOjph
bGlhc1NlbGVjdG9yLzsKIAotICAgICAgICBteSAkaW50ZXJmYWNlTmFtZSA9IChkZWZpbmVkKCQx
KSA/ICQxIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7Ci0gICAg
ICAgIG15ICR3cmFwcGVyTmFtZSA9IChkZWZpbmVkKCQyKSA/ICQyIDogZGllKCJQYXJzaW5nIGVy
cm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7CisgICAgICAgIG15ICRpbnRlcmZhY2VOYW1lID0g
KGRlZmluZWQoJDEpID8gJDEgOiBkaWUoInQgUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5l
XG4pIikpOworICAgICAgICBteSAkd3JhcHBlck5hbWUgPSAoZGVmaW5lZCgkMikgPyAkMiA6IGRp
ZSgidSBQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiKSk7CiAgICAgCiAgICAgICAg
IHByaW50ICIgIHwtLS0tPiBBbGlhczsgSU5URVJGQUNFIFwiJGludGVyZmFjZU5hbWVcIiBXUkFQ
UEVSIFwiJHdyYXBwZXJOYW1lXCJcbiB8LVxuIHxcbiIgdW5sZXNzICRiZVF1aWV0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFN0cnVjdHVyZS5wbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMU3RydWN0dXJlLnBtCmluZGV4IGY5
ZGQ0YWIuLjcyN2UzNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvSURMU3RydWN0dXJlLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
SURMU3RydWN0dXJlLnBtCkBAIC00MCw2ICs0MCw3IEBAIHN0cnVjdCggZG9tQ2xhc3MgPT4gewog
ICAgIGZ1bmN0aW9ucyA9PiAnQCcsICAgICMgTGlzdCBvZiAnZG9tRnVuY3Rpb24nCiAgICAgYXR0
cmlidXRlcyA9PiAnQCcsICAgICMgTGlzdCBvZiAnZG9tQXR0cmlidXRlJyAgICAKICAgICBleHRl
bmRlZEF0dHJpYnV0ZXMgPT4gJyQnLCAjIEV4dGVuZGVkIGF0dHJpYnV0ZXMKKyAgICBjb25zdHJ1
Y3RvciA9PiAnJCcsICMgQ29uc3RydWN0b3IKIH0pOwogCiAjIFVzZWQgdG8gcmVwcmVzZW50IGRv
bUNsYXNzIGNvbnRlbnRzIChuYW1lIG9mIG1ldGhvZCwgc2lnbmF0dXJlKQpAQCAtODgsNyArODks
NyBAQCBvdXIgJGlkbERhdGFUeXBlID0gJ1thLXpBLVowLTlcIF0nOyAgICMgR2VuZXJpYyBkYXRh
IHR5cGUgaWRlbnRpZmllcgogbXkgJHN1cHBvcnRlZFR5cGVzID0gIigoPzp1bnNpZ25lZCApPyg/
OmludHxzaG9ydHwoPzpsb25nICk/bG9uZyl8KD86JGlkbElkTnMqKSkiOwogCiAjIFNwZWNpYWwg
SURMIG5vdGF0aW9ucwotb3VyICRleHRlbmRlZEF0dHJpYnV0ZVN5bnRheCA9ICdcW1teXV0qXF0n
OyAjIFVzZWQgZm9yIGV4dGVuZGVkIGF0dHJpYnV0ZXMKK291ciAkZXh0ZW5kZWRBdHRyaWJ1dGVT
eW50YXggPSBxci9cW1teXFtcXV0qKD86KD8/eyRJRExTdHJ1Y3R1cmU6OmV4dGVuZGVkQXR0cmli
dXRlU3ludGF4fSlbXlxbXF1dKikqXF0veDsgIyBVc2VkIGZvciBleHRlbmRlZCBhdHRyaWJ1dGVz
CiAKICMgUmVndWxhciBleHByZXNzaW9uIGJhc2VkIElETCAnc3ludGFjdGljYWwgdG9rZW5pemVy
JyB1c2VkIGluIHRoZSBJRExQYXJzZXIKIG91ciAkbW9kdWxlU2VsZWN0b3IgPSAnbW9kdWxlXHMq
KCcgLiAkaWRsSWQgLiAnKilccyp7JzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEJpbmRpbmdNYWNyb3MuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEJpbmRpbmdNYWNyb3MuaAppbmRleCBhZDAyYzNlLi41NWU1N2IzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhCaW5kaW5nTWFjcm9z
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmluZGluZ01hY3Jv
cy5oCkBAIC00Miw2ICs0MiwxMSBAQAogICAgIGlmICghdmFyLnByZXBhcmUoKSkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTsKIAorI2RlZmluZSBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NL
X1RIUk9XKHR5cGUsIHZhciwgdmFsdWUsIGVycikgIFwKKyAgICB0eXBlIHZhcih2YWx1ZSk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCF2YXIu
cHJlcGFyZSgpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnIpOworCiAjZGVmaW5lIFNUUklOR19UT19WOFBBUkFN
RVRFUl9FWENFUFRJT05fQkxPQ0tfVk9JRCh0eXBlLCB2YXIsIHZhbHVlKSBcCiAgICAgdHlwZSB2
YXIodmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgaWYgKCF2YXIucHJlcGFyZSgpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhFdmVudFNvdXJjZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50U291cmNlQ29uc3RydWN0b3IuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMWU5YzQ0Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50U291cmNlQ29uc3RydWN0b3IuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShF
VkVOVFNPVVJDRSkKLSNpbmNsdWRlICJWOEV2ZW50U291cmNlLmgiCi0KLSNpbmNsdWRlICJFdmVu
dFNvdXJjZS5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0j
aW5jbHVkZSAiVjhQcm94eS5oIgotI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAi
V29ya2VyQ29udGV4dC5oIgotI2luY2x1ZGUgIldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEV2ZW50
U291cmNlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17
Ci0gICAgSU5DX1NUQVRTKCJET00uRXZlbnRTb3VyY2UuQ29uc3RydWN0b3IiKTsKLQotICAgIGlm
ICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkRP
TSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIsIFY4
UHJveHk6OlR5cGVFcnJvcik7Ci0KLSAgICAvLyBFeHBlY3Qgb25lIHBhcmFtZXRlci4KLSAgICAv
LyBBbGxvY2F0ZSBhbiBFdmVudFNvdXJjZSBvYmplY3QgYXMgaXRzIGludGVybmFsIGZpZWxkLgot
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigi
RXZlbnRTb3VyY2UgY29uc3RydWN0b3IncyBhc3NvY2lhdGVkIGNvbnRleHQgaXMgbm90IGF2YWls
YWJsZSIsIFY4UHJveHk6OlJlZmVyZW5jZUVycm9yKTsKLSAgICBpZiAoYXJncy5MZW5ndGgoKSAh
PSAxKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiTm90IGVub3VnaCBhcmd1bWVudHMiLCBW
OFByb3h5OjpTeW50YXhFcnJvcik7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBT
dHJpbmcgdXJsID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwotCi0gICAgUmVmUHRyPEV2ZW50
U291cmNlPiBldmVudFNvdXJjZSA9IEV2ZW50U291cmNlOjpjcmVhdGUodXJsLCBjb250ZXh0LCBl
Yyk7Ci0KLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVjKTsKLQotICAg
IFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihhcmdzLkhvbGRlcigpLCAmaW5mbywgZXZlbnRT
b3VyY2UuZ2V0KCkpOwotCi0gICAgLy8gQWRkIG9iamVjdCB0byB0aGUgd3JhcHBlciBtYXAuCi0g
ICAgZXZlbnRTb3VyY2UtPnJlZigpOwotICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9y
QWN0aXZlRE9NT2JqZWN0KGV2ZW50U291cmNlLmdldCgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2Jq
ZWN0Pjo6TmV3KGFyZ3MuSG9sZGVyKCkpKTsKLSAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEVWRU5UU09VUkNF
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RmlsZVJl
YWRlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhGaWxl
UmVhZGVyQ3VzdG9tLmNwcAppbmRleCBmYjBkNTNjLi5iNWI1NzQ4IDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhGaWxlUmVhZGVyQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhGaWxlUmVhZGVyQ3VzdG9tLmNw
cApAQCAtNDAsMjcgKzQwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhGaWxlUmVhZGVyOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uRmlsZVJlYWRlci5Db25zdHJ1
Y3RvciIpOwotCi0gICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFz
IGEgZnVuY3Rpb24uIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKLQotICAgIC8vIEV4cGVjdCBubyBw
YXJhbWV0ZXJzLgotICAgIC8vIEFsbG9jYXRlIGEgRmlsZVJlYWRlciBvYmplY3QgYXMgaXRzIGlu
dGVybmFsIGZpZWxkLgotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBnZXRT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcigiRmlsZVJlYWRlciBjb25zdHJ1Y3RvcidzIGFzc29jaWF0ZWQgY29udGV4
dCBpcyBub3QgYXZhaWxhYmxlIiwgVjhQcm94eTo6UmVmZXJlbmNlRXJyb3IpOwotICAgIFJlZlB0
cjxGaWxlUmVhZGVyPiBmaWxlUmVhZGVyID0gRmlsZVJlYWRlcjo6Y3JlYXRlKGNvbnRleHQpOwot
ICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihhcmdzLkhvbGRlcigpLCAmaW5mbywgZmls
ZVJlYWRlci5nZXQoKSk7Ci0KLSAgICAvLyBBZGQgb2JqZWN0IHRvIHRoZSB3cmFwcGVyIG1hcC4K
LSAgICBmaWxlUmVhZGVyLT5yZWYoKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZv
ckFjdGl2ZURPTU9iamVjdChmaWxlUmVhZGVyLmdldCgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2Jq
ZWN0Pjo6TmV3KGFyZ3MuSG9sZGVyKCkpKTsKLSAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKLX0K
LQogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RmlsZVJlYWRlcjo6cmVzdWx0QWNjZXNzb3JHZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCiB7CiAgICAgSU5DX1NUQVRTKCJET00uRmlsZVJlYWRlci5yZXN1bHQuX2dldCIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2hhcmVkV29ya2Vy
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNoYXJlZFdv
cmtlckN1c3RvbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkNzJjMzcuLjAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2hhcmVkV29y
a2VyQ3VzdG9tLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0
aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0KLSNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCi0KLSNpbmNsdWRlICJWOFNoYXJl
ZFdvcmtlci5oIgotCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkZyYW1l
LmgiCi0jaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVkZSAiVjhQcm94eS5oIgotI2luY2x1
ZGUgIlY4VXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgotI2luY2x1ZGUg
IldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFNoYXJlZFdvcmtlcjo6Y29uc3RydWN0b3JDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUyhMIkRPTS5TaGFy
ZWRXb3JrZXIuQ29uc3RydWN0b3IiKTsKLQotICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwo
KSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fu
bm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIpOwotCi0gICAgaWYgKCFhcmdzLkxlbmd0aCgp
KQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiTm90IGVub3VnaCBhcmd1bWVudHMiLCBWOFBy
b3h5OjpTeW50YXhFcnJvcik7Ci0KLSAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7Ci0gICAgdjg6
OkhhbmRsZTx2ODo6U3RyaW5nPiBzY3JpcHRVcmwgPSBhcmdzWzBdLT5Ub1N0cmluZygpOwotICAg
IFN0cmluZyBuYW1lOwotICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMSkKLSAgICAgICAgbmFtZSA9
IHRvV2ViQ29yZVN0cmluZyhhcmdzWzFdLT5Ub1N0cmluZygpKTsKLQotICAgIGlmICh0cnlDYXRj
aC5IYXNDYXVnaHQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IodHJ5Q2F0Y2guRXhjZXB0
aW9uKCkpOwotCi0gICAgaWYgKHNjcmlwdFVybC5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB2
ODo6VW5kZWZpbmVkKCk7Ci0KLSAgICAvLyBHZXQgdGhlIHNjcmlwdCBleGVjdXRpb24gY29udGV4
dC4KLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOwotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTsKLQotICAgIC8vIENyZWF0ZSB0aGUgU2hhcmVkV29ya2VyIG9iamVjdC4KLSAgICAv
LyBOb3RlOiBpdCdzIE9LIHRvIGxldCB0aGlzIFJlZlB0ciBnbyBvdXQgb2Ygc2NvcGUgYmVjYXVz
ZSB3ZSBhbHNvIGNhbGwgU2V0RE9NV3JhcHBlcigpLCB3aGljaCBlZmZlY3RpdmVseSBob2xkcyBh
IHJlZmVyZW5jZSB0byBvYmouCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRy
PFNoYXJlZFdvcmtlcj4gb2JqID0gU2hhcmVkV29ya2VyOjpjcmVhdGUodG9XZWJDb3JlU3RyaW5n
KHNjcmlwdFVybCksIG5hbWUsIGNvbnRleHQsIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKGVjKTsKLQotICAgIC8vIFNldHVwIHRoZSBzdGFuZGFyZCB3cmFwcGVy
IG9iamVjdCBpbnRlcm5hbCBmaWVsZHMuCi0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFw
cGVyT2JqZWN0ID0gYXJncy5Ib2xkZXIoKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBw
ZXIod3JhcHBlck9iamVjdCwgJmluZm8sIG9iai5nZXQoKSk7Ci0KLSAgICBvYmotPnJlZigpOwot
ICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yQWN0aXZlRE9NT2JqZWN0KG9iai5nZXQo
KSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyT2JqZWN0KSk7Ci0KLSAg
ICByZXR1cm4gd3JhcHBlck9iamVjdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0Q1NTTWF0cml4Q29uc3Ry
dWN0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTdkMGU4Li4wMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdENTU01hdHJp
eENvbnN0cnVjdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIlY4V2ViS2l0Q1NTTWF0cml4LmgiCi0KLSNpbmNsdWRlICJE
b2N1bWVudC5oIgotI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKLSNpbmNsdWRlICJOb2Rl
LmgiCi0KLSNpbmNsdWRlICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRlICJWOERvY3VtZW50LmgiCi0j
aW5jbHVkZSAiVjhOb2RlLmgiCi0jaW5jbHVkZSAiVjhQcm94eS5oIgotCi0jaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOFdlYktpdENTU01hdHJpeDo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLldlYktpdENTU01hdHJpeC5Db25zdHJ1
Y3RvciIpOwotCi0gICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFz
IGEgZnVuY3Rpb24uIik7Ci0KLSAgICAvLyBGSVhNRTogVGhlIGxvZ2ljIGhlcmUgaXMgYWxtb3N0
IGV4YWN0IGR1cGxpY2F0ZSBvZiBWODo6Y29uc3RydWN0RE9NT2JqZWN0LgotICAgIC8vIENvbnNp
ZGVyIHJlZmFjdG9yaW5nIHRvIHJlZHVjZSBkdXBsaWNhdGlvbi4KLSAgICBTdHJpbmcgY3NzVmFs
dWU7Ci0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPj0gMSkKLSAgICAgICAgY3NzVmFsdWUgPSB0b1dl
YkNvcmVTdHJpbmcoYXJnc1swXSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBS
ZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBtYXRyaXggPSBXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZShj
c3NWYWx1ZSwgZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgdGhyb3dFcnJvcihlYyk7Ci0KLSAg
ICAvLyBUcmFuc2Zvcm0gdGhlIGhvbGRlciBpbnRvIGEgd3JhcHBlciBvYmplY3QgZm9yIHRoZSBt
YXRyaXguCi0gICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksICZp
bmZvLCBtYXRyaXguZ2V0KCkpOwotICAgIHJldHVybiB0b1Y4KG1hdHJpeC5yZWxlYXNlKCksIGFy
Z3MuSG9sZGVyKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcAppbmRleCBm
ZGM2ODE1Li4zYTA0MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhXb3JrZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHAKQEAgLTQ3LDQ2ICs0Nyw2IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V29ya2VyOjpjb25zdHJ1Y3Rv
ckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKEwi
RE9NLldvcmtlci5Db25zdHJ1Y3RvciIpOwotCi0gICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2Fs
bCgpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBj
YW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIik7Ci0KLSAgICBpZiAoIWFyZ3MuTGVuZ3Ro
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIsIFY4
UHJveHk6OlN5bnRheEVycm9yKTsKLQotICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsKLSAgICB2
ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHNjcmlwdFVybCA9IGFyZ3NbMF0tPlRvU3RyaW5nKCk7Ci0g
ICAgaWYgKHRyeUNhdGNoLkhhc0NhdWdodCgpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih0
cnlDYXRjaC5FeGNlcHRpb24oKSk7Ci0KLSAgICBpZiAoc2NyaXB0VXJsLklzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLQotICAgIC8vIEdldCB0aGUgc2NyaXB0IGV4
ZWN1dGlvbiBjb250ZXh0LgotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBn
ZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotCi0gICAgLy8gQ3JlYXRlIHRoZSB3b3JrZXIgb2JqZWN0
LgotICAgIC8vIE5vdGU6IGl0J3MgT0sgdG8gbGV0IHRoaXMgUmVmUHRyIGdvIG91dCBvZiBzY29w
ZSBiZWNhdXNlIHdlIGFsc28gY2FsbCBzZXRET01XcmFwcGVyKCksIHdoaWNoIGVmZmVjdGl2ZWx5
IGhvbGRzIGEgcmVmZXJlbmNlIHRvIG9iai4KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBSZWZQdHI8V29ya2VyPiBvYmogPSBXb3JrZXI6OmNyZWF0ZSh0b1dlYkNvcmVTdHJpbmcoc2Ny
aXB0VXJsKSwgY29udGV4dCwgZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIHRocm93
RXJyb3IoZWMpOwotCi0gICAgLy8gU2V0dXAgdGhlIHN0YW5kYXJkIHdyYXBwZXIgb2JqZWN0IGlu
dGVybmFsIGZpZWxkcy4KLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXJPYmplY3Qg
PSBhcmdzLkhvbGRlcigpOwotICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcih3cmFwcGVy
T2JqZWN0LCAmaW5mbywgb2JqLmdldCgpKTsKLQotICAgIG9iai0+cmVmKCk7Ci0gICAgVjhET01X
cmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JBY3RpdmVET01PYmplY3Qob2JqLmdldCgpLCB2ODo6UGVy
c2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KHdyYXBwZXJPYmplY3QpKTsKLQotICAgIHJldHVybiB3
cmFwcGVyT2JqZWN0OwotfQotCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXI6OnBvc3RN
ZXNzYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RB
VFMoIkRPTS5Xb3JrZXIucG9zdE1lc3NhZ2UiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhTTFRQcm9jZXNzb3JDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WFNMVFByb2Nlc3NvckN1c3RvbS5jcHAKaW5kZXgg
YjYyNGZjZi4uMWFkNTJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4WFNMVFByb2Nlc3NvckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4WFNMVFByb2Nlc3NvckN1c3RvbS5jcHAKQEAgLTQ2LDEzICs0Niw2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WFNM
VFByb2Nlc3Nvcjo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQotewotICAgIElOQ19TVEFUUygiRE9NLlhTTFRQcm9jZXNzb3IuQ29uc3RydWN0b3IiKTsKLSAg
ICByZXR1cm4gVjhQcm94eTo6Y29uc3RydWN0RE9NT2JqZWN0PFhTTFRQcm9jZXNzb3I+KGFyZ3Ms
ICZpbmZvKTsKLX0KLQotCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYU0xUUHJvY2Vzc29yOjpp
bXBvcnRTdHlsZXNoZWV0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICBJTkNfU1RBVFMoIkRPTS5YU0xUUHJvY2Vzc29yLmltcG9ydFN0eWxlc2hlZXQiKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaWRsIGIvU291cmNlL1dl
YkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5pZGwKaW5kZXggNzZmZjYwMS4uMmUzYjVhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5pZGwKQEAgLTMwLDcgKzMwLDggQEAgbW9k
dWxlIGNzcyB7CiAgICAgICAgIENhbkJlQ29uc3RydWN0ZWQsCiAgICAgICAgIEN1c3RvbUNvbnN0
cnVjdEZ1bmN0aW9uLAogICAgICAgICBDb25zdHJ1Y3RvclBhcmFtZXRlcnM9MSwKLSAgICAgICAg
VjhDdXN0b21Db25zdHJ1Y3RvcgorICAgICAgICBDb25zdHJ1Y3RvcihpbiBbT3B0aW9uYWw9Q2Fs
bFdpdGhVbmRlZmluZWRWYWx1ZV0gRE9NU3RyaW5nIGNzc1ZhbHVlKSwKKyAgICAgICAgQ29uc3Ry
dWN0b3JXaXRoPUNyZWF0ZUV4Y2VwdGlvbnxET01PYmplY3QKICAgICBdIFdlYktpdENTU01hdHJp
eCB7CiAKICAgICAgICAgLy8gVGhlc2UgYXR0cmlidXRlcyBhcmUgc2ltcGxlIGFsaWFzZXMgZm9y
IGNlcnRhaW4gZWxlbWVudHMgb2YgdGhlIDR4NCBtYXRyaXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGVSZWFkZXIuaWRsCmluZGV4IDYxZDVhZmIuLjY1NTdlNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlUmVhZGVyLmlkbApAQCAtMzcsNyArMzcsOCBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAg
IENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgICAgIEV2ZW50VGFyZ2V0LAog
ICAgICAgICBOb1N0YXRpY1RhYmxlcywKLSAgICAgICAgVjhDdXN0b21Db25zdHJ1Y3RvcgorICAg
ICAgICBDb25zdHJ1Y3RvciwKKyAgICAgICAgQ29uc3RydWN0b3JXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQKICAgICBdIEZpbGVSZWFkZXIgewogICAgICAgICAvLyByZWFkeSBzdGF0ZXMKICAg
ICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgRU1QVFkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
U291cmNlLmlkbAppbmRleCA0ODMxNWE4Li4xODRlMTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50U291cmNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
U291cmNlLmlkbApAQCAtMzcsNyArMzcsOCBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgQ2Fu
QmVDb25zdHJ1Y3RlZCwKICAgICAgICAgQ3VzdG9tQ29uc3RydWN0RnVuY3Rpb24sCiAgICAgICAg
IENvbnN0cnVjdG9yUGFyYW1ldGVycz0xLAotICAgICAgICBWOEN1c3RvbUNvbnN0cnVjdG9yLAor
ICAgICAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgc2NyaXB0VXJsKSwKKyAgICAgICAgQ29u
c3RydWN0b3JXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHR8Q3JlYXRlRXhjZXB0aW9uLAogICAg
ICAgICBFdmVudFRhcmdldCwKICAgICAgICAgTm9TdGF0aWNUYWJsZXMKICAgICBdIEV2ZW50U291
cmNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmlkbAppbmRleCA1MmIwMmM3
Li43YjhhY2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtl
ci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuaWRsCkBAIC0z
Nyw3ICszNyw4IEBAIG1vZHVsZSB0aHJlYWRzIHsKICAgICAgICAgQ2FuQmVDb25zdHJ1Y3RlZCwK
ICAgICAgICAgQ3VzdG9tQ29uc3RydWN0RnVuY3Rpb24sCiAgICAgICAgIENvbnN0cnVjdG9yUGFy
YW1ldGVycz0yLAotICAgICAgICBWOEN1c3RvbUNvbnN0cnVjdG9yLAorICAgICAgICBDb25zdHJ1
Y3RvcihpbiBET01TdHJpbmcgc2NyaXB0VXJsLCBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhVbmRlZmlu
ZWRWYWx1ZV0gRE9NU3RyaW5nIG5hbWUpLAorICAgICAgICBDb25zdHJ1Y3RvcldpdGg9U2NyaXB0
RXhlY3V0aW9uQ29udGV4dHxDcmVhdGVFeGNlcHRpb24sCiAgICAgICAgIEN1c3RvbU1hcmtGdW5j
dGlvbiwKICAgICAgICAgR2VuZXJhdGVOYXRpdmVDb252ZXJ0ZXIsCiAgICAgICAgIEdlbmVyYXRl
VG9KUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRsIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRsCmluZGV4IDc2Mzc1NjkuLjcwZDcxM2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlci5pZGwKQEAgLTMyLDEzICszMiwxNiBAQCBtb2R1bGUgdGhy
ZWFkcyB7CiAgICAgICAgIENhbkJlQ29uc3RydWN0ZWQsCiAgICAgICAgIEN1c3RvbUNvbnN0cnVj
dEZ1bmN0aW9uLAogICAgICAgICBDb25zdHJ1Y3RvclBhcmFtZXRlcnM9MSwKLSAgICAgICAgVjhD
dXN0b21Db25zdHJ1Y3RvciwKKyAgICAgICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIHNjcmlw
dFVybCksCisgICAgICAgIENvbnN0cnVjdG9yV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0fENy
ZWF0ZUV4Y2VwdGlvbiwKICAgICAgICAgR2VuZXJhdGVOYXRpdmVDb252ZXJ0ZXIsCiAgICAgICAg
IEdlbmVyYXRlVG9KUwogICAgIF0gV29ya2VyIDogQWJzdHJhY3RXb3JrZXIgewogCiAgICAgICAg
IGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ubWVzc2FnZTsKIAorICAgICAgICAvL3ZvaWQgdGVz
dE1ldGhvZChpbiBTdHJpbmcgc3Nzc3NzKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKwogI2lmIGRl
ZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVAogICAgICAg
ICBbQ3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdlKGluIFNlcmlhbGlzZWRTY3JpcHRWYWx1ZSBtZXNz
YWdlLCBpbiBbT3B0aW9uYWxdIEFycmF5IG1lc3NhZ2VQb3J0cykKICAgICAgICAgICAgIHJhaXNl
cyhET01FeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9j
ZXNzb3IuaWRsIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuaWRsCmluZGV4IGRh
YzRiMjEuLjVkZDM5MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vz
c29yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5pZGwKQEAgLTM2
LDcgKzM2LDggQEAgbW9kdWxlIHhtbCB7CiAgICAgICAgIENvbmRpdGlvbmFsPVhTTFQsCiAgICAg
ICAgIENhbkJlQ29uc3RydWN0ZWQsCiAgICAgICAgIEN1c3RvbUNvbnN0cnVjdEZ1bmN0aW9uLAot
ICAgICAgICBWOEN1c3RvbUNvbnN0cnVjdG9yCisgICAgICAgIENvbnN0cnVjdG9yLAorICAgICAg
ICBDb25zdHJ1Y3RvcldpdGg9RE9NT2JqZWN0CiAgICAgXSBYU0xUUHJvY2Vzc29yIHsKICAgICAg
ICAgCiAgICAgICAgIFtDdXN0b21dIHZvaWQgaW1wb3J0U3R5bGVzaGVldChpbiBOb2RlIHN0eWxl
c2hlZXQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103992</attachid>
            <date>2011-08-15 18:58:18 -0700</date>
            <delta_ts>2011-08-18 00:36:25 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>diff.txt</filename>
            <type>text/plain</type>
            <size>58448</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyMWEwMzIyLi41MWY5NjZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDgt
MTUgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBbV0lQIHBh
dGNoXSBJbnRyb2R1Y2UgV2ViIElETCBDb25zdHJ1Y3RvciBleHRlbmRlZCBhdHRyaWJ1dGUgaW4g
VjggYW5kIHJlcGxhY2UgNiBjdXN0b20gY29uc3RydWN0b3JzIHdpdGggaXQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTgzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyB0
aGUgZXhjZXB0aW9uIHRocm93biBieSBhbiBFdmVudFNvdXJjZSBjb25zdHJ1Y3RvciwKKyAgICAg
ICAgd2hpY2ggbWFrZXMgdGhlIGV4Y2VwdGlvbnMgaW4gZXZlbnRzb3VyY2UtY29uc3RydWN0b3Iu
aHRtbCBkaWZmZXJlbnQgYmV0d2VlbgorICAgICAgICBWOCBhbmQgSmF2YVNjcmlwdENvcmUuIFRo
dXMsIHRoaXMgcGF0Y2ggcmVtb3ZlcyBhIHNwZWNpZmljIG5hbWUgb2YgZXhjZXB0aW9ucworICAg
ICAgICBmcm9tIHRoZSB0ZXN0IHJlc3VsdCwgc28gdGhhdCB3ZSBjYW4ganVzdCBjaGVjayB3aGV0
aGVyIHRoZSB0ZXN0IHRocm93cworICAgICAgICBleGNlcHRpb25zIG9yIG5vdC4KKworICAgICAg
ICAqIGZhc3QvZXZlbnRzb3VyY2UvZXZlbnRzb3VyY2UtY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGZhc3QvZXZlbnRzb3VyY2UvZXZlbnRzb3VyY2UtY29uc3RydWN0b3IuaHRt
bDoKKwogMjAxMS0wOC0xMyAgQWJoaXNoZWsgQXJ5YSAgPGluZmVybm9AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIENyYXNoIGluIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0FueU90aGVyRW5kVGFn
Rm9ySW5Cb2R5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHNvdXJjZS9ldmVu
dHNvdXJjZS1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
c291cmNlL2V2ZW50c291cmNlLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAppbmRleCBjOGUyMjhj
Li42NjIyZGRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50c291cmNlL2V2ZW50
c291cmNlLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50c291cmNlL2V2ZW50c291cmNlLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dApAQCAtMSw3ICsx
LDcgQEAKIFRlc3QgRXZlbnRTb3VyY2UgY29uc3RydWN0b3IgZnVuY3Rpb25hbGl0eS4gU2hvdWxk
IHByaW50IGEgc2VyaWVzIG9mIFBBU1MgbWVzc2FnZXMgZm9sbG93ZWQgYnkgRE9ORS4KIAotUEFT
UzogbWlzc2luZyBhcmd1bWVudCB0byBFdmVudFNvdXJjZSBjb25zdHJ1Y3RvciByZXN1bHRlZCBp
biBhbiBleGNlcHRpb24gKFN5bnRheEVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cykKLVBBU1M6
IHBhc3NpbmcgYW4gZW1wdHkgc3RyaW5nIHRvIHRoZSBFdmVudFNvdXJjZSBjb25zdHJ1Y3RvciBy
ZXN1bHRlZCBpbiBhbiBleGNlcHRpb24gKEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9u
IDEyKQotUEFTUzogcGFzc2luZyBhbiBpbnZhbGlkIFVSTCB0byB0aGUgRXZlbnRTb3VyY2UgY29u
c3RydWN0b3IgcmVzdWx0ZWQgaW4gYW4gZXhjZXB0aW9uIChFcnJvcjogU1lOVEFYX0VSUjogRE9N
IEV4Y2VwdGlvbiAxMikKK1BBU1M6IG1pc3NpbmcgYXJndW1lbnQgdG8gRXZlbnRTb3VyY2UgY29u
c3RydWN0b3IgcmVzdWx0ZWQgaW4gYW4gZXhjZXB0aW9uCitQQVNTOiBwYXNzaW5nIGFuIGVtcHR5
IHN0cmluZyB0byB0aGUgRXZlbnRTb3VyY2UgY29uc3RydWN0b3IgcmVzdWx0ZWQgaW4gYW4gZXhj
ZXB0aW9uCitQQVNTOiBwYXNzaW5nIGFuIGludmFsaWQgVVJMIHRvIHRoZSBFdmVudFNvdXJjZSBj
b25zdHJ1Y3RvciByZXN1bHRlZCBpbiBhbiBleGNlcHRpb24KIERPTkUKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHNvdXJjZS9ldmVudHNvdXJjZS1jb25zdHJ1Y3Rvci5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHNvdXJjZS9ldmVudHNvdXJjZS1jb25zdHJ1Y3Rvci5o
dG1sCmluZGV4IDhiYWQ3ZWYuLjYyNTE0ZDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzb3VyY2UvZXZlbnRzb3VyY2UtY29uc3RydWN0b3IuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50c291cmNlL2V2ZW50c291cmNlLWNvbnN0cnVjdG9yLmh0bWwKQEAgLTE3LDcg
KzE3LDcgQEAgdHJ5IHsKICAgICBsb2coIkZBSUw6IG5vIGV4Y2VwdGlvbiB3aGVuIHRyeWluZyB0
byBjb25zdHJ1Y3QgYW4gRXZlbnRTb3VyY2Ugd2l0aG91dCBhcmd1bWVudCIpOwogfQogY2F0Y2gg
KGV4KSB7Ci0gICAgbG9nKCJQQVNTOiBtaXNzaW5nIGFyZ3VtZW50IHRvIEV2ZW50U291cmNlIGNv
bnN0cnVjdG9yIHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlvbiAoIiArIGV4ICsgIikiKTsKKyAgICBs
b2coIlBBU1M6IG1pc3NpbmcgYXJndW1lbnQgdG8gRXZlbnRTb3VyY2UgY29uc3RydWN0b3IgcmVz
dWx0ZWQgaW4gYW4gZXhjZXB0aW9uIik7CiB9CiAKIHRyeSB7CkBAIC0yNSw3ICsyNSw3IEBAIHRy
eSB7CiAgICAgbG9nKCJGQUlMOiBubyBleGNlcHRpb24gd2hlbiBwYXNzaW5nIGFuIGVtcHR5IHN0
cmluZyB0byB0aGUgRXZlbnRTb3VyY2UgY29uc3RydWN0b3IiKTsKIH0KIGNhdGNoIChleCkgewot
ICAgIGxvZygiUEFTUzogcGFzc2luZyBhbiBlbXB0eSBzdHJpbmcgdG8gdGhlIEV2ZW50U291cmNl
IGNvbnN0cnVjdG9yIHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlvbiAoIiArIGV4ICsgIikiKTsKKyAg
ICBsb2coIlBBU1M6IHBhc3NpbmcgYW4gZW1wdHkgc3RyaW5nIHRvIHRoZSBFdmVudFNvdXJjZSBj
b25zdHJ1Y3RvciByZXN1bHRlZCBpbiBhbiBleGNlcHRpb24iKTsKIH0KIAogdHJ5IHsKQEAgLTMz
LDcgKzMzLDcgQEAgdHJ5IHsKICAgICBsb2coIkZBSUw6IG5vIGV4Y2VwdGlvbiB3aGVuIHBhc3Np
bmcgYW4gaW52YWxpZCBVUkwgdG8gdGhlIEV2ZW50U291cmNlIGNvbnN0cnVjdG9yIik7CiB9CiBj
YXRjaCAoZXgpIHsKLSAgICBsb2coIlBBU1M6IHBhc3NpbmcgYW4gaW52YWxpZCBVUkwgdG8gdGhl
IEV2ZW50U291cmNlIGNvbnN0cnVjdG9yIHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlvbiAoIiArIGV4
ICsgIikiKTsKKyAgICBsb2coIlBBU1M6IHBhc3NpbmcgYW4gaW52YWxpZCBVUkwgdG8gdGhlIEV2
ZW50U291cmNlIGNvbnN0cnVjdG9yIHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlvbiIpOwogICAgIGxv
ZygiRE9ORSIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGZjYmE4NC4uZDc5MGM4YzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMzkgQEAKKzIwMTEtMDgtMTUgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5A
Z29vZ2xlLmNvbT4KKworICAgICAgICBbV0lQIHBhdGNoXSBJbnRyb2R1Y2UgV2ViIElETCBDb25z
dHJ1Y3RvciBleHRlbmRlZCBhdHRyaWJ1dGUgYW5kIHJlcGxhY2UgNiBjdXN0b20gY29uc3RydWN0
b3JzIHdpdGggaXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NTgzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIC0gSW50cm9kdWNlZCBXZWIgSURMIENvbnN0cnVjdG9yKC4uLikgZXh0ZW5kZWQgYXR0cmli
dXRlLgorICAgICAgICAtIEFkZGVkIHxDb25zdHJ1Y3RXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHR8IGV4dGVuZGVkIGF0dHJpYnV0ZS4KKyAgICAgICAgLSBBZGRlZCB8Q29uc3RydWN0b3JTZXRz
RE9NV3JhcHBlcnwgZXh0ZW5kZWQgYXR0cmlidXRlLgorICAgICAgICAtIEFkZGVkIHxDb25zdHJ1
Y3RvclJhaXNlc0V4Y2VwdGlvbnwgZXh0ZW5kZWQgYXR0cmlidXRlLgorICAgICAgICAtIFJlcGxh
Y2VkIHRoZSBjdXN0b20gY29uc3RydWN0b3JzIG9mIEV2ZW50U291cmNlLCBGaWxlUmVhZGVyLCBT
aGFyZWRXb3JrZXIsCisgICAgICAgIFdlYktpdENTU01hdHJpeCwgV29ya2VyLCBYU0xUUHJvY2Vz
c29yIHdpdGggdGhlIENvbnN0cnVjdG9yKC4uLikgZXh0ZW5kZWQgYXR0cmlidXRlLgorCisgICAg
ICAgIFRlc3RzOiBodHRwL3Rlc3RzL2V2ZW50c291cmNlL2V2ZW50c291cmNlLWNvbnRlbnQtdHlw
ZS1jaGFyc2V0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzb3VyY2UvZXZlbnRzb3Vy
Y2UtY29uc3RydWN0b3IuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9ldmVudHNvdXJj
ZS9ldmVudHNvdXJjZS1iYWQtbWltZS10eXBlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVz
dHMvZXZlbnRzb3VyY2UvZXZlbnRzb3VyY2UtcmVjb25uZWN0Lmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvZXZlbnRzb3VyY2UvZXZlbnRzb3VyY2UtYXR0cmlidXRlLWxpc3RlbmVycy5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL2V2ZW50c291cmNlL2V2ZW50c291cmNlLXN0YXR1cy1j
b2RlLXN0YXRlcy5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2V2ZW50c291cmNlL2V2
ZW50c291cmNlLXBhcnNlLWV2ZW50LXN0cmVhbS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zp
bGVzL2Jsb2Itc2xpY2UtdGVzdC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2ZpbGVzL2ZpbGUt
cmVhZGVyLWFib3J0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvd29ya2Vycy9zaGFyZWQtd29y
a2VyLWdjLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLXNp
bXBsZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1zaGFy
ZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItbG9hZC1l
cnJvci5odG1sCisgICAgICAgICAgICAgICBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1pZnJh
bWUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItY29uc3Ry
dWN0b3IuaHRtbAorICAgICAgICAgICAgICAgZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItZXZl
bnQtbGlzdGVuZXIuaHRtbAorICAgICAgICAgICAgICAgZmFzdC93b3JrZXJzL3NoYXJlZC13b3Jr
ZXItc2NyaXB0LWVycm9yLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvd29ya2Vycy9z
aGFyZWQtd29ya2VyLXJlZGlyZWN0Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvd29y
a2Vycy9zaGFyZWQtd29ya2VyLWludmFsaWQtdXJsLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
d29ya2Vycy93b3JrZXItY3Jhc2gtd2l0aC1pbnZhbGlkLWxvY2F0aW9uLmh0bWwKKyAgICAgICAg
ICAgICAgIGh0dHAvdGVzdHMvd29ya2Vycy9zaGFyZWQtd29ya2VyLWltcG9ydFNjcmlwdHMuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC93b3JrZXJzL3Jlc291cmNlcy9jcmVhdGUtc2hhcmVkLXdv
cmtlci1mcmFtZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1zaW1wbGUuaHRtbAorICAgICAgICAgICAgICAg
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLWluLXNoYXJlZC13
b3JrZXIuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4
aWU3Ni93b3JrZXJzL2Nsb3NlLWluLXNoYXJlZC13b3JrZXIuaHRtbAorICAgICAgICAgICAgICAg
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni93b3JrZXJzL3NoYXJlZC13b3JrZXIt
c2ltcGxlLmh0bWwKKyAgICAgICAgICAgICAgIHRyYW5zZm9ybXMvMmQvY3NzbWF0cml4LTJkLXpv
b20uaHRtbAorICAgICAgICAgICAgICAgdHJhbnNpdGlvbnMvcmV0YXJnZXR0ZWQtdHJhbnNpdGlv
bi5odG1sCisgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy9tYXRjaGVkLXRyYW5zZm9ybS1mdW5j
dGlvbnMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vV2luZG93L2N1c3RvbS1jb25zdHJ1
Y3RvcnMuaHRtbAorICAgICAgICAgICAgICAgdHJhbnNmb3Jtcy8zZC9nZW5lcmFsL2Nzc21hdHJp
eC0zZC16b29tLmh0bWwKKyAgICAgICAgICAgICAgIGFuaW1hdGlvbnMvY29tYm8tdHJhbnNmb3Jt
LXRyYW5zbGF0ZStzY2FsZS5odG1sCisgICAgICAgICAgICAgICB0cmFuc2Zvcm1zL3N2Zy12cy1j
c3MueGh0bWwKKyAgICAgICAgICAgICAgIHRyYW5zZm9ybXMvY3NzbWF0cml4LTJkLWludGVyZmFj
ZS54aHRtbAorICAgICAgICAgICAgICAgdHJhbnNmb3Jtcy9jc3NtYXRyaXgtM2QtaW50ZXJmYWNl
LnhodG1sCisgICAgICAgICAgICAgICBmYXN0L3hzbC9kZWZhdWx0LWh0bWwuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC94c2wveHNsdC1wcm9jZXNzb3IuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC94c2wvZXh0cmEtbGYtYXQtZW5kLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QveHNsL25ic3At
aW4tc3R5bGVzaGVldC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9nbG9iYWwtY29uc3Ry
dWN0b3JzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL1dpbmRvdy9jdXN0b20tY29uc3Ry
dWN0b3JzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QveHNsL3hzbHQtc3RyaW5nLXBhcmFtZXRl
cnMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC94c2wveHNsdC1mcmFnbWVudC1pbi1lbXB0eS1k
b2MuaHRtbAorICAgICAgICAgICAgICAgZmFzdC94c2wvdHJhbnNmb3JtVG9GcmFnbWVudC1YTUwt
ZGVjbGFyYXRpb24uaHRtbAorICAgICAgICAgICAgICAgZmFzdC94c2wvdHJhbnNmb3JtLXhoci1k
b2MueGh0bWwKKyAgICAgICAgICAgICAgIGZhc3QveHNsL2ltcG9ydC1ub24tZG9jdW1lbnQtbm9k
ZS54aHRtbAorICAgICAgICAgICAgICAgZmFzdC93b3JrZXJzL3dvcmtlci1nYzIuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC93b3JrZXJzL3dvcmtlci1jbG9zZS5odG1sCisgICAgICAgICAgICAg
ICBmYXN0L3dvcmtlcnMvd29ya2VyLWluaXQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC93b3Jr
ZXJzL3dvcmtlci10ZXJtaW5hdGUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC93b3JrZXJzL3dv
cmtlci10aW1lb3V0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvd29ya2Vycy93b3JrZXItZ2Mu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC93b3JrZXJzL3dvcmtlci1jYWxsLmh0bWwKKyAgICAg
ICAgICAgICAgIGh0dHAvdGVzdHMvd29ya2Vycy90ZXh0LWVuY29kaW5nLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3Qvd29ya2Vycy93cmFwcGVyLW1hcC1nYy5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2V2ZW50cy9kaXNwYXRjaEV2ZW50LWNyYXNoLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
d29ya2Vycy93b3JrZXItZmluaXNoLWNyYXNoLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvd29y
a2Vycy93b3JrZXItbWVzc2FnZXBvcnQtZ2MuaHRtbAorICAgICAgICAgICAgICAgZmFzdC93b3Jr
ZXJzL3dvcmtlci1jbG9uZXBvcnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC93b3JrZXJzL3dv
cmtlci1zY3JpcHQtZXJyb3IuaHRtbAorICAgICAgICAgICAgICAgaW5zcGVjdG9yL2RlYnVnZ2Vy
L3NjcmlwdC1mb3JtYXR0ZXIuaHRtbAorICAgICAgICAgICAgICAgZmFzdC93b3JrZXJzL3dvcmtl
ci1jbG9zZS1tb3JlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvd29ya2Vycy93b3JrZXItdGVy
bWluYXRlLWZvcmV2ZXIuaHRtbAorICAgICAgICAgICAgICAgZmFzdC93b3JrZXJzL3Rlcm1pbmF0
aW9uLWVhcmx5Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvd29ya2Vycy91c2UtbWFjaGluZS1z
dGFjay5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dvcmtlcnMvd29ya2VyLXJlZGly
ZWN0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvd29ya2Vycy9zdG9yYWdlL2ludGVycnVwdC1k
YXRhYmFzZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3dvcmtlcnMvc3RyZXNzLWpzLWV4ZWN1
dGlvbi5odG1sCisgICAgICAgICAgICAgICBmYXN0L3dvcmtlcnMvc3RvcmFnZS9jaGFuZ2UtdmVy
c2lvbi1zeW5jLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvd29ya2Vycy93b3JrZXIt
aW52YWxpZC11cmwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC93b3JrZXJzL3dvcmtlci1ldmVu
dC1saXN0ZW5lci5odG1sCisgICAgICAgICAgICAgICBmYXN0L2NhbnZhcy93ZWJnbC93b3JrZXIt
ZGF0YS12aWV3LXRlc3QuaHRtbAorICAgICAgICAgICAgICAgZmFzdC93b3JrZXJzL3dvcmtlci1t
ZXNzYWdlcG9ydC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3dvcmtlcnMvd29ya2VyLWNvbnN0
cnVjdG9yLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZmlsZXMvd29ya2Vycy9pbmxpbmUtd29y
a2VyLXZpYS1ibG9iLXVybC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3dvcmtlcnMvc2hhcmVk
LXdvcmtlci1jb25zdHJ1Y3Rvci5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dvcmtl
cnMvd29ya2VyLXdvcmtlclNjcmlwdE5vdFRoZXJlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
ZmlsZXMvd29ya2Vycy93b3JrZXItYXBwbHktYmxvYi11cmwtdG8teGhyLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3Qvd29ya2Vycy93b3JrZXItY3Jhc2gtd2l0aC1pbnZhbGlkLWxvY2F0aW9uLmh0
bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvd29ya2Vycy93b3JrZXItaW1wb3J0U2NyaXB0
c09uRXJyb3IuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93b3JrZXJzL3dvcmtlci1p
bXBvcnRTY3JpcHRzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvd29ya2Vycy90ZXJtaW5hdGlv
bi13aXRoLXBvcnQtbWVzc2FnZXMuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3dvcmtlci1zaW1wbGUuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC93b3JrZXJzL3N0b3JhZ2UvdXNlLXNhbWUtZGF0YWJhc2UtaW4tcGFnZS1hbmQtd29y
a2Vycy5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L3dvcmtlcnMvY2xvc2UtaW4td29ya2VyLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMv
ZXZlbnRzb3VyY2Uvd29ya2Vycy9ldmVudHNvdXJjZS1zaW1wbGUuaHRtbAorICAgICAgICAgICAg
ICAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni93b3JrZXJzL3dvcmtlci1zaW1w
bGUuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93b3JrZXJz
L2Fib3J0LWV4Y2VwdGlvbi1hc3NlcnQuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLWluLW9ubWVzc2FnZS1jcmFzaC5odG1s
CisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3dvcmtl
cnMvY2xvc2UtaW4tb25tZXNzYWdlLWNyYXNoLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYvd29ya2Vycy9jbG9zZS1pbi13b3JrZXIuaHRtbAor
ICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3dv
cmtlci1oYW5kc2hha2UtY2hhbGxlbmdlLXJhbmRvbW5lc3MuaHRtbAorICAgICAgICAgICAgICAg
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni93b3JrZXJzL3dvcmtlci1oYW5kc2hh
a2UtY2hhbGxlbmdlLXJhbmRvbW5lc3MuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvclY4LnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJh
dGVGdW5jdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKToK
KyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChHZW5lcmF0
ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKENvbnZlcnRUb1Y4UGFyYW1ldGVyKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbToKKyAgICAgICAgKHBhcnNlRXh0ZW5k
ZWRBdHRyaWJ1dGVzKToKKyAgICAgICAgKHBhcnNlUGFyYW1ldGVycyk6CisgICAgICAgIChQYXJz
ZUludGVyZmFjZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUucG06
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmluZGluZ01hY3Jvcy5oOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50U291cmNlQ29uc3RydWN0b3IuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEZpbGVSZWFkZXJDdXN0b20uY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNoYXJlZFdvcmtlckN1c3RvbS5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0Q1NTTWF0cml4
Q29uc3RydWN0b3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OFdvcmtlckN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4WFNMVFBy
b2Nlc3NvckN1c3RvbS5jcHA6CisgICAgICAgICogY3NzL1dlYktpdENTU01hdHJpeC5pZGw6Cisg
ICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyLmlkbDoKKyAgICAgICAgKiBwYWdlL0V2ZW50U291
cmNlLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL1NoYXJlZFdvcmtlci5pZGw6CisgICAgICAgICog
d29ya2Vycy9Xb3JrZXIuaWRsOgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yLmlkbDoKKwog
MjAxMS0wOC0xMyAgQWJoaXNoZWsgQXJ5YSAgPGluZmVybm9AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIENyYXNoIGluIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0FueU90aGVyRW5kVGFnRm9ySW5C
b2R5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZWYwNTRiZC4uOWEzMmM4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtMjE0MCw3ICsyMTQwLDYgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20v
VjhFbnRyeUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEVu
dHJ5U3luY0N1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2
ZW50Q3VzdG9tLmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRT
b3VyY2VDb25zdHJ1Y3Rvci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEZpbGVSZWFkZXJDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20v
VjhGbG9hdDMyQXJyYXlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0
b20vVjhGbG9hdDY0QXJyYXlDdXN0b20uY3BwJywKQEAgLTIyMDEsNyArMjIwMCw2IEBACiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHUGF0aFNlZ0N1c3RvbS5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlTm9kZUN1c3Rv
bS5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNoYXJlZFdvcmtlckN1
c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0b3JhZ2VDdXN0
b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhTdHlsZVNoZWV0Q3Vz
dG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3R5bGVTaGVldExp
c3RDdXN0b20uY3BwJywKQEAgLTIyMTAsNyArMjIwOCw2IEBACiAgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4VWludDhBcnJheUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAnLAot
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdENTU01hdHJpeENvbnN0cnVj
dG9yLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0UG9pbnRD
b25zdHJ1Y3Rvci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNv
Y2tldEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtl
ckNvbnRleHRDdXN0b20uY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggYjc2MzAzNy4uZTU2MjMyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5wcm8KQEAgLTE2NSw3ICsxNjUsNiBAQCB2OCB7CiAgICAgICAgIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOERvY3VtZW50TG9jYXRpb25DdXN0b20uY3BwIFwKICAgICAgICAgYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RWxlbWVudEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9j
dXN0b20vVjhFdmVudEN1c3RvbS5jcHAgXAotICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhF
dmVudFNvdXJjZUNvbnN0cnVjdG9yLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OEZpbGVSZWFkZXJDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCiAKQEAgLTIwMywxMiArMjAyLDEwIEBAIHY4IHsKICAg
ICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwIFwKICAg
ICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcCBcCiAgICAgICAg
IFwKLSAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2hhcmVkV29ya2VyQ3VzdG9tLmNwcCBc
CiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0b3JhZ2VDdXN0b20uY3BwIFwKICAgICAg
ICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3R5bGVTaGVldEN1c3RvbS5jcHAgXAogICAgICAgICBi
aW5kaW5ncy92OC9jdXN0b20vVjhTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAgXAogICAgICAgICBi
aW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwIFwKLSAgICAgICAg
YmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuY3BwIFwKICAg
ICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0UG9pbnRDb25zdHJ1Y3Rvci5jcHAgXAog
ICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBcCiAg
ICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHAgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCA2
NWEwNjhjLi45Y2YzNzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMzQ5LDcgKzM0OSw3IEBAIEVORAogICAgICAgICB9
CiAgICAgfQogCi0gICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3Rv
bUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhDdXN0
b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbkJl
Q29uc3RydWN0ZWQifSkgeworICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDYW5CZUNvbnN0cnVjdGVkIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q3VzdG9tQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJW
OEN1c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q29uc3RydWN0b3IifSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiAg
ICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpOwogRU5ECkBAIC0xMzQwLDYgKzEzNDAsMjkgQEAgRU5ECiBF
TkQKICAgICB9CiAKKyAgICBteSAoJHBhcmFtZXRlckNoZWNrU3RyaW5nLCAkcGFyYW1JbmRleCkg
PSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjaygkZnVuY3Rpb24sICRpbXBsQ2xhc3NOYW1lKTsKKyAg
ICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcpOworCisgICAg
IyBCdWlsZCB0aGUgZnVuY3Rpb24gY2FsbCBzdHJpbmcuCisgICAgbXkgJGNhbGxTdHJpbmcgPSBH
ZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZygkZnVuY3Rpb24sICRwYXJhbUluZGV4LCAiICAgICIs
ICRpbXBsQ2xhc3NOYW1lKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiJGNhbGxTdHJp
bmciKTsKKworICAgIGlmICgkcmFpc2VzRXhjZXB0aW9ucykgeworICAgICAgICBwdXNoKEBpbXBs
Q29udGVudERlY2xzLCAiICAgIH1cbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xz
LCAiICAgIGZhaWw6XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBW
OFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250
ZW50RGVjbHMsICIgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpO1xuIik7CisgICAg
fQorCisgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIn1cblxuIik7Cit9CisKK3N1YiBHZW5l
cmF0ZVBhcmFtZXRlcnNDaGVjaworeworICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0OworICAgIG15
ICRpbXBsQ2xhc3NOYW1lID0gc2hpZnQ7CisKKyAgICBteSAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcg
PSAiIjsKICAgICBteSAkcGFyYW1JbmRleCA9IDA7CiAgICAgZm9yZWFjaCBteSAkcGFyYW1ldGVy
IChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKICAgICAgICAgVHJhbnNsYXRlUGFyYW1ldGVy
KCRwYXJhbWV0ZXIpOwpAQCAtMTM1MiwxMCArMTM3NSwxMCBAQCBFTkQKICAgICAgICAgbXkgJG9w
dGlvbmFsID0gJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9wdGlvbmFsIn07ICAg
ICAgICAKICAgICAgICAgaWYgKCRvcHRpb25hbCAmJiAkb3B0aW9uYWwgbmUgIkNhbGxXaXRoRGVm
YXVsdFZhbHVlIiAmJiAhJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxiYWNr
In0pIHsKICAgICAgICAgICAgICMgR2VuZXJhdGUgZWFybHkgY2FsbCBpZiB0aGVyZSBhcmUgbm90
IGVub3VnaCBwYXJhbWV0ZXJzLgotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywg
IiAgICBpZiAoYXJncy5MZW5ndGgoKSA8PSAkcGFyYW1JbmRleCkge1xuIik7CisgICAgICAgICAg
ICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBpZiAoYXJncy5MZW5ndGgoKSA8PSAkcGFy
YW1JbmRleCkge1xuIjsKICAgICAgICAgICAgIG15ICRmdW5jdGlvbkNhbGwgPSBHZW5lcmF0ZUZ1
bmN0aW9uQ2FsbFN0cmluZygkZnVuY3Rpb24sICRwYXJhbUluZGV4LCAiICAgICIgeCAyLCAkaW1w
bENsYXNzTmFtZSk7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAkZnVuY3Rp
b25DYWxsKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgfVxuIik7
CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gJGZ1bmN0aW9uQ2FsbDsKKyAg
ICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIH1cbiI7CiAgICAgICAgIH0K
IAogICAgICAgICAkaW1wbEluY2x1ZGVzeyJFeGNlcHRpb25Db2RlLmgifSA9IDE7CkBAIC0xMzY0
LDMzICsxMzg3LDMzIEBAIEVORAogICAgICAgICAgICAgbXkgJGNsYXNzTmFtZSA9IEdldENhbGxi
YWNrQ2xhc3NOYW1lKCRwYXJhbWV0ZXItPnR5cGUpOwogICAgICAgICAgICAgJGltcGxJbmNsdWRl
c3siJGNsYXNzTmFtZS5oIn0gPSAxOwogICAgICAgICAgICAgaWYgKCRwYXJhbWV0ZXItPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9KSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnREZWNscywgIiAgICBSZWZQdHI8IiAuICRwYXJhbWV0ZXItPnR5cGUgLiAiPiAkcGFy
YW1ldGVyTmFtZTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMs
ICIgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAkcGFyYW1JbmRleCAmJiAhYXJnc1skcGFyYW1JbmRl
eF0tPklzTnVsbCgpICYmICFhcmdzWyRwYXJhbUluZGV4XS0+SXNVbmRlZmluZWQoKSkge1xuIik7
Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAgaWYgKCFh
cmdzWyRwYXJhbUluZGV4XS0+SXNPYmplY3QoKSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsICIgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihUWVBFX01J
U01BVENIX0VSUik7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xz
LCAiICAgICAgICAkcGFyYW1ldGVyTmFtZSA9ICR7Y2xhc3NOYW1lfTo6Y3JlYXRlKGFyZ3NbJHBh
cmFtSW5kZXhdLCBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpO1xuIik7Ci0gICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICB9XG4iKTsKKyAgICAgICAgICAgICAg
ICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBSZWZQdHI8IiAuICRwYXJhbWV0ZXItPnR5
cGUgLiAiPiAkcGFyYW1ldGVyTmFtZTtcbiI7CisgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNo
ZWNrU3RyaW5nIC49ICIgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAkcGFyYW1JbmRleCAmJiAhYXJn
c1skcGFyYW1JbmRleF0tPklzTnVsbCgpICYmICFhcmdzWyRwYXJhbUluZGV4XS0+SXNVbmRlZmlu
ZWQoKSkge1xuIjsKKyAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAg
ICAgICAgaWYgKCFhcmdzWyRwYXJhbUluZGV4XS0+SXNPYmplY3QoKSlcbiI7CisgICAgICAgICAg
ICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgICAgICByZXR1cm4gdGhyb3dF
cnJvcihUWVBFX01JU01BVENIX0VSUik7XG4iOworICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJD
aGVja1N0cmluZyAuPSAiICAgICAgICAkcGFyYW1ldGVyTmFtZSA9ICR7Y2xhc3NOYW1lfTo6Y3Jl
YXRlKGFyZ3NbJHBhcmFtSW5kZXhdLCBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpO1xuIjsK
KyAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICB9XG4iOwogICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xz
LCAiICAgIGlmIChhcmdzLkxlbmd0aCgpIDw9ICRwYXJhbUluZGV4IHx8ICFhcmdzWyRwYXJhbUlu
ZGV4XS0+SXNPYmplY3QoKSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
RGVjbHMsICIgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFRZUEVfTUlTTUFUQ0hfRVJSKTtcbiIp
OwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgUmVmUHRyPCIg
LiAkcGFyYW1ldGVyLT50eXBlIC4gIj4gJHBhcmFtZXRlck5hbWUgPSAke2NsYXNzTmFtZX06OmNy
ZWF0ZShhcmdzWyRwYXJhbUluZGV4XSwgZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTtcbiIp
OworICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIGlmIChhcmdz
Lkxlbmd0aCgpIDw9ICRwYXJhbUluZGV4IHx8ICFhcmdzWyRwYXJhbUluZGV4XS0+SXNPYmplY3Qo
KSlcbiI7CisgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKFRZUEVfTUlTTUFUQ0hfRVJSKTtcbiI7CisgICAgICAgICAgICAg
ICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgUmVmUHRyPCIgLiAkcGFyYW1ldGVyLT50
eXBlIC4gIj4gJHBhcmFtZXRlck5hbWUgPSAke2NsYXNzTmFtZX06OmNyZWF0ZShhcmdzWyRwYXJh
bUluZGV4XSwgZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTtcbiI7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzaWYgKCRwYXJhbWV0ZXItPnR5cGUgZXEgIlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSIpIHsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oIn0gPSAxOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBib29s
ICR7cGFyYW1ldGVyTmFtZX1EaWRUaHJvdyA9IGZhbHNlO1xuIik7Ci0gICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudERlY2xzLCAiICAgICRuYXRpdmVUeXBlICRwYXJhbWV0ZXJOYW1lID0gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1skcGFyYW1JbmRleF0sICR7cGFyYW1ldGVy
TmFtZX1EaWRUaHJvdyk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMs
ICIgICAgaWYgKCR7cGFyYW1ldGVyTmFtZX1EaWRUaHJvdylcbiIpOwotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTtcbiIp
OworICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgYm9vbCAke3BhcmFt
ZXRlck5hbWV9RGlkVGhyb3cgPSBmYWxzZTtcbiI7CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hl
Y2tTdHJpbmcgLj0gIiAgICAkbmF0aXZlVHlwZSAkcGFyYW1ldGVyTmFtZSA9IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbJHBhcmFtSW5kZXhdLCAke3BhcmFtZXRlck5hbWV9RGlk
VGhyb3cpO1xuIjsKKyAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIGlm
ICgke3BhcmFtZXRlck5hbWV9RGlkVGhyb3cpXG4iOworICAgICAgICAgICAgJHBhcmFtZXRlckNo
ZWNrU3RyaW5nIC49ICIgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7XG4iOwogICAgICAg
ICB9IGVsc2lmIChUeXBlQ2FuRmFpbENvbnZlcnNpb24oJHBhcmFtZXRlcikpIHsKLSAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgJG5hdGl2ZVR5cGUgJHBhcmFtZXRlck5h
bWUgPSAiIC4KLSAgICAgICAgICAgICAgICAgSlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICJh
cmdzWyRwYXJhbUluZGV4XSIpIC4gIjtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnREZWNscywgIiAgICBpZiAoVU5MSUtFTFkoISRwYXJhbWV0ZXJOYW1lKSkge1xuIik7Ci0gICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICAgICBlYyA9IFRZUEVfTUlTTUFU
Q0hfRVJSO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICAg
ICBnb3RvIGZhaWw7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIg
ICAgfVxuIik7CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAkbmF0
aXZlVHlwZSAkcGFyYW1ldGVyTmFtZSA9ICIgLgorICAgICAgICAgICAgICAgICBKU1ZhbHVlVG9O
YXRpdmUoJHBhcmFtZXRlciwgImFyZ3NbJHBhcmFtSW5kZXhdIikgLiAiO1xuIjsKKyAgICAgICAg
ICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIGlmIChVTkxJS0VMWSghJHBhcmFtZXRl
ck5hbWUpKSB7XG4iOworICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAg
ICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7XG4iOworICAgICAgICAgICAgJHBhcmFtZXRlckNo
ZWNrU3RyaW5nIC49ICIgICAgICAgIGdvdG8gZmFpbDtcbiI7CisgICAgICAgICAgICAkcGFyYW1l
dGVyQ2hlY2tTdHJpbmcgLj0gIiAgICB9XG4iOwogICAgICAgICB9IGVsc2lmICgkbmF0aXZlVHlw
ZSA9fiAvXlY4UGFyYW1ldGVyLykgewogICAgICAgICAgICAgbXkgJHZhbHVlID0gSlNWYWx1ZVRv
TmF0aXZlKCRwYXJhbWV0ZXIsICJhcmdzWyRwYXJhbUluZGV4XSIpOwotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgIiAgICAiIC4gQ29udmVydFRvVjhQYXJhbWV0ZXIoJHBhcmFt
ZXRlciwgJG5hdGl2ZVR5cGUsICRwYXJhbWV0ZXJOYW1lLCAkdmFsdWUpIC4gIlxuIik7CisgICAg
ICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAiIC4gQ29udmVydFRvVjhQYXJh
bWV0ZXIoJHBhcmFtZXRlciwgJG5hdGl2ZVR5cGUsICRwYXJhbWV0ZXJOYW1lLCAkdmFsdWUpIC4g
IlxuIjsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IlY4Qmlu
ZGluZ01hY3Jvcy5oIn0gPSAxOwogICAgICAgICAgICAgIyBJZiB0aGUgIlN0cmljdFR5cGVDaGVj
a2luZyIgZXh0ZW5kZWQgYXR0cmlidXRlIGlzIHByZXNlbnQsIGFuZCB0aGUgYXJndW1lbnQncyB0
eXBlIGlzIGFuCkBAIC0xMzk5LDQyICsxNDIyLDExNCBAQCBFTkQKICAgICAgICAgICAgICMgUGVy
IHRoZSBXZWIgSURMIGFuZCBFQ01BU2NyaXB0IHNwZWNpZmljYXRpb25zLCBpbmNvbWluZyB2YWx1
ZXMgY2FuIGFsd2F5cyBiZSBjb252ZXJ0ZWQKICAgICAgICAgICAgICMgdG8gYm90aCBzdHJpbmdz
IGFuZCBudW1iZXJzLCBzbyBkbyBub3QgdGhyb3cgVHlwZUVycm9yIGlmIHRoZSBhcmd1bWVudCBp
cyBvZiB0aGVzZQogICAgICAgICAgICAgIyB0eXBlcy4KLSAgICAgICAgICAgIGlmICgkZnVuY3Rp
b24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlN0cmljdFR5cGVDaGVja2luZyJ9
KSB7CisgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUgJiYgJGZ1bmN0aW9uLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJTdHJpY3RUeXBlQ2hlY2tpbmcifSkgewog
ICAgICAgICAgICAgICAgIG15ICRhcmdWYWx1ZSA9ICJhcmdzWyRwYXJhbUluZGV4XSI7CiAgICAg
ICAgICAgICAgICAgbXkgJGFyZ1R5cGUgPSBHZXRUeXBlRnJvbVNpZ25hdHVyZSgkcGFyYW1ldGVy
KTsKICAgICAgICAgICAgICAgICBpZiAoSXNXcmFwcGVyVHlwZSgkYXJnVHlwZSkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBpZiAoYXJncy5MZW5n
dGgoKSA+ICRwYXJhbUluZGV4ICYmICFpc1VuZGVmaW5lZE9yTnVsbCgkYXJnVmFsdWUpICYmICFW
OCR7YXJnVHlwZX06Okhhc0luc3RhbmNlKCRhcmdWYWx1ZSkpIHtcbiIpOwotICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICAgICBWOFByb3h5Ojp0aHJvd1R5
cGVFcnJvcigpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVj
bHMsICIgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpO1xuIik7Ci0gICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgfVxuIik7CisgICAg
ICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIGlmIChhcmdzLkxl
bmd0aCgpID4gJHBhcmFtSW5kZXggJiYgIWlzVW5kZWZpbmVkT3JOdWxsKCRhcmdWYWx1ZSkgJiYg
IVY4JHthcmdUeXBlfTo6SGFzSW5zdGFuY2UoJGFyZ1ZhbHVlKSkge1xuIjsKKyAgICAgICAgICAg
ICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIFY4UHJveHk6OnRocm93
VHlwZUVycm9yKCk7XG4iOworICAgICAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJp
bmcgLj0gIiAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7XG4iOworICAg
ICAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICB9XG4iOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50RGVjbHMsICIgICAgRVhDRVBUSU9OX0JMT0NLKCRuYXRpdmVUeXBlLCAkcGFyYW1ldGVyTmFt
ZSwgIiAuCi0gICAgICAgICAgICAgICAgIEpTVmFsdWVUb05hdGl2ZSgkcGFyYW1ldGVyLCAiYXJn
c1skcGFyYW1JbmRleF0iKSAuICIpO1xuIik7CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tT
dHJpbmcgLj0gIiAgICBFWENFUFRJT05fQkxPQ0soJG5hdGl2ZVR5cGUsICRwYXJhbWV0ZXJOYW1l
LCAiIC4KKyAgICAgICAgICAgICAgICAgSlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICJhcmdz
WyRwYXJhbUluZGV4XSIpIC4gIik7XG4iOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCRwYXJh
bWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJc0luZGV4In0pIHsKLSAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaWYgKFVOTElLRUxZKCRwYXJhbWV0ZXJOYW1lIDwg
MCkpIHtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAg
ZWMgPSBJTkRFWF9TSVpFX0VSUjtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRE
ZWNscywgIiAgICAgICAgZ290byBmYWlsO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudERlY2xzLCAiICAgIH1cbiIpOworICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5n
IC49ICIgICAgaWYgKFVOTElLRUxZKCRwYXJhbWV0ZXJOYW1lIDwgMCkpIHtcbiI7CisgICAgICAg
ICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VS
UjtcbiI7CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgZ290
byBmYWlsO1xuIjsKKyAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIH1c
biI7CiAgICAgICAgIH0KIAogICAgICAgICAkcGFyYW1JbmRleCsrOwogICAgIH0KKyAgICByZXR1
cm4gKCRwYXJhbWV0ZXJDaGVja1N0cmluZywgJHBhcmFtSW5kZXgpOworfQogCi0gICAgIyBCdWls
ZCB0aGUgZnVuY3Rpb24gY2FsbCBzdHJpbmcuCi0gICAgbXkgJGNhbGxTdHJpbmcgPSBHZW5lcmF0
ZUZ1bmN0aW9uQ2FsbFN0cmluZygkZnVuY3Rpb24sICRwYXJhbUluZGV4LCAiICAgICIsICRpbXBs
Q2xhc3NOYW1lKTsKLSAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiJGNhbGxTdHJpbmciKTsK
K3N1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yQ2FsbGJhY2sKK3sKKyAgICBteSAkZnVuY3Rpb24gPSBz
aGlmdDsKKyAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKKyAgICBteSAkaW1wbENsYXNzTmFtZSA9
IHNoaWZ0OworCisgICAgbXkgJHJhaXNlc0V4Y2VwdGlvbnMgPSBAeyRmdW5jdGlvbi0+cmFpc2Vz
RXhjZXB0aW9uc307CisgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNv
bnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uIn0pIHsKKyAgICAgICAgJHJhaXNlc0V4Y2VwdGlvbnMg
PSAxOworICAgIH0KKyAgICBpZiAoISRyYWlzZXNFeGNlcHRpb25zKSB7CisgICAgICAgIGZvcmVh
Y2ggbXkgJHBhcmFtZXRlciAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7CisgICAgICAgICAg
ICBpZiAoKCEkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbGJhY2sifSBhbmQg
VHlwZUNhbkZhaWxDb252ZXJzaW9uKCRwYXJhbWV0ZXIpKSBvciAkcGFyYW1ldGVyLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSXNJbmRleCJ9KSB7CisgICAgICAgICAgICAgICAgJHJhaXNlc0V4Y2Vw
dGlvbnMgPSAxOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgbXkgQGV4
dHJhQXJndW1lbnRMaXN0OworICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Cit2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjgke2ltcGxDbGFzc05hbWV9Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uJHtpbXBsQ2xh
c3NOYW1lfS5Db25zdHJ1Y3RvciIpOworCisgICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgp
KQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5u
b3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKK0VORAog
CiAgICAgaWYgKCRyYWlzZXNFeGNlcHRpb25zKSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50
RGVjbHMsICIgICAgfVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAg
ZmFpbDpcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIFY4UHJveHk6
OnNldERPTUV4Y2VwdGlvbihlYyk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNs
cywgIiAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7XG4iKTsKKyAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7XG4iKTsKICAgICB9CiAK
LSAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAifVxuXG4iKTsKKyAgICBteSAoJHBhcmFtZXRl
ckNoZWNrU3RyaW5nLCAkcGFyYW1JbmRleCkgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjaygkZnVu
Y3Rpb24sICRpbXBsQ2xhc3NOYW1lKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgJHBhcmFtZXRl
ckNoZWNrU3RyaW5nKTsKKworICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDb25zdHJ1Y3RvcldpdGgifSBlcSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dCIpIHsKKyAgICAg
ICAgcHVzaChAZXh0cmFBcmd1bWVudExpc3QsICJjb250ZXh0Iik7CisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCA8PEVORCk7CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkKKyAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoIiR7aW1wbENsYXNzTmFtZX0gY29uc3RydWN0b3IncyBhc3Nv
Y2lhdGVkIGNvbnRleHQgaXMgbm90IGF2YWlsYWJsZSIsIFY4UHJveHk6OlJlZmVyZW5jZUVycm9y
KTsKK0VORAorICAgIH0KKworICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbiJ9KSB7CisgICAgICAgIHB1c2goQGV4dHJhQXJn
dW1lbnRMaXN0LCAiZWMiKTsKKyAgICB9CisKKyAgICBteSBAYXJndW1lbnRMaXN0OworICAgIG15
ICRpbmRleCA9IDA7CisgICAgZm9yZWFjaCBteSAkcGFyYW1ldGVyIChAeyRmdW5jdGlvbi0+cGFy
YW1ldGVyc30pIHsKKyAgICAgICAgbGFzdCBpZiAkaW5kZXggZXEgJHBhcmFtSW5kZXg7CisgICAg
ICAgIHB1c2goQGFyZ3VtZW50TGlzdCwgJHBhcmFtZXRlci0+bmFtZSk7CisgICAgICAgICRpbmRl
eCsrOworICAgIH0KKworICAgIG15ICRhcmd1bWVudFN0cmluZyA9IGpvaW4oIiwgIiwgQGFyZ3Vt
ZW50TGlzdCwgQGV4dHJhQXJndW1lbnRMaXN0KTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxu
Iik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgUmVmUHRyPCR7aW1wbENsYXNzTmFtZX0+
IG9iaiA9ICR7aW1wbENsYXNzTmFtZX06OmNyZWF0ZSgke2FyZ3VtZW50U3RyaW5nfSk7XG4iKTsK
KworICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvclJh
aXNlc0V4Y2VwdGlvbiJ9KSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChl
YylcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgZ290byBmYWlsO1xu
Iik7CisgICAgfQorCisgICAgbXkgJERPTU9iamVjdCA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IlY4Q29uc3RydWN0b3JTZXRzRE9NV3JhcHBlciJ9ID8gIkRPTU9iamVjdCIgOiAi
QWN0aXZlRE9NT2JqZWN0IjsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOworCisgICAg
VjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksICZpbmZvLCBvYmouZ2V0
KCkpOworICAgIG9iai0+cmVmKCk7CisgICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3Ik
e0RPTU9iamVjdH0ob2JqLmdldCgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGFy
Z3MuSG9sZGVyKCkpKTsKKyAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKK0VORAorCisgICAgaWYg
KCRyYWlzZXNFeGNlcHRpb25zKSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICBmYWls
OlxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB0aHJvd0Vycm9y
KGVjKTtcbiIpOworICAgIH0KKworICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuIik7CisgICAg
cHVzaChAaW1wbENvbnRlbnQsICJcbiIpOwogfQogCiBzdWIgR2VuZXJhdGVCYXRjaGVkQXR0cmli
dXRlRGF0YQpAQCAtMTg5Niw3ICsxOTkxLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICBpZiAoQGRpc2FsbG93c1NoYWRvd2luZykgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgInN0YXRpYyBjb25zdCBCYXRjaGVkQXR0cmlidXRlIHNoYWRvd0F0dHJzW10gPSB7XG4iKTsK
ICAgICAgICAgR2VuZXJhdGVCYXRjaGVkQXR0cmlidXRlRGF0YSgkZGF0YU5vZGUsIFxAZGlzYWxs
b3dzU2hhZG93aW5nKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9O1xuIik7CisgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAifTtcblxuIik7CiAgICAgfQogCiAgICAgbXkgJGhhc19h
dHRyaWJ1dGVzID0gMDsKQEAgLTE5MDQsNyArMTk5OSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgICAgICRoYXNfYXR0cmlidXRlcyA9IDE7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAic3RhdGljIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUgJHtpbnRlcmZhY2VOYW1lfUF0
dHJzW10gPSB7XG4iKTsKICAgICAgICAgR2VuZXJhdGVCYXRjaGVkQXR0cmlidXRlRGF0YSgkZGF0
YU5vZGUsICRhdHRyaWJ1dGVzKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9O1xuIik7
CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifTtcblxuIik7CiAgICAgfQogCiAgICAgIyBT
ZXR1cCB0YWJsZSBvZiBzdGFuZGFyZCBjYWxsYmFjayBmdW5jdGlvbnMKQEAgLTE5NDMsNyArMjAz
OCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiBFTkQKICAgICAgICAgJG51bV9jYWxs
YmFja3MrKzsKICAgICB9Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICJ9O1xuIikgIGlmICRoYXNf
Y2FsbGJhY2tzOworICAgIHB1c2goQGltcGxDb250ZW50LCAifTtcblxuIikgIGlmICRoYXNfY2Fs
bGJhY2tzOwogCiAgICAgIyBTZXR1cCBjb25zdGFudHMKICAgICBteSAkaGFzX2NvbnN0YW50cyA9
IDA7CkBAIC0xOTYyLDE0ICsyMDU3LDE0IEBAIEVORAogRU5ECiAgICAgfQogICAgIGlmICgkaGFz
X2NvbnN0YW50cykgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn07XG4iKTsKKyAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJ9O1xuXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbXBpbGVUaW1lQ2hlY2tGb3JFbnVtc0lmTmVl
ZGVkKCRkYXRhTm9kZSkpOwogICAgIH0KIAogICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICJ9
IC8vIG5hbWVzcGFjZSAke2ludGVyZmFjZU5hbWV9SW50ZXJuYWxcblxuIik7CiAKICAgICAjIElu
IG5hbWVzcGFjZSBXZWJDb3JlLCBhZGQgZ2VuZXJhdGVkIGltcGxlbWVudGF0aW9uIGZvciAnQ2Fu
QmVDb25zdHJ1Y3RlZCcuCi0gICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkNhbkJlQ29uc3RydWN0ZWQifSAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q3VzdG9tQ29uc3RydWN0b3IifSAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
VjhDdXN0b21Db25zdHJ1Y3RvciJ9KSB7CisgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkNhbkJlQ29uc3RydWN0ZWQifSAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ3VzdG9tQ29uc3RydWN0b3IifSAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiVjhDdXN0b21Db25zdHJ1Y3RvciJ9ICYmICEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDb25zdHJ1Y3RvciJ9KSB7CiAgICAgICAgIG15ICR2OENvbnN0cnVjdEZ1bmN0
aW9uOwogICAgICAgICBteSAkY2FsbFdpdGggPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDYWxsV2l0aCJ9OwogICAgICAgICBpZiAoJGNhbGxXaXRoIGFuZCAkY2FsbFdpdGggZXEg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKSB7CkBAIC0xOTgzLDggKzIwNzgsMTMgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+ICR7Y2xhc3NOYW1lfTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmcKICAgICBJTkNfU1RBVFMoIkRPTS4ke2ludGVyZmFjZU5hbWV9LkNv
bnRydWN0b3IiKTsKICAgICByZXR1cm4gVjhQcm94eTo6JHt2OENvbnN0cnVjdEZ1bmN0aW9ufTwk
aW50ZXJmYWNlTmFtZT4oYXJncywgJmluZm8pOwogfQorCiBFTkQKLSAgIH0KKyAgICB9CisKKyAg
ICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3IifSkgewor
ICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yQ2FsbGJhY2soJGRhdGFOb2RlLT5jb25zdHJ1Y3Rv
ciwgJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CisgICAgfQogCiAgICAgbXkgJGFjY2Vzc19j
aGVjayA9ICIiOwogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVj
a0RvbWFpblNlY3VyaXR5In0gJiYgISgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikpIHsK
QEAgLTIwNDIsOSArMjE0Miw5IEBAIEVORAogICAgICAgICAkaW1wbEluY2x1ZGVzeyJ3dGYvVW51
c2VkUGFyYW0uaCJ9ID0gMTsKICAgICB9CiAKLSAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ3VzdG9tQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJWOEN1c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ2FuQmVDb25zdHJ1Y3RlZCJ9KSB7CisgICAgaWYgKCRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbkJlQ29uc3RydWN0ZWQifSB8fCAkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RlciJ9KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCA8PEVORCk7Ci0gICAgICAgIGRlc2MtPlNldENhbGxIYW5kbGVyKFY4JHtpbnRlcmZhY2VO
YW1lfTo6Y29uc3RydWN0b3JDYWxsYmFjayk7CisgICAgZGVzYy0+U2V0Q2FsbEhhbmRsZXIoVjgk
e2ludGVyZmFjZU5hbWV9Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKTsKIEVORAogICAgIH0KIApAQCAt
MzM0MCwxMyArMzQ0MCwxOCBAQCBzdWIgQ29udmVydFRvVjhQYXJhbWV0ZXIKICAgICBteSAkdmFy
aWFibGVOYW1lID0gc2hpZnQ7CiAgICAgbXkgJHZhbHVlID0gc2hpZnQ7CiAgICAgbXkgJHN1ZmZp
eCA9IHNoaWZ0OworICAgIG15ICRlcnIgPSBzaGlmdDsKIAogICAgIGRpZSAiV3JvbmcgbmF0aXZl
IHR5cGUgcGFzc2VkOiAkbmF0aXZlVHlwZSIgdW5sZXNzICRuYXRpdmVUeXBlID1+IC9eVjhQYXJh
bWV0ZXIvOwogICAgIGlmICgkc2lnbmF0dXJlLT50eXBlIGVxICJET01TdHJpbmciKSB7CiAgICAg
ICAgICRpbXBsSW5jbHVkZXN7IlY4QmluZGluZ01hY3Jvcy5oIn0gPSAxOwogICAgICAgICBteSAk
bWFjcm8gPSAiU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyI7CiAgICAgICAg
ICRtYWNybyAuPSAiXyRzdWZmaXgiIGlmICRzdWZmaXg7Ci0gICAgICAgIHJldHVybiAiJG1hY3Jv
KCRuYXRpdmVUeXBlLCAkdmFyaWFibGVOYW1lLCAkdmFsdWUpOyIKKyAgICAgICAgaWYgKCRzdWZm
aXggJiYgJHN1ZmZpeCBlcSAiVEhST1ciKSB7CisgICAgICAgICAgICByZXR1cm4gIiRtYWNybygk
bmF0aXZlVHlwZSwgJHZhcmlhYmxlTmFtZSwgJHZhbHVlLCAkZXJyKTsiCisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICByZXR1cm4gIiRtYWNybygkbmF0aXZlVHlwZSwgJHZhcmlhYmxlTmFt
ZSwgJHZhbHVlKTsiCisgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICAjIERvbid0IGtu
b3cgaG93IHRvIHByb3Blcmx5IGNoZWNrIGZvciBjb252ZXJzaW9uIGV4Y2VwdGlvbnMgd2hlbiAk
cGFyYW1ldGVyLT50eXBlIGlzICJET01Vc2VyRGF0YSIKICAgICAgICAgcmV0dXJuICIkbmF0aXZl
VHlwZSAkdmFyaWFibGVOYW1lKCR2YWx1ZSwgdHJ1ZSk7IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KaW5kZXggMDJmYTYyNy4uYzhjMGVhMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KQEAgLTIyLDYgKzIy
LDcgQEAKIHBhY2thZ2UgSURMUGFyc2VyOwogCiB1c2Ugc3RyaWN0OwordXNlIHJlICdldmFsJzsK
IAogdXNlIElQQzo6T3BlbjI7CiB1c2UgSURMU3RydWN0dXJlOwpAQCAtMTM5LDIyICsxNDAsODgg
QEAgc3ViIGR1bXBFeHRlbmRlZEF0dHJpYnV0ZXMKIHN1YiBwYXJzZUV4dGVuZGVkQXR0cmlidXRl
cwogewogICAgIG15ICRzdHIgPSBzaGlmdDsKLSAgICAkc3RyID1+IHMvXFtccyooLio/KVxzKlxd
LyQxL2c7CisgICAgJHN0ciA9fiBzL1xbXHMqKC4qKVxzKlxdLyQxL2c7CiAKICAgICBteSAlYXR0
cnMgPSAoKTsKIAotICAgIGZvcmVhY2ggbXkgJHZhbHVlIChzcGxpdCgvXHMqLFxzKi8sICRzdHIp
KSB7Ci0gICAgICAgIChteSAkbmFtZSwgbXkgJHZhbCkgPSBzcGxpdCgvXHMqPVxzKi8sICR2YWx1
ZSwgMik7Ci0KLSAgICAgICAgIyBBdHRyaWJ1dGVzIHdpdGggbm8gdmFsdWUgYXJlIHNldCB0byBi
ZSB0cnVlCi0gICAgICAgICR2YWwgPSAxIHVubGVzcyBkZWZpbmVkICR2YWw7Ci0gICAgICAgICRh
dHRyc3skbmFtZX0gPSAkdmFsOwotICAgICAgICBkaWUoIkludmFsaWQgZXh0ZW5kZWQgYXR0cmli
dXRlIG5hbWU6ICckbmFtZSdcbiIpIGlmICRuYW1lID1+IC9ccy87CisgICAgd2hpbGUgKCRzdHIg
IX4gL15ccyokLykgeworICAgICAgICAjIFBhcnNlIG5hbWUKKyAgICAgICAgaWYgKCRzdHIgIX4g
L15ccyooW1x3XGRdKykvKSB7CisgICAgICAgICAgICBkaWUoIkludmFsaWQgZXh0ZW5kZWQgYXR0
cmlidXRlOiAnJHN0cidcbiIpOworICAgICAgICB9CisgICAgICAgIG15ICRuYW1lID0gJDE7Cisg
ICAgICAgICRzdHIgPX4gcy9eXHMqKFtcd1xkXSspLy87CisKKyAgICAgICAgaWYgKCRzdHIgPX4g
L15ccyo9LykgeworICAgICAgICAgICAgIyBQYXJzZSAnPScgdmFsdWUgfCAnPScgdmFsdWUgJywn
CisgICAgICAgICAgICAkc3RyID1+IHMvXlxzKj0vLzsKKyAgICAgICAgICAgIGlmICgkc3RyID1+
IC9eXHMqKFteLF0qKSw/LykgeworICAgICAgICAgICAgICAgICRhdHRyc3skbmFtZX0gPSAkMTsK
KyAgICAgICAgICAgICAgICAkYXR0cnN7JG5hbWV9ID1+IHMvXiguKj8pXHMqJC8kMS87CisgICAg
ICAgICAgICAgICAgJHN0ciA9fiBzL15ccyooW14sXSopLD8vLzsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGllKCJJbnZhbGlkIGV4dGVuZGVkIGF0dHJpYnV0ZTogJyRz
dHInXG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNpZiAoJHN0ciA9fiAvXlxzKlwo
LykgeworICAgICAgICAgICAgIyBQYXJzZSAnKCcgYXJndW1lbnRzICcpJyB8ICcoJyBhcmd1bWVu
dHMgJyknICcsJworICAgICAgICAgICAgJGF0dHJzeyRuYW1lfSA9IDE7CisgICAgICAgICAgICAk
c3RyID1+IHMvXlxzKlwoLy87CisgICAgICAgICAgICBpZiAoJHN0ciA9fiAvXihbXildKilcKSw/
LykgeworICAgICAgICAgICAgICAgICRhdHRyc3skbmFtZX0gPSAkMTsKKyAgICAgICAgICAgICAg
ICAkYXR0cnN7JG5hbWV9ID1+IHMvXiguKj8pXHMqJC8kMS87CisgICAgICAgICAgICAgICAgJHN0
ciA9fiBzL14oW14pXSopXCksPy8vOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBkaWUoIkludmFsaWQgZXh0ZW5kZWQgYXR0cmlidXRlOiAnJHN0cidcbiIpOworICAgICAg
ICAgICAgfQorICAgICAgICB9IGVsc2lmICgkc3RyID1+IC9eXHMqLD8vKSB7CisgICAgICAgICAg
ICAjIFBhcnNlICcnIHwgJywnCisgICAgICAgICAgICBpZiAoJG5hbWUgZXEgIkNvbnN0cnVjdG9y
IikgeworICAgICAgICAgICAgICAgICRhdHRyc3skbmFtZX0gPSAiIjsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgJGF0dHJzeyRuYW1lfSA9IDE7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAkc3RyID1+IHMvXlxzKiw/Ly87CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBkaWUoIkludmFsaWQgZXh0ZW5kZWQgYXR0cmlidXRlOiAnJHN0cidcbiIpOworICAg
ICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIFwlYXR0cnM7CiB9CiAKK3N1YiBwYXJzZVBhcmFt
ZXRlcnMKK3sKKyAgICBteSAkbmV3RGF0YU5vZGUgPSBzaGlmdDsKKyAgICBteSAkbWV0aG9kU2ln
bmF0dXJlID0gc2hpZnQ7CisKKyAgICAjIFNwbGl0IGFyZ3VtZW50cyBhdCBjb21tYXMgYnV0IG9u
bHkgaWYgdGhlIGNvbW1hCisgICAgIyBpcyBub3Qgd2l0aGluIGF0dHJpYnV0ZSBicmFja2V0cywg
ZXhwcmVzc2VkIGhlcmUKKyAgICAjIGFzIGJlaW5nIGZvbGxvd2VkIGJ5IGEgJ10nIHdpdGhvdXQg
YSBwcmVjZWRpbmcgJ1snLgorICAgICMgTm90ZSB0aGF0IHRoaXMgYXNzdW1lcyB0aGF0IGF0dHJp
YnV0ZXMgZG9uJ3QgbmVzdC4KKyAgICBteSBAcGFyYW1zID0gc3BsaXQoLywoPyFbXltdKlxdKS8s
ICRtZXRob2RTaWduYXR1cmUpOworICAgIGZvcmVhY2ggKEBwYXJhbXMpIHsKKyAgICAgICAgbXkg
JGxpbmUgPSAkXzsKKworICAgICAgICAkbGluZSA9fiAvJElETFN0cnVjdHVyZTo6aW50ZXJmYWNl
UGFyYW1ldGVyU2VsZWN0b3IvOworICAgICAgICBteSAkcGFyYW1EaXJlY3Rpb24gPSAkMTsKKyAg
ICAgICAgbXkgJHBhcmFtRXh0ZW5kZWRBdHRyaWJ1dGVzID0gKGRlZmluZWQoJDIpID8gJDIgOiAi
ICIpOyBjaG9wKCRwYXJhbUV4dGVuZGVkQXR0cmlidXRlcyk7CisgICAgICAgIG15ICRwYXJhbVR5
cGUgPSAoZGVmaW5lZCgkMykgPyAkMyA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRs
aW5lXG4pIikpOworICAgICAgICBteSAkcGFyYW1OYW1lID0gKGRlZmluZWQoJDQpID8gJDQgOiBk
aWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxuKSIpKTsKKworICAgICAgICBteSAk
cGFyYW1EYXRhTm9kZSA9IG5ldyBkb21TaWduYXR1cmUoKTsKKyAgICAgICAgJHBhcmFtRGF0YU5v
ZGUtPmRpcmVjdGlvbigkcGFyYW1EaXJlY3Rpb24pOworICAgICAgICAkcGFyYW1EYXRhTm9kZS0+
bmFtZSgkcGFyYW1OYW1lKTsKKyAgICAgICAgJHBhcmFtRGF0YU5vZGUtPnR5cGUoJHBhcmFtVHlw
ZSk7CisgICAgICAgICRwYXJhbURhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMocGFyc2VFeHRl
bmRlZEF0dHJpYnV0ZXMoJHBhcmFtRXh0ZW5kZWRBdHRyaWJ1dGVzKSk7CisKKyAgICAgICAgbXkg
JGFycmF5UmVmID0gJG5ld0RhdGFOb2RlLT5wYXJhbWV0ZXJzOworICAgICAgICBwdXNoKEAkYXJy
YXlSZWYsICRwYXJhbURhdGFOb2RlKTsKKworICAgICAgICBwcmludCAiICB8ICAgfD4gIFBhcmFt
OyBUWVBFIFwiJHBhcmFtVHlwZVwiIE5BTUUgXCIkcGFyYW1OYW1lXCIiIC4gCisgICAgICAgICAg
ICBkdW1wRXh0ZW5kZWRBdHRyaWJ1dGVzKCJcbiAgfCAgICAgICAgICAgICAgIiwgJHBhcmFtRGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcykgLiAiXG4iIHVubGVzcyAkYmVRdWlldDsgICAgICAg
ICAgCisgICAgfQorfQorCiBzdWIgUGFyc2VJbnRlcmZhY2UKIHsKICAgICBteSAkb2JqZWN0ID0g
c2hpZnQ7CkBAIC0yMjAsNyArMjg3LDE0IEBAIHN1YiBQYXJzZUludGVyZmFjZQogCiAgICAgICAg
ICMgRmlsbCBpbiBrbm93biBwYXJ0cyBvZiB0aGUgZG9tQ2xhc3MgZGF0YXN0cnVjdHVyZSBub3cu
Li4KICAgICAgICAgJGRhdGFOb2RlLT5uYW1lKCRpbnRlcmZhY2VOYW1lKTsKLSAgICAgICAgJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMoJGludGVy
ZmFjZUV4dGVuZGVkQXR0cmlidXRlcykpOworICAgICAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVz
ID0gcGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMoJGludGVyZmFjZUV4dGVuZGVkQXR0cmlidXRlcyk7
CisgICAgICAgIGlmIChkZWZpbmVkICRleHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3Ii
fSkgeworICAgICAgICAgICAgbXkgJG5ld0RhdGFOb2RlID0gbmV3IGRvbUZ1bmN0aW9uKCk7Cisg
ICAgICAgICAgICBwYXJzZVBhcmFtZXRlcnMoJG5ld0RhdGFOb2RlLCAkZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkNvbnN0cnVjdG9yIn0pOworICAgICAgICAgICAgJGV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDb25zdHJ1Y3RvciJ9ID0gMTsKKyAgICAgICAgICAgICRkYXRhTm9kZS0+Y29uc3RydWN0b3Io
JG5ld0RhdGFOb2RlKTsKKyAgICAgICAgfQorICAgICAgICAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVzKTsKIAogICAgICAgICAjIEluaGVyaXRhbmNlIGRl
dGVjdGlvbgogICAgICAgICBteSBAaW50ZXJmYWNlUGFyZW50cyA9IHNwbGl0KC8sLywgJGludGVy
ZmFjZUJhc2UpOwpAQCAtMjc0LDcgKzM0OCw3IEBAIHN1YiBQYXJzZUludGVyZmFjZQogICAgICAg
ICAgICAgICAgIEB7JG5ld0RhdGFOb2RlLT5nZXR0ZXJFeGNlcHRpb25zfSA9IHNwbGl0KC8sLywg
JGdldHRlckV4Y2VwdGlvbik7CiAgICAgICAgICAgICAgICAgQHskbmV3RGF0YU5vZGUtPnNldHRl
ckV4Y2VwdGlvbnN9ID0gc3BsaXQoLywvLCAkc2V0dGVyRXhjZXB0aW9uKTsKICAgICAgICAgICAg
IH0gZWxzaWYgKCgkbGluZSAhfiBzL15ccyokLy9nKSBhbmQgKCRsaW5lICF+IC9eXHMqY29uc3Qv
KSkgewotICAgICAgICAgICAgICAgICRsaW5lID1+IC8kSURMU3RydWN0dXJlOjppbnRlcmZhY2VN
ZXRob2RTZWxlY3Rvci8gb3IgZGllICJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVcbiki
OworICAgICAgICAgICAgICAgICRsaW5lID1+IC8kSURMU3RydWN0dXJlOjppbnRlcmZhY2VNZXRo
b2RTZWxlY3Rvci8gb3IgZGllICJtIFBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxuKSI7
CiAKICAgICAgICAgICAgICAgICBteSAkbWV0aG9kRXh0ZW5kZWRBdHRyaWJ1dGVzID0gKGRlZmlu
ZWQoJDEpID8gJDEgOiAiICIpOyBjaG9wKCRtZXRob2RFeHRlbmRlZEF0dHJpYnV0ZXMpOwogICAg
ICAgICAgICAgICAgIG15ICRtZXRob2RUeXBlID0gKGRlZmluZWQoJDIpID8gJDIgOiBkaWUoIlBh
cnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxuKSIpKTsKQEAgLTI5OSwzMiArMzczLDcgQEAg
c3ViIFBhcnNlSW50ZXJmYWNlCiAgICAgICAgICAgICAgICAgJG1ldGhvZEV4Y2VwdGlvbiA9fiBz
L1xzKy8vZzsKICAgICAgICAgICAgICAgICBAeyRuZXdEYXRhTm9kZS0+cmFpc2VzRXhjZXB0aW9u
c30gPSBzcGxpdCgvLC8sICRtZXRob2RFeGNlcHRpb24pOwogCi0gICAgICAgICAgICAgICAgIyBT
cGxpdCBhcmd1bWVudHMgYXQgY29tbWFzIGJ1dCBvbmx5IGlmIHRoZSBjb21tYQotICAgICAgICAg
ICAgICAgICMgaXMgbm90IHdpdGhpbiBhdHRyaWJ1dGUgYnJhY2tldHMsIGV4cHJlc3NlZCBoZXJl
Ci0gICAgICAgICAgICAgICAgIyBhcyBiZWluZyBmb2xsb3dlZCBieSBhICddJyB3aXRob3V0IGEg
cHJlY2VkaW5nICdbJy4KLSAgICAgICAgICAgICAgICAjIE5vdGUgdGhhdCB0aGlzIGFzc3VtZXMg
dGhhdCBhdHRyaWJ1dGVzIGRvbid0IG5lc3QuCi0gICAgICAgICAgICAgICAgbXkgQHBhcmFtcyA9
IHNwbGl0KC8sKD8hW15bXSpcXSkvLCAkbWV0aG9kU2lnbmF0dXJlKTsKLSAgICAgICAgICAgICAg
ICBmb3JlYWNoKEBwYXJhbXMpIHsKLSAgICAgICAgICAgICAgICAgICAgbXkgJGxpbmUgPSAkXzsK
LQotICAgICAgICAgICAgICAgICAgICAkbGluZSA9fiAvJElETFN0cnVjdHVyZTo6aW50ZXJmYWNl
UGFyYW1ldGVyU2VsZWN0b3IvOwotICAgICAgICAgICAgICAgICAgICBteSAkcGFyYW1EaXJlY3Rp
b24gPSAkMTsKLSAgICAgICAgICAgICAgICAgICAgbXkgJHBhcmFtRXh0ZW5kZWRBdHRyaWJ1dGVz
ID0gKGRlZmluZWQoJDIpID8gJDIgOiAiICIpOyBjaG9wKCRwYXJhbUV4dGVuZGVkQXR0cmlidXRl
cyk7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRwYXJhbVR5cGUgPSAoZGVmaW5lZCgkMykgPyAk
MyA6IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOwotICAgICAgICAg
ICAgICAgICAgICBteSAkcGFyYW1OYW1lID0gKGRlZmluZWQoJDQpID8gJDQgOiBkaWUoIlBhcnNp
bmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxuKSIpKTsKLQotICAgICAgICAgICAgICAgICAgICBt
eSAkcGFyYW1EYXRhTm9kZSA9IG5ldyBkb21TaWduYXR1cmUoKTsKLSAgICAgICAgICAgICAgICAg
ICAgJHBhcmFtRGF0YU5vZGUtPmRpcmVjdGlvbigkcGFyYW1EaXJlY3Rpb24pOwotICAgICAgICAg
ICAgICAgICAgICAkcGFyYW1EYXRhTm9kZS0+bmFtZSgkcGFyYW1OYW1lKTsKLSAgICAgICAgICAg
ICAgICAgICAgJHBhcmFtRGF0YU5vZGUtPnR5cGUoJHBhcmFtVHlwZSk7Ci0gICAgICAgICAgICAg
ICAgICAgICRwYXJhbURhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMocGFyc2VFeHRlbmRlZEF0
dHJpYnV0ZXMoJHBhcmFtRXh0ZW5kZWRBdHRyaWJ1dGVzKSk7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgbXkgJGFycmF5UmVmID0gJG5ld0RhdGFOb2RlLT5wYXJhbWV0ZXJzOwotICAgICAgICAgICAg
ICAgICAgICBwdXNoKEAkYXJyYXlSZWYsICRwYXJhbURhdGFOb2RlKTsKLQotICAgICAgICAgICAg
ICAgICAgICBwcmludCAiICB8ICAgfD4gIFBhcmFtOyBUWVBFIFwiJHBhcmFtVHlwZVwiIE5BTUUg
XCIkcGFyYW1OYW1lXCIiIC4gCi0gICAgICAgICAgICAgICAgICAgICAgICBkdW1wRXh0ZW5kZWRB
dHRyaWJ1dGVzKCJcbiAgfCAgICAgICAgICAgICAgIiwgJHBhcmFtRGF0YU5vZGUtPmV4dGVuZGVk
QXR0cmlidXRlcykgLiAiXG4iIHVubGVzcyAkYmVRdWlldDsgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIHBhcnNlUGFyYW1ldGVycygkbmV3RGF0YU5vZGUsICRt
ZXRob2RTaWduYXR1cmUpOwogCiAgICAgICAgICAgICAgICAgbXkgJGFycmF5UmVmID0gJGRhdGFO
b2RlLT5mdW5jdGlvbnM7CiAgICAgICAgICAgICAgICAgcHVzaChAJGFycmF5UmVmLCAkbmV3RGF0
YU5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExT
dHJ1Y3R1cmUucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFN0cnVjdHVy
ZS5wbQppbmRleCBmOWRkNGFiLi43MjdlMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0lETFN0cnVjdHVyZS5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0lETFN0cnVjdHVyZS5wbQpAQCAtNDAsNiArNDAsNyBAQCBzdHJ1Y3QoIGRv
bUNsYXNzID0+IHsKICAgICBmdW5jdGlvbnMgPT4gJ0AnLCAgICAjIExpc3Qgb2YgJ2RvbUZ1bmN0
aW9uJwogICAgIGF0dHJpYnV0ZXMgPT4gJ0AnLCAgICAjIExpc3Qgb2YgJ2RvbUF0dHJpYnV0ZScg
ICAgCiAgICAgZXh0ZW5kZWRBdHRyaWJ1dGVzID0+ICckJywgIyBFeHRlbmRlZCBhdHRyaWJ1dGVz
CisgICAgY29uc3RydWN0b3IgPT4gJyQnLCAjIENvbnN0cnVjdG9yCiB9KTsKIAogIyBVc2VkIHRv
IHJlcHJlc2VudCBkb21DbGFzcyBjb250ZW50cyAobmFtZSBvZiBtZXRob2QsIHNpZ25hdHVyZSkK
QEAgLTg4LDcgKzg5LDcgQEAgb3VyICRpZGxEYXRhVHlwZSA9ICdbYS16QS1aMC05XCBdJzsgICAj
IEdlbmVyaWMgZGF0YSB0eXBlIGlkZW50aWZpZXIKIG15ICRzdXBwb3J0ZWRUeXBlcyA9ICIoKD86
dW5zaWduZWQgKT8oPzppbnR8c2hvcnR8KD86bG9uZyApP2xvbmcpfCg/OiRpZGxJZE5zKikpIjsK
IAogIyBTcGVjaWFsIElETCBub3RhdGlvbnMKLW91ciAkZXh0ZW5kZWRBdHRyaWJ1dGVTeW50YXgg
PSAnXFtbXl1dKlxdJzsgIyBVc2VkIGZvciBleHRlbmRlZCBhdHRyaWJ1dGVzCitvdXIgJGV4dGVu
ZGVkQXR0cmlidXRlU3ludGF4ID0gcXIvXFtbXlxbXF1dKig/Oig/P3skSURMU3RydWN0dXJlOjpl
eHRlbmRlZEF0dHJpYnV0ZVN5bnRheH0pW15cW1xdXSopKlxdL3g7ICMgVXNlZCBmb3IgZXh0ZW5k
ZWQgYXR0cmlidXRlcwogCiAjIFJlZ3VsYXIgZXhwcmVzc2lvbiBiYXNlZCBJREwgJ3N5bnRhY3Rp
Y2FsIHRva2VuaXplcicgdXNlZCBpbiB0aGUgSURMUGFyc2VyCiBvdXIgJG1vZHVsZVNlbGVjdG9y
ID0gJ21vZHVsZVxzKignIC4gJGlkbElkIC4gJyopXHMqeyc7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhCaW5kaW5nTWFjcm9zLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhCaW5kaW5nTWFjcm9zLmgKaW5kZXggYWQwMmMzZS4u
NTVlNTdiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
QmluZGluZ01hY3Jvcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEJpbmRpbmdNYWNyb3MuaApAQCAtNDIsNiArNDIsMTEgQEAKICAgICBpZiAoIXZhci5wcmVwYXJl
KCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKKyNkZWZpbmUgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VY
Q0VQVElPTl9CTE9DS19USFJPVyh0eXBlLCB2YXIsIHZhbHVlLCBlcnIpICBcCisgICAgdHlwZSB2
YXIodmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIGlmICghdmFyLnByZXBhcmUoKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyKTsKKwogI2RlZmluZSBTVFJJ
TkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLX1ZPSUQodHlwZSwgdmFyLCB2YWx1ZSkg
XAogICAgIHR5cGUgdmFyKHZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAogICAgIGlmICghdmFyLnByZXBhcmUoKSkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRTb3VyY2VDb25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudFNvdXJjZUNvbnN0cnVjdG9yLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDFlOWM0NC4uMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudFNvdXJjZUNvbnN0cnVjdG9y
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0K
LSNpZiBFTkFCTEUoRVZFTlRTT1VSQ0UpCi0jaW5jbHVkZSAiVjhFdmVudFNvdXJjZS5oIgotCi0j
aW5jbHVkZSAiRXZlbnRTb3VyY2UuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIlY4
QmluZGluZy5oIgotI2luY2x1ZGUgIlY4UHJveHkuaCIKLSNpbmNsdWRlICJWOFV0aWxpdGllcy5o
IgotI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKLSNpbmNsdWRlICJXb3JrZXJDb250ZXh0RXhl
Y3V0aW9uUHJveHkuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhFdmVudFNvdXJjZTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLkV2ZW50U291cmNlLkNvbnN0cnVjdG9y
Iik7Ci0KLSAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCi0gICAgICAgIHJldHVybiB0
aHJvd0Vycm9yKCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBm
dW5jdGlvbi4iLCBWOFByb3h5OjpUeXBlRXJyb3IpOwotCi0gICAgLy8gRXhwZWN0IG9uZSBwYXJh
bWV0ZXIuCi0gICAgLy8gQWxsb2NhdGUgYW4gRXZlbnRTb3VyY2Ugb2JqZWN0IGFzIGl0cyBpbnRl
cm5hbCBmaWVsZC4KLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gZ2V0U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJu
IHRocm93RXJyb3IoIkV2ZW50U291cmNlIGNvbnN0cnVjdG9yJ3MgYXNzb2NpYXRlZCBjb250ZXh0
IGlzIG5vdCBhdmFpbGFibGUiLCBWOFByb3h5OjpSZWZlcmVuY2VFcnJvcik7Ci0gICAgaWYgKGFy
Z3MuTGVuZ3RoKCkgIT0gMSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIk5vdCBlbm91Z2gg
YXJndW1lbnRzIiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgU3RyaW5nIHVybCA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKLQotICAg
IFJlZlB0cjxFdmVudFNvdXJjZT4gZXZlbnRTb3VyY2UgPSBFdmVudFNvdXJjZTo6Y3JlYXRlKHVy
bCwgY29udGV4dCwgZWMpOwotCi0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJv
cihlYyk7Ci0KLSAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoYXJncy5Ib2xkZXIoKSwg
JmluZm8sIGV2ZW50U291cmNlLmdldCgpKTsKLQotICAgIC8vIEFkZCBvYmplY3QgdG8gdGhlIHdy
YXBwZXIgbWFwLgotICAgIGV2ZW50U291cmNlLT5yZWYoKTsKLSAgICBWOERPTVdyYXBwZXI6OnNl
dEpTV3JhcHBlckZvckFjdGl2ZURPTU9iamVjdChldmVudFNvdXJjZS5nZXQoKSwgdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhhcmdzLkhvbGRlcigpKSk7Ci0gICAgcmV0dXJuIGFyZ3Mu
SG9sZGVyKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShFVkVOVFNPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEZpbGVSZWFkZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RmlsZVJlYWRlckN1c3RvbS5jcHAKaW5kZXggZmIwZDUzYy4uYjViNTc0OCAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RmlsZVJlYWRlckN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RmlsZVJl
YWRlckN1c3RvbS5jcHAKQEAgLTQwLDI3ICs0MCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RmlsZVJlYWRlcjo6Y29uc3RydWN0b3JDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLkZpbGVS
ZWFkZXIuQ29uc3RydWN0b3IiKTsKLQotICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90
IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIsIFY4UHJveHk6OlR5cGVFcnJvcik7Ci0KLSAgICAv
LyBFeHBlY3Qgbm8gcGFyYW1ldGVycy4KLSAgICAvLyBBbGxvY2F0ZSBhIEZpbGVSZWFkZXIgb2Jq
ZWN0IGFzIGl0cyBpbnRlcm5hbCBmaWVsZC4KLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmICghY29udGV4dCkK
LSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkZpbGVSZWFkZXIgY29uc3RydWN0b3IncyBhc3Nv
Y2lhdGVkIGNvbnRleHQgaXMgbm90IGF2YWlsYWJsZSIsIFY4UHJveHk6OlJlZmVyZW5jZUVycm9y
KTsKLSAgICBSZWZQdHI8RmlsZVJlYWRlcj4gZmlsZVJlYWRlciA9IEZpbGVSZWFkZXI6OmNyZWF0
ZShjb250ZXh0KTsKLSAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoYXJncy5Ib2xkZXIo
KSwgJmluZm8sIGZpbGVSZWFkZXIuZ2V0KCkpOwotCi0gICAgLy8gQWRkIG9iamVjdCB0byB0aGUg
d3JhcHBlciBtYXAuCi0gICAgZmlsZVJlYWRlci0+cmVmKCk7Ci0gICAgVjhET01XcmFwcGVyOjpz
ZXRKU1dyYXBwZXJGb3JBY3RpdmVET01PYmplY3QoZmlsZVJlYWRlci5nZXQoKSwgdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhhcmdzLkhvbGRlcigpKSk7Ci0gICAgcmV0dXJuIGFyZ3Mu
SG9sZGVyKCk7Ci19Ci0KIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEZpbGVSZWFkZXI6OnJlc3Vs
dEFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQogewogICAgIElOQ19TVEFUUygiRE9NLkZpbGVSZWFkZXIucmVzdWx0
Ll9nZXQiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFNoYXJlZFdvcmtlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhTaGFyZWRXb3JrZXJDdXN0b20uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAyZDcyYzM3Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFNoYXJlZFdvcmtlckN1c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQotCi0jaW5j
bHVkZSAiVjhTaGFyZWRXb3JrZXIuaCIKLQotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNp
bmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4UHJv
eHkuaCIKLSNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgotI2luY2x1ZGUgIldvcmtlckNvbnRleHQu
aCIKLSNpbmNsdWRlICJXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhTaGFyZWRXb3JrZXI6OmNvbnN0
cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSAgICBJTkNfU1RB
VFMoTCJET00uU2hhcmVkV29ya2VyLkNvbnN0cnVjdG9yIik7Ci0KLSAgICBpZiAoIWFyZ3MuSXND
b25zdHJ1Y3RDYWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJET00gb2JqZWN0IGNv
bnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iKTsKLQotICAgIGlmICgh
YXJncy5MZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIk5vdCBlbm91Z2ggYXJn
dW1lbnRzIiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOwotCi0gICAgdjg6OlRyeUNhdGNoIHRyeUNh
dGNoOwotICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gc2NyaXB0VXJsID0gYXJnc1swXS0+VG9T
dHJpbmcoKTsKLSAgICBTdHJpbmcgbmFtZTsKLSAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDEpCi0g
ICAgICAgIG5hbWUgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1sxXS0+VG9TdHJpbmcoKSk7Ci0KLSAg
ICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHRy
eUNhdGNoLkV4Y2VwdGlvbigpKTsKLQotICAgIGlmIChzY3JpcHRVcmwuSXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotCi0gICAgLy8gR2V0IHRoZSBzY3JpcHQgZXhl
Y3V0aW9uIGNvbnRleHQuCi0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGdl
dFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0KLSAgICAvLyBDcmVhdGUgdGhlIFNoYXJlZFdvcmtlciBv
YmplY3QuCi0gICAgLy8gTm90ZTogaXQncyBPSyB0byBsZXQgdGhpcyBSZWZQdHIgZ28gb3V0IG9m
IHNjb3BlIGJlY2F1c2Ugd2UgYWxzbyBjYWxsIFNldERPTVdyYXBwZXIoKSwgd2hpY2ggZWZmZWN0
aXZlbHkgaG9sZHMgYSByZWZlcmVuY2UgdG8gb2JqLgotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIFJlZlB0cjxTaGFyZWRXb3JrZXI+IG9iaiA9IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKHRv
V2ViQ29yZVN0cmluZyhzY3JpcHRVcmwpLCBuYW1lLCBjb250ZXh0LCBlYyk7Ci0gICAgaWYgKGVj
KQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlYyk7Ci0KLSAgICAvLyBTZXR1cCB0aGUgc3Rh
bmRhcmQgd3JhcHBlciBvYmplY3QgaW50ZXJuYWwgZmllbGRzLgotICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcHBlck9iamVjdCA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFwcGVy
OjpzZXRET01XcmFwcGVyKHdyYXBwZXJPYmplY3QsICZpbmZvLCBvYmouZ2V0KCkpOwotCi0gICAg
b2JqLT5yZWYoKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckFjdGl2ZURPTU9i
amVjdChvYmouZ2V0KCksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcod3JhcHBlck9i
amVjdCkpOwotCi0gICAgcmV0dXJuIHdyYXBwZXJPYmplY3Q7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShTSEFSRURfV09SS0VSUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdENTU01hdHJpeENvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdENT
U01hdHJpeENvbnN0cnVjdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjk3
ZDBlOC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhX
ZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJWOFdlYktpdENTU01hdHJpeC5oIgot
Ci0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCi0j
aW5jbHVkZSAiTm9kZS5oIgotCi0jaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVkZSAiVjhE
b2N1bWVudC5oIgotI2luY2x1ZGUgIlY4Tm9kZS5oIgotI2luY2x1ZGUgIlY4UHJveHkuaCIKLQot
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhXZWJLaXRDU1NNYXRyaXg6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5XZWJLaXRDU1NN
YXRyaXguQ29uc3RydWN0b3IiKTsKLQotICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90
IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIpOwotCi0gICAgLy8gRklYTUU6IFRoZSBsb2dpYyBo
ZXJlIGlzIGFsbW9zdCBleGFjdCBkdXBsaWNhdGUgb2YgVjg6OmNvbnN0cnVjdERPTU9iamVjdC4K
LSAgICAvLyBDb25zaWRlciByZWZhY3RvcmluZyB0byByZWR1Y2UgZHVwbGljYXRpb24uCi0gICAg
U3RyaW5nIGNzc1ZhbHVlOwotICAgIGlmIChhcmdzLkxlbmd0aCgpID49IDEpCi0gICAgICAgIGNz
c1ZhbHVlID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwotCi0gICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgUmVmUHRyPFdlYktpdENTU01hdHJpeD4gbWF0cml4ID0gV2ViS2l0Q1NTTWF0
cml4OjpjcmVhdGUoY3NzVmFsdWUsIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHRocm93RXJy
b3IoZWMpOwotCi0gICAgLy8gVHJhbnNmb3JtIHRoZSBob2xkZXIgaW50byBhIHdyYXBwZXIgb2Jq
ZWN0IGZvciB0aGUgbWF0cml4LgotICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihhcmdz
LkhvbGRlcigpLCAmaW5mbywgbWF0cml4LmdldCgpKTsKLSAgICByZXR1cm4gdG9WOChtYXRyaXgu
cmVsZWFzZSgpLCBhcmdzLkhvbGRlcigpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3Rv
bS5jcHAKaW5kZXggZmRjNjgxNS4uM2EwNDA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20uY3BwCkBAIC00Nyw0NiArNDcsNiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdvcmtl
cjo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAg
IElOQ19TVEFUUyhMIkRPTS5Xb3JrZXIuQ29uc3RydWN0b3IiKTsKLQotICAgIGlmICghYXJncy5J
c0NvbnN0cnVjdENhbGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkRPTSBvYmplY3Qg
Y29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIpOwotCi0gICAgaWYg
KCFhcmdzLkxlbmd0aCgpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiTm90IGVub3VnaCBh
cmd1bWVudHMiLCBWOFByb3h5OjpTeW50YXhFcnJvcik7Ci0KLSAgICB2ODo6VHJ5Q2F0Y2ggdHJ5
Q2F0Y2g7Ci0gICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBzY3JpcHRVcmwgPSBhcmdzWzBdLT5U
b1N0cmluZygpOwotICAgIGlmICh0cnlDYXRjaC5IYXNDYXVnaHQoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93RXJyb3IodHJ5Q2F0Y2guRXhjZXB0aW9uKCkpOwotCi0gICAgaWYgKHNjcmlwdFVybC5J
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0KLSAgICAvLyBHZXQg
dGhlIHNjcmlwdCBleGVjdXRpb24gY29udGV4dC4KLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmICghY29udGV4
dCkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLQotICAgIC8vIENyZWF0ZSB0aGUg
d29ya2VyIG9iamVjdC4KLSAgICAvLyBOb3RlOiBpdCdzIE9LIHRvIGxldCB0aGlzIFJlZlB0ciBn
byBvdXQgb2Ygc2NvcGUgYmVjYXVzZSB3ZSBhbHNvIGNhbGwgc2V0RE9NV3JhcHBlcigpLCB3aGlj
aCBlZmZlY3RpdmVseSBob2xkcyBhIHJlZmVyZW5jZSB0byBvYmouCi0gICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgUmVmUHRyPFdvcmtlcj4gb2JqID0gV29ya2VyOjpjcmVhdGUodG9XZWJD
b3JlU3RyaW5nKHNjcmlwdFVybCksIGNvbnRleHQsIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKGVjKTsKLQotICAgIC8vIFNldHVwIHRoZSBzdGFuZGFyZCB3cmFw
cGVyIG9iamVjdCBpbnRlcm5hbCBmaWVsZHMuCi0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3
cmFwcGVyT2JqZWN0ID0gYXJncy5Ib2xkZXIoKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldERPTVdy
YXBwZXIod3JhcHBlck9iamVjdCwgJmluZm8sIG9iai5nZXQoKSk7Ci0KLSAgICBvYmotPnJlZigp
OwotICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yQWN0aXZlRE9NT2JqZWN0KG9iai5n
ZXQoKSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyT2JqZWN0KSk7Ci0K
LSAgICByZXR1cm4gd3JhcHBlck9iamVjdDsKLX0KLQogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
V29ya2VyOjpwb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
CiAgICAgSU5DX1NUQVRTKCJET00uV29ya2VyLnBvc3RNZXNzYWdlIik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYU0xUUHJvY2Vzc29yQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhTTFRQcm9jZXNzb3JDdXN0
b20uY3BwCmluZGV4IGI2MjRmY2YuLjFhZDUyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhTTFRQcm9jZXNzb3JDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhTTFRQcm9jZXNzb3JDdXN0b20uY3BwCkBA
IC00NiwxMyArNDYsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOFhTTFRQcm9jZXNzb3I6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5YU0xUUHJvY2Vzc29yLkNvbnN0
cnVjdG9yIik7Ci0gICAgcmV0dXJuIFY4UHJveHk6OmNvbnN0cnVjdERPTU9iamVjdDxYU0xUUHJv
Y2Vzc29yPihhcmdzLCAmaW5mbyk7Ci19Ci0KLQogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WFNM
VFByb2Nlc3Nvcjo6aW1wb3J0U3R5bGVzaGVldENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uWFNMVFByb2Nlc3Nvci5pbXBvcnRTdHlsZXNo
ZWV0Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaWRsCmluZGV4IDc2ZmY2MDEu
LjJhODI3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXgu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaWRsCkBAIC0zMCw3
ICszMCw5IEBAIG1vZHVsZSBjc3MgewogICAgICAgICBDYW5CZUNvbnN0cnVjdGVkLAogICAgICAg
ICBDdXN0b21Db25zdHJ1Y3RGdW5jdGlvbiwKICAgICAgICAgQ29uc3RydWN0b3JQYXJhbWV0ZXJz
PTEsCi0gICAgICAgIFY4Q3VzdG9tQ29uc3RydWN0b3IKKyAgICAgICAgQ29uc3RydWN0b3IoaW4g
W09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlLCBDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9O
dWxsU3RyaW5nXSBET01TdHJpbmcgY3NzVmFsdWUpLAorICAgICAgICBDb25zdHJ1Y3RvclJhaXNl
c0V4Y2VwdGlvbiwKKyAgICAgICAgVjhDb25zdHJ1Y3RvclNldHNET01XcmFwcGVyCiAgICAgXSBX
ZWJLaXRDU1NNYXRyaXggewogCiAgICAgICAgIC8vIFRoZXNlIGF0dHJpYnV0ZXMgYXJlIHNpbXBs
ZSBhbGlhc2VzIGZvciBjZXJ0YWluIGVsZW1lbnRzIG9mIHRoZSA0eDQgbWF0cml4CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaWRsIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyLmlkbAppbmRleCA2MWQ1YWZiLi42NTU3ZTU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5pZGwKQEAgLTM3LDcgKzM3LDggQEAgbW9kdWxlIGh0
bWwgewogICAgICAgICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAgICAgICBF
dmVudFRhcmdldCwKICAgICAgICAgTm9TdGF0aWNUYWJsZXMsCi0gICAgICAgIFY4Q3VzdG9tQ29u
c3RydWN0b3IKKyAgICAgICAgQ29uc3RydWN0b3IsCisgICAgICAgIENvbnN0cnVjdG9yV2l0aD1T
Y3JpcHRFeGVjdXRpb25Db250ZXh0CiAgICAgXSBGaWxlUmVhZGVyIHsKICAgICAgICAgLy8gcmVh
ZHkgc3RhdGVzCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IEVNUFRZID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaWRsIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudFNvdXJjZS5pZGwKaW5kZXggNDgzMTVhOC4uMGE2ZWFmMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudFNvdXJjZS5pZGwKQEAgLTM3LDcgKzM3LDkgQEAgbW9kdWxlIHdpbmRvdyB7
CiAgICAgICAgIENhbkJlQ29uc3RydWN0ZWQsCiAgICAgICAgIEN1c3RvbUNvbnN0cnVjdEZ1bmN0
aW9uLAogICAgICAgICBDb25zdHJ1Y3RvclBhcmFtZXRlcnM9MSwKLSAgICAgICAgVjhDdXN0b21D
b25zdHJ1Y3RvciwKKyAgICAgICAgQ29uc3RydWN0b3IoaW4gW0NvbnZlcnRVbmRlZmluZWRPck51
bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBzY3JpcHRVcmwpLAorICAgICAgICBDb25zdHJ1Y3Rv
cldpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKKyAgICAgICAgQ29uc3RydWN0b3JSYWlzZXNF
eGNlcHRpb24sCiAgICAgICAgIEV2ZW50VGFyZ2V0LAogICAgICAgICBOb1N0YXRpY1RhYmxlcwog
ICAgIF0gRXZlbnRTb3VyY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9T
aGFyZWRXb3JrZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuaWRs
CmluZGV4IDUyYjAyYzcuLjU1ZjZhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvU2hhcmVkV29ya2VyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdv
cmtlci5pZGwKQEAgLTM3LDcgKzM3LDkgQEAgbW9kdWxlIHRocmVhZHMgewogICAgICAgICBDYW5C
ZUNvbnN0cnVjdGVkLAogICAgICAgICBDdXN0b21Db25zdHJ1Y3RGdW5jdGlvbiwKICAgICAgICAg
Q29uc3RydWN0b3JQYXJhbWV0ZXJzPTIsCi0gICAgICAgIFY4Q3VzdG9tQ29uc3RydWN0b3IsCisg
ICAgICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyBzY3JpcHRVcmwsIGluIFtPcHRpb25hbD1D
YWxsV2l0aERlZmF1bHRWYWx1ZSwgQ29udmVydFVuZGVmaW5lZE9yTnVsbFRvTnVsbFN0cmluZ10g
RE9NU3RyaW5nIG5hbWUpLAorICAgICAgICBDb25zdHJ1Y3RvcldpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwKKyAgICAgICAgQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24sCiAgICAgICAgIEN1
c3RvbU1hcmtGdW5jdGlvbiwKICAgICAgICAgR2VuZXJhdGVOYXRpdmVDb252ZXJ0ZXIsCiAgICAg
ICAgIEdlbmVyYXRlVG9KUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaWRsCmluZGV4IDc2Mzc1Njku
LmI2N2RmM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5pZGwKQEAgLTMyLDEzICszMiwxNyBA
QCBtb2R1bGUgdGhyZWFkcyB7CiAgICAgICAgIENhbkJlQ29uc3RydWN0ZWQsCiAgICAgICAgIEN1
c3RvbUNvbnN0cnVjdEZ1bmN0aW9uLAogICAgICAgICBDb25zdHJ1Y3RvclBhcmFtZXRlcnM9MSwK
LSAgICAgICAgVjhDdXN0b21Db25zdHJ1Y3RvciwKKyAgICAgICAgQ29uc3RydWN0b3IoaW4gW0Nv
bnZlcnRVbmRlZmluZWRPck51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBzY3JpcHRVcmwpLAor
ICAgICAgICBDb25zdHJ1Y3RvcldpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKKyAgICAgICAg
Q29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24sCiAgICAgICAgIEdlbmVyYXRlTmF0aXZlQ29udmVy
dGVyLAogICAgICAgICBHZW5lcmF0ZVRvSlMKICAgICBdIFdvcmtlciA6IEFic3RyYWN0V29ya2Vy
IHsKIAogICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm1lc3NhZ2U7CiAKKyAgICAg
ICAgLy92b2lkIHRlc3RNZXRob2QoaW4gU3RyaW5nIHNzc3NzcykgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CisKICNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pBVkFT
Q1JJUFQKICAgICAgICAgW0N1c3RvbV0gdm9pZCBwb3N0TWVzc2FnZShpbiBTZXJpYWxpc2VkU2Ny
aXB0VmFsdWUgbWVzc2FnZSwgaW4gW09wdGlvbmFsXSBBcnJheSBtZXNzYWdlUG9ydHMpCiAgICAg
ICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YU0xUUHJvY2Vzc29yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29y
LmlkbAppbmRleCBkYWM0YjIxLi5lYTllNjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWFNMVFByb2Nlc3Nvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNz
b3IuaWRsCkBAIC0zNiw3ICszNiw4IEBAIG1vZHVsZSB4bWwgewogICAgICAgICBDb25kaXRpb25h
bD1YU0xULAogICAgICAgICBDYW5CZUNvbnN0cnVjdGVkLAogICAgICAgICBDdXN0b21Db25zdHJ1
Y3RGdW5jdGlvbiwKLSAgICAgICAgVjhDdXN0b21Db25zdHJ1Y3RvcgorICAgICAgICBDb25zdHJ1
Y3RvciwKKyAgICAgICAgVjhDb25zdHJ1Y3RvclNldHNET01XcmFwcGVyCiAgICAgXSBYU0xUUHJv
Y2Vzc29yIHsKICAgICAgICAgCiAgICAgICAgIFtDdXN0b21dIHZvaWQgaW1wb3J0U3R5bGVzaGVl
dChpbiBOb2RlIHN0eWxlc2hlZXQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104309</attachid>
            <date>2011-08-18 00:36:25 -0700</date>
            <delta_ts>2011-08-18 00:38:27 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>diff.txt</filename>
            <type>text/plain</type>
            <size>872</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyOTc4MjAwLi4wZDI5NmUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDQgKzEsNCBAQAotMjAxMS0wOC0x
NSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBnb29nbGUuY29tPgorMjAxMS0wOC0xOCAgS2VudGFy
byBIYXJhICA8aGFyYWtlbkBnb29nbGUuY29tPgogCiAgICAgICAgIFtXSVAgcGF0Y2hdIEludHJv
ZHVjZSBXZWIgSURMIENvbnN0cnVjdG9yIGV4dGVuZGVkIGF0dHJpYnV0ZSBpbiBWOCBhbmQgcmVw
bGFjZSA2IGN1c3RvbSBjb25zdHJ1Y3RvcnMgd2l0aCBpdC4KICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1ODM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWRkM2YwOC4u
YmY4ZDA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw0ICsxLDQgQEAKLTIwMTEtMDgtMTUgIEtlbnRhcm8g
SGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KKzIwMTEtMDgtMTggIEtlbnRhcm8gSGFyYSAgPGhh
cmFrZW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBbV0lQIHBhdGNoXSBJbnRyb2R1Y2UgV2ViIElE
TCBDb25zdHJ1Y3RvciBleHRlbmRlZCBhdHRyaWJ1dGUgYW5kIHJlcGxhY2UgNiBjdXN0b20gY29u
c3RydWN0b3JzIHdpdGggaXQuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02NTgzOQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104310</attachid>
            <date>2011-08-18 00:38:27 -0700</date>
            <delta_ts>2011-08-18 00:38:27 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>diff.txt</filename>
            <type>text/plain</type>
            <size>63920</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2YmQzYWExLi4wZDI5NmUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDgt
MTggIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBbV0lQIHBh
dGNoXSBJbnRyb2R1Y2UgV2ViIElETCBDb25zdHJ1Y3RvciBleHRlbmRlZCBhdHRyaWJ1dGUgaW4g
VjggYW5kIHJlcGxhY2UgNiBjdXN0b20gY29uc3RydWN0b3JzIHdpdGggaXQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTgzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjY29yZGluZyB0byB0aGUgc3Bl
YywgdGhlIGVycm9yIHRocm93biB3aGVuIGFyZ3VtZW50cyBpcyBub3QgZW5vdWdoCisgICAgICAg
IHNob3VsZCBiZSBUeXBlRXJyb3IuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50c291cmNlL2V2ZW50
c291cmNlLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dDoKKwogMjAxMS0wOC0xNiAgWm9sdGFuIEhv
cnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIE9zc3lpemUgZWRpdGlu
Zy9kZWxldGluZy9yZWdpb25hbC1pbmRpY2F0b3JzLmh0bWwgc2luY2UgaXQgZmFpbHMgYWZ0ZXIg
cjkzMDY4CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50c291cmNlL2V2ZW50c291
cmNlLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzb3Vy
Y2UvZXZlbnRzb3VyY2UtY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CmluZGV4IGM4ZTIyOGMuLjJi
NzQyYzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzb3VyY2UvZXZlbnRzb3Vy
Y2UtY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
b3VyY2UvZXZlbnRzb3VyY2UtY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEsNiBA
QAogVGVzdCBFdmVudFNvdXJjZSBjb25zdHJ1Y3RvciBmdW5jdGlvbmFsaXR5LiBTaG91bGQgcHJp
bnQgYSBzZXJpZXMgb2YgUEFTUyBtZXNzYWdlcyBmb2xsb3dlZCBieSBET05FLgogCi1QQVNTOiBt
aXNzaW5nIGFyZ3VtZW50IHRvIEV2ZW50U291cmNlIGNvbnN0cnVjdG9yIHJlc3VsdGVkIGluIGFu
IGV4Y2VwdGlvbiAoU3ludGF4RXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzKQorUEFTUzogbWlz
c2luZyBhcmd1bWVudCB0byBFdmVudFNvdXJjZSBjb25zdHJ1Y3RvciByZXN1bHRlZCBpbiBhbiBl
eGNlcHRpb24gKFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMpCiBQQVNTOiBwYXNzaW5n
IGFuIGVtcHR5IHN0cmluZyB0byB0aGUgRXZlbnRTb3VyY2UgY29uc3RydWN0b3IgcmVzdWx0ZWQg
aW4gYW4gZXhjZXB0aW9uIChFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMikKIFBB
U1M6IHBhc3NpbmcgYW4gaW52YWxpZCBVUkwgdG8gdGhlIEV2ZW50U291cmNlIGNvbnN0cnVjdG9y
IHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlvbiAoRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRp
b24gMTIpCiBET05FCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzNlZDM5NS4uYmY4ZDA3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0MCBAQAorMjAxMS0wOC0xOCAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBnb29n
bGUuY29tPgorCisgICAgICAgIFtXSVAgcGF0Y2hdIEludHJvZHVjZSBXZWIgSURMIENvbnN0cnVj
dG9yIGV4dGVuZGVkIGF0dHJpYnV0ZSBhbmQgcmVwbGFjZSA2IGN1c3RvbSBjb25zdHJ1Y3RvcnMg
d2l0aCBpdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY1ODM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
LSBJbnRyb2R1Y2VkIFdlYiBJREwgQ29uc3RydWN0b3IoLi4uKSBleHRlbmRlZCBhdHRyaWJ1dGUu
CisgICAgICAgIC0gQWRkZWQgfENvbnN0cnVjdFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dHwg
ZXh0ZW5kZWQgYXR0cmlidXRlLgorICAgICAgICAtIEFkZGVkIHxDb25zdHJ1Y3RvclNldHNET01X
cmFwcGVyfCBleHRlbmRlZCBhdHRyaWJ1dGUuCisgICAgICAgIC0gQWRkZWQgfENvbnN0cnVjdG9y
UmFpc2VzRXhjZXB0aW9ufCBleHRlbmRlZCBhdHRyaWJ1dGUuCisgICAgICAgIC0gQWRkZWQgfE9w
dGlvbmFsPUNhbGxXaXRoTnVsbFZhbHVlfCBleHRlbmRlZCBhdHRyaWJ1dGUuCisgICAgICAgIC0g
UmVwbGFjZWQgdGhlIGN1c3RvbSBjb25zdHJ1Y3RvcnMgb2YgRXZlbnRTb3VyY2UsIEZpbGVSZWFk
ZXIsIFNoYXJlZFdvcmtlciwKKyAgICAgICAgV2ViS2l0Q1NTTWF0cml4LCBXb3JrZXIsIFhTTFRQ
cm9jZXNzb3Igd2l0aCB0aGUgQ29uc3RydWN0b3IoLi4uKSBleHRlbmRlZCBhdHRyaWJ1dGUuCisK
KyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvZXZlbnRzb3VyY2UvZXZlbnRzb3VyY2UtY29udGVu
dC10eXBlLWNoYXJzZXQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHNvdXJjZS9ldmVu
dHNvdXJjZS1jb25zdHJ1Y3Rvci5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2V2ZW50
c291cmNlL2V2ZW50c291cmNlLWJhZC1taW1lLXR5cGUuaHRtbAorICAgICAgICAgICAgICAgaHR0
cC90ZXN0cy9ldmVudHNvdXJjZS9ldmVudHNvdXJjZS1yZWNvbm5lY3QuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9ldmVudHNvdXJjZS9ldmVudHNvdXJjZS1hdHRyaWJ1dGUtbGlzdGVuZXJzLmh0
bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvZXZlbnRzb3VyY2UvZXZlbnRzb3VyY2Utc3Rh
dHVzLWNvZGUtc3RhdGVzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvZXZlbnRzb3Vy
Y2UvZXZlbnRzb3VyY2UtcGFyc2UtZXZlbnQtc3RyZWFtLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZmlsZXMvYmxvYi1zbGljZS10ZXN0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZmlsZXMv
ZmlsZS1yZWFkZXItYWJvcnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC93b3JrZXJzL3NoYXJl
ZC13b3JrZXItZ2MuaHRtbAorICAgICAgICAgICAgICAgZmFzdC93b3JrZXJzL3NoYXJlZC13b3Jr
ZXItc2ltcGxlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2Vy
LXNoYXJlZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1s
b2FkLWVycm9yLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2Vy
LWlmcmFtZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1j
b25zdHJ1Y3Rvci5odG1sCisgICAgICAgICAgICAgICBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtl
ci1ldmVudC1saXN0ZW5lci5odG1sCisgICAgICAgICAgICAgICBmYXN0L3dvcmtlcnMvc2hhcmVk
LXdvcmtlci1zY3JpcHQtZXJyb3IuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93b3Jr
ZXJzL3NoYXJlZC13b3JrZXItcmVkaXJlY3QuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0
cy93b3JrZXJzL3NoYXJlZC13b3JrZXItaW52YWxpZC11cmwuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC93b3JrZXJzL3dvcmtlci1jcmFzaC13aXRoLWludmFsaWQtbG9jYXRpb24uaHRtbAorICAg
ICAgICAgICAgICAgaHR0cC90ZXN0cy93b3JrZXJzL3NoYXJlZC13b3JrZXItaW1wb3J0U2NyaXB0
cy5odG1sCisgICAgICAgICAgICAgICBmYXN0L3dvcmtlcnMvcmVzb3VyY2VzL2NyZWF0ZS1zaGFy
ZWQtd29ya2VyLWZyYW1lLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5Ymkvd29ya2Vycy9zaGFyZWQtd29ya2VyLXNpbXBsZS5odG1sCisgICAgICAgICAg
ICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UtaW4tc2hh
cmVkLXdvcmtlci5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oaXhpZTc2L3dvcmtlcnMvY2xvc2UtaW4tc2hhcmVkLXdvcmtlci5odG1sCisgICAgICAgICAg
ICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3dvcmtlcnMvc2hhcmVkLXdv
cmtlci1zaW1wbGUuaHRtbAorICAgICAgICAgICAgICAgdHJhbnNmb3Jtcy8yZC9jc3NtYXRyaXgt
MmQtem9vbS5odG1sCisgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy9yZXRhcmdldHRlZC10cmFu
c2l0aW9uLmh0bWwKKyAgICAgICAgICAgICAgIHRyYW5zaXRpb25zL21hdGNoZWQtdHJhbnNmb3Jt
LWZ1bmN0aW9ucy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9XaW5kb3cvY3VzdG9tLWNv
bnN0cnVjdG9ycy5odG1sCisgICAgICAgICAgICAgICB0cmFuc2Zvcm1zLzNkL2dlbmVyYWwvY3Nz
bWF0cml4LTNkLXpvb20uaHRtbAorICAgICAgICAgICAgICAgYW5pbWF0aW9ucy9jb21iby10cmFu
c2Zvcm0tdHJhbnNsYXRlK3NjYWxlLmh0bWwKKyAgICAgICAgICAgICAgIHRyYW5zZm9ybXMvc3Zn
LXZzLWNzcy54aHRtbAorICAgICAgICAgICAgICAgdHJhbnNmb3Jtcy9jc3NtYXRyaXgtMmQtaW50
ZXJmYWNlLnhodG1sCisgICAgICAgICAgICAgICB0cmFuc2Zvcm1zL2Nzc21hdHJpeC0zZC1pbnRl
cmZhY2UueGh0bWwKKyAgICAgICAgICAgICAgIGZhc3QveHNsL2RlZmF1bHQtaHRtbC5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L3hzbC94c2x0LXByb2Nlc3Nvci5odG1sCisgICAgICAgICAgICAg
ICBmYXN0L3hzbC9leHRyYS1sZi1hdC1lbmQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC94c2wv
bmJzcC1pbi1zdHlsZXNoZWV0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL2dsb2JhbC1j
b25zdHJ1Y3RvcnMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vV2luZG93L2N1c3RvbS1j
b25zdHJ1Y3RvcnMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC94c2wveHNsdC1zdHJpbmctcGFy
YW1ldGVycy5odG1sCisgICAgICAgICAgICAgICBmYXN0L3hzbC94c2x0LWZyYWdtZW50LWluLWVt
cHR5LWRvYy5odG1sCisgICAgICAgICAgICAgICBmYXN0L3hzbC90cmFuc2Zvcm1Ub0ZyYWdtZW50
LVhNTC1kZWNsYXJhdGlvbi5odG1sCisgICAgICAgICAgICAgICBmYXN0L3hzbC90cmFuc2Zvcm0t
eGhyLWRvYy54aHRtbAorICAgICAgICAgICAgICAgZmFzdC94c2wvaW1wb3J0LW5vbi1kb2N1bWVu
dC1ub2RlLnhodG1sCisgICAgICAgICAgICAgICBmYXN0L3dvcmtlcnMvd29ya2VyLWdjMi5odG1s
CisgICAgICAgICAgICAgICBmYXN0L3dvcmtlcnMvd29ya2VyLWNsb3NlLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3Qvd29ya2Vycy93b3JrZXItaW5pdC5odG1sCisgICAgICAgICAgICAgICBmYXN0
L3dvcmtlcnMvd29ya2VyLXRlcm1pbmF0ZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3dvcmtl
cnMvd29ya2VyLXRpbWVvdXQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC93b3JrZXJzL3dvcmtl
ci1nYy5odG1sCisgICAgICAgICAgICAgICBmYXN0L3dvcmtlcnMvd29ya2VyLWNhbGwuaHRtbAor
ICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93b3JrZXJzL3RleHQtZW5jb2RpbmcuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC93b3JrZXJzL3dyYXBwZXItbWFwLWdjLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvZXZlbnRzL2Rpc3BhdGNoRXZlbnQtY3Jhc2guaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC93b3JrZXJzL3dvcmtlci1maW5pc2gtY3Jhc2guaHRtbAorICAgICAgICAgICAgICAgZmFz
dC93b3JrZXJzL3dvcmtlci1tZXNzYWdlcG9ydC1nYy5odG1sCisgICAgICAgICAgICAgICBmYXN0
L3dvcmtlcnMvd29ya2VyLWNsb25lcG9ydC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3dvcmtl
cnMvd29ya2VyLXNjcmlwdC1lcnJvci5odG1sCisgICAgICAgICAgICAgICBpbnNwZWN0b3IvZGVi
dWdnZXIvc2NyaXB0LWZvcm1hdHRlci5odG1sCisgICAgICAgICAgICAgICBmYXN0L3dvcmtlcnMv
d29ya2VyLWNsb3NlLW1vcmUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC93b3JrZXJzL3dvcmtl
ci10ZXJtaW5hdGUtZm9yZXZlci5odG1sCisgICAgICAgICAgICAgICBmYXN0L3dvcmtlcnMvdGVy
bWluYXRpb24tZWFybHkuaHRtbAorICAgICAgICAgICAgICAgZmFzdC93b3JrZXJzL3VzZS1tYWNo
aW5lLXN0YWNrLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvd29ya2Vycy93b3JrZXIt
cmVkaXJlY3QuaHRtbAorICAgICAgICAgICAgICAgZmFzdC93b3JrZXJzL3N0b3JhZ2UvaW50ZXJy
dXB0LWRhdGFiYXNlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvd29ya2Vycy9zdHJlc3MtanMt
ZXhlY3V0aW9uLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvd29ya2Vycy9zdG9yYWdlL2NoYW5n
ZS12ZXJzaW9uLXN5bmMuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93b3JrZXJzL3dv
cmtlci1pbnZhbGlkLXVybC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3dvcmtlcnMvd29ya2Vy
LWV2ZW50LWxpc3RlbmVyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY2FudmFzL3dlYmdsL3dv
cmtlci1kYXRhLXZpZXctdGVzdC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3dvcmtlcnMvd29y
a2VyLW1lc3NhZ2Vwb3J0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvd29ya2Vycy93b3JrZXIt
Y29uc3RydWN0b3IuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9maWxlcy93b3JrZXJzL2lubGlu
ZS13b3JrZXItdmlhLWJsb2ItdXJsLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvd29ya2Vycy9z
aGFyZWQtd29ya2VyLWNvbnN0cnVjdG9yLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMv
d29ya2Vycy93b3JrZXItd29ya2VyU2NyaXB0Tm90VGhlcmUuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9maWxlcy93b3JrZXJzL3dvcmtlci1hcHBseS1ibG9iLXVybC10by14aHIuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC93b3JrZXJzL3dvcmtlci1jcmFzaC13aXRoLWludmFsaWQtbG9jYXRp
b24uaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93b3JrZXJzL3dvcmtlci1pbXBvcnRT
Y3JpcHRzT25FcnJvci5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dvcmtlcnMvd29y
a2VyLWltcG9ydFNjcmlwdHMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC93b3JrZXJzL3Rlcm1p
bmF0aW9uLXdpdGgtcG9ydC1tZXNzYWdlcy5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvd29ya2VyLXNpbXBsZS5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L3dvcmtlcnMvc3RvcmFnZS91c2Utc2FtZS1kYXRhYmFzZS1pbi1wYWdlLWFu
ZC13b3JrZXJzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5Ymkvd29ya2Vycy9jbG9zZS1pbi13b3JrZXIuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90
ZXN0cy9ldmVudHNvdXJjZS93b3JrZXJzL2V2ZW50c291cmNlLXNpbXBsZS5odG1sCisgICAgICAg
ICAgICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3dvcmtlcnMvd29ya2Vy
LXNpbXBsZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dv
cmtlcnMvYWJvcnQtZXhjZXB0aW9uLWFzc2VydC5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UtaW4tb25tZXNzYWdlLWNyYXNo
Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hpeGllNzYv
d29ya2Vycy9jbG9zZS1pbi1vbm1lc3NhZ2UtY3Jhc2guaHRtbAorICAgICAgICAgICAgICAgaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGl4aWU3Ni93b3JrZXJzL2Nsb3NlLWluLXdvcmtlci5o
dG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtl
cnMvd29ya2VyLWhhbmRzaGFrZS1jaGFsbGVuZ2UtcmFuZG9tbmVzcy5odG1sCisgICAgICAgICAg
ICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oaXhpZTc2L3dvcmtlcnMvd29ya2VyLWhh
bmRzaGFrZS1jaGFsbGVuZ2UtcmFuZG9tbmVzcy5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5
cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChH
ZW5lcmF0ZUZ1bmN0aW9uQ2FsbGJhY2spOgorICAgICAgICAoR2VuZXJhdGVQYXJhbWV0ZXJzQ2hl
Y2spOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKEdl
bmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAoQ29udmVydFRvVjhQYXJhbWV0ZXIpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtOgorICAgICAgICAocGFyc2VF
eHRlbmRlZEF0dHJpYnV0ZXMpOgorICAgICAgICAocGFyc2VQYXJhbWV0ZXJzKToKKyAgICAgICAg
KFBhcnNlSW50ZXJmYWNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETFN0cnVjdHVy
ZS5wbToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhCaW5kaW5nTWFjcm9zLmg6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRTb3VyY2VDb25zdHJ1Y3Rvci5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RmlsZVJlYWRlckN1c3Rv
bS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2hhcmVkV29ya2VyQ3VzdG9t
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRDU1NN
YXRyaXhDb25zdHJ1Y3Rvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4V29ya2VyQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhY
U0xUUHJvY2Vzc29yQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTTWF0cml4Lmlk
bDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuaWRsOgorICAgICAgICAqIHBhZ2UvRXZl
bnRTb3VyY2UuaWRsOgorICAgICAgICAqIHdvcmtlcnMvU2hhcmVkV29ya2VyLmlkbDoKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlci5pZGw6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3IuaWRs
OgorCiAyMDExLTA4LTE1ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAg
ICAgICAgIFJFR1JFU1NJT04ocjcwNTk4KTogW0Nocm9taXVtXSBTdHlsZSBjaGFuZ2VzIGluIHRl
eHRJbnB1dCBldmVudCBjYW4gcHJldmVudCBmcm9tIHVwZGF0aW5nIDx0ZXh0YXJlYT4gdmFsdWUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKaW5kZXggZGU0MDU5Mi4uMGY1NDI1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpA
QCAtMjE0MSw3ICsyMTQxLDYgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhF
bnRyeUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEVudHJ5
U3luY0N1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50
Q3VzdG9tLmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRTb3Vy
Y2VDb25zdHJ1Y3Rvci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEZp
bGVSZWFkZXJDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhG
bG9hdDMyQXJyYXlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20v
VjhGbG9hdDY0QXJyYXlDdXN0b20uY3BwJywKQEAgLTIyMDIsNyArMjIwMSw2IEBACiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHUGF0aFNlZ0N1c3RvbS5jcHAnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5j
cHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNoYXJlZFdvcmtlckN1c3Rv
bS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0b3JhZ2VDdXN0b20u
Y3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhTdHlsZVNoZWV0Q3VzdG9t
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3R5bGVTaGVldExpc3RD
dXN0b20uY3BwJywKQEAgLTIyMTEsNyArMjIwOSw2IEBACiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvY3VzdG9tL1Y4VWludDhBcnJheUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAnLAotICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdENTU01hdHJpeENvbnN0cnVjdG9y
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0UG9pbnRDb25z
dHJ1Y3Rvci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tl
dEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNv
bnRleHRDdXN0b20uY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJv
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggYjc2MzAzNy4uZTU2MjMyYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcm8KQEAgLTE2NSw3ICsxNjUsNiBAQCB2OCB7CiAgICAgICAgIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOERvY3VtZW50TG9jYXRpb25DdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RWxlbWVudEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0
b20vVjhFdmVudEN1c3RvbS5jcHAgXAotICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhFdmVu
dFNvdXJjZUNvbnN0cnVjdG9yLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEZp
bGVSZWFkZXJDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEFs
bENvbGxlY3Rpb25DdXN0b20uY3BwCiAKQEAgLTIwMywxMiArMjAyLDEwIEBAIHY4IHsKICAgICAg
ICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwIFwKICAgICAg
ICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcCBcCiAgICAgICAgIFwK
LSAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2hhcmVkV29ya2VyQ3VzdG9tLmNwcCBcCiAg
ICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0b3JhZ2VDdXN0b20uY3BwIFwKICAgICAgICAg
YmluZGluZ3MvdjgvY3VzdG9tL1Y4U3R5bGVTaGVldEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5k
aW5ncy92OC9jdXN0b20vVjhTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5k
aW5ncy92OC9jdXN0b20vVjhXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwIFwKLSAgICAgICAgYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuY3BwIFwKICAgICAg
ICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0UG9pbnRDb25zdHJ1Y3Rvci5jcHAgXAogICAg
ICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBcCiAgICAg
ICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHAgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCA2NWEw
NjhjLi44YmRhNWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMzQ5LDcgKzM0OSw3IEBAIEVORAogICAgICAgICB9CiAg
ICAgfQogCi0gICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNv
bnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhDdXN0b21D
b25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbkJlQ29u
c3RydWN0ZWQifSkgeworICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
YW5CZUNvbnN0cnVjdGVkIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3Vz
dG9tQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOEN1
c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29u
c3RydWN0b3IifSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiAgICAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpOwogRU5ECkBAIC0xMjQ3LDI4ICsxMjQ3LDggQEAgRU5ECiAKICAg
ICBteSAkbnVtUGFyYW1ldGVycyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKIAotICAgIG15
ICRyZXF1aXJlc0FsbEFyZ3VtZW50czsKLSAgICBteSAkcmVxdWlyZXNBbGxBcmd1bWVudHNEZWZh
dWx0ID0gIiI7Ci0gICAgaWYgKCEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJMZWdh
Y3lEZWZhdWx0T3B0aW9uYWxBcmd1bWVudHMifSkgewotICAgICAgICAkcmVxdWlyZXNBbGxBcmd1
bWVudHNEZWZhdWx0ID0gIlJhaXNlIjsKLSAgICB9Ci0gICAgJHJlcXVpcmVzQWxsQXJndW1lbnRz
ID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZXF1aXJlc0Fs
bEFyZ3VtZW50cyJ9IHx8ICRyZXF1aXJlc0FsbEFyZ3VtZW50c0RlZmF1bHQ7Ci0gICAgaWYgKCRy
ZXF1aXJlc0FsbEFyZ3VtZW50cykgewotICAgICAgICBteSAkbnVtTWFuZGF0b3J5UGFyYW1zID0g
QHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OwotICAgICAgICBmb3JlYWNoIG15ICRwYXJhbSAocmV2
ZXJzZShAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pKSB7Ci0gICAgICAgICAgICBpZiAoJHBhcmFt
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT3B0aW9uYWwifSkgewotICAgICAgICAgICAgICAgICRu
dW1NYW5kYXRvcnlQYXJhbXMtLTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgbGFzdDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudERlY2xzLCAiICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgJG51bU1hbmRhdG9yeVBhcmFtcylc
biIpOwotICAgICAgICBpZiAoJHJlcXVpcmVzQWxsQXJndW1lbnRzIGVxICJSYWlzZSIpIHsKLSAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIHJldHVybiB0aHJvd0Vy
cm9yKFwiTm90IGVub3VnaCBhcmd1bWVudHNcIiwgVjhQcm94eTo6VHlwZUVycm9yKTtcbiIpOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAg
ICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpO1xuIik7Ci0gICAgICAgIH0KLSAg
ICB9CisgICAgbXkgJGFyZ3VtZW50c0NvdW50Q2hlY2tTdHJpbmcgPSBHZW5lcmF0ZUFyZ3VtZW50
c0NvdW50Q2hlY2soJGZ1bmN0aW9uLCAkZGF0YU5vZGUpOworICAgIHB1c2goQGltcGxDb250ZW50
RGVjbHMsICRhcmd1bWVudHNDb3VudENoZWNrU3RyaW5nKTsKIAogICAgIG15ICgkc3ZnUHJvcGVy
dHlUeXBlLCAkc3ZnTGlzdFByb3BlcnR5VHlwZSwgJHN2Z05hdGl2ZVR5cGUpID0gR2V0U1ZHUHJv
cGVydHlUeXBlcygkaW1wbENsYXNzTmFtZSk7CiAKQEAgLTEzMDUsNyArMTI4NSw3IEBAIEVORAog
CiAgICAgbXkgJHJhaXNlc0V4Y2VwdGlvbnMgPSBAeyRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9u
c307CiAgICAgaWYgKCEkcmFpc2VzRXhjZXB0aW9ucykgewotICAgICAgICBmb3JlYWNoIG15ICRw
YXJhbWV0ZXIgKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkgeworICAgICAgZm9yZWFjaCBteSAk
cGFyYW1ldGVyIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKICAgICAgICAgICAgIGlmICgo
ISRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsYmFjayJ9IGFuZCBUeXBlQ2Fu
RmFpbENvbnZlcnNpb24oJHBhcmFtZXRlcikpIG9yICRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJJc0luZGV4In0pIHsKICAgICAgICAgICAgICAgICAkcmFpc2VzRXhjZXB0aW9ucyA9
IDE7CiAgICAgICAgICAgICB9CkBAIC0xMzQwLDYgKzEzMjAsNjIgQEAgRU5ECiBFTkQKICAgICB9
CiAKKyAgICBteSAoJHBhcmFtZXRlckNoZWNrU3RyaW5nLCAkcGFyYW1JbmRleCkgPSBHZW5lcmF0
ZVBhcmFtZXRlcnNDaGVjaygkZnVuY3Rpb24sICRpbXBsQ2xhc3NOYW1lKTsKKyAgICBwdXNoKEBp
bXBsQ29udGVudERlY2xzLCAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcpOworCisgICAgIyBCdWlsZCB0
aGUgZnVuY3Rpb24gY2FsbCBzdHJpbmcuCisgICAgbXkgJGNhbGxTdHJpbmcgPSBHZW5lcmF0ZUZ1
bmN0aW9uQ2FsbFN0cmluZygkZnVuY3Rpb24sICRwYXJhbUluZGV4LCAiICAgICIsICRpbXBsQ2xh
c3NOYW1lKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiJGNhbGxTdHJpbmciKTsKKwor
ICAgIGlmICgkcmFpc2VzRXhjZXB0aW9ucykgeworICAgICAgICBwdXNoKEBpbXBsQ29udGVudERl
Y2xzLCAiICAgIH1cbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGZh
aWw6XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBWOFByb3h5Ojpz
ZXRET01FeGNlcHRpb24oZWMpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMs
ICIgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpO1xuIik7CisgICAgfQorCisgICAg
cHVzaChAaW1wbENvbnRlbnREZWNscywgIn1cblxuIik7Cit9CisKK3N1YiBHZW5lcmF0ZUFyZ3Vt
ZW50c0NvdW50Q2hlY2sKK3sKKyAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKKyAgICBteSAkZGF0
YU5vZGUgPSBzaGlmdDsKKworICAgIG15ICRhcmd1bWVudHNDb3VudENoZWNrU3RyaW5nID0gIiI7
CisgICAgbXkgJHJlcXVpcmVzQWxsQXJndW1lbnRzOworICAgIG15ICRyZXF1aXJlc0FsbEFyZ3Vt
ZW50c0RlZmF1bHQgPSAiIjsKKyAgICBpZiAoISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkxlZ2FjeURlZmF1bHRPcHRpb25hbEFyZ3VtZW50cyJ9KSB7CisgICAgICAgICRyZXF1aXJl
c0FsbEFyZ3VtZW50c0RlZmF1bHQgPSAiUmFpc2UiOworICAgIH0KKyAgICAkcmVxdWlyZXNBbGxB
cmd1bWVudHMgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJl
cXVpcmVzQWxsQXJndW1lbnRzIn0gfHwgJHJlcXVpcmVzQWxsQXJndW1lbnRzRGVmYXVsdDsKKyAg
ICBpZiAoJHJlcXVpcmVzQWxsQXJndW1lbnRzKSB7CisgICAgICAgIG15ICRudW1NYW5kYXRvcnlQ
YXJhbXMgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307CisgICAgICAgIGZvcmVhY2ggbXkgJHBh
cmFtIChyZXZlcnNlKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkpIHsKKyAgICAgICAgICAgIGlm
ICgkcGFyYW0tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9KSB7CisgICAgICAgICAg
ICAgICAgJG51bU1hbmRhdG9yeVBhcmFtcy0tOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBsYXN0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICgk
bnVtTWFuZGF0b3J5UGFyYW1zID49IDEpIHsKKyAgICAgICAgICAgICRhcmd1bWVudHNDb3VudENo
ZWNrU3RyaW5nIC49ICIgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAkbnVtTWFuZGF0b3J5UGFyYW1z
KVxuIjsKKyAgICAgICAgICAgIGlmICgkcmVxdWlyZXNBbGxBcmd1bWVudHMgZXEgIlJhaXNlIikg
eworICAgICAgICAgICAgICAgICRhcmd1bWVudHNDb3VudENoZWNrU3RyaW5nIC49ICIgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKFwiTm90IGVub3VnaCBhcmd1bWVudHNcIiwgVjhQcm94eTo6VHlw
ZUVycm9yKTtcbiI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICRhcmd1
bWVudHNDb3VudENoZWNrU3RyaW5nIC49ICIgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4oKTtcbiI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJu
ICRhcmd1bWVudHNDb3VudENoZWNrU3RyaW5nOworfQorCitzdWIgR2VuZXJhdGVQYXJhbWV0ZXJz
Q2hlY2sKK3sKKyAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKKyAgICBteSAkaW1wbENsYXNzTmFt
ZSA9IHNoaWZ0OworCisgICAgbXkgJHBhcmFtZXRlckNoZWNrU3RyaW5nID0gIiI7CiAgICAgbXkg
JHBhcmFtSW5kZXggPSAwOwogICAgIGZvcmVhY2ggbXkgJHBhcmFtZXRlciAoQHskZnVuY3Rpb24t
PnBhcmFtZXRlcnN9KSB7CiAgICAgICAgIFRyYW5zbGF0ZVBhcmFtZXRlcigkcGFyYW1ldGVyKTsK
QEAgLTEzNTAsMTIgKzEzODYsMTIgQEAgRU5ECiAgICAgICAgICMgYW5kIHdlIGNhbiByZWR1Y2Ug
dGhlIG51bWJlciBvZiBvdmVybG9hZGVkIGZ1bmN0aW9ucyB0aGF0IHRha2UgYSBkaWZmZXJlbnQg
bnVtYmVyIG9mIHBhcmFtZXRlcnMuCiAgICAgICAgICMgT3B0aW9uYWwgYXJndW1lbnRzIHdpdGgg
ZGVmYXVsdCB2YWx1ZXMgW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBzaG91bGQgbm90
IGdlbmVyYXRlIGFuIGVhcmx5IGNhbGwuCiAgICAgICAgIG15ICRvcHRpb25hbCA9ICRwYXJhbWV0
ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9OyAgICAgICAgCi0gICAgICAgIGlm
ICgkb3B0aW9uYWwgJiYgJG9wdGlvbmFsIG5lICJDYWxsV2l0aERlZmF1bHRWYWx1ZSIgJiYgISRw
YXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsYmFjayJ9KSB7CisgICAgICAgIGlm
ICgkb3B0aW9uYWwgJiYgJG9wdGlvbmFsIG5lICJDYWxsV2l0aERlZmF1bHRWYWx1ZSIgJiYgJG9w
dGlvbmFsIG5lICJDYWxsV2l0aE51bGxWYWx1ZSIgJiYgISRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDYWxsYmFjayJ9KSB7CiAgICAgICAgICAgICAjIEdlbmVyYXRlIGVhcmx5IGNh
bGwgaWYgdGhlcmUgYXJlIG5vdCBlbm91Z2ggcGFyYW1ldGVycy4KLSAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsICIgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPD0gJHBhcmFtSW5kZXgp
IHtcbiIpOworICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgaWYgKGFy
Z3MuTGVuZ3RoKCkgPD0gJHBhcmFtSW5kZXgpIHtcbiI7CiAgICAgICAgICAgICBteSAkZnVuY3Rp
b25DYWxsID0gR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcoJGZ1bmN0aW9uLCAkcGFyYW1JbmRl
eCwgIiAgICAiIHggMiwgJGltcGxDbGFzc05hbWUpOwotICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgJGZ1bmN0aW9uQ2FsbCk7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dERlY2xzLCAiICAgIH1cbiIpOworICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49
ICRmdW5jdGlvbkNhbGw7CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAg
ICB9XG4iOwogICAgICAgICB9CiAKICAgICAgICAgJGltcGxJbmNsdWRlc3siRXhjZXB0aW9uQ29k
ZS5oIn0gPSAxOwpAQCAtMTM2NCwzMyArMTQwMCw0NyBAQCBFTkQKICAgICAgICAgICAgIG15ICRj
bGFzc05hbWUgPSBHZXRDYWxsYmFja0NsYXNzTmFtZSgkcGFyYW1ldGVyLT50eXBlKTsKICAgICAg
ICAgICAgICRpbXBsSW5jbHVkZXN7IiRjbGFzc05hbWUuaCJ9ID0gMTsKICAgICAgICAgICAgIGlm
ICgkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT3B0aW9uYWwifSkgewotICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgUmVmUHRyPCIgLiAkcGFyYW1l
dGVyLT50eXBlIC4gIj4gJHBhcmFtZXRlck5hbWU7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudERlY2xzLCAiICAgIGlmIChhcmdzLkxlbmd0aCgpID4gJHBhcmFtSW5kZXgg
JiYgIWFyZ3NbJHBhcmFtSW5kZXhdLT5Jc051bGwoKSAmJiAhYXJnc1skcGFyYW1JbmRleF0tPklz
VW5kZWZpbmVkKCkpIHtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVj
bHMsICIgICAgICAgIGlmICghYXJnc1skcGFyYW1JbmRleF0tPklzT2JqZWN0KCkpXG4iKTsKLSAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICAgICAgICAgcmV0dXJu
IHRocm93RXJyb3IoVFlQRV9NSVNNQVRDSF9FUlIpO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAgJHBhcmFtZXRlck5hbWUgPSAke2NsYXNzTmFt
ZX06OmNyZWF0ZShhcmdzWyRwYXJhbUluZGV4XSwgZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgfVxu
Iik7CisgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgUmVmUHRy
PCIgLiAkcGFyYW1ldGVyLT50eXBlIC4gIj4gJHBhcmFtZXRlck5hbWU7XG4iOworICAgICAgICAg
ICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIGlmIChhcmdzLkxlbmd0aCgpID4g
JHBhcmFtSW5kZXggJiYgIWFyZ3NbJHBhcmFtSW5kZXhdLT5Jc051bGwoKSAmJiAhYXJnc1skcGFy
YW1JbmRleF0tPklzVW5kZWZpbmVkKCkpIHtcbiI7CisgICAgICAgICAgICAgICAgJHBhcmFtZXRl
ckNoZWNrU3RyaW5nIC49ICIgICAgICAgIGlmICghYXJnc1skcGFyYW1JbmRleF0tPklzT2JqZWN0
KCkpXG4iOworICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAg
ICAgICAgcmV0dXJuIHRocm93RXJyb3IoVFlQRV9NSVNNQVRDSF9FUlIpO1xuIjsKKyAgICAgICAg
ICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgJHBhcmFtZXRlck5hbWUg
PSAke2NsYXNzTmFtZX06OmNyZWF0ZShhcmdzWyRwYXJhbUluZGV4XSwgZ2V0U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKTtcbiI7CisgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5n
IC49ICIgICAgfVxuIjsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgIiAgICBpZiAoYXJncy5MZW5ndGgoKSA8PSAkcGFyYW1JbmRl
eCB8fCAhYXJnc1skcGFyYW1JbmRleF0tPklzT2JqZWN0KCkpXG4iKTsKLSAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihUWVBF
X01JU01BVENIX0VSUik7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERl
Y2xzLCAiICAgIFJlZlB0cjwiIC4gJHBhcmFtZXRlci0+dHlwZSAuICI+ICRwYXJhbWV0ZXJOYW1l
ID0gJHtjbGFzc05hbWV9OjpjcmVhdGUoYXJnc1skcGFyYW1JbmRleF0sIGdldFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJp
bmcgLj0gIiAgICBpZiAoYXJncy5MZW5ndGgoKSA8PSAkcGFyYW1JbmRleCB8fCAhYXJnc1skcGFy
YW1JbmRleF0tPklzT2JqZWN0KCkpXG4iOworICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVj
a1N0cmluZyAuPSAiICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihUWVBFX01JU01BVENIX0VSUik7
XG4iOworICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIFJlZlB0
cjwiIC4gJHBhcmFtZXRlci0+dHlwZSAuICI+ICRwYXJhbWV0ZXJOYW1lID0gJHtjbGFzc05hbWV9
OjpjcmVhdGUoYXJnc1skcGFyYW1JbmRleF0sIGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7
XG4iOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2lmICgkcGFyYW1ldGVyLT50eXBlIGVx
ICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiKSB7CiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaCJ9ID0gMTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50RGVjbHMsICIgICAgYm9vbCAke3BhcmFtZXRlck5hbWV9RGlkVGhyb3cgPSBmYWxzZTtcbiIp
OwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAkbmF0aXZlVHlwZSAk
cGFyYW1ldGVyTmFtZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFyZ3NbJHBhcmFt
SW5kZXhdLCAke3BhcmFtZXRlck5hbWV9RGlkVGhyb3cpO1xuIik7Ci0gICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudERlY2xzLCAiICAgIGlmICgke3BhcmFtZXRlck5hbWV9RGlkVGhyb3cpXG4i
KTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIHJldHVybiB2
ODo6VW5kZWZpbmVkKCk7XG4iKTsKKyAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAu
PSAiICAgIGJvb2wgJHtwYXJhbWV0ZXJOYW1lfURpZFRocm93ID0gZmFsc2U7XG4iOworICAgICAg
ICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgJG5hdGl2ZVR5cGUgJHBhcmFtZXRl
ck5hbWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWyRwYXJhbUluZGV4XSwg
JHtwYXJhbWV0ZXJOYW1lfURpZFRocm93KTtcbiI7CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hl
Y2tTdHJpbmcgLj0gIiAgICBpZiAoJHtwYXJhbWV0ZXJOYW1lfURpZFRocm93KVxuIjsKKyAgICAg
ICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpO1xuIjsKICAgICAgICAgfSBlbHNpZiAoVHlwZUNhbkZhaWxDb252ZXJzaW9uKCRwYXJh
bWV0ZXIpKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICRuYXRp
dmVUeXBlICRwYXJhbWV0ZXJOYW1lID0gIiAuCi0gICAgICAgICAgICAgICAgIEpTVmFsdWVUb05h
dGl2ZSgkcGFyYW1ldGVyLCAiYXJnc1skcGFyYW1JbmRleF0iKSAuICI7XG4iKTsKLSAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaWYgKFVOTElLRUxZKCEkcGFyYW1ldGVy
TmFtZSkpIHtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAg
ICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgIiAgICAgICAgZ290byBmYWlsO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudERlY2xzLCAiICAgIH1cbiIpOworICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNr
U3RyaW5nIC49ICIgICAgJG5hdGl2ZVR5cGUgJHBhcmFtZXRlck5hbWUgPSAiIC4KKyAgICAgICAg
ICAgICAgICAgSlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICJhcmdzWyRwYXJhbUluZGV4XSIp
IC4gIjtcbiI7CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBpZiAo
VU5MSUtFTFkoISRwYXJhbWV0ZXJOYW1lKSkge1xuIjsKKyAgICAgICAgICAgICRwYXJhbWV0ZXJD
aGVja1N0cmluZyAuPSAiICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSO1xuIjsKKyAgICAg
ICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICBnb3RvIGZhaWw7XG4iOwor
ICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgfVxuIjsKICAgICAgICAg
fSBlbHNpZiAoJG5hdGl2ZVR5cGUgPX4gL15WOFBhcmFtZXRlci8pIHsKLSAgICAgICAgICAgIG15
ICR2YWx1ZSA9IEpTVmFsdWVUb05hdGl2ZSgkcGFyYW1ldGVyLCAiYXJnc1skcGFyYW1JbmRleF0i
KTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgIiAuIENvbnZlcnRU
b1Y4UGFyYW1ldGVyKCRwYXJhbWV0ZXIsICRuYXRpdmVUeXBlLCAkcGFyYW1ldGVyTmFtZSwgJHZh
bHVlKSAuICJcbiIpOworICAgICAgICAgICAgaWYgKCRvcHRpb25hbCAmJiAkb3B0aW9uYWwgZXEg
IkNhbGxXaXRoTnVsbFZhbHVlIikgeworICAgICAgICAgICAgICAgIG15ICR2YWx1ZSA9IEpTVmFs
dWVUb05hdGl2ZSgkcGFyYW1ldGVyLCAiYXJnc1skcGFyYW1JbmRleF0iKTsKKyAgICAgICAgICAg
ICAgICBpZiAoJHBhcmFtZXRlci0+dHlwZSBlcSAiRE9NU3RyaW5nIikgeworICAgICAgICAgICAg
ICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAkbmF0aXZlVHlwZSAkcGFyYW1l
dGVyTmFtZTtcbiI7CisgICAgICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAu
PSAiICAgIGlmIChhcmdzLkxlbmd0aCgpID49ICIgLiAoJHBhcmFtSW5kZXggKyAxKSAuICIpXG4i
OworICAgICAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAg
JHBhcmFtZXRlck5hbWUgPSAkbmF0aXZlVHlwZShhcmdzWyRwYXJhbUluZGV4XSk7XG4iOworICAg
ICAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBpZiAoISR7cGFy
YW1ldGVyTmFtZX0ucHJlcGFyZSgpKVxuIjsKKyAgICAgICAgICAgICAgICAgICAgJHBhcmFtZXRl
ckNoZWNrU3RyaW5nIC49ICIgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7XG4iOworICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICMgRG9uJ3Qga25vdyBo
b3cgdG8gcHJvcGVybHkgY2hlY2sgZm9yIGNvbnZlcnNpb24gZXhjZXB0aW9ucyB3aGVuICRwYXJh
bWV0ZXItPnR5cGUgaXMgIkRPTVVzZXJEYXRhIgorICAgICAgICAgICAgICAgICAgICAkcGFyYW1l
dGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAkbmF0aXZlVHlwZSAkcGFyYW1ldGVyTmFtZShhcmdzWyRw
YXJhbUluZGV4XSwgdHJ1ZSk7XG4iOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgbXkgJHZhbHVlID0gSlNWYWx1ZVRvTmF0aXZlKCRwYXJh
bWV0ZXIsICJhcmdzWyRwYXJhbUluZGV4XSIpOworICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJD
aGVja1N0cmluZyAuPSAiICAgICIgLiBDb252ZXJ0VG9WOFBhcmFtZXRlcigkcGFyYW1ldGVyLCAk
bmF0aXZlVHlwZSwgJHBhcmFtZXRlck5hbWUsICR2YWx1ZSkgLiAiXG4iOworICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siVjhCaW5kaW5n
TWFjcm9zLmgifSA9IDE7CiAgICAgICAgICAgICAjIElmIHRoZSAiU3RyaWN0VHlwZUNoZWNraW5n
IiBleHRlbmRlZCBhdHRyaWJ1dGUgaXMgcHJlc2VudCwgYW5kIHRoZSBhcmd1bWVudCdzIHR5cGUg
aXMgYW4KQEAgLTEzOTksNDIgKzE0NDksMTIwIEBAIEVORAogICAgICAgICAgICAgIyBQZXIgdGhl
IFdlYiBJREwgYW5kIEVDTUFTY3JpcHQgc3BlY2lmaWNhdGlvbnMsIGluY29taW5nIHZhbHVlcyBj
YW4gYWx3YXlzIGJlIGNvbnZlcnRlZAogICAgICAgICAgICAgIyB0byBib3RoIHN0cmluZ3MgYW5k
IG51bWJlcnMsIHNvIGRvIG5vdCB0aHJvdyBUeXBlRXJyb3IgaWYgdGhlIGFyZ3VtZW50IGlzIG9m
IHRoZXNlCiAgICAgICAgICAgICAjIHR5cGVzLgotICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiU3RyaWN0VHlwZUNoZWNraW5nIn0pIHsK
KyAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZSAmJiAkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlN0cmljdFR5cGVDaGVja2luZyJ9KSB7CiAgICAg
ICAgICAgICAgICAgbXkgJGFyZ1ZhbHVlID0gImFyZ3NbJHBhcmFtSW5kZXhdIjsKICAgICAgICAg
ICAgICAgICBteSAkYXJnVHlwZSA9IEdldFR5cGVGcm9tU2lnbmF0dXJlKCRwYXJhbWV0ZXIpOwog
ICAgICAgICAgICAgICAgIGlmIChJc1dyYXBwZXJUeXBlKCRhcmdUeXBlKSkgewotICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGlmIChhcmdzLkxlbmd0aCgp
ID4gJHBhcmFtSW5kZXggJiYgIWlzVW5kZWZpbmVkT3JOdWxsKCRhcmdWYWx1ZSkgJiYgIVY4JHth
cmdUeXBlfTo6SGFzSW5zdGFuY2UoJGFyZ1ZhbHVlKSkge1xuIik7Ci0gICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIFY4UHJveHk6OnRocm93VHlwZUVy
cm9yKCk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywg
IiAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7XG4iKTsKLSAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICB9XG4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgaWYgKGFyZ3MuTGVuZ3Ro
KCkgPiAkcGFyYW1JbmRleCAmJiAhaXNVbmRlZmluZWRPck51bGwoJGFyZ1ZhbHVlKSAmJiAhVjgk
e2FyZ1R5cGV9OjpIYXNJbnN0YW5jZSgkYXJnVmFsdWUpKSB7XG4iOworICAgICAgICAgICAgICAg
ICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgVjhQcm94eTo6dGhyb3dUeXBl
RXJyb3IoKTtcbiI7CisgICAgICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAu
PSAiICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTtcbiI7CisgICAgICAg
ICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIH1cbiI7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRE
ZWNscywgIiAgICBFWENFUFRJT05fQkxPQ0soJG5hdGl2ZVR5cGUsICRwYXJhbWV0ZXJOYW1lLCAi
IC4KLSAgICAgICAgICAgICAgICAgSlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICJhcmdzWyRw
YXJhbUluZGV4XSIpIC4gIik7XG4iKTsKKyAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmlu
ZyAuPSAiICAgIEVYQ0VQVElPTl9CTE9DSygkbmF0aXZlVHlwZSwgJHBhcmFtZXRlck5hbWUsICIg
LgorICAgICAgICAgICAgICAgICBKU1ZhbHVlVG9OYXRpdmUoJHBhcmFtZXRlciwgImFyZ3NbJHBh
cmFtSW5kZXhdIikgLiAiKTtcbiI7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoJHBhcmFtZXRl
ci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IklzSW5kZXgifSkgewotICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnREZWNscywgIiAgICBpZiAoVU5MSUtFTFkoJHBhcmFtZXRlck5hbWUgPCAwKSkg
e1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICAgICBlYyA9
IElOREVYX1NJWkVfRVJSO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xz
LCAiICAgICAgICBnb3RvIGZhaWw7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
RGVjbHMsICIgICAgfVxuIik7CisgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0g
IiAgICBpZiAoVU5MSUtFTFkoJHBhcmFtZXRlck5hbWUgPCAwKSkge1xuIjsKKyAgICAgICAgICAg
ICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSO1xu
IjsKKyAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICBnb3RvIGZh
aWw7XG4iOworICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgfVxuIjsK
ICAgICAgICAgfQogCiAgICAgICAgICRwYXJhbUluZGV4Kys7CiAgICAgfQorICAgIHJldHVybiAo
JHBhcmFtZXRlckNoZWNrU3RyaW5nLCAkcGFyYW1JbmRleCk7Cit9CiAKLSAgICAjIEJ1aWxkIHRo
ZSBmdW5jdGlvbiBjYWxsIHN0cmluZy4KLSAgICBteSAkY2FsbFN0cmluZyA9IEdlbmVyYXRlRnVu
Y3Rpb25DYWxsU3RyaW5nKCRmdW5jdGlvbiwgJHBhcmFtSW5kZXgsICIgICAgIiwgJGltcGxDbGFz
c05hbWUpOwotICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIkY2FsbFN0cmluZyIpOworc3Vi
IEdlbmVyYXRlQ29uc3RydWN0b3JDYWxsYmFjaworeworICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0
OworICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OworICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gc2hp
ZnQ7CisKKyAgICBteSAkcmFpc2VzRXhjZXB0aW9ucyA9IEB7JGZ1bmN0aW9uLT5yYWlzZXNFeGNl
cHRpb25zfTsKKyAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3Ry
dWN0b3JSYWlzZXNFeGNlcHRpb24ifSkgeworICAgICAgICAkcmFpc2VzRXhjZXB0aW9ucyA9IDE7
CisgICAgfQorICAgIGlmICghJHJhaXNlc0V4Y2VwdGlvbnMpIHsKKyAgICAgICAgZm9yZWFjaCBt
eSAkcGFyYW1ldGVyIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKKyAgICAgICAgICAgIGlm
ICgoISRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsYmFjayJ9IGFuZCBUeXBl
Q2FuRmFpbENvbnZlcnNpb24oJHBhcmFtZXRlcikpIG9yICRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJJc0luZGV4In0pIHsKKyAgICAgICAgICAgICAgICAkcmFpc2VzRXhjZXB0aW9u
cyA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBteSBAZXh0cmFB
cmd1bWVudExpc3Q7CisgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOCR7aW1wbENsYXNzTmFtZX06OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS4ke2ltcGxDbGFzc05h
bWV9LkNvbnN0cnVjdG9yIik7CisKKyAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCisg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBi
ZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iLCBWOFByb3h5OjpUeXBlRXJyb3IpOworRU5ECisKKyAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7CisgICAgbXkgJGFyZ3VtZW50c0NvdW50Q2hlY2tT
dHJpbmcgPSBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2soJGZ1bmN0aW9uLCAkZGF0YU5vZGUp
OworICAgIHB1c2goQGltcGxDb250ZW50LCAkYXJndW1lbnRzQ291bnRDaGVja1N0cmluZyk7CiAK
ICAgICBpZiAoJHJhaXNlc0V4Y2VwdGlvbnMpIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnRE
ZWNscywgIiAgICB9XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBm
YWlsOlxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgVjhQcm94eTo6
c2V0RE9NRXhjZXB0aW9uKGVjKTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xz
LCAiICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTtcbiIpOworICAgICAgICAkaW1w
bEluY2x1ZGVzeyJFeGNlcHRpb25Db2RlLmgifSA9IDE7CisgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7XG4iKTsKICAgICB9CiAKLSAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAifVxu
XG4iKTsKKyAgICBteSAoJHBhcmFtZXRlckNoZWNrU3RyaW5nLCAkcGFyYW1JbmRleCkgPSBHZW5l
cmF0ZVBhcmFtZXRlcnNDaGVjaygkZnVuY3Rpb24sICRpbXBsQ2xhc3NOYW1lKTsKKyAgICBwdXNo
KEBpbXBsQ29udGVudCwgJHBhcmFtZXRlckNoZWNrU3RyaW5nKTsKKworICAgIGlmICgkZGF0YU5v
ZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvcldpdGgifSAmJiAkZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvcldpdGgifSBlcSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCIpIHsKKyAgICAgICAgcHVzaChAZXh0cmFBcmd1bWVudExpc3QsICJjb250ZXh0
Iik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CisKKyAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAg
IGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIiR7aW1wbENsYXNzTmFt
ZX0gY29uc3RydWN0b3IncyBhc3NvY2lhdGVkIGNvbnRleHQgaXMgbm90IGF2YWlsYWJsZSIsIFY4
UHJveHk6OlJlZmVyZW5jZUVycm9yKTsKK0VORAorICAgIH0KKworICAgIGlmICgkZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbiJ9KSB7Cisg
ICAgICAgIHB1c2goQGV4dHJhQXJndW1lbnRMaXN0LCAiZWMiKTsKKyAgICB9CisKKyAgICBteSBA
YXJndW1lbnRMaXN0OworICAgIG15ICRpbmRleCA9IDA7CisgICAgZm9yZWFjaCBteSAkcGFyYW1l
dGVyIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKKyAgICAgICAgbGFzdCBpZiAkaW5kZXgg
ZXEgJHBhcmFtSW5kZXg7CisgICAgICAgIHB1c2goQGFyZ3VtZW50TGlzdCwgJHBhcmFtZXRlci0+
bmFtZSk7CisgICAgICAgICRpbmRleCsrOworICAgIH0KKworICAgIG15ICRhcmd1bWVudFN0cmlu
ZyA9IGpvaW4oIiwgIiwgQGFyZ3VtZW50TGlzdCwgQGV4dHJhQXJndW1lbnRMaXN0KTsKKyAgICBw
dXNoKEBpbXBsQ29udGVudCwgIlxuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgUmVm
UHRyPCR7aW1wbENsYXNzTmFtZX0+IG9iaiA9ICR7aW1wbENsYXNzTmFtZX06OmNyZWF0ZSgke2Fy
Z3VtZW50U3RyaW5nfSk7XG4iKTsKKworICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbiJ9KSB7CisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGlmIChlYylcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgZ290byBmYWlsO1xuIik7CisgICAgfQorCisgICAgbXkgJERPTU9iamVjdCA9ICRk
YXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q29uc3RydWN0b3JTZXRzRE9NV3JhcHBl
ciJ9ID8gIkRPTU9iamVjdCIgOiAiQWN0aXZlRE9NT2JqZWN0IjsKKyAgICBwdXNoKEBpbXBsQ29u
dGVudCwgPDxFTkQpOworCisgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9s
ZGVyKCksICZpbmZvLCBvYmouZ2V0KCkpOworICAgIG9iai0+cmVmKCk7CisgICAgVjhET01XcmFw
cGVyOjpzZXRKU1dyYXBwZXJGb3Ike0RPTU9iamVjdH0ob2JqLmdldCgpLCB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0Pjo6TmV3KGFyZ3MuSG9sZGVyKCkpKTsKKyAgICByZXR1cm4gYXJncy5Ib2xk
ZXIoKTsKK0VORAorCisgICAgaWYgKCRyYWlzZXNFeGNlcHRpb25zKSB7CisgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICBmYWlsOlxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHJldHVybiB0aHJvd0Vycm9yKGVjKTtcbiIpOworICAgIH0KKworICAgIHB1c2goQGltcGxD
b250ZW50LCAifVxuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOwogfQogCiBzdWIg
R2VuZXJhdGVCYXRjaGVkQXR0cmlidXRlRGF0YQpAQCAtMTg5Niw3ICsyMDI0LDcgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBpZiAoQGRpc2FsbG93c1NoYWRvd2luZykgewogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBjb25zdCBCYXRjaGVkQXR0cmlidXRlIHNo
YWRvd0F0dHJzW10gPSB7XG4iKTsKICAgICAgICAgR2VuZXJhdGVCYXRjaGVkQXR0cmlidXRlRGF0
YSgkZGF0YU5vZGUsIFxAZGlzYWxsb3dzU2hhZG93aW5nKTsKLSAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJ9O1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifTtcblxuIik7CiAg
ICAgfQogCiAgICAgbXkgJGhhc19hdHRyaWJ1dGVzID0gMDsKQEAgLTE5MDQsNyArMjAzMiw3IEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICRoYXNfYXR0cmlidXRlcyA9IDE7
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAic3RhdGljIGNvbnN0IEJhdGNoZWRBdHRyaWJ1
dGUgJHtpbnRlcmZhY2VOYW1lfUF0dHJzW10gPSB7XG4iKTsKICAgICAgICAgR2VuZXJhdGVCYXRj
aGVkQXR0cmlidXRlRGF0YSgkZGF0YU5vZGUsICRhdHRyaWJ1dGVzKTsKLSAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ9O1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifTtcblxu
Iik7CiAgICAgfQogCiAgICAgIyBTZXR1cCB0YWJsZSBvZiBzdGFuZGFyZCBjYWxsYmFjayBmdW5j
dGlvbnMKQEAgLTE5NDMsNyArMjA3MSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiBF
TkQKICAgICAgICAgJG51bV9jYWxsYmFja3MrKzsKICAgICB9Ci0gICAgcHVzaChAaW1wbENvbnRl
bnQsICJ9O1xuIikgIGlmICRoYXNfY2FsbGJhY2tzOworICAgIHB1c2goQGltcGxDb250ZW50LCAi
fTtcblxuIikgIGlmICRoYXNfY2FsbGJhY2tzOwogCiAgICAgIyBTZXR1cCBjb25zdGFudHMKICAg
ICBteSAkaGFzX2NvbnN0YW50cyA9IDA7CkBAIC0xOTYyLDE0ICsyMDkwLDE0IEBAIEVORAogRU5E
CiAgICAgfQogICAgIGlmICgkaGFzX2NvbnN0YW50cykgewotICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIn07XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9O1xuXG4iKTsKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbXBpbGVU
aW1lQ2hlY2tGb3JFbnVtc0lmTmVlZGVkKCRkYXRhTm9kZSkpOwogICAgIH0KIAogICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsICJ9IC8vIG5hbWVzcGFjZSAke2ludGVyZmFjZU5hbWV9SW50ZXJu
YWxcblxuIik7CiAKICAgICAjIEluIG5hbWVzcGFjZSBXZWJDb3JlLCBhZGQgZ2VuZXJhdGVkIGlt
cGxlbWVudGF0aW9uIGZvciAnQ2FuQmVDb25zdHJ1Y3RlZCcuCi0gICAgaWYgKCRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbkJlQ29uc3RydWN0ZWQifSAmJiAhJGRhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ29uc3RydWN0b3IifSAmJiAhJGRhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhDdXN0b21Db25zdHJ1Y3RvciJ9KSB7CisgICAgaWYgKCRk
YXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbkJlQ29uc3RydWN0ZWQifSAmJiAhJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ29uc3RydWN0b3IifSAmJiAhJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhDdXN0b21Db25zdHJ1Y3RvciJ9ICYmICEk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvciJ9KSB7CiAgICAgICAg
IG15ICR2OENvbnN0cnVjdEZ1bmN0aW9uOwogICAgICAgICBteSAkY2FsbFdpdGggPSAkZGF0YU5v
ZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9OwogICAgICAgICBpZiAoJGNhbGxX
aXRoIGFuZCAkY2FsbFdpdGggZXEgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKSB7CkBAIC0xOTgz
LDggKzIxMTEsMTMgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7Y2xhc3NOYW1lfTo6Y29uc3Ry
dWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmcKICAgICBJTkNfU1RBVFMoIkRP
TS4ke2ludGVyZmFjZU5hbWV9LkNvbnRydWN0b3IiKTsKICAgICByZXR1cm4gVjhQcm94eTo6JHt2
OENvbnN0cnVjdEZ1bmN0aW9ufTwkaW50ZXJmYWNlTmFtZT4oYXJncywgJmluZm8pOwogfQorCiBF
TkQKLSAgIH0KKyAgICB9CisKKyAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ29uc3RydWN0b3IifSkgeworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yQ2FsbGJhY2so
JGRhdGFOb2RlLT5jb25zdHJ1Y3RvciwgJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CisgICAg
fQogCiAgICAgbXkgJGFjY2Vzc19jaGVjayA9ICIiOwogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDaGVja0RvbWFpblNlY3VyaXR5In0gJiYgISgkaW50ZXJmYWNlTmFt
ZSBlcSAiRE9NV2luZG93IikpIHsKQEAgLTIwNDIsOSArMjE3NSw5IEBAIEVORAogICAgICAgICAk
aW1wbEluY2x1ZGVzeyJ3dGYvVW51c2VkUGFyYW0uaCJ9ID0gMTsKICAgICB9CiAKLSAgICBpZiAo
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ29uc3RydWN0b3IifSB8fCAk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOEN1c3RvbUNvbnN0cnVjdG9yIn0gfHwg
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FuQmVDb25zdHJ1Y3RlZCJ9KSB7Cisg
ICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbkJlQ29uc3RydWN0ZWQi
fSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Db25zdHJ1Y3RvciJ9
IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tQ29uc3RydWN0b3Ii
fSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RlciJ9KSB7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci0gICAgICAgIGRlc2MtPlNldENhbGxI
YW5kbGVyKFY4JHtpbnRlcmZhY2VOYW1lfTo6Y29uc3RydWN0b3JDYWxsYmFjayk7CisgICAgZGVz
Yy0+U2V0Q2FsbEhhbmRsZXIoVjgke2ludGVyZmFjZU5hbWV9Ojpjb25zdHJ1Y3RvckNhbGxiYWNr
KTsKIEVORAogICAgIH0KIApAQCAtMzM0MCwxMyArMzQ3MywxOCBAQCBzdWIgQ29udmVydFRvVjhQ
YXJhbWV0ZXIKICAgICBteSAkdmFyaWFibGVOYW1lID0gc2hpZnQ7CiAgICAgbXkgJHZhbHVlID0g
c2hpZnQ7CiAgICAgbXkgJHN1ZmZpeCA9IHNoaWZ0OworICAgIG15ICRlcnIgPSBzaGlmdDsKIAog
ICAgIGRpZSAiV3JvbmcgbmF0aXZlIHR5cGUgcGFzc2VkOiAkbmF0aXZlVHlwZSIgdW5sZXNzICRu
YXRpdmVUeXBlID1+IC9eVjhQYXJhbWV0ZXIvOwogICAgIGlmICgkc2lnbmF0dXJlLT50eXBlIGVx
ICJET01TdHJpbmciKSB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IlY4QmluZGluZ01hY3Jvcy5o
In0gPSAxOwogICAgICAgICBteSAkbWFjcm8gPSAiU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQ
VElPTl9CTE9DSyI7CiAgICAgICAgICRtYWNybyAuPSAiXyRzdWZmaXgiIGlmICRzdWZmaXg7Ci0g
ICAgICAgIHJldHVybiAiJG1hY3JvKCRuYXRpdmVUeXBlLCAkdmFyaWFibGVOYW1lLCAkdmFsdWUp
OyIKKyAgICAgICAgaWYgKCRzdWZmaXggJiYgJHN1ZmZpeCBlcSAiVEhST1ciKSB7CisgICAgICAg
ICAgICByZXR1cm4gIiRtYWNybygkbmF0aXZlVHlwZSwgJHZhcmlhYmxlTmFtZSwgJHZhbHVlLCAk
ZXJyKTsiCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gIiRtYWNybygkbmF0
aXZlVHlwZSwgJHZhcmlhYmxlTmFtZSwgJHZhbHVlKTsiCisgICAgICAgIH0KICAgICB9IGVsc2Ug
ewogICAgICAgICAjIERvbid0IGtub3cgaG93IHRvIHByb3Blcmx5IGNoZWNrIGZvciBjb252ZXJz
aW9uIGV4Y2VwdGlvbnMgd2hlbiAkcGFyYW1ldGVyLT50eXBlIGlzICJET01Vc2VyRGF0YSIKICAg
ICAgICAgcmV0dXJuICIkbmF0aXZlVHlwZSAkdmFyaWFibGVOYW1lKCR2YWx1ZSwgdHJ1ZSk7IjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBt
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KaW5kZXggMDJm
YTYyNy4uMjA1N2RjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9JRExQYXJzZXIucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQ
YXJzZXIucG0KQEAgLTIyLDYgKzIyLDcgQEAKIHBhY2thZ2UgSURMUGFyc2VyOwogCiB1c2Ugc3Ry
aWN0OwordXNlIHJlICdldmFsJzsKIAogdXNlIElQQzo6T3BlbjI7CiB1c2UgSURMU3RydWN0dXJl
OwpAQCAtMTM5LDIyICsxNDAsODggQEAgc3ViIGR1bXBFeHRlbmRlZEF0dHJpYnV0ZXMKIHN1YiBw
YXJzZUV4dGVuZGVkQXR0cmlidXRlcwogewogICAgIG15ICRzdHIgPSBzaGlmdDsKLSAgICAkc3Ry
ID1+IHMvXFtccyooLio/KVxzKlxdLyQxL2c7CisgICAgJHN0ciA9fiBzL1xbXHMqKC4qKVxzKlxd
LyQxL2c7CiAKICAgICBteSAlYXR0cnMgPSAoKTsKIAotICAgIGZvcmVhY2ggbXkgJHZhbHVlIChz
cGxpdCgvXHMqLFxzKi8sICRzdHIpKSB7Ci0gICAgICAgIChteSAkbmFtZSwgbXkgJHZhbCkgPSBz
cGxpdCgvXHMqPVxzKi8sICR2YWx1ZSwgMik7Ci0KLSAgICAgICAgIyBBdHRyaWJ1dGVzIHdpdGgg
bm8gdmFsdWUgYXJlIHNldCB0byBiZSB0cnVlCi0gICAgICAgICR2YWwgPSAxIHVubGVzcyBkZWZp
bmVkICR2YWw7Ci0gICAgICAgICRhdHRyc3skbmFtZX0gPSAkdmFsOwotICAgICAgICBkaWUoIklu
dmFsaWQgZXh0ZW5kZWQgYXR0cmlidXRlIG5hbWU6ICckbmFtZSdcbiIpIGlmICRuYW1lID1+IC9c
cy87CisgICAgd2hpbGUgKCRzdHIgIX4gL15ccyokLykgeworICAgICAgICAjIFBhcnNlIG5hbWUK
KyAgICAgICAgaWYgKCRzdHIgIX4gL15ccyooW1x3XGRdKykvKSB7CisgICAgICAgICAgICBkaWUo
IkludmFsaWQgZXh0ZW5kZWQgYXR0cmlidXRlOiAnJHN0cidcbiIpOworICAgICAgICB9CisgICAg
ICAgIG15ICRuYW1lID0gJDE7CisgICAgICAgICRzdHIgPX4gcy9eXHMqKFtcd1xkXSspLy87CisK
KyAgICAgICAgaWYgKCRzdHIgPX4gL15ccyo9LykgeworICAgICAgICAgICAgIyBQYXJzZSAnPScg
dmFsdWUgfCAnPScgdmFsdWUgJywnCisgICAgICAgICAgICAkc3RyID1+IHMvXlxzKj0vLzsKKyAg
ICAgICAgICAgIGlmICgkc3RyID1+IC9eXHMqKFteLF0qKSw/LykgeworICAgICAgICAgICAgICAg
ICRhdHRyc3skbmFtZX0gPSAkMTsKKyAgICAgICAgICAgICAgICAkYXR0cnN7JG5hbWV9ID1+IHMv
XiguKj8pXHMqJC8kMS87CisgICAgICAgICAgICAgICAgJHN0ciA9fiBzL15ccyooW14sXSopLD8v
LzsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGllKCJJbnZhbGlkIGV4
dGVuZGVkIGF0dHJpYnV0ZTogJyRzdHInXG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNpZiAoJHN0ciA9fiAvXlxzKlwoLykgeworICAgICAgICAgICAgIyBQYXJzZSAnKCcgYXJndW1l
bnRzICcpJyB8ICcoJyBhcmd1bWVudHMgJyknICcsJworICAgICAgICAgICAgJGF0dHJzeyRuYW1l
fSA9IDE7CisgICAgICAgICAgICAkc3RyID1+IHMvXlxzKlwoLy87CisgICAgICAgICAgICBpZiAo
JHN0ciA9fiAvXihbXildKilcKSw/LykgeworICAgICAgICAgICAgICAgICRhdHRyc3skbmFtZX0g
PSAkMTsKKyAgICAgICAgICAgICAgICAkYXR0cnN7JG5hbWV9ID1+IHMvXiguKj8pXHMqJC8kMS87
CisgICAgICAgICAgICAgICAgJHN0ciA9fiBzL14oW14pXSopXCksPy8vOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaWUoIkludmFsaWQgZXh0ZW5kZWQgYXR0cmlidXRl
OiAnJHN0cidcbiIpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2lmICgkc3RyID1+IC9e
XHMqLD8vKSB7CisgICAgICAgICAgICAjIFBhcnNlICcnIHwgJywnCisgICAgICAgICAgICBpZiAo
JG5hbWUgZXEgIkNvbnN0cnVjdG9yIikgeworICAgICAgICAgICAgICAgICRhdHRyc3skbmFtZX0g
PSAiIjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgJGF0dHJzeyRuYW1l
fSA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAkc3RyID1+IHMvXlxzKiw/Ly87Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkaWUoIkludmFsaWQgZXh0ZW5kZWQgYXR0cmli
dXRlOiAnJHN0cidcbiIpOworICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIFwlYXR0cnM7
CiB9CiAKK3N1YiBwYXJzZVBhcmFtZXRlcnMKK3sKKyAgICBteSAkbmV3RGF0YU5vZGUgPSBzaGlm
dDsKKyAgICBteSAkbWV0aG9kU2lnbmF0dXJlID0gc2hpZnQ7CisKKyAgICAjIFNwbGl0IGFyZ3Vt
ZW50cyBhdCBjb21tYXMgYnV0IG9ubHkgaWYgdGhlIGNvbW1hCisgICAgIyBpcyBub3Qgd2l0aGlu
IGF0dHJpYnV0ZSBicmFja2V0cywgZXhwcmVzc2VkIGhlcmUKKyAgICAjIGFzIGJlaW5nIGZvbGxv
d2VkIGJ5IGEgJ10nIHdpdGhvdXQgYSBwcmVjZWRpbmcgJ1snLgorICAgICMgTm90ZSB0aGF0IHRo
aXMgYXNzdW1lcyB0aGF0IGF0dHJpYnV0ZXMgZG9uJ3QgbmVzdC4KKyAgICBteSBAcGFyYW1zID0g
c3BsaXQoLywoPyFbXltdKlxdKS8sICRtZXRob2RTaWduYXR1cmUpOworICAgIGZvcmVhY2ggKEBw
YXJhbXMpIHsKKyAgICAgICAgbXkgJGxpbmUgPSAkXzsKKworICAgICAgICAkbGluZSA9fiAvJElE
TFN0cnVjdHVyZTo6aW50ZXJmYWNlUGFyYW1ldGVyU2VsZWN0b3IvOworICAgICAgICBteSAkcGFy
YW1EaXJlY3Rpb24gPSAkMTsKKyAgICAgICAgbXkgJHBhcmFtRXh0ZW5kZWRBdHRyaWJ1dGVzID0g
KGRlZmluZWQoJDIpID8gJDIgOiAiICIpOyBjaG9wKCRwYXJhbUV4dGVuZGVkQXR0cmlidXRlcyk7
CisgICAgICAgIG15ICRwYXJhbVR5cGUgPSAoZGVmaW5lZCgkMykgPyAkMyA6IGRpZSgiUGFyc2lu
ZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIikpOworICAgICAgICBteSAkcGFyYW1OYW1lID0g
KGRlZmluZWQoJDQpID8gJDQgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxu
KSIpKTsKKworICAgICAgICBteSAkcGFyYW1EYXRhTm9kZSA9IG5ldyBkb21TaWduYXR1cmUoKTsK
KyAgICAgICAgJHBhcmFtRGF0YU5vZGUtPmRpcmVjdGlvbigkcGFyYW1EaXJlY3Rpb24pOworICAg
ICAgICAkcGFyYW1EYXRhTm9kZS0+bmFtZSgkcGFyYW1OYW1lKTsKKyAgICAgICAgJHBhcmFtRGF0
YU5vZGUtPnR5cGUoJHBhcmFtVHlwZSk7CisgICAgICAgICRwYXJhbURhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMoJHBhcmFtRXh0ZW5kZWRBdHRyaWJ1
dGVzKSk7CisKKyAgICAgICAgbXkgJGFycmF5UmVmID0gJG5ld0RhdGFOb2RlLT5wYXJhbWV0ZXJz
OworICAgICAgICBwdXNoKEAkYXJyYXlSZWYsICRwYXJhbURhdGFOb2RlKTsKKworICAgICAgICBw
cmludCAiICB8ICAgfD4gIFBhcmFtOyBUWVBFIFwiJHBhcmFtVHlwZVwiIE5BTUUgXCIkcGFyYW1O
YW1lXCIiIC4gCisgICAgICAgICAgICBkdW1wRXh0ZW5kZWRBdHRyaWJ1dGVzKCJcbiAgfCAgICAg
ICAgICAgICAgIiwgJHBhcmFtRGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcykgLiAiXG4iIHVu
bGVzcyAkYmVRdWlldDsgICAgICAgICAgCisgICAgfQorfQorCiBzdWIgUGFyc2VJbnRlcmZhY2UK
IHsKICAgICBteSAkb2JqZWN0ID0gc2hpZnQ7CkBAIC0yMjAsNyArMjg3LDE3IEBAIHN1YiBQYXJz
ZUludGVyZmFjZQogCiAgICAgICAgICMgRmlsbCBpbiBrbm93biBwYXJ0cyBvZiB0aGUgZG9tQ2xh
c3MgZGF0YXN0cnVjdHVyZSBub3cuLi4KICAgICAgICAgJGRhdGFOb2RlLT5uYW1lKCRpbnRlcmZh
Y2VOYW1lKTsKLSAgICAgICAgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMocGFyc2VFeHRl
bmRlZEF0dHJpYnV0ZXMoJGludGVyZmFjZUV4dGVuZGVkQXR0cmlidXRlcykpOworICAgICAgICBt
eSAkZXh0ZW5kZWRBdHRyaWJ1dGVzID0gcGFyc2VFeHRlbmRlZEF0dHJpYnV0ZXMoJGludGVyZmFj
ZUV4dGVuZGVkQXR0cmlidXRlcyk7CisgICAgICAgIGlmIChkZWZpbmVkICRleHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ29uc3RydWN0b3IifSkgeworICAgICAgICAgICAgbXkgJG5ld0RhdGFOb2RlID0g
bmV3IGRvbUZ1bmN0aW9uKCk7CisgICAgICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZShu
ZXcgZG9tU2lnbmF0dXJlKCkpOworICAgICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUt
Pm5hbWUoIkNvbnN0cnVjdG9yIik7CisgICAgICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZXMpOworICAgICAgICAgICAg
cGFyc2VQYXJhbWV0ZXJzKCRuZXdEYXRhTm9kZSwgJGV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25z
dHJ1Y3RvciJ9KTsKKyAgICAgICAgICAgICRleHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0
b3IifSA9IDE7CisgICAgICAgICAgICAkZGF0YU5vZGUtPmNvbnN0cnVjdG9yKCRuZXdEYXRhTm9k
ZSk7CisgICAgICAgIH0KKyAgICAgICAgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4
dGVuZGVkQXR0cmlidXRlcyk7CiAKICAgICAgICAgIyBJbmhlcml0YW5jZSBkZXRlY3Rpb24KICAg
ICAgICAgbXkgQGludGVyZmFjZVBhcmVudHMgPSBzcGxpdCgvLC8sICRpbnRlcmZhY2VCYXNlKTsK
QEAgLTI3NCw3ICszNTEsNyBAQCBzdWIgUGFyc2VJbnRlcmZhY2UKICAgICAgICAgICAgICAgICBA
eyRuZXdEYXRhTm9kZS0+Z2V0dGVyRXhjZXB0aW9uc30gPSBzcGxpdCgvLC8sICRnZXR0ZXJFeGNl
cHRpb24pOwogICAgICAgICAgICAgICAgIEB7JG5ld0RhdGFOb2RlLT5zZXR0ZXJFeGNlcHRpb25z
fSA9IHNwbGl0KC8sLywgJHNldHRlckV4Y2VwdGlvbik7CiAgICAgICAgICAgICB9IGVsc2lmICgo
JGxpbmUgIX4gcy9eXHMqJC8vZykgYW5kICgkbGluZSAhfiAvXlxzKmNvbnN0LykpIHsKLSAgICAg
ICAgICAgICAgICAkbGluZSA9fiAvJElETFN0cnVjdHVyZTo6aW50ZXJmYWNlTWV0aG9kU2VsZWN0
b3IvIG9yIGRpZSAiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRsaW5lXG4pIjsKKyAgICAgICAg
ICAgICAgICAkbGluZSA9fiAvJElETFN0cnVjdHVyZTo6aW50ZXJmYWNlTWV0aG9kU2VsZWN0b3Iv
IG9yIGRpZSAibSBQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGxpbmVcbikiOwogCiAgICAgICAg
ICAgICAgICAgbXkgJG1ldGhvZEV4dGVuZGVkQXR0cmlidXRlcyA9IChkZWZpbmVkKCQxKSA/ICQx
IDogIiAiKTsgY2hvcCgkbWV0aG9kRXh0ZW5kZWRBdHRyaWJ1dGVzKTsKICAgICAgICAgICAgICAg
ICBteSAkbWV0aG9kVHlwZSA9IChkZWZpbmVkKCQyKSA/ICQyIDogZGllKCJQYXJzaW5nIGVycm9y
IVxuU291cmNlOlxuJGxpbmVcbikiKSk7CkBAIC0yOTksMzIgKzM3Niw3IEBAIHN1YiBQYXJzZUlu
dGVyZmFjZQogICAgICAgICAgICAgICAgICRtZXRob2RFeGNlcHRpb24gPX4gcy9ccysvL2c7CiAg
ICAgICAgICAgICAgICAgQHskbmV3RGF0YU5vZGUtPnJhaXNlc0V4Y2VwdGlvbnN9ID0gc3BsaXQo
LywvLCAkbWV0aG9kRXhjZXB0aW9uKTsKIAotICAgICAgICAgICAgICAgICMgU3BsaXQgYXJndW1l
bnRzIGF0IGNvbW1hcyBidXQgb25seSBpZiB0aGUgY29tbWEKLSAgICAgICAgICAgICAgICAjIGlz
IG5vdCB3aXRoaW4gYXR0cmlidXRlIGJyYWNrZXRzLCBleHByZXNzZWQgaGVyZQotICAgICAgICAg
ICAgICAgICMgYXMgYmVpbmcgZm9sbG93ZWQgYnkgYSAnXScgd2l0aG91dCBhIHByZWNlZGluZyAn
WycuCi0gICAgICAgICAgICAgICAgIyBOb3RlIHRoYXQgdGhpcyBhc3N1bWVzIHRoYXQgYXR0cmli
dXRlcyBkb24ndCBuZXN0LgotICAgICAgICAgICAgICAgIG15IEBwYXJhbXMgPSBzcGxpdCgvLCg/
IVteW10qXF0pLywgJG1ldGhvZFNpZ25hdHVyZSk7Ci0gICAgICAgICAgICAgICAgZm9yZWFjaChA
cGFyYW1zKSB7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRsaW5lID0gJF87Ci0KLSAgICAgICAg
ICAgICAgICAgICAgJGxpbmUgPX4gLyRJRExTdHJ1Y3R1cmU6OmludGVyZmFjZVBhcmFtZXRlclNl
bGVjdG9yLzsKLSAgICAgICAgICAgICAgICAgICAgbXkgJHBhcmFtRGlyZWN0aW9uID0gJDE7Ci0g
ICAgICAgICAgICAgICAgICAgIG15ICRwYXJhbUV4dGVuZGVkQXR0cmlidXRlcyA9IChkZWZpbmVk
KCQyKSA/ICQyIDogIiAiKTsgY2hvcCgkcGFyYW1FeHRlbmRlZEF0dHJpYnV0ZXMpOwotICAgICAg
ICAgICAgICAgICAgICBteSAkcGFyYW1UeXBlID0gKGRlZmluZWQoJDMpID8gJDMgOiBkaWUoIlBh
cnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kbGluZVxuKSIpKTsKLSAgICAgICAgICAgICAgICAgICAg
bXkgJHBhcmFtTmFtZSA9IChkZWZpbmVkKCQ0KSA/ICQ0IDogZGllKCJQYXJzaW5nIGVycm9yIVxu
U291cmNlOlxuJGxpbmVcbikiKSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgbXkgJHBhcmFtRGF0
YU5vZGUgPSBuZXcgZG9tU2lnbmF0dXJlKCk7Ci0gICAgICAgICAgICAgICAgICAgICRwYXJhbURh
dGFOb2RlLT5kaXJlY3Rpb24oJHBhcmFtRGlyZWN0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAg
JHBhcmFtRGF0YU5vZGUtPm5hbWUoJHBhcmFtTmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgICRw
YXJhbURhdGFOb2RlLT50eXBlKCRwYXJhbVR5cGUpOwotICAgICAgICAgICAgICAgICAgICAkcGFy
YW1EYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVzKCRw
YXJhbUV4dGVuZGVkQXR0cmlidXRlcykpOwotCi0gICAgICAgICAgICAgICAgICAgIG15ICRhcnJh
eVJlZiA9ICRuZXdEYXRhTm9kZS0+cGFyYW1ldGVyczsKLSAgICAgICAgICAgICAgICAgICAgcHVz
aChAJGFycmF5UmVmLCAkcGFyYW1EYXRhTm9kZSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgcHJp
bnQgIiAgfCAgIHw+ICBQYXJhbTsgVFlQRSBcIiRwYXJhbVR5cGVcIiBOQU1FIFwiJHBhcmFtTmFt
ZVwiIiAuIAotICAgICAgICAgICAgICAgICAgICAgICAgZHVtcEV4dGVuZGVkQXR0cmlidXRlcygi
XG4gIHwgICAgICAgICAgICAgICIsICRwYXJhbURhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMp
IC4gIlxuIiB1bmxlc3MgJGJlUXVpZXQ7ICAgICAgICAgIAotICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBwYXJzZVBhcmFtZXRlcnMoJG5ld0RhdGFOb2RlLCAkbWV0aG9kU2lnbmF0
dXJlKTsKIAogICAgICAgICAgICAgICAgIG15ICRhcnJheVJlZiA9ICRkYXRhTm9kZS0+ZnVuY3Rp
b25zOwogICAgICAgICAgICAgICAgIHB1c2goQCRhcnJheVJlZiwgJG5ld0RhdGFOb2RlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMU3RydWN0dXJlLnBt
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUucG0KaW5kZXgg
ZjlkZDRhYi4uNzI3ZTM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9JRExTdHJ1Y3R1cmUucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9JRExTdHJ1Y3R1cmUucG0KQEAgLTQwLDYgKzQwLDcgQEAgc3RydWN0KCBkb21DbGFzcyA9PiB7
CiAgICAgZnVuY3Rpb25zID0+ICdAJywgICAgIyBMaXN0IG9mICdkb21GdW5jdGlvbicKICAgICBh
dHRyaWJ1dGVzID0+ICdAJywgICAgIyBMaXN0IG9mICdkb21BdHRyaWJ1dGUnICAgIAogICAgIGV4
dGVuZGVkQXR0cmlidXRlcyA9PiAnJCcsICMgRXh0ZW5kZWQgYXR0cmlidXRlcworICAgIGNvbnN0
cnVjdG9yID0+ICckJywgIyBDb25zdHJ1Y3RvcgogfSk7CiAKICMgVXNlZCB0byByZXByZXNlbnQg
ZG9tQ2xhc3MgY29udGVudHMgKG5hbWUgb2YgbWV0aG9kLCBzaWduYXR1cmUpCkBAIC04OCw3ICs4
OSw3IEBAIG91ciAkaWRsRGF0YVR5cGUgPSAnW2EtekEtWjAtOVwgXSc7ICAgIyBHZW5lcmljIGRh
dGEgdHlwZSBpZGVudGlmaWVyCiBteSAkc3VwcG9ydGVkVHlwZXMgPSAiKCg/OnVuc2lnbmVkICk/
KD86aW50fHNob3J0fCg/OmxvbmcgKT9sb25nKXwoPzokaWRsSWROcyopKSI7CiAKICMgU3BlY2lh
bCBJREwgbm90YXRpb25zCi1vdXIgJGV4dGVuZGVkQXR0cmlidXRlU3ludGF4ID0gJ1xbW15dXSpc
XSc7ICMgVXNlZCBmb3IgZXh0ZW5kZWQgYXR0cmlidXRlcworb3VyICRleHRlbmRlZEF0dHJpYnV0
ZVN5bnRheCA9IHFyL1xbW15cW1xdXSooPzooPz97JElETFN0cnVjdHVyZTo6ZXh0ZW5kZWRBdHRy
aWJ1dGVTeW50YXh9KVteXFtcXV0qKSpcXS94OyAjIFVzZWQgZm9yIGV4dGVuZGVkIGF0dHJpYnV0
ZXMKIAogIyBSZWd1bGFyIGV4cHJlc3Npb24gYmFzZWQgSURMICdzeW50YWN0aWNhbCB0b2tlbml6
ZXInIHVzZWQgaW4gdGhlIElETFBhcnNlcgogb3VyICRtb2R1bGVTZWxlY3RvciA9ICdtb2R1bGVc
cyooJyAuICRpZGxJZCAuICcqKVxzKnsnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRp
bmcuaAppbmRleCA1MzVkOWMxLi5mODBiOTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEJpbmRpbmcuaApAQCAtMzgyLDEwICszODIsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBvcGVyYXRvciBBdG9taWNTdHJpbmcoKSB7IHJldHVybiB0b1N0cmluZzxBdG9taWNTdHJp
bmc+KCk7IH0KIAogICAgIHByb3RlY3RlZDoKKyAgICAgICAgVjhQYXJhbWV0ZXJCYXNlKCkgeyB9
CiAgICAgICAgIFY4UGFyYW1ldGVyQmFzZSh2ODo6TG9jYWw8djg6OlZhbHVlPiBvYmplY3QpIDog
bV92OE9iamVjdChvYmplY3QpLCBtX21vZGUoRXh0ZXJuYWxpemUpLCBtX3N0cmluZygpIHsgfQog
CiAgICAgICAgIGJvb2wgcHJlcGFyZUJhc2UoKQogICAgICAgICB7CisgICAgICAgICAgICBpZiAo
bV92OE9iamVjdC5Jc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKICAg
ICAgICAgICAgIGlmIChMSUtFTFkobV92OE9iamVjdC0+SXNTdHJpbmcoKSkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTQwMiwxNSArNDA2LDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICAgICAgICAgIGJsb2NrLlJlVGhyb3coKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFRoaXMgcGF0aCBp
cyB1bmV4cGVjdGVkLiAgSG93ZXZlciB0aGVyZSBpcyBoeXBvdGhlc2lzIHRoYXQgaXQKLSAgICAg
ICAgICAgIC8vIG1pZ2h0IGJlIGNvbWJpbmF0aW9uIG9mIHY4IGFuZCB2OCBiaW5kaW5ncyBidWdz
LiAgRm9yIG5vdwotICAgICAgICAgICAgLy8ganVzdCBiYWlsb3V0IGFzIHdlJ2xsIGNyYXNoIGlm
IGF0dGVtcHQgdG8gY29udmVydCBlbXB0eSBoYW5kbGUgaW50byBhIHN0cmluZy4KLSAgICAgICAg
ICAgIGlmIChtX3Y4T2JqZWN0LklzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
IH0KLQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIApAQCAtNDQ3LDYgKzQ0
Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB0ZW1wbGF0ZSA8VjhQYXJhbWV0ZXJNb2Rl
IE1PREUgPSBEZWZhdWx0TW9kZT4KICAgICBjbGFzcyBWOFBhcmFtZXRlcjogcHVibGljIFY4UGFy
YW1ldGVyQmFzZSB7CiAgICAgcHVibGljOgorICAgICAgICBWOFBhcmFtZXRlcigpIDogVjhQYXJh
bWV0ZXJCYXNlKCkgeyB9CiAgICAgICAgIFY4UGFyYW1ldGVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+
IG9iamVjdCkgOiBWOFBhcmFtZXRlckJhc2Uob2JqZWN0KSB7IH0KICAgICAgICAgVjhQYXJhbWV0
ZXIodjg6OkxvY2FsPHY4OjpWYWx1ZT4gb2JqZWN0LCBib29sKSA6IFY4UGFyYW1ldGVyQmFzZShv
YmplY3QpIHsgcHJlcGFyZSgpOyB9CiAKQEAgLTQ2MCw3ICs0NTYsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICB0ZW1wbGF0ZTw+IGlubGluZSBib29sIFY4UGFyYW1ldGVyPFdpdGhOdWxs
Q2hlY2s+OjpwcmVwYXJlKCkKICAgICB7Ci0gICAgICAgIGlmIChvYmplY3QoKS0+SXNOdWxsKCkp
IHsKKyAgICAgICAgaWYgKG9iamVjdCgpLklzRW1wdHkoKSB8fCBvYmplY3QoKS0+SXNOdWxsKCkp
IHsKICAgICAgICAgICAgIHNldFN0cmluZyhTdHJpbmcoKSk7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQpAQCAtNDcwLDcgKzQ2Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgIHRlbXBsYXRlPD4gaW5saW5lIGJvb2wgVjhQYXJhbWV0ZXI8V2l0aFVuZGVmaW5lZE9y
TnVsbENoZWNrPjo6cHJlcGFyZSgpCiAgICAgewotICAgICAgICBpZiAob2JqZWN0KCktPklzTnVs
bCgpIHx8IG9iamVjdCgpLT5Jc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIGlmIChvYmplY3QoKS5J
c0VtcHR5KCkgfHwgb2JqZWN0KCktPklzTnVsbCgpIHx8IG9iamVjdCgpLT5Jc1VuZGVmaW5lZCgp
KSB7CiAgICAgICAgICAgICBzZXRTdHJpbmcoU3RyaW5nKCkpOwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEJpbmRpbmdNYWNyb3MuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEJpbmRpbmdNYWNyb3MuaAppbmRleCBhZDAyYzNlLi41NWU1N2IzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhCaW5kaW5nTWFjcm9zLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmluZGluZ01hY3Jvcy5oCkBA
IC00Miw2ICs0MiwxMSBAQAogICAgIGlmICghdmFyLnByZXBhcmUoKSkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKIAorI2RlZmluZSBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLX1RIUk9X
KHR5cGUsIHZhciwgdmFsdWUsIGVycikgIFwKKyAgICB0eXBlIHZhcih2YWx1ZSk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCF2YXIucHJlcGFy
ZSgpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcihlcnIpOworCiAjZGVmaW5lIFNUUklOR19UT19WOFBBUkFNRVRFUl9F
WENFUFRJT05fQkxPQ0tfVk9JRCh0eXBlLCB2YXIsIHZhbHVlKSBcCiAgICAgdHlwZSB2YXIodmFs
dWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgaWYgKCF2YXIucHJlcGFyZSgpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhFdmVudFNvdXJjZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEV2ZW50U291cmNlQ29uc3RydWN0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMWU5YzQ0Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEV2ZW50U291cmNlQ29uc3RydWN0b3IuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
ICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShFVkVOVFNP
VVJDRSkKLSNpbmNsdWRlICJWOEV2ZW50U291cmNlLmgiCi0KLSNpbmNsdWRlICJFdmVudFNvdXJj
ZS5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVk
ZSAiVjhQcm94eS5oIgotI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiV29ya2Vy
Q29udGV4dC5oIgotI2luY2x1ZGUgIldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEV2ZW50U291cmNl
Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAg
SU5DX1NUQVRTKCJET00uRXZlbnRTb3VyY2UuQ29uc3RydWN0b3IiKTsKLQotICAgIGlmICghYXJn
cy5Jc0NvbnN0cnVjdENhbGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkRPTSBvYmpl
Y3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIsIFY4UHJveHk6
OlR5cGVFcnJvcik7Ci0KLSAgICAvLyBFeHBlY3Qgb25lIHBhcmFtZXRlci4KLSAgICAvLyBBbGxv
Y2F0ZSBhbiBFdmVudFNvdXJjZSBvYmplY3QgYXMgaXRzIGludGVybmFsIGZpZWxkLgotICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiRXZlbnRT
b3VyY2UgY29uc3RydWN0b3IncyBhc3NvY2lhdGVkIGNvbnRleHQgaXMgbm90IGF2YWlsYWJsZSIs
IFY4UHJveHk6OlJlZmVyZW5jZUVycm9yKTsKLSAgICBpZiAoYXJncy5MZW5ndGgoKSAhPSAxKQot
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiTm90IGVub3VnaCBhcmd1bWVudHMiLCBWOFByb3h5
OjpTeW50YXhFcnJvcik7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBTdHJpbmcg
dXJsID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwotCi0gICAgUmVmUHRyPEV2ZW50U291cmNl
PiBldmVudFNvdXJjZSA9IEV2ZW50U291cmNlOjpjcmVhdGUodXJsLCBjb250ZXh0LCBlYyk7Ci0K
LSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVjKTsKLQotICAgIFY4RE9N
V3JhcHBlcjo6c2V0RE9NV3JhcHBlcihhcmdzLkhvbGRlcigpLCAmaW5mbywgZXZlbnRTb3VyY2Uu
Z2V0KCkpOwotCi0gICAgLy8gQWRkIG9iamVjdCB0byB0aGUgd3JhcHBlciBtYXAuCi0gICAgZXZl
bnRTb3VyY2UtPnJlZigpOwotICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yQWN0aXZl
RE9NT2JqZWN0KGV2ZW50U291cmNlLmdldCgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6
TmV3KGFyZ3MuSG9sZGVyKCkpKTsKLSAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEVWRU5UU09VUkNFKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RmlsZVJlYWRlckN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhGaWxlUmVhZGVy
Q3VzdG9tLmNwcAppbmRleCBmYjBkNTNjLi5iNWI1NzQ4IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhGaWxlUmVhZGVyQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhGaWxlUmVhZGVyQ3VzdG9tLmNwcApAQCAt
NDAsMjcgKzQwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhGaWxlUmVhZGVyOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uRmlsZVJlYWRlci5Db25zdHJ1Y3RvciIp
OwotCi0gICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQotICAgICAgICByZXR1cm4gdGhy
b3dFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVu
Y3Rpb24uIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKLQotICAgIC8vIEV4cGVjdCBubyBwYXJhbWV0
ZXJzLgotICAgIC8vIEFsbG9jYXRlIGEgRmlsZVJlYWRlciBvYmplY3QgYXMgaXRzIGludGVybmFs
IGZpZWxkLgotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBnZXRTY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gdGhy
b3dFcnJvcigiRmlsZVJlYWRlciBjb25zdHJ1Y3RvcidzIGFzc29jaWF0ZWQgY29udGV4dCBpcyBu
b3QgYXZhaWxhYmxlIiwgVjhQcm94eTo6UmVmZXJlbmNlRXJyb3IpOwotICAgIFJlZlB0cjxGaWxl
UmVhZGVyPiBmaWxlUmVhZGVyID0gRmlsZVJlYWRlcjo6Y3JlYXRlKGNvbnRleHQpOwotICAgIFY4
RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihhcmdzLkhvbGRlcigpLCAmaW5mbywgZmlsZVJlYWRl
ci5nZXQoKSk7Ci0KLSAgICAvLyBBZGQgb2JqZWN0IHRvIHRoZSB3cmFwcGVyIG1hcC4KLSAgICBm
aWxlUmVhZGVyLT5yZWYoKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckFjdGl2
ZURPTU9iamVjdChmaWxlUmVhZGVyLmdldCgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6
TmV3KGFyZ3MuSG9sZGVyKCkpKTsKLSAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKLX0KLQogdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4RmlsZVJlYWRlcjo6cmVzdWx0QWNjZXNzb3JHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7
CiAgICAgSU5DX1NUQVRTKCJET00uRmlsZVJlYWRlci5yZXN1bHQuX2dldCIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2hhcmVkV29ya2VyQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNoYXJlZFdvcmtlckN1
c3RvbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkNzJjMzcuLjAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2hhcmVkV29ya2VyQ3Vz
dG9tLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgot
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0KLSNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCi0KLSNpbmNsdWRlICJWOFNoYXJlZFdvcmtl
ci5oIgotCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0j
aW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVkZSAiVjhQcm94eS5oIgotI2luY2x1ZGUgIlY4
VXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgotI2luY2x1ZGUgIldvcmtl
ckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOFNoYXJlZFdvcmtlcjo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUyhMIkRPTS5TaGFyZWRXb3Jr
ZXIuQ29uc3RydWN0b3IiKTsKLQotICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJl
IGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIpOwotCi0gICAgaWYgKCFhcmdzLkxlbmd0aCgpKQotICAg
ICAgICByZXR1cm4gdGhyb3dFcnJvcigiTm90IGVub3VnaCBhcmd1bWVudHMiLCBWOFByb3h5OjpT
eW50YXhFcnJvcik7Ci0KLSAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7Ci0gICAgdjg6OkhhbmRs
ZTx2ODo6U3RyaW5nPiBzY3JpcHRVcmwgPSBhcmdzWzBdLT5Ub1N0cmluZygpOwotICAgIFN0cmlu
ZyBuYW1lOwotICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMSkKLSAgICAgICAgbmFtZSA9IHRvV2Vi
Q29yZVN0cmluZyhhcmdzWzFdLT5Ub1N0cmluZygpKTsKLQotICAgIGlmICh0cnlDYXRjaC5IYXND
YXVnaHQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IodHJ5Q2F0Y2guRXhjZXB0aW9uKCkp
OwotCi0gICAgaWYgKHNjcmlwdFVybC5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7Ci0KLSAgICAvLyBHZXQgdGhlIHNjcmlwdCBleGVjdXRpb24gY29udGV4dC4KLSAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKLQotICAgIC8vIENyZWF0ZSB0aGUgU2hhcmVkV29ya2VyIG9iamVjdC4KLSAgICAvLyBOb3Rl
OiBpdCdzIE9LIHRvIGxldCB0aGlzIFJlZlB0ciBnbyBvdXQgb2Ygc2NvcGUgYmVjYXVzZSB3ZSBh
bHNvIGNhbGwgU2V0RE9NV3JhcHBlcigpLCB3aGljaCBlZmZlY3RpdmVseSBob2xkcyBhIHJlZmVy
ZW5jZSB0byBvYmouCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPFNoYXJl
ZFdvcmtlcj4gb2JqID0gU2hhcmVkV29ya2VyOjpjcmVhdGUodG9XZWJDb3JlU3RyaW5nKHNjcmlw
dFVybCksIG5hbWUsIGNvbnRleHQsIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiB0
aHJvd0Vycm9yKGVjKTsKLQotICAgIC8vIFNldHVwIHRoZSBzdGFuZGFyZCB3cmFwcGVyIG9iamVj
dCBpbnRlcm5hbCBmaWVsZHMuCi0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyT2Jq
ZWN0ID0gYXJncy5Ib2xkZXIoKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIod3Jh
cHBlck9iamVjdCwgJmluZm8sIG9iai5nZXQoKSk7Ci0KLSAgICBvYmotPnJlZigpOwotICAgIFY4
RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yQWN0aXZlRE9NT2JqZWN0KG9iai5nZXQoKSwgdjg6
OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyT2JqZWN0KSk7Ci0KLSAgICByZXR1
cm4gd3JhcHBlck9iamVjdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3Iu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTdkMGU4Li4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdENTU01hdHJpeENvbnN0
cnVjdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9u
LgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIlY4V2ViS2l0Q1NTTWF0cml4LmgiCi0KLSNpbmNsdWRlICJEb2N1bWVu
dC5oIgotI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKLSNpbmNsdWRlICJOb2RlLmgiCi0K
LSNpbmNsdWRlICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRlICJWOERvY3VtZW50LmgiCi0jaW5jbHVk
ZSAiVjhOb2RlLmgiCi0jaW5jbHVkZSAiVjhQcm94eS5oIgotCi0jaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdl
YktpdENTU01hdHJpeDo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLldlYktpdENTU01hdHJpeC5Db25zdHJ1Y3RvciIp
OwotCi0gICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQotICAgICAgICByZXR1cm4gdGhy
b3dFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVu
Y3Rpb24uIik7Ci0KLSAgICAvLyBGSVhNRTogVGhlIGxvZ2ljIGhlcmUgaXMgYWxtb3N0IGV4YWN0
IGR1cGxpY2F0ZSBvZiBWODo6Y29uc3RydWN0RE9NT2JqZWN0LgotICAgIC8vIENvbnNpZGVyIHJl
ZmFjdG9yaW5nIHRvIHJlZHVjZSBkdXBsaWNhdGlvbi4KLSAgICBTdHJpbmcgY3NzVmFsdWU7Ci0g
ICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPj0gMSkKLSAgICAgICAgY3NzVmFsdWUgPSB0b1dlYkNvcmVT
dHJpbmcoYXJnc1swXSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8
V2ViS2l0Q1NTTWF0cml4PiBtYXRyaXggPSBXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZShjc3NWYWx1
ZSwgZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgdGhyb3dFcnJvcihlYyk7Ci0KLSAgICAvLyBU
cmFuc2Zvcm0gdGhlIGhvbGRlciBpbnRvIGEgd3JhcHBlciBvYmplY3QgZm9yIHRoZSBtYXRyaXgu
Ci0gICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksICZpbmZvLCBt
YXRyaXguZ2V0KCkpOwotICAgIHJldHVybiB0b1Y4KG1hdHJpeC5yZWxlYXNlKCksIGFyZ3MuSG9s
ZGVyKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcAppbmRleCBmZGM2ODE1
Li4zYTA0MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhXb3JrZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdvcmtlckN1c3RvbS5jcHAKQEAgLTQ3LDQ2ICs0Nyw2IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V29ya2VyOjpjb25zdHJ1Y3RvckNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKEwiRE9NLldv
cmtlci5Db25zdHJ1Y3RvciIpOwotCi0gICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3Qg
YmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIik7Ci0KLSAgICBpZiAoIWFyZ3MuTGVuZ3RoKCkpCi0g
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIsIFY4UHJveHk6
OlN5bnRheEVycm9yKTsKLQotICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsKLSAgICB2ODo6SGFu
ZGxlPHY4OjpTdHJpbmc+IHNjcmlwdFVybCA9IGFyZ3NbMF0tPlRvU3RyaW5nKCk7Ci0gICAgaWYg
KHRyeUNhdGNoLkhhc0NhdWdodCgpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih0cnlDYXRj
aC5FeGNlcHRpb24oKSk7Ci0KLSAgICBpZiAoc2NyaXB0VXJsLklzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLQotICAgIC8vIEdldCB0aGUgc2NyaXB0IGV4ZWN1dGlv
biBjb250ZXh0LgotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBnZXRTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4g
djg6OlVuZGVmaW5lZCgpOwotCi0gICAgLy8gQ3JlYXRlIHRoZSB3b3JrZXIgb2JqZWN0LgotICAg
IC8vIE5vdGU6IGl0J3MgT0sgdG8gbGV0IHRoaXMgUmVmUHRyIGdvIG91dCBvZiBzY29wZSBiZWNh
dXNlIHdlIGFsc28gY2FsbCBzZXRET01XcmFwcGVyKCksIHdoaWNoIGVmZmVjdGl2ZWx5IGhvbGRz
IGEgcmVmZXJlbmNlIHRvIG9iai4KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQ
dHI8V29ya2VyPiBvYmogPSBXb3JrZXI6OmNyZWF0ZSh0b1dlYkNvcmVTdHJpbmcoc2NyaXB0VXJs
KSwgY29udGV4dCwgZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3Io
ZWMpOwotCi0gICAgLy8gU2V0dXAgdGhlIHN0YW5kYXJkIHdyYXBwZXIgb2JqZWN0IGludGVybmFs
IGZpZWxkcy4KLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXJPYmplY3QgPSBhcmdz
LkhvbGRlcigpOwotICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcih3cmFwcGVyT2JqZWN0
LCAmaW5mbywgb2JqLmdldCgpKTsKLQotICAgIG9iai0+cmVmKCk7Ci0gICAgVjhET01XcmFwcGVy
OjpzZXRKU1dyYXBwZXJGb3JBY3RpdmVET01PYmplY3Qob2JqLmdldCgpLCB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0Pjo6TmV3KHdyYXBwZXJPYmplY3QpKTsKLQotICAgIHJldHVybiB3cmFwcGVy
T2JqZWN0OwotfQotCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXI6OnBvc3RNZXNzYWdl
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRP
TS5Xb3JrZXIucG9zdE1lc3NhZ2UiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFhTTFRQcm9jZXNzb3JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4WFNMVFByb2Nlc3NvckN1c3RvbS5jcHAKaW5kZXggYjYyNGZj
Zi4uMWFkNTJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4WFNMVFByb2Nlc3NvckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4WFNMVFByb2Nlc3NvckN1c3RvbS5jcHAKQEAgLTQ2LDEzICs0Niw2IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WFNMVFByb2Nl
c3Nvcjo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewot
ICAgIElOQ19TVEFUUygiRE9NLlhTTFRQcm9jZXNzb3IuQ29uc3RydWN0b3IiKTsKLSAgICByZXR1
cm4gVjhQcm94eTo6Y29uc3RydWN0RE9NT2JqZWN0PFhTTFRQcm9jZXNzb3I+KGFyZ3MsICZpbmZv
KTsKLX0KLQotCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYU0xUUHJvY2Vzc29yOjppbXBvcnRT
dHlsZXNoZWV0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNf
U1RBVFMoIkRPTS5YU0xUUHJvY2Vzc29yLmltcG9ydFN0eWxlc2hlZXQiKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaWRsIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1dlYktpdENTU01hdHJpeC5pZGwKaW5kZXggNzZmZjYwMS4uNTJmZjgxMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5pZGwKQEAgLTMwLDcgKzMwLDkgQEAgbW9kdWxlIGNz
cyB7CiAgICAgICAgIENhbkJlQ29uc3RydWN0ZWQsCiAgICAgICAgIEN1c3RvbUNvbnN0cnVjdEZ1
bmN0aW9uLAogICAgICAgICBDb25zdHJ1Y3RvclBhcmFtZXRlcnM9MSwKLSAgICAgICAgVjhDdXN0
b21Db25zdHJ1Y3RvcgorICAgICAgICBDb25zdHJ1Y3RvcihpbiBbT3B0aW9uYWw9Q2FsbFdpdGhO
dWxsVmFsdWVdIERPTVN0cmluZyBjc3NWYWx1ZSksCisgICAgICAgIENvbnN0cnVjdG9yUmFpc2Vz
RXhjZXB0aW9uLAorICAgICAgICBWOENvbnN0cnVjdG9yU2V0c0RPTVdyYXBwZXIKICAgICBdIFdl
YktpdENTU01hdHJpeCB7CiAKICAgICAgICAgLy8gVGhlc2UgYXR0cmlidXRlcyBhcmUgc2ltcGxl
IGFsaWFzZXMgZm9yIGNlcnRhaW4gZWxlbWVudHMgb2YgdGhlIDR4NCBtYXRyaXgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGVSZWFkZXIuaWRsCmluZGV4IDYxZDVhZmIuLjY1NTdlNTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmlkbApAQCAtMzcsNyArMzcsOCBAQCBtb2R1bGUgaHRt
bCB7CiAgICAgICAgIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiAgICAgICAgIEV2
ZW50VGFyZ2V0LAogICAgICAgICBOb1N0YXRpY1RhYmxlcywKLSAgICAgICAgVjhDdXN0b21Db25z
dHJ1Y3RvcgorICAgICAgICBDb25zdHJ1Y3RvciwKKyAgICAgICAgQ29uc3RydWN0b3JXaXRoPVNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICBdIEZpbGVSZWFkZXIgewogICAgICAgICAvLyByZWFk
eSBzdGF0ZXMKICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgRU1QVFkgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50U291cmNlLmlkbAppbmRleCA0ODMxNWE4Li5hNWQyODMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50U291cmNlLmlkbApAQCAtMzcsNyArMzcsOSBAQCBtb2R1bGUgd2luZG93IHsK
ICAgICAgICAgQ2FuQmVDb25zdHJ1Y3RlZCwKICAgICAgICAgQ3VzdG9tQ29uc3RydWN0RnVuY3Rp
b24sCiAgICAgICAgIENvbnN0cnVjdG9yUGFyYW1ldGVycz0xLAotICAgICAgICBWOEN1c3RvbUNv
bnN0cnVjdG9yLAorICAgICAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgc2NyaXB0VXJsKSwK
KyAgICAgICAgQ29uc3RydWN0b3JXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCisgICAgICAg
IENvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uLAogICAgICAgICBFdmVudFRhcmdldCwKICAgICAg
ICAgTm9TdGF0aWNUYWJsZXMKICAgICBdIEV2ZW50U291cmNlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvU2hhcmVkV29ya2VyLmlkbAppbmRleCA1MmIwMmM3Li5jNzk5YWQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuaWRsCkBAIC0zNyw3ICszNyw5IEBAIG1vZHVsZSB0aHJl
YWRzIHsKICAgICAgICAgQ2FuQmVDb25zdHJ1Y3RlZCwKICAgICAgICAgQ3VzdG9tQ29uc3RydWN0
RnVuY3Rpb24sCiAgICAgICAgIENvbnN0cnVjdG9yUGFyYW1ldGVycz0yLAotICAgICAgICBWOEN1
c3RvbUNvbnN0cnVjdG9yLAorICAgICAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgc2NyaXB0
VXJsLCBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhOdWxsVmFsdWVdIERPTVN0cmluZyBuYW1lKSwKKyAg
ICAgICAgQ29uc3RydWN0b3JXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCisgICAgICAgIENv
bnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uLAogICAgICAgICBDdXN0b21NYXJrRnVuY3Rpb24sCiAg
ICAgICAgIEdlbmVyYXRlTmF0aXZlQ29udmVydGVyLAogICAgICAgICBHZW5lcmF0ZVRvSlMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyLmlkbAppbmRleCA3NjM3NTY5Li5kZDViNzdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXIuaWRsCkBAIC0zMiwxMyArMzIsMTcgQEAgbW9kdWxlIHRocmVhZHMgewog
ICAgICAgICBDYW5CZUNvbnN0cnVjdGVkLAogICAgICAgICBDdXN0b21Db25zdHJ1Y3RGdW5jdGlv
biwKICAgICAgICAgQ29uc3RydWN0b3JQYXJhbWV0ZXJzPTEsCi0gICAgICAgIFY4Q3VzdG9tQ29u
c3RydWN0b3IsCisgICAgICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyBzY3JpcHRVcmwpLAor
ICAgICAgICBDb25zdHJ1Y3RvcldpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKKyAgICAgICAg
Q29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24sCiAgICAgICAgIEdlbmVyYXRlTmF0aXZlQ29udmVy
dGVyLAogICAgICAgICBHZW5lcmF0ZVRvSlMKICAgICBdIFdvcmtlciA6IEFic3RyYWN0V29ya2Vy
IHsKIAogICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm1lc3NhZ2U7CiAKKyAgICAg
ICAgLy92b2lkIHRlc3RNZXRob2QoaW4gU3RyaW5nIHNzc3NzcykgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CisKICNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pBVkFT
Q1JJUFQKICAgICAgICAgW0N1c3RvbV0gdm9pZCBwb3N0TWVzc2FnZShpbiBTZXJpYWxpc2VkU2Ny
aXB0VmFsdWUgbWVzc2FnZSwgaW4gW09wdGlvbmFsXSBBcnJheSBtZXNzYWdlUG9ydHMpCiAgICAg
ICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YU0xUUHJvY2Vzc29yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29y
LmlkbAppbmRleCBkYWM0YjIxLi5lYTllNjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWFNMVFByb2Nlc3Nvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNz
b3IuaWRsCkBAIC0zNiw3ICszNiw4IEBAIG1vZHVsZSB4bWwgewogICAgICAgICBDb25kaXRpb25h
bD1YU0xULAogICAgICAgICBDYW5CZUNvbnN0cnVjdGVkLAogICAgICAgICBDdXN0b21Db25zdHJ1
Y3RGdW5jdGlvbiwKLSAgICAgICAgVjhDdXN0b21Db25zdHJ1Y3RvcgorICAgICAgICBDb25zdHJ1
Y3RvciwKKyAgICAgICAgVjhDb25zdHJ1Y3RvclNldHNET01XcmFwcGVyCiAgICAgXSBYU0xUUHJv
Y2Vzc29yIHsKICAgICAgICAgCiAgICAgICAgIFtDdXN0b21dIHZvaWQgaW1wb3J0U3R5bGVzaGVl
dChpbiBOb2RlIHN0eWxlc2hlZXQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109583</attachid>
            <date>2011-10-03 23:19:47 -0700</date>
            <delta_ts>2011-10-07 06:02:14 -0700</delta_ts>
            <desc>Hey! WIP patch for JSC!</desc>
            <filename>bug-65839-20111004151946.patch</filename>
            <type>text/plain</type>
            <size>117583</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY1NzEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGZk
NGFhYjMxYzM2MTE2MTlkNDI3Yjk4OGIyNmNlZjZlZWNmMmU5MjQuLmVlNWFiNDY1MzdiMjFkNGE1
ZDA1ODE2N2Q5NTY5ZjY3ODY0MWRiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI0IEBACisyMDExLTEwLTAzICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBJbXBsZW1lbnQgW0NvbnN0cnVjdG9yXSBJREwgZm9yIEpTQworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU4MzkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHksIEpTQzo6
SlNWYWx1ZTo6dG9TdHJpbmcoKSBjcmFzaGVzIHdoZW4gd2UgcGFzcyBpdCBhbiBlbXB0eSBKU1Zh
bHVlLgorICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIGEgY2hhbmdlIHNvIHRoYXQgSlNDOjpKU1Zh
bHVlOjp0b1N0cmluZygpIHJldHVybnMgVVN0cmluZygpCisgICAgICAgIHdoZW4gdGhlIGVtcHR5
IEpTVmFsdWUgaXMgcGFzc2VkLgorCisgICAgICAgIFRlc3RzOiB0cmFuc2Zvcm1zL3N2Zy12cy1j
c3MueGh0bWwKKyAgICAgICAgICAgICAgIHRyYW5zZm9ybXMvY3NzbWF0cml4LTJkLWludGVyZmFj
ZS54aHRtbAorICAgICAgICAgICAgICAgdHJhbnNmb3Jtcy9jc3NtYXRyaXgtM2QtaW50ZXJmYWNl
LnhodG1sCisKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0M6OkpT
VmFsdWU6OnRvU3RyaW5nKTogUmV0dXJucyBVU3RyaW5nKCkgaWYgSlNWYWx1ZSBpcyBlbXB0eS4K
KyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWVJ
bmxpbmVNZXRob2RzLmg6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmlzRW1wdHkpOiBKdWRnZXMg
aWYgYSBnaXZlbiBKU1ZhbHVlIGlzIGVtcHR5IG9yIG5vdC4KKwogMjAxMS0xMC0wMyAgRmlsaXAg
UGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBzaG91bGQgaW5saW5lIEFy
cmF5LnB1c2ggYW5kIEFycmF5LnBvcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nLmgKaW5kZXggMWFjODRmNDkzNGMwNzVhMzJjZWJiYzQzNGI5MTdhNjc1MzFlMGRjZi4uNzYz
ZDJlYjZkMjE0YzlmYjBkNjk4MjA2ODY5ZDU0MDIzY2E4OTFiNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC03MDUsNiArNzA1LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBpbmxpbmUgVVN0cmluZyBKU1ZhbHVlOjp0b1N0cmluZyhFeGVjU3RhdGUqIGV4
ZWMpIGNvbnN0CiAgICAgeworICAgICAgICBpZiAoaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0
dXJuIFVTdHJpbmcoKTsKICAgICAgICAgaWYgKGlzU3RyaW5nKCkpCiAgICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPihhc0NlbGwoKSktPnZhbHVlKGV4ZWMpOwogICAgICAg
ICBpZiAoaXNJbnQzMigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCmlu
ZGV4IGNkODM4NGMyZDg3YzU2MDNhMzFlNzdjYWFjMDkwODFlZTQ3NmYyNzYuLjRiNjBkMTI0NWE2
ZDM0Njc0OWZjODVhYzk1MGZiZjUwMDc0NjYzNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1ZhbHVlLmgKQEAgLTE1OSw2ICsxNTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgZG91YmxlIGFzRG91YmxlKCkgY29uc3Q7CiAKICAgICAgICAgLy8gUXVlcnlpbmcgdGhlIHR5
cGUuCisgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogICAgICAgICBib29sIGlzVW5kZWZp
bmVkKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CiAgICAgICAgIGJvb2wg
aXNVbmRlZmluZWRPck51bGwoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFsdWVJbmxpbmVNZXRob2RzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1ZhbHVlSW5saW5lTWV0aG9kcy5oCmluZGV4IDAzNmViYmFiYmQ1N2MxOWMx
ZjFlZjg0ZmNlMTNlZDkwMjU0YjgxZGMuLjFiNTAyNjI1ZWM2OGEzYWEzY2M0N2ZhMDdlMzNlODhi
ODdiODZhMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFs
dWVJbmxpbmVNZXRob2RzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNW
YWx1ZUlubGluZU1ldGhvZHMuaApAQCAtMjU1LDYgKzI1NSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgcmV0dXJuIHUuYXNJbnQ2NCAhPSBvdGhlci51LmFzSW50NjQ7CiAgICAgfQogCisg
ICAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNFbXB0eSgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gdGFnKCkgPT0gRW1wdHlWYWx1ZVRhZzsKKyAgICB9CisKICAgICBpbmxpbmUgYm9vbCBK
U1ZhbHVlOjppc1VuZGVmaW5lZCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gdGFnKCkg
PT0gVW5kZWZpbmVkVGFnOwpAQCAtNDAwLDYgKzQwNSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgcmV0dXJuIHUucHRyICE9IG90aGVyLnUucHRyOwogICAgIH0KIAorICAgIGlubGluZSBi
b29sIEpTVmFsdWU6OmlzRW1wdHkoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHUuYXNJ
bnQ2NCA9PSBWYWx1ZUVtcHR5OworICAgIH0KKwogICAgIGlubGluZSBib29sIEpTVmFsdWU6Omlz
VW5kZWZpbmVkKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBhc1ZhbHVlKCkgPT0ganNV
bmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxYzA3YzFlMTQ0ZWNlYWY2ZWIwYzA1MDNiZTcyZThl
MTBjOWUyZGZjLi44YzE3MzdiZDQyNmY2Y2Q0NzQxYmYzNGQxZjE4ZjIyZmZkMGZjODNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMyIEBACisyMDExLTEwLTAzICBLZW50YXJvIEhhcmEgIDxoYXJh
a2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgW0NvbnN0cnVjdG9yXSBJREwg
Zm9yIEpTQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjU4MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGUgc3BlYyBmb3IgW0NvbnN0cnVjdG9yXSBJREwgaXMgaGVyZTogaHR0cDovL3d3dy53My5vcmcv
VFIvV2ViSURMLyNDb25zdHJ1Y3RvcgorCisgICAgICAgIFsxXSBJbnRyb2R1Y2VkIFtDb25zdHJ1
Y3Rvcl0gSURMIGZvciBKU0MuCisKKyAgICAgICAgWzJdIEFkZGVkICdDb25zdHJ1Y3RvcldpdGg9
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCcgZm9yIEpTQy4KKyAgICAgICAgLSBTY3JpcHRFeGVjdXRp
b25Db250ZXh0IGlzIHBhc3NlZCB0byBhIFhYWDo6Y3JlYXRlKCkgbWV0aG9kLAorICAgICAgICBs
aWtlIFhYWDo6Y3JlYXRlKC4uLiwgY29udGV4dCwgLi4uKS4KKyAgICAgICAgLSBXZSBkZXByZWNh
dGVkICdDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0JyBmb3IgY29uc3RydWN0b3JzCisg
ICAgICAgIHNpbmNlIGl0IGhhcyB0aGUgc2FtZSBtZWFuaW5nIGFzICdDb25zdHJ1Y3RvcldpdGg9
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCcuCisKKyAgICAgICAgWzNdIEFkZGVkICdDb25zdHJ1Y3Rv
clJhaXNlc0V4Y2VwdGlvbicgZm9yIEpTQy4KKyAgICAgICAgLSBBIHBsYWNlaG9sZGVyIGZvciBF
eGNlcHRpb25Db2RlIGlzIHBhc3NlZCB0byBhIFhYWDo6Y3JlYXRlKCkgbWV0aG9kLAorICAgICAg
ICBsaWtlIFhYWDo6Y3JlYXRlKC4uLiwgZWMpLgorICAgICAgICAtIFdlIGNhbiB1c2UgJ0NvbnN0
cnVjdG9yUmFpc2VzRXhjZXB0aW9uJyBhbmQgJ0NvbnN0cnVjdG9yV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0JyB0b2dldGhlci4KKworICAgICAgICBOb3RlczoKKyAgICAgICAgLSBXZSBkbyBu
b3QgeWV0IHN1cHBvcnQgY29uc3RydWN0b3Igb3ZlcmxvYWRpbmcuCisgICAgICAgIC0gV2UgZG8g
bm90IHlldCBzdXBwb3J0IFtPcHRpb25hbF0gd2l0aG91dCBDYWxsV2l0aERlZmF1bHRWYWx1ZSBu
b3IgQ2FsbFdpdGhOdWxsVmFsdWUKKyAgICAgICAgZm9yIGNvbnN0cnVjdG9yIGFyZ3VtZW50cy4K
KworICAgICAgICBUZXN0czogZmFzdC9kb20vV2luZG93L2N1c3RvbS1jb25zdHJ1Y3RvcnMuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L3hzbC94c2x0LXByb2Nlc3Nvci5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2V2ZW50c291cmNlL2V2ZW50c291cmNlLWNvbnN0cnVjdG9yLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvZXZlbnRzb3VyY2UvZXZlbnRzb3VyY2UtYXR0cmlidXRlLWxpc3RlbmVycy5odG1s
CisgICAgICAgICAgICAgICB0cmFuc2Zvcm1zL3N2Zy12cy1jc3MueGh0bWwKKyAgICAgICAgICAg
ICAgIHRyYW5zZm9ybXMvY3NzbWF0cml4LTJkLWludGVyZmFjZS54aHRtbAorICAgICAgICAgICAg
ICAgdHJhbnNmb3Jtcy9jc3NtYXRyaXgtM2QtaW50ZXJmYWNlLnhodG1sCisgICAgICAgICAgICAg
ICBmYXN0L2RvbS9YTUxIdHRwUmVxdWVzdC1jb25zdGFudHMuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9kb20veG1saHR0cHJlcXVlc3QtY29uc3RydWN0b3ItaW4tZGV0YWNoZWQtZG9jdW1lbnQu
aHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9jb29raWVzL3htbGh0dHBy
ZXF1ZXN0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZmlsZXMvZmlsZS1yZWFkZXItYWJvcnQu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC9maWxlcy9ibG9iLXNsaWNlLXRlc3QuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0Lmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1uby13cmFwcGVyLmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy5odG1sCisKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6IFJlbW92ZWQgSlNFdmVudFNvdXJjZUN1c3RvbS5jcHAgYW5kIEpTV2Vi
S2l0Q1NTTWF0cml4Q3VzdG9tLmNwcC4KKyAgICAgICAgKiBXZWJDb3JlLnBybzogRGl0dG8uCisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDogTUFZQkVfTUlTU0lOR19QQVJBTUVURVIo
ZXhlYywgaW5kZXgsIHBvbGljeSkgcmV0dXJucyB0aGUgaW5kZXgtdGggcGFyYW1ldGVyLCBpZiB0
aGUgcGFyYW1ldGVyIGV4aXN0cy4gSXQgcmV0dXJucyBhbiB1bmRlZmluZWQgdmFsdWUsIGlmIHRo
ZSBpbmRleC10aCBwYXJhbWV0ZXIgaXMgbWlzc2luZyBhbmQgdGhlIHBvbGljeSBpcyBNaXNzaW5n
SXNVbmRlZmluZWQuIEl0IHJldHVybnMgYW4gZW1wdHkgdmFsdWUsIG90aGVyd2lzZSAoaS5lLiBp
ZiB0aGUgaW5kZXgtdGggcGFyYW1ldGVyIGlzIG1pc3NpbmcgYW5kIHRoZSBwb2xpY3kgaXMgTWlz
c2luZ0lzRW1wdHkpLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRTb3VyY2VDdXN0b20u
Y3BwOiBSZW1vdmVkIHRoaXMgZmlsZS4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lc3NhZ2VD
aGFubmVsQ3VzdG9tLmNwcDogUmVtb3ZlZCBhIGN1c3RvbSBjb25zdHJ1Y3Rvci4KKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1dlYktpdENTU01hdHJpeEN1c3RvbS5jcHA6IFJlbW92ZWQgdGhpcyBm
aWxlLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwOiBS
ZW1vdmVkIGEgY3VzdG9tIGNvbnN0cnVjdG9yLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTWFNM
VFByb2Nlc3NvckN1c3RvbS5jcHA6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtOiBEaXR0by4KKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKTogR2Vu
ZXJhdGVzIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uIGNvZGUgdG8gYSBoZWFkZXIgZmlsZSwgaWYg
YSBnaXZlbiBET00gb2JqZWN0IGhhcyBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKEdlbmVyYXRlSW1w
bGVtZW50YXRpb24pOiBVc2VzIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjaygpIGFuZCBHZW5l
cmF0ZVBhcmFtZXRlcnNDaGVjaygpLgorICAgICAgICAoR2VuZXJhdGVBcmd1bWVudHNDb3VudENo
ZWNrKTogU3BsaXRzIG91dCBvZiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uKCkgZm9yIHJldXNlLgor
ICAgICAgICAoR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2spOiBTcGxpdHMgb3V0IG9mIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24oKSBmb3IgcmV1c2UuIEFjY2Vzc2VzIHBhcmFtZXRlcnMgdXNpbmcgTUFZ
QkVfTUlTU0lOR19QQVJBTUVURVIoKSBtYWNybywgaW5zdGVhZCBvZiBleGVjLT5hcmd1bWVudChp
bmRleCkuCisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbik6IEdlbmVyYXRl
cyBjb25zdHJ1Y3RvciBkZWZpbml0aW9uIGNvZGUuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKTog
RGVwcmVjYXRlcyAnQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCcuCisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0SW50ZXJm
YWNlKTogVXBkYXRlZCB0aGUgcnVuLWJpbmRpbmctdGVzdHMgcmVzdWx0cy4KKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmg6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKTog
RGl0dG8uCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kKTogRGl0dG8uCisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3Rvcjo6
Y3JlYXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6IERpdHRvLgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RXaXRoQXJncyk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25JbnRNZXRo
b2QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
SW50TWV0aG9kV2l0aEFyZ3MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZFdpdGhBcmdzKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJlc0Fs
bEFyZ3MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TZXJpYWxpemVkVmFsdWUpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uSWRiS2V5KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wdGlv
bnNPYmplY3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0b21BcmdzQW5kRXhjZXB0aW9uKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVu
ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
UmVtb3ZlRXZlbnRMaXN0ZW5lcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoRHluYW1pY0ZyYW1lKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWVBbmRBcmcpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aER5
bmFtaWNGcmFtZUFuZE9wdGlvbmFsQXJnKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZSk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRHlu
YW1pY0ZyYW1lQW5kVXNlckdlc3R1cmVBU0FEKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZVZvaWQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRl
T2JqKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bldpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZyk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9u
YWxBcmdBbmRPcHRpb25hbEFyZyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFy
Z3MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aENhbGxiYWNrQXJnKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJn
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1l
dGhvZDIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ29uZGl0aW9uYWxNZXRob2QzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QyKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
ZWRNZXRob2QzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q1KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9k
V2l0aE9wdGlvbmFsKTogRGl0dG8uCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqQ29uc3RydWN0b3I6OmNy
ZWF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqQ29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZSk6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZUNvbnN0cnVjdG9yOjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1
cmUpOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEludGVyZmFj
ZS5pZGw6IERlcHJlY2F0ZXMgJ0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQnLgorICAg
ICAgICAqIGNzcy9XZWJLaXRDU1NNYXRyaXguaWRsOiBNYWtlcyBXZWJLaXRDU1NNYXRyaXggY29u
c3RydWN0aWJsZS4KKyAgICAgICAgKiBkb20vTWVzc2FnZUNoYW5uZWwuaWRsOiBNYWtlcyBNZXNz
YWdlQ2hhbm5lbCBjb25zdHJ1Y3RpYmxlLgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlci5p
ZGw6IERlcHJlY2F0ZXMgJ0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQnLgorICAgICAg
ICAqIHBhZ2UvRXZlbnRTb3VyY2UuaWRsOiBNYWtlcyBFdmVudFNvdXJjZSBjb25zdHJ1Y3RpYmxl
LgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5oOgorICAgICAgICAqIHhtbC9YTUxIdHRw
UmVxdWVzdC5pZGw6IE1ha2VzIFhNTEh0dHBSZXF1ZXN0IGNvbnN0cnVjdGlibGUuCisgICAgICAg
ICogeG1sL1hTTFRQcm9jZXNzb3IuaWRsOiBNYWtlcyBYU0xUUHJvY2Vzc29yIGNvbnN0cnVjdGli
bGUuCisKIDIwMTEtMDktMjcgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBHZW5lcmF0ZSBhIFNoYXJlZFdvcmtlciBjb25zdHJ1Y3RvciBvZiBWOCB1c2luZyB0
aGUgSURMICdDb25zdHJ1Y3RvcicgZXh0ZW5kZWQgYXR0cmlidXRlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5k
ZXggNmFkYWYxYTIzYTEyMWExYWUwYzM1YWEzNjQ2NGZhMzkzZjY5YjRhZS4uOTNjNzI4YzhmMDMx
NzAyM2IyM2ZiODdiZGM3Y2JmM2FiZTIwNjdlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTgyOCw3
ICsxODI4LDYgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmgnLAotICAgICAgICAgICAgJ2JpbmRp
bmdzL2pzL0pTRXZlbnRTb3VyY2VDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9q
cy9KU0V2ZW50VGFyZ2V0LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNFdmVudFRh
cmdldC5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0V4Y2VwdGlvbkJhc2UuY3BwJywK
QEAgLTE5MjQsNyArMTkyMyw2IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNXZWJLaXRB
bmltYXRpb25MaXN0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNXZWJL
aXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9K
U1dlYktpdENTU0tleWZyYW1lc1J1bGVDdXN0b20uY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU1dlYktpdENTU01hdHJpeEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L2pzL0pTV2ViS2l0UG9pbnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9K
U1dlYlNvY2tldEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTV29ya2Vy
Q29udGV4dEJhc2UuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJv
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggYTAyODQxMzU2NDM0ZWVmMGVlZTIw
NWI4NjQ3ZTUyNTI3ODlhNmE1My4uNmQxMmE4NzAxMGMxYTU0YzY2ZWM4YjU4NmM3MTBiMzhkMzgw
MTBiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTI3Myw3ICsyNzMsNiBAQCB2OCB7CiAgICAgICAgIGJp
bmRpbmdzL2pzL0pTRXZlbnRDb25zdHJ1Y3RvcnMuY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMv
SlNFdmVudEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIu
Y3BwIFwKLSAgICAgICAgYmluZGluZ3MvanMvSlNFdmVudFNvdXJjZUN1c3RvbS5jcHAgXAogICAg
ICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pz
L0pTRXhjZXB0aW9uQmFzZS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0ZpbGVSZWFkZXJD
dXN0b20uY3BwIFwKQEAgLTM0MCw3ICszMzksNiBAQCB2OCB7CiAgICAgICAgIGJpbmRpbmdzL2pz
L0pTV2ViS2l0QW5pbWF0aW9uTGlzdEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9K
U1dlYktpdENTU0tleWZyYW1lUnVsZUN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9K
U1dlYktpdENTU0tleWZyYW1lc1J1bGVDdXN0b20uY3BwIFwKLSAgICAgICAgYmluZGluZ3MvanMv
SlNXZWJLaXRDU1NNYXRyaXhDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNXZWJL
aXRQb2ludEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0
Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RVcGxvYWRD
dXN0b20uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBjNTU1MjgyMWIxYTZiODBkZGZiZjVkMWZiZGE4N2RiMzEwMDNjOTBm
Li44ZGU1OTRmOTM2NmQ3YTExMzViYzA1YTUyOGJiYzg4MDMzN2M4OWQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00OTM1LDgg
KzQ5MzUsNiBAQAogCQlCQzI3NEIyRjE0MEVCRUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VT
bGljZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzI3NEIyRTE0MEVCRUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmgg
Ki87IH07CiAJCUJDMjc0QjMxMTQwRUJFRDgwMEVBREZBNiAvKiBDU1NCb3JkZXJJbWFnZVNsaWNl
VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkMyNzRCMzAxNDBFQkVEODAwRUFERkE2IC8qIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5jcHAg
Ki87IH07CiAJCUJDMjc1Qjc5MTFDNUQxQzMwMEM5MjA2QyAvKiBKU1dlYktpdFBvaW50Q3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjc1
Qjc4MTFDNUQxQzMwMEM5MjA2QyAvKiBKU1dlYktpdFBvaW50Q3VzdG9tLmNwcCAqLzsgfTsKLQkJ
QkMyNzVCN0QxMUM1RDIzNTAwQzkyMDZDIC8qIEpTV2ViS2l0Q1NTTWF0cml4Q3VzdG9tLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjc1QjdDMTFD
NUQyMzUwMEM5MjA2QyAvKiBKU1dlYktpdENTU01hdHJpeEN1c3RvbS5jcHAgKi87IH07Ci0JCUJD
Mjc1QjgxMTFDNUQyQjQwMEM5MjA2QyAvKiBKU0V2ZW50U291cmNlQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjc1QjgwMTFDNUQyQjQw
MEM5MjA2QyAvKiBKU0V2ZW50U291cmNlQ3VzdG9tLmNwcCAqLzsgfTsKIAkJQkMyNzVDQjMxMUM1
RTg1QzAwQzkyMDZDIC8qIEpTQXJyYXlCdWZmZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNzVDQjIxMUM1RTg1QzAwQzkyMDZDIC8q
IEpTQXJyYXlCdWZmZXJDdXN0b20uY3BwICovOyB9OwogCQlCQzJDQkY0RTE0MEYxQUJEMDAzODc5
QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkMyQ0JGNEIxNDBGMUE2NTAwMzg3OUJFIC8qIEpTV2ViR0xDb250
ZXh0RXZlbnQuaCAqLzsgfTsKIAkJQkMyQ0JGN0IxNDBGMUQ1ODAwMzg3OUJFIC8qIEpTV2ViR0xD
b250ZXh0RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMyQ0JGN0ExNDBGMUQ1ODAwMzg3OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuY3Bw
ICovOyB9OwpAQCAtMTE2NzUsOCArMTE2NzMsNiBAQAogCQlCQzI3NEIyRTE0MEVCRUIyMDBFQURG
QTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQzI3NEIzMDE0MEVCRUQ4MDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGlj
ZVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU0JvcmRl
ckltYWdlU2xpY2VWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMjc1
Qjc4MTFDNUQxQzMwMEM5MjA2QyAvKiBKU1dlYktpdFBvaW50Q3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViS2l0UG9pbnRDdXN0b20uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzI3NUI3QzExQzVEMjM1MDBDOTIwNkMgLyogSlNX
ZWJLaXRDU1NNYXRyaXhDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNXZWJLaXRDU1NNYXRyaXhDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlCQzI3NUI4MDExQzVEMkI0MDBDOTIwNkMgLyogSlNFdmVudFNvdXJjZUN1c3RvbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0V2ZW50U291cmNlQ3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyNzVDQjIxMUM1RTg1QzAw
QzkyMDZDIC8qIEpTQXJyYXlCdWZmZXJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNBcnJheUJ1ZmZlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDMkNCRjRCMTQwRjFBNjUwMDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR0xDb250ZXh0RXZl
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyQ0JGN0ExNDBGMUQ1ODAwMzg3
OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNXZWJHTENvbnRleHRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xODc4NCw3ICsxODc4MCw2IEBACiAJCQkJODkzQzQ3Q0ExMjNFRUJBMjAwMkIz
RDg2IC8qIEpTRW50cnlDdXN0b20uY3BwICovLAogCQkJCTg5M0M0ODUyMTI0OTlCMDYwMDJCM0Q4
NiAvKiBKU0VudHJ5U3luY0N1c3RvbS5jcHAgKi8sCiAJCQkJQkNFRkFGNEQwQzMxN0U2OTAwRkE4
MUY2IC8qIEpTRXZlbnRDdXN0b20uY3BwICovLAotCQkJCUJDMjc1QjgwMTFDNUQyQjQwMEM5MjA2
QyAvKiBKU0V2ZW50U291cmNlQ3VzdG9tLmNwcCAqLywKIAkJCQkyRTc1ODJFRDEyNzY0RjI2MDA2
MjYyOEIgLyogSlNGaWxlUmVhZGVyQ3VzdG9tLmNwcCAqLywKIAkJCQk0OUVFQ0Y3MjEwNTA4RDlD
MDAwOTlGQUIgLyogSlNGbG9hdDMyQXJyYXlDdXN0b20uY3BwICovLAogCQkJCTZFQkM1RDg0MTM4
QjRDRTAwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheUN1c3RvbS5jcHAgKi8sCkBAIC0xODg2MSw3
ICsxODg1Niw2IEBACiAJCQkJMzE5NDYyMzExMzAyMkY2NTAwNEJCM0Y4IC8qIEpTV2ViS2l0QW5p
bWF0aW9uTGlzdEN1c3RvbS5jcHAgKi8sCiAJCQkJRTFBRDE0QzQxMjk3MzU0OTAwQUNBOTg5IC8q
IEpTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlQ3VzdG9tLmNwcCAqLywKIAkJCQlFMUFEMTRCNDEyOTcz
NENBMDBBQ0E5ODkgLyogSlNXZWJLaXRDU1NLZXlmcmFtZXNSdWxlQ3VzdG9tLmNwcCAqLywKLQkJ
CQlCQzI3NUI3QzExQzVEMjM1MDBDOTIwNkMgLyogSlNXZWJLaXRDU1NNYXRyaXhDdXN0b20uY3Bw
ICovLAogCQkJCUJDMjc1Qjc4MTFDNUQxQzMwMEM5MjA2QyAvKiBKU1dlYktpdFBvaW50Q3VzdG9t
LmNwcCAqLywKIAkJCQk1MThBMzRDNjEwMjZDOEM5MDAxQjY4OTYgLyogSlNXZWJTb2NrZXRDdXN0
b20uY3BwICovLAogCQkJCUUxODI1OEFCMEVGM0NENzAwMDkzMzI0MiAvKiBKU1dvcmtlckNvbnRl
eHRDdXN0b20uY3BwICovLApAQCAtMjUwMzksNyArMjUwMzMsNiBAQAogCQkJCUJDNjBEOUJGMEQy
QTI2OUEwMEI5OTE4RiAvKiBKU0V2ZW50RXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTkzQjcwRDY5MDlFQjBDN0MwMDlEODQ2OCAvKiBKU0V2ZW50TGlzdGVuZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTBGRUYzNzJCNDdDNTNFQUMxQzFGQkVFIC8qIEpTRXZlbnRTb3VyY2UuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJQkMyNzVCODExMUM1RDJCNDAwQzkyMDZDIC8qIEpTRXZlbnRT
b3VyY2VDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2MDkwMjAwRTkxQjhFQzAwMEM2
OEI1IC8qIEpTRXZlbnRUYXJnZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzMxNEFDRUIxMDg5
MjA4NjAwMEYwRTU2IC8qIEpTRXhjZXB0aW9uQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
QzAwRjAxNDBFMEExODk1MDBGRDA0RTMgLyogSlNGaWxlLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MjU0ODIsNyArMjU0NzUsNiBAQAogCQkJCTMxNkZFMDczMEU2Q0NCRUUwMEJGNjA4OCAvKiBKU1dl
YktpdENTU0tleWZyYW1lc1J1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFBRDE0QjUxMjk3
MzRDQTAwQUNBOTg5IC8qIEpTV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZUN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0OTgzOTEzRjBGMUU3Njc1MDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRy
aXguY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQkMyNzVCN0QxMUM1RDIzNTAwQzkyMDZDIC8qIEpT
V2ViS2l0Q1NTTWF0cml4Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxNjExRTVBMEUx
QzRERTAwMEY2QTU3OSAvKiBKU1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTg5ODc4NUI0MTIyQ0EyQTcwMDNBQUJEQSAvKiBKU1dlYktpdEZsYWdzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTkzRjFENUMwMTJENTMzNTYwMDgzMkJFQyAvKiBKU1dlYktpdExv
c2VDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuaAppbmRleCA3ODBjNjM4MzY2NGEyYjk2NWY5NmY2OTUzMGE2NDE4Njg2MmJm
MTM1Li4yMjhiM2M2NmVjNGU1YmM3M2Y2ZDIzYmZkZWVhZjIzMDAyYTQ3M2EzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtMzcsNiArMzcsMTMgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitlbnVtIFBhcmFtZXRlck1pc3NpbmdQb2xpY3kgeworICAg
IE1pc3NpbmdJc1VuZGVmaW5lZCwKKyAgICBNaXNzaW5nSXNFbXB0eQorfTsKKworI2RlZmluZSBN
QVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCBpbmRleCwgcG9saWN5KSAoKChwb2xpY3kpID09
IE1pc3NpbmdJc0VtcHR5ICYmIChpbmRleCkgPj0gKGV4ZWMpLT5hcmd1bWVudENvdW50KCkpID8g
KEpTVmFsdWUoKSkgOiAoKGV4ZWMpLT5hcmd1bWVudChpbmRleCkpKQorCiAgICAgY2xhc3MgRnJh
bWU7CiAgICAgY2xhc3MgS1VSTDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNFdmVudFNvdXJjZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0V2ZW50U291cmNlQ3VzdG9tLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NjYxYzNkZTU3N2JhMWYyNWZiNzA5YjVjOGRkZWQ3N2MxODZmN2VjMC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0V2ZW50U291cmNlQ3VzdG9tLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiAgICBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0gKiAgICBkaXN0cmlidXRpb24uCi0gKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29u
IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotICogICAgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCi0gKiAgICBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU0V2ZW50U291cmNlLmgiCi0KLSNp
bmNsdWRlICJFdmVudFNvdXJjZS5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSA8cnVudGltZS9FcnJvci5o
PgotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNFdmVudFNvdXJjZUNvbnN0cnVjdG9yOjpjb25zdHJ1
Y3RKU0V2ZW50U291cmNlKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVU
eXBlRXJyb3IoZXhlYywgIk5vdCBlbm91Z2ggYXJndW1lbnRzIikpOwotCi0gICAgVVN0cmluZyB1
cmwgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKTsKLSAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsK
LQotICAgIEpTRXZlbnRTb3VyY2VDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9ICBzdGF0aWNf
Y2FzdDxKU0V2ZW50U291cmNlQ29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7Ci0gICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGpzQ29uc3RydWN0b3ItPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgIkV2ZW50U291cmNlIGNvbnN0
cnVjdG9yIGFzc29jaWF0ZWQgZG9jdW1lbnQgaXMgdW5hdmFpbGFibGUiKSk7Ci0KLSAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8RXZlbnRTb3VyY2U+IGV2ZW50U291cmNlID0g
RXZlbnRTb3VyY2U6OmNyZWF0ZSh1c3RyaW5nVG9TdHJpbmcodXJsKSwgY29udGV4dCwgZWMpOwot
ICAgIGlmIChlYykgewotICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2Jh
bE9iamVjdCgpLCBldmVudFNvdXJjZS5yZWxlYXNlKCkpKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2Fn
ZUNoYW5uZWxDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdl
Q2hhbm5lbEN1c3RvbS5jcHAKaW5kZXggOGEwNDdhMTIwNjkxMjY5YjVhYzI3ODdkY2JiZGY4NzU1
YmQzM2QxOS4uYmVlYTMyZTVjNGNmYThhYTI2YWE1Y2IzYjc2NTdiMGZkNDk3OTUzYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlQ2hhbm5lbEN1c3Rv
bS5jcHAKQEAgLTQ4LDE0ICs0OCw0IEBAIHZvaWQgSlNNZXNzYWdlQ2hhbm5lbDo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgICAgICB2aXNpdG9y
LmFkZE9wYXF1ZVJvb3QocG9ydCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SlNNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU01lc3NhZ2VDaGFubmVsKEV4
ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU01lc3NhZ2VDaGFubmVsQ29uc3RydWN0b3IqIGpzQ29u
c3RydWN0b3IgPSBzdGF0aWNfY2FzdDxKU01lc3NhZ2VDaGFubmVsQ29uc3RydWN0b3IqPihleGVj
LT5jYWxsZWUoKSk7Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGpzQ29u
c3RydWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoIWNvbnRleHQpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhl
YywgIk1lc3NhZ2VDaGFubmVsIGNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZG9jdW1lbnQgaXMgdW5h
dmFpbGFibGUiKSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMo
ZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIE1lc3NhZ2VDaGFubmVsOjpjcmVh
dGUoY29udGV4dCkpKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0Q1NTTWF0cml4Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0Q1NTTWF0cml4Q3VzdG9tLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGNmZGRhMzgyNmFmYjg5NjE0MzlkMDBiODc5
YTVkNGU4NmNmNmNkNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdENTU01hdHJpeEN1c3RvbS5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJK
U1dlYktpdENTU01hdHJpeC5oIgotCi0jaW5jbHVkZSAiV2ViS2l0Q1NTTWF0cml4LmgiCi0KLXVz
aW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RK
U1dlYktpdENTU01hdHJpeChFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNXZWJLaXRDU1NNYXRy
aXhDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IHN0YXRpY19jYXN0PEpTV2ViS2l0Q1NTTWF0
cml4Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7Ci0gICAgU3RyaW5nIHM7Ci0gICAgaWYg
KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAxKQotICAgICAgICBzID0gdXN0cmluZ1RvU3RyaW5n
KGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpKTsKLSAgICAKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBtYXRyaXggPSBXZWJLaXRD
U1NNYXRyaXg6OmNyZWF0ZShzLCBlYyk7Ci0gICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKENSRUFURV9ET01fV1JBUFBFUihleGVjLCBqc0Nv
bnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgV2ViS2l0Q1NTTWF0cml4LCBtYXRyaXguZ2V0KCkp
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAppbmRleCA2MmY2MTY5OThh
OGU3OGZjZTgwYjhkZTAyODRkMDcxODhlYzI2MDNkLi4wNzhiNGI1MDY3NGVkMDNiMTgyMmM3NTFk
Y2U2ZDVhNzFkYzdhMzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcApAQCAtMjAzLDE1ICsyMDMsNCBAQCBKU1ZhbHVl
IEpTWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBK
U1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTWE1MSHR0cFJlcXVlc3QoRXhl
Y1N0YXRlKiBleGVjKQotewotICAgIEpTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3RvcioganNDb25z
dHJ1Y3RvciA9IHN0YXRpY19jYXN0PEpTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvcio+KGV4ZWMt
PmNhbGxlZSgpKTsKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0ganNDb25z
dHJ1Y3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmICghY29udGV4dCkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVj
LCAiWE1MSHR0cFJlcXVlc3QgY29uc3RydWN0b3IgYXNzb2NpYXRlZCBkb2N1bWVudCBpcyB1bmF2
YWlsYWJsZSIpKTsKLQotICAgIFJlZlB0cjxYTUxIdHRwUmVxdWVzdD4geG1sSHR0cFJlcXVlc3Qg
PSBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVj
dCgpLCBYTUxIdHRwUmVxdWVzdCwgeG1sSHR0cFJlcXVlc3QuZ2V0KCkpKTsKLX0KLQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
WFNMVFByb2Nlc3NvckN1c3RvbS5jcHAKaW5kZXggYWVkN2NkZDljNzFhOTlhNTI3YzM0MjcwYzU4
YWVjMWUyYThlMjgwMS4uZTY2OTMwM2UwMTgzODFhNTlmYWUwMDUwYjE4MzYwNzRkN2EzZWYwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JD
dXN0b20uY3BwCkBAIC0xMTYsMTIgKzExNiw2IEBAIEpTVmFsdWUgSlNYU0xUUHJvY2Vzc29yOjpy
ZW1vdmVQYXJhbWV0ZXIoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTWFNMVFByb2Nlc3NvckNvbnN0
cnVjdG9yOjpjb25zdHJ1Y3RKU1hTTFRQcm9jZXNzb3IoRXhlY1N0YXRlKiBleGVjKQotewotICAg
IEpTWFNMVFByb2Nlc3NvckNvbnN0cnVjdG9yKiBqc0NvbnN0cnVjdG9yID0gc3RhdGljX2Nhc3Q8
SlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywganNDb25zdHJ1Y3Rvci0+
Z2xvYmFsT2JqZWN0KCksIFhTTFRQcm9jZXNzb3IsIFhTTFRQcm9jZXNzb3I6OmNyZWF0ZSgpLmdl
dCgpKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShY
U0xUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQppbmRleCAwYWU3ZTJjNGY3NGYzZWQ1ZjE4YTQxMGEyNDZkNTQ3YWRmNmFmNTY5Li45
NzUxZjhmYTViMDc2ZGU1MzdiZWE4ZWZiZmU2ZDVkZTlmZDhjMmE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTA3MCwx
MiArMTA3MCwxMSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICJ9O1xuXG4iKTsKIAotICAgICMgQ29uZGl0aW9uYWxseSBlbWl0IHRoZSBjb25zdHJ1Y3Rv
ciBvYmplY3QncyBkZWNsYXJhdGlvbgotICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDdXN0b21Db25zdHJ1Y3RGdW5jdGlvbiJ9KSB7CisgICAgaWYgKCRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0cnVjdEZ1bmN0aW9uIn0gfHwgISgkZGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPbWl0Q29uc3RydWN0b3IifSB8fCAkZGF0YU5v
ZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Db25zdHJ1Y3RvciJ9KSkgeworICAgICAg
ICAkaGVhZGVySW5jbHVkZXN7IkpTRE9NQmluZGluZy5oIn0gPSAxOwogICAgICAgICBHZW5lcmF0
ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24oXEBoZWFkZXJDb250ZW50LCAkY2xhc3NOYW1lLCAkZGF0
YU5vZGUpOwogICAgIH0KIAotCiAgICAgaWYgKCRudW1GdW5jdGlvbnMgPiAwKSB7CiAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsIi8vIEZ1bmN0aW9uc1xuXG4iKTsKICAgICAgICAgZm9yZWFj
aCBteSAkZnVuY3Rpb24gKEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9KSB7CkBAIC0xMzYzLDggKzEz
NjIsNiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29tcGlsZVRpbWVDaGVja0ZvckVudW1zSWZO
ZWVkZWQoJGRhdGFOb2RlKSk7CiAKICAgICAgICAgbXkgJHByb3RvQ2xhc3NOYW1lID0gIiR7Y2xh
c3NOYW1lfVByb3RvdHlwZSI7Ci0KLSAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0
aW9uKFxAaW1wbENvbnRlbnQsICRjbGFzc05hbWUsICRkYXRhTm9kZSkgdW5sZXNzICRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0cnVjdEZ1bmN0aW9uIn07CiAgICAg
ICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKFxAaW1wbENvbnRlbnQsICRjbGFzc05h
bWUsICRwcm90b0NsYXNzTmFtZSwgJGludGVyZmFjZU5hbWUsICR2aXNpYmxlQ2xhc3NOYW1lLCAk
ZGF0YU5vZGUpOwogICAgIH0KIApAQCAtMTk5NiwzMyArMTk5Myw3IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICRzdmdQcm9wZXJ0eVR5cGUmIHBvZEltcCA9IGltcC0+cHJvcGVydHlSZWZlcmVuY2UoKTtcbiIp
OwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIG15ICRudW1QYXJhbWV0ZXJz
ID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OwotCi0gICAgICAgICAgICAgICAgbXkgJHJlcXVp
cmVzQWxsQXJndW1lbnRzOwotICAgICAgICAgICAgICAgIG15ICRyZXF1aXJlc0FsbEFyZ3VtZW50
c0RlZmF1bHQgPSAiIjsKLSAgICAgICAgICAgICAgICBpZiAoISRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkxlZ2FjeURlZmF1bHRPcHRpb25hbEFyZ3VtZW50cyJ9KSB7Ci0gICAgICAg
ICAgICAgICAgICAgICRyZXF1aXJlc0FsbEFyZ3VtZW50c0RlZmF1bHQgPSAiUmFpc2UiOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAkcmVxdWlyZXNBbGxBcmd1bWVudHMgPSAk
ZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJlcXVpcmVzQWxsQXJn
dW1lbnRzIn0gfHwgJHJlcXVpcmVzQWxsQXJndW1lbnRzRGVmYXVsdDsKLSAgICAgICAgICAgICAg
ICBpZiAoJHJlcXVpcmVzQWxsQXJndW1lbnRzKSB7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRu
dW1NYW5kYXRvcnlQYXJhbXMgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307Ci0gICAgICAgICAg
ICAgICAgICAgIGZvcmVhY2ggbXkgJHBhcmFtIChyZXZlcnNlKEB7JGZ1bmN0aW9uLT5wYXJhbWV0
ZXJzfSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcGFyYW0tPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJPcHRpb25hbCJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJG51
bU1hbmRhdG9yeVBhcmFtcy0tOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0OwotICAgICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmICgkbnVtTWFu
ZGF0b3J5UGFyYW1zID4gMCkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQo
KSA8ICRudW1NYW5kYXRvcnlQYXJhbXMpXG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICgkcmVxdWlyZXNBbGxBcmd1bWVudHMgZXEgIlJhaXNlIikgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBcIk5vdCBlbm91Z2ggYXJndW1lbnRzXCIpKTtc
biIpOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIEdl
bmVyYXRlQXJndW1lbnRzQ291bnRDaGVjayhcQGltcGxDb250ZW50LCAkZnVuY3Rpb24sICRkYXRh
Tm9kZSk7CiAKICAgICAgICAgICAgICAgICBpZiAoQHskZnVuY3Rpb24tPnJhaXNlc0V4Y2VwdGlv
bnN9KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwO1xuIik7CkBAIC0yMDM5LDE1MSArMjAxMCw4IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGZ1bmN0aW9uLT5zaWdu
YXR1cmUtPm5hbWUgZXEgInJlbW92ZUV2ZW50TGlzdGVuZXIiKSB7CiAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUV2ZW50TGlzdGVuZXJDYWxsKCRjbGFzc05h
bWUsICJyZW1vdmUiKSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgbXkgJGFyZ3NJbmRleCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRwYXJhbUlu
ZGV4ID0gMDsKLSAgICAgICAgICAgICAgICAgICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0gKCgkc3Zn
UHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUgYW5kICEkc3ZnTGlzdFByb3BlcnR5VHlwZSkgPyAi
cG9kSW1wLiIgOiAiaW1wLT4iKSAuICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSAuICIoIjsK
LSAgICAgICAgICAgICAgICAgICAgbXkgJGhhc09wdGlvbmFsQXJndW1lbnRzID0gMDsKLQotICAg
ICAgICAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDdXN0b21Bcmd1bWVudEhhbmRsaW5nIn0pIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFJlZlB0cjxTY3JpcHRBcmd1bWVudHM+IHNjcmlw
dEFyZ3VtZW50cyhjcmVhdGVTY3JpcHRBcmd1bWVudHMoZXhlYywgJG51bVBhcmFtZXRlcnMpKTtc
biIpOwotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc2l6
ZV90IG1heFN0YWNrU2l6ZSA9IGltcC0+c2hvdWxkQ2FwdHVyZUZ1bGxTdGFja1RyYWNlKCkgPyBT
Y3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUgOiAxO1xuIik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBSZWZQdHI8U2NyaXB0
Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKGV4ZWMsIG1heFN0YWNr
U2l6ZSkpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJTY3Jp
cHRBcmd1bWVudHMuaCJ9ID0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVk
ZXN7IlNjcmlwdENhbGxTdGFjay5oIn0gPSAxOwotICAgICAgICAgICAgICAgICAgICAgICAgJGlt
cGxJbmNsdWRlc3siU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIn0gPSAxOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgbXkgJGNhbGxXaXRoID0gJGZ1bmN0aW9u
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9OwotICAgICAgICAg
ICAgICAgICAgICBpZiAoJGNhbGxXaXRoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBteSAk
Y2FsbFdpdGhBcmcgPSAiQ09NUElMRV9BU1NFUlQoZmFsc2UpIjsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICgkY2FsbFdpdGggZXEgIkR5bmFtaWNGcmFtZSIpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBGcmFtZSogZHluYW1pY0ZyYW1l
ID0gdG9EeW5hbWljRnJhbWUoZXhlYyk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIWR5bmFtaWNGcmFtZSlcbiIpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJGNhbGxXaXRoQXJnID0gImR5bmFtaWNGcmFtZSI7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2lmICgkY2FsbFdpdGggZXEgIlNjcmlwdFN0YXRlIikgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICRjYWxsV2l0aEFyZyA9ICJleGVjIjsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzaWYgKCRjYWxsV2l0aCBlcSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dCIp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gc3RhdGljX2Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBpZiAoIXNjcmlwdENvbnRleHQpXG4iKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICRj
YWxsV2l0aEFyZyA9ICJzY3JpcHRDb250ZXh0IjsgCi0gICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gIiwgIiBpZiAkcGFy
YW1JbmRleDsKLSAgICAgICAgICAgICAgICAgICAgICAgICRmdW5jdGlvblN0cmluZyAuPSAkY2Fs
bFdpdGhBcmc7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1JbmRleCsrOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRXhj
ZXB0aW9uQ29kZS5oIn0gPSAxOwotICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJK
U0RPTUJpbmRpbmcuaCJ9ID0gMTsKLSAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkcGFy
YW1ldGVyIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICMgT3B0aW9uYWwgY2FsbGJhY2tzIHNob3VsZCBiZSB0cmVhdGVkIGRpZmZlcmVudGx5LCBi
ZWNhdXNlIHRoZXkgYWx3YXlzIGhhdmUgYSBkZWZhdWx0IHZhbHVlICgwKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICMgYW5kIHdlIGNhbiByZWR1Y2UgdGhlIG51bWJlciBvZiBvdmVybG9hZGVk
IGZ1bmN0aW9ucyB0aGF0IHRha2UgYSBkaWZmZXJlbnQgbnVtYmVyIG9mIHBhcmFtZXRlcnMuCi0g
ICAgICAgICAgICAgICAgICAgICAgICAjIE9wdGlvbmFsIGFyZ3VtZW50cyB3aXRoIGRlZmF1bHQg
dmFsdWVzIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gc2hvdWxkIG5vdCBnZW5lcmF0
ZSBhbiBlYXJseSBjYWxsLgotICAgICAgICAgICAgICAgICAgICAgICAgbXkgJG9wdGlvbmFsID0g
JHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9wdGlvbmFsIn07ICAgICAgICAKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgkb3B0aW9uYWwgJiYgJG9wdGlvbmFsIG5lICJDYWxs
V2l0aERlZmF1bHRWYWx1ZSIgJiYgISRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
YWxsYmFjayJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBHZW5lcmF0ZSBlYXJs
eSBjYWxsIGlmIHRoZXJlIGFyZSBlbm91Z2ggcGFyYW1ldGVycy4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoISRoYXNPcHRpb25hbEFyZ3VtZW50cykgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuICAgIHNpemVfdCBhcmdzQ291
bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJGhhc09wdGlvbmFsQXJndW1lbnRzID0gMTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgaWYgKGFyZ3NDb3VudCA8PSAkYXJnc0luZGV4KSB7XG4iKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKCRmdW5jdGlv
biwgJGZ1bmN0aW9uU3RyaW5nLCAkcGFyYW1JbmRleCwgIiAgICAiIHggMiwgJHN2Z1Byb3BlcnR5
VHlwZSwgJGltcGxDbGFzc05hbWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIH1cblxuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICAgICAgICAgICAgIG15ICRuYW1lID0gJHBhcmFtZXRlci0+bmFtZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG15ICRhcmdUeXBlID0gJGNvZGVHZW5lcmF0b3ItPlN0cmlw
TW9kdWxlKCRwYXJhbWV0ZXItPnR5cGUpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
JGFyZ1R5cGUgZXEgIlhQYXRoTlNSZXNvbHZlciIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBSZWZQdHI8WFBhdGhOU1Jlc29sdmVyPiBjdXN0
b21SZXNvbHZlcjtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIFhQYXRoTlNSZXNvbHZlciogcmVzb2x2ZXIgPSB0b1hQYXRoTlNSZXNvbHZl
cihleGVjLT5hcmd1bWVudCgkYXJnc0luZGV4KSk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXJlc29sdmVyKSB7XG4iKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgY3Vz
dG9tUmVzb2x2ZXIgPSBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6Y3JlYXRlKGV4ZWMsIGV4ZWMt
PmFyZ3VtZW50KCRhcmdzSW5kZXgpKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpXG4i
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4iKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmVzb2x2
ZXIgPSBjdXN0b21SZXNvbHZlci5nZXQoKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNpZiAoJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxiYWNrIn0p
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkY2FsbGJhY2tDbGFzc05hbWUgPSBH
ZXRDYWxsYmFja0NsYXNzTmFtZSgkYXJnVHlwZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJGltcGxJbmNsdWRlc3siJGNhbGxiYWNrQ2xhc3NOYW1lLmgifSA9IDE7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJP
cHRpb25hbCJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIFJlZlB0cjwkYXJnVHlwZT4gJG5hbWU7XG4iKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKSA+ICRhcmdzSW5kZXggJiYgIWV4ZWMtPmFyZ3VtZW50KCRhcmdzSW5kZXgpLmlz
VW5kZWZpbmVkT3JOdWxsKCkpIHtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgkYXJnc0lu
ZGV4KS5pc09iamVjdCgpKSB7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQ
RV9NSVNNQVRDSF9FUlIpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgfVxuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAkbmFtZSA9ICR7Y2FsbGJhY2tDbGFzc05h
bWV9OjpjcmVhdGUoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoJGFyZ3NJbmRleCkpLCBjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8PSAkYXJnc0luZGV4IHx8
ICFleGVjLT5hcmd1bWVudCgkYXJnc0luZGV4KS5pc09iamVjdCgpKSB7XG4iKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNldERP
TUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7XG4iKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFJlZlB0cjwkYXJnVHlwZT4g
JG5hbWUgPSAke2NhbGxiYWNrQ2xhc3NOYW1lfTo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMtPmFyZ3Vt
ZW50KCRhcmdzSW5kZXgpKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpO1xuIik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIElmIHRoZSAiU3RyaWN0VHlwZUNoZWNr
aW5nIiBleHRlbmRlZCBhdHRyaWJ1dGUgaXMgcHJlc2VudCwgYW5kIHRoZSBhcmd1bWVudCdzIHR5
cGUgaXMgYW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGludGVyZmFjZSB0eXBlLCB0
aGVuIGlmIHRoZSBpbmNvbWluZyB2YWx1ZSBkb2VzIG5vdCBpbXBsZW1lbnQgdGhhdCBpbnRlcmZh
Y2UsIGEgVHlwZUVycm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpcyB0aHJvd24g
cmF0aGVyIHRoYW4gc2lsZW50bHkgcGFzc2luZyBOVUxMIHRvIHRoZSBDKysgY29kZS4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjIFBlciB0aGUgV2ViIElETCBhbmQgRUNNQVNjcmlwdCBz
ZW1hbnRpY3MsIGluY29taW5nIHZhbHVlcyBjYW4gYWx3YXlzIGJlIGNvbnZlcnRlZCB0byBib3Ro
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzdHJpbmdzIGFuZCBudW1iZXJzLCBzbyBk
byBub3QgdGhyb3cgVHlwZUVycm9yIGlmIHRoZSBhcmd1bWVudCBpcyBvZiB0aGVzZSB0eXBlcy4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJTdHJpY3RUeXBlQ2hlY2tpbmcifSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyI8cnVudGltZS9FcnJvci5oPiJ9ID0g
MTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkYXJnVmFsdWUgPSAiZXhl
Yy0+YXJndW1lbnQoJGFyZ3NJbmRleCkiOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIUlzTmF0aXZlVHlwZSgkYXJnVHlwZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChleGVjLT5hcmd1bWVudENv
dW50KCkgPiAkYXJnc0luZGV4ICYmICEke2FyZ1ZhbHVlfS5pc1VuZGVmaW5lZE9yTnVsbCgpICYm
ICEke2FyZ1ZhbHVlfS5pbmhlcml0cygmSlMke2FyZ1R5cGV9OjpzX2luZm8pKVxuIik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7XG4iKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICIgLiBHZXROYXRp
dmVUeXBlRnJvbVNpZ25hdHVyZSgkcGFyYW1ldGVyKSAuICIgJG5hbWUoIiAuIEpTVmFsdWVUb05h
dGl2ZSgkcGFyYW1ldGVyLCAiZXhlYy0+YXJndW1lbnQoJGFyZ3NJbmRleCkiKSAuICIpO1xuIik7
Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIElmIGEgcGFyYW1ldGVyIGlzICJhbiBp
bmRleCIgYW5kIGl0J3MgbmVnYXRpdmUgaXQgc2hvdWxkIHRocm93IGFuIElOREVYX1NJWkVfRVJS
IGV4Y2VwdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEJ1dCB0aGlzIG5lZWRz
IHRvIGJlIGRvbmUgaW4gdGhlIGJpbmRpbmdzLCBiZWNhdXNlIHRoZSB0eXBlIGlzIHVuc2lnbmVk
IGFuZCB0aGUgZmFjdCB0aGF0IGl0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3YXMg
bmVnYXRpdmUgd2lsbCBiZSBsb3N0IGJ5IHRoZSB0aW1lIHdlJ3JlIGluc2lkZSB0aGUgRE9NLgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiSXNJbmRleCJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGlmICgkbmFtZSA8IDApIHtcbiIpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc2V0RE9NRXhj
ZXB0aW9uKGV4ZWMsIElOREVYX1NJWkVfRVJSKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENoZWNrIGlmIHRoZSB0eXBl
IGNvbnZlcnNpb24gc3VjY2VlZGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSlcbiIpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7Ci0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCRh
cmdUeXBlKSBhbmQgbm90ICRpbXBsQ2xhc3NOYW1lID1+IC9MaXN0JC8pIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCEkbmFtZSkg
e1xuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpO1xuIik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICIsICIgaWYgJHBh
cmFtSW5kZXg7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkYXJnVHlwZSBlcSAiTm9k
ZUZpbHRlciIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25TdHJpbmcg
Lj0gIiRuYW1lLmdldCgpIjsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRjb2Rl
R2VuZXJhdG9yLT5Jc1NWR1R5cGVOZWVkaW5nVGVhck9mZigkYXJnVHlwZSkgYW5kIG5vdCAkaW1w
bENsYXNzTmFtZSA9fiAvTGlzdCQvKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZ1
bmN0aW9uU3RyaW5nIC49ICIkbmFtZS0+cHJvcGVydHlSZWZlcmVuY2UoKSI7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmdW5j
dGlvblN0cmluZyAuPSAkbmFtZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICRhcmdzSW5kZXgrKzsKLSAgICAgICAgICAgICAgICAgICAgICAgICRw
YXJhbUluZGV4Kys7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAg
ICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOZWVkc1Vz
ZXJHZXN0dXJlQ2hlY2sifSkgewotICAgICAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uU3Ry
aW5nIC49ICIsICIgaWYgJHBhcmFtSW5kZXg7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkZnVu
Y3Rpb25TdHJpbmcgLj0gIlNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgp
IjsKLSAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbUluZGV4Kys7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJTY3JpcHRDb250cm9sbGVyLmgifSA9IDE7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIlxuIik7CisgICAgICAgICAgICAgICAgICAgIG15ICRudW1QYXJhbWV0ZXJzID0gQHskZnVu
Y3Rpb24tPnBhcmFtZXRlcnN9OworICAgICAgICAgICAgICAgICAgICBteSAoJGZ1bmN0aW9uU3Ry
aW5nLCAkcGFyYW1JbmRleCkgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayhcQGltcGxDb250ZW50
LCAkZnVuY3Rpb24sICRkYXRhTm9kZSwgJG51bVBhcmFtZXRlcnMsICRpbXBsQ2xhc3NOYW1lLCAk
ZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUsICRzdmdQcm9wZXJ0eVR5cGUsICRzdmdQcm9wZXJ0
eU9yTGlzdFByb3BlcnR5VHlwZSwgJHN2Z0xpc3RQcm9wZXJ0eVR5cGUpOwogICAgICAgICAgICAg
ICAgICAgICBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKCRmdW5jdGlvbiwgJGZ1
bmN0aW9uU3RyaW5nLCAkcGFyYW1JbmRleCwgIiAgICAiLCAkc3ZnUHJvcGVydHlUeXBlLCAkaW1w
bENsYXNzTmFtZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjM3OCw2
ICsyMjA2LDIwOCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIHB1c2goQGltcGxD
b250ZW50LCAiXG4jZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRp
b25hbFN0cmluZzsKIH0KIAorc3ViIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjaworeworICAg
IG15ICRvdXRwdXRBcnJheSA9IHNoaWZ0OworICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0OworICAg
IG15ICRkYXRhTm9kZSA9IHNoaWZ0OworCisgICAgbXkgJHJlcXVpcmVzQWxsQXJndW1lbnRzOwor
ICAgIG15ICRyZXF1aXJlc0FsbEFyZ3VtZW50c0RlZmF1bHQgPSAiIjsKKyAgICBpZiAoISRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkxlZ2FjeURlZmF1bHRPcHRpb25hbEFyZ3VtZW50
cyJ9KSB7CisgICAgICAgICRyZXF1aXJlc0FsbEFyZ3VtZW50c0RlZmF1bHQgPSAiUmFpc2UiOwor
ICAgIH0KKyAgICAkcmVxdWlyZXNBbGxBcmd1bWVudHMgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJlcXVpcmVzQWxsQXJndW1lbnRzIn0gfHwgJHJlcXVpcmVz
QWxsQXJndW1lbnRzRGVmYXVsdDsKKyAgICBpZiAoJHJlcXVpcmVzQWxsQXJndW1lbnRzKSB7Cisg
ICAgICAgIG15ICRudW1NYW5kYXRvcnlQYXJhbXMgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307
CisgICAgICAgIGZvcmVhY2ggbXkgJHBhcmFtIChyZXZlcnNlKEB7JGZ1bmN0aW9uLT5wYXJhbWV0
ZXJzfSkpIHsKKyAgICAgICAgICAgIGlmICgkcGFyYW0tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJP
cHRpb25hbCJ9KSB7CisgICAgICAgICAgICAgICAgJG51bU1hbmRhdG9yeVBhcmFtcy0tOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBsYXN0OworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGlmICgkbnVtTWFuZGF0b3J5UGFyYW1zID49IDEpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDwgJG51bU1hbmRhdG9yeVBhcmFtcylcbiIpOworICAgICAgICAgICAgaWYgKCRy
ZXF1aXJlc0FsbEFyZ3VtZW50cyBlcSAiUmFpc2UiKSB7CisgICAgICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5
cGVFcnJvcihleGVjLCBcIk5vdCBlbm91Z2ggYXJndW1lbnRzXCIpKTtcbiIpOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4iKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgXG4iKTsK
K30KKworc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCit7CisgICAgbXkgJG91dHB1dEFycmF5
ID0gc2hpZnQ7CisgICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CisgICAgbXkgJGRhdGFOb2RlID0g
c2hpZnQ7CisgICAgbXkgJG51bVBhcmFtZXRlcnMgPSBzaGlmdDsKKyAgICBteSAkaW1wbENsYXNz
TmFtZSA9IHNoaWZ0OworICAgIG15ICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSA9IHNoaWZ0
OworICAgIG15ICRzdmdQcm9wZXJ0eVR5cGUgPSBzaGlmdDsKKyAgICBteSAkc3ZnUHJvcGVydHlP
ckxpc3RQcm9wZXJ0eVR5cGUgPSBzaGlmdDsKKyAgICBteSAkc3ZnTGlzdFByb3BlcnR5VHlwZSA9
IHNoaWZ0OworCisgICAgbXkgJHBhcmFtSW5kZXggPSAwOworICAgIG15ICRhcmdzSW5kZXggPSAw
OworICAgIG15ICRoYXNPcHRpb25hbEFyZ3VtZW50cyA9IDA7CisKKyAgICBteSAkZnVuY3Rpb25T
dHJpbmcgPSAoKCRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSBhbmQgISRzdmdMaXN0UHJv
cGVydHlUeXBlKSA/ICJwb2RJbXAuIiA6ICJpbXAtPiIpIC4gJGZ1bmN0aW9uSW1wbGVtZW50YXRp
b25OYW1lIC4gIigiOworCisgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ3VzdG9tQXJndW1lbnRIYW5kbGluZyJ9KSB7CisgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBzY3JpcHRBcmd1bWVudHMo
Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGV4ZWMsICRudW1QYXJhbWV0ZXJzKSk7XG4iKTsKKyAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHNpemVfdCBtYXhTdGFja1NpemUgPSBpbXAtPnNo
b3VsZENhcHR1cmVGdWxsU3RhY2tUcmFjZSgpID8gU2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3Rh
Y2tTaXplVG9DYXB0dXJlIDogMTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFj
ayhleGVjLCBtYXhTdGFja1NpemUpKTtcbiIpOworICAgICAgICAkaW1wbEluY2x1ZGVzeyJTY3Jp
cHRBcmd1bWVudHMuaCJ9ID0gMTsKKyAgICAgICAgJGltcGxJbmNsdWRlc3siU2NyaXB0Q2FsbFN0
YWNrLmgifSA9IDE7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IlNjcmlwdENhbGxTdGFja0ZhY3Rv
cnkuaCJ9ID0gMTsKKyAgICB9CisKKyAgICBteSAkY2FsbFdpdGggPSAkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn07CisgICAgaWYgKCRjYWxsV2l0
aCkgeworICAgICAgICBteSAkY2FsbFdpdGhBcmcgPSAiQ09NUElMRV9BU1NFUlQoZmFsc2UpIjsK
KyAgICAgICAgaWYgKCRjYWxsV2l0aCBlcSAiRHluYW1pY0ZyYW1lIikgeworICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIEZyYW1lKiBkeW5hbWljRnJhbWUgPSB0b0R5bmFtaWNG
cmFtZShleGVjKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlm
ICghZHluYW1pY0ZyYW1lKVxuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4iKTsKKyAgICAg
ICAgICAgICRjYWxsV2l0aEFyZyA9ICJkeW5hbWljRnJhbWUiOworICAgICAgICB9IGVsc2lmICgk
Y2FsbFdpdGggZXEgIlNjcmlwdFN0YXRlIikgeworICAgICAgICAgICAgJGNhbGxXaXRoQXJnID0g
ImV4ZWMiOworICAgICAgICB9IGVsc2lmICgkY2FsbFdpdGggZXEgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQiKSB7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCFzY3Jp
cHRDb250ZXh0KVxuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4iKTsKKyAgICAgICAgICAg
ICRjYWxsV2l0aEFyZyA9ICJzY3JpcHRDb250ZXh0IjsgCisgICAgICAgIH0KKyAgICAgICAgJGZ1
bmN0aW9uU3RyaW5nIC49ICIsICIgaWYgJHBhcmFtSW5kZXg7CisgICAgICAgICRmdW5jdGlvblN0
cmluZyAuPSAkY2FsbFdpdGhBcmc7CisgICAgICAgICRwYXJhbUluZGV4Kys7CisgICAgfQorCisg
ICAgJGltcGxJbmNsdWRlc3siRXhjZXB0aW9uQ29kZS5oIn0gPSAxOworICAgICRpbXBsSW5jbHVk
ZXN7IkpTRE9NQmluZGluZy5oIn0gPSAxOworCisgICAgZm9yZWFjaCBteSAkcGFyYW1ldGVyIChA
eyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKKyAgICAgICAgIyBPcHRpb25hbCBjYWxsYmFja3Mg
c2hvdWxkIGJlIHRyZWF0ZWQgZGlmZmVyZW50bHksIGJlY2F1c2UgdGhleSBhbHdheXMgaGF2ZSBh
IGRlZmF1bHQgdmFsdWUgKDApLAorICAgICAgICAjIGFuZCB3ZSBjYW4gcmVkdWNlIHRoZSBudW1i
ZXIgb2Ygb3ZlcmxvYWRlZCBmdW5jdGlvbnMgdGhhdCB0YWtlIGEgZGlmZmVyZW50IG51bWJlciBv
ZiBwYXJhbWV0ZXJzLgorICAgICAgICAjIE9wdGlvbmFsIGFyZ3VtZW50cyB3aXRoIFtPcHRpb25h
bD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gb3IgW09wdGlvbmFsPUNhbGxXaXRoTnVsbFZhbHVlXSBz
aG91bGQgbm90IGdlbmVyYXRlIGFuIGVhcmx5IGNhbGwuCisgICAgICAgIG15ICRvcHRpb25hbCA9
ICRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9OworICAgICAgICBp
ZiAoJG9wdGlvbmFsICYmICRvcHRpb25hbCBuZSAiQ2FsbFdpdGhEZWZhdWx0VmFsdWUiICYmICRv
cHRpb25hbCBuZSAiQ2FsbFdpdGhOdWxsVmFsdWUiICYmICEkcGFyYW1ldGVyLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ2FsbGJhY2sifSkgeworICAgICAgICAgICAgIyBHZW5lcmF0ZSBlYXJseSBj
YWxsIGlmIHRoZXJlIGFyZSBlbm91Z2ggcGFyYW1ldGVycy4KKyAgICAgICAgICAgIGlmICghJGhh
c09wdGlvbmFsQXJndW1lbnRzKSB7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiXG4gICAgc2l6ZV90IGFyZ3NDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTtcbiIpOwor
ICAgICAgICAgICAgICAgICRoYXNPcHRpb25hbEFyZ3VtZW50cyA9IDE7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKGFyZ3NDb3VudCA8PSAk
YXJnc0luZGV4KSB7XG4iKTsKKyAgICAgICAgICAgIEdlbmVyYXRlSW1wbGVtZW50YXRpb25GdW5j
dGlvbkNhbGwoJGZ1bmN0aW9uLCAkZnVuY3Rpb25TdHJpbmcsICRwYXJhbUluZGV4LCAiICAgICIg
eCAyLCAkc3ZnUHJvcGVydHlUeXBlLCAkaW1wbENsYXNzTmFtZSk7CisgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgfVxuXG4iKTsKKyAgICAgICAgfQorCisgICAgICAgIG15ICRu
YW1lID0gJHBhcmFtZXRlci0+bmFtZTsKKyAgICAgICAgbXkgJGFyZ1R5cGUgPSAkY29kZUdlbmVy
YXRvci0+U3RyaXBNb2R1bGUoJHBhcmFtZXRlci0+dHlwZSk7CisKKyAgICAgICAgaWYgKCRhcmdU
eXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIiKSB7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgUmVmUHRyPFhQYXRoTlNSZXNvbHZlcj4gY3VzdG9tUmVzb2x2ZXI7XG4iKTsKKyAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBYUGF0aE5TUmVzb2x2ZXIqIHJlc29s
dmVyID0gdG9YUGF0aE5TUmVzb2x2ZXIoZXhlYy0+YXJndW1lbnQoJGFyZ3NJbmRleCkpO1xuIik7
CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCFyZXNvbHZlcikge1xu
Iik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGN1c3RvbVJlc29s
dmVyID0gSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI6OmNyZWF0ZShleGVjLCBleGVjLT5hcmd1bWVu
dCgkYXJnc0luZGV4KSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKVxuIik7CisgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJl
c29sdmVyID0gY3VzdG9tUmVzb2x2ZXIuZ2V0KCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICB9XG4iKTsKKyAgICAgICAgfSBlbHNpZiAoJHBhcmFtZXRlci0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxiYWNrIn0pIHsKKyAgICAgICAgICAgIG15ICRjYWxsYmFj
a0NsYXNzTmFtZSA9IEdldENhbGxiYWNrQ2xhc3NOYW1lKCRhcmdUeXBlKTsKKyAgICAgICAgICAg
ICRpbXBsSW5jbHVkZXN7IiRjYWxsYmFja0NsYXNzTmFtZS5oIn0gPSAxOworICAgICAgICAgICAg
aWYgKCRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9KSB7CisgICAg
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJlZlB0cjwkYXJnVHlwZT4gJG5h
bWU7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKGV4
ZWMtPmFyZ3VtZW50Q291bnQoKSA+ICRhcmdzSW5kZXggJiYgIWV4ZWMtPmFyZ3VtZW50KCRhcmdz
SW5kZXgpLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHtcbiIpOworICAgICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgkYXJnc0luZGV4KS5p
c09iamVjdCgpKSB7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpO1xuIik7
CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOworICAgICAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgfVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgICAgICAkbmFtZSA9ICR7Y2FsbGJhY2tDbGFzc05hbWV9OjpjcmVh
dGUoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoJGFyZ3NJbmRleCkpLCBjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgfVxuIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDw9ICRhcmdzSW5kZXgg
fHwgIWV4ZWMtPmFyZ3VtZW50KCRhcmdzSW5kZXgpLmlzT2JqZWN0KCkpIHtcbiIpOworICAgICAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4
ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtc
biIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKTsKKyAg
ICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUmVmUHRyPCRhcmdUeXBlPiAk
bmFtZSA9ICR7Y2FsbGJhY2tDbGFzc05hbWV9OjpjcmVhdGUoYXNPYmplY3QoZXhlYy0+YXJndW1l
bnQoJGFyZ3NJbmRleCkpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7XG4iKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICMgSWYgdGhlICJTdHJpY3RU
eXBlQ2hlY2tpbmciIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcyBwcmVzZW50LCBhbmQgdGhlIGFyZ3Vt
ZW50J3MgdHlwZSBpcyBhbgorICAgICAgICAgICAgIyBpbnRlcmZhY2UgdHlwZSwgdGhlbiBpZiB0
aGUgaW5jb21pbmcgdmFsdWUgZG9lcyBub3QgaW1wbGVtZW50IHRoYXQgaW50ZXJmYWNlLCBhIFR5
cGVFcnJvcgorICAgICAgICAgICAgIyBpcyB0aHJvd24gcmF0aGVyIHRoYW4gc2lsZW50bHkgcGFz
c2luZyBOVUxMIHRvIHRoZSBDKysgY29kZS4KKyAgICAgICAgICAgICMgUGVyIHRoZSBXZWIgSURM
IGFuZCBFQ01BU2NyaXB0IHNlbWFudGljcywgaW5jb21pbmcgdmFsdWVzIGNhbiBhbHdheXMgYmUg
Y29udmVydGVkIHRvIGJvdGgKKyAgICAgICAgICAgICMgc3RyaW5ncyBhbmQgbnVtYmVycywgc28g
ZG8gbm90IHRocm93IFR5cGVFcnJvciBpZiB0aGUgYXJndW1lbnQgaXMgb2YgdGhlc2UgdHlwZXMu
CisgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJTdHJpY3RUeXBlQ2hlY2tpbmcifSkgeworICAgICAgICAgICAgICAgICRpbXBsSW5jbHVk
ZXN7IjxydW50aW1lL0Vycm9yLmg+In0gPSAxOworCisgICAgICAgICAgICAgICAgbXkgJGFyZ1Zh
bHVlID0gImV4ZWMtPmFyZ3VtZW50KCRhcmdzSW5kZXgpIjsKKyAgICAgICAgICAgICAgICBpZiAo
IUlzTmF0aXZlVHlwZSgkYXJnVHlwZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPiAkYXJnc0luZGV4ICYm
ICEke2FyZ1ZhbHVlfS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICEke2FyZ1ZhbHVlfS5pbmhlcml0
cygmSlMke2FyZ1R5cGV9OjpzX2luZm8pKVxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7XG4i
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG15ICRv
cHRpb25hbCA9ICRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9Owor
ICAgICAgICAgICAgbXkgJHBhcmFtZXRlck1pc3NpbmdQb2xpY3kgPSAiTWlzc2luZ0lzVW5kZWZp
bmVkIjsKKyAgICAgICAgICAgIGlmICgkb3B0aW9uYWwgJiYgJG9wdGlvbmFsIGVxICJDYWxsV2l0
aE51bGxWYWx1ZSIpIHsKKyAgICAgICAgICAgICAgICAkcGFyYW1ldGVyTWlzc2luZ1BvbGljeSA9
ICJNaXNzaW5nSXNFbXB0eSI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICAiIC4gR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUoJHBhcmFtZXRl
cikgLiAiICRuYW1lKCIgLiBKU1ZhbHVlVG9OYXRpdmUoJHBhcmFtZXRlciwgIk1BWUJFX01JU1NJ
TkdfUEFSQU1FVEVSKGV4ZWMsICRhcmdzSW5kZXgsICRwYXJhbWV0ZXJNaXNzaW5nUG9saWN5KSIp
IC4gIik7XG4iKTsKKworICAgICAgICAgICAgIyBJZiBhIHBhcmFtZXRlciBpcyAiYW4gaW5kZXgi
IGFuZCBpdCdzIG5lZ2F0aXZlIGl0IHNob3VsZCB0aHJvdyBhbiBJTkRFWF9TSVpFX0VSUiBleGNl
cHRpb24uCisgICAgICAgICAgICAjIEJ1dCB0aGlzIG5lZWRzIHRvIGJlIGRvbmUgaW4gdGhlIGJp
bmRpbmdzLCBiZWNhdXNlIHRoZSB0eXBlIGlzIHVuc2lnbmVkIGFuZCB0aGUgZmFjdCB0aGF0IGl0
CisgICAgICAgICAgICAjIHdhcyBuZWdhdGl2ZSB3aWxsIGJlIGxvc3QgYnkgdGhlIHRpbWUgd2Un
cmUgaW5zaWRlIHRoZSBET00uCisgICAgICAgICAgICBpZiAoJHBhcmFtZXRlci0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IklzSW5kZXgifSkgeworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBpZiAoJG5hbWUgPCAwKSB7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBJTkRFWF9TSVpFX0VS
Uik7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4iKTsKKyAgICAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIik7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICMgQ2hlY2sgaWYgdGhlIHR5cGUgY29udmVyc2lvbiBzdWNjZWVkZWQuCisgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKVxu
Iik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4iKTsKKworICAgICAgICAgICAgaWYgKCRjb2Rl
R2VuZXJhdG9yLT5Jc1NWR1R5cGVOZWVkaW5nVGVhck9mZigkYXJnVHlwZSkgYW5kIG5vdCAkaW1w
bENsYXNzTmFtZSA9fiAvTGlzdCQvKSB7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIGlmICghJG5hbWUpIHtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJS
KTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOworICAgICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgICRmdW5jdGlvblN0cmluZyAuPSAiLCAiIGlmICRwYXJhbUluZGV4OworCisg
ICAgICAgIGlmICgkYXJnVHlwZSBlcSAiTm9kZUZpbHRlciIpIHsKKyAgICAgICAgICAgICRmdW5j
dGlvblN0cmluZyAuPSAiJG5hbWUuZ2V0KCkiOworICAgICAgICB9IGVsc2lmICgkY29kZUdlbmVy
YXRvci0+SXNTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJGFyZ1R5cGUpIGFuZCBub3QgJGltcGxDbGFz
c05hbWUgPX4gL0xpc3QkLykgeworICAgICAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICIkbmFt
ZS0+cHJvcGVydHlSZWZlcmVuY2UoKSI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAk
ZnVuY3Rpb25TdHJpbmcgLj0gJG5hbWU7CisgICAgICAgIH0KKyAgICAgICAgJGFyZ3NJbmRleCsr
OworICAgICAgICAkcGFyYW1JbmRleCsrOworICAgIH0KKworICAgIGlmICgkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5lZWRzVXNlckdlc3R1cmVDaGVjayJ9KSB7
CisgICAgICAgICRmdW5jdGlvblN0cmluZyAuPSAiLCAiIGlmICRwYXJhbUluZGV4OworICAgICAg
ICAkZnVuY3Rpb25TdHJpbmcgLj0gIlNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSgpIjsKKyAgICAgICAgJHBhcmFtSW5kZXgrKzsKKyAgICAgICAgJGltcGxJbmNsdWRlc3si
U2NyaXB0Q29udHJvbGxlci5oIn0gPSAxOworICAgIH0KKworICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBcbiIpOworICAgIHJldHVybiAoJGZ1bmN0aW9uU3RyaW5nLCAkcGFyYW1JbmRleCk7
Cit9CisKIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSGVhZGVyCiB7CiAgICAgbXkgJG9iamVjdCA9IHNo
aWZ0OwpAQCAtMzE2OSw5ICszMTk5LDYgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0
aW9uCiAgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CiAKICAgICBteSAkY29uc3RydWN0b3JDbGFz
c05hbWUgPSAiJHtjbGFzc05hbWV9Q29uc3RydWN0b3IiOwotICAgIG15ICRjYW5Db25zdHJ1Y3Qg
PSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYW5CZUNvbnN0cnVjdGVkIn07Ci0g
ICAgbXkgJGN1c3RvbUNvbnN0cnVjdEZ1bmN0aW9uID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ3VzdG9tQ29uc3RydWN0RnVuY3Rpb24ifTsKLSAgICBteSAkY2FsbFdpdGggPSAk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9OwogICAgIG15ICRudW1i
ZXJPZmNvbnN0cnVjdFBhcmFtZXRlcnMgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDb25zdHJ1Y3RvclBhcmFtZXRlcnMifTsKIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImNv
bnN0IENsYXNzSW5mbyAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6c19pbmZvID0geyBcIiR7dmlz
aWJsZUNsYXNzTmFtZX1Db25zdHJ1Y3RvclwiLCAmRE9NQ29uc3RydWN0b3JPYmplY3Q6OnNfaW5m
bywgJiR7Y29uc3RydWN0b3JDbGFzc05hbWV9VGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
JGNvbnN0cnVjdG9yQ2xhc3NOYW1lKSB9O1xuXG4iKTsKQEAgLTMyMDMsMTggKzMyMzAsNjcgQEAg
c3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uCiAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8JHtjb25zdHJ1Y3RvckNsYXNz
TmFtZX0sIEpTRE9NV3JhcHBlcj4oZXhlYywgJiR7Y29uc3RydWN0b3JDbGFzc05hbWV9VGFibGUs
IHRoaXMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICJ9XG5cbiIpOwogCi0gICAgaWYgKCRjYW5Db25zdHJ1Y3QpIHsKLSAgICAgICAgaWYg
KCEkY3VzdG9tQ29uc3RydWN0RnVuY3Rpb24pIHsKKyAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ2FuQmVDb25zdHJ1Y3RlZCJ9KSB7CisgICAgICAgIGlmICghJGRhdGFO
b2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ29uc3RydWN0RnVuY3Rpb24ifSkgewog
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Y29uc3RydWN0JHtjbGFzc05hbWV9KEV4ZWNT
dGF0ZSogZXhlYylcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7
Ci0gICAgICAgICAgICBteSAkY29uc3RydWN0b3JBcmcgPSAiIjsKLSAgICAgICAgICAgIGlmICgk
Y2FsbFdpdGggYW5kICRjYWxsV2l0aCBlcSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dCIpIHsKLSAg
ICAgICAgICAgICAgICAkY29uc3RydWN0b3JBcmcgPSAiY29udGV4dCI7Ci0gICAgICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQgPSBzdGF0aWNfY2FzdDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+KGV4ZWMtPmNhbGxlZSgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIGlmICghY29udGV4dClcbiIpOwotICAgICAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVh
dGVSZWZlcmVuY2VFcnJvcihleGVjLCBcIlJlZmVyZW5jZSBlcnJvclwiKSk7XG4iKTsKKworICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICR7Y29uc3RydWN0b3JDbGFzc05hbWV9
KiBqc0NvbnN0cnVjdG9yID0gc3RhdGljX2Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qPihl
eGVjLT5jYWxsZWUoKSk7XG4iKTsKKworICAgICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yIn0pIHsKKyAgICAgICAgICAgICAgICBteSAkZnVu
Y3Rpb24gPSAkZGF0YU5vZGUtPmNvbnN0cnVjdG9yOworICAgICAgICAgICAgICAgIG15IEBjb25z
dHJ1Y3RvckFyZ0xpc3Q7CisKKyAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyI8cnVudGlt
ZS9FcnJvci5oPiJ9ID0gMTsKKworICAgICAgICAgICAgICAgIEdlbmVyYXRlQXJndW1lbnRzQ291
bnRDaGVjaygkb3V0cHV0QXJyYXksICRmdW5jdGlvbiwgJGRhdGFOb2RlKTsKKworICAgICAgICAg
ICAgICAgIGlmIChAeyRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9uc30gfHwgJGRhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24ifSkgeworICAg
ICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJFeGNlcHRpb25Db2RlLmgifSA9IDE7Cisg
ICAgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDtcbiIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICMgRm9y
IG5vdywgd2UgZG8gbm90IHN1cHBvcnQgU1ZHIGNvbnN0cnVjdG9ycy4KKyAgICAgICAgICAgICAg
ICAjIFdlIGRvIG5vdCBhbHNvIHN1cHBvcnQgYSBjb25zdHJ1Y3RvciBbT3BpdGlvbmFsXSBhcmd1
bWVudCB3aXRob3V0IENhbGxXaXRoRGVmYXVsdFZhbHVlIG5vciBDYWxsV2l0aE51bGxWYWx1ZS4K
KyAgICAgICAgICAgICAgICBteSAkbnVtUGFyYW1ldGVycyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0
ZXJzfTsKKyAgICAgICAgICAgICAgICBteSAoJGR1bW15LCAkcGFyYW1JbmRleCkgPSBHZW5lcmF0
ZVBhcmFtZXRlcnNDaGVjaygkb3V0cHV0QXJyYXksICRmdW5jdGlvbiwgJGRhdGFOb2RlLCAkbnVt
UGFyYW1ldGVycywgJGludGVyZmFjZU5hbWUsICJjb25zdHJ1Y3RvckNhbGxiYWNrIiwgdW5kZWYs
IHVuZGVmLCB1bmRlZik7CisKKyAgICAgICAgICAgICAgICBteSAkaW5kZXggPSAwOworICAgICAg
ICAgICAgICAgIGZvcmVhY2ggbXkgJHBhcmFtZXRlciAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9
KSB7CisgICAgICAgICAgICAgICAgICAgIGxhc3QgaWYgJGluZGV4IGVxICRwYXJhbUluZGV4Owor
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBjb25zdHJ1Y3RvckFyZ0xpc3QsICRwYXJhbWV0ZXIt
Pm5hbWUpOworICAgICAgICAgICAgICAgICAgICAkaW5kZXgrKzsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q29uc3RydWN0b3JXaXRoIn0gJiYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29u
c3RydWN0b3JXaXRoIn0gZXEgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKSB7CisgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGNvbnN0cnVjdG9yQXJnTGlzdCwgImNvbnRleHQiKTsKKyAgICAgICAg
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQgPSBqc0NvbnN0cnVjdG9yLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7XG4i
KTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghY29u
dGV4dClcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywg
XCIke2ludGVyZmFjZU5hbWV9IGNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZG9jdW1lbnQgaXMgdW5h
dmFpbGFibGVcIikpO1xuIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlm
ICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvclJhaXNlc0V4Y2Vw
dGlvbiJ9KSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGNvbnN0cnVjdG9yQXJnTGlzdCwg
ImVjIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG15ICRjb25zdHJ1Y3Rv
ckFyZyA9IGpvaW4oIiwgIiwgQGNvbnN0cnVjdG9yQXJnTGlzdCk7CisgICAgICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJlZlB0cjwke2ludGVyZmFjZU5hbWV9PiBvYmplY3Qg
PSAke2ludGVyZmFjZU5hbWV9OjpjcmVhdGUoJHtjb25zdHJ1Y3RvckFyZ30pO1xuIik7CisgICAg
ICAgICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVj
dG9yUmFpc2VzRXhjZXB0aW9uIn0pIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIGlmIChlYykge1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTtcbiIpOworICAg
ICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZSgpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgfVxuIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBteSAkY29uc3RydWN0b3JBcmcgPSAiIjsKKyAgICAg
ICAgICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0
b3JXaXRoIn0gYW5kICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9y
V2l0aCJ9IGVxICJTY3JpcHRFeGVjdXRpb25Db250ZXh0IikgeworICAgICAgICAgICAgICAgICAg
ICAkY29uc3RydWN0b3JBcmcgPSAiY29udGV4dCI7CisgICAgICAgICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qPihleGVjLT5jYWxsZWUoKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgaWYgKCFjb250ZXh0KVxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVh
dGVSZWZlcmVuY2VFcnJvcihleGVjLCBcIiR7aW50ZXJmYWNlTmFtZX0gY29uc3RydWN0b3IgYXNz
b2NpYXRlZCBkb2N1bWVudCBpcyB1bmF2YWlsYWJsZVwiKSk7XG4iKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJlZlB0cjwke2lu
dGVyZmFjZU5hbWV9PiBvYmplY3QgPSAke2ludGVyZmFjZU5hbWV9OjpjcmVhdGUoJHtjb25zdHJ1
Y3RvckFyZ30pO1xuIik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIHN0
YXRpY19jYXN0PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9Kj4oZXhlYy0+Y2FsbGVlKCkpLT5nbG9i
YWxPYmplY3QoKSwgJHtpbnRlcmZhY2VOYW1lfTo6Y3JlYXRlKCR7Y29uc3RydWN0b3JBcmd9KSkp
KTtcbiIpOworCisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9i
amVjdCgpLCBvYmplY3QuZ2V0KCkpKSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIn1cblxuIik7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCA0ODIyN2NjNjExYjQ4NTMyMWQ3
ZmUwODFjNmRhNjU5ZThhYTQ0OWExLi5lNzUxMTk4ZmE2NWU4NzVjYmExNTVkZWU5MjI1NjY5ZGQ5
ZThhOWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQpAQCAtMjEyOSw4ICsyMTI5LDcgQEAgRU5ECiAgICAgIyBJbiBuYW1lc3Bh
Y2UgV2ViQ29yZSwgYWRkIGdlbmVyYXRlZCBpbXBsZW1lbnRhdGlvbiBmb3IgJ0NhbkJlQ29uc3Ry
dWN0ZWQnLgogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYW5CZUNv
bnN0cnVjdGVkIn0gJiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNv
bnN0cnVjdG9yIn0gJiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9t
Q29uc3RydWN0b3IifSAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3Ry
dWN0b3IifSkgewogICAgICAgICBteSAkdjhDb25zdHJ1Y3RGdW5jdGlvbjsKLSAgICAgICAgbXkg
JGNhbGxXaXRoID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifTsK
LSAgICAgICAgaWYgKCRjYWxsV2l0aCBhbmQgJGNhbGxXaXRoIGVxICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0IikgeworICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q29uc3RydWN0b3JXaXRoIn0gYW5kICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNv
bnN0cnVjdG9yV2l0aCJ9IGVxICJTY3JpcHRFeGVjdXRpb25Db250ZXh0IikgewogICAgICAgICAg
ICAgJHY4Q29uc3RydWN0RnVuY3Rpb24gPSAiY29uc3RydWN0RE9NT2JqZWN0V2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQiOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgJHY4Q29uc3Ry
dWN0RnVuY3Rpb24gPSAiY29uc3RydWN0RE9NT2JqZWN0IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAK
aW5kZXggOWI3ODM4ZjFiYjQxYjZlZTcyZTU1MTdlNjEzOWJhNDViYjRmOGQ4OC4uZDQxNzA2YTEw
YmQwOWE3NDU2NjUxNTAxZDAzYjY5ZTE5ZWNjMDI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAK
QEAgLTI0LDcgKzI0LDEwIEBACiAKICNpbmNsdWRlICJKU1Rlc3RJbnRlcmZhY2UuaCIKIAorI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNs
dWRlICJUZXN0SW50ZXJmYWNlLmgiCisjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTcyLDMzICs3NSw2
IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rv
clRhYmxlVmFsdWVzW10gPQogCiAjdW5kZWYgVEhVTktfR0VORVJBVE9SCiBzdGF0aWMgSlNDX0NP
TlNUX0hBU0hUQUJMRSBIYXNoVGFibGUgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZSA9
IHsgMSwgMCwgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZVZhbHVlcywgMCB9OwotY2xh
c3MgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmpl
Y3QgewotcHJpdmF0ZToKLSAgICBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihKU0M6OlN0cnVj
dHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6
OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7Ci0KLXB1YmxpYzoKLSAgICB0eXBlZGVm
IERPTUNvbnN0cnVjdG9yT2JqZWN0IEJhc2U7Ci0gICAgc3RhdGljIEpTVGVzdEludGVyZmFjZUNv
bnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi0gICAgewotICAgICAg
ICBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvciogcHRyID0gbmV3IChKU0M6OmFsbG9jYXRlQ2Vs
bDxKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTVGVzdEludGVy
ZmFjZUNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgcHRyLT5m
aW5pc2hDcmVhdGlvbihleGVjLCBnbG9iYWxPYmplY3QpOwotICAgICAgICByZXR1cm4gcHRyOwot
ICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3Rh
dGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHZp
cnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBjb25z
dCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwotICAgIHN0YXRp
YyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87Ci0gICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCAmc19pbmZvKTsKLSAgICB9Ci1wcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QgfCBKU0M6OkltcGxlbWVudHNIYXNJbnN0YW5jZSB8IERPTUNvbnN0cnVjdG9yT2JqZWN0OjpT
dHJ1Y3R1cmVGbGFnczsKLSAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdEpTVGVzdEludGVyZmFjZShKU0M6OkV4ZWNTdGF0ZSopOwotICAgIHZpcnR1
YWwgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpDb25zdHJ1Y3REYXRh
Jik7Ci19OwotCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIlRlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvciIsICZET01Db25zdHJ1Y3Rvck9iamVj
dDo6c19pbmZvLCAmSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZSwgMCwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcikgfTsKIAogSlNUZXN0SW50ZXJm
YWNlQ29uc3RydWN0b3I6OkpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpAQCAtMTI1LDEwICsxMDEs
MjcgQEAgYm9vbCBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0SW50ZXJmYWNl
KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
ID0gc3RhdGljX2Nhc3Q8SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1
Y3RvcioganNDb25zdHJ1Y3RvciA9IHN0YXRpY19jYXN0PEpTVGVzdEludGVyZmFjZUNvbnN0cnVj
dG9yKj4oZXhlYy0+Y2FsbGVlKCkpOworICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAx
KQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVj
LCAiTm90IGVub3VnaCBhcmd1bWVudHMiKSk7CisgICAgCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CisgICAgY29uc3QgU3RyaW5nJiBzdHIxKHVzdHJpbmdUb1N0cmluZyhNQVlCRV9NSVNTSU5H
X1BBUkFNRVRFUihleGVjLCAwLCBNaXNzaW5nSXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpKSk7
CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGNvbnN0IFN0cmluZyYgc3RyMih1c3RyaW5nVG9T
dHJpbmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgTWlzc2luZ0lzVW5kZWZpbmVk
KS50b1N0cmluZyhleGVjKSkpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICAKKyAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0ganNDb25zdHJ1Y3Rvci0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCAiUmVmZXJlbmNlIGVycm9yIikp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBzdGF0aWNf
Y2FzdDxKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFs
T2JqZWN0KCksIFRlc3RJbnRlcmZhY2U6OmNyZWF0ZShjb250ZXh0KSkpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCAiVGVzdElu
dGVyZmFjZSBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlIikp
OworICAgIFJlZlB0cjxUZXN0SW50ZXJmYWNlPiBvYmplY3QgPSBUZXN0SW50ZXJmYWNlOjpjcmVh
dGUoc3RyMSwgc3RyMiwgY29udGV4dCwgZWMpOworICAgIGlmIChlYykgeworICAgICAgICBzZXRE
T01FeGNlcHRpb24oZXhlYywgZWMpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VmFsdWUoKSk7CisgICAgfQorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9K
UyhleGVjLCBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgb2JqZWN0LmdldCgpKSkpOwog
fQogCiBDb25zdHJ1Y3RUeXBlIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1
Y3REYXRhKENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgKaW5k
ZXggNWJmZDg5ZjIyM2E3NWY4NTllN2YzM2NkYjI4MTg5NWEwYzc3OTAyZC4uMTUyZDJmYzhlYzE3
NGRlYzg1MTc0OWMyMWNjZTllNDg4MTE1ZDkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaApAQCAtODgs
NiArODgsMzMgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogfTsKIAorY2xhc3MgSlNUZXN0SW50ZXJm
YWNlQ29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmplY3QgeworcHJpdmF0ZToK
KyAgICBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xv
YmFsT2JqZWN0Kik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpT
RE9NR2xvYmFsT2JqZWN0Kik7CisKK3B1YmxpYzoKKyAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9y
T2JqZWN0IEJhc2U7CisgICAgc3RhdGljIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKiBjcmVh
dGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgeworICAgICAgICBKU1Rlc3RJbnRlcmZh
Y2VDb25zdHJ1Y3RvciogcHRyID0gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RJbnRlcmZh
Y2VDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9y
KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihl
eGVjLCBnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHZp
cnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6
OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHZpcnR1YWwgYm9vbCBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZp
ZXImLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOworICAgIHN0YXRpYyBjb25zdCBKU0M6OkNs
YXNzSW5mbyBzX2luZm87CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19p
bmZvKTsKKyAgICB9Citwcm90ZWN0ZWQ6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6OkltcGxl
bWVudHNIYXNJbnN0YW5jZSB8IERPTUNvbnN0cnVjdG9yT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsK
KyAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpT
VGVzdEludGVyZmFjZShKU0M6OkV4ZWNTdGF0ZSopOworICAgIHZpcnR1YWwgSlNDOjpDb25zdHJ1
Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpDb25zdHJ1Y3REYXRhJik7Cit9OworCiAvLyBB
dHRyaWJ1dGVzCiAKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKaW5kZXggM2JmNDM4OWQy
MmI2MDgwMDUxZGViYjQzMjY3ZDBkNTA1NjJiZTNiOC4uMDhiOGVlZTdiNWE5MGYxZTAyMzYwOGEy
MTE1YWUxNDMzZjU1NDFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyLmNwcApAQCAtNzMsMzEgKzczLDYgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVl
IEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10KIAog
I3VuZGVmIFRIVU5LX0dFTkVSQVRPUgogc3RhdGljIEpTQ19DT05TVF9IQVNIVEFCTEUgSGFzaFRh
YmxlIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvclRhYmxlID0geyAxLCAw
LCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3JUYWJsZVZhbHVlcywgMCB9
OwotY2xhc3MgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yIDogcHVibGlj
IERPTUNvbnN0cnVjdG9yT2JqZWN0IHsKLXByaXZhdGU6Ci0gICAgSlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lckNvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3Qq
KTsKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxP
YmplY3QqKTsKLQotcHVibGljOgotICAgIHR5cGVkZWYgRE9NQ29uc3RydWN0b3JPYmplY3QgQmFz
ZTsKLSAgICBzdGF0aWMgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yKiBj
cmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi0gICAgewotICAgICAgICBKU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IqIHB0ciA9IG5ldyAoSlNDOjphbGxvY2F0ZUNl
bGw8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgp
KSkgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xv
YmFsT2JqZWN0KTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihleGVjLCBnbG9iYWxPYmpl
Y3QpOwotICAgICAgICByZXR1cm4gcHRyOwotICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBK
U0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3Bl
cnR5RGVzY3JpcHRvciYpOwotICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87
Ci0gICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVy
ZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJ
bmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKLSAgICB9Ci1w
cm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlND
OjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6OkltcGxlbWVudHNIYXNJbnN0YW5j
ZSB8IERPTUNvbnN0cnVjdG9yT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKLX07Ci0KIGNvbnN0IENs
YXNzSW5mbyBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IiLCAmRE9NQ29uc3RydWN0
b3JPYmplY3Q6OnNfaW5mbywgJkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3Rv
clRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXJDb25zdHJ1Y3RvcikgfTsKIAogSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVj
dG9yOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCkBAIC0yMDksMTAgKzE4
NCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXJQcm90b3R5cGVGdW5jdGlvbk1ldGhvZAogICAgIEpTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6c19pbmZvKTsK
ICAgICBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIFJlZlB0cjxN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiBsaXN0ZW5lcihNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpj
cmVhdGUoU2NyaXB0VmFsdWUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5hcmd1bWVudCgwKSkp
KTsKKyAgICAKKyAgICBSZWZQdHI8TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4gbGlzdGVuZXIoTWVk
aWFRdWVyeUxpc3RMaXN0ZW5lcjo6Y3JlYXRlKFNjcmlwdFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEo
KSwgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgTWlzc2luZ0lzVW5kZWZpbmVkKSkp
KTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KKyAgICAKICAgICBpbXAtPm1ldGhvZChsaXN0ZW5l
cik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCmluZGV4IDZjMTQyZTlkOWZhNmRm
MTRlOTljZWY3NDEzMjc4MWUyYzk2OTQyMTYuLjU3MDQ0ZmIzODkwYTRjMTBhMGU2NWE1MzU2YTlj
NmVkNWZlZjI2MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
aApAQCAtODgsNiArODgsMzEgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQmFz
ZTo6U3RydWN0dXJlRmxhZ3M7CiB9OwogCitjbGFzcyBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyQ29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmplY3QgeworcHJpdmF0ZToK
KyAgICBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1
cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpF
eGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCopOworCitwdWJsaWM6CisgICAgdHlwZWRlZiBE
T01Db25zdHJ1Y3Rvck9iamVjdCBCYXNlOworICAgIHN0YXRpYyBKU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAg
ICB7CisgICAgICAgIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvciogcHRy
ID0gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29u
c3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29u
c3RydWN0b3Ioc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOworICAgICAgICBwdHItPmZpbmlzaENy
ZWF0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQor
CisgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIGNv
bnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgdmlydHVhbCBi
b29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6
SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgc3RhdGljIGNvbnN0
IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksICZzX2luZm8pOworICAgIH0KK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpT
Qzo6SW1wbGVtZW50c0hhc0luc3RhbmNlIHwgRE9NQ29uc3RydWN0b3JPYmplY3Q6OlN0cnVjdHVy
ZUZsYWdzOworfTsKKwogLy8gRnVuY3Rpb25zCiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2QoSlNDOjpFeGVjU3RhdGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggODVkYTMwMTFjZDUxZmJmMGZmYTE4
NmYyNzY2ZWFhODg1NmUwZDZhNC4uZDNhOGYwMWQ1NjkwY2Y0MWNkZTA1N2UyOWY4ZTg2N2E5MWJi
Zjk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAKQEAgLTE3NSwzMSArMTc1LDYgQEAgQ09NUElMRV9BU1NFUlQoMHgw
MSA9PSBUZXN0T2JqOjpDT05TVF9WQUxVRV8xMiwgVGVzdE9iakVudW1DT05TVF9WQUxVRV8xMklz
V3JvbmcKIENPTVBJTEVfQVNTRVJUKDBYMjAgPT0gVGVzdE9iajo6Q09OU1RfVkFMVUVfMTMsIFRl
c3RPYmpFbnVtQ09OU1RfVkFMVUVfMTNJc1dyb25nVXNlRG9udENoZWNrRW51bXMpOwogQ09NUElM
RV9BU1NFUlQoMHgxYWJjID09IFRlc3RPYmo6OkNPTlNUX1ZBTFVFXzE0LCBUZXN0T2JqRW51bUNP
TlNUX1ZBTFVFXzE0SXNXcm9uZ1VzZURvbnRDaGVja0VudW1zKTsKIAotY2xhc3MgSlNUZXN0T2Jq
Q29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmplY3QgewotcHJpdmF0ZToKLSAg
ICBKU1Rlc3RPYmpDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0
Kik7Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFs
T2JqZWN0Kik7Ci0KLXB1YmxpYzoKLSAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yT2JqZWN0IEJh
c2U7Ci0gICAgc3RhdGljIEpTVGVzdE9iakNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCi0gICAgewotICAgICAgICBKU1Rlc3RPYmpDb25zdHJ1Y3RvciogcHRyID0g
bmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPYmpDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAo
KSkpIEpTVGVzdE9iakNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKLSAgICAg
ICAgcHRyLT5maW5pc2hDcmVhdGlvbihleGVjLCBnbG9iYWxPYmplY3QpOwotICAgICAgICByZXR1
cm4gcHRyOwotICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
OjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYp
OwotICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpFeGVjU3Rh
dGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwot
ICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87Ci0gICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERh
dGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKLSAgICB9Ci1wcm90ZWN0ZWQ6Ci0gICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRPd25Q
cm9wZXJ0eVNsb3QgfCBKU0M6OkltcGxlbWVudHNIYXNJbnN0YW5jZSB8IERPTUNvbnN0cnVjdG9y
T2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKLX07Ci0KIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RPYmpD
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE9iakNvbnN0cnVjdG9yIiwgJkRPTUNvbnN0cnVj
dG9yT2JqZWN0OjpzX2luZm8sICZKU1Rlc3RPYmpDb25zdHJ1Y3RvclRhYmxlLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdE9iakNvbnN0cnVjdG9yKSB9OwogCiBKU1Rlc3RPYmpDb25zdHJ1
Y3Rvcjo6SlNUZXN0T2JqQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCkBAIC0xMDUxLDcgKzEwMjYsOCBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZChF
eGVjU3RhdGUqIGV4ZQogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpT
VGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKICAgICBUZXN0T2JqKiBpbXAg
PSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLQorICAgIAorICAg
IAogICAgIGltcC0+dm9pZE1ldGhvZCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CkBAIC0xMDY0LDE2ICsxMDQwLDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kV2l0aEFyZ3Mo
RXhlY1N0CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2Jq
Kj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCAmSlNUZXN0T2JqOjpzX2luZm8pOwogICAgIFRlc3RPYmoqIGltcCA9IHN0YXRp
Y19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIGludCBpbnRBcmcoZXhl
Yy0+YXJndW1lbnQoMCkudG9JbnQzMihleGVjKSk7CisgICAgCisgICAgaW50IGludEFyZyhNQVlC
RV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBNaXNzaW5nSXNVbmRlZmluZWQpLnRvSW50MzIo
ZXhlYykpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBjb25zdCBTdHJpbmcmIHN0ckFyZyh1
c3RyaW5nVG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYykpKTsKKyAgICBj
b25zdCBTdHJpbmcmIHN0ckFyZyh1c3RyaW5nVG9TdHJpbmcoTUFZQkVfTUlTU0lOR19QQVJBTUVU
RVIoZXhlYywgMSwgTWlzc2luZ0lzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKSkpOwogICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICBUZXN0T2JqKiBvYmpBcmcodG9UZXN0T2JqKGV4ZWMtPmFyZ3Vt
ZW50KDIpKSk7CisgICAgVGVzdE9iaiogb2JqQXJnKHRvVGVzdE9iaihNQVlCRV9NSVNTSU5HX1BB
UkFNRVRFUihleGVjLCAyLCBNaXNzaW5nSXNVbmRlZmluZWQpKSk7CiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwotCisgICAgCiAgICAgaW1wLT52b2lkTWV0aG9kV2l0aEFyZ3MoaW50QXJnLCBzdHJBcmcs
IG9iakFyZyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
QEAgLTEwODYsNyArMTA2Myw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25JbnRNZXRob2QoRXhlY1N0YXRlKiBleGVjCiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1Zh
bHVlKSk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0
T2JqOjpzX2luZm8pOwogICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihj
YXN0ZWRUaGlzLT5pbXBsKCkpOwotCisgICAgCisgICAgCiAKICAgICBKU0M6OkpTVmFsdWUgcmVz
dWx0ID0ganNOdW1iZXIoaW1wLT5pbnRNZXRob2QoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwpAQCAtMTEwMCwxNiArMTA3OCwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uSW50TWV0aG9kV2l0aEFyZ3MoRXhl
Y1N0YQogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+
KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKICAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNf
Y2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAgICBpbnQgaW50QXJnKGV4ZWMt
PmFyZ3VtZW50KDApLnRvSW50MzIoZXhlYykpOworICAgIAorICAgIGludCBpbnRBcmcoTUFZQkVf
TUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgTWlzc2luZ0lzVW5kZWZpbmVkKS50b0ludDMyKGV4
ZWMpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgY29uc3QgU3RyaW5nJiBzdHJBcmcodXN0
cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpKSk7CisgICAgY29u
c3QgU3RyaW5nJiBzdHJBcmcodXN0cmluZ1RvU3RyaW5nKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVS
KGV4ZWMsIDEsIE1pc3NpbmdJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYykpKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Ci0gICAgVGVzdE9iaiogb2JqQXJnKHRvVGVzdE9iaihleGVjLT5hcmd1bWVu
dCgyKSkpOworICAgIFRlc3RPYmoqIG9iakFyZyh0b1Rlc3RPYmooTUFZQkVfTUlTU0lOR19QQVJB
TUVURVIoZXhlYywgMiwgTWlzc2luZ0lzVW5kZWZpbmVkKSkpOwogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKLQorICAgIAogCiAgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcC0+aW50
TWV0aG9kV2l0aEFyZ3MoaW50QXJnLCBzdHJBcmcsIG9iakFyZykpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTExMjMsNyArMTEwMiw4IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2QoRXhlY1N0
YXRlKiBleGVjCiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0
T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCAmSlNUZXN0T2JqOjpzX2luZm8pOwogICAgIFRlc3RPYmoqIGltcCA9IHN0
YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotCisgICAgCisgICAgCiAK
ICAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wLT5vYmpNZXRob2QoKSkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTExMzcsMTYgKzExMTcsMTcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZFdpdGhB
cmdzKEV4ZWNTdGEKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rl
c3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CiAgICAgVGVzdE9iaiogaW1wID0g
c3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7Ci0gICAgaW50IGludEFy
ZyhleGVjLT5hcmd1bWVudCgwKS50b0ludDMyKGV4ZWMpKTsKKyAgICAKKyAgICBpbnQgaW50QXJn
KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIE1pc3NpbmdJc1VuZGVmaW5lZCkudG9J
bnQzMihleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGNvbnN0IFN0cmluZyYgc3Ry
QXJnKHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKSkpOwor
ICAgIGNvbnN0IFN0cmluZyYgc3RyQXJnKHVzdHJpbmdUb1N0cmluZyhNQVlCRV9NSVNTSU5HX1BB
UkFNRVRFUihleGVjLCAxLCBNaXNzaW5nSXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpKSk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIFRlc3RPYmoqIG9iakFyZyh0b1Rlc3RPYmooZXhlYy0+
YXJndW1lbnQoMikpKTsKKyAgICBUZXN0T2JqKiBvYmpBcmcodG9UZXN0T2JqKE1BWUJFX01JU1NJ
TkdfUEFSQU1FVEVSKGV4ZWMsIDIsIE1pc3NpbmdJc1VuZGVmaW5lZCkpKTsKICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7Ci0KKyAgICAKIAogICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMs
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXAtPm9iak1ldGhvZFdp
dGhBcmdzKGludEFyZywgc3RyQXJnLCBvYmpBcmcpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwpAQCAtMTE2MiwxMyArMTE0MywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVpcmVzQWxs
QXJncwogICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlz
LT5pbXBsKCkpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGNvbnN0IFN0cmluZyYg
c3RyQXJnKHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKSkp
OworICAgIAorICAgIGNvbnN0IFN0cmluZyYgc3RyQXJnKHVzdHJpbmdUb1N0cmluZyhNQVlCRV9N
SVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBNaXNzaW5nSXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4
ZWMpKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIFRlc3RPYmoqIG9iakFyZyh0b1Rlc3RP
YmooZXhlYy0+YXJndW1lbnQoMSkpKTsKKyAgICBUZXN0T2JqKiBvYmpBcmcodG9UZXN0T2JqKE1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIE1pc3NpbmdJc1VuZGVmaW5lZCkpKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0KKyAgICAKIAogICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSB0
b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXAtPm1l
dGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3Moc3RyQXJnLCBvYmpBcmcpKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTE4NCwxNCArMTE2NiwxNSBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJl
cXVpcmVzQWxsQXJncwogICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihj
YXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAi
Tm90IGVub3VnaCBhcmd1bWVudHMiKSk7CisgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgY29uc3QgU3RyaW5nJiBzdHJBcmcodXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50
KDApLnRvU3RyaW5nKGV4ZWMpKSk7CisgICAgY29uc3QgU3RyaW5nJiBzdHJBcmcodXN0cmluZ1Rv
U3RyaW5nKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIE1pc3NpbmdJc1VuZGVmaW5l
ZCkudG9TdHJpbmcoZXhlYykpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgVGVzdE9iaiog
b2JqQXJnKHRvVGVzdE9iaihleGVjLT5hcmd1bWVudCgxKSkpOworICAgIFRlc3RPYmoqIG9iakFy
Zyh0b1Rlc3RPYmooTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgTWlzc2luZ0lzVW5k
ZWZpbmVkKSkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQorICAgIAogCiAgICAgSlNDOjpKU1Zh
bHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6
Z2V0UHRyKGltcC0+bWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyhzdHJBcmcsIG9i
akFyZywgZWMpKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKQEAgLTEyMDYsMTAg
KzExODksMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblNlcmlhbGl6ZWRWYWx1ZShFeGVjU3RhdGUKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5m
byk7CiAgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMt
PmltcGwoKSk7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZEFy
ZyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSkp
OworICAgIAorICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRBcmco
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZXhlYywgTUFZQkVfTUlTU0lOR19QQVJBTUVU
RVIoZXhlYywgMCwgTWlzc2luZ0lzVW5kZWZpbmVkKSkpOwogICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
LQorICAgIAogICAgIGltcC0+c2VyaWFsaXplZFZhbHVlKHNlcmlhbGl6ZWRBcmcpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC0xMjIyLDEwICsxMjA2
LDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25JZGJLZXkoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKICAg
ICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgp
KTsKLSAgICBSZWZQdHI8SURCS2V5PiBrZXkoY3JlYXRlSURCS2V5RnJvbVZhbHVlKGV4ZWMsIGV4
ZWMtPmFyZ3VtZW50KDApKSk7CisgICAgCisgICAgUmVmUHRyPElEQktleT4ga2V5KGNyZWF0ZUlE
QktleUZyb21WYWx1ZShleGVjLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBNaXNz
aW5nSXNVbmRlZmluZWQpKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCisgICAgCiAgICAgaW1w
LT5pZGJLZXkoa2V5KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQpAQCAtMTIzOCw3ICsxMjIzLDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wdGlvbnNPYmplY3QoRXhlY1N0YXRlKgogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRo
aXNWYWx1ZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpT
VGVzdE9iajo6c19pbmZvKTsKICAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2Jq
Kj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAgICBPcHRpb25zT2JqZWN0KiBvbyh0b09wdGlvbnNP
YmplY3QoZXhlYy0+YXJndW1lbnQoMCkpKTsKKyAgICAKKyAgICBPcHRpb25zT2JqZWN0KiBvbyh0
b09wdGlvbnNPYmplY3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgTWlzc2luZ0lz
VW5kZWZpbmVkKSkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApAQCAtMTI0OCwxMCArMTIzNCwx
MCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT3B0aW9uc09iamVjdChFeGVjU3RhdGUqCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0gICAgT3B0aW9uc09iamVjdCogb29vKHRvT3B0
aW9uc09iamVjdChleGVjLT5hcmd1bWVudCgxKSkpOworICAgIE9wdGlvbnNPYmplY3QqIG9vbyh0
b09wdGlvbnNPYmplY3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgTWlzc2luZ0lz
VW5kZWZpbmVkKSkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQorICAgIAogICAgIGltcC0+b3B0
aW9uc09iamVjdChvbywgb29vKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQpAQCAtMTI2NCw4ICsxMjUwLDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb24oRXhlY1MK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09i
amVjdCh0aGlzVmFsdWUpKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CiAgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8
VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0KKyAgICAKICAgICBpbXAtPm1ldGhvZFdpdGhFeGNlcHRpb24oZWMpOwogICAgIHNl
dERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKQEAgLTEyOTksMTQgKzEyODYsMTUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbUFyZ3NBbmRFeGNlcHRpb24o
RXgKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihh
c09iamVjdCh0aGlzVmFsdWUpKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CiAgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nh
c3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgCiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CiAgICAgUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gc2NyaXB0QXJndW1lbnRzKGNy
ZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAxKSk7CiAgICAgc2l6ZV90IG1heFN0YWNrU2l6ZSA9
IGltcC0+c2hvdWxkQ2FwdHVyZUZ1bGxTdGFja1RyYWNlKCkgPyBTY3JpcHRDYWxsU3RhY2s6Om1h
eENhbGxTdGFja1NpemVUb0NhcHR1cmUgOiAxOwogICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+
IGNhbGxTdGFjayhjcmVhdGVTY3JpcHRDYWxsU3RhY2soZXhlYywgbWF4U3RhY2tTaXplKSk7Ci0g
ICAgbG9nKiBpbnRBcmcodG9sb2coZXhlYy0+YXJndW1lbnQoMCkpKTsKKyAgICBsb2cqIGludEFy
Zyh0b2xvZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBNaXNzaW5nSXNVbmRlZmlu
ZWQpKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCisgICAgCiAgICAgaW1wLT5jdXN0b21Bcmdz
QW5kRXhjZXB0aW9uKGludEFyZywgc2NyaXB0QXJndW1lbnRzLCBjYWxsU3RhY2ssIGVjKTsKICAg
ICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CkBAIC0xMzIwLDYgKzEzMDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lcihFeGVj
U3RhdAogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+
KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKICAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNf
Y2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICAKICAgICBKU1ZhbHVlIGxp
c3RlbmVyID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgaWYgKCFsaXN0ZW5lci5pc09iamVjdCgp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTMz
NSw2ICsxMzI0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXIoRXhlY1MKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNf
aW5mbyk7CiAgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRo
aXMtPmltcGwoKSk7CisgICAgCiAgICAgSlNWYWx1ZSBsaXN0ZW5lciA9IGV4ZWMtPmFyZ3VtZW50
KDEpOwogICAgIGlmICghbGlzdGVuZXIuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTEzNTAsMTAgKzEzNDAsMTEgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEeW5h
bWljRnJhbWUoRXhlY1N0YXQKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2Fz
dDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CiAgICAgVGVzdE9iaiog
aW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgCiAg
ICAgRnJhbWUqIGR5bmFtaWNGcmFtZSA9IHRvRHluYW1pY0ZyYW1lKGV4ZWMpOwogICAgIGlmICgh
ZHluYW1pY0ZyYW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwotCisgICAgCiAgICAgaW1wLT53aXRoRHluYW1pY0ZyYW1lKGR5bmFtaWNGcmFtZSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTEzNjYsMTMg
KzEzNTcsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWVBbmRBcmcoRXgKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5m
byk7CiAgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMt
PmltcGwoKSk7CisgICAgCiAgICAgRnJhbWUqIGR5bmFtaWNGcmFtZSA9IHRvRHluYW1pY0ZyYW1l
KGV4ZWMpOwogICAgIGlmICghZHluYW1pY0ZyYW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGludCBpbnRBcmcoZXhlYy0+YXJndW1lbnQoMCku
dG9JbnQzMihleGVjKSk7CisgICAgaW50IGludEFyZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihl
eGVjLCAwLCBNaXNzaW5nSXNVbmRlZmluZWQpLnRvSW50MzIoZXhlYykpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKLQorICAgIAogICAgIGltcC0+d2l0aER5bmFtaWNGcmFtZUFuZEFyZyhkeW5hbWlj
RnJhbWUsIGludEFyZyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KQEAgLTEzODUsMTAgKzEzNzcsMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWVBbmRPcHRpb24KICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVj
dCh0aGlzVmFsdWUpKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
ICZKU1Rlc3RPYmo6OnNfaW5mbyk7CiAgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVz
dE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgCiAgICAgRnJhbWUqIGR5bmFtaWNGcmFt
ZSA9IHRvRHluYW1pY0ZyYW1lKGV4ZWMpOwogICAgIGlmICghZHluYW1pY0ZyYW1lKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGludCBpbnRBcmco
ZXhlYy0+YXJndW1lbnQoMCkudG9JbnQzMihleGVjKSk7CisgICAgaW50IGludEFyZyhNQVlCRV9N
SVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBNaXNzaW5nSXNVbmRlZmluZWQpLnRvSW50MzIoZXhl
YykpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApAQCAtMTM5OCwxMCArMTM5MSwxMCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aER5
bmFtaWNGcmFtZUFuZE9wdGlvbgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogICAgIH0KIAotICAgIGludCBvcHRpb25hbEFyZyhleGVjLT5hcmd1bWVudCgx
KS50b0ludDMyKGV4ZWMpKTsKKyAgICBpbnQgb3B0aW9uYWxBcmcoTUFZQkVfTUlTU0lOR19QQVJB
TUVURVIoZXhlYywgMSwgTWlzc2luZ0lzVW5kZWZpbmVkKS50b0ludDMyKGV4ZWMpKTsKICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7Ci0KKyAgICAKICAgICBpbXAtPndpdGhEeW5hbWljRnJhbWVBbmRPcHRp
b25hbEFyZyhkeW5hbWljRnJhbWUsIGludEFyZywgb3B0aW9uYWxBcmcpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC0xNDE0LDEzICsxNDA3LDE0IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
aXRoRHluYW1pY0ZyYW1lQW5kVXNlckdlCiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3Rh
dGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0T2JqOjpzX2luZm8pOwogICAgIFRl
c3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwor
ICAgIAogICAgIEZyYW1lKiBkeW5hbWljRnJhbWUgPSB0b0R5bmFtaWNGcmFtZShleGVjKTsKICAg
ICBpZiAoIWR5bmFtaWNGcmFtZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKLSAgICBpbnQgaW50QXJnKGV4ZWMtPmFyZ3VtZW50KDApLnRvSW50MzIoZXhl
YykpOworICAgIGludCBpbnRBcmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgTWlz
c2luZ0lzVW5kZWZpbmVkKS50b0ludDMyKGV4ZWMpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0K
KyAgICAKICAgICBpbXAtPndpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZShkeW5hbWljRnJh
bWUsIGludEFyZywgU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC0xNDMzLDEw
ICsxNDI3LDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25XaXRoRHluYW1pY0ZyYW1lQW5kVXNlckdlCiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0T2JqOjpzX2lu
Zm8pOwogICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlz
LT5pbXBsKCkpOworICAgIAogICAgIEZyYW1lKiBkeW5hbWljRnJhbWUgPSB0b0R5bmFtaWNGcmFt
ZShleGVjKTsKICAgICBpZiAoIWR5bmFtaWNGcmFtZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBpbnQgaW50QXJnKGV4ZWMtPmFyZ3VtZW50KDAp
LnRvSW50MzIoZXhlYykpOworICAgIGludCBpbnRBcmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIo
ZXhlYywgMCwgTWlzc2luZ0lzVW5kZWZpbmVkKS50b0ludDMyKGV4ZWMpKTsKICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAKQEAgLTE0NDYsMTAgKzE0NDEsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWVBbmRVc2Vy
R2UKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9
CiAKLSAgICBpbnQgb3B0aW9uYWxBcmcoZXhlYy0+YXJndW1lbnQoMSkudG9JbnQzMihleGVjKSk7
CisgICAgaW50IG9wdGlvbmFsQXJnKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIE1p
c3NpbmdJc1VuZGVmaW5lZCkudG9JbnQzMihleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwot
CisgICAgCiAgICAgaW1wLT53aXRoRHluYW1pY0ZyYW1lQW5kVXNlckdlc3R1cmVBU0FEKGR5bmFt
aWNGcmFtZSwgaW50QXJnLCBvcHRpb25hbEFyZywgU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CkBAIC0xNDYyLDcgKzE0NTcsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZChFeGVjUwogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0
KHRoaXNWYWx1ZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
JkpTVGVzdE9iajo6c19pbmZvKTsKICAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0
T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLQorICAgIAorICAgIAogICAgIGltcC0+d2l0aFNj
cmlwdFN0YXRlVm9pZChleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQpAQCAtMTQ3NSw3ICsxNDcxLDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZU9iaihFeGVjU3QK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09i
amVjdCh0aGlzVmFsdWUpKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CiAgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8
VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7Ci0KKyAgICAKKyAgICAKIAogICAgIEpTQzo6
SlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBX
VEY6OmdldFB0cihpbXAtPndpdGhTY3JpcHRTdGF0ZU9iaihleGVjKSkpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKQEAgLTE0OTEsOCArMTQ4OCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVWb2lk
RXhjZXB0CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2Jq
Kj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCAmSlNUZXN0T2JqOjpzX2luZm8pOwogICAgIFRlc3RPYmoqIGltcCA9IHN0YXRp
Y19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIAogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotCisgICAgCiAgICAgaW1wLT53aXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0
aW9uKGV4ZWMsIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNTA2LDggKzE1MDQsOSBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0
aFNjcmlwdFN0YXRlT2JqRXhjZXB0aQogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRp
Y19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKICAgICBUZXN0
T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAg
ICAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLQorICAgIAogCiAgICAgSlNDOjpKU1ZhbHVl
IHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0
UHRyKGltcC0+d2l0aFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uKGV4ZWMsIGVjKSkpOwogICAgIHNl
dERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CkBAIC0xNTI0LDEwICsxNTIzLDExIEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8
SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0T2JqOjpzX2luZm8pOwogICAgIFRlc3RPYmoqIGlt
cCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIAogICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBzdGF0aWNfY2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KKyAgICAKICAgICBpbXAtPndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KHNjcmlwdENvbnRleHQpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC0xNTQwLDYgKzE1NDAsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsQXJnKEV4ZQogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpT
VGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKICAgICBUZXN0T2JqKiBpbXAg
PSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICAKIAogICAg
IHNpemVfdCBhcmdzQ291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7CiAgICAgaWYgKGFyZ3ND
b3VudCA8PSAwKSB7CkBAIC0xNTQ3LDEwICsxNTQ4LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmco
RXhlCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAg
fQogCi0gICAgaW50IG9wdChleGVjLT5hcmd1bWVudCgwKS50b0ludDMyKGV4ZWMpKTsKKyAgICBp
bnQgb3B0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIE1pc3NpbmdJc1VuZGVmaW5l
ZCkudG9JbnQzMihleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCisgICAgCiAgICAgaW1w
LT5tZXRob2RXaXRoT3B0aW9uYWxBcmcob3B0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtMTU2Myw3ICsxNTY0LDggQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRp
b25hbEFyZ0EKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RP
YmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CiAgICAgVGVzdE9iaiogaW1wID0gc3Rh
dGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7Ci0gICAgaW50IG5vbk9wdChl
eGVjLT5hcmd1bWVudCgwKS50b0ludDMyKGV4ZWMpKTsKKyAgICAKKyAgICBpbnQgbm9uT3B0KE1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIE1pc3NpbmdJc1VuZGVmaW5lZCkudG9JbnQz
MihleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCkBAIC0xNTczLDEwICsxNTc1LDEwIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0gICAgaW50IG9wdChleGVjLT5hcmd1bWVudCgxKS50
b0ludDMyKGV4ZWMpKTsKKyAgICBpbnQgb3B0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMs
IDEsIE1pc3NpbmdJc1VuZGVmaW5lZCkudG9JbnQzMihleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwotCisgICAgCiAgICAgaW1wLT5tZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25h
bEFyZyhub25PcHQsIG9wdCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KQEAgLTE1ODksNyArMTU5MSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBCiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmpl
Y3QodGhpc1ZhbHVlKSk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCAmSlNUZXN0T2JqOjpzX2luZm8pOwogICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRl
c3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIGludCBub25PcHQoZXhlYy0+YXJndW1l
bnQoMCkudG9JbnQzMihleGVjKSk7CisgICAgCisgICAgaW50IG5vbk9wdChNQVlCRV9NSVNTSU5H
X1BBUkFNRVRFUihleGVjLCAwLCBNaXNzaW5nSXNVbmRlZmluZWQpLnRvSW50MzIoZXhlYykpOwog
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIApAQCAtMTU5OSwxMyArMTYwMiwxMyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5v
bk9wdGlvbmFsQXJnQQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogICAgIH0KIAotICAgIGludCBvcHQxKGV4ZWMtPmFyZ3VtZW50KDEpLnRvSW50MzIoZXhl
YykpOworICAgIGludCBvcHQxKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIE1pc3Np
bmdJc1VuZGVmaW5lZCkudG9JbnQzMihleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAg
IGludCBvcHQyKGV4ZWMtPmFyZ3VtZW50KDIpLnRvSW50MzIoZXhlYykpOworICAgIGludCBvcHQy
KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDIsIE1pc3NpbmdJc1VuZGVmaW5lZCkudG9J
bnQzMihleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCisgICAgCiAgICAgaW1wLT5tZXRo
b2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3Mobm9uT3B0LCBvcHQxLCBvcHQy
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtMTYx
OCwxMiArMTYyMSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJnKEV4ZQogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6
c19pbmZvKTsKICAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVk
VGhpcy0+aW1wbCgpKTsKKyAgICAKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDw9IDAg
fHwgIWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0
aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAgICAgUmVmUHRyPFRlc3RDYWxsYmFjaz4gY2Fs
bGJhY2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDAp
KSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwotCisgICAgCiAgICAgaW1wLT5tZXRob2RX
aXRoQ2FsbGJhY2tBcmcoY2FsbGJhY2spOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CkBAIC0xNjM2LDcgKzE2NDAsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNr
QXJnQQogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+
KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKICAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNf
Y2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAgICBpbnQgbm9uQ2FsbGJhY2so
ZXhlYy0+YXJndW1lbnQoMCkudG9JbnQzMihleGVjKSk7CisgICAgCisgICAgaW50IG5vbkNhbGxi
YWNrKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIE1pc3NpbmdJc1VuZGVmaW5lZCku
dG9JbnQzMihleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGlmIChleGVjLT5hcmd1
bWVudENvdW50KCkgPD0gMSB8fCAhZXhlYy0+YXJndW1lbnQoMSkuaXNPYmplY3QoKSkgewpAQCAt
MTY0NCw3ICsxNjQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0EKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAgICAgUmVmUHRyPFRlc3RD
YWxsYmFjaz4gY2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMt
PmFyZ3VtZW50KDEpKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwotCisgICAgCiAgICAg
aW1wLT5tZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyhub25DYWxsYmFjaywg
Y2FsbGJhY2spOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CkBAIC0xNjU3LDYgKzE2NjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aQogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNW
YWx1ZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVGVz
dE9iajo6c19pbmZvKTsKICAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4o
Y2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICAKICAgICBSZWZQdHI8VGVzdENhbGxiYWNrPiBjYWxs
YmFjazsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID4gMCAmJiAhZXhlYy0+YXJndW1l
bnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSkgewogICAgICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50
KDApLmlzT2JqZWN0KCkpIHsKQEAgLTE2NjUsNyArMTY3MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tB
bmRPcHRpCiAgICAgICAgIH0KICAgICAgICAgY2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3Jl
YXRlKGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCkpOwogICAgIH0KLQorICAgIAogICAgIGltcC0+bWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9u
YWxBcmcoY2FsbGJhY2spOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CkBAIC0xNjc5LDcgKzE2ODUsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QxKEV4ZWNTdAogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0
KHRoaXNWYWx1ZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
JkpTVGVzdE9iajo6c19pbmZvKTsKICAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0
T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLQorICAgIAorICAgIAogCiAgICAgSlNDOjpKU1Zh
bHVlIHJlc3VsdCA9IGpzU3RyaW5nKGV4ZWMsIGltcC0+Y29uZGl0aW9uYWxNZXRob2QxKCkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE2OTYsNyArMTcwMyw4IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25D
b25kaXRpb25hbE1ldGhvZDIoRXhlY1N0CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3Rh
dGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0T2JqOjpzX2luZm8pOwogICAgIFRl
c3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwot
CisgICAgCisgICAgCiAgICAgaW1wLT5jb25kaXRpb25hbE1ldGhvZDIoKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtMTcxMiw3ICsxNzIwLDggQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNv
bmRpdGlvbmFsTWV0aG9kMyhFeGVjU3QKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0
aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CiAgICAgVGVz
dE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7Ci0K
KyAgICAKKyAgICAKICAgICBpbXAtPmNvbmRpdGlvbmFsTWV0aG9kMygpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC0xNzI3LDEzICsxNzM2LDE0IEBA
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEoCiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3Rh
dGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0T2JqOjpzX2luZm8pOwogICAgIFRl
c3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwot
ICAgIFRlc3RPYmoqIG9iakFyZyh0b1Rlc3RPYmooZXhlYy0+YXJndW1lbnQoMCkpKTsKKyAgICAK
KyAgICBUZXN0T2JqKiBvYmpBcmcodG9UZXN0T2JqKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4
ZWMsIDAsIE1pc3NpbmdJc1VuZGVmaW5lZCkpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAg
Y29uc3QgU3RyaW5nJiBzdHJBcmcodXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDEpLnRv
U3RyaW5nKGV4ZWMpKSk7CisgICAgY29uc3QgU3RyaW5nJiBzdHJBcmcodXN0cmluZ1RvU3RyaW5n
KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIE1pc3NpbmdJc1VuZGVmaW5lZCkudG9T
dHJpbmcoZXhlYykpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KKyAgICAKICAgICBpbXAtPm92
ZXJsb2FkZWRNZXRob2Qob2JqQXJnLCBzdHJBcmcpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC0xNzQ2LDcgKzE3NTYsOCBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
ZWRNZXRob2QyKAogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVz
dE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKICAgICBUZXN0T2JqKiBpbXAgPSBz
dGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAgICBUZXN0T2JqKiBv
YmpBcmcodG9UZXN0T2JqKGV4ZWMtPmFyZ3VtZW50KDApKSk7CisgICAgCisgICAgVGVzdE9iaiog
b2JqQXJnKHRvVGVzdE9iaihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBNaXNzaW5n
SXNVbmRlZmluZWQpKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCkBAIC0xNzU2LDEwICsxNzY3
LDEwIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDIoCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0gICAgaW50IGludEFyZyhleGVjLT5hcmd1
bWVudCgxKS50b0ludDMyKGV4ZWMpKTsKKyAgICBpbnQgaW50QXJnKE1BWUJFX01JU1NJTkdfUEFS
QU1FVEVSKGV4ZWMsIDEsIE1pc3NpbmdJc1VuZGVmaW5lZCkudG9JbnQzMihleGVjKSk7CiAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotCisgICAgCiAgICAgaW1wLT5vdmVybG9hZGVkTWV0aG9kKG9iakFy
ZywgaW50QXJnKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQpAQCAtMTc3MiwxMCArMTc4MywxMSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QzKAogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRo
aXNWYWx1ZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpT
VGVzdE9iajo6c19pbmZvKTsKICAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2Jq
Kj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAgICBjb25zdCBTdHJpbmcmIHN0ckFyZyh1c3RyaW5n
VG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYykpKTsKKyAgICAKKyAgICBj
b25zdCBTdHJpbmcmIHN0ckFyZyh1c3RyaW5nVG9TdHJpbmcoTUFZQkVfTUlTU0lOR19QQVJBTUVU
RVIoZXhlYywgMCwgTWlzc2luZ0lzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKSkpOwogICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLQorICAgIAogICAgIGltcC0+b3ZlcmxvYWRlZE1ldGhvZChzdHJBcmcp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC0xNzg4
LDEwICsxODAwLDExIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDQoCiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0T2JqOjpz
X2luZm8pOwogICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRU
aGlzLT5pbXBsKCkpOwotICAgIGludCBpbnRBcmcoZXhlYy0+YXJndW1lbnQoMCkudG9JbnQzMihl
eGVjKSk7CisgICAgCisgICAgaW50IGludEFyZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVj
LCAwLCBNaXNzaW5nSXNVbmRlZmluZWQpLnRvSW50MzIoZXhlYykpOwogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKLQorICAgIAogICAgIGltcC0+b3ZlcmxvYWRlZE1ldGhvZChpbnRBcmcpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC0xODA0LDEyICsxODE3
LDEzIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDUoCiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0T2JqOjpzX2luZm8pOwog
ICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBs
KCkpOworICAgIAogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPD0gMCB8fCAhZXhlYy0+
YXJndW1lbnQoMCkuaXNPYmplY3QoKSkgewogICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywg
VFlQRV9NSVNNQVRDSF9FUlIpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogICAgIH0KICAgICBSZWZQdHI8VGVzdENhbGxiYWNrPiBjYWxsYmFjayA9IEpT
VGVzdENhbGxiYWNrOjpjcmVhdGUoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLCBjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSk7Ci0KKyAgICAKICAgICBpbXAtPm92ZXJsb2FkZWRNZXRob2Qo
Y2FsbGJhY2spOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CkBAIC0xODQwLDcgKzE4NTQsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2QoRXhlY1N0YXRlKiBleAogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNW
YWx1ZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVGVz
dE9iajo6c19pbmZvKTsKICAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4o
Y2FzdGVkVGhpcy0+aW1wbCgpKTsKLQorICAgIAorICAgIAogICAgIGltcC0+Y2xhc3NNZXRob2Qo
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtMTg1
Myw2ICsxODY4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKEUKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNf
aW5mbyk7CiAgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRo
aXMtPmltcGwoKSk7CisgICAgCiAKICAgICBzaXplX3QgYXJnc0NvdW50ID0gZXhlYy0+YXJndW1l
bnRDb3VudCgpOwogICAgIGlmIChhcmdzQ291bnQgPD0gMCkgewpAQCAtMTg2MSwxMCArMTg3Nywx
MCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoRQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiAgICAgfQogCi0gICAgaW50IGFyZyhleGVjLT5hcmd1bWVudCgwKS50b0lu
dDMyKGV4ZWMpKTsKKyAgICBpbnQgYXJnKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAs
IE1pc3NpbmdJc1VuZGVmaW5lZCkudG9JbnQzMihleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwotCisgICAgCiAKICAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wLT5jbGFz
c01ldGhvZFdpdGhPcHRpb25hbChhcmcpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmgKaW5kZXggYjQ3OTc1M2Y0NjJjNzAxYzI3ZmMyMmU3NzBhOWE2NTRmNmM4NzNk
MS4uZWRjMDQ5YTFlYzNiMzFkYjFhYWI0YzY2ODQ4ZTQxOTVkNDgyYWEzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaApAQCAt
MTAxLDYgKzEwMSwzMSBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIH07CiAKK2NsYXNz
IEpTVGVzdE9iakNvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9yT2JqZWN0IHsKK3By
aXZhdGU6CisgICAgSlNUZXN0T2JqQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUds
b2JhbE9iamVjdCopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpFeGVjU3RhdGUqLCBK
U0RPTUdsb2JhbE9iamVjdCopOworCitwdWJsaWM6CisgICAgdHlwZWRlZiBET01Db25zdHJ1Y3Rv
ck9iamVjdCBCYXNlOworICAgIHN0YXRpYyBKU1Rlc3RPYmpDb25zdHJ1Y3RvciogY3JlYXRlKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHsKKyAgICAgICAgSlNUZXN0T2JqQ29uc3RydWN0
b3IqIHB0ciA9IG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0T2JqQ29uc3RydWN0b3I+KCpl
eGVjLT5oZWFwKCkpKSBKU1Rlc3RPYmpDb25zdHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVj
dCk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAg
ICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9w
ZXJ0eVNsb3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpT
Qzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eURlc2Ny
aXB0b3ImKTsKKyAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOworICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1
ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0
ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6
Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CisgICAgfQorcHJvdGVjdGVk
OgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBET01D
b25zdHJ1Y3Rvck9iamVjdDo6U3RydWN0dXJlRmxhZ3M7Cit9OworCiAvLyBGdW5jdGlvbnMKIAog
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVm9pZE1ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRleCAyYWQ2MTBiYjZiNzQx
YzAxYjg4MzlmZDJiODY1NDVjZWZkMWRiZjY2Li45ZWVjMzE4ODdlMzRlMzhhZmZhODM0MDY0MzZi
MzYzMDNmNGU3NWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtNzQsMzEgKzc0LDYgQEAgc3RhdGljIGNvbnN0IEhh
c2hUYWJsZVZhbHVlIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVj
dG9yVGFibGUKIAogI3VuZGVmIFRIVU5LX0dFTkVSQVRPUgogc3RhdGljIEpTQ19DT05TVF9IQVNI
VEFCTEUgSGFzaFRhYmxlIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0
cnVjdG9yVGFibGUgPSB7IDEsIDAsIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZUNvbnN0cnVjdG9yVGFibGVWYWx1ZXMsIDAgfTsKLWNsYXNzIEpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9yT2JqZWN0
IHsKLXByaXZhdGU6Ci0gICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29u
c3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOwotICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCopOwotCi1w
dWJsaWM6Ci0gICAgdHlwZWRlZiBET01Db25zdHJ1Y3Rvck9iamVjdCBCYXNlOwotICAgIHN0YXRp
YyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvciogY3JlYXRl
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotICAgIHsKLSAgICAgICAgSlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IqIHB0ciA9IG5ldyAoSlNDOjphbGxvY2F0
ZUNlbGw8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3I+KCpl
eGVjLT5oZWFwKCkpKSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1
Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRp
b24oZXhlYywgZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIHB0cjsKLSAgICB9Ci0KLSAg
ICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICB2aXJ0dWFsIGJvb2wg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJiwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKLSAgICBzdGF0aWMgY29uc3QgSlND
OjpDbGFzc0luZm8gc19pbmZvOwotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCi0gICAgewotICAgICAgICBy
ZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
JnNfaW5mbyk7Ci0gICAgfQotcHJvdGVjdGVkOgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpJ
bXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBET01Db25zdHJ1Y3Rvck9iamVjdDo6U3RydWN0dXJlRmxh
Z3M7Ci19OwotCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VDb25zdHJ1Y3RvciIsICZET01Db25zdHJ1Y3Rvck9iamVjdDo6c19pbmZvLCAmSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZSwgMCwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25z
dHJ1Y3RvcikgfTsKIAogSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3Ry
dWN0b3I6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCmlu
ZGV4IGYxZmE0ZDQ0ZjBiZTVhMzA2MmI2Yjk3MDhhNGViYWFkMzY3NTM4NzEuLjQwOTBlNTk2ZDQ1
NzVlNjkzY2FjYWQyZjBhYzcwODNhOTNkMjU0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKQEAgLTg4LDYgKzg4LDMxIEBAIHBy
b3RlY3RlZDoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNl
OjpTdHJ1Y3R1cmVGbGFnczsKIH07CiAKK2NsYXNzIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZUNvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9yT2JqZWN0IHsKK3By
aXZhdGU6CisgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0
b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCopOworCitwdWJsaWM6
CisgICAgdHlwZWRlZiBET01Db25zdHJ1Y3Rvck9iamVjdCBCYXNlOworICAgIHN0YXRpYyBKU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHsKKyAgICAgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IqIHB0ciA9IG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3I+KCpleGVjLT5o
ZWFwKCkpKSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcihz
dHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZXhl
YywgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJ
ZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVy
JiwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFz
c0luZm8gc19pbmZvOworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4g
SlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5m
byk7CisgICAgfQorcHJvdGVjdGVkOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpJbXBsZW1l
bnRzSGFzSW5zdGFuY2UgfCBET01Db25zdHJ1Y3Rvck9iamVjdDo6U3RydWN0dXJlRmxhZ3M7Cit9
OworCiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdEludGVyZmFjZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdEludGVyZmFjZS5pZGwKaW5kZXggNzQ3NGRhY2QwMDg4MWZlNGI3NzZk
YjlmY2Q1NmExMWRiMTBlY2E0Yy4uYjUzN2NhOWM1ZjJjNDBkZWU1NjU4ZDI1MjljMTU0MmFlYzU3
M2Q2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RJbnRlcmZhY2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0SW50ZXJmYWNlLmlkbApAQCAtMzIsNyArMzIsNiBAQCBtb2R1bGUgdGVzdCB7CiAgICAg
aW50ZXJmYWNlIFsKICAgICAgICAgQ29uZGl0aW9uYWw9Q29uZGl0aW9uMXxDb25kaXRpb24yLAog
ICAgICAgICBDYW5CZUNvbnN0cnVjdGVkLAotICAgICAgICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0LAogICAgICAgICBDb25zdHJ1Y3RvcihpbiBET01TdHJpbmcgc3RyMSwgaW4gW09w
dGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01TdHJpbmcgc3RyMiksCiAgICAgICAgIENv
bnN0cnVjdG9yV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAgICAgICBWOENvbnN0cnVj
dG9yU2V0c0FjdGl2ZURPTVdyYXBwZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
V2ViS2l0Q1NTTWF0cml4LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXgu
aWRsCmluZGV4IDkwYWEzMzRlZjBiYzcwZTRiMmRkNDk4OTE3ZTY2MjhlZjgzYTI2Y2MuLmRiNTU4
YzI1NTEwNjAxYjhmYWJiZDM4M2U4ZjQ5ZTc2NDRkNmNjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9X
ZWJLaXRDU1NNYXRyaXguaWRsCkBAIC0yOCw3ICsyOCw2IEBAIG1vZHVsZSBjc3MgewogICAgIC8v
IEludHJvZHVjZWQgaW4gRE9NIExldmVsID86CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ2Fu
QmVDb25zdHJ1Y3RlZCwKLSAgICAgICAgQ3VzdG9tQ29uc3RydWN0RnVuY3Rpb24sCiAgICAgICAg
IENvbnN0cnVjdG9yUGFyYW1ldGVycz0xLAogICAgICAgICBDb25zdHJ1Y3RvcihpbiBbT3B0aW9u
YWw9Q2FsbFdpdGhOdWxsVmFsdWVdIERPTVN0cmluZyBjc3NWYWx1ZSksCiAgICAgICAgIENvbnN0
cnVjdG9yUmFpc2VzRXhjZXB0aW9uLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VDaGFubmVsLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlQ2hhbm5lbC5pZGwK
aW5kZXggYTNmM2M5NDhmNzgxZjQxMzY0NjA5ZTI3ZDY2NmExZjc0MWZkODgxNC4uN2IwODIxM2Y5
YWE0YWMyODk1MWVmNzYzMTdkZmI0NDQ4ZDgwYjQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VDaGFubmVsLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2Fn
ZUNoYW5uZWwuaWRsCkBAIC0yOCw3ICsyOCw4IEBAIG1vZHVsZSBldmVudHMgewogCiAgICAgaW50
ZXJmYWNlIFsKICAgICAgICAgQ2FuQmVDb25zdHJ1Y3RlZCwKLSAgICAgICAgQ3VzdG9tQ29uc3Ry
dWN0RnVuY3Rpb24sCisgICAgICAgIENvbnN0cnVjdG9yLAorICAgICAgICBDb25zdHJ1Y3Rvcldp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKICAgICAgICAgVjhDdXN0b21Db25zdHJ1Y3RvciwK
ICAgICAgICAgQ3VzdG9tTWFya0Z1bmN0aW9uLAogICAgICAgICBOb1N0YXRpY1RhYmxlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5pZGwKaW5kZXggYWE5OGIwOWU4MmJkMDAwZDY0ZTc4
MjQ5YTVlNmIzMzk2MjZjNzdjYS4uNDFlMjJlNGNjZTcxZGNlZWUxYTFkMDE1YmZjMTRlNGUzNDNi
YWZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaWRsCkBAIC0zNCw3ICszNCw2
IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgQ29uZGl0aW9uYWw9QkxPQiwKICAgICAgICAgQWN0
aXZlRE9NT2JqZWN0LAogICAgICAgICBDYW5CZUNvbnN0cnVjdGVkLAotICAgICAgICBDYWxsV2l0
aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAgICAgICBFdmVudFRhcmdldCwKICAgICAgICAg
Tm9TdGF0aWNUYWJsZXMsCiAgICAgICAgIENvbnN0cnVjdG9yLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
U291cmNlLmlkbAppbmRleCA2NjYyMmQ3YjZmNmE0ZWFhOWI4YjRjZjE1NjM2ZGJmNjRlOGRjNTMx
Li5iNTM5NDk4MTRhNmY4YjljNGNhODU4ODhmOTU4MzlmMGYwYzY5YzgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50U291cmNlLmlkbApAQCAtMzQsNyArMzQsNiBAQCBtb2R1bGUgd2luZG93IHsKICAg
ICBpbnRlcmZhY2UgWwogICAgICAgICBBY3RpdmVET01PYmplY3QsCiAgICAgICAgIENhbkJlQ29u
c3RydWN0ZWQsCi0gICAgICAgIEN1c3RvbUNvbnN0cnVjdEZ1bmN0aW9uLAogICAgICAgICBDb25z
dHJ1Y3RvclBhcmFtZXRlcnM9MSwKICAgICAgICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIHNj
cmlwdFVybCksCiAgICAgICAgIENvbnN0cnVjdG9yV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCBhZTUwYjQ4MTk1Yjg2MDEyYzhi
Yzg1MGM4ZmJmNDMwNmFhNjhlYjNjLi5jYTc2MzUzMWRiMjk4ZGUyZDQwNDQ1NGRjMTI1OWQzMjlh
MDE2MzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMjcsNiArMjcsNyBA
QAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiRm9ybURhdGEuaCIKICNpbmNs
dWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVl
c3RQcm9ncmVzc0V2ZW50VGhyb3R0bGUuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaWRsIGIvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmlkbAppbmRleCAyMDJiMzQxZTY1MjY5ZTliZjRjZjU3
OTc2NzViY2I4MWU4NGE1ZTZiLi4zNTA5MWYzNDFmMTQzMWY3OWE0ZWE5ZWIxZjBmZjRmY2UyYzBm
N2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5pZGwKQEAgLTMxLDcgKzMxLDgg
QEAgbW9kdWxlIHhtbCB7CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQWN0aXZlRE9NT2JqZWN0
LAogICAgICAgICBDYW5CZUNvbnN0cnVjdGVkLAotICAgICAgICBDdXN0b21Db25zdHJ1Y3RGdW5j
dGlvbiwKKyAgICAgICAgQ29uc3RydWN0b3IsCisgICAgICAgIENvbnN0cnVjdG9yV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LAogICAgICAgICBWOEN1c3RvbUNvbnN0cnVjdG9yLAogICAgICAg
ICBDdXN0b21NYXJrRnVuY3Rpb24sCiAgICAgICAgIEV2ZW50VGFyZ2V0LApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuaWRsIGIvU291cmNlL1dlYkNvcmUveG1s
L1hTTFRQcm9jZXNzb3IuaWRsCmluZGV4IDk1MTJiMzM3OGZlMGNiMWM5YjE4MDhjZmJkNzcxYWY5
YjNkYjViZGIuLmJkODc2YWM1NmI2NDVjOTQ3MzY2Yjk0MmQ2MDVhOGE0ZDBhMmY4NWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5pZGwKQEAgLTM1LDcgKzM1LDYgQEAgbW9kdWxlIHht
bCB7CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ29uZGl0aW9uYWw9WFNMVCwKICAgICAgICAg
Q2FuQmVDb25zdHJ1Y3RlZCwKLSAgICAgICAgQ3VzdG9tQ29uc3RydWN0RnVuY3Rpb24sCiAgICAg
ICAgIENvbnN0cnVjdG9yCiAgICAgXSBYU0xUUHJvY2Vzc29yIHsKICAgICAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110132</attachid>
            <date>2011-10-07 06:02:25 -0700</date>
            <delta_ts>2011-10-07 06:02:25 -0700</delta_ts>
            <desc>WIP patch: just see if build succeeds</desc>
            <filename>bug-65839-20111007220223.patch</filename>
            <type>text/plain</type>
            <size>121336</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY5MjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDRl
ZjY1ODM1NjM4NjBkOWUyNTNlYTE0MDc3MmUxOGI1ZjU0Y2JjNTIuLmJhZDQxZDEzODMyMzI4MzM3
OTY5NjJhNjIxMWE5NWIyYjNlNzQyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI0IEBACisyMDExLTEwLTA3ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBJbXBsZW1lbnQgW0NvbnN0cnVjdG9yXSBJREwgZm9yIEpTQworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU4MzkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHksIEpTQzo6
SlNWYWx1ZTo6dG9TdHJpbmcoKSBjcmFzaGVzIHdoZW4gd2UgcGFzcyBpdCBhbiBlbXB0eSBKU1Zh
bHVlLgorICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIGEgY2hhbmdlIHNvIHRoYXQgSlNDOjpKU1Zh
bHVlOjp0b1N0cmluZygpIHJldHVybnMgVVN0cmluZygpCisgICAgICAgIHdoZW4gdGhlIGVtcHR5
IEpTVmFsdWUgaXMgcGFzc2VkLgorCisgICAgICAgIFRlc3RzOiB0cmFuc2Zvcm1zL3N2Zy12cy1j
c3MueGh0bWwKKyAgICAgICAgICAgICAgIHRyYW5zZm9ybXMvY3NzbWF0cml4LTJkLWludGVyZmFj
ZS54aHRtbAorICAgICAgICAgICAgICAgdHJhbnNmb3Jtcy9jc3NtYXRyaXgtM2QtaW50ZXJmYWNl
LnhodG1sCisKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0M6OkpT
VmFsdWU6OnRvU3RyaW5nKTogUmV0dXJucyBVU3RyaW5nKCkgaWYgSlNWYWx1ZSBpcyBlbXB0eS4K
KyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWVJ
bmxpbmVNZXRob2RzLmg6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmlzRW1wdHkpOiBKdWRnZXMg
aWYgYSBnaXZlbiBKU1ZhbHVlIGlzIGVtcHR5IG9yIG5vdC4KKwogMjAxMS0xMC0wNiAgRmlsaXAg
UGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBzaG91bGQgbm90IGFsd2F5
cyBzcGVjdWxhdGUgdGhhdCBDb252ZXJ0VGhpcyBpcyBvcGVyYXRpbmcgb24gYW4gb2JqZWN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCAxYWM4NGY0OTM0YzA3
NWEzMmNlYmJjNDM0YjkxN2E2NzUzMWUwZGNmLi43NjNkMmViNmQyMTRjOWZiMGQ2OTgyMDY4Njlk
NTQwMjNjYTg5MWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgK
QEAgLTcwNSw2ICs3MDUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGlubGluZSBVU3RyaW5n
IEpTVmFsdWU6OnRvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICB7CisgICAgICAg
IGlmIChpc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gVVN0cmluZygpOwogICAgICAgICBp
ZiAoaXNTdHJpbmcoKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU1N0cmluZyo+
KGFzQ2VsbCgpKS0+dmFsdWUoZXhlYyk7CiAgICAgICAgIGlmIChpc0ludDMyKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKaW5kZXggMzYwYmFlZTk1MTI5M2RhMjg5M2Vj
NmEzYzM0ODAwZWMyYzQ5MzM4Yy4uMDBhMzU2NDBjYzkxMGE4MDdhNTdkYzNlYzA1ZmZiNWI5ZTBi
NWFlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaApAQCAtMTYxLDYg
KzE2MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBkb3VibGUgYXNOdW1iZXIoKSBjb25z
dDsKIAogICAgICAgICAvLyBRdWVyeWluZyB0aGUgdHlwZS4KKyAgICAgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNVbmRlZmluZWQoKSBjb25zdDsKICAgICAgICAgYm9v
bCBpc051bGwoKSBjb25zdDsKICAgICAgICAgYm9vbCBpc1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZUlubGlu
ZU1ldGhvZHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWVJbmxpbmVN
ZXRob2RzLmgKaW5kZXggNjFmOTI2NDJkYjhiMmY3NTU3NjFlZTA2MjM3ZGJjYTUxOWUxZDNjMi4u
ZTEzZDM0NzQ1NGM2ZDY2N2ExNjViYTFhZTg0NWQxODIxYTVkOTVkYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZUlubGluZU1ldGhvZHMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlSW5saW5lTWV0aG9kcy5oCkBAIC0y
MjMsNiArMjIzLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gdS5hc0ludDY0
ICE9IG90aGVyLnUuYXNJbnQ2NDsKICAgICB9CiAKKyAgICBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpp
c0VtcHR5KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiB0YWcoKSA9PSBFbXB0eVZhbHVl
VGFnOworICAgIH0KKwogICAgIGlubGluZSBib29sIEpTVmFsdWU6OmlzVW5kZWZpbmVkKCkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiB0YWcoKSA9PSBVbmRlZmluZWRUYWc7CkBAIC0zNjgs
NiArMzczLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gdS5wdHIgIT0gb3Ro
ZXIudS5wdHI7CiAgICAgfQogCisgICAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNFbXB0eSgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gdS5hc0ludDY0ID09IFZhbHVlRW1wdHk7CisgICAg
fQorCiAgICAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNVbmRlZmluZWQoKSBjb25zdAogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFzVmFsdWUoKSA9PSBKU1ZhbHVlKEpTVW5kZWZpbmVkKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBhYzU3OTRlMTdlN2M3ZWViOGY3Mzc2NmI5MzA0YzViYTkwOWZmMmVkLi5lY2FmMzE4
OGIwM2MwYzFiNTc0MGU2ZGJkOWZiMzNlNTJhZjBjNGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTM1IEBACisyMDExLTEwLTA3ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4K
KworICAgICAgICBJbXBsZW1lbnQgW0NvbnN0cnVjdG9yXSBJREwgZm9yIEpTQworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU4MzkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgc3BlYyBmb3IgW0NvbnN0
cnVjdG9yXSBJREwgaXMgaGVyZTogaHR0cDovL3d3dy53My5vcmcvVFIvV2ViSURMLyNDb25zdHJ1
Y3RvcgorCisgICAgICAgIFsxXSBJbnRyb2R1Y2VkIFtDb25zdHJ1Y3Rvcl0gSURMIGZvciBKU0Mu
CisKKyAgICAgICAgWzJdIEFkZGVkICdDb25zdHJ1Y3RvcldpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCcgZm9yIEpTQy4KKyAgICAgICAgLSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGlzIHBhc3Nl
ZCB0byBhIFhYWDo6Y3JlYXRlKCkgbWV0aG9kLAorICAgICAgICBsaWtlIFhYWDo6Y3JlYXRlKC4u
LiwgY29udGV4dCwgLi4uKS4KKyAgICAgICAgLSBXZSBkZXByZWNhdGVkICdDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0JyBmb3IgY29uc3RydWN0b3JzCisgICAgICAgIHNpbmNlIGl0IGhh
cyB0aGUgc2FtZSBtZWFuaW5nIGFzICdDb25zdHJ1Y3RvcldpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCcuCisKKyAgICAgICAgWzNdIEFkZGVkICdDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbicg
Zm9yIEpTQy4KKyAgICAgICAgLSBBIHBsYWNlaG9sZGVyIGZvciBFeGNlcHRpb25Db2RlIGlzIHBh
c3NlZCB0byBhIFhYWDo6Y3JlYXRlKCkgbWV0aG9kLAorICAgICAgICBsaWtlIFhYWDo6Y3JlYXRl
KC4uLiwgZWMpLgorICAgICAgICAtIFdlIGNhbiB1c2UgJ0NvbnN0cnVjdG9yUmFpc2VzRXhjZXB0
aW9uJyBhbmQgJ0NvbnN0cnVjdG9yV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0JyB0b2dldGhl
ci4KKworICAgICAgICBOb3RlczoKKyAgICAgICAgLSBXZSBkbyBub3QgeWV0IHN1cHBvcnQgY29u
c3RydWN0b3Igb3ZlcmxvYWRpbmcuCisgICAgICAgIC0gV2UgZG8gbm90IHlldCBzdXBwb3J0IFtP
cHRpb25hbF0gd2l0aG91dCBDYWxsV2l0aERlZmF1bHRWYWx1ZSBub3IgQ2FsbFdpdGhOdWxsVmFs
dWUKKyAgICAgICAgZm9yIGNvbnN0cnVjdG9yIGFyZ3VtZW50cy4KKworICAgICAgICBUZXN0czog
ZmFzdC9kb20vV2luZG93L2N1c3RvbS1jb25zdHJ1Y3RvcnMuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy5odG1sCisgICAgICAgICAgICAgICBmYXN0L3hz
bC94c2x0LXByb2Nlc3Nvci5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50c291cmNlL2V2
ZW50c291cmNlLWNvbnN0cnVjdG9yLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzb3Vy
Y2UvZXZlbnRzb3VyY2UtYXR0cmlidXRlLWxpc3RlbmVycy5odG1sCisgICAgICAgICAgICAgICB0
cmFuc2Zvcm1zL3N2Zy12cy1jc3MueGh0bWwKKyAgICAgICAgICAgICAgIHRyYW5zZm9ybXMvY3Nz
bWF0cml4LTJkLWludGVyZmFjZS54aHRtbAorICAgICAgICAgICAgICAgdHJhbnNmb3Jtcy9jc3Nt
YXRyaXgtM2QtaW50ZXJmYWNlLnhodG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9YTUxIdHRw
UmVxdWVzdC1jb25zdGFudHMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20veG1saHR0cHJl
cXVlc3QtY29uc3RydWN0b3ItaW4tZGV0YWNoZWQtZG9jdW1lbnQuaHRtbAorICAgICAgICAgICAg
ICAgaHR0cC90ZXN0cy9zZWN1cml0eS9jb29raWVzL3htbGh0dHByZXF1ZXN0Lmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvZmlsZXMvZmlsZS1yZWFkZXItYWJvcnQuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC9maWxlcy9ibG9iLXNsaWNlLXRlc3QuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9l
dmVudHMvbWVzc2FnZS1wb3J0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzL21lc3Nh
Z2UtcG9ydC1uby13cmFwcGVyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL1dpbmRvdy93
aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy5odG1sCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0
LmFtOiBSZW1vdmVkIEpTRXZlbnRTb3VyY2VDdXN0b20uY3BwIGFuZCBKU1dlYktpdENTU01hdHJp
eEN1c3RvbS5jcHAuCisgICAgICAgICogVXNlSlNDLmNtYWtlOiBEaXR0by4KKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUucHJvOiBEaXR0by4KKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6IERpdHRvLgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCBp
bmRleCwgcG9saWN5KSByZXR1cm5zIHRoZSBpbmRleC10aCBwYXJhbWV0ZXIsIGlmIHRoZSBwYXJh
bWV0ZXIgZXhpc3RzLiBJdCByZXR1cm5zIGFuIHVuZGVmaW5lZCB2YWx1ZSwgaWYgdGhlIGluZGV4
LXRoIHBhcmFtZXRlciBpcyBtaXNzaW5nIGFuZCB0aGUgcG9saWN5IGlzIE1pc3NpbmdJc1VuZGVm
aW5lZC4gSXQgcmV0dXJucyBhbiBlbXB0eSB2YWx1ZSwgb3RoZXJ3aXNlIChpLmUuIGlmIHRoZSBp
bmRleC10aCBwYXJhbWV0ZXIgaXMgbWlzc2luZyBhbmQgdGhlIHBvbGljeSBpcyBNaXNzaW5nSXNF
bXB0eSkuCisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFNvdXJjZUN1c3RvbS5jcHA6IFJl
bW92ZWQgdGhpcyBmaWxlLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxD
dXN0b20uY3BwOiBSZW1vdmVkIGEgY3VzdG9tIGNvbnN0cnVjdG9yLgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTV2ViS2l0Q1NTTWF0cml4Q3VzdG9tLmNwcDogUmVtb3ZlZCB0aGlzIGZpbGUuCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6IFJlbW92ZWQg
YSBjdXN0b20gY29uc3RydWN0b3IuCisgICAgICAgICogYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vz
c29yQ3VzdG9tLmNwcDogRGl0dG8uCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG06IERpdHRvLgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOiBHZW5lcmF0ZXMg
Y29uc3RydWN0b3IgZGVjbGFyYXRpb24gY29kZSB0byBhIGhlYWRlciBmaWxlLCBpZiBhIGdpdmVu
IERPTSBvYmplY3QgaGFzIGNvbnN0cnVjdG9yLgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbik6IFVzZXMgR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKCkgYW5kIEdlbmVyYXRlUGFy
YW1ldGVyc0NoZWNrKCkuCisgICAgICAgIChHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2spOiBT
cGxpdHMgb3V0IG9mIEdlbmVyYXRlSW1wbGVtZW50YXRpb24oKSBmb3IgcmV1c2UuCisgICAgICAg
IChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6IFNwbGl0cyBvdXQgb2YgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbigpIGZvciByZXVzZS4gQWNjZXNzZXMgcGFyYW1ldGVycyB1c2luZyBNQVlCRV9NSVNT
SU5HX1BBUkFNRVRFUigpIG1hY3JvLCBpbnN0ZWFkIG9mIGV4ZWMtPmFyZ3VtZW50KGluZGV4KS4K
KyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKTogR2VuZXJhdGVzIGNvbnN0
cnVjdG9yIGRlZmluaXRpb24gY29kZS4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOiBEZXByZWNh
dGVzICdDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0Jy4KKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RJbnRlcmZhY2UpOiBV
cGRhdGVkIHRoZSBydW4tYmluZGluZy10ZXN0cyByZXN1bHRzLgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOiBEaXR0by4K
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyUHJvdG90eXBlRnVuY3Rpb25NZXRob2QpOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yOjpjcmVhdGUp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJD
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKTogRGl0dG8uCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZFdpdGhBcmdzKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkludE1ldGhvZCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25JbnRNZXRo
b2RXaXRoQXJncyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PYmpNZXRob2QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0aEFyZ3MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJncyk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNlcmlhbGl6ZWRWYWx1ZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25JZGJLZXkpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3B0aW9uc09iamVj
dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoRXhjZXB0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkN1c3RvbUFyZ3NBbmRFeGNlcHRpb24pOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lcik6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25SZW1vdmVF
dmVudExpc3RlbmVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aER5bmFtaWNGcmFtZUFuZEFyZyk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRHluYW1pY0Zy
YW1lQW5kT3B0aW9uYWxBcmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uV2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0dXJlKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEeW5hbWljRnJh
bWVBbmRVc2VyR2VzdHVyZUFTQUQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmopOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNj
cmlwdFN0YXRlVm9pZEV4Y2VwdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24pOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0Fu
ZE9wdGlvbmFsQXJnKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoQ2FsbGJhY2tBcmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmcpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QxKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMik6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25k
aXRpb25hbE1ldGhvZDMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDIpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZDQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2QpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoT3B0
aW9uYWwpOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6Y3JlYXRlKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3Ry
dWN0dXJlKTogRGl0dG8uCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29u
c3RydWN0b3I6OmNyZWF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6IERp
dHRvLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW50ZXJmYWNlLmlkbDog
RGVwcmVjYXRlcyAnQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCcuCisgICAgICAgICog
Y3NzL1dlYktpdENTU01hdHJpeC5pZGw6IE1ha2VzIFdlYktpdENTU01hdHJpeCBjb25zdHJ1Y3Rp
YmxlLgorICAgICAgICAqIGRvbS9NZXNzYWdlQ2hhbm5lbC5pZGw6IE1ha2VzIE1lc3NhZ2VDaGFu
bmVsIGNvbnN0cnVjdGlibGUuCisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyLmlkbDogRGVw
cmVjYXRlcyAnQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCcuCisgICAgICAgICogcGFn
ZS9FdmVudFNvdXJjZS5pZGw6IE1ha2VzIEV2ZW50U291cmNlIGNvbnN0cnVjdGlibGUuCisgICAg
ICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0
LmlkbDogTWFrZXMgWE1MSHR0cFJlcXVlc3QgY29uc3RydWN0aWJsZS4KKyAgICAgICAgKiB4bWwv
WFNMVFByb2Nlc3Nvci5pZGw6IE1ha2VzIFhTTFRQcm9jZXNzb3IgY29uc3RydWN0aWJsZS4KKwog
MjAxMS0xMC0wNyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgRWxlbWVudHMgYW5kIE5ldHdvcmsgcGFuZWxzIHRvIHRo
ZSBjb21waWxhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZjEzNDQ5NTQw
MWI1ZmU1YjM2NTI0YWRlYjRhZjI4ZWZhYzk4YzUzNS4uZGI0ZjEzMzA5ZWZjMTM5ODI2M2FkOTc3
NWZkYTVkZTU0NDIxNTk3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC03MjUs
NyArNzI1LDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0V2ZW50Q29uc3RydWN0b3JzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudExpc3RlbmVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNF
dmVudExpc3RlbmVyLmggXAotCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRTb3Vy
Y2VDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5jcHAgXApAQCAtODIyLDcg
KzgyMSw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXZWJLaXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dlYktpdENTU0tleWZyYW1lc1J1bGVDdXN0b20uY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgXAot
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0Q1NTTWF0cml4Q3VzdG9tLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRQb2ludEN1c3RvbS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5jcHAgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvVXNlSlND
LmNtYWtlCmluZGV4IGUxNmUyZDlkY2E1ZDY1M2Q4ODIyZjU0N2RlZDM1NTcxZjQxMGI2ZDUuLjEw
NWJlZWNjZDVjNjY2Y2FkMTMyMWYwMmU3ZmEwYmRmNTczYTIyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UK
QEAgLTU0LDcgKzU0LDYgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGlu
Z3MvanMvSlNFdmVudENvbnN0cnVjdG9ycy5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50Q3Vz
dG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKLSAgICBiaW5kaW5n
cy9qcy9KU0V2ZW50U291cmNlQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJn
ZXQuY3BwCiAgICAgYmluZGluZ3MvanMvSlNFeGNlcHRpb25CYXNlLmNwcAogICAgIGJpbmRpbmdz
L2pzL0pTRmxvYXQzMkFycmF5Q3VzdG9tLmNwcApAQCAtMTIxLDcgKzEyMCw2IEBAIExJU1QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9uTGlz
dEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU1dlYktpdENTU0tleWZyYW1lUnVsZUN1c3Rv
bS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU1dlYktpdENTU0tleWZyYW1lc1J1bGVDdXN0b20uY3Bw
Ci0gICAgYmluZGluZ3MvanMvSlNXZWJLaXRDU1NNYXRyaXhDdXN0b20uY3BwCiAgICAgYmluZGlu
Z3MvanMvSlNXZWJLaXRQb2ludEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU1hNTEh0dHBS
ZXF1ZXN0Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RVcGxvYWRD
dXN0b20uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMWRiMDAxMjBiODg4MDgzZjM3ZTQyOWJhYzU3
MDRmZTkwNmIwNTcyNS4uYjgxMjFmMWE3OGY0MTBiOTJjNTJlMzY3MDEwODg1ZTJlMGM3MmFkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTgzMCw3ICsxODMwLDYgQEAKICAgICAgICAgICAgICdiaW5k
aW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNF
dmVudExpc3RlbmVyLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNFdmVudExpc3Rl
bmVyLmgnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRXZlbnRTb3VyY2VDdXN0b20uY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5oJywKICAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU0V4Y2VwdGlvbkJhc2UuY3BwJywKQEAgLTE5MjYsNyArMTkyNSw2IEBACiAgICAgICAg
ICAgICAnYmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRpb25MaXN0Q3VzdG9tLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvanMvSlNXZWJLaXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20uY3BwJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1dlYktpdENTU0tleWZyYW1lc1J1bGVDdXN0b20u
Y3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1dlYktpdENTU01hdHJpeEN1c3RvbS5j
cHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTV2ViS2l0UG9pbnRDdXN0b20uY3BwJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHAnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuY3BwJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8K
aW5kZXggYmFjNDQxZGU1ZTFhZWMyM2U2ZTZkMTRjNWY0YzM1NzZkMjI4ZWIzMy4uZGZlZDc5N2Zl
Y2NkNGNjZTM5YmI0OGRkOTI5ZWViM2U4YTNmOGFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTI3NCw3
ICsyNzQsNiBAQCB2OCB7CiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRDb25zdHJ1Y3RvcnMu
Y3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAgXAogICAgICAgICBi
aW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwIFwKLSAgICAgICAgYmluZGluZ3MvanMvSlNF
dmVudFNvdXJjZUN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0
LmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRXhjZXB0aW9uQmFzZS5jcHAgXAogICAgICAg
ICBiaW5kaW5ncy9qcy9KU0ZpbGVSZWFkZXJDdXN0b20uY3BwIFwKQEAgLTM0MSw3ICszNDAsNiBA
QCB2OCB7CiAgICAgICAgIGJpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9uTGlzdEN1c3RvbS5j
cHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1dlYktpdENTU0tleWZyYW1lUnVsZUN1c3RvbS5j
cHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1dlYktpdENTU0tleWZyYW1lc1J1bGVDdXN0b20u
Y3BwIFwKLSAgICAgICAgYmluZGluZ3MvanMvSlNXZWJLaXRDU1NNYXRyaXhDdXN0b20uY3BwIFwK
ICAgICAgICAgYmluZGluZ3MvanMvSlNXZWJLaXRQb2ludEN1c3RvbS5jcHAgXAogICAgICAgICBi
aW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdz
L2pzL0pTWE1MSHR0cFJlcXVlc3RVcGxvYWRDdXN0b20uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5NzAxNDRiMzUzNGYz
OTkzNzNlMWY0ZWYxNTM4MGM2YjIwZmIxNDkwLi4yOTViNmMwNmFmZWQ2ZjkyNDgxYTUwZWM1NGNi
ZTFjMTI3MDBjNTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC00OTQ0LDggKzQ5NDQsNiBAQAogCQlCQzI3NEIyRjE0MEVCRUIy
MDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI3NEIyRTE0MEVCRUIyMDBFQURGQTYgLyog
Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggKi87IH07CiAJCUJDMjc0QjMxMTQwRUJFRDgwMEVB
REZBNiAvKiBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNzRCMzAxNDBFQkVEODAwRUFERkE2IC8qIENT
U0JvcmRlckltYWdlU2xpY2VWYWx1ZS5jcHAgKi87IH07CiAJCUJDMjc1Qjc5MTFDNUQxQzMwMEM5
MjA2QyAvKiBKU1dlYktpdFBvaW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjc1Qjc4MTFDNUQxQzMwMEM5MjA2QyAvKiBKU1dlYktp
dFBvaW50Q3VzdG9tLmNwcCAqLzsgfTsKLQkJQkMyNzVCN0QxMUM1RDIzNTAwQzkyMDZDIC8qIEpT
V2ViS2l0Q1NTTWF0cml4Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDMjc1QjdDMTFDNUQyMzUwMEM5MjA2QyAvKiBKU1dlYktpdENTU01h
dHJpeEN1c3RvbS5jcHAgKi87IH07Ci0JCUJDMjc1QjgxMTFDNUQyQjQwMEM5MjA2QyAvKiBKU0V2
ZW50U291cmNlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDMjc1QjgwMTFDNUQyQjQwMEM5MjA2QyAvKiBKU0V2ZW50U291cmNlQ3VzdG9t
LmNwcCAqLzsgfTsKIAkJQkMyNzVDQjMxMUM1RTg1QzAwQzkyMDZDIC8qIEpTQXJyYXlCdWZmZXJD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkMyNzVDQjIxMUM1RTg1QzAwQzkyMDZDIC8qIEpTQXJyYXlCdWZmZXJDdXN0b20uY3BwICovOyB9
OwogCQlCQzJDQkY0RTE0MEYxQUJEMDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyQ0JGNEIxNDBG
MUE2NTAwMzg3OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuaCAqLzsgfTsKIAkJQkMyQ0JGN0Ix
NDBGMUQ1ODAwMzg3OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyQ0JGN0ExNDBGMUQ1ODAwMzg3OUJF
IC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuY3BwICovOyB9OwpAQCAtMTIxODUsOCArMTIxODMsNiBA
QAogCQlCQzI3NEIyRTE0MEVCRUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0JvcmRlckltYWdlU2xpY2VW
YWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzI3NEIzMDE0MEVCRUQ4MDBF
QURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMjc1Qjc4MTFDNUQxQzMwMEM5MjA2QyAvKiBKU1dlYktp
dFBvaW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
V2ViS2l0UG9pbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzI3
NUI3QzExQzVEMjM1MDBDOTIwNkMgLyogSlNXZWJLaXRDU1NNYXRyaXhDdXN0b20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJLaXRDU1NNYXRyaXhDdXN0b20u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzI3NUI4MDExQzVEMkI0MDBDOTIw
NkMgLyogSlNFdmVudFNvdXJjZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0V2ZW50U291cmNlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkMyNzVDQjIxMUM1RTg1QzAwQzkyMDZDIC8qIEpTQXJyYXlCdWZmZXJDdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBcnJheUJ1ZmZlckN1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMkNCRjRCMTQwRjFBNjUw
MDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTV2ViR0xDb250ZXh0RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkMyQ0JGN0ExNDBGMUQ1ODAwMzg3OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTENvbnRleHRFdmVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTU0NCw3ICsxOTU0MCw2IEBA
CiAJCQkJODkzQzQ3Q0ExMjNFRUJBMjAwMkIzRDg2IC8qIEpTRW50cnlDdXN0b20uY3BwICovLAog
CQkJCTg5M0M0ODUyMTI0OTlCMDYwMDJCM0Q4NiAvKiBKU0VudHJ5U3luY0N1c3RvbS5jcHAgKi8s
CiAJCQkJQkNFRkFGNEQwQzMxN0U2OTAwRkE4MUY2IC8qIEpTRXZlbnRDdXN0b20uY3BwICovLAot
CQkJCUJDMjc1QjgwMTFDNUQyQjQwMEM5MjA2QyAvKiBKU0V2ZW50U291cmNlQ3VzdG9tLmNwcCAq
LywKIAkJCQkyRTc1ODJFRDEyNzY0RjI2MDA2MjYyOEIgLyogSlNGaWxlUmVhZGVyQ3VzdG9tLmNw
cCAqLywKIAkJCQk0OUVFQ0Y3MjEwNTA4RDlDMDAwOTlGQUIgLyogSlNGbG9hdDMyQXJyYXlDdXN0
b20uY3BwICovLAogCQkJCTZFQkM1RDg0MTM4QjRDRTAwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJh
eUN1c3RvbS5jcHAgKi8sCkBAIC0xOTYyMSw3ICsxOTYxNiw2IEBACiAJCQkJMzE5NDYyMzExMzAy
MkY2NTAwNEJCM0Y4IC8qIEpTV2ViS2l0QW5pbWF0aW9uTGlzdEN1c3RvbS5jcHAgKi8sCiAJCQkJ
RTFBRDE0QzQxMjk3MzU0OTAwQUNBOTg5IC8qIEpTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlQ3VzdG9t
LmNwcCAqLywKIAkJCQlFMUFEMTRCNDEyOTczNENBMDBBQ0E5ODkgLyogSlNXZWJLaXRDU1NLZXlm
cmFtZXNSdWxlQ3VzdG9tLmNwcCAqLywKLQkJCQlCQzI3NUI3QzExQzVEMjM1MDBDOTIwNkMgLyog
SlNXZWJLaXRDU1NNYXRyaXhDdXN0b20uY3BwICovLAogCQkJCUJDMjc1Qjc4MTFDNUQxQzMwMEM5
MjA2QyAvKiBKU1dlYktpdFBvaW50Q3VzdG9tLmNwcCAqLywKIAkJCQk1MThBMzRDNjEwMjZDOEM5
MDAxQjY4OTYgLyogSlNXZWJTb2NrZXRDdXN0b20uY3BwICovLAogCQkJCUUxODI1OEFCMEVGM0NE
NzAwMDkzMzI0MiAvKiBKU1dvcmtlckNvbnRleHRDdXN0b20uY3BwICovLApAQCAtMjYwNTYsNyAr
MjYwNTAsNiBAQAogCQkJCUJDNjBEOUJGMEQyQTI2OUEwMEI5OTE4RiAvKiBKU0V2ZW50RXhjZXB0
aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzQjcwRDY5MDlFQjBDN0MwMDlEODQ2OCAvKiBK
U0V2ZW50TGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTBGRUYzNzJCNDdDNTNFQUMx
QzFGQkVFIC8qIEpTRXZlbnRTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQkMyNzVCODEx
MUM1RDJCNDAwQzkyMDZDIC8qIEpTRXZlbnRTb3VyY2VDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkM2MDkwMjAwRTkxQjhFQzAwMEM2OEI1IC8qIEpTRXZlbnRUYXJnZXQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMzMxNEFDRUIxMDg5MjA4NjAwMEYwRTU2IC8qIEpTRXhjZXB0aW9uQmFz
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzAwRjAxNDBFMEExODk1MDBGRDA0RTMgLyogSlNG
aWxlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjY0OTksNyArMjY0OTIsNiBAQAogCQkJCTMxNkZF
MDczMEU2Q0NCRUUwMEJGNjA4OCAvKiBKU1dlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRTFBRDE0QjUxMjk3MzRDQTAwQUNBOTg5IC8qIEpTV2ViS2l0Q1NTS2V5
ZnJhbWVzUnVsZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTgzOTEzRjBGMUU3Njc1
MDBDMjM3ODIgLyogSlNXZWJLaXRDU1NNYXRyaXguY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQkMy
NzVCN0QxMUM1RDIzNTAwQzkyMDZDIC8qIEpTV2ViS2l0Q1NTTWF0cml4Q3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTMxNjExRTVBMEUxQzRERTAwMEY2QTU3OSAvKiBKU1dlYktpdENTU1Ry
YW5zZm9ybVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg5ODc4NUI0MTIyQ0EyQTcwMDNB
QUJEQSAvKiBKU1dlYktpdEZsYWdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzRjFENUMwMTJE
NTMzNTYwMDgzMkJFQyAvKiBKU1dlYktpdExvc2VDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAK
aW5kZXggOWI0OTljZDA4MzhiY2Y5MTA4MTRhNzkyYTVlYjJjYTJiZDM4ZjRjOS4uNTI2MzYyZDY0
ZmMzZTkwMWUyY2U5ZGRhZjdjOTdlMjczYmI2MjI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCkBAIC03NSw3ICs3NSw2IEBACiAj
aW5jbHVkZSAiSlNFdmVudENvbnN0cnVjdG9ycy5jcHAiCiAjaW5jbHVkZSAiSlNFdmVudEN1c3Rv
bS5jcHAiCiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmNwcCIKLSNpbmNsdWRlICJKU0V2ZW50
U291cmNlQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0V2ZW50VGFyZ2V0LmNwcCIKICNpbmNsdWRl
ICJKU0V4Y2VwdGlvbkJhc2UuY3BwIgogI2luY2x1ZGUgIkpTRmxvYXQzMkFycmF5Q3VzdG9tLmNw
cCIKQEAgLTE1MSw3ICsxNTAsNiBAQAogI2luY2x1ZGUgIkpTV2ViS2l0QW5pbWF0aW9uTGlzdEN1
c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20uY3BwIgog
I2luY2x1ZGUgIkpTV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZUN1c3RvbS5jcHAiCi0jaW5jbHVkZSAi
SlNXZWJLaXRDU1NNYXRyaXhDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0UG9pbnRDdXN0
b20uY3BwIgogI2luY2x1ZGUgIkpTV2ViU29ja2V0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1dv
cmtlckNvbnRleHRCYXNlLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmgKaW5kZXggNzgwYzYzODM2NjRhMmI5NjVmOTZmNjk1MzBhNjQxODY4NjJiZjEzNS4uMjI4
YjNjNjZlYzRlNWJjNzNmNmQyM2JmZGVlYWYyMzAwMmE0NzNhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTM3LDYgKzM3LDEzIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorZW51bSBQYXJhbWV0ZXJNaXNzaW5nUG9saWN5IHsKKyAgICBNaXNzaW5n
SXNVbmRlZmluZWQsCisgICAgTWlzc2luZ0lzRW1wdHkKK307CisKKyNkZWZpbmUgTUFZQkVfTUlT
U0lOR19QQVJBTUVURVIoZXhlYywgaW5kZXgsIHBvbGljeSkgKCgocG9saWN5KSA9PSBNaXNzaW5n
SXNFbXB0eSAmJiAoaW5kZXgpID49IChleGVjKS0+YXJndW1lbnRDb3VudCgpKSA/IChKU1ZhbHVl
KCkpIDogKChleGVjKS0+YXJndW1lbnQoaW5kZXgpKSkKKwogICAgIGNsYXNzIEZyYW1lOwogICAg
IGNsYXNzIEtVUkw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRTb3VyY2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dFNvdXJjZUN1c3RvbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2MWMzZGU1
NzdiYTFmMjVmYjcwOWI1YzhkZGVkNzdjMTg2ZjdlYzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dFNvdXJjZUN1c3RvbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA5IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogICAgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogICAg
ZGlzdHJpYnV0aW9uLgotICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBFcmljc3NvbiBub3IgdGhl
IG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcwotICogICAgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNFdmVudFNvdXJjZS5oIgotCi0jaW5jbHVkZSAi
RXZlbnRTb3VyY2UuaCIKLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KLQotdXNp
bmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEpTRXZlbnRTb3VyY2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNFdmVu
dFNvdXJjZShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQo
KSA8IDEpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpKTsKLQotICAgIFVTdHJpbmcgdXJsID0gZXhl
Yy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7Ci0KLSAgICBK
U0V2ZW50U291cmNlQ29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3IgPSAgc3RhdGljX2Nhc3Q8SlNF
dmVudFNvdXJjZUNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwotICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQgPSBqc0NvbnN0cnVjdG9yLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJFdmVudFNvdXJjZSBjb25zdHJ1Y3RvciBh
c3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlIikpOwotCi0gICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgUmVmUHRyPEV2ZW50U291cmNlPiBldmVudFNvdXJjZSA9IEV2ZW50U291
cmNlOjpjcmVhdGUodXN0cmluZ1RvU3RyaW5nKHVybCksIGNvbnRleHQsIGVjKTsKLSAgICBpZiAo
ZWMpIHsKLSAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwotICAgIH0KLQotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3Qo
KSwgZXZlbnRTb3VyY2UucmVsZWFzZSgpKSkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVs
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxD
dXN0b20uY3BwCmluZGV4IDhhMDQ3YTEyMDY5MTI2OWI1YWMyNzg3ZGNiYmRmODc1NWJkMzNkMTku
LmJlZWEzMmU1YzRjZmE4YWEyNmFhNWNiM2I3NjU3YjBmZDQ5Nzk1M2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCkBA
IC00OCwxNCArNDgsNCBAQCB2b2lkIEpTTWVzc2FnZUNoYW5uZWw6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICAgICAgdmlzaXRvci5hZGRPcGFx
dWVSb290KHBvcnQpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTTWVzc2Fn
ZUNoYW5uZWxDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNNZXNzYWdlQ2hhbm5lbChFeGVjU3RhdGUq
IGV4ZWMpCi17Ci0gICAgSlNNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yKiBqc0NvbnN0cnVjdG9y
ID0gc3RhdGljX2Nhc3Q8SlNNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVl
KCkpOwotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBqc0NvbnN0cnVjdG9y
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJNZXNz
YWdlQ2hhbm5lbCBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxl
IikpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGpz
Q29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBNZXNzYWdlQ2hhbm5lbDo6Y3JlYXRlKGNvbnRl
eHQpKSkpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdENTU01hdHJpeEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdENTU01hdHJpeEN1c3RvbS5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjZmRkYTM4MjZhZmI4OTYxNDM5ZDAwYjg3OWE1ZDRlODZj
ZjZjZDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRDU1NNYXRyaXhDdXN0b20uY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNXZWJLaXRD
U1NNYXRyaXguaCIKLQotI2luY2x1ZGUgIldlYktpdENTU01hdHJpeC5oIgotCi11c2luZyBuYW1l
c3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNXZWJLaXRD
U1NNYXRyaXgoRXhlY1N0YXRlKiBleGVjKQotewotICAgIEpTV2ViS2l0Q1NTTWF0cml4Q29uc3Ry
dWN0b3IqIGpzQ29uc3RydWN0b3IgPSBzdGF0aWNfY2FzdDxKU1dlYktpdENTU01hdHJpeENvbnN0
cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwotICAgIFN0cmluZyBzOwotICAgIGlmIChleGVjLT5h
cmd1bWVudENvdW50KCkgPj0gMSkKLSAgICAgICAgcyA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5h
cmd1bWVudCgwKS50b1N0cmluZyhleGVjKSk7Ci0gICAgCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgUmVmUHRyPFdlYktpdENTU01hdHJpeD4gbWF0cml4ID0gV2ViS2l0Q1NTTWF0cml4
OjpjcmVhdGUocywgZWMpOwotICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywganNDb25zdHJ1Y3Rv
ci0+Z2xvYmFsT2JqZWN0KCksIFdlYktpdENTU01hdHJpeCwgbWF0cml4LmdldCgpKSk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKaW5kZXggNjJmNjE2OTk4YThlNzhmY2U4
MGI4ZGUwMjg0ZDA3MTg4ZWMyNjAzZC4uMDc4YjRiNTA2NzRlZDAzYjE4MjJjNzUxZGNlNmQ1YTcx
ZGM3YTM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRw
UmVxdWVzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxI
dHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTIwMywxNSArMjAzLDQgQEAgSlNWYWx1ZSBKU1hNTEh0
dHBSZXF1ZXN0OjpyZXNwb25zZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNYTUxIdHRw
UmVxdWVzdENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1hNTEh0dHBSZXF1ZXN0KEV4ZWNTdGF0ZSog
ZXhlYykKLXsKLSAgICBKU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3Ig
PSBzdGF0aWNfY2FzdDxKU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUo
KSk7Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGpzQ29uc3RydWN0b3It
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgIlhNTEh0
dHBSZXF1ZXN0IGNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZG9jdW1lbnQgaXMgdW5hdmFpbGFibGUi
KSk7Ci0KLSAgICBSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IHhtbEh0dHBSZXF1ZXN0ID0gWE1MSHR0
cFJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKENS
RUFURV9ET01fV1JBUFBFUihleGVjLCBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgWE1M
SHR0cFJlcXVlc3QsIHhtbEh0dHBSZXF1ZXN0LmdldCgpKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFBy
b2Nlc3NvckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9j
ZXNzb3JDdXN0b20uY3BwCmluZGV4IGFlZDdjZGQ5YzcxYTk5YTUyN2MzNDI3MGM1OGFlYzFlMmE4
ZTI4MDEuLmU2NjkzMDNlMDE4MzgxYTU5ZmFlMDA1MGIxODM2MDc0ZDdhM2VmMDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNw
cApAQCAtMTE2LDEyICsxMTYsNiBAQCBKU1ZhbHVlIEpTWFNMVFByb2Nlc3Nvcjo6cmVtb3ZlUGFy
YW1ldGVyKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1hTTFRQcm9jZXNzb3JDb25zdHJ1Y3Rvcjo6
Y29uc3RydWN0SlNYU0xUUHJvY2Vzc29yKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU1hTTFRQ
cm9jZXNzb3JDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IHN0YXRpY19jYXN0PEpTWFNMVFBy
b2Nlc3NvckNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9i
amVjdCgpLCBYU0xUUHJvY2Vzc29yLCBYU0xUUHJvY2Vzc29yOjpjcmVhdGUoKS5nZXQoKSkpOwot
fQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoWFNMVCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
aW5kZXggMWM4NzYwZjJkNTNlNjRmODc1OTY2MmZjMDI1MDk5MTc1ZmRhZGM5Mi4uYWU2ZDI3Nzg5
NTkwNTY2N2E2OTMzYjdlODMzOTk1NmQxMDhlMzdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTEwNjksMTIgKzEwNjks
MTEgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAifTtc
blxuIik7CiAKLSAgICAjIENvbmRpdGlvbmFsbHkgZW1pdCB0aGUgY29uc3RydWN0b3Igb2JqZWN0
J3MgZGVjbGFyYXRpb24KLSAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SlNDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkN1c3RvbUNvbnN0cnVjdG9yIn0pIHsKKyAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiSlNDdXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn0gfHwgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Ik9taXRDb25zdHJ1Y3RvciJ9KSB7CisgICAgICAgICRoZWFkZXJJbmNsdWRlc3si
SlNET01CaW5kaW5nLmgifSA9IDE7CiAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJh
dGlvbihcQGhlYWRlckNvbnRlbnQsICRjbGFzc05hbWUsICRkYXRhTm9kZSk7CiAgICAgfQogCi0K
ICAgICBpZiAoJG51bUZ1bmN0aW9ucyA+IDApIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwiLy8gRnVuY3Rpb25zXG5cbiIpOwogICAgICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHsk
ZGF0YU5vZGUtPmZ1bmN0aW9uc30pIHsKQEAgLTEzNjIsOCArMTM2MSw2IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkY29kZUdlbmVyYXRv
ci0+R2VuZXJhdGVDb21waWxlVGltZUNoZWNrRm9yRW51bXNJZk5lZWRlZCgkZGF0YU5vZGUpKTsK
IAogICAgICAgICBteSAkcHJvdG9DbGFzc05hbWUgPSAiJHtjbGFzc05hbWV9UHJvdG90eXBlIjsK
LQotICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24oXEBpbXBsQ29udGVudCwg
JGNsYXNzTmFtZSwgJGRhdGFOb2RlKSB1bmxlc3MgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkpTQ3VzdG9tQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDdXN0b21Db25zdHJ1Y3RvciJ9KTsKICAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3Rv
ckRlZmluaXRpb24oXEBpbXBsQ29udGVudCwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAk
aW50ZXJmYWNlTmFtZSwgJHZpc2libGVDbGFzc05hbWUsICRkYXRhTm9kZSk7CiAgICAgfQogCkBA
IC0xOTk0LDMzICsxOTkxLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHN2Z1Byb3BlcnR5VHlwZSYgcG9k
SW1wID0gaW1wLT5wcm9wZXJ0eVJlZmVyZW5jZSgpO1xuIik7CiAgICAgICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICAgICAgbXkgJG51bVBhcmFtZXRlcnMgPSBAeyRmdW5jdGlvbi0+cGFyYW1l
dGVyc307Ci0KLSAgICAgICAgICAgICAgICBteSAkcmVxdWlyZXNBbGxBcmd1bWVudHM7Ci0gICAg
ICAgICAgICAgICAgbXkgJHJlcXVpcmVzQWxsQXJndW1lbnRzRGVmYXVsdCA9ICIiOwotICAgICAg
ICAgICAgICAgIGlmICghJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTGVnYWN5RGVm
YXVsdE9wdGlvbmFsQXJndW1lbnRzIn0pIHsKLSAgICAgICAgICAgICAgICAgICAgJHJlcXVpcmVz
QWxsQXJndW1lbnRzRGVmYXVsdCA9ICJSYWlzZSI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICRyZXF1aXJlc0FsbEFyZ3VtZW50cyA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVxdWlyZXNBbGxBcmd1bWVudHMifSB8fCAkcmVxdWlyZXNB
bGxBcmd1bWVudHNEZWZhdWx0OwotICAgICAgICAgICAgICAgIGlmICgkcmVxdWlyZXNBbGxBcmd1
bWVudHMpIHsKLSAgICAgICAgICAgICAgICAgICAgbXkgJG51bU1hbmRhdG9yeVBhcmFtcyA9IEB7
JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKLSAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCBteSAk
cGFyYW0gKHJldmVyc2UoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCRwYXJhbS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9wdGlvbmFsIn0p
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbnVtTWFuZGF0b3J5UGFyYW1zLS07Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxhc3Q7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCRudW1NYW5kYXRvcnlQYXJhbXMgPiAwKQotICAg
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgJG51bU1hbmRhdG9yeVBhcmFt
cylcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRyZXF1aXJlc0FsbEFyZ3VtZW50
cyBlcSAiUmFpc2UiKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsIFwiTm90IGVub3VnaCBhcmd1bWVudHNcIikpO1xuIik7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xu
Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgR2VuZXJhdGVBcmd1bWVudHNDb3VudENo
ZWNrKFxAaW1wbENvbnRlbnQsICRmdW5jdGlvbiwgJGRhdGFOb2RlKTsKIAogICAgICAgICAgICAg
ICAgIGlmIChAeyRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9uc30pIHsKICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7XG4iKTsK
QEAgLTIwMzcsMTUxICsyMDA4LDggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgICAgICAgICB9IGVsc2lmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBlcSAicmVtb3Zl
RXZlbnRMaXN0ZW5lciIpIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
IEdlbmVyYXRlRXZlbnRMaXN0ZW5lckNhbGwoJGNsYXNzTmFtZSwgInJlbW92ZSIpKTsKICAgICAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBteSAkYXJnc0luZGV4ID0g
MDsKLSAgICAgICAgICAgICAgICAgICAgbXkgJHBhcmFtSW5kZXggPSAwOwotICAgICAgICAgICAg
ICAgICAgICBteSAkZnVuY3Rpb25TdHJpbmcgPSAoKCRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5
VHlwZSBhbmQgISRzdmdMaXN0UHJvcGVydHlUeXBlKSA/ICJwb2RJbXAuIiA6ICJpbXAtPiIpIC4g
JGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lIC4gIigiOwotICAgICAgICAgICAgICAgICAgICBt
eSAkaGFzT3B0aW9uYWxBcmd1bWVudHMgPSAwOwotCi0gICAgICAgICAgICAgICAgICAgIGlmICgk
ZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUFyZ3VtZW50
SGFuZGxpbmcifSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gc2NyaXB0QXJndW1lbnRzKGNyZWF0ZVNjcmlw
dEFyZ3VtZW50cyhleGVjLCAkbnVtUGFyYW1ldGVycykpO1xuIik7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzaXplX3QgbWF4U3RhY2tTaXplID0gaW1w
LT5zaG91bGRDYXB0dXJlRnVsbFN0YWNrVHJhY2UoKSA/IFNjcmlwdENhbGxTdGFjazo6bWF4Q2Fs
bFN0YWNrU2l6ZVRvQ2FwdHVyZSA6IDE7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayhj
cmVhdGVTY3JpcHRDYWxsU3RhY2soZXhlYywgbWF4U3RhY2tTaXplKSk7XG4iKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IlNjcmlwdEFyZ3VtZW50cy5oIn0gPSAxOwot
ICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siU2NyaXB0Q2FsbFN0YWNrLmgi
fSA9IDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJTY3JpcHRDYWxs
U3RhY2tGYWN0b3J5LmgifSA9IDE7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgICAgICBteSAkY2FsbFdpdGggPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkNhbGxXaXRoIn07Ci0gICAgICAgICAgICAgICAgICAgIGlmICgkY2FsbFdp
dGgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG15ICRjYWxsV2l0aEFyZyA9ICJDT01QSUxF
X0FTU0VSVChmYWxzZSkiOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRjYWxsV2l0aCBl
cSAiRHluYW1pY0ZyYW1lIikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIEZyYW1lKiBkeW5hbWljRnJhbWUgPSB0b0R5bmFtaWNGcmFtZShleGVj
KTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGlmICghZHluYW1pY0ZyYW1lKVxuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY2FsbFdpdGhBcmcg
PSAiZHluYW1pY0ZyYW1lIjsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRjYWxs
V2l0aCBlcSAiU2NyaXB0U3RhdGUiKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNh
bGxXaXRoQXJnID0gImV4ZWMiOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGNh
bGxXaXRoIGVxICJTY3JpcHRFeGVjdXRpb25Db250ZXh0IikgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdENvbnRleHQgPSBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTtcbiIpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghc2Ny
aXB0Q29udGV4dClcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xu
Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNhbGxXaXRoQXJnID0gInNjcmlwdENv
bnRleHQiOyAKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICRmdW5jdGlvblN0cmluZyAuPSAiLCAiIGlmICRwYXJhbUluZGV4OwotICAgICAgICAgICAg
ICAgICAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICRjYWxsV2l0aEFyZzsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICRwYXJhbUluZGV4Kys7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJFeGNlcHRpb25Db2RlLmgifSA9IDE7Ci0g
ICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRE9NQmluZGluZy5oIn0gPSAxOwot
ICAgICAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRwYXJhbWV0ZXIgKEB7JGZ1bmN0aW9uLT5w
YXJhbWV0ZXJzfSkgewotICAgICAgICAgICAgICAgICAgICAgICAgIyBPcHRpb25hbCBjYWxsYmFj
a3Mgc2hvdWxkIGJlIHRyZWF0ZWQgZGlmZmVyZW50bHksIGJlY2F1c2UgdGhleSBhbHdheXMgaGF2
ZSBhIGRlZmF1bHQgdmFsdWUgKDApLAotICAgICAgICAgICAgICAgICAgICAgICAgIyBhbmQgd2Ug
Y2FuIHJlZHVjZSB0aGUgbnVtYmVyIG9mIG92ZXJsb2FkZWQgZnVuY3Rpb25zIHRoYXQgdGFrZSBh
IGRpZmZlcmVudCBudW1iZXIgb2YgcGFyYW1ldGVycy4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICMgT3B0aW9uYWwgYXJndW1lbnRzIHdpdGggZGVmYXVsdCB2YWx1ZXMgW09wdGlvbmFsPUNhbGxX
aXRoRGVmYXVsdFZhbHVlXSBzaG91bGQgbm90IGdlbmVyYXRlIGFuIGVhcmx5IGNhbGwuCi0gICAg
ICAgICAgICAgICAgICAgICAgICBteSAkb3B0aW9uYWwgPSAkcGFyYW1ldGVyLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiT3B0aW9uYWwifTsgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCRvcHRpb25hbCAmJiAkb3B0aW9uYWwgbmUgIkNhbGxXaXRoRGVmYXVsdFZhbHVlIiAmJiAh
JHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxiYWNrIn0pIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjIEdlbmVyYXRlIGVhcmx5IGNhbGwgaWYgdGhlcmUgYXJlIGVu
b3VnaCBwYXJhbWV0ZXJzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJGhhc09w
dGlvbmFsQXJndW1lbnRzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiXG4gICAgc2l6ZV90IGFyZ3NDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291
bnQoKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaGFzT3B0aW9uYWxB
cmd1bWVudHMgPSAxOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoYXJnc0NvdW50IDw9
ICRhcmdzSW5kZXgpIHtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRl
SW1wbGVtZW50YXRpb25GdW5jdGlvbkNhbGwoJGZ1bmN0aW9uLCAkZnVuY3Rpb25TdHJpbmcsICRw
YXJhbUluZGV4LCAiICAgICIgeCAyLCAkc3ZnUHJvcGVydHlUeXBlLCAkaW1wbENsYXNzTmFtZSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxu
XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAg
ICAgbXkgJG5hbWUgPSAkcGFyYW1ldGVyLT5uYW1lOwotICAgICAgICAgICAgICAgICAgICAgICAg
bXkgJGFyZ1R5cGUgPSAkY29kZUdlbmVyYXRvci0+U3RyaXBNb2R1bGUoJHBhcmFtZXRlci0+dHlw
ZSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkYXJnVHlwZSBlcSAiWFBhdGhOU1Jl
c29sdmVyIikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIFJlZlB0cjxYUGF0aE5TUmVzb2x2ZXI+IGN1c3RvbVJlc29sdmVyO1xuIik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgWFBhdGhOU1Jl
c29sdmVyKiByZXNvbHZlciA9IHRvWFBhdGhOU1Jlc29sdmVyKGV4ZWMtPmFyZ3VtZW50KCRhcmdz
SW5kZXgpKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIGlmICghcmVzb2x2ZXIpIHtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBjdXN0b21SZXNvbHZlciA9IEpTQ3VzdG9t
WFBhdGhOU1Jlc29sdmVyOjpjcmVhdGUoZXhlYywgZXhlYy0+YXJndW1lbnQoJGFyZ3NJbmRleCkp
O1xuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSlcbiIpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXNvbHZlciA9IGN1c3RvbVJlc29sdmVyLmdl
dCgpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgfVxuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkcGFyYW1ldGVy
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbGJhY2sifSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG15ICRjYWxsYmFja0NsYXNzTmFtZSA9IEdldENhbGxiYWNrQ2xhc3NOYW1lKCRh
cmdUeXBlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyIkY2Fs
bGJhY2tDbGFzc05hbWUuaCJ9ID0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
JHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9wdGlvbmFsIn0pIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgUmVmUHRyPCRh
cmdUeXBlPiAkbmFtZTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID4gJGFyZ3NJbmRl
eCAmJiAhZXhlYy0+YXJndW1lbnQoJGFyZ3NJbmRleCkuaXNVbmRlZmluZWRPck51bGwoKSkge1xu
Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KCRhcmdzSW5kZXgpLmlzT2JqZWN0KCkpIHtcbiIp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7XG4iKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICB9
XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgICRuYW1lID0gJHtjYWxsYmFja0NsYXNzTmFtZX06OmNyZWF0ZShhc09iamVjdChl
eGVjLT5hcmd1bWVudCgkYXJnc0luZGV4KSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTtc
biIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICB9XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoZXhl
Yy0+YXJndW1lbnRDb3VudCgpIDw9ICRhcmdzSW5kZXggfHwgIWV4ZWMtPmFyZ3VtZW50KCRhcmdz
SW5kZXgpLmlzT2JqZWN0KCkpIHtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVf
TUlTTUFUQ0hfRVJSKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICB9XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgUmVmUHRyPCRhcmdUeXBlPiAkbmFtZSA9ICR7Y2FsbGJhY2tDbGFz
c05hbWV9OjpjcmVhdGUoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoJGFyZ3NJbmRleCkpLCBjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMgSWYgdGhlICJTdHJpY3RUeXBlQ2hlY2tpbmciIGV4dGVuZGVkIGF0dHJpYnV0
ZSBpcyBwcmVzZW50LCBhbmQgdGhlIGFyZ3VtZW50J3MgdHlwZSBpcyBhbgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMgaW50ZXJmYWNlIHR5cGUsIHRoZW4gaWYgdGhlIGluY29taW5nIHZh
bHVlIGRvZXMgbm90IGltcGxlbWVudCB0aGF0IGludGVyZmFjZSwgYSBUeXBlRXJyb3IKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjIGlzIHRocm93biByYXRoZXIgdGhhbiBzaWxlbnRseSBw
YXNzaW5nIE5VTEwgdG8gdGhlIEMrKyBjb2RlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMgUGVyIHRoZSBXZWIgSURMIGFuZCBFQ01BU2NyaXB0IHNlbWFudGljcywgaW5jb21pbmcgdmFs
dWVzIGNhbiBhbHdheXMgYmUgY29udmVydGVkIHRvIGJvdGgKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjIHN0cmluZ3MgYW5kIG51bWJlcnMsIHNvIGRvIG5vdCB0aHJvdyBUeXBlRXJyb3Ig
aWYgdGhlIGFyZ3VtZW50IGlzIG9mIHRoZXNlIHR5cGVzLgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlN0
cmljdFR5cGVDaGVja2luZyJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRp
bXBsSW5jbHVkZXN7IjxydW50aW1lL0Vycm9yLmg+In0gPSAxOwotCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG15ICRhcmdWYWx1ZSA9ICJleGVjLT5hcmd1bWVudCgkYXJnc0luZGV4
KSI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghSXNOYXRpdmVUeXBlKCRh
cmdUeXBlKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+ICRhcmdzSW5kZXggJiYg
ISR7YXJnVmFsdWV9LmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgISR7YXJnVmFsdWV9LmluaGVyaXRz
KCZKUyR7YXJnVHlwZX06OnNfaW5mbykpXG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgIiAuIEdldE5hdGl2ZVR5cGVGcm9tU2lnbmF0dXJlKCRw
YXJhbWV0ZXIpIC4gIiAkbmFtZSgiIC4gSlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICJleGVj
LT5hcmd1bWVudCgkYXJnc0luZGV4KSIpIC4gIik7XG4iKTsKLQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMgSWYgYSBwYXJhbWV0ZXIgaXMgImFuIGluZGV4IiBhbmQgaXQncyBuZWdhdGl2
ZSBpdCBzaG91bGQgdGhyb3cgYW4gSU5ERVhfU0laRV9FUlIgZXhjZXB0aW9uLgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMgQnV0IHRoaXMgbmVlZHMgdG8gYmUgZG9uZSBpbiB0aGUgYmlu
ZGluZ3MsIGJlY2F1c2UgdGhlIHR5cGUgaXMgdW5zaWduZWQgYW5kIHRoZSBmYWN0IHRoYXQgaXQK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdhcyBuZWdhdGl2ZSB3aWxsIGJlIGxvc3Qg
YnkgdGhlIHRpbWUgd2UncmUgaW5zaWRlIHRoZSBET00uCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJc0luZGV4In0pIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKCRuYW1lIDwgMCkge1xuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgSU5ERVhfU0la
RV9FUlIpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xu
Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIH1cbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhlIHR5cGUgY29udmVyc2lvbiBzdWNjZWVkZWQu
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKVxuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7XG4iKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkY29kZUdl
bmVyYXRvci0+SXNTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJGFyZ1R5cGUpIGFuZCBub3QgJGltcGxD
bGFzc05hbWUgPX4gL0xpc3QkLykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoISRuYW1lKSB7XG4iKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNldERPTUV4Y2Vw
dGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAg
ICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gIiwgIiBpZiAkcGFyYW1JbmRleDsKLQotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCRhcmdUeXBlIGVxICJOb2RlRmlsdGVyIikgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICRmdW5jdGlvblN0cmluZyAuPSAiJG5hbWUuZ2V0KCkiOwotICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklzU1ZHVHlwZU5l
ZWRpbmdUZWFyT2ZmKCRhcmdUeXBlKSBhbmQgbm90ICRpbXBsQ2xhc3NOYW1lID1+IC9MaXN0JC8p
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gIiRuYW1l
LT5wcm9wZXJ0eVJlZmVyZW5jZSgpIjsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICRuYW1lOwot
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgJGFyZ3NJ
bmRleCsrOwotICAgICAgICAgICAgICAgICAgICAgICAgJHBhcmFtSW5kZXgrKzsKLSAgICAgICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5lZWRzVXNlckdlc3R1cmVDaGVjayJ9KSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gIiwgIiBpZiAkcGFyYW1J
bmRleDsKLSAgICAgICAgICAgICAgICAgICAgICAgICRmdW5jdGlvblN0cmluZyAuPSAiU2NyaXB0
Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkiOwotICAgICAgICAgICAgICAgICAg
ICAgICAgJHBhcmFtSW5kZXgrKzsKLSAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVk
ZXN7IlNjcmlwdENvbnRyb2xsZXIuaCJ9ID0gMTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgbXkgJG51bVBhcmFtZXRlcnMgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307Cisg
ICAgICAgICAgICAgICAgICAgIG15ICgkZnVuY3Rpb25TdHJpbmcsICRwYXJhbUluZGV4KSA9IEdl
bmVyYXRlUGFyYW1ldGVyc0NoZWNrKFxAaW1wbENvbnRlbnQsICRmdW5jdGlvbiwgJGRhdGFOb2Rl
LCAkbnVtUGFyYW1ldGVycywgJGltcGxDbGFzc05hbWUsICRmdW5jdGlvbkltcGxlbWVudGF0aW9u
TmFtZSwgJHN2Z1Byb3BlcnR5VHlwZSwgJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlLCAk
c3ZnTGlzdFByb3BlcnR5VHlwZSk7CiAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb25GdW5jdGlvbkNhbGwoJGZ1bmN0aW9uLCAkZnVuY3Rpb25TdHJpbmcsICRwYXJhbUlu
ZGV4LCAiICAgICIsICRzdmdQcm9wZXJ0eVR5cGUsICRpbXBsQ2xhc3NOYW1lKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0yMzc2LDYgKzIyMDQsMjA4IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiNlbmRpZiAvLyAk
e2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogfQogCitzdWIg
R2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrCit7CisgICAgbXkgJG91dHB1dEFycmF5ID0gc2hp
ZnQ7CisgICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CisgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7
CisKKyAgICBteSAkcmVxdWlyZXNBbGxBcmd1bWVudHM7CisgICAgbXkgJHJlcXVpcmVzQWxsQXJn
dW1lbnRzRGVmYXVsdCA9ICIiOworICAgIGlmICghJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiTGVnYWN5RGVmYXVsdE9wdGlvbmFsQXJndW1lbnRzIn0pIHsKKyAgICAgICAgJHJlcXVp
cmVzQWxsQXJndW1lbnRzRGVmYXVsdCA9ICJSYWlzZSI7CisgICAgfQorICAgICRyZXF1aXJlc0Fs
bEFyZ3VtZW50cyA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
UmVxdWlyZXNBbGxBcmd1bWVudHMifSB8fCAkcmVxdWlyZXNBbGxBcmd1bWVudHNEZWZhdWx0Owor
ICAgIGlmICgkcmVxdWlyZXNBbGxBcmd1bWVudHMpIHsKKyAgICAgICAgbXkgJG51bU1hbmRhdG9y
eVBhcmFtcyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKKyAgICAgICAgZm9yZWFjaCBteSAk
cGFyYW0gKHJldmVyc2UoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSkgeworICAgICAgICAgICAg
aWYgKCRwYXJhbS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9wdGlvbmFsIn0pIHsKKyAgICAgICAg
ICAgICAgICAkbnVtTWFuZGF0b3J5UGFyYW1zLS07CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGxhc3Q7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYg
KCRudW1NYW5kYXRvcnlQYXJhbXMgPj0gMSkKKyAgICAgICAgeworICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAkbnVtTWFuZGF0
b3J5UGFyYW1zKVxuIik7CisgICAgICAgICAgICBpZiAoJHJlcXVpcmVzQWxsQXJndW1lbnRzIGVx
ICJSYWlzZSIpIHsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIFwiTm90IGVu
b3VnaCBhcmd1bWVudHNcIikpO1xuIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTtcbiIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBcbiIpOworfQorCitzdWIgR2VuZXJhdGVQYXJh
bWV0ZXJzQ2hlY2sKK3sKKyAgICBteSAkb3V0cHV0QXJyYXkgPSBzaGlmdDsKKyAgICBteSAkZnVu
Y3Rpb24gPSBzaGlmdDsKKyAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKKyAgICBteSAkbnVtUGFy
YW1ldGVycyA9IHNoaWZ0OworICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gc2hpZnQ7CisgICAgbXkg
JGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lID0gc2hpZnQ7CisgICAgbXkgJHN2Z1Byb3BlcnR5
VHlwZSA9IHNoaWZ0OworICAgIG15ICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSA9IHNo
aWZ0OworICAgIG15ICRzdmdMaXN0UHJvcGVydHlUeXBlID0gc2hpZnQ7CisKKyAgICBteSAkcGFy
YW1JbmRleCA9IDA7CisgICAgbXkgJGFyZ3NJbmRleCA9IDA7CisgICAgbXkgJGhhc09wdGlvbmFs
QXJndW1lbnRzID0gMDsKKworICAgIG15ICRmdW5jdGlvblN0cmluZyA9ICgoJHN2Z1Byb3BlcnR5
T3JMaXN0UHJvcGVydHlUeXBlIGFuZCAhJHN2Z0xpc3RQcm9wZXJ0eVR5cGUpID8gInBvZEltcC4i
IDogImltcC0+IikgLiAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUgLiAiKCI7CisKKyAgICBp
ZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Bcmd1
bWVudEhhbmRsaW5nIn0pIHsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJlZlB0
cjxTY3JpcHRBcmd1bWVudHM+IHNjcmlwdEFyZ3VtZW50cyhjcmVhdGVTY3JpcHRBcmd1bWVudHMo
ZXhlYywgJG51bVBhcmFtZXRlcnMpKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgc2l6ZV90IG1heFN0YWNrU2l6ZSA9IGltcC0+c2hvdWxkQ2FwdHVyZUZ1bGxTdGFja1Ry
YWNlKCkgPyBTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUgOiAxO1xu
Iik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0
YWNrPiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKGV4ZWMsIG1heFN0YWNrU2l6ZSkp
O1xuIik7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IlNjcmlwdEFyZ3VtZW50cy5oIn0gPSAxOwor
ICAgICAgICAkaW1wbEluY2x1ZGVzeyJTY3JpcHRDYWxsU3RhY2suaCJ9ID0gMTsKKyAgICAgICAg
JGltcGxJbmNsdWRlc3siU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIn0gPSAxOworICAgIH0KKwor
ICAgIG15ICRjYWxsV2l0aCA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ2FsbFdpdGgifTsKKyAgICBpZiAoJGNhbGxXaXRoKSB7CisgICAgICAgIG15ICRjYWxs
V2l0aEFyZyA9ICJDT01QSUxFX0FTU0VSVChmYWxzZSkiOworICAgICAgICBpZiAoJGNhbGxXaXRo
IGVxICJEeW5hbWljRnJhbWUiKSB7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgRnJhbWUqIGR5bmFtaWNGcmFtZSA9IHRvRHluYW1pY0ZyYW1lKGV4ZWMpO1xuIik7CisgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCFkeW5hbWljRnJhbWUpXG4iKTsK
KyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOworICAgICAgICAgICAgJGNhbGxXaXRoQXJnID0g
ImR5bmFtaWNGcmFtZSI7CisgICAgICAgIH0gZWxzaWYgKCRjYWxsV2l0aCBlcSAiU2NyaXB0U3Rh
dGUiKSB7CisgICAgICAgICAgICAkY2FsbFdpdGhBcmcgPSAiZXhlYyI7CisgICAgICAgIH0gZWxz
aWYgKCRjYWxsV2l0aCBlcSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dCIpIHsKKyAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRD
b250ZXh0ID0gc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7XG4iKTsKKyAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIXNjcmlwdENvbnRleHQpXG4iKTsKKyAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTtcbiIpOworICAgICAgICAgICAgJGNhbGxXaXRoQXJnID0gInNjcmlw
dENvbnRleHQiOyAKKyAgICAgICAgfQorICAgICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gIiwgIiBp
ZiAkcGFyYW1JbmRleDsKKyAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICRjYWxsV2l0aEFyZzsK
KyAgICAgICAgJHBhcmFtSW5kZXgrKzsKKyAgICB9CisKKyAgICAkaW1wbEluY2x1ZGVzeyJFeGNl
cHRpb25Db2RlLmgifSA9IDE7CisgICAgJGltcGxJbmNsdWRlc3siSlNET01CaW5kaW5nLmgifSA9
IDE7CisKKyAgICBmb3JlYWNoIG15ICRwYXJhbWV0ZXIgKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJz
fSkgeworICAgICAgICAjIE9wdGlvbmFsIGNhbGxiYWNrcyBzaG91bGQgYmUgdHJlYXRlZCBkaWZm
ZXJlbnRseSwgYmVjYXVzZSB0aGV5IGFsd2F5cyBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAoMCksCisg
ICAgICAgICMgYW5kIHdlIGNhbiByZWR1Y2UgdGhlIG51bWJlciBvZiBvdmVybG9hZGVkIGZ1bmN0
aW9ucyB0aGF0IHRha2UgYSBkaWZmZXJlbnQgbnVtYmVyIG9mIHBhcmFtZXRlcnMuCisgICAgICAg
ICMgT3B0aW9uYWwgYXJndW1lbnRzIHdpdGggW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVl
XSBvciBbT3B0aW9uYWw9Q2FsbFdpdGhOdWxsVmFsdWVdIHNob3VsZCBub3QgZ2VuZXJhdGUgYW4g
ZWFybHkgY2FsbC4KKyAgICAgICAgbXkgJG9wdGlvbmFsID0gJHBhcmFtZXRlci0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Ik9wdGlvbmFsIn07CisgICAgICAgIGlmICgkb3B0aW9uYWwgJiYgJG9wdGlv
bmFsIG5lICJDYWxsV2l0aERlZmF1bHRWYWx1ZSIgJiYgJG9wdGlvbmFsIG5lICJDYWxsV2l0aE51
bGxWYWx1ZSIgJiYgISRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsYmFjayJ9
KSB7CisgICAgICAgICAgICAjIEdlbmVyYXRlIGVhcmx5IGNhbGwgaWYgdGhlcmUgYXJlIGVub3Vn
aCBwYXJhbWV0ZXJzLgorICAgICAgICAgICAgaWYgKCEkaGFzT3B0aW9uYWxBcmd1bWVudHMpIHsK
KyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJcbiAgICBzaXplX3QgYXJnc0Nv
dW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpO1xuIik7CisgICAgICAgICAgICAgICAgJGhhc09w
dGlvbmFsQXJndW1lbnRzID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBpZiAoYXJnc0NvdW50IDw9ICRhcmdzSW5kZXgpIHtcbiIpOworICAg
ICAgICAgICAgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbCgkZnVuY3Rpb24sICRm
dW5jdGlvblN0cmluZywgJHBhcmFtSW5kZXgsICIgICAgIiB4IDIsICRzdmdQcm9wZXJ0eVR5cGUs
ICRpbXBsQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9
XG5cbiIpOworICAgICAgICB9CisKKyAgICAgICAgbXkgJG5hbWUgPSAkcGFyYW1ldGVyLT5uYW1l
OworICAgICAgICBteSAkYXJnVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5TdHJpcE1vZHVsZSgkcGFy
YW1ldGVyLT50eXBlKTsKKworICAgICAgICBpZiAoJGFyZ1R5cGUgZXEgIlhQYXRoTlNSZXNvbHZl
ciIpIHsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBSZWZQdHI8WFBhdGhO
U1Jlc29sdmVyPiBjdXN0b21SZXNvbHZlcjtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIFhQYXRoTlNSZXNvbHZlciogcmVzb2x2ZXIgPSB0b1hQYXRoTlNSZXNvbHZl
cihleGVjLT5hcmd1bWVudCgkYXJnc0luZGV4KSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBpZiAoIXJlc29sdmVyKSB7XG4iKTsKKyAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICAgICAgY3VzdG9tUmVzb2x2ZXIgPSBKU0N1c3RvbVhQYXRoTlNS
ZXNvbHZlcjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KCRhcmdzSW5kZXgpKTtcbiIpOwor
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmVzb2x2ZXIgPSBjdXN0b21SZXNvbHZl
ci5nZXQoKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIp
OworICAgICAgICB9IGVsc2lmICgkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2Fs
bGJhY2sifSkgeworICAgICAgICAgICAgbXkgJGNhbGxiYWNrQ2xhc3NOYW1lID0gR2V0Q2FsbGJh
Y2tDbGFzc05hbWUoJGFyZ1R5cGUpOworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siJGNhbGxi
YWNrQ2xhc3NOYW1lLmgifSA9IDE7CisgICAgICAgICAgICBpZiAoJHBhcmFtZXRlci0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Ik9wdGlvbmFsIn0pIHsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgUmVmUHRyPCRhcmdUeXBlPiAkbmFtZTtcbiIpOworICAgICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID4g
JGFyZ3NJbmRleCAmJiAhZXhlYy0+YXJndW1lbnQoJGFyZ3NJbmRleCkuaXNVbmRlZmluZWRPck51
bGwoKSkge1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAg
ICBpZiAoIWV4ZWMtPmFyZ3VtZW50KCRhcmdzSW5kZXgpLmlzT2JqZWN0KCkpIHtcbiIpOworICAg
ICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIHNldERPTUV4Y2Vw
dGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
ICAgICB9XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAg
ICRuYW1lID0gJHtjYWxsYmFja0NsYXNzTmFtZX06OmNyZWF0ZShhc09iamVjdChleGVjLT5hcmd1
bWVudCgkYXJnc0luZGV4KSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTtcbiIpOworICAg
ICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChl
eGVjLT5hcmd1bWVudENvdW50KCkgPD0gJGFyZ3NJbmRleCB8fCAhZXhlYy0+YXJndW1lbnQoJGFy
Z3NJbmRleCkuaXNPYmplY3QoKSkge1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIp
O1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CisgICAgICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBSZWZQdHI8JGFyZ1R5cGU+ICRuYW1lID0gJHtjYWxsYmFja0NsYXNz
TmFtZX06OmNyZWF0ZShhc09iamVjdChleGVjLT5hcmd1bWVudCgkYXJnc0luZGV4KSksIGNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpKTtcbiIpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgIyBJZiB0aGUgIlN0cmljdFR5cGVDaGVja2luZyIgZXh0ZW5kZWQg
YXR0cmlidXRlIGlzIHByZXNlbnQsIGFuZCB0aGUgYXJndW1lbnQncyB0eXBlIGlzIGFuCisgICAg
ICAgICAgICAjIGludGVyZmFjZSB0eXBlLCB0aGVuIGlmIHRoZSBpbmNvbWluZyB2YWx1ZSBkb2Vz
IG5vdCBpbXBsZW1lbnQgdGhhdCBpbnRlcmZhY2UsIGEgVHlwZUVycm9yCisgICAgICAgICAgICAj
IGlzIHRocm93biByYXRoZXIgdGhhbiBzaWxlbnRseSBwYXNzaW5nIE5VTEwgdG8gdGhlIEMrKyBj
b2RlLgorICAgICAgICAgICAgIyBQZXIgdGhlIFdlYiBJREwgYW5kIEVDTUFTY3JpcHQgc2VtYW50
aWNzLCBpbmNvbWluZyB2YWx1ZXMgY2FuIGFsd2F5cyBiZSBjb252ZXJ0ZWQgdG8gYm90aAorICAg
ICAgICAgICAgIyBzdHJpbmdzIGFuZCBudW1iZXJzLCBzbyBkbyBub3QgdGhyb3cgVHlwZUVycm9y
IGlmIHRoZSBhcmd1bWVudCBpcyBvZiB0aGVzZSB0eXBlcy4KKyAgICAgICAgICAgIGlmICgkZnVu
Y3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlN0cmljdFR5cGVDaGVja2lu
ZyJ9KSB7CisgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siPHJ1bnRpbWUvRXJyb3IuaD4i
fSA9IDE7CisKKyAgICAgICAgICAgICAgICBteSAkYXJnVmFsdWUgPSAiZXhlYy0+YXJndW1lbnQo
JGFyZ3NJbmRleCkiOworICAgICAgICAgICAgICAgIGlmICghSXNOYXRpdmVUeXBlKCRhcmdUeXBl
KSkgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKGV4
ZWMtPmFyZ3VtZW50Q291bnQoKSA+ICRhcmdzSW5kZXggJiYgISR7YXJnVmFsdWV9LmlzVW5kZWZp
bmVkT3JOdWxsKCkgJiYgISR7YXJnVmFsdWV9LmluaGVyaXRzKCZKUyR7YXJnVHlwZX06OnNfaW5m
bykpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTtcbiIpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbXkgJG9wdGlvbmFsID0gJHBhcmFtZXRlci0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9wdGlvbmFsIn07CisgICAgICAgICAgICBteSAkcGFyYW1l
dGVyTWlzc2luZ1BvbGljeSA9ICJNaXNzaW5nSXNVbmRlZmluZWQiOworICAgICAgICAgICAgaWYg
KCRvcHRpb25hbCAmJiAkb3B0aW9uYWwgZXEgIkNhbGxXaXRoTnVsbFZhbHVlIikgeworICAgICAg
ICAgICAgICAgICRwYXJhbWV0ZXJNaXNzaW5nUG9saWN5ID0gIk1pc3NpbmdJc0VtcHR5IjsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICIgLiBH
ZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZSgkcGFyYW1ldGVyKSAuICIgJG5hbWUoIiAuIEpTVmFs
dWVUb05hdGl2ZSgkcGFyYW1ldGVyLCAiTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgJGFy
Z3NJbmRleCwgJHBhcmFtZXRlck1pc3NpbmdQb2xpY3kpIikgLiAiKTtcbiIpOworCisgICAgICAg
ICAgICAjIElmIGEgcGFyYW1ldGVyIGlzICJhbiBpbmRleCIgYW5kIGl0J3MgbmVnYXRpdmUgaXQg
c2hvdWxkIHRocm93IGFuIElOREVYX1NJWkVfRVJSIGV4Y2VwdGlvbi4KKyAgICAgICAgICAgICMg
QnV0IHRoaXMgbmVlZHMgdG8gYmUgZG9uZSBpbiB0aGUgYmluZGluZ3MsIGJlY2F1c2UgdGhlIHR5
cGUgaXMgdW5zaWduZWQgYW5kIHRoZSBmYWN0IHRoYXQgaXQKKyAgICAgICAgICAgICMgd2FzIG5l
Z2F0aXZlIHdpbGwgYmUgbG9zdCBieSB0aGUgdGltZSB3ZSdyZSBpbnNpZGUgdGhlIERPTS4KKyAg
ICAgICAgICAgIGlmICgkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNJbmRleCJ9
KSB7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICgkbmFtZSA8
IDApIHtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAg
c2V0RE9NRXhjZXB0aW9uKGV4ZWMsIElOREVYX1NJWkVfRVJSKTtcbiIpOworICAgICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICB9XG4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgIyBDaGVjayBpZiB0aGUg
dHlwZSBjb252ZXJzaW9uIHN1Y2NlZWRlZC4KKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpXG4iKTsKKyAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTtcbiIpOworCisgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU1ZHVHlwZU5l
ZWRpbmdUZWFyT2ZmKCRhcmdUeXBlKSBhbmQgbm90ICRpbXBsQ2xhc3NOYW1lID1+IC9MaXN0JC8p
IHsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCEkbmFtZSkg
e1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBzZXRE
T01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpO1xuIik7CisgICAgICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIH1cbiIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgJGZ1bmN0aW9u
U3RyaW5nIC49ICIsICIgaWYgJHBhcmFtSW5kZXg7CisKKyAgICAgICAgaWYgKCRhcmdUeXBlIGVx
ICJOb2RlRmlsdGVyIikgeworICAgICAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICIkbmFtZS5n
ZXQoKSI7CisgICAgICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1NWR1R5cGVOZWVkaW5n
VGVhck9mZigkYXJnVHlwZSkgYW5kIG5vdCAkaW1wbENsYXNzTmFtZSA9fiAvTGlzdCQvKSB7Cisg
ICAgICAgICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gIiRuYW1lLT5wcm9wZXJ0eVJlZmVyZW5jZSgp
IjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICRmdW5jdGlvblN0cmluZyAuPSAkbmFt
ZTsKKyAgICAgICAgfQorICAgICAgICAkYXJnc0luZGV4Kys7CisgICAgICAgICRwYXJhbUluZGV4
Kys7CisgICAgfQorCisgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiTmVlZHNVc2VyR2VzdHVyZUNoZWNrIn0pIHsKKyAgICAgICAgJGZ1bmN0aW9uU3Ry
aW5nIC49ICIsICIgaWYgJHBhcmFtSW5kZXg7CisgICAgICAgICRmdW5jdGlvblN0cmluZyAuPSAi
U2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkiOworICAgICAgICAkcGFy
YW1JbmRleCsrOworICAgICAgICAkaW1wbEluY2x1ZGVzeyJTY3JpcHRDb250cm9sbGVyLmgifSA9
IDE7CisgICAgfQorCisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFxuIik7CisgICAgcmV0
dXJuICgkZnVuY3Rpb25TdHJpbmcsICRwYXJhbUluZGV4KTsKK30KKwogc3ViIEdlbmVyYXRlQ2Fs
bGJhY2tIZWFkZXIKIHsKICAgICBteSAkb2JqZWN0ID0gc2hpZnQ7CkBAIC0zMTY3LDkgKzMxOTcs
NiBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24KICAgICBteSAkZGF0YU5vZGUg
PSBzaGlmdDsKIAogICAgIG15ICRjb25zdHJ1Y3RvckNsYXNzTmFtZSA9ICIke2NsYXNzTmFtZX1D
b25zdHJ1Y3RvciI7Ci0gICAgbXkgJGNhbkNvbnN0cnVjdCA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkNhbkJlQ29uc3RydWN0ZWQifTsKLSAgICBteSAkY3VzdG9tQ29uc3RydWN0
b3IgPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbUNvbnN0cnVjdG9y
In0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ29uc3RydWN0b3Ii
fTsKLSAgICBteSAkY2FsbFdpdGggPSAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
YWxsV2l0aCJ9OwogICAgIG15ICRudW1iZXJPZmNvbnN0cnVjdFBhcmFtZXRlcnMgPSAkZGF0YU5v
ZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvclBhcmFtZXRlcnMifTsKIAogICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgImNvbnN0IENsYXNzSW5mbyAke2NvbnN0cnVjdG9yQ2xhc3NO
YW1lfTo6c19pbmZvID0geyBcIiR7dmlzaWJsZUNsYXNzTmFtZX1Db25zdHJ1Y3RvclwiLCAmRE9N
Q29uc3RydWN0b3JPYmplY3Q6OnNfaW5mbywgJiR7Y29uc3RydWN0b3JDbGFzc05hbWV9VGFibGUs
IDAsIENSRUFURV9NRVRIT0RfVEFCTEUoJGNvbnN0cnVjdG9yQ2xhc3NOYW1lKSB9O1xuXG4iKTsK
QEAgLTMyMDEsMTggKzMyMjgsNjcgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9u
CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2Ny
aXB0b3I8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0sIEpTRE9NV3JhcHBlcj4oZXhlYywgJiR7Y29u
c3RydWN0b3JDbGFzc05hbWV9VGFibGUsIHRoaXMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7
XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwogCi0gICAgaWYgKCRjYW5D
b25zdHJ1Y3QpIHsKLSAgICAgICAgaWYgKCEkY3VzdG9tQ29uc3RydWN0b3IpIHsKKyAgICBpZiAo
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FuQmVDb25zdHJ1Y3RlZCJ9KSB7Cisg
ICAgICAgIGlmICghKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tQ29u
c3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Db25z
dHJ1Y3RvciJ9KSkgewogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Y29uc3RydWN0JHtj
bGFzc05hbWV9KEV4ZWNTdGF0ZSogZXhlYylcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAie1xuIik7Ci0gICAgICAgICAgICBteSAkY29uc3RydWN0b3JBcmcgPSAiIjsKLSAg
ICAgICAgICAgIGlmICgkY2FsbFdpdGggYW5kICRjYWxsV2l0aCBlcSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCIpIHsKLSAgICAgICAgICAgICAgICAkY29uc3RydWN0b3JBcmcgPSAiY29udGV4dCI7
Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+
KGV4ZWMtPmNhbGxlZSgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpO1xuIik7Ci0gICAgICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghY29udGV4dClcbiIpOwotICAg
ICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBcIlJlZmVyZW5jZSBlcnJvclwi
KSk7XG4iKTsKKworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICR7Y29uc3Ry
dWN0b3JDbGFzc05hbWV9KiBqc0NvbnN0cnVjdG9yID0gc3RhdGljX2Nhc3Q8JHtjb25zdHJ1Y3Rv
ckNsYXNzTmFtZX0qPihleGVjLT5jYWxsZWUoKSk7XG4iKTsKKworICAgICAgICAgICAgaWYgKCRk
YXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yIn0pIHsKKyAgICAgICAg
ICAgICAgICBteSAkZnVuY3Rpb24gPSAkZGF0YU5vZGUtPmNvbnN0cnVjdG9yOworICAgICAgICAg
ICAgICAgIG15IEBjb25zdHJ1Y3RvckFyZ0xpc3Q7CisKKyAgICAgICAgICAgICAgICAkaW1wbElu
Y2x1ZGVzeyI8cnVudGltZS9FcnJvci5oPiJ9ID0gMTsKKworICAgICAgICAgICAgICAgIEdlbmVy
YXRlQXJndW1lbnRzQ291bnRDaGVjaygkb3V0cHV0QXJyYXksICRmdW5jdGlvbiwgJGRhdGFOb2Rl
KTsKKworICAgICAgICAgICAgICAgIGlmIChAeyRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9uc30g
fHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JSYWlzZXNFeGNl
cHRpb24ifSkgeworICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJFeGNlcHRpb25D
b2RlLmgifSA9IDE7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgICMgRm9yIG5vdywgd2UgZG8gbm90IHN1cHBvcnQgU1ZHIGNvbnN0cnVjdG9ycy4K
KyAgICAgICAgICAgICAgICAjIFdlIGRvIG5vdCBhbHNvIHN1cHBvcnQgYSBjb25zdHJ1Y3RvciBb
T3BpdGlvbmFsXSBhcmd1bWVudCB3aXRob3V0IENhbGxXaXRoRGVmYXVsdFZhbHVlIG5vciBDYWxs
V2l0aE51bGxWYWx1ZS4KKyAgICAgICAgICAgICAgICBteSAkbnVtUGFyYW1ldGVycyA9IEB7JGZ1
bmN0aW9uLT5wYXJhbWV0ZXJzfTsKKyAgICAgICAgICAgICAgICBteSAoJGR1bW15LCAkcGFyYW1J
bmRleCkgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjaygkb3V0cHV0QXJyYXksICRmdW5jdGlvbiwg
JGRhdGFOb2RlLCAkbnVtUGFyYW1ldGVycywgJGludGVyZmFjZU5hbWUsICJjb25zdHJ1Y3RvckNh
bGxiYWNrIiwgdW5kZWYsIHVuZGVmLCB1bmRlZik7CisKKyAgICAgICAgICAgICAgICBteSAkaW5k
ZXggPSAwOworICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJHBhcmFtZXRlciAoQHskZnVuY3Rp
b24tPnBhcmFtZXRlcnN9KSB7CisgICAgICAgICAgICAgICAgICAgIGxhc3QgaWYgJGluZGV4IGVx
ICRwYXJhbUluZGV4OworICAgICAgICAgICAgICAgICAgICBwdXNoKEBjb25zdHJ1Y3RvckFyZ0xp
c3QsICRwYXJhbWV0ZXItPm5hbWUpOworICAgICAgICAgICAgICAgICAgICAkaW5kZXgrKzsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JXaXRoIn0gJiYgJGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JXaXRoIn0gZXEgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQi
KSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGNvbnN0cnVjdG9yQXJnTGlzdCwgImNvbnRl
eHQiKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBqc0NvbnN0cnVjdG9yLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIGlmICghY29udGV4dClcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmVmZXJl
bmNlRXJyb3IoZXhlYywgXCIke2ludGVyZmFjZU5hbWV9IGNvbnN0cnVjdG9yIGFzc29jaWF0ZWQg
ZG9jdW1lbnQgaXMgdW5hdmFpbGFibGVcIikpO1xuIik7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1
Y3RvclJhaXNlc0V4Y2VwdGlvbiJ9KSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGNvbnN0
cnVjdG9yQXJnTGlzdCwgImVjIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IG15ICRjb25zdHJ1Y3RvckFyZyA9IGpvaW4oIiwgIiwgQGNvbnN0cnVjdG9yQXJnTGlzdCk7Cisg
ICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJlZlB0cjwke2ludGVyZmFj
ZU5hbWV9PiBvYmplY3QgPSAke2ludGVyZmFjZU5hbWV9OjpjcmVhdGUoJHtjb25zdHJ1Y3RvckFy
Z30pO1xuIik7CisgICAgICAgICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkNvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uIn0pIHsKKyAgICAgICAgICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChlYykge1xuIik7CisgICAgICAgICAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMs
IGVjKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTtcbiIpOworICAgICAgICAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIik7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBteSAkY29uc3RydWN0b3JB
cmcgPSAiIjsKKyAgICAgICAgICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ29uc3RydWN0b3JXaXRoIn0gYW5kICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkNvbnN0cnVjdG9yV2l0aCJ9IGVxICJTY3JpcHRFeGVjdXRpb25Db250ZXh0IikgeworICAg
ICAgICAgICAgICAgICAgICAkY29uc3RydWN0b3JBcmcgPSAiY29udGV4dCI7CisgICAgICAgICAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qPihleGVjLT5j
YWxsZWUoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTtcbiIpOworICAgICAgICAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCFjb250ZXh0KVxuIik7CisgICAgICAg
ICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBcIiR7aW50ZXJmYWNlTmFtZX0g
Y29uc3RydWN0b3IgYXNzb2NpYXRlZCBkb2N1bWVudCBpcyB1bmF2YWlsYWJsZVwiKSk7XG4iKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIFJlZlB0cjwke2ludGVyZmFjZU5hbWV9PiBvYmplY3QgPSAke2ludGVyZmFjZU5hbWV9Ojpj
cmVhdGUoJHtjb25zdHJ1Y3RvckFyZ30pO1xuIik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVj
dCh0b0pTKGV4ZWMsIHN0YXRpY19jYXN0PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9Kj4oZXhlYy0+
Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKSwgJHtpbnRlcmZhY2VOYW1lfTo6Y3JlYXRlKCR7Y29u
c3RydWN0b3JBcmd9KSkpKTtcbiIpOworCisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGpzQ29uc3Ry
dWN0b3ItPmdsb2JhbE9iamVjdCgpLCBvYmplY3QuZ2V0KCkpKSk7XG4iKTsKICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCAwMDVi
YjkzNzZjMDZjYzY1YzVjOWViYTZlNjk2NjJjMDRkMjA0N2UwLi41ODc4MmUyNzIxODBmM2IzNzM4
NWM1ZTVhYWViYTZkYTdhNDlkYjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMjEyOSw4ICsyMTI5LDcgQEAgRU5ECiAg
ICAgIyBJbiBuYW1lc3BhY2UgV2ViQ29yZSwgYWRkIGdlbmVyYXRlZCBpbXBsZW1lbnRhdGlvbiBm
b3IgJ0NhbkJlQ29uc3RydWN0ZWQnLgogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDYW5CZUNvbnN0cnVjdGVkIn0gJiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn0gJiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IlY4Q3VzdG9tQ29uc3RydWN0b3IifSAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ29uc3RydWN0b3IifSkgewogICAgICAgICBteSAkdjhDb25zdHJ1Y3RGdW5jdGlv
bjsKLSAgICAgICAgbXkgJGNhbGxXaXRoID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ2FsbFdpdGgifTsKLSAgICAgICAgaWYgKCRjYWxsV2l0aCBhbmQgJGNhbGxXaXRoIGVxICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0IikgeworICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JXaXRoIn0gYW5kICRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yV2l0aCJ9IGVxICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
IikgewogICAgICAgICAgICAgJHY4Q29uc3RydWN0RnVuY3Rpb24gPSAiY29uc3RydWN0RE9NT2Jq
ZWN0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgJHY4Q29uc3RydWN0RnVuY3Rpb24gPSAiY29uc3RydWN0RE9NT2JqZWN0IjsKQEAgLTIx
NDMsOSArMjE0Miw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke2NsYXNzTmFtZX06OmNvbnN0
cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJnCiB9CiAKIEVORAotICAgIH0K
LQotICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvciJ9
KSB7CisgICAgfSBlbHNpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FuQmVD
b25zdHJ1Y3RlZCJ9ICYmICEoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhDdXN0
b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3Rv
bUNvbnN0cnVjdG9yIn0pKSB7CiAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JDYWxsYmFjaygk
ZGF0YU5vZGUtPmNvbnN0cnVjdG9yLCAkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKaW5kZXggOWI3ODM4ZjFiYjQxYjZlZTcyZTU1MTdlNjEz
OWJhNDViYjRmOGQ4OC4uZDQxNzA2YTEwYmQwOWE3NDU2NjUxNTAxZDAzYjY5ZTE5ZWNjMDI2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKQEAgLTI0LDcgKzI0LDEwIEBACiAKICNpbmNsdWRlICJK
U1Rlc3RJbnRlcmZhY2UuaCIKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRl
ICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJUZXN0SW50ZXJmYWNlLmgiCisjaW5jbHVkZSA8
cnVudGltZS9FcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIEpTQzsKQEAgLTcyLDMzICs3NSw2IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBK
U1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQogCiAjdW5kZWYgVEhVTktf
R0VORVJBVE9SCiBzdGF0aWMgSlNDX0NPTlNUX0hBU0hUQUJMRSBIYXNoVGFibGUgSlNUZXN0SW50
ZXJmYWNlQ29uc3RydWN0b3JUYWJsZSA9IHsgMSwgMCwgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0
b3JUYWJsZVZhbHVlcywgMCB9OwotY2xhc3MgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IgOiBw
dWJsaWMgRE9NQ29uc3RydWN0b3JPYmplY3QgewotcHJpdmF0ZToKLSAgICBKU1Rlc3RJbnRlcmZh
Y2VDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7Ci0gICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7
Ci0KLXB1YmxpYzoKLSAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yT2JqZWN0IEJhc2U7Ci0gICAg
c3RhdGljIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCi0gICAgewotICAgICAgICBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvciogcHRy
ID0gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcj4oKmV4
ZWMtPmhlYXAoKSkpIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFs
T2JqZWN0KTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihleGVjLCBnbG9iYWxPYmplY3Qp
OwotICAgICAgICByZXR1cm4gcHRyOwotICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6
OlByb3BlcnR5U2xvdCYpOwotICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5
RGVzY3JpcHRvciYpOwotICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87Ci0g
ICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6
Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZv
KEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKLSAgICB9Ci1wcm90
ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6OkltcGxlbWVudHNIYXNJbnN0YW5jZSB8
IERPTUNvbnN0cnVjdG9yT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKLSAgICBzdGF0aWMgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTVGVzdEludGVyZmFjZShKU0M6
OkV4ZWNTdGF0ZSopOwotICAgIHZpcnR1YWwgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVj
dERhdGEoSlNDOjpDb25zdHJ1Y3REYXRhJik7Ci19OwotCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0
SW50ZXJmYWNlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rv
ciIsICZET01Db25zdHJ1Y3Rvck9iamVjdDo6c19pbmZvLCAmSlNUZXN0SW50ZXJmYWNlQ29uc3Ry
dWN0b3JUYWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1
Y3RvcikgfTsKIAogSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I6OkpTVGVzdEludGVyZmFjZUNv
bnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQpAQCAtMTI1LDEwICsxMDEsMjcgQEAgYm9vbCBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1
Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QKIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6
Y29uc3RydWN0SlNUZXN0SW50ZXJmYWNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8SlNUZXN0SW50ZXJmYWNlQ29u
c3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAg
ICBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IHN0YXRpY19jYXN0
PEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOworICAgIGlmIChl
eGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiTm90IGVub3VnaCBhcmd1bWVudHMiKSk7CisgICAg
CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgY29uc3QgU3RyaW5nJiBzdHIxKHVzdHJp
bmdUb1N0cmluZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBNaXNzaW5nSXNVbmRl
ZmluZWQpLnRvU3RyaW5nKGV4ZWMpKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGNvbnN0
IFN0cmluZyYgc3RyMih1c3RyaW5nVG9TdHJpbmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhl
YywgMSwgTWlzc2luZ0lzVW5kZWZpbmVkKS50b1N0cmluZyhleGVjKSkpOworICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKyAgICAKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0ganND
b25zdHJ1Y3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihl
eGVjLCAiUmVmZXJlbmNlIGVycm9yIikpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNP
YmplY3QodG9KUyhleGVjLCBzdGF0aWNfY2FzdDxKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcio+
KGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCksIFRlc3RJbnRlcmZhY2U6OmNyZWF0ZShj
b250ZXh0KSkpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSZWZl
cmVuY2VFcnJvcihleGVjLCAiVGVzdEludGVyZmFjZSBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRv
Y3VtZW50IGlzIHVuYXZhaWxhYmxlIikpOworICAgIFJlZlB0cjxUZXN0SW50ZXJmYWNlPiBvYmpl
Y3QgPSBUZXN0SW50ZXJmYWNlOjpjcmVhdGUoc3RyMSwgc3RyMiwgY29udGV4dCwgZWMpOworICAg
IGlmIChlYykgeworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAgfQorICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmpl
Y3QoKSwgb2JqZWN0LmdldCgpKSkpOwogfQogCiBDb25zdHJ1Y3RUeXBlIEpTVGVzdEludGVyZmFj
ZUNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERh
dGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW50ZXJmYWNlLmgKaW5kZXggNWJmZDg5ZjIyM2E3NWY4NTllN2YzM2NkYjI4MTg5
NWEwYzc3OTAyZC4uMTUyZDJmYzhlYzE3NGRlYzg1MTc0OWMyMWNjZTllNDg4MTE1ZDkyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
dGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbnRlcmZhY2UuaApAQCAtODgsNiArODgsMzMgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwog
fTsKIAorY2xhc3MgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3Ry
dWN0b3JPYmplY3QgeworcHJpdmF0ZToKKyAgICBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihK
U0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CisgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CisKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIEpTVGVzdElu
dGVyZmFjZUNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6U3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAg
eworICAgICAgICBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvciogcHRyID0gbmV3IChKU0M6OmFs
bG9jYXRlQ2VsbDxKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpT
VGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICAg
ICAgcHRyLT5maW5pc2hDcmVhdGlvbihleGVjLCBnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1
cm4gcHRyOworICAgIH0KKworICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
OjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYp
OworICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpFeGVjU3Rh
dGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwor
ICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CisgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERh
dGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKKyAgICB9Citwcm90ZWN0ZWQ6CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRPd25Q
cm9wZXJ0eVNsb3QgfCBKU0M6OkltcGxlbWVudHNIYXNJbnN0YW5jZSB8IERPTUNvbnN0cnVjdG9y
T2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKKyAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTVGVzdEludGVyZmFjZShKU0M6OkV4ZWNTdGF0ZSopOwor
ICAgIHZpcnR1YWwgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpDb25z
dHJ1Y3REYXRhJik7Cit9OworCiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RJ
bnRlcmZhY2VDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lci5jcHAKaW5kZXggM2JmNDM4OWQyMmI2MDgwMDUxZGViYjQzMjY3ZDBkNTA1NjJiZTNiOC4u
MDhiOGVlZTdiNWE5MGYxZTAyMzYwOGEyMTE1YWUxNDMzZjU1NDFlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcApAQCAtNzMsMzEgKzczLDYgQEAgc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25z
dHJ1Y3RvclRhYmxlVmFsdWVzW10KIAogI3VuZGVmIFRIVU5LX0dFTkVSQVRPUgogc3RhdGljIEpT
Q19DT05TVF9IQVNIVEFCTEUgSGFzaFRhYmxlIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJD
b25zdHJ1Y3RvclRhYmxlID0geyAxLCAwLCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29u
c3RydWN0b3JUYWJsZVZhbHVlcywgMCB9OwotY2xhc3MgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lckNvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9yT2JqZWN0IHsKLXByaXZhdGU6
Ci0gICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yKEpTQzo6U3RydWN0
dXJlKiwgSlNET01HbG9iYWxPYmplY3QqKTsKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6
RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqKTsKLQotcHVibGljOgotICAgIHR5cGVkZWYg
RE9NQ29uc3RydWN0b3JPYmplY3QgQmFzZTsKLSAgICBzdGF0aWMgSlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lckNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi0g
ICAgewotICAgICAgICBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IqIHB0
ciA9IG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNv
bnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNv
bnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgcHRyLT5maW5pc2hD
cmVhdGlvbihleGVjLCBnbG9iYWxPYmplY3QpOwotICAgICAgICByZXR1cm4gcHRyOwotICAgIH0K
LQotICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHZpcnR1YWwg
Ym9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6
OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOwotICAgIHN0YXRpYyBjb25z
dCBKU0M6OkNsYXNzSW5mbyBzX2luZm87Ci0gICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCAmc19pbmZvKTsKLSAgICB9Ci1wcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBK
U0M6OkltcGxlbWVudHNIYXNJbnN0YW5jZSB8IERPTUNvbnN0cnVjdG9yT2JqZWN0OjpTdHJ1Y3R1
cmVGbGFnczsKLX07Ci0KIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29u
c3RydWN0b3IiLCAmRE9NQ29uc3RydWN0b3JPYmplY3Q6OnNfaW5mbywgJkpTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvclRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvcikgfTsKIAogSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
Q29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCkBAIC0yMDksMTAgKzE4NCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGVGdW5jdGlvbk1ldGhvZAog
ICAgIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2Fz
dDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lcjo6c19pbmZvKTsKICAgICBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciog
aW1wID0gc3RhdGljX2Nhc3Q8VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqPihjYXN0ZWRUaGlz
LT5pbXBsKCkpOwotICAgIFJlZlB0cjxNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiBsaXN0ZW5lcihN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpjcmVhdGUoU2NyaXB0VmFsdWUoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5hcmd1bWVudCgwKSkpKTsKKyAgICAKKyAgICBSZWZQdHI8TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lcj4gbGlzdGVuZXIoTWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Y3JlYXRlKFNjcmlw
dFZhbHVlKGV4ZWMtPmdsb2JhbERhdGEoKSwgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywg
MCwgTWlzc2luZ0lzVW5kZWZpbmVkKSkpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KKyAgICAK
ICAgICBpbXAtPm1ldGhvZChsaXN0ZW5lcik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ci5oCmluZGV4IDZjMTQyZTlkOWZhNmRmMTRlOTljZWY3NDEzMjc4MWUyYzk2OTQyMTYuLjU3MDQ0
ZmIzODkwYTRjMTBhMGU2NWE1MzU2YTljNmVkNWZlZjI2MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaApAQCAtODgsNiArODgsMzEgQEAgcHJvdGVjdGVkOgog
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiB9OwogCitjbGFzcyBK
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3Ry
dWN0b3JPYmplY3QgeworcHJpdmF0ZToKKyAgICBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
Q29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCopOwor
CitwdWJsaWM6CisgICAgdHlwZWRlZiBET01Db25zdHJ1Y3Rvck9iamVjdCBCYXNlOworICAgIHN0
YXRpYyBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICB7CisgICAgICAgIEpTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXJDb25zdHJ1Y3RvciogcHRyID0gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3Ioc3RydWN0dXJlLCBnbG9iYWxPYmplY3Qp
OworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCk7CisgICAg
ICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5
U2xvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVy
dHlTbG90Jik7CisgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6
OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlEZXNjcmlw
dG9yJik7CisgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKKyAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUo
Z2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOworICAgIH0KK3Byb3RlY3RlZDoK
KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6SW1wbGVtZW50c0hhc0luc3RhbmNlIHwgRE9NQ29u
c3RydWN0b3JPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOworfTsKKwogLy8gRnVuY3Rpb25zCiAKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyUHJvdG90eXBlRnVuY3Rpb25NZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5k
ZXggODVkYTMwMTFjZDUxZmJmMGZmYTE4NmYyNzY2ZWFhODg1NmUwZDZhNC4uZDNhOGYwMWQ1Njkw
Y2Y0MWNkZTA1N2UyOWY4ZTg2N2E5MWJiZjk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTE3NSwzMSArMTc1
LDYgQEAgQ09NUElMRV9BU1NFUlQoMHgwMSA9PSBUZXN0T2JqOjpDT05TVF9WQUxVRV8xMiwgVGVz
dE9iakVudW1DT05TVF9WQUxVRV8xMklzV3JvbmcKIENPTVBJTEVfQVNTRVJUKDBYMjAgPT0gVGVz
dE9iajo6Q09OU1RfVkFMVUVfMTMsIFRlc3RPYmpFbnVtQ09OU1RfVkFMVUVfMTNJc1dyb25nVXNl
RG9udENoZWNrRW51bXMpOwogQ09NUElMRV9BU1NFUlQoMHgxYWJjID09IFRlc3RPYmo6OkNPTlNU
X1ZBTFVFXzE0LCBUZXN0T2JqRW51bUNPTlNUX1ZBTFVFXzE0SXNXcm9uZ1VzZURvbnRDaGVja0Vu
dW1zKTsKIAotY2xhc3MgSlNUZXN0T2JqQ29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0
b3JPYmplY3QgewotcHJpdmF0ZToKLSAgICBKU1Rlc3RPYmpDb25zdHJ1Y3RvcihKU0M6OlN0cnVj
dHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6
OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7Ci0KLXB1YmxpYzoKLSAgICB0eXBlZGVm
IERPTUNvbnN0cnVjdG9yT2JqZWN0IEJhc2U7Ci0gICAgc3RhdGljIEpTVGVzdE9iakNvbnN0cnVj
dG9yKiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi0gICAgewotICAgICAgICBKU1Rl
c3RPYmpDb25zdHJ1Y3RvciogcHRyID0gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPYmpD
b25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTVGVzdE9iakNvbnN0cnVjdG9yKHN0cnVjdHVy
ZSwgZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihleGVjLCBnbG9i
YWxPYmplY3QpOwotICAgICAgICByZXR1cm4gcHRyOwotICAgIH0KLQotICAgIHZpcnR1YWwgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZp
ZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6
OlByb3BlcnR5RGVzY3JpcHRvciYpOwotICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBz
X2luZm87Ci0gICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0
cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6
OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKLSAg
ICB9Ci1wcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6OkltcGxlbWVudHNIYXNJ
bnN0YW5jZSB8IERPTUNvbnN0cnVjdG9yT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKLX07Ci0KIGNv
bnN0IENsYXNzSW5mbyBKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE9iakNv
bnN0cnVjdG9yIiwgJkRPTUNvbnN0cnVjdG9yT2JqZWN0OjpzX2luZm8sICZKU1Rlc3RPYmpDb25z
dHJ1Y3RvclRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE9iakNvbnN0cnVjdG9y
KSB9OwogCiBKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6SlNUZXN0T2JqQ29uc3RydWN0b3IoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCkBAIC0xMDUx
LDcgKzEwMjYsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVm9pZE1ldGhvZChFeGVjU3RhdGUqIGV4ZQogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19p
bmZvKTsKICAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhp
cy0+aW1wbCgpKTsKLQorICAgIAorICAgIAogICAgIGltcC0+dm9pZE1ldGhvZCgpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC0xMDY0LDE2ICsxMDQw
LDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Wb2lkTWV0aG9kV2l0aEFyZ3MoRXhlY1N0CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0T2JqOjpzX2luZm8pOwog
ICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBs
KCkpOwotICAgIGludCBpbnRBcmcoZXhlYy0+YXJndW1lbnQoMCkudG9JbnQzMihleGVjKSk7Cisg
ICAgCisgICAgaW50IGludEFyZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBNaXNz
aW5nSXNVbmRlZmluZWQpLnRvSW50MzIoZXhlYykpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAg
ICBjb25zdCBTdHJpbmcmIHN0ckFyZyh1c3RyaW5nVG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoMSku
dG9TdHJpbmcoZXhlYykpKTsKKyAgICBjb25zdCBTdHJpbmcmIHN0ckFyZyh1c3RyaW5nVG9TdHJp
bmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgTWlzc2luZ0lzVW5kZWZpbmVkKS50
b1N0cmluZyhleGVjKSkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBUZXN0T2JqKiBvYmpB
cmcodG9UZXN0T2JqKGV4ZWMtPmFyZ3VtZW50KDIpKSk7CisgICAgVGVzdE9iaiogb2JqQXJnKHRv
VGVzdE9iaihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAyLCBNaXNzaW5nSXNVbmRlZmlu
ZWQpKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCisgICAgCiAgICAgaW1wLT52b2lkTWV0aG9k
V2l0aEFyZ3MoaW50QXJnLCBzdHJBcmcsIG9iakFyZyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTEwODYsNyArMTA2Myw4IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25JbnRNZXRob2QoRXhl
Y1N0YXRlKiBleGVjCiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNU
ZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0T2JqOjpzX2luZm8pOwogICAgIFRlc3RPYmoqIGltcCA9
IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotCisgICAgCisgICAg
CiAKICAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wLT5pbnRNZXRob2QoKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTEwMCwxNiArMTA3OCwx
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uSW50TWV0aG9kV2l0aEFyZ3MoRXhlY1N0YQogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKICAg
ICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgp
KTsKLSAgICBpbnQgaW50QXJnKGV4ZWMtPmFyZ3VtZW50KDApLnRvSW50MzIoZXhlYykpOworICAg
IAorICAgIGludCBpbnRBcmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgTWlzc2lu
Z0lzVW5kZWZpbmVkKS50b0ludDMyKGV4ZWMpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAg
Y29uc3QgU3RyaW5nJiBzdHJBcmcodXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDEpLnRv
U3RyaW5nKGV4ZWMpKSk7CisgICAgY29uc3QgU3RyaW5nJiBzdHJBcmcodXN0cmluZ1RvU3RyaW5n
KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIE1pc3NpbmdJc1VuZGVmaW5lZCkudG9T
dHJpbmcoZXhlYykpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgVGVzdE9iaiogb2JqQXJn
KHRvVGVzdE9iaihleGVjLT5hcmd1bWVudCgyKSkpOworICAgIFRlc3RPYmoqIG9iakFyZyh0b1Rl
c3RPYmooTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMiwgTWlzc2luZ0lzVW5kZWZpbmVk
KSkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQorICAgIAogCiAgICAgSlNDOjpKU1ZhbHVlIHJl
c3VsdCA9IGpzTnVtYmVyKGltcC0+aW50TWV0aG9kV2l0aEFyZ3MoaW50QXJnLCBzdHJBcmcsIG9i
akFyZykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTExMjMsNyAr
MTEwMiw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PYmpNZXRob2QoRXhlY1N0YXRlKiBleGVjCiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0T2JqOjpzX2luZm8p
OwogICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5p
bXBsKCkpOwotCisgICAgCisgICAgCiAKICAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gdG9KUyhl
eGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wLT5vYmpNZXRo
b2QoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTExMzcsMTYg
KzExMTcsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk9iak1ldGhvZFdpdGhBcmdzKEV4ZWNTdGEKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5m
byk7CiAgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMt
PmltcGwoKSk7Ci0gICAgaW50IGludEFyZyhleGVjLT5hcmd1bWVudCgwKS50b0ludDMyKGV4ZWMp
KTsKKyAgICAKKyAgICBpbnQgaW50QXJnKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAs
IE1pc3NpbmdJc1VuZGVmaW5lZCkudG9JbnQzMihleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwotICAgIGNvbnN0IFN0cmluZyYgc3RyQXJnKHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVu
dCgxKS50b1N0cmluZyhleGVjKSkpOworICAgIGNvbnN0IFN0cmluZyYgc3RyQXJnKHVzdHJpbmdU
b1N0cmluZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBNaXNzaW5nSXNVbmRlZmlu
ZWQpLnRvU3RyaW5nKGV4ZWMpKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIFRlc3RPYmoq
IG9iakFyZyh0b1Rlc3RPYmooZXhlYy0+YXJndW1lbnQoMikpKTsKKyAgICBUZXN0T2JqKiBvYmpB
cmcodG9UZXN0T2JqKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDIsIE1pc3NpbmdJc1Vu
ZGVmaW5lZCkpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KKyAgICAKIAogICAgIEpTQzo6SlNW
YWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6
OmdldFB0cihpbXAtPm9iak1ldGhvZFdpdGhBcmdzKGludEFyZywgc3RyQXJnLCBvYmpBcmcpKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTE2MiwxMyArMTE0Mywx
NCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJncwogICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19j
YXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgIGlmIChleGVjLT5hcmd1bWVu
dENvdW50KCkgPCAyKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwotICAgIGNvbnN0IFN0cmluZyYgc3RyQXJnKHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1
bWVudCgwKS50b1N0cmluZyhleGVjKSkpOworICAgIAorICAgIGNvbnN0IFN0cmluZyYgc3RyQXJn
KHVzdHJpbmdUb1N0cmluZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBNaXNzaW5n
SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAg
IFRlc3RPYmoqIG9iakFyZyh0b1Rlc3RPYmooZXhlYy0+YXJndW1lbnQoMSkpKTsKKyAgICBUZXN0
T2JqKiBvYmpBcmcodG9UZXN0T2JqKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIE1p
c3NpbmdJc1VuZGVmaW5lZCkpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KKyAgICAKIAogICAg
IEpTQzo6SlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCBXVEY6OmdldFB0cihpbXAtPm1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3Moc3RyQXJnLCBv
YmpBcmcpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTE4NCwx
NCArMTE2NiwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJncwogICAgIFRlc3RPYmoqIGltcCA9
IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPCAyKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMs
IGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiTm90IGVub3VnaCBhcmd1bWVudHMiKSk7CisgICAgCiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgY29uc3QgU3RyaW5nJiBzdHJBcmcodXN0cmlu
Z1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpKSk7CisgICAgY29uc3Qg
U3RyaW5nJiBzdHJBcmcodXN0cmluZ1RvU3RyaW5nKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4
ZWMsIDAsIE1pc3NpbmdJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYykpKTsKICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7Ci0gICAgVGVzdE9iaiogb2JqQXJnKHRvVGVzdE9iaihleGVjLT5hcmd1bWVudCgx
KSkpOworICAgIFRlc3RPYmoqIG9iakFyZyh0b1Rlc3RPYmooTUFZQkVfTUlTU0lOR19QQVJBTUVU
RVIoZXhlYywgMSwgTWlzc2luZ0lzVW5kZWZpbmVkKSkpOwogICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
LQorICAgIAogCiAgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcC0+bWV0aG9kVGhhdFJlcXVpcmVzQWxs
QXJnc0FuZFRocm93cyhzdHJBcmcsIG9iakFyZywgZWMpKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9u
KGV4ZWMsIGVjKTsKQEAgLTEyMDYsMTAgKzExODksMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNlcmlhbGl6ZWRWYWx1ZShFeGVjU3Rh
dGUKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihh
c09iamVjdCh0aGlzVmFsdWUpKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CiAgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nh
c3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gc2VyaWFsaXplZEFyZyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShl
eGVjLCBleGVjLT5hcmd1bWVudCgwKSkpOworICAgIAorICAgIFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHNlcmlhbGl6ZWRBcmcoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZXhl
YywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgTWlzc2luZ0lzVW5kZWZpbmVkKSkp
OwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQorICAgIAogICAgIGltcC0+c2VyaWFsaXplZFZhbHVl
KHNlcmlhbGl6ZWRBcmcpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CkBAIC0xMjIyLDEwICsxMjA2LDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25JZGJLZXkoRXhlY1N0YXRlKiBleGVjKQogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0
KHRoaXNWYWx1ZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
JkpTVGVzdE9iajo6c19pbmZvKTsKICAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0
T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAgICBSZWZQdHI8SURCS2V5PiBrZXkoY3JlYXRl
SURCS2V5RnJvbVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKSk7CisgICAgCisgICAgUmVm
UHRyPElEQktleT4ga2V5KGNyZWF0ZUlEQktleUZyb21WYWx1ZShleGVjLCBNQVlCRV9NSVNTSU5H
X1BBUkFNRVRFUihleGVjLCAwLCBNaXNzaW5nSXNVbmRlZmluZWQpKSk7CiAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwotCisgICAgCiAgICAgaW1wLT5pZGJLZXkoa2V5KTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtMTIzOCw3ICsxMjIzLDggQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wdGlvbnNP
YmplY3QoRXhlY1N0YXRlKgogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0
PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKICAgICBUZXN0T2JqKiBp
bXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAgICBPcHRp
b25zT2JqZWN0KiBvbyh0b09wdGlvbnNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpKTsKKyAgICAK
KyAgICBPcHRpb25zT2JqZWN0KiBvbyh0b09wdGlvbnNPYmplY3QoTUFZQkVfTUlTU0lOR19QQVJB
TUVURVIoZXhlYywgMCwgTWlzc2luZ0lzVW5kZWZpbmVkKSkpOwogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIApAQCAtMTI0OCwxMCArMTIzNCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3B0aW9uc09iamVjdChFeGVjU3RhdGUqCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0gICAg
T3B0aW9uc09iamVjdCogb29vKHRvT3B0aW9uc09iamVjdChleGVjLT5hcmd1bWVudCgxKSkpOwor
ICAgIE9wdGlvbnNPYmplY3QqIG9vbyh0b09wdGlvbnNPYmplY3QoTUFZQkVfTUlTU0lOR19QQVJB
TUVURVIoZXhlYywgMSwgTWlzc2luZ0lzVW5kZWZpbmVkKSkpOwogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKLQorICAgIAogICAgIGltcC0+b3B0aW9uc09iamVjdChvbywgb29vKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtMTI2NCw4ICsxMjUwLDkgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhFeGNlcHRpb24oRXhlY1MKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0
aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CiAgICAgVGVz
dE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7Cisg
ICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0KKyAgICAKICAgICBpbXAtPm1ldGhvZFdp
dGhFeGNlcHRpb24oZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTEyOTksMTQgKzEyODYsMTUg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkN1c3RvbUFyZ3NBbmRFeGNlcHRpb24oRXgKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBz
dGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CiAgICAg
VGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7
CisgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgUmVmUHRyPFNjcmlwdEFyZ3Vt
ZW50cz4gc2NyaXB0QXJndW1lbnRzKGNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhleGVjLCAxKSk7CiAg
ICAgc2l6ZV90IG1heFN0YWNrU2l6ZSA9IGltcC0+c2hvdWxkQ2FwdHVyZUZ1bGxTdGFja1RyYWNl
KCkgPyBTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUgOiAxOwogICAg
IFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayhjcmVhdGVTY3JpcHRDYWxsU3RhY2so
ZXhlYywgbWF4U3RhY2tTaXplKSk7Ci0gICAgbG9nKiBpbnRBcmcodG9sb2coZXhlYy0+YXJndW1l
bnQoMCkpKTsKKyAgICBsb2cqIGludEFyZyh0b2xvZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihl
eGVjLCAwLCBNaXNzaW5nSXNVbmRlZmluZWQpKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCisg
ICAgCiAgICAgaW1wLT5jdXN0b21BcmdzQW5kRXhjZXB0aW9uKGludEFyZywgc2NyaXB0QXJndW1l
bnRzLCBjYWxsU3RhY2ssIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xMzIwLDYgKzEzMDgs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQWRkRXZlbnRMaXN0ZW5lcihFeGVjU3RhdAogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKICAg
ICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgp
KTsKKyAgICAKICAgICBKU1ZhbHVlIGxpc3RlbmVyID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAg
aWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwpAQCAtMTMzNSw2ICsxMzI0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXIo
RXhlY1MKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoq
Pihhc09iamVjdCh0aGlzVmFsdWUpKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CiAgICAgVGVzdE9iaiogaW1wID0gc3RhdGlj
X2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgCiAgICAgSlNWYWx1ZSBs
aXN0ZW5lciA9IGV4ZWMtPmFyZ3VtZW50KDEpOwogICAgIGlmICghbGlzdGVuZXIuaXNPYmplY3Qo
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTEz
NTAsMTAgKzEzNDAsMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWUoRXhlY1N0YXQKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUp
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6
OnNfaW5mbyk7CiAgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3Rl
ZFRoaXMtPmltcGwoKSk7CisgICAgCiAgICAgRnJhbWUqIGR5bmFtaWNGcmFtZSA9IHRvRHluYW1p
Y0ZyYW1lKGV4ZWMpOwogICAgIGlmICghZHluYW1pY0ZyYW1lKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCisgICAgCiAgICAgaW1wLT53aXRoRHluYW1p
Y0ZyYW1lKGR5bmFtaWNGcmFtZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KQEAgLTEzNjYsMTMgKzEzNTcsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWVBbmRBcmco
RXgKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihh
c09iamVjdCh0aGlzVmFsdWUpKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CiAgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nh
c3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgCiAgICAgRnJhbWUqIGR5bmFt
aWNGcmFtZSA9IHRvRHluYW1pY0ZyYW1lKGV4ZWMpOwogICAgIGlmICghZHluYW1pY0ZyYW1lKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGludCBp
bnRBcmcoZXhlYy0+YXJndW1lbnQoMCkudG9JbnQzMihleGVjKSk7CisgICAgaW50IGludEFyZyhN
QVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBNaXNzaW5nSXNVbmRlZmluZWQpLnRvSW50
MzIoZXhlYykpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQorICAgIAogICAgIGltcC0+d2l0aER5
bmFtaWNGcmFtZUFuZEFyZyhkeW5hbWljRnJhbWUsIGludEFyZyk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTEzODUsMTAgKzEzNzcsMTEgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhE
eW5hbWljRnJhbWVBbmRPcHRpb24KICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNf
Y2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CiAgICAgVGVzdE9i
aiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAg
CiAgICAgRnJhbWUqIGR5bmFtaWNGcmFtZSA9IHRvRHluYW1pY0ZyYW1lKGV4ZWMpOwogICAgIGlm
ICghZHluYW1pY0ZyYW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwotICAgIGludCBpbnRBcmcoZXhlYy0+YXJndW1lbnQoMCkudG9JbnQzMihleGVjKSk7
CisgICAgaW50IGludEFyZyhNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBNaXNzaW5n
SXNVbmRlZmluZWQpLnRvSW50MzIoZXhlYykpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApAQCAt
MTM5OCwxMCArMTM5MSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uV2l0aER5bmFtaWNGcmFtZUFuZE9wdGlvbgogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAotICAgIGludCBvcHRp
b25hbEFyZyhleGVjLT5hcmd1bWVudCgxKS50b0ludDMyKGV4ZWMpKTsKKyAgICBpbnQgb3B0aW9u
YWxBcmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgTWlzc2luZ0lzVW5kZWZpbmVk
KS50b0ludDMyKGV4ZWMpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KKyAgICAKICAgICBpbXAt
PndpdGhEeW5hbWljRnJhbWVBbmRPcHRpb25hbEFyZyhkeW5hbWljRnJhbWUsIGludEFyZywgb3B0
aW9uYWxBcmcpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CkBAIC0xNDE0LDEzICsxNDA3LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRHluYW1pY0ZyYW1lQW5kVXNlckdlCiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhp
c1ZhbHVlKSk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNU
ZXN0T2JqOjpzX2luZm8pOwogICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoq
PihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIAogICAgIEZyYW1lKiBkeW5hbWljRnJhbWUgPSB0
b0R5bmFtaWNGcmFtZShleGVjKTsKICAgICBpZiAoIWR5bmFtaWNGcmFtZSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBpbnQgaW50QXJnKGV4ZWMt
PmFyZ3VtZW50KDApLnRvSW50MzIoZXhlYykpOworICAgIGludCBpbnRBcmcoTUFZQkVfTUlTU0lO
R19QQVJBTUVURVIoZXhlYywgMCwgTWlzc2luZ0lzVW5kZWZpbmVkKS50b0ludDMyKGV4ZWMpKTsK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci0KKyAgICAKICAgICBpbXAtPndpdGhEeW5hbWljRnJhbWVB
bmRVc2VyR2VzdHVyZShkeW5hbWljRnJhbWUsIGludEFyZywgU2NyaXB0Q29udHJvbGxlcjo6cHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CkBAIC0xNDMzLDEwICsxNDI3LDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRHluYW1pY0ZyYW1lQW5kVXNl
ckdlCiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4o
YXNPYmplY3QodGhpc1ZhbHVlKSk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCAmSlNUZXN0T2JqOjpzX2luZm8pOwogICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19j
YXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIAogICAgIEZyYW1lKiBkeW5h
bWljRnJhbWUgPSB0b0R5bmFtaWNGcmFtZShleGVjKTsKICAgICBpZiAoIWR5bmFtaWNGcmFtZSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBpbnQg
aW50QXJnKGV4ZWMtPmFyZ3VtZW50KDApLnRvSW50MzIoZXhlYykpOworICAgIGludCBpbnRBcmco
TUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgTWlzc2luZ0lzVW5kZWZpbmVkKS50b0lu
dDMyKGV4ZWMpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKQEAgLTE0NDYsMTAgKzE0NDEsMTAg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bldpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2UKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAKLSAgICBpbnQgb3B0aW9uYWxBcmcoZXhlYy0+YXJn
dW1lbnQoMSkudG9JbnQzMihleGVjKSk7CisgICAgaW50IG9wdGlvbmFsQXJnKE1BWUJFX01JU1NJ
TkdfUEFSQU1FVEVSKGV4ZWMsIDEsIE1pc3NpbmdJc1VuZGVmaW5lZCkudG9JbnQzMihleGVjKSk7
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCisgICAgCiAgICAgaW1wLT53aXRoRHluYW1pY0ZyYW1l
QW5kVXNlckdlc3R1cmVBU0FEKGR5bmFtaWNGcmFtZSwgaW50QXJnLCBvcHRpb25hbEFyZywgU2Ny
aXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC0xNDYyLDcgKzE0NTcsOCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNj
cmlwdFN0YXRlVm9pZChFeGVjUwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19j
YXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKICAgICBUZXN0T2Jq
KiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLQorICAg
IAorICAgIAogICAgIGltcC0+d2l0aFNjcmlwdFN0YXRlVm9pZChleGVjKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtMTQ3NSw3ICsxNDcxLDggQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldp
dGhTY3JpcHRTdGF0ZU9iaihFeGVjU3QKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0
aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CiAgICAgVGVz
dE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7Ci0K
KyAgICAKKyAgICAKIAogICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXAtPndpdGhTY3JpcHRTdGF0ZU9i
aihleGVjKSkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTE0OTEsOCArMTQ4
OCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25XaXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0T2JqOjpzX2luZm8pOwog
ICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBs
KCkpOworICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotCisgICAgCiAgICAgaW1wLT53
aXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICBzZXRET01FeGNlcHRp
b24oZXhlYywgZWMpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CkBAIC0xNTA2LDggKzE1MDQsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlT2JqRXhjZXB0aQogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNW
YWx1ZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVGVz
dE9iajo6c19pbmZvKTsKICAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4o
Y2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLQor
ICAgIAogCiAgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcC0+d2l0aFNjcmlwdFN0YXRlT2JqRXhjZXB0
aW9uKGV4ZWMsIGVjKSkpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CkBAIC0xNTI0
LDEwICsxNTIzLDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0T2JqOjpz
X2luZm8pOwogICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRU
aGlzLT5pbXBsKCkpOworICAgIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENv
bnRleHQgPSBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENv
bnRleHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0K
KyAgICAKICAgICBpbXAtPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0KHNjcmlwdENvbnRleHQp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC0xNTQw
LDYgKzE1NDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnKEV4ZQogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19p
bmZvKTsKICAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhp
cy0+aW1wbCgpKTsKKyAgICAKIAogICAgIHNpemVfdCBhcmdzQ291bnQgPSBleGVjLT5hcmd1bWVu
dENvdW50KCk7CiAgICAgaWYgKGFyZ3NDb3VudCA8PSAwKSB7CkBAIC0xNTQ3LDEwICsxNTQ4LDEw
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxBcmcoRXhlCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0gICAgaW50IG9wdChleGVjLT5hcmd1bWVudCgw
KS50b0ludDMyKGV4ZWMpKTsKKyAgICBpbnQgb3B0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4
ZWMsIDAsIE1pc3NpbmdJc1VuZGVmaW5lZCkudG9JbnQzMihleGVjKSk7CiAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwotCisgICAgCiAgICAgaW1wLT5tZXRob2RXaXRoT3B0aW9uYWxBcmcob3B0KTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtMTU2Myw3ICsx
NTY0LDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0EKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7
CiAgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmlt
cGwoKSk7Ci0gICAgaW50IG5vbk9wdChleGVjLT5hcmd1bWVudCgwKS50b0ludDMyKGV4ZWMpKTsK
KyAgICAKKyAgICBpbnQgbm9uT3B0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIE1p
c3NpbmdJc1VuZGVmaW5lZCkudG9JbnQzMihleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
CkBAIC0xNTczLDEwICsxNTc1LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0gICAgaW50
IG9wdChleGVjLT5hcmd1bWVudCgxKS50b0ludDMyKGV4ZWMpKTsKKyAgICBpbnQgb3B0KE1BWUJF
X01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIE1pc3NpbmdJc1VuZGVmaW5lZCkudG9JbnQzMihl
eGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCisgICAgCiAgICAgaW1wLT5tZXRob2RXaXRo
Tm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyhub25PcHQsIG9wdCk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTE1ODksNyArMTU5MSw4IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoTm9uT3B0aW9uYWxBcmdBCiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGlj
X2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0T2JqOjpzX2luZm8pOwogICAgIFRlc3RP
YmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAg
IGludCBub25PcHQoZXhlYy0+YXJndW1lbnQoMCkudG9JbnQzMihleGVjKSk7CisgICAgCisgICAg
aW50IG5vbk9wdChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBNaXNzaW5nSXNVbmRl
ZmluZWQpLnRvSW50MzIoZXhlYykpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApAQCAtMTU5OSwx
MyArMTYwMiwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAotICAgIGludCBvcHQxKGV4ZWMt
PmFyZ3VtZW50KDEpLnRvSW50MzIoZXhlYykpOworICAgIGludCBvcHQxKE1BWUJFX01JU1NJTkdf
UEFSQU1FVEVSKGV4ZWMsIDEsIE1pc3NpbmdJc1VuZGVmaW5lZCkudG9JbnQzMihleGVjKSk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGludCBvcHQyKGV4ZWMtPmFyZ3VtZW50KDIpLnRvSW50
MzIoZXhlYykpOworICAgIGludCBvcHQyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDIs
IE1pc3NpbmdJc1VuZGVmaW5lZCkudG9JbnQzMihleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwotCisgICAgCiAgICAgaW1wLT5tZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25h
bEFyZ3Mobm9uT3B0LCBvcHQxLCBvcHQyKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQpAQCAtMTYxOCwxMiArMTYyMSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNr
QXJnKEV4ZQogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9i
aio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKICAgICBUZXN0T2JqKiBpbXAgPSBzdGF0
aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICAKICAgICBpZiAoZXhl
Yy0+YXJndW1lbnRDb3VudCgpIDw9IDAgfHwgIWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkp
IHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAgICAg
UmVmUHRyPFRlc3RDYWxsYmFjaz4gY2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFz
T2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwot
CisgICAgCiAgICAgaW1wLT5tZXRob2RXaXRoQ2FsbGJhY2tBcmcoY2FsbGJhY2spOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC0xNjM2LDcgKzE2NDAs
OCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQQogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKICAg
ICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgp
KTsKLSAgICBpbnQgbm9uQ2FsbGJhY2soZXhlYy0+YXJndW1lbnQoMCkudG9JbnQzMihleGVjKSk7
CisgICAgCisgICAgaW50IG5vbkNhbGxiYWNrKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMs
IDAsIE1pc3NpbmdJc1VuZGVmaW5lZCkudG9JbnQzMihleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPD0gMSB8fCAhZXhlYy0+YXJndW1l
bnQoMSkuaXNPYmplY3QoKSkgewpAQCAtMTY0NCw3ICsxNjQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxs
YmFja0FyZ0EKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
ICAgICB9CiAgICAgUmVmUHRyPFRlc3RDYWxsYmFjaz4gY2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFj
azo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDEpKSwgY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCkpOwotCisgICAgCiAgICAgaW1wLT5tZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRD
YWxsYmFja0FyZyhub25DYWxsYmFjaywgY2FsbGJhY2spOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC0xNjU3LDYgKzE2NjIsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENh
bGxiYWNrQW5kT3B0aQogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpT
VGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKICAgICBUZXN0T2JqKiBpbXAg
PSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICAKICAgICBS
ZWZQdHI8VGVzdENhbGxiYWNrPiBjYWxsYmFjazsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3Vu
dCgpID4gMCAmJiAhZXhlYy0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSkgewogICAg
ICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpIHsKQEAgLTE2NjUsNyArMTY3
MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpCiAgICAgICAgIH0KICAgICAgICAgY2FsbGJh
Y2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKSwg
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIH0KLQorICAgIAogICAgIGltcC0+bWV0
aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcoY2FsbGJhY2spOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC0xNjc5LDcgKzE2ODUsOCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0
aW9uYWxNZXRob2QxKEV4ZWNTdAogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19j
YXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKICAgICBUZXN0T2Jq
KiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLQorICAg
IAorICAgIAogCiAgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nKGV4ZWMsIGltcC0+
Y29uZGl0aW9uYWxNZXRob2QxKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKQEAgLTE2OTYsNyArMTcwMyw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDIoRXhlY1N0CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhp
c1ZhbHVlKSk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNU
ZXN0T2JqOjpzX2luZm8pOwogICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoq
PihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotCisgICAgCisgICAgCiAgICAgaW1wLT5jb25kaXRpb25h
bE1ldGhvZDIoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQpAQCAtMTcxMiw3ICsxNzIwLDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMyhFeGVjU3QKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlz
VmFsdWUpKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rl
c3RPYmo6OnNfaW5mbyk7CiAgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+
KGNhc3RlZFRoaXMtPmltcGwoKSk7Ci0KKyAgICAKKyAgICAKICAgICBpbXAtPmNvbmRpdGlvbmFs
TWV0aG9kMygpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CkBAIC0xNzI3LDEzICsxNzM2LDE0IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEoCiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhp
c1ZhbHVlKSk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNU
ZXN0T2JqOjpzX2luZm8pOwogICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoq
PihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIFRlc3RPYmoqIG9iakFyZyh0b1Rlc3RPYmooZXhl
Yy0+YXJndW1lbnQoMCkpKTsKKyAgICAKKyAgICBUZXN0T2JqKiBvYmpBcmcodG9UZXN0T2JqKE1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIE1pc3NpbmdJc1VuZGVmaW5lZCkpKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgY29uc3QgU3RyaW5nJiBzdHJBcmcodXN0cmluZ1RvU3Ry
aW5nKGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpKSk7CisgICAgY29uc3QgU3RyaW5n
JiBzdHJBcmcodXN0cmluZ1RvU3RyaW5nKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEs
IE1pc3NpbmdJc1VuZGVmaW5lZCkudG9TdHJpbmcoZXhlYykpKTsKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7Ci0KKyAgICAKICAgICBpbXAtPm92ZXJsb2FkZWRNZXRob2Qob2JqQXJnLCBzdHJBcmcpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC0xNzQ2LDcg
KzE3NTYsOCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QyKAogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZv
KTsKICAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+
aW1wbCgpKTsKLSAgICBUZXN0T2JqKiBvYmpBcmcodG9UZXN0T2JqKGV4ZWMtPmFyZ3VtZW50KDAp
KSk7CisgICAgCisgICAgVGVzdE9iaiogb2JqQXJnKHRvVGVzdE9iaihNQVlCRV9NSVNTSU5HX1BB
UkFNRVRFUihleGVjLCAwLCBNaXNzaW5nSXNVbmRlZmluZWQpKSk7CiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogCkBAIC0xNzU2LDEwICsxNzY3LDEwIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDIoCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0g
ICAgaW50IGludEFyZyhleGVjLT5hcmd1bWVudCgxKS50b0ludDMyKGV4ZWMpKTsKKyAgICBpbnQg
aW50QXJnKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIE1pc3NpbmdJc1VuZGVmaW5l
ZCkudG9JbnQzMihleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCisgICAgCiAgICAgaW1w
LT5vdmVybG9hZGVkTWV0aG9kKG9iakFyZywgaW50QXJnKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtMTc3MiwxMCArMTc4MywxMSBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkZWRNZXRob2QzKAogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0
PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKICAgICBUZXN0T2JqKiBp
bXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAgICBjb25z
dCBTdHJpbmcmIHN0ckFyZyh1c3RyaW5nVG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJp
bmcoZXhlYykpKTsKKyAgICAKKyAgICBjb25zdCBTdHJpbmcmIHN0ckFyZyh1c3RyaW5nVG9TdHJp
bmcoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgTWlzc2luZ0lzVW5kZWZpbmVkKS50
b1N0cmluZyhleGVjKSkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQorICAgIAogICAgIGltcC0+
b3ZlcmxvYWRlZE1ldGhvZChzdHJBcmcpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CkBAIC0xNzg4LDEwICsxODAwLDExIEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZDQoCiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2Jq
Kj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCAmSlNUZXN0T2JqOjpzX2luZm8pOwogICAgIFRlc3RPYmoqIGltcCA9IHN0YXRp
Y19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIGludCBpbnRBcmcoZXhl
Yy0+YXJndW1lbnQoMCkudG9JbnQzMihleGVjKSk7CisgICAgCisgICAgaW50IGludEFyZyhNQVlC
RV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBNaXNzaW5nSXNVbmRlZmluZWQpLnRvSW50MzIo
ZXhlYykpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQorICAgIAogICAgIGltcC0+b3ZlcmxvYWRl
ZE1ldGhvZChpbnRBcmcpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CkBAIC0xODA0LDEyICsxODE3LDEzIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDUoCiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmpl
Y3QodGhpc1ZhbHVlKSk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCAmSlNUZXN0T2JqOjpzX2luZm8pOwogICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRl
c3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIAogICAgIGlmIChleGVjLT5hcmd1bWVu
dENvdW50KCkgPD0gMCB8fCAhZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkgewogICAgICAg
ICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOwogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KICAgICBSZWZQdHI8VGVz
dENhbGxiYWNrPiBjYWxsYmFjayA9IEpTVGVzdENhbGxiYWNrOjpjcmVhdGUoYXNPYmplY3QoZXhl
Yy0+YXJndW1lbnQoMCkpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7Ci0KKyAgICAKICAg
ICBpbXAtPm92ZXJsb2FkZWRNZXRob2QoY2FsbGJhY2spOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC0xODQwLDcgKzE4NTQsOCBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2Qo
RXhlY1N0YXRlKiBleAogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpT
VGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKICAgICBUZXN0T2JqKiBpbXAg
PSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLQorICAgIAorICAg
IAogICAgIGltcC0+Y2xhc3NNZXRob2QoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQpAQCAtMTg1Myw2ICsxODY4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aE9wdGlv
bmFsKEUKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoq
Pihhc09iamVjdCh0aGlzVmFsdWUpKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CiAgICAgVGVzdE9iaiogaW1wID0gc3RhdGlj
X2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgCiAKICAgICBzaXplX3Qg
YXJnc0NvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOwogICAgIGlmIChhcmdzQ291bnQgPD0g
MCkgewpAQCAtMTg2MSwxMCArMTg3NywxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoRQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQogCi0gICAgaW50IGFy
ZyhleGVjLT5hcmd1bWVudCgwKS50b0ludDMyKGV4ZWMpKTsKKyAgICBpbnQgYXJnKE1BWUJFX01J
U1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIE1pc3NpbmdJc1VuZGVmaW5lZCkudG9JbnQzMihleGVj
KSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCisgICAgCiAKICAgICBKU0M6OkpTVmFsdWUgcmVz
dWx0ID0ganNOdW1iZXIoaW1wLT5jbGFzc01ldGhvZFdpdGhPcHRpb25hbChhcmcpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKaW5kZXggYjQ3OTc1M2Y0NjJjNzAx
YzI3ZmMyMmU3NzBhOWE2NTRmNmM4NzNkMS4uZWRjMDQ5YTFlYzNiMzFkYjFhYWI0YzY2ODQ4ZTQx
OTVkNDgyYWEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouaApAQCAtMTAxLDYgKzEwMSwzMSBAQCBwcm90ZWN0ZWQ6CiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBCYXNlOjpTdHJ1
Y3R1cmVGbGFnczsKIH07CiAKK2NsYXNzIEpTVGVzdE9iakNvbnN0cnVjdG9yIDogcHVibGljIERP
TUNvbnN0cnVjdG9yT2JqZWN0IHsKK3ByaXZhdGU6CisgICAgSlNUZXN0T2JqQ29uc3RydWN0b3Io
SlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCopOworCitwdWJsaWM6Cisg
ICAgdHlwZWRlZiBET01Db25zdHJ1Y3Rvck9iamVjdCBCYXNlOworICAgIHN0YXRpYyBKU1Rlc3RP
YmpDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVy
ZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHsKKyAg
ICAgICAgSlNUZXN0T2JqQ29uc3RydWN0b3IqIHB0ciA9IG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8
SlNUZXN0T2JqQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Rlc3RPYmpDb25zdHJ1Y3Rv
cihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24o
ZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlND
OjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlm
aWVyJiwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBzdGF0aWMgY29uc3QgSlNDOjpD
bGFzc0luZm8gc19pbmZvOworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1
cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNf
aW5mbyk7CisgICAgfQorcHJvdGVjdGVkOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNDOjpJbXBs
ZW1lbnRzSGFzSW5zdGFuY2UgfCBET01Db25zdHJ1Y3Rvck9iamVjdDo6U3RydWN0dXJlRmxhZ3M7
Cit9OworCiAvLyBGdW5jdGlvbnMKIAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZChKU0M6OkV4ZWNTdGF0ZSopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmNwcAppbmRleCAyYWQ2MTBiYjZiNzQxYzAxYjg4MzlmZDJiODY1NDVjZWZkMWRiZjY2Li45ZWVj
MzE4ODdlMzRlMzhhZmZhODM0MDY0MzZiMzYzMDNmNGU3NWNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtNzQsMzEg
Kzc0LDYgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yVGFibGUKIAogI3VuZGVmIFRIVU5LX0dFTkVSQVRP
Ugogc3RhdGljIEpTQ19DT05TVF9IQVNIVEFCTEUgSGFzaFRhYmxlIEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yVGFibGUgPSB7IDEsIDAsIEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yVGFibGVWYWx1ZXMsIDAgfTsKLWNs
YXNzIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yIDogcHVi
bGljIERPTUNvbnN0cnVjdG9yT2JqZWN0IHsKLXByaXZhdGU6Ci0gICAgSlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUds
b2JhbE9iamVjdCopOwotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpFeGVjU3RhdGUqLCBK
U0RPTUdsb2JhbE9iamVjdCopOwotCi1wdWJsaWM6Ci0gICAgdHlwZWRlZiBET01Db25zdHJ1Y3Rv
ck9iamVjdCBCYXNlOwotICAgIHN0YXRpYyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotICAgIHsK
LSAgICAgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3Iq
IHB0ciA9IG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7Ci0g
ICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAg
cmV0dXJuIHB0cjsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNs
b3QmKTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6RXhl
Y1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3Im
KTsKLSAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwotICAgIHN0YXRpYyBK
U0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9i
YWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7Ci0gICAgfQotcHJvdGVjdGVkOgotICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgSlNDOjpJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBET01Db25zdHJ1
Y3Rvck9iamVjdDo6U3RydWN0dXJlRmxhZ3M7Ci19OwotCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvciIsICZET01Db25zdHJ1
Y3Rvck9iamVjdDo6c19pbmZvLCAmSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
Q29uc3RydWN0b3JUYWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvcikgfTsKIAogSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3I6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZUNvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZS5oCmluZGV4IGYxZmE0ZDQ0ZjBiZTVhMzA2MmI2Yjk3MDhhNGVi
YWFkMzY3NTM4NzEuLjQwOTBlNTk2ZDQ1NzVlNjkzY2FjYWQyZjBhYzcwODNhOTNkMjU0ZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmgKQEAgLTg4LDYgKzg4LDMxIEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIH07CiAKK2NsYXNzIEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yIDogcHVibGljIERP
TUNvbnN0cnVjdG9yT2JqZWN0IHsKK3ByaXZhdGU6CisgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9i
amVjdCopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUds
b2JhbE9iamVjdCopOworCitwdWJsaWM6CisgICAgdHlwZWRlZiBET01Db25zdHJ1Y3Rvck9iamVj
dCBCYXNlOworICAgIHN0YXRpYyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VD
b25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHsKKyAgICAg
ICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IqIHB0ciA9
IG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VDb25zdHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7CisgICAgICAg
IHB0ci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJu
IHB0cjsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6
RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsK
KyAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAg
ICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOworICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRh
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7CisgICAgfQorcHJvdGVjdGVkOgorICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90IHwgSlNDOjpJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBET01Db25zdHJ1Y3Rvck9i
amVjdDo6U3RydWN0dXJlRmxhZ3M7Cit9OworCiAvLyBBdHRyaWJ1dGVzCiAKIEpTQzo6SlNWYWx1
ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZShKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEludGVyZmFjZS5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEludGVyZmFjZS5pZGwKaW5k
ZXggNzQ3NGRhY2QwMDg4MWZlNGI3NzZkYjlmY2Q1NmExMWRiMTBlY2E0Yy4uYjUzN2NhOWM1ZjJj
NDBkZWU1NjU4ZDI1MjljMTU0MmFlYzU3M2Q2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbnRlcmZhY2UuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW50ZXJmYWNlLmlkbApAQCAtMzIsNyArMzIs
NiBAQCBtb2R1bGUgdGVzdCB7CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ29uZGl0aW9uYWw9
Q29uZGl0aW9uMXxDb25kaXRpb24yLAogICAgICAgICBDYW5CZUNvbnN0cnVjdGVkLAotICAgICAg
ICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAgICAgICBDb25zdHJ1Y3Rvcihp
biBET01TdHJpbmcgc3RyMSwgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01T
dHJpbmcgc3RyMiksCiAgICAgICAgIENvbnN0cnVjdG9yV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0LAogICAgICAgICBWOENvbnN0cnVjdG9yU2V0c0FjdGl2ZURPTVdyYXBwZXIsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaWRsCmluZGV4IDIxYjcwOGYyNGY2MWMxY2U3MDg1NTY2
OWJkZjBjNzY5MzE4NTJiYmQuLmRiNTU4YzI1NTEwNjAxYjhmYWJiZDM4M2U4ZjQ5ZTc2NDRkNmNj
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaWRsCkBAIC0yOCw3ICsyOCw2
IEBAIG1vZHVsZSBjc3MgewogICAgIC8vIEludHJvZHVjZWQgaW4gRE9NIExldmVsID86CiAgICAg
aW50ZXJmYWNlIFsKICAgICAgICAgQ2FuQmVDb25zdHJ1Y3RlZCwKLSAgICAgICAgSlNDdXN0b21D
b25zdHJ1Y3RvciwKICAgICAgICAgQ29uc3RydWN0b3JQYXJhbWV0ZXJzPTEsCiAgICAgICAgIENv
bnN0cnVjdG9yKGluIFtPcHRpb25hbD1DYWxsV2l0aE51bGxWYWx1ZV0gRE9NU3RyaW5nIGNzc1Zh
bHVlKSwKICAgICAgICAgQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUNoYW5uZWwuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9t
L01lc3NhZ2VDaGFubmVsLmlkbAppbmRleCA0NzIzMWIwMTFlOTVhNjYwNmQ3N2E5YWViMjg4MDlm
MzU5YjRmMjA4Li43YjA4MjEzZjlhYTRhYzI4OTUxZWY3NjMxN2RmYjQ0NDhkODBiNDNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUNoYW5uZWwuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlQ2hhbm5lbC5pZGwKQEAgLTI4LDcgKzI4LDkgQEAgbW9kdWxl
IGV2ZW50cyB7CiAKICAgICBpbnRlcmZhY2UgWwogICAgICAgICBDYW5CZUNvbnN0cnVjdGVkLAot
ICAgICAgICBDdXN0b21Db25zdHJ1Y3RvciwKKyAgICAgICAgQ29uc3RydWN0b3IsCisgICAgICAg
IENvbnN0cnVjdG9yV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAorICAgICAgICBWOEN1c3Rv
bUNvbnN0cnVjdG9yLAogICAgICAgICBDdXN0b21NYXJrRnVuY3Rpb24sCiAgICAgICAgIE5vU3Rh
dGljVGFibGVzCiAgICAgXSBNZXNzYWdlQ2hhbm5lbCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
UmVhZGVyLmlkbAppbmRleCBhYTk4YjA5ZTgyYmQwMDBkNjRlNzgyNDlhNWU2YjMzOTYyNmM3N2Nh
Li40MWUyMmU0Y2NlNzFkY2VlZTFhMWQwMTViZmMxNGU0ZTM0M2JhZmIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZVJlYWRlci5pZGwKQEAgLTM0LDcgKzM0LDYgQEAgbW9kdWxlIGh0bWwgewog
ICAgICAgICBDb25kaXRpb25hbD1CTE9CLAogICAgICAgICBBY3RpdmVET01PYmplY3QsCiAgICAg
ICAgIENhbkJlQ29uc3RydWN0ZWQsCi0gICAgICAgIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsCiAgICAgICAgIEV2ZW50VGFyZ2V0LAogICAgICAgICBOb1N0YXRpY1RhYmxlcywKICAg
ICAgICAgQ29uc3RydWN0b3IsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
U291cmNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaWRsCmluZGV4IGUy
NTAwMGMzNjI3ZmRkYTgzMjU3ZmJiZGNjN2E3M2EzYTFiZDUwZjEuLmI1Mzk0OTgxNGE2ZjhiOWM0
Y2E4NTg4OGY5NTgzOWYwZjBjNjljODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRTb3VyY2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaWRs
CkBAIC0zNCw3ICszNCw2IEBAIG1vZHVsZSB3aW5kb3cgewogICAgIGludGVyZmFjZSBbCiAgICAg
ICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICAgICAgQ2FuQmVDb25zdHJ1Y3RlZCwKLSAgICAgICAg
SlNDdXN0b21Db25zdHJ1Y3RvciwKICAgICAgICAgQ29uc3RydWN0b3JQYXJhbWV0ZXJzPTEsCiAg
ICAgICAgIENvbnN0cnVjdG9yKGluIERPTVN0cmluZyBzY3JpcHRVcmwpLAogICAgICAgICBDb25z
dHJ1Y3RvcldpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmgKaW5kZXggYWU1MGI0ODE5NWI4NjAxMmM4YmM4NTBjOGZiZjQzMDZhYTY4ZWIzYy4u
Y2E3NjM1MzFkYjI5OGRlMmQ0MDQ0NTRkYzEyNTlkMzI5YTAxNjM0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJFdmVudFRhcmdl
dC5oIgogI2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5o
IgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRl
ckNsaWVudC5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxl
LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5pZGwKaW5kZXggZDRkMDZjODU2ZDM0NzVlNmQ1MzU2YTc0MjYxZDkxZDk0NzI4NzNiYi4uMzUw
OTFmMzQxZjE0MzFmNzlhNGVhOWViMWYwZmY0ZmNlMmMwZjdjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuaWRsCkBAIC0zMSw3ICszMSw5IEBAIG1vZHVsZSB4bWwgewogICAgIGlu
dGVyZmFjZSBbCiAgICAgICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICAgICAgQ2FuQmVDb25zdHJ1
Y3RlZCwKLSAgICAgICAgQ3VzdG9tQ29uc3RydWN0b3IsCisgICAgICAgIENvbnN0cnVjdG9yLAor
ICAgICAgICBDb25zdHJ1Y3RvcldpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKKyAgICAgICAg
VjhDdXN0b21Db25zdHJ1Y3RvciwKICAgICAgICAgQ3VzdG9tTWFya0Z1bmN0aW9uLAogICAgICAg
ICBFdmVudFRhcmdldCwKICAgICAgICAgTm9TdGF0aWNUYWJsZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xU
UHJvY2Vzc29yLmlkbAppbmRleCAzNjdjZjc0ZmZkODRlNDcwZTNmOWJmODk3NTVlMDhiZGYxMWEx
ZGRkLi5iZDg3NmFjNTZiNjQ1Yzk0NzM2NmI5NDJkNjA1YThhNGQwYTJmODVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUveG1sL1hTTFRQcm9jZXNzb3IuaWRsCkBAIC0zNSw3ICszNSw2IEBAIG1vZHVsZSB4bWwgewog
ICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlvbmFsPVhTTFQsCiAgICAgICAgIENhbkJl
Q29uc3RydWN0ZWQsCi0gICAgICAgIEpTQ3VzdG9tQ29uc3RydWN0b3IsCiAgICAgICAgIENvbnN0
cnVjdG9yCiAgICAgXSBYU0xUUHJvY2Vzc29yIHsKICAgICAgICAgCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>