<?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>163223</bug_id>
          
          <creation_ts>2016-10-10 10:53:35 -0700</creation_ts>
          <short_desc>[DOMJIT] Use DOMJIT::Patchpoint in IC</short_desc>
          <delta_ts>2016-10-17 23:39:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>163005</dependson>
          <blocked>162544</blocked>
    
    <blocked>163226</blocked>
    
    <blocked>163563</blocked>
    
    <blocked>163457</blocked>
    
    <blocked>163586</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ossy</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1238382</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-10 10:53:35 -0700</bug_when>
    <thetext>IC can use DOMJIT::Patchpoint to emit the fast path instead of calling CustomAccessor getter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239187</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-11 22:34:44 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 163226 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239701</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-12 23:05:49 -0700</bug_when>
    <thetext>I think this should be done separately from IC&apos;s special path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239723</commentid>
    <comment_count>3</comment_count>
      <attachid>291465</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-13 01:12:47 -0700</bug_when>
    <thetext>Created attachment 291465
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239727</commentid>
    <comment_count>4</comment_count>
      <attachid>291468</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-13 01:48:36 -0700</bug_when>
    <thetext>Created attachment 291468
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239941</commentid>
    <comment_count>5</comment_count>
      <attachid>291514</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-13 14:08:27 -0700</bug_when>
    <thetext>Created attachment 291514
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240052</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-13 17:56:17 -0700</bug_when>
    <thetext>don-traverse results.

Baseline

firstChild:Runs -&gt; [976, 979, 1028, 1061, 1066] runs/s
    mean: 1022 runs/s
    median: 1028 runs/s
    stdev: 43.17985641476821 runs/s
    min: 976 runs/s
    max: 1066 runs/s

lastChild:Runs -&gt; [907, 928, 936, 937, 970] runs/s
    mean: 935.6 runs/s
    median: 936 runs/s
    stdev: 22.700220263248546 runs/s
    min: 907 runs/s
    max: 970 runs/s

nextSibling:Runs -&gt; [1345, 1379, 1418, 1437, 1448] runs/s
    mean: 1405.4 runs/s
    median: 1418 runs/s
    stdev: 42.77031680967534 runs/s
    min: 1345 runs/s
    max: 1448 runs/s

previousSibling:Runs -&gt; [1281, 1336, 1354, 1356, 1370] runs/s
    mean: 1339.4 runs/s
    median: 1354 runs/s
    stdev: 34.81091782760112 runs/s
    min: 1281 runs/s
    max: 1370 runs/s

childNodes:Runs -&gt; [1502, 1508, 1509, 1525, 1535] runs/s
    mean: 1515.8 runs/s
    median: 1509 runs/s
    stdev: 13.700364958642547 runs/s
    min: 1502 runs/s
    max: 1535 runs/s


:Runs -&gt; [231.6402243970682, 236.08108445733586, 241.10327162754916, 243.97158510784413, 247.46260021309118] runs/s
    mean: 240.0517531605777 runs/s
    median: 241.10327162754916 runs/s
    stdev: 6.283141206975851 runs/s
    min: 231.6402243970682 runs/s
    max: 247.46260021309118 runs/s

Patched:

firstChild:Runs -&gt; [1166, 1171, 1204, 1219, 1231] runs/s
    mean: 1198.2 runs/s
    median: 1204 runs/s
    stdev: 28.804513535208343 runs/s
    min: 1166 runs/s
    max: 1231 runs/s

lastChild:Runs -&gt; [1081, 1081, 1108, 1109, 1125] runs/s
    mean: 1100.8 runs/s
    median: 1108 runs/s
    stdev: 19.292485583770702 runs/s
    min: 1081 runs/s
    max: 1125 runs/s

nextSibling:Runs -&gt; [1388, 1414, 1465, 1515, 1527] runs/s
    mean: 1461.8 runs/s
    median: 1465 runs/s
    stdev: 60.874460983239956 runs/s
    min: 1388 runs/s
    max: 1527 runs/s

previousSibling:Runs -&gt; [1476, 1480, 1487, 1491, 1516] runs/s
    mean: 1490 runs/s
    median: 1487 runs/s
    stdev: 15.668439615992398 runs/s
    min: 1476 runs/s
    max: 1516 runs/s

childNodes:Runs -&gt; [1539, 1545, 1546, 1553, 1554] runs/s
    mean: 1547.4 runs/s
    median: 1546 runs/s
    stdev: 6.188699378706323 runs/s
    min: 1539 runs/s
    max: 1554 runs/s


:Runs -&gt; [261.06642543785387, 262.5237761338508, 267.73681405310816, 270.50936975529527, 273.280292306101] runs/s
    mean: 267.02333553724185 runs/s
    median: 267.73681405310816 runs/s
    stdev: 5.185118294847495 runs/s
    min: 261.06642543785387 runs/s
    max: 273.280292306101 runs/s</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240062</commentid>
    <comment_count>7</comment_count>
      <attachid>291551</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-13 18:15:03 -0700</bug_when>
    <thetext>Created attachment 291551
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240067</commentid>
    <comment_count>8</comment_count>
      <attachid>291552</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-13 18:23:50 -0700</bug_when>
    <thetext>Created attachment 291552
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240103</commentid>
    <comment_count>9</comment_count>
      <attachid>291567</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-13 22:14:38 -0700</bug_when>
    <thetext>Created attachment 291567
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240104</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-13 22:14:58 -0700</bug_when>
    <thetext>OK, patch is ready!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240117</commentid>
    <comment_count>11</comment_count>
      <attachid>291567</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-13 23:07:50 -0700</bug_when>
    <thetext>Comment on attachment 291567
Patch

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

&gt; Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:1049
&gt; +

I&apos;ll extract this part to a function soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240119</commentid>
    <comment_count>12</comment_count>
      <attachid>291574</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-13 23:17:17 -0700</bug_when>
    <thetext>Created attachment 291574
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240419</commentid>
    <comment_count>13</comment_count>
      <attachid>291574</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-14 14:46:00 -0700</bug_when>
    <thetext>Comment on attachment 291574
Patch

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

r=me with comments

&gt; Source/JavaScriptCore/bytecode/DOMJITAccessCasePatchpointParams.cpp:83
&gt; +        bool isGetter = true;

Maybe we should just name this something like &quot;callHasReturnValue&quot; and also the parameter to the function. I think I originally renamed this &quot;isGetter&quot; but I think that&apos;s a confusing name given the purpose of the boolean.

&gt; Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:80
&gt; +    if (m_extraLiveRegistersForCall != extra)
&gt; +        m_calculatedRegistersForCallAndExceptionHandling = false;

As we spoke about in person, lets migrate this function to something that returns a token that represents the state.

&gt; Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:1449
&gt; +    if (paramGlobalObjectGPR != InvalidGPRReg)
&gt; +        regs.append(paramGlobalObjectGPR);

Is the API to always pass the GlobalObject as the second parameter if requested by the patchpoint?

Nit: Also, I think the code is cleaner as:
if (patchpoint-&gt;requireGlobalObject) {
    ASSERT(paramGlobalObjectGPR != InvalidGPRReg);
    regs.append(paramGlobalObjectGPR);
}

In case anybody changes the above code, the assertion prevents them from messing up.

&gt; Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:1482
&gt; +        jit.emitLoadStructure(paramBaseGPR, paramGlobalObjectGPR, valueRegs.payloadGPR());

Will this ever not be the GlobalObject that belongs to the structure we&apos;re emitting code for? Seems like we could just move a constant pointer instead of doing a dependent load.

&gt; Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:1487
&gt; +    // We do not need to spill locked registers since the caller (Baseline, DFG, and FTL)
&gt; +    // must assume that they can be clobbered in the IC fast path if it succeeds.

As we discussed in person, this comment can be somewhat confusing. I would just say that for things to not be spilled, they must be in the used register set. And some things are allowed to be locked but not in the used register set. (Or some comment along those lines.)

&gt; JSTests/stress/domjit-getter-complex-with-incorrect-object.js:1
&gt; +function shouldThrow(func, errorMessage) {

Can you also add a test that tiers up, then throws an exception, to make sure we&apos;re OSR exitting properly. The test can make sure values are what you expect inside the catch block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240697</commentid>
    <comment_count>14</comment_count>
      <attachid>291574</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-16 00:31:34 -0700</bug_when>
    <thetext>Comment on attachment 291574
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/bytecode/DOMJITAccessCasePatchpointParams.cpp:83
&gt;&gt; +        bool isGetter = true;
&gt; 
&gt; Maybe we should just name this something like &quot;callHasReturnValue&quot; and also the parameter to the function. I think I originally renamed this &quot;isGetter&quot; but I think that&apos;s a confusing name given the purpose of the boolean.

Right. We should do that.

&gt;&gt; Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:80
&gt;&gt; +        m_calculatedRegistersForCallAndExceptionHandling = false;
&gt; 
&gt; As we spoke about in person, lets migrate this function to something that returns a token that represents the state.

Changed. These functions return SpillState.

&gt;&gt; Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:1449
&gt;&gt; +        regs.append(paramGlobalObjectGPR);
&gt; 
&gt; Is the API to always pass the GlobalObject as the second parameter if requested by the patchpoint?
&gt; 
&gt; Nit: Also, I think the code is cleaner as:
&gt; if (patchpoint-&gt;requireGlobalObject) {
&gt;     ASSERT(paramGlobalObjectGPR != InvalidGPRReg);
&gt;     regs.append(paramGlobalObjectGPR);
&gt; }
&gt; 
&gt; In case anybody changes the above code, the assertion prevents them from messing up.

Yes. We pass it as a second parameter. And this is why I create the specialized patchpoint &quot;CallDOMPatchpoint&quot; from the general &quot;Patchpoint&quot;.
&quot;CallDOMPatchpoint&quot; is the derived class of &quot;Patchpoint&quot;. And only &quot;CallDOMPatchpoint&quot; has this option.

And yeah, the code cleanup suggestion looks nice. Fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:1482
&gt;&gt; +        jit.emitLoadStructure(paramBaseGPR, paramGlobalObjectGPR, valueRegs.payloadGPR());
&gt; 
&gt; Will this ever not be the GlobalObject that belongs to the structure we&apos;re emitting code for? Seems like we could just move a constant pointer instead of doing a dependent load.

Yes, right! We don&apos;t need to load a global object here!

&gt;&gt; Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:1487
&gt;&gt; +    // must assume that they can be clobbered in the IC fast path if it succeeds.
&gt; 
&gt; As we discussed in person, this comment can be somewhat confusing. I would just say that for things to not be spilled, they must be in the used register set. And some things are allowed to be locked but not in the used register set. (Or some comment along those lines.)

Fix this comment.

&gt;&gt; JSTests/stress/domjit-getter-complex-with-incorrect-object.js:1
&gt;&gt; +function shouldThrow(func, errorMessage) {
&gt; 
&gt; Can you also add a test that tiers up, then throws an exception, to make sure we&apos;re OSR exitting properly. The test can make sure values are what you expect inside the catch block.

Sure! Added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240704</commentid>
    <comment_count>15</comment_count>
      <attachid>291740</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-16 02:13:22 -0700</bug_when>
    <thetext>Created attachment 291740
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241113</commentid>
    <comment_count>16</comment_count>
      <attachid>291574</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-17 13:08:25 -0700</bug_when>
    <thetext>Comment on attachment 291574
Patch

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

&gt;&gt;&gt; JSTests/stress/domjit-getter-complex-with-incorrect-object.js:1
&gt;&gt;&gt; +function shouldThrow(func, errorMessage) {
&gt;&gt; 
&gt;&gt; Can you also add a test that tiers up, then throws an exception, to make sure we&apos;re OSR exitting properly. The test can make sure values are what you expect inside the catch block.
&gt; 
&gt; Sure! Added.

After cleaning up the patch, I&apos;ve found one bug: forgetting resuming registers &amp; stacks when exception occurs inside the slow path. I&apos;ve fixed in that clean up and added the test to ensure the fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241120</commentid>
    <comment_count>17</comment_count>
      <attachid>291861</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-17 13:26:33 -0700</bug_when>
    <thetext>Created attachment 291861
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241137</commentid>
    <comment_count>18</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-17 13:46:27 -0700</bug_when>
    <thetext>Committed r207427: &lt;http://trac.webkit.org/changeset/207427&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241146</commentid>
    <comment_count>19</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-17 14:00:12 -0700</bug_when>
    <thetext>Committed r207428: &lt;http://trac.webkit.org/changeset/207428&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241153</commentid>
    <comment_count>20</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-10-17 14:13:01 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Committed r207428: &lt;http://trac.webkit.org/changeset/207428&gt;

It broke the Apple Mac build, see build.webkit.org for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241155</commentid>
    <comment_count>21</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-17 14:13:17 -0700</bug_when>
    <thetext>Committed r207430: &lt;http://trac.webkit.org/changeset/207430&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241162</commentid>
    <comment_count>22</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-17 14:26:00 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; &gt; Committed r207428: &lt;http://trac.webkit.org/changeset/207428&gt;
&gt; 
&gt; It broke the Apple Mac build, see build.webkit.org for details.

Thanks, I&apos;ve just fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241200</commentid>
    <comment_count>23</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-17 15:28:06 -0700</bug_when>
    <thetext>And this issue figures out we need to clean up IC code.
https://bugs.webkit.org/show_bug.cgi?id=163563</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241340</commentid>
    <comment_count>24</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-10-17 22:49:08 -0700</bug_when>
    <thetext>** The following JSC stress test failures have been introduced:
	stress/domjit-exception.js.default
	stress/domjit-exception.js.dfg-eager
	stress/domjit-exception.js.dfg-maximal-flush-validate-no-cjit
	stress/domjit-exception.js.ftl-eager
	stress/domjit-exception.js.ftl-eager-no-cjit
	stress/domjit-exception.js.ftl-no-cjit-no-inline-validate
	stress/domjit-exception.js.ftl-no-cjit-no-put-stack-validate
	stress/domjit-exception.js.ftl-no-cjit-small-pool
	stress/domjit-exception.js.ftl-no-cjit-validate-sampling-profiler
	stress/domjit-exception.js.no-cjit-validate-phases
	stress/domjit-exception.js.no-ftl
	stress/domjit-exception.js.no-llint

https://build.webkit.org/builders/Apple%20El%20Capitan%20Debug%20JSC%20%28Tests%29/builds/4319</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241344</commentid>
    <comment_count>25</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-17 23:01:45 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; ** The following JSC stress test failures have been introduced:
&gt; 	stress/domjit-exception.js.default
&gt; 	stress/domjit-exception.js.dfg-eager
&gt; 	stress/domjit-exception.js.dfg-maximal-flush-validate-no-cjit
&gt; 	stress/domjit-exception.js.ftl-eager
&gt; 	stress/domjit-exception.js.ftl-eager-no-cjit
&gt; 	stress/domjit-exception.js.ftl-no-cjit-no-inline-validate
&gt; 	stress/domjit-exception.js.ftl-no-cjit-no-put-stack-validate
&gt; 	stress/domjit-exception.js.ftl-no-cjit-small-pool
&gt; 	stress/domjit-exception.js.ftl-no-cjit-validate-sampling-profiler
&gt; 	stress/domjit-exception.js.no-cjit-validate-phases
&gt; 	stress/domjit-exception.js.no-ftl
&gt; 	stress/domjit-exception.js.no-llint
&gt; 
&gt; https://build.webkit.org/builders/
&gt; Apple%20El%20Capitan%20Debug%20JSC%20%28Tests%29/builds/4319

Thanks! Looking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241348</commentid>
    <comment_count>26</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-17 23:23:44 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #24)
&gt; &gt; ** The following JSC stress test failures have been introduced:
&gt; &gt; 	stress/domjit-exception.js.default
&gt; &gt; 	stress/domjit-exception.js.dfg-eager
&gt; &gt; 	stress/domjit-exception.js.dfg-maximal-flush-validate-no-cjit
&gt; &gt; 	stress/domjit-exception.js.ftl-eager
&gt; &gt; 	stress/domjit-exception.js.ftl-eager-no-cjit
&gt; &gt; 	stress/domjit-exception.js.ftl-no-cjit-no-inline-validate
&gt; &gt; 	stress/domjit-exception.js.ftl-no-cjit-no-put-stack-validate
&gt; &gt; 	stress/domjit-exception.js.ftl-no-cjit-small-pool
&gt; &gt; 	stress/domjit-exception.js.ftl-no-cjit-validate-sampling-profiler
&gt; &gt; 	stress/domjit-exception.js.no-cjit-validate-phases
&gt; &gt; 	stress/domjit-exception.js.no-ftl
&gt; &gt; 	stress/domjit-exception.js.no-llint
&gt; &gt; 
&gt; &gt; https://build.webkit.org/builders/
&gt; &gt; Apple%20El%20Capitan%20Debug%20JSC%20%28Tests%29/builds/4319
&gt; 
&gt; Thanks! Looking.

Ah, OK. This is because we don&apos;t set NativeCallFrameTracer.
Slow call should use these things since they are CCalls.
I&apos;ll create the patch to fix it...!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291465</attachid>
            <date>2016-10-13 01:12:47 -0700</date>
            <delta_ts>2016-10-13 01:48:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163223-20161013010922.patch</filename>
            <type>text/plain</type>
            <size>7736</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MTk1N2ZlNzFlZjI0ODFjN2M0ZTY4OTI4MzBhM2U1MjFiMmQxNWFhLi40MzhmMjVjYzFlMzU3ZGU5
OWQ4YzY5YjZhNDAyZDVkNWM3NDRkNGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNi0xMC0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRE9NSklUXSBVc2UgRE9NSklUOjpQYXRjaHBvaW50IGluIElDCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyMjMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJ5dGVjb2Rl
L0RPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmg6IEFkZGVkLgorICAgICAgICAoSlND
OjpET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtczo6RE9NSklUUGF0Y2hwb2ludFBhcmFt
cyk6CisgICAgICAgICogYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAo
SlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorCiAyMDE2LTEwLTEyICBNYXJrIExhbSAg
PG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgdmFyaWFibGVzIGluIGFycmF5
UHJvdG9GdW5jU3BsaWNlKCkgdG8gbWF0Y2ggbmFtZXMgaW4gdGhlIHNwZWMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9p
bnRQYXJhbXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ET01KSVRBY2Nlc3ND
YXNlUGF0Y2hwb2ludFBhcmFtcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwN2E5NGJkZDgzOTJhOGFkNWZmNjli
NWZiMDRmY2ZlODI3MTI0NTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaApAQCAtMCwwICsx
LDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAiRE9NSklUUGF0Y2hwb2lu
dFBhcmFtcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU3BlY3VsYXRpdmVKSVQ7CisK
K2NsYXNzIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zIDogcHVibGljIERPTUpJVDo6
UGF0Y2hwb2ludFBhcmFtcyB7CitwdWJsaWM6CisgICAgRE9NSklUUGF0Y2hwb2ludFBhcmFtcyhT
cGVjdWxhdGl2ZUpJVCogaml0LCBWZWN0b3I8RE9NSklUOjpWYWx1ZT4mJiByZWdzLCBWZWN0b3I8
R1BSUmVnPiYmIGdwU2NyYXRjaCwgVmVjdG9yPEZQUlJlZz4mJiBmcFNjcmF0Y2gpCisgICAgICAg
IDogRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zKFdURk1vdmUocmVncyksIFdURk1vdmUoZ3BTY3Jh
dGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gpKQorICAgICAgICAsIG1faml0KGppdCkKKyAgICB7Cisg
ICAgfQorCitwcml2YXRlOgorI2RlZmluZSBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUyhPcGVy
YXRpb25UeXBlLCBSZXN1bHRUeXBlLCAuLi4pIHZvaWQgYWRkU2xvd1BhdGhDYWxsSW1wbChDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0LCBDQ2FsbEhlbHBlcnMmLCBPcGVyYXRpb25UeXBlLCBSZXN1bHRU
eXBlLCBzdGQ6OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBjb25zdCBvdmVycmlkZTsKKyAgICBE
T01KSVRfU0xPV19QQVRIX0NBTExTKEpTQ19ERUZJTkVfQ0FMTF9PUEVSQVRJT05TKQorI3VuZGVm
IEpTQ19ERUZJTkVfQ0FMTF9PUEVSQVRJT05TCit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5k
ZXggOWE4YThlNTIwMDk4YTk2YWU2ZGM4NTA5ZjAyZjE1MzFhMDAxMjU2MC4uMDNiZDhjODBkMWRh
Njc3MjllYzAwYzZhMmUyNjZjODhhZDc2YjQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSAiQmluYXJ5U3dpdGNoLmgiCiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAj
aW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9p
bnRQYXJhbXMuaCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJHZXR0
ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFwLmgiCkBAIC05MzIsNiArOTMzLDc3IEBAIHZvaWQg
QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBpZiAobV90eXBlID09IEN1
c3RvbUFjY2Vzc29yR2V0dGVyICYmIG1fcmFyZURhdGEtPmRvbUpJVCkgeworICAgICAgICAgICAg
Ly8gV2UgZG8gbm90IG5lZWQgdG8gZW1pdCBDaGVja0RPTSBvcGVyYXRpb24gc2luY2Ugc3RydWN0
dXJlIGNoZWNrIGVuc3VyZXMKKyAgICAgICAgICAgIC8vIHRoYXQgdGhlIGdpdmVuIGJhc2UgdmFs
dWUgaXMgYW4gYXBwcm9wcmlhdGUgRE9NIG5vZGUuCisgICAgICAgICAgICBSZWY8RE9NSklUOjpD
YWxsRE9NUGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IG1fcmFyZURhdGEtPmRvbUpJVC0+Y2FsbERP
TSgpOworCisgICAgICAgICAgICBWZWN0b3I8R1BSUmVnPiBncFNjcmF0Y2g7CisgICAgICAgICAg
ICBWZWN0b3I8RlBSUmVnPiBmcFNjcmF0Y2g7CisgICAgICAgICAgICBWZWN0b3I8RE9NSklUOjpW
YWx1ZT4gcmVnczsKKworICAgICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9j
YXRvcihzdHViSW5mby5wYXRjaC51c2VkUmVnaXN0ZXJzKTsKKyAgICAgICAgICAgIGFsbG9jYXRv
ci5sb2NrKGJhc2VHUFIpOworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgICAgICBhbGxv
Y2F0b3IubG9jayhzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmJhc2VUYWdHUFIp
KTsKKyNlbmRpZgorICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKKyAgICAg
ICAgICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOworCisgICAgICAgICAgICBHUFJSZWcg
cGFyYW1CYXNlR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgICAgIEdQUlJlZyBwYXJhbUds
b2JhbE9iamVjdEdQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgICAgICBKU1ZhbHVlUmVncyBw
YXJhbVZhbHVlUmVncyA9IHZhbHVlUmVnczsKKyAgICAgICAgICAgIEdQUlJlZyByZW1haW5pbmdT
Y3JhdGNoR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgICAgIGlmIChiYXNlRm9yR2V0R1BS
ICE9IHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpIHsKKyAgICAgICAgICAgICAgICBwYXJhbUJhc2VH
UFIgPSBiYXNlRm9yR2V0R1BSOworICAgICAgICAgICAgICAgIGlmICghcGF0Y2hwb2ludC0+cmVx
dWlyZUdsb2JhbE9iamVjdCkKKyAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nU2NyYXRjaEdQ
UiA9IHNjcmF0Y2hHUFI7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICBwYXJhbUdsb2JhbE9iamVjdEdQUiA9IHNjcmF0Y2hHUFI7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGppdC5tb3ZlKHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIHNjcmF0
Y2hHUFIpOworICAgICAgICAgICAgICAgIHBhcmFtQmFzZUdQUiA9IHNjcmF0Y2hHUFI7CisgICAg
ICAgICAgICAgICAgaWYgKHBhdGNocG9pbnQtPnJlcXVpcmVHbG9iYWxPYmplY3QpCisgICAgICAg
ICAgICAgICAgICAgIHBhcmFtR2xvYmFsT2JqZWN0R1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2Ny
YXRjaEdQUigpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZWdzLmFwcGVuZChwYXJh
bVZhbHVlUmVncyk7CisgICAgICAgICAgICBpZiAocGFyYW1HbG9iYWxPYmplY3RHUFIgIT0gSW52
YWxpZEdQUlJlZykKKyAgICAgICAgICAgICAgICByZWdzLmFwcGVuZChwYXJhbUdsb2JhbE9iamVj
dEdQUik7CisgICAgICAgICAgICByZWdzLmFwcGVuZChwYXJhbUJhc2VHUFIpOworCisgICAgICAg
ICAgICBpZiAocGF0Y2hwb2ludC5udW1HUFNjcmF0Y2hSZWdpc3RlcnMpIHsKKyAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpID0gMDsKKyAgICAgICAgICAgICAgICBpZiAocmVtYWluaW5nU2NyYXRj
aEdQUiAhPSBJbnZhbGlkR1BSUmVnKSB7CisgICAgICAgICAgICAgICAgICAgIGdwU2NyYXRjaC5h
cHBlbmQocmVtYWluaW5nU2NyYXRjaEdQUik7CisgICAgICAgICAgICAgICAgICAgICsraTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZm9yICg7IGkgPCBwYXRjaHBvaW50Lm51
bUdQU2NyYXRjaFJlZ2lzdGVyczsgKytpKQorICAgICAgICAgICAgICAgICAgICBncFNjcmF0Y2gu
YXBwZW5kKGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKSk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXRjaHBvaW50Lm51bUZQU2Ny
YXRjaFJlZ2lzdGVyczsgKytpKQorICAgICAgICAgICAgICAgIGZwU2NyYXRjaC5hcHBlbmQoYWxs
b2NhdG9yLmFsbG9jYXRlU2NyYXRjaEZQUigpKTsKKworICAgICAgICAgICAgU2NyYXRjaFJlZ2lz
dGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0ZSA9CisgICAgICAgICAg
ICAgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKGppdCwgU2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6OlNwYWNlRm9yQ0NhbGwpOwor
CisgICAgICAgICAgICBpZiAocGF0Y2hwb2ludC0+cmVxdWlyZUdsb2JhbE9iamVjdCkgeworICAg
ICAgICAgICAgICAgIGppdC5lbWl0TG9hZFN0cnVjdHVyZShwYXJhbUJhc2VHUFIsIHBhcmFtR2xv
YmFsT2JqZWN0R1BSLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAgICAgICAgICBq
aXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocGFyYW1HbG9iYWxPYmplY3RHUFIsIFN0
cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCBwYXJhbUdsb2JhbE9iamVjdEdQUik7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFy
YW1zIHBhcmFtcyhXVEZNb3ZlKHJlZ3MpLCBXVEZNb3ZlKGdwU2NyYXRjaCksIFdURk1vdmUoZnBT
Y3JhdGNoKSk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5nZW5lcmF0b3IoKS0+cnVuKGppdCwg
cGFyYW1zKTsKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25lID0gaml0Lmp1bXAo
KTsKKyAgICAgICAgICAgIHBhcmFtcy5lbWl0U2xvd1BhdGhDYWxscygpOworCisgICAgICAgICAg
ICBkb25lLmxpbmsoJmppdCk7CisgICAgICAgICAgICBhbGxvY2F0b3IucmVzdG9yZVJldXNlZFJl
Z2lzdGVyc0J5UG9wcGluZyhqaXQsIHByZXNlcnZlZFN0YXRlKTsKKyAgICAgICAgICAgIHN0YXRl
LnN1Y2NlZWQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIC8v
IFN0dWZmIGZvciBjdXN0b20gZ2V0dGVycy9zZXR0ZXJzLgogICAgICAgICBDQ2FsbEhlbHBlcnM6
OkNhbGwgb3BlcmF0aW9uQ2FsbDsKIApAQCAtOTQwLDkgKzEwMTIsNiBAQCB2b2lkIEFjY2Vzc0Nh
c2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICBD
Q2FsbEhlbHBlcnM6OkNhbGwgZmFzdFBhdGhDYWxsOwogICAgICAgICBDQ2FsbEhlbHBlcnM6OkNh
bGwgc2xvd1BhdGhDYWxsOwogCi0gICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBzdWNjZXNzOwot
ICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZmFpbDsKLQogICAgICAgICAvLyBUaGlzIGFsc28g
ZG9lcyB0aGUgbmVjZXNzYXJ5IGNhbGN1bGF0aW9ucyBvZiB3aGV0aGVyIG9yIG5vdCB3ZSdyZSBh
bgogICAgICAgICAvLyBleGNlcHRpb24gaGFuZGxpbmcgY2FsbCBzaXRlLgogICAgICAgICBzdGF0
ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291468</attachid>
            <date>2016-10-13 01:48:36 -0700</date>
            <delta_ts>2016-10-13 14:08:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163223-20161013014510.patch</filename>
            <type>text/plain</type>
            <size>17344</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MTk1N2ZlNzFlZjI0ODFjN2M0ZTY4OTI4MzBhM2U1MjFiMmQxNWFhLi44ODRhYzhmMDI0ODAzMTY4
NTJkZDk5MmI5N2E5NTliNjA1NzEwMzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxNi0xMC0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRE9NSklUXSBVc2UgRE9NSklUOjpQYXRjaHBvaW50IGluIElDCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyMjMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvRE9N
SklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
ZGlzcGF0Y2gpOgorICAgICAgICAoSlNDOjpTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRoQXJndW1l
bnRzOjpTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRoQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6
RE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXM6OmVtaXRTbG93UGF0aENhbGxzKToKKyAg
ICAgICAgKiBieXRlY29kZS9ET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6RE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXM6OkRPTUpJ
VEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zKToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9y
cGhpY0FjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6
CisKIDIwMTYtMTAtMTIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbmFtZSB2YXJpYWJsZXMgaW4gYXJyYXlQcm90b0Z1bmNTcGxpY2UoKSB0byBtYXRjaCBuYW1l
cyBpbiB0aGUgc3BlYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDQ0YjJjNGQz
MjYyZDQxOTUxNGM5MTRjZWRiZjNjNWFhOWVmZjNmYS4uNGVjM2QxZmNlOWI3ZTIxNzZhZWM0ZDI2
NWQ1ZWNkNGM5NDU1MzExMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxMTAs
NiArMjExMCw4IEBACiAJCUUzOURBNEE2MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29y
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlE
QTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICovOyB9OwogCQlFMzlE
QTRBNzFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAv
KiBKU01vZHVsZVJlY29yZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUUzQTQyMTQzMUQ2RjU4OTMwMDA3QzYxNyAvKiBQcmVjaXNlSnVtcFRhcmdl
dHNJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFM0E0MjE0MjFENkY1ODhGMDAwN0M2MTcgLyogUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzQkZE
MEJCMURBRjgwODcwMDY1REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0JGRDBC
OTFEQUY4MDdDMDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3Bw
ICovOyB9OworCQlFM0JGRDBCQzFEQUY4MDhFMDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBh
dGNocG9pbnRQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzQkZEMEJBMURBRjgwN0MwMDY1REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hw
b2ludFBhcmFtcy5oICovOyB9OwogCQlFM0MwOEUzQzFEQTQxQjgxMDAzOTQ3OEYgLyogRE9NSklU
UGF0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTNDMDhFM0IxREE0MUI3QjAwMzk0NzhGIC8qIERPTUpJVFBhdGNocG9pbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0QyMzlDODFCODI5
QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyog
SlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi87IH07CiAJCUUzRDIzOUM5MUI4MjlDMUMwMEJCRUY2
NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZp
cm9ubWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC00NDE1LDYgKzQ0MTcsOCBAQAogCQlFMzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNN
b2R1bGVSZWNvcmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNN
b2R1bGVSZWNvcmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzlEQTRBNTFC
N0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNNb2R1bGVSZWNvcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTNBNDIxNDIxRDZGNTg4RjAwMDdDNjE3IC8qIFByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJlY2lzZUp1bXBUYXJnZXRzSW5s
aW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0JGRDBCOTFEQUY4MDdDMDA2
NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJh
bXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0JGRDBCQTFEQUY4MDdDMDA2
NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNDMDhFM0IxREE0MUI3QjAwMzk0NzhGIC8q
IERPTUpJVFBhdGNocG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9N
SklUUGF0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0NCMUUyNDFE
QTc1NDBBMDBGQTFFNTYgLyogRE9NSklUU2xvd1BhdGhDYWxscy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01KSVRTbG93UGF0aENhbGxzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25t
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlRW52
aXJvbm1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjgxMiw2ICs2ODE2
LDggQEAKIAkJCQkwRjBCODNBNTE0QkNGNTA0MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLywKIAkJ
CQkwRjZGQzc0RTE5NjExMEE4MDBFMUQwMkQgLyogQ29tcGxleEdldFN0YXR1cy5jcHAgKi8sCiAJ
CQkJMEY2RkM3NEYxOTYxMTBBODAwRTFEMDJEIC8qIENvbXBsZXhHZXRTdGF0dXMuaCAqLywKKwkJ
CQlFM0JGRDBCOTFEQUY4MDdDMDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQ
YXJhbXMuY3BwICovLAorCQkJCUUzQkZEMEJBMURBRjgwN0MwMDY1REVBMiAvKiBET01KSVRBY2Nl
c3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oICovLAogCQkJCTYyRTNENUVGMUI4RDBCNzMwMEI4NjhC
QiAvKiBEYXRhRm9ybWF0LmNwcCAqLywKIAkJCQkwRjQyNkE0QTE0NjBDRDZCMDAxMzFGOEYgLyog
RGF0YUZvcm1hdC5oICovLAogCQkJCTBGQzcxMkRDMTdDRDg3NzgwMDhDQzkzQyAvKiBEZWZlcnJl
ZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwICovLApAQCAtNzUxMyw2ICs3NTE5LDcgQEAKIAkJCQkw
RjgzNjRCNzE2NEIwQzExMDA1MzMyOUEgLyogREZHQnJhbmNoRGlyZWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NkVDOURDNTEzMjhERjgyMDAyQjJBRDcgLyogREZHQnl0ZUNvZGVQYXJzZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjU2QzM2MTYyN0IwQUQwMDdGMjc4MyAvKiBERkdDYWxs
QXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTNC
RkQwQkMxREFGODA4RTAwNjVERUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1z
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJEQjlBRDFBQjBGQkM2MDAwQjU3RTUgLyogREZHQ2Fs
bENyZWF0ZURpcmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkZGQzk1ODE0RUY5MEEyMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCBp
biBIZWFkZXJzICovLApAQCAtOTQwNyw2ICs5NDE0LDcgQEAKIAkJCQlFMzVFMDM1RjFCN0FCNDNF
MDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE1MzI0MzhCMTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9i
amVjdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTUwRTRCNjExODgwOURENTAwNjhBNDZEIC8q
IEluc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFM0JGRDBCQjFE
QUY4MDg3MDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTU5M0NGODIxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZh
bHVlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlDRjEwN0VDMzc2MDA0MjdBNDggLyog
SW50ZXJuYWxGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI5RDdENDBFRDIxMjgy
MDBCODk2MTkgLyogSW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQ
YXJhbXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RPTUpJVEFjY2Vzc0Nh
c2VQYXRjaHBvaW50UGFyYW1zLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OWVmNzkzMjY0YzA3ODBhZGFjODVl
MzI4OThjNzdmMTk3ZGU3YzU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0RPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmNwcApAQCAtMCww
ICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50
UGFyYW1zLmgiCisKKyNpZiBFTkFCTEUoSklUKQorCituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxh
dGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUg
QXJndW1lbnRzLCBzaXplX3QuLi4gQXJndW1lbnRzSW5kZXg+CitzdGF0aWMgdm9pZCBkaXNwYXRj
aChDQ2FsbEhlbHBlcnMmIGppdCwgRlRMOjpTdGF0ZSogc3RhdGUsIGNvbnN0IEIzOjpTdGFja21h
cEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcywgREZHOjpOb2RlKiBub2RlLCBCb3g8Q0NhbGxIZWxw
ZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucywgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBmcm9tLCBP
cGVyYXRpb25UeXBlIG9wZXJhdGlvbiwgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50cyBhcmd1
bWVudHMsIHN0ZDo6aW5kZXhfc2VxdWVuY2U8QXJndW1lbnRzSW5kZXguLi4+KQoreworICAgIEND
YWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOworICAgIHBhcmFtcy5hZGRMYXRl
UGF0aChbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CisgICAgICAgIEFsbG93TWFjcm9TY3JhdGNo
UmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKworICAgICAgICBmcm9tLmxpbmsoJmpp
dCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51
bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAg
ICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbiwgZXh0cmFjdFJlc3VsdChyZXN1bHQp
LCBzdGQ6OmdldDxBcmd1bWVudHNJbmRleD4oYXJndW1lbnRzKS4uLik7CisgICAgICAgIGppdC5q
dW1wKCkubGlua1RvKGRvbmUsICZqaXQpOworICAgIH0pOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBKdW1wVHlwZSwgdHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBSZXN1bHRUeXBlLCB0
eXBlbmFtZS4uLiBBcmd1bWVudHM+CitjbGFzcyBTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRoQXJn
dW1lbnRzIDogcHVibGljIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zOjpTbG93UGF0
aENhbGxHZW5lcmF0b3IgeworcHVibGljOgorICAgIFNsb3dQYXRoQ2FsbEdlbmVyYXRvcldpdGhB
cmd1bWVudHMoSnVtcFR5cGUgZnJvbSwgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLCBSZXN1bHRUeXBl
IHJlc3VsdCwgc3RkOjp0dXBsZTxBcmd1bWVudHMuLi4+IGFyZ3VtZW50cykKKyAgICAgICAgOiBt
X2Zyb20oZnJvbSkKKyAgICAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQorICAgICAgICAsIG1f
cmVzdWx0KHJlc3VsdCkKKyAgICAgICAgLCBtX2FyZ3VtZW50cyhhcmd1bWVudHMpCisgICAgewor
ICAgIH0KKworICAgIHZvaWQgZ2VuZXJhdGUoQ0NhbGxIZWxwZXJzJikgb3ZlcnJpZGUKKyAgICB7
CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgSnVtcFR5cGUgbV9mcm9tOworICAgIEZ1bmN0aW9u
VHlwZSBtX2Z1bmN0aW9uOworICAgIFJlc3VsdFR5cGUgbV9yZXN1bHQ7CisgICAgc3RkOjp0dXBs
ZTxBcmd1bWVudHMuLi4+IG1fYXJndW1lbnRzOworfTsKKworI2RlZmluZSBKU0NfREVGSU5FX0NB
TExfT1BFUkFUSU9OUyhPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCAuLi4pIFwKKyAgICB2b2lk
IERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zOjphZGRTbG93UGF0aENhbGxJbXBsKEND
YWxsSGVscGVyczo6SnVtcExpc3QgZnJvbSwgQ0NhbGxIZWxwZXJzJiwgT3BlcmF0aW9uVHlwZSBv
cGVyYXRpb24sIFJlc3VsdFR5cGUgcmVzdWx0LCBzdGQ6OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdz
KSBjb25zdCBcCisgICAgeyBcCisgICAgICAgIG1fZ2VuZXJhdG9ycy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRoQXJndW1lbnRzPENDYWxsSGVscGVyczo6
SnVtcExpc3QsIE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUsIHN0ZDo6dHVwbGU8X19WQV9BUkdT
X18+Pihmcm9tLCBvcGVyYXRpb24sIHJlc3VsdCwgYXJncykpOyBcCisgICAgfSBcCisKK0RPTUpJ
VF9TTE9XX1BBVEhfQ0FMTFMoSlNDX0RFRklORV9DQUxMX09QRVJBVElPTlMpCisjdW5kZWYgSlND
X0RFRklORV9DQUxMX09QRVJBVElPTlMKKwordm9pZCBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2lu
dFBhcmFtczo6ZW1pdFNsb3dQYXRoQ2FsbHMoQ0NhbGxIZWxwZXJzJiBqaXQpCit7CisgICAgZm9y
IChhdXRvJiBnZW5lcmF0b3IgOiBtX2dlbmVyYXRvcnMpCisgICAgICAgIGdlbmVyYXRvci0+Z2Vu
ZXJhdGUoaml0KTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9ET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFy
YW1zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjEzYmM3NjQ3MDE0YzhkNjg1OGYwNDM2ZjVmMGFhZWRjZjZlZWQx
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ET01K
SVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShKSVQpCisKKyNpbmNsdWRlICJET01KSVRQYXRjaHBvaW50UGFyYW1zLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBTcGVjdWxhdGl2ZUpJVDsKKworY2xhc3MgRE9NSklUQWNj
ZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMgOiBwdWJsaWMgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1z
IHsKK3B1YmxpYzoKKyAgICBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcyhWZWN0b3I8
RE9NSklUOjpWYWx1ZT4mJiByZWdzLCBWZWN0b3I8R1BSUmVnPiYmIGdwU2NyYXRjaCwgVmVjdG9y
PEZQUlJlZz4mJiBmcFNjcmF0Y2gpCisgICAgICAgIDogRE9NSklUOjpQYXRjaHBvaW50UGFyYW1z
KFdURk1vdmUocmVncyksIFdURk1vdmUoZ3BTY3JhdGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gpKQor
ICAgIHsKKyAgICB9CisKKyAgICBjbGFzcyBTbG93UGF0aENhbGxHZW5lcmF0b3IgeworICAgIHB1
YmxpYzoKKyAgICAgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlKENDYWxsSGVscGVycyYpID0gMDsK
KyAgICB9OworCisgICAgdm9pZCBlbWl0U2xvd1BhdGhDYWxscyhDQ2FsbEhlbHBlcnMmKTsKKwor
cHJpdmF0ZToKKyNkZWZpbmUgSlNDX0RFRklORV9DQUxMX09QRVJBVElPTlMoT3BlcmF0aW9uVHlw
ZSwgUmVzdWx0VHlwZSwgLi4uKSB2b2lkIGFkZFNsb3dQYXRoQ2FsbEltcGwoQ0NhbGxIZWxwZXJz
OjpKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzJiwgT3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwgc3Rk
Ojp0dXBsZTxfX1ZBX0FSR1NfXz4gYXJncykgY29uc3Qgb3ZlcnJpZGU7CisgICAgRE9NSklUX1NM
T1dfUEFUSF9DQUxMUyhKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUykKKyN1bmRlZiBKU0NfREVG
SU5FX0NBTExfT1BFUkFUSU9OUworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhD
YWxsR2VuZXJhdG9yPj4gbV9nZW5lcmF0b3JzOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCmlu
ZGV4IDlhOGE4ZTUyMDA5OGE5NmFlNmRjODUwOWYwMmYxNTMxYTAwMTI1NjAuLmM1OGM1MjI3MTg3
MjJkODc4MWMyZjcwZDM4OGEwYTk2NGVlMTlmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIkJpbmFyeVN3aXRjaC5oIgogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgog
I2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkRPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBv
aW50UGFyYW1zLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiR2V0
dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgpAQCAtOTMyLDYgKzkzMyw3NCBAQCB2b2lk
IEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKG1fdHlwZSA9PSBD
dXN0b21BY2Nlc3NvckdldHRlciAmJiBtX3JhcmVEYXRhLT5kb21KSVQpIHsKKyAgICAgICAgICAg
IC8vIFdlIGRvIG5vdCBuZWVkIHRvIGVtaXQgQ2hlY2tET00gb3BlcmF0aW9uIHNpbmNlIHN0cnVj
dHVyZSBjaGVjayBlbnN1cmVzCisgICAgICAgICAgICAvLyB0aGF0IHRoZSBnaXZlbiBiYXNlIHZh
bHVlIGlzIGFuIGFwcHJvcHJpYXRlIERPTSBub2RlLgorICAgICAgICAgICAgUmVmPERPTUpJVDo6
Q2FsbERPTVBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBtX3JhcmVEYXRhLT5kb21KSVQtPmNhbGxE
T00oKTsKKworICAgICAgICAgICAgVmVjdG9yPEdQUlJlZz4gZ3BTY3JhdGNoOworICAgICAgICAg
ICAgVmVjdG9yPEZQUlJlZz4gZnBTY3JhdGNoOworICAgICAgICAgICAgVmVjdG9yPERPTUpJVDo6
VmFsdWU+IHJlZ3M7CisKKyAgICAgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxv
Y2F0b3Ioc3R1YkluZm8ucGF0Y2gudXNlZFJlZ2lzdGVycyk7CisgICAgICAgICAgICBhbGxvY2F0
b3IubG9jayhiYXNlR1BSKTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICAgICAgYWxs
b2NhdG9yLmxvY2soc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5iYXNlVGFnR1BS
KSk7CisjZW5kaWYKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CisgICAg
ICAgICAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKKworICAgICAgICAgICAgR1BSUmVn
IHBhcmFtQmFzZUdQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgICAgICBHUFJSZWcgcGFyYW1H
bG9iYWxPYmplY3RHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mg
cGFyYW1WYWx1ZVJlZ3MgPSB2YWx1ZVJlZ3M7CisgICAgICAgICAgICBHUFJSZWcgcmVtYWluaW5n
U2NyYXRjaEdQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgICAgICBpZiAoYmFzZUZvckdldEdQ
UiAhPSB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpKSB7CisgICAgICAgICAgICAgICAgcGFyYW1CYXNl
R1BSID0gYmFzZUZvckdldEdQUjsKKyAgICAgICAgICAgICAgICBpZiAoIXBhdGNocG9pbnQtPnJl
cXVpcmVHbG9iYWxPYmplY3QpCisgICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZ1NjcmF0Y2hH
UFIgPSBzY3JhdGNoR1BSOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgcGFyYW1HbG9iYWxPYmplY3RHUFIgPSBzY3JhdGNoR1BSOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBqaXQubW92ZSh2YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBzY3Jh
dGNoR1BSKTsKKyAgICAgICAgICAgICAgICBwYXJhbUJhc2VHUFIgPSBzY3JhdGNoR1BSOworICAg
ICAgICAgICAgICAgIGlmIChwYXRjaHBvaW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0KQorICAgICAg
ICAgICAgICAgICAgICBwYXJhbUdsb2JhbE9iamVjdEdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNj
cmF0Y2hHUFIoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmVncy5hcHBlbmQocGFy
YW1WYWx1ZVJlZ3MpOworICAgICAgICAgICAgaWYgKHBhcmFtR2xvYmFsT2JqZWN0R1BSICE9IElu
dmFsaWRHUFJSZWcpCisgICAgICAgICAgICAgICAgcmVncy5hcHBlbmQocGFyYW1HbG9iYWxPYmpl
Y3RHUFIpOworICAgICAgICAgICAgcmVncy5hcHBlbmQocGFyYW1CYXNlR1BSKTsKKworICAgICAg
ICAgICAgaWYgKHBhdGNocG9pbnQubnVtR1BTY3JhdGNoUmVnaXN0ZXJzKSB7CisgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaSA9IDA7CisgICAgICAgICAgICAgICAgaWYgKHJlbWFpbmluZ1NjcmF0
Y2hHUFIgIT0gSW52YWxpZEdQUlJlZykgeworICAgICAgICAgICAgICAgICAgICBncFNjcmF0Y2gu
YXBwZW5kKHJlbWFpbmluZ1NjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgICAgICArK2k7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZvciAoOyBpIDwgcGF0Y2hwb2ludC5u
dW1HUFNjcmF0Y2hSZWdpc3RlcnM7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgZ3BTY3JhdGNo
LmFwcGVuZChhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCkpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0Y2hwb2ludC5udW1GUFNj
cmF0Y2hSZWdpc3RlcnM7ICsraSkKKyAgICAgICAgICAgICAgICBmcFNjcmF0Y2guYXBwZW5kKGFs
bG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hGUFIoKSk7CisKKyAgICAgICAgICAgIFNjcmF0Y2hSZWdp
c3RlckFsbG9jYXRvcjo6UHJlc2VydmVkU3RhdGUgcHJlc2VydmVkU3RhdGUgPQorICAgICAgICAg
ICAgICAgIGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhqaXQsIFNj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6RXh0cmFTdGFja1NwYWNlOjpTcGFjZUZvckNDYWxsKTsK
KworICAgICAgICAgICAgaWYgKHBhdGNocG9pbnQtPnJlcXVpcmVHbG9iYWxPYmplY3QpIHsKKyAg
ICAgICAgICAgICAgICBqaXQuZW1pdExvYWRTdHJ1Y3R1cmUocGFyYW1CYXNlR1BSLCBwYXJhbUds
b2JhbE9iamVjdEdQUiwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgICAgICAgICAgICAg
aml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBhcmFtR2xvYmFsT2JqZWN0R1BSLCBT
dHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcGFyYW1HbG9iYWxPYmplY3RHUFIpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBh
cmFtcyBwYXJhbXMoV1RGTW92ZShyZWdzKSwgV1RGTW92ZShncFNjcmF0Y2gpLCBXVEZNb3ZlKGZw
U2NyYXRjaCkpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+Z2VuZXJhdG9yKCktPnJ1bihqaXQs
IHBhcmFtcyk7CisgICAgICAgICAgICBhbGxvY2F0b3IucmVzdG9yZVJldXNlZFJlZ2lzdGVyc0J5
UG9wcGluZyhqaXQsIHByZXNlcnZlZFN0YXRlKTsKKyAgICAgICAgICAgIHN0YXRlLnN1Y2NlZWQo
KTsKKyAgICAgICAgICAgIHBhcmFtcy5lbWl0U2xvd1BhdGhDYWxscygpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgLy8gU3R1ZmYgZm9yIGN1c3RvbSBnZXR0ZXJz
L3NldHRlcnMuCiAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBvcGVyYXRpb25DYWxsOwogCkBA
IC05NDAsOSArMTAwOSw2IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dl
bmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBmYXN0UGF0
aENhbGw7CiAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGw7CiAKLSAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpKdW1wIHN1Y2Nlc3M7Ci0gICAgICAgIENDYWxsSGVscGVyczo6SnVt
cCBmYWlsOwotCiAgICAgICAgIC8vIFRoaXMgYWxzbyBkb2VzIHRoZSBuZWNlc3NhcnkgY2FsY3Vs
YXRpb25zIG9mIHdoZXRoZXIgb3Igbm90IHdlJ3JlIGFuCiAgICAgICAgIC8vIGV4Y2VwdGlvbiBo
YW5kbGluZyBjYWxsIHNpdGUuCiAgICAgICAgIHN0YXRlLnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1Rv
U3RhY2tGb3JDYWxsKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291514</attachid>
            <date>2016-10-13 14:08:27 -0700</date>
            <delta_ts>2016-10-13 18:15:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163223-20161013140501.patch</filename>
            <type>text/plain</type>
            <size>32989</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MTk1N2ZlNzFlZjI0ODFjN2M0ZTY4OTI4MzBhM2U1MjFiMmQxNWFhLi42MjUyNGVhYWNkYmMxNTg0
MDhjYTViNDlkNDM3OGQ2YTE4YzRmMjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMiBAQAorMjAxNi0xMC0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRE9NSklUXSBVc2UgRE9NSklUOjpQYXRjaHBvaW50IGluIElDCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyMjMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogYnl0ZWNvZGUvRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6U2xvd1BhdGhDYWxsR2VuZXJhdG9yV2l0aEFyZ3Vt
ZW50czo6U2xvd1BhdGhDYWxsR2VuZXJhdG9yV2l0aEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6
OlNsb3dQYXRoQ2FsbEdlbmVyYXRvcldpdGhBcmd1bWVudHM6OmdlbmVyYXRlSW1wbCk6CisgICAg
ICAgIChKU0M6OkRPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zOjplbWl0U2xvd1BhdGhD
YWxscyk6CisgICAgICAgICogYnl0ZWNvZGUvRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJh
bXMuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdET01KSVRQYXRj
aHBvaW50UGFyYW1zLmguCisgICAgICAgIChKU0M6OkRPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50
UGFyYW1zOjpET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcyk6CisgICAgICAgIChKU0M6
OkRPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zOjpTbG93UGF0aENhbGxHZW5lcmF0b3I6
On5TbG93UGF0aENhbGxHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGlj
QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpjYWxjdWxh
dGVMaXZlUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhhbmRsaW5nKToKKyAgICAgICAgKEpT
Qzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9y
cGhpY0FjY2Vzcy5oOgorICAgICAgICAqIGRmZy9ERkdET01KSVRQYXRjaHBvaW50UGFyYW1zLmNw
cDoKKyAgICAgICAgKiBkZmcvREZHRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oOgorICAgICAgICAq
IGRvbWppdC9ET01KSVRQYXRjaHBvaW50Lmg6CisgICAgICAgICogZG9taml0L0RPTUpJVFBhdGNo
cG9pbnRQYXJhbXMuaDoKKyAgICAgICAgKEpTQzo6RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zOjph
ZGRTbG93UGF0aENhbGwpOgorICAgICAgICAqIGZ0bC9GVExET01KSVRQYXRjaHBvaW50UGFyYW1z
LmNwcDoKKyAgICAgICAgKiBmdGwvRlRMRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oOgorICAgICAg
ICAqIGpzYy5jcHA6CisKIDIwMTYtMTAtMTIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbmFtZSB2YXJpYWJsZXMgaW4gYXJyYXlQcm90b0Z1bmNTcGxpY2UoKSB0
byBtYXRjaCBuYW1lcyBpbiB0aGUgc3BlYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyOTZlMzk3YmQ3ZGYwMzZi
MTE5MmVlZmI4NzBlMzFkMmU1NjIxMTQ5Li4wMmE3OGJlZjc4ZmZhODllM2UwYTI5MTkzMGM3NzIx
Njc3NTM2ZDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMTAtMTMgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gVXNl
IERPTUpJVDo6UGF0Y2hwb2ludCBpbiBJQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBkb21qaXQvRE9NSklUSGVscGVycy5oOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NSklUSGVscGVyczo6dG9XcmFwcGVyKToKKyAgICAgICAgKiBkb21qaXQvSlNOb2Rl
RE9NSklULmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nl
c3MpOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGVOb2RlVHlwZURPTUpJVDo6Y2FsbERPTSk6CisKIDIwMTYtMTAtMTIgIEFudG9pbmUgUXVpbnQg
IDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbTW9kZXJuIE1lZGlhIENvbnRyb2xzXSBT
bGlkZXJzOiBzY3J1YmJlciBhbmQgdm9sdW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggNTdjZWZmNjYxNDZiOTk4YzUxM2JhMDdlMTk2YmMwZmNjYWJjMmQ5Zi4uMGRlMTk1
YTA3MTYwMDBmZTFmZTc4ZmJjZTZjYjVkZGZiN2YzMGY0OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMjAyLDYgKzIwMiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VS
Q0VTCiAgICAgYnl0ZWNvZGUvQ29tcGxleEdldFN0YXR1cy5jcHAKICAgICBieXRlY29kZS9EYXRh
Rm9ybWF0LmNwcAogICAgIGJ5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcAorICAgIGJ5dGVjb2Rl
L0RPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmNwcAogICAgIGJ5dGVjb2RlL0RlZmVy
cmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAKICAgICBieXRlY29kZS9EZWZlcnJlZFNvdXJjZUR1
bXAuY3BwCiAgICAgYnl0ZWNvZGUvRXhlY3V0aW9uQ291bnRlci5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggZDQ0YjJjNGQzMjYyZDQxOTUxNGM5MTRjZWRiZjNjNWFhOWVmZjNm
YS4uNGVjM2QxZmNlOWI3ZTIxNzZhZWM0ZDI2NWQ1ZWNkNGM5NDU1MzExMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTIxMTAsNiArMjExMCw4IEBACiAJCUUzOURBNEE2MUI3RThC
N0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1
bGVSZWNvcmQuY3BwICovOyB9OwogCQlFMzlEQTRBNzFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1
bGVSZWNvcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzQTQyMTQzMUQ2RjU4OTMw
MDA3QzYxNyAvKiBQcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0E0MjE0MjFENkY1ODhGMDAwN0M2MTcgLyog
UHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUUzQkZEMEJCMURBRjgwODcwMDY1REVBMiAvKiBET01KSVRB
Y2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFM0JGRDBCOTFEQUY4MDdDMDA2NURFQTIgLyogRE9NSklUQWNj
ZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3BwICovOyB9OworCQlFM0JGRDBCQzFEQUY4MDhFMDA2
NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQkZEMEJBMURBRjgwN0MwMDY1REVB
MiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oICovOyB9OwogCQlFM0MwOEUz
QzFEQTQxQjgxMDAzOTQ3OEYgLyogRE9NSklUUGF0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNDMDhFM0IxREE0MUI3QjAwMzk0NzhGIC8q
IERPTUpJVFBhdGNocG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFM0QyMzlDODFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9u
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
M0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi87IH07
CiAJCUUzRDIzOUM5MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyMzlDNzFCODI5
QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00NDE1LDYgKzQ0MTcsOCBAQAogCQlFMzlE
QTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVSZWNvcmQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNv
cmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVSZWNvcmQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNBNDIxNDIxRDZGNTg4RjAwMDdDNjE3IC8q
IFByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFM0JGRDBCOTFEQUY4MDdDMDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNo
cG9pbnRQYXJhbXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9N
SklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFM0JGRDBCQTFEQUY4MDdDMDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNo
cG9pbnRQYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUQWNj
ZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTNDMDhFM0IxREE0MUI3QjAwMzk0NzhGIC8qIERPTUpJVFBhdGNocG9pbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUUGF0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFM0NCMUUyNDFEQTc1NDBBMDBGQTFFNTYgLyogRE9NSklUU2xvd1Bh
dGhDYWxscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRTbG93UGF0
aENhbGxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRDIzOUM2MUI4MjlDMUMw
MEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNjgxMiw2ICs2ODE2LDggQEAKIAkJCQkwRjBCODNBNTE0QkNGNTA0MDA4
ODVCNEYgLyogQ29kZVR5cGUuaCAqLywKIAkJCQkwRjZGQzc0RTE5NjExMEE4MDBFMUQwMkQgLyog
Q29tcGxleEdldFN0YXR1cy5jcHAgKi8sCiAJCQkJMEY2RkM3NEYxOTYxMTBBODAwRTFEMDJEIC8q
IENvbXBsZXhHZXRTdGF0dXMuaCAqLywKKwkJCQlFM0JGRDBCOTFEQUY4MDdDMDA2NURFQTIgLyog
RE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3BwICovLAorCQkJCUUzQkZEMEJBMURB
RjgwN0MwMDY1REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oICovLAog
CQkJCTYyRTNENUVGMUI4RDBCNzMwMEI4NjhCQiAvKiBEYXRhRm9ybWF0LmNwcCAqLywKIAkJCQkw
RjQyNkE0QTE0NjBDRDZCMDAxMzFGOEYgLyogRGF0YUZvcm1hdC5oICovLAogCQkJCTBGQzcxMkRD
MTdDRDg3NzgwMDhDQzkzQyAvKiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwICovLApA
QCAtNzUxMyw2ICs3NTE5LDcgQEAKIAkJCQkwRjgzNjRCNzE2NEIwQzExMDA1MzMyOUEgLyogREZH
QnJhbmNoRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDOURDNTEzMjhERjgyMDAy
QjJBRDcgLyogREZHQnl0ZUNvZGVQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjU2QzM2
MTYyN0IwQUQwMDdGMjc4MyAvKiBERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRv
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTNCRkQwQkMxREFGODA4RTAwNjVERUEyIC8qIERPTUpJ
VEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJEQjlB
RDFBQjBGQkM2MDAwQjU3RTUgLyogREZHQ2FsbENyZWF0ZURpcmVjdEFyZ3VtZW50c1Nsb3dQYXRo
R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEg
LyogREZHQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZGQzk1ODE0RUY5MEEy
MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtOTQwNyw2ICs5NDE0
LDcgQEAKIAkJCQlFMzVFMDM1RjFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MzI0MzhCMTg1NjgzMzUwMDJF
RDY5MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTUwRTRCNjExODgwOURENTAwNjhBNDZEIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlFM0JGRDBCQjFEQUY4MDg3MDA2NURFQTIgLyogRE9NSklUQWNjZXNz
Q2FzZVBhdGNocG9pbnRQYXJhbXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU5M0NGODIxODQw
Mzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
NDdGMzlDRjEwN0VDMzc2MDA0MjdBNDggLyogSW50ZXJuYWxGdW5jdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxNDI5RDdENDBFRDIxMjgyMDBCODk2MTkgLyogSW50ZXJwcmV0ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0RPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zYWVlMzI2N2NlOTU1ZTk4MzU4MTk4NTI1YmU2NDQwYTBhZDczZGNkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RPTUpJVEFjY2Vzc0Nhc2VQ
YXRjaHBvaW50UGFyYW1zLmNwcApAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oIgorCisjaW5jbHVkZSAiTGlua0J1
ZmZlci5oIgorI2luY2x1ZGUgIlBvbHltb3JwaGljQWNjZXNzLmgiCisjaW5jbHVkZSAiU3RydWN0
dXJlU3R1YkluZm8uaCIKKworI2lmIEVOQUJMRShKSVQpCisKK25hbWVzcGFjZSBKU0MgeworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBKdW1wVHlwZSwgdHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFt
ZSBSZXN1bHRUeXBlLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CitjbGFzcyBTbG93UGF0aENhbGxH
ZW5lcmF0b3JXaXRoQXJndW1lbnRzIDogcHVibGljIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50
UGFyYW1zOjpTbG93UGF0aENhbGxHZW5lcmF0b3IgeworcHVibGljOgorICAgIFNsb3dQYXRoQ2Fs
bEdlbmVyYXRvcldpdGhBcmd1bWVudHMoSnVtcFR5cGUgZnJvbSwgQ0NhbGxIZWxwZXJzOjpMYWJl
bCB0bywgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLCBSZXN1bHRUeXBlIHJlc3VsdCwgc3RkOjp0dXBs
ZTxBcmd1bWVudHMuLi4+IGFyZ3VtZW50cykKKyAgICAgICAgOiBtX2Zyb20oZnJvbSkKKyAgICAg
ICAgLCBtX3RvKHRvKQorICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCisgICAgICAgICwg
bV9yZXN1bHQocmVzdWx0KQorICAgICAgICAsIG1fYXJndW1lbnRzKGFyZ3VtZW50cykKKyAgICB7
CisgICAgfQorCisgICAgdGVtcGxhdGU8c2l6ZV90Li4uIEFyZ3VtZW50c0luZGV4PgorICAgIHZv
aWQgZ2VuZXJhdGVJbXBsKFZNJiB2bSwgQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29u
c3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENDYWxsSGVscGVycyYgaml0LCBzdGQ6Omlu
ZGV4X3NlcXVlbmNlPEFyZ3VtZW50c0luZGV4Li4uPikKKyAgICB7CisgICAgICAgIC8vIFRoaXMg
YWxzbyBkb2VzIHRoZSBuZWNlc3NhcnkgY2FsY3VsYXRpb25zIG9mIHdoZXRoZXIgb3Igbm90IHdl
J3JlIGFuCisgICAgICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGluZyBjYWxsIHNpdGUuCisgICAgICAg
IC8vIEZJWE1FOiBTaG91bGQgcHJlc2VydmUgYWxsb2NhdGVkIHNjcmF0Y2hlcy4KKyAgICAgICAg
c3RhdGUucHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwodXNlZFJlZ2lzdGVycyk7
CisKKyAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihzdGF0ZS5jYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmdPck9yaWdpbmFs
KCkuYml0cygpKSwKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKHN0YXRpY19jYXN0
PFZpcnR1YWxSZWdpc3Rlcj4oQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKKworICAg
ICAgICAvLyBOZWVkIHRvIG1ha2Ugcm9vbSBmb3IgdGhlIEMgY2FsbCBzbyBhbnkgb2Ygb3VyIHN0
YWNrIHNwaWxsYWdlIGlzbid0IG92ZXJ3cml0dGVuLiBJdCdzCisgICAgICAgIC8vIGhhcmQgdG8g
dHJhY2sgaWYgc29tZW9uZSBkaWQgc3BpbGxhZ2Ugb3Igbm90LCBzbyB3ZSBqdXN0IGFzc3VtZSB0
aGF0IHdlIGFsd2F5cyBuZWVkCisgICAgICAgIC8vIHRvIG1ha2Ugc29tZSBzcGFjZSBoZXJlLgor
ICAgICAgICBqaXQubWFrZVNwYWNlT25TdGFja0ZvckNDYWxsKCk7CisKKyAgICAgICAgaml0LnN0
b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAmdm0udG9wQ2FsbEZyYW1lKTsKKwor
ICAgICAgICAvLyBGSVhNRTogU2hvdWxkIG5vdCBwZXJmb3JtIHRoaXMuCisgICAgICAgIGppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoc3RkOjpnZXQ8QXJndW1lbnRzSW5kZXg+KG1fYXJn
dW1lbnRzKS4uLik7CisKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIG9wZXJhdGlvbkNhbGwg
PSBqaXQuY2FsbCgpOworICAgICAgICBhdXRvIGZ1bmN0aW9uID0gbV9mdW5jdGlvbjsKKyAgICAg
ICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAg
ICAgICAgbGlua0J1ZmZlci5saW5rKG9wZXJhdGlvbkNhbGwsIEZ1bmN0aW9uUHRyKGZ1bmN0aW9u
KSk7CisgICAgICAgIH0pOworCisgICAgICAgIGppdC5zZXR1cFJlc3VsdHMobV9yZXN1bHQpOwor
ICAgICAgICBqaXQucmVjbGFpbVNwYWNlT25TdGFja0ZvckNDYWxsKCk7CisKKyAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpKdW1wIG5vRXhjZXB0aW9uID0gaml0LmVtaXRFeGNlcHRpb25DaGVjayhDQ2Fs
bEhlbHBlcnM6OkludmVydGVkRXhjZXB0aW9uQ2hlY2spOworCisgICAgICAgIHN0YXRlLnJlc3Rv
cmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbFdpdGhUaHJvd25FeGNlcHRpb24oKTsKKyAg
ICAgICAgc3RhdGUuZW1pdEV4cGxpY2l0RXhjZXB0aW9uSGFuZGxlcigpOworCisgICAgICAgIG5v
RXhjZXB0aW9uLmxpbmsoJmppdCk7CisgICAgICAgIGJvb2wgaXNHZXR0ZXIgPSB0cnVlOworICAg
ICAgICBzdGF0ZS5yZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoaXNHZXR0ZXIp
OworICAgIH0KKworICAgIHZvaWQgZ2VuZXJhdGUoVk0mIHZtLCBBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGUmIHN0YXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJz
JiBqaXQpIG92ZXJyaWRlCisgICAgeworICAgICAgICBtX2Zyb20ubGluaygmaml0KTsKKyAgICAg
ICAgZ2VuZXJhdGVJbXBsKHZtLCBzdGF0ZSwgdXNlZFJlZ2lzdGVycywgaml0LCBzdGQ6Om1ha2Vf
aW5kZXhfc2VxdWVuY2U8c3RkOjp0dXBsZV9zaXplPHN0ZDo6dHVwbGU8QXJndW1lbnRzLi4uPj46
OnZhbHVlPigpKTsKKyAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8obV90bywgJmppdCk7CisgICAg
fQorCitwcm90ZWN0ZWQ6CisgICAgSnVtcFR5cGUgbV9mcm9tOworICAgIENDYWxsSGVscGVyczo6
TGFiZWwgbV90bzsKKyAgICBGdW5jdGlvblR5cGUgbV9mdW5jdGlvbjsKKyAgICBSZXN1bHRUeXBl
IG1fcmVzdWx0OworICAgIHN0ZDo6dHVwbGU8QXJndW1lbnRzLi4uPiBtX2FyZ3VtZW50czsKK307
CisKKyNkZWZpbmUgSlNDX0RFRklORV9DQUxMX09QRVJBVElPTlMoT3BlcmF0aW9uVHlwZSwgUmVz
dWx0VHlwZSwgLi4uKSBcCisgICAgdm9pZCBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFt
czo6YWRkU2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGZyb20sIENDYWxs
SGVscGVycyYgaml0LCBPcGVyYXRpb25UeXBlIG9wZXJhdGlvbiwgUmVzdWx0VHlwZSByZXN1bHQs
IHN0ZDo6dHVwbGU8X19WQV9BUkdTX18+IGFyZ3MpIFwKKyAgICB7IFwKKyAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpMYWJlbCB0byA9IGppdC5sYWJlbCgpOyBcCisgICAgICAgIG1fZ2VuZXJhdG9ycy5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRoQXJndW1lbnRz
PENDYWxsSGVscGVyczo6SnVtcExpc3QsIE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUsIF9fVkFf
QVJHU19fPj4oZnJvbSwgdG8sIG9wZXJhdGlvbiwgcmVzdWx0LCBhcmdzKSk7IFwKKyAgICB9IFwK
KworRE9NSklUX1NMT1dfUEFUSF9DQUxMUyhKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUykKKyN1
bmRlZiBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUworCit2b2lkIERPTUpJVEFjY2Vzc0Nhc2VQ
YXRjaHBvaW50UGFyYW1zOjplbWl0U2xvd1BhdGhDYWxscyhWTSYgdm0sIEFjY2Vzc0dlbmVyYXRp
b25TdGF0ZSYgc3RhdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhl
bHBlcnMmIGppdCkKK3sKKyAgICBmb3IgKGF1dG8mIGdlbmVyYXRvciA6IG1fZ2VuZXJhdG9ycykK
KyAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZSh2bSwgc3RhdGUsIHVzZWRSZWdpc3RlcnMsIGpp
dCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9ET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjFkNTUxODRmNTY0Y2U3NGQ1NjQxZWRiMGJiMDViYjkxOTA5MGVhMWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRE9NSklUQWNjZXNz
Q2FzZVBhdGNocG9pbnRQYXJhbXMuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
SklUKQorCisjaW5jbHVkZSAiRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworc3RydWN0IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTsKKworY2xhc3MgRE9NSklUQWNj
ZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMgOiBwdWJsaWMgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1z
IHsKK3B1YmxpYzoKKyAgICBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcyhWZWN0b3I8
RE9NSklUOjpWYWx1ZT4mJiByZWdzLCBWZWN0b3I8R1BSUmVnPiYmIGdwU2NyYXRjaCwgVmVjdG9y
PEZQUlJlZz4mJiBmcFNjcmF0Y2gpCisgICAgICAgIDogRE9NSklUOjpQYXRjaHBvaW50UGFyYW1z
KFdURk1vdmUocmVncyksIFdURk1vdmUoZ3BTY3JhdGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gpKQor
ICAgIHsKKyAgICB9CisKKyAgICBjbGFzcyBTbG93UGF0aENhbGxHZW5lcmF0b3IgeworICAgIHB1
YmxpYzoKKyAgICAgICAgdmlydHVhbCB+U2xvd1BhdGhDYWxsR2VuZXJhdG9yKCkgeyB9CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZShWTSYsIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYsIGNv
bnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmKSA9IDA7CisgICAg
fTsKKworICAgIHZvaWQgZW1pdFNsb3dQYXRoQ2FsbHMoVk0mLCBBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGUmLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJik7CisK
K3ByaXZhdGU6CisjZGVmaW5lIEpTQ19ERUZJTkVfQ0FMTF9PUEVSQVRJT05TKE9wZXJhdGlvblR5
cGUsIFJlc3VsdFR5cGUsIC4uLikgdm9pZCBhZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVy
czo6SnVtcExpc3QsIENDYWxsSGVscGVycyYsIE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUsIHN0
ZDo6dHVwbGU8X19WQV9BUkdTX18+IGFyZ3MpIG92ZXJyaWRlOworICAgIERPTUpJVF9TTE9XX1BB
VEhfQ0FMTFMoSlNDX0RFRklORV9DQUxMX09QRVJBVElPTlMpCisjdW5kZWYgSlNDX0RFRklORV9D
QUxMX09QRVJBVElPTlMKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoQ2FsbEdl
bmVyYXRvcj4+IG1fZ2VuZXJhdG9yczsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAppbmRleCA5
YThhOGU1MjAwOThhOTZhZTZkYzg1MDlmMDJmMTUzMWEwMDEyNTYwLi5iY2IwZDVhMzdiMzRiY2Q3
NGUzODA2NDcxYTlhNmM5ZmNlZjFjMzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAgLTMxLDYgKzMxLDggQEAKICNp
bmNsdWRlICJCaW5hcnlTd2l0Y2guaCIKICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBh
cmFtcy5oIgorI2luY2x1ZGUgIkRPTUpJVENhbGxET01QYXRjaHBvaW50LmgiCiAjaW5jbHVkZSAi
RGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAi
SGVhcC5oIgpAQCAtNzQsNyArNzYsMTEgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnN1
Y2NlZWQoKQogCiB2b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6Y2FsY3VsYXRlTGl2ZVJlZ2lz
dGVyc0ZvckNhbGxBbmRFeGNlcHRpb25IYW5kbGluZyhjb25zdCBSZWdpc3RlclNldCYgZXh0cmEp
CiB7CisgICAgaWYgKG1fZXh0cmFMaXZlUmVnaXN0ZXJzRm9yQ2FsbCAhPSBleHRyYSkKKyAgICAg
ICAgbV9jYWxjdWxhdGVkUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhhbmRsaW5nID0gZmFs
c2U7CisKICAgICBpZiAoIW1fY2FsY3VsYXRlZFJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRpb25I
YW5kbGluZykgeworICAgICAgICBtX2V4dHJhTGl2ZVJlZ2lzdGVyc0ZvckNhbGwgPSBleHRyYTsK
ICAgICAgICAgbV9jYWxjdWxhdGVkUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhhbmRsaW5n
ID0gdHJ1ZTsKIAogICAgICAgICBtX2xpdmVSZWdpc3RlcnNUb1ByZXNlcnZlQXRFeGNlcHRpb25I
YW5kbGluZ0NhbGxTaXRlID0gaml0LT5jb2RlQmxvY2soKS0+aml0Q29kZSgpLT5saXZlUmVnaXN0
ZXJzVG9QcmVzZXJ2ZUF0RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZShqaXQtPmNvZGVCbG9jaygp
LCBzdHViSW5mby0+Y2FsbFNpdGVJbmRleCk7CkBAIC05MzIsNiArOTM4LDc0IEBAIHZvaWQgQWNj
ZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBpZiAobV90eXBlID09IEN1c3Rv
bUFjY2Vzc29yR2V0dGVyICYmIG1fcmFyZURhdGEtPmRvbUpJVCkgeworICAgICAgICAgICAgLy8g
V2UgZG8gbm90IG5lZWQgdG8gZW1pdCBDaGVja0RPTSBvcGVyYXRpb24gc2luY2Ugc3RydWN0dXJl
IGNoZWNrIGVuc3VyZXMKKyAgICAgICAgICAgIC8vIHRoYXQgdGhlIGdpdmVuIGJhc2UgdmFsdWUg
aXMgYW4gYXBwcm9wcmlhdGUgRE9NIG5vZGUuCisgICAgICAgICAgICBSZWY8RE9NSklUOjpDYWxs
RE9NUGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IG1fcmFyZURhdGEtPmRvbUpJVC0+Y2FsbERPTSgp
OworCisgICAgICAgICAgICBWZWN0b3I8R1BSUmVnPiBncFNjcmF0Y2g7CisgICAgICAgICAgICBW
ZWN0b3I8RlBSUmVnPiBmcFNjcmF0Y2g7CisgICAgICAgICAgICBWZWN0b3I8RE9NSklUOjpWYWx1
ZT4gcmVnczsKKworICAgICAgICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRv
cihzdHViSW5mby5wYXRjaC51c2VkUmVnaXN0ZXJzKTsKKyAgICAgICAgICAgIGFsbG9jYXRvci5s
b2NrKGJhc2VHUFIpOworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgICAgICBhbGxvY2F0
b3IubG9jayhzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmJhc2VUYWdHUFIpKTsK
KyNlbmRpZgorICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKKyAgICAgICAg
ICAgIGFsbG9jYXRvci5sb2NrKHNjcmF0Y2hHUFIpOworCisgICAgICAgICAgICBHUFJSZWcgcGFy
YW1CYXNlR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgICAgIEdQUlJlZyBwYXJhbUdsb2Jh
bE9iamVjdEdQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgICAgICBKU1ZhbHVlUmVncyBwYXJh
bVZhbHVlUmVncyA9IHZhbHVlUmVnczsKKyAgICAgICAgICAgIEdQUlJlZyByZW1haW5pbmdTY3Jh
dGNoR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgICAgIGlmIChiYXNlRm9yR2V0R1BSICE9
IHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpIHsKKyAgICAgICAgICAgICAgICBwYXJhbUJhc2VHUFIg
PSBiYXNlRm9yR2V0R1BSOworICAgICAgICAgICAgICAgIGlmICghcGF0Y2hwb2ludC0+cmVxdWly
ZUdsb2JhbE9iamVjdCkKKyAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nU2NyYXRjaEdQUiA9
IHNjcmF0Y2hHUFI7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBw
YXJhbUdsb2JhbE9iamVjdEdQUiA9IHNjcmF0Y2hHUFI7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGppdC5tb3ZlKHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIHNjcmF0Y2hH
UFIpOworICAgICAgICAgICAgICAgIHBhcmFtQmFzZUdQUiA9IHNjcmF0Y2hHUFI7CisgICAgICAg
ICAgICAgICAgaWYgKHBhdGNocG9pbnQtPnJlcXVpcmVHbG9iYWxPYmplY3QpCisgICAgICAgICAg
ICAgICAgICAgIHBhcmFtR2xvYmFsT2JqZWN0R1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRj
aEdQUigpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZWdzLmFwcGVuZChwYXJhbVZh
bHVlUmVncyk7CisgICAgICAgICAgICBpZiAocGFyYW1HbG9iYWxPYmplY3RHUFIgIT0gSW52YWxp
ZEdQUlJlZykKKyAgICAgICAgICAgICAgICByZWdzLmFwcGVuZChwYXJhbUdsb2JhbE9iamVjdEdQ
Uik7CisgICAgICAgICAgICByZWdzLmFwcGVuZChwYXJhbUJhc2VHUFIpOworCisgICAgICAgICAg
ICBpZiAocGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzKSB7CisgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaSA9IDA7CisgICAgICAgICAgICAgICAgaWYgKHJlbWFpbmluZ1NjcmF0Y2hH
UFIgIT0gSW52YWxpZEdQUlJlZykgeworICAgICAgICAgICAgICAgICAgICBncFNjcmF0Y2guYXBw
ZW5kKHJlbWFpbmluZ1NjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgICAgICArK2k7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZvciAoOyBpIDwgcGF0Y2hwb2ludC0+bnVt
R1BTY3JhdGNoUmVnaXN0ZXJzOyArK2kpCisgICAgICAgICAgICAgICAgICAgIGdwU2NyYXRjaC5h
cHBlbmQoYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhdGNocG9pbnQtPm51bUZQU2Ny
YXRjaFJlZ2lzdGVyczsgKytpKQorICAgICAgICAgICAgICAgIGZwU2NyYXRjaC5hcHBlbmQoYWxs
b2NhdG9yLmFsbG9jYXRlU2NyYXRjaEZQUigpKTsKKworICAgICAgICAgICAgU2NyYXRjaFJlZ2lz
dGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0ZSA9CisgICAgICAgICAg
ICAgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKGppdCwgU2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6OlNwYWNlRm9yQ0NhbGwpOwor
CisgICAgICAgICAgICBpZiAocGF0Y2hwb2ludC0+cmVxdWlyZUdsb2JhbE9iamVjdCkgeworICAg
ICAgICAgICAgICAgIGppdC5lbWl0TG9hZFN0cnVjdHVyZShwYXJhbUJhc2VHUFIsIHBhcmFtR2xv
YmFsT2JqZWN0R1BSLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAgICAgICAgICBq
aXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocGFyYW1HbG9iYWxPYmplY3RHUFIsIFN0
cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCBwYXJhbUdsb2JhbE9iamVjdEdQUik7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFy
YW1zIHBhcmFtcyhXVEZNb3ZlKHJlZ3MpLCBXVEZNb3ZlKGdwU2NyYXRjaCksIFdURk1vdmUoZnBT
Y3JhdGNoKSk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5nZW5lcmF0b3IoKS0+cnVuKGppdCwg
cGFyYW1zKTsKKyAgICAgICAgICAgIGFsbG9jYXRvci5yZXN0b3JlUmV1c2VkUmVnaXN0ZXJzQnlQ
b3BwaW5nKGppdCwgcHJlc2VydmVkU3RhdGUpOworICAgICAgICAgICAgc3RhdGUuc3VjY2VlZCgp
OworICAgICAgICAgICAgcGFyYW1zLmVtaXRTbG93UGF0aENhbGxzKHZtLCBzdGF0ZSwgYWxsb2Nh
dG9yLnVzZWRSZWdpc3RlcnMoKSwgaml0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCiAgICAgICAgIC8vIFN0dWZmIGZvciBjdXN0b20gZ2V0dGVycy9zZXR0ZXJzLgogICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkNhbGwgb3BlcmF0aW9uQ2FsbDsKIApAQCAtOTQwLDkgKzEwMTQsNiBA
QCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0
YXRlKQogICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgZmFzdFBhdGhDYWxsOwogICAgICAgICBD
Q2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOwogCi0gICAgICAgIENDYWxsSGVscGVyczo6
SnVtcCBzdWNjZXNzOwotICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZmFpbDsKLQogICAgICAg
ICAvLyBUaGlzIGFsc28gZG9lcyB0aGUgbmVjZXNzYXJ5IGNhbGN1bGF0aW9ucyBvZiB3aGV0aGVy
IG9yIG5vdCB3ZSdyZSBhbgogICAgICAgICAvLyBleGNlcHRpb24gaGFuZGxpbmcgY2FsbCBzaXRl
LgogICAgICAgICBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3Mu
aAppbmRleCA5NzBhMjM1YmZkZTMyZTYzYWY2Yjk1ZGFmZjczMjNjMmI5NDhjNjVjLi5mYzJiMGMx
ZGNmMWEzZmIzN2QzZmVjZDI0YjZjNjU2YmFhZjJiZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaApAQCAtNTE0LDYgKzUxNCw3
IEBAIHN0cnVjdCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUgewogICAgICAgICByZXR1cm4gbV9saXZl
UmVnaXN0ZXJzVG9QcmVzZXJ2ZUF0RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZTsKICAgICB9CiAg
ICAgCisgICAgUmVnaXN0ZXJTZXQgbV9leHRyYUxpdmVSZWdpc3RlcnNGb3JDYWxsOwogICAgIFJl
Z2lzdGVyU2V0IG1fbGl2ZVJlZ2lzdGVyc1RvUHJlc2VydmVBdEV4Y2VwdGlvbkhhbmRsaW5nQ2Fs
bFNpdGU7CiAgICAgUmVnaXN0ZXJTZXQgbV9saXZlUmVnaXN0ZXJzRm9yQ2FsbDsKICAgICBDYWxs
U2l0ZUluZGV4IG1fY2FsbFNpdGVJbmRleCB7IENhbGxTaXRlSW5kZXgoc3RkOjpudW1lcmljX2xp
bWl0czx1bnNpZ25lZD46Om1heCgpKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdET01KSVRQYXRjaHBvaW50UGFyYW1zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5jcHAKaW5kZXggMGExMWM2NzEzNDdk
NzFiZmRhMzUxOTMwZTdjYjU1ZjFhNWVjNmYwNy4uOGVkNzdiNTJlZWNjYzUzYTA5NTQ2MTI4NmE1
ODMxYWI3ZGQxNWNiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
T01KSVRQYXRjaHBvaW50UGFyYW1zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuY3BwCkBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyB2
b2lkIGRpc3BhdGNoKFNwZWN1bGF0aXZlSklUKiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3Qg
ZnJvbSwgT3BlcmF0aW9uCiB9CiAKICNkZWZpbmUgSlNDX0RFRklORV9DQUxMX09QRVJBVElPTlMo
T3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwgLi4uKSBcCi0gICAgdm9pZCBET01KSVRQYXRjaHBv
aW50UGFyYW1zOjphZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExpc3QgZnJv
bSwgQ0NhbGxIZWxwZXJzJiwgT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIFJlc3VsdFR5cGUgcmVz
dWx0LCBzdGQ6OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBjb25zdCBcCisgICAgdm9pZCBET01K
SVRQYXRjaHBvaW50UGFyYW1zOjphZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVt
cExpc3QgZnJvbSwgQ0NhbGxIZWxwZXJzJiwgT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIFJlc3Vs
dFR5cGUgcmVzdWx0LCBzdGQ6OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBcCiAgICAgeyBcCiAg
ICAgICAgIGRpc3BhdGNoKG1faml0LCBmcm9tLCBvcGVyYXRpb24sIHJlc3VsdCwgYXJncywgc3Rk
OjptYWtlX2luZGV4X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxkZWNsdHlwZShhcmdzKT46OnZh
bHVlPigpKTsgXAogICAgIH0gXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdET01KSVRQYXRjaHBvaW50UGFyYW1zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaAppbmRleCA0NmZkZDRiZTYwMDRmMzMxZDdhOTk2
Y2ExNjZiYTYxMzAwMjA5ZjgyLi5mYjZhYjBiMmM2ODM3MTkyYTI4YjdlNjUxNTc0YzA1NTVlMTU1
ZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RPTUpJVFBhdGNo
cG9pbnRQYXJhbXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RPTUpJVFBh
dGNocG9pbnRQYXJhbXMuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBET01KSVRQYXRjaHBvaW50
UGFyYW1zIDogcHVibGljIERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyB7CiAgICAgfQogCiBwcml2
YXRlOgotI2RlZmluZSBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUyhPcGVyYXRpb25UeXBlLCBS
ZXN1bHRUeXBlLCAuLi4pIHZvaWQgYWRkU2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0LCBDQ2FsbEhlbHBlcnMmLCBPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCBzdGQ6OnR1
cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBjb25zdCBvdmVycmlkZTsKKyNkZWZpbmUgSlNDX0RFRklO
RV9DQUxMX09QRVJBVElPTlMoT3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwgLi4uKSB2b2lkIGFk
ZFNsb3dQYXRoQ2FsbEltcGwoQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzJiwg
T3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwgc3RkOjp0dXBsZTxfX1ZBX0FSR1NfXz4gYXJncykg
b3ZlcnJpZGU7CiAgICAgRE9NSklUX1NMT1dfUEFUSF9DQUxMUyhKU0NfREVGSU5FX0NBTExfT1BF
UkFUSU9OUykKICN1bmRlZiBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUUGF0Y2hwb2ludC5oCmluZGV4IDM4NjA4ZTI1
NjlhMmFjZTY5MTBiMjg5MTkwN2Y1YmRiOGE5NTljNDMuLmJiOWY1ZTRmOWI4N2YyMTM3NTNmYWI4
YTU5ZjAwNzk4ZGY2OTBmMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21q
aXQvRE9NSklUUGF0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQv
RE9NSklUUGF0Y2hwb2ludC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgRE9NSklUIHsKIAogY2xhc3MgUGF0Y2hwb2ludFBhcmFtczsKIAotdHlwZWRlZiBDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0IFBhdGNocG9pbnRHZW5lcmF0b3JGdW5jdGlvbihDQ2FsbEhlbHBl
cnMmLCBjb25zdCBQYXRjaHBvaW50UGFyYW1zJik7Cit0eXBlZGVmIENDYWxsSGVscGVyczo6SnVt
cExpc3QgUGF0Y2hwb2ludEdlbmVyYXRvckZ1bmN0aW9uKENDYWxsSGVscGVycyYsIFBhdGNocG9p
bnRQYXJhbXMmKTsKIHR5cGVkZWYgU2hhcmVkVGFzazxQYXRjaHBvaW50R2VuZXJhdG9yRnVuY3Rp
b24+IFBhdGNocG9pbnRHZW5lcmF0b3I7CiAKIC8vIERPTUpJVCBwYXRjaHBvaW50IGlzIHRoZSB3
YXkgdG8gaW5qZWN0IGFuIG9wYXF1ZSBjb2RlIGdlbmVyYXRvciBpbnRvIERGRyBhbmQgRlRMLgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRQYXRjaHBvaW50
UGFyYW1zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnRQ
YXJhbXMuaAppbmRleCBhZWVjZTFiN2UyOTZlZDE0YjQ2ZTRlZDY5MDg3MWQwMmEwNzY4MjM0Li5k
ODNiNmIwYmYxNjY0MDViZmM0ZGM4ZTMxNTRkMTA5ZGVhMjhmMTA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaApAQCAt
NTUsMTMgKzU1LDEzIEBAIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhdGNocG9pbnRQYXJhbXMpOwog
ICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVz
dWx0VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAgIHZvaWQgYWRkU2xvd1BhdGhDYWxs
KENDYWxsSGVscGVyczo6SnVtcExpc3QgZnJvbSwgQ0NhbGxIZWxwZXJzJiBqaXQsIEZ1bmN0aW9u
VHlwZSBmdW5jdGlvbiwgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMp
IGNvbnN0CisgICAgdm9pZCBhZGRTbG93UGF0aENhbGwoQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBm
cm9tLCBDQ2FsbEhlbHBlcnMmIGppdCwgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLCBSZXN1bHRUeXBl
IHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKICAgICB7CiAgICAgICAgIGFkZFNsb3dQ
YXRoQ2FsbEltcGwoZnJvbSwgaml0LCBmdW5jdGlvbiwgcmVzdWx0LCBzdGQ6Om1ha2VfdHVwbGUo
YXJndW1lbnRzLi4uKSk7CiAgICAgfQogCiBwcml2YXRlOgotI2RlZmluZSBKU0NfREVGSU5FX0NB
TExfT1BFUkFUSU9OUyhPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCAuLi4pIEpTX0VYUE9SVF9Q
UklWQVRFIHZpcnR1YWwgdm9pZCBhZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVt
cExpc3QsIENDYWxsSGVscGVycyYsIE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUsIHN0ZDo6dHVw
bGU8X19WQV9BUkdTX18+IGFyZ3MpIGNvbnN0ID0gMDsKKyNkZWZpbmUgSlNDX0RFRklORV9DQUxM
X09QRVJBVElPTlMoT3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwgLi4uKSBKU19FWFBPUlRfUFJJ
VkFURSB2aXJ0dWFsIHZvaWQgYWRkU2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBlcnM6Okp1bXBM
aXN0LCBDQ2FsbEhlbHBlcnMmLCBPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCBzdGQ6OnR1cGxl
PF9fVkFfQVJHU19fPiBhcmdzKSA9IDA7CiAgICAgRE9NSklUX1NMT1dfUEFUSF9DQUxMUyhKU0Nf
REVGSU5FX0NBTExfT1BFUkFUSU9OUykKICN1bmRlZiBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9O
UwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTERPTUpJVFBhdGNo
cG9pbnRQYXJhbXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExET01KSVRQYXRj
aHBvaW50UGFyYW1zLmNwcAppbmRleCBhYTIyNTU4NzgwNjBjNWY0ZmZlOWJlMWEzN2UzZjJjNDg1
N2JiNDgxLi4xMDZlMmU1NjE5OGI0YzFjY2U0ZDM0MTZiZWEwZTZiYjI4ZTM1NGViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTERPTUpJVFBhdGNocG9pbnRQYXJhbXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRE9NSklUUGF0Y2hwb2ludFBh
cmFtcy5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIHZvaWQgZGlzcGF0Y2goQ0NhbGxIZWxw
ZXJzJiBqaXQsIEZUTDo6U3RhdGUqIHN0YXRlLCBjb25zdCBCMzo6U3RhY2ttYXBHZW4KIH0KIAog
I2RlZmluZSBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUyhPcGVyYXRpb25UeXBlLCBSZXN1bHRU
eXBlLCAuLi4pIFwKLSAgICB2b2lkIERPTUpJVFBhdGNocG9pbnRQYXJhbXM6OmFkZFNsb3dQYXRo
Q2FsbEltcGwoQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBmcm9tLCBDQ2FsbEhlbHBlcnMmIGppdCwg
T3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIFJlc3VsdFR5cGUgcmVzdWx0LCBzdGQ6OnR1cGxlPF9f
VkFfQVJHU19fPiBhcmdzKSBjb25zdCBcCisgICAgdm9pZCBET01KSVRQYXRjaHBvaW50UGFyYW1z
OjphZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExpc3QgZnJvbSwgQ0NhbGxI
ZWxwZXJzJiBqaXQsIE9wZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBSZXN1bHRUeXBlIHJlc3VsdCwg
c3RkOjp0dXBsZTxfX1ZBX0FSR1NfXz4gYXJncykgXAogICAgIHsgXAogICAgICAgICBkaXNwYXRj
aChqaXQsICZtX3N0YXRlLCBtX3BhcmFtcywgbV9ub2RlLCBtX2V4Y2VwdGlvbnMsIGZyb20sIG9w
ZXJhdGlvbiwgcmVzdWx0LCBhcmdzLCBzdGQ6Om1ha2VfaW5kZXhfc2VxdWVuY2U8c3RkOjp0dXBs
ZV9zaXplPGRlY2x0eXBlKGFyZ3MpPjo6dmFsdWU+KCkpOyBcCiAgICAgfSBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oCmlu
ZGV4IDJkMTNlZWFhN2Q1ODdjYjQ3ZTkzNzczMTI2ZmY3MDU5MzY0NDNmN2EuLjMzODdjOTA4NmUx
MzY2MTI4NGY1NzhjNmNhNDQ0MmUyNzRjMGNmZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oCkBAIC00Niw3ICs0Niw3
IEBAIGNsYXNzIERPTUpJVFBhdGNocG9pbnRQYXJhbXMgOiBwdWJsaWMgRE9NSklUOjpQYXRjaHBv
aW50UGFyYW1zIHsKICAgICB9CiAKIHByaXZhdGU6Ci0jZGVmaW5lIEpTQ19ERUZJTkVfQ0FMTF9P
UEVSQVRJT05TKE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUsIC4uLikgdm9pZCBhZGRTbG93UGF0
aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExpc3QsIENDYWxsSGVscGVycyYsIE9wZXJhdGlv
blR5cGUsIFJlc3VsdFR5cGUsIHN0ZDo6dHVwbGU8X19WQV9BUkdTX18+IGFyZ3MpIGNvbnN0IG92
ZXJyaWRlOworI2RlZmluZSBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUyhPcGVyYXRpb25UeXBl
LCBSZXN1bHRUeXBlLCAuLi4pIHZvaWQgYWRkU2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0LCBDQ2FsbEhlbHBlcnMmLCBPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCBzdGQ6
OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBvdmVycmlkZTsKICAgICBET01KSVRfU0xPV19QQVRI
X0NBTExTKEpTQ19ERUZJTkVfQ0FMTF9PUEVSQVRJT05TKQogI3VuZGVmIEpTQ19ERUZJTkVfQ0FM
TF9PUEVSQVRJT05TCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMjc0MTJkMzcyMzczMGNhNzVj
M2I5YzVhZjg4ZWQxZWE3M2ZlYTQ0Ny4uZDVkNjkyYThmNWRlMTY2Y2Q3YTFjOWU2ZjY1YzA1Y2Jl
M2NkYmQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTYwOSw3ICs2MDksNyBAQCBjbGFzcyBE
T01KSVRHZXR0ZXIgOiBwdWJsaWMgRE9NSklUTm9kZSB7CiAgICAgICAgIFJlZjxET01KSVQ6OlBh
dGNocG9pbnQ+IGNoZWNrRE9NKCkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgUmVm
PERPTUpJVDo6UGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IERPTUpJVDo6UGF0Y2hwb2ludDo6Y3Jl
YXRlKCk7Ci0gICAgICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykgeworICAg
ICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwg
RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsKICAgICAgICAgICAgICAgICBmYWlsdXJl
Q2FzZXMuYXBwZW5kKGppdC5icmFuY2g4KAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6Ok5vdEVxdWFsLApAQCAtNjI0LDcgKzYyNCw3IEBAIGNsYXNzIERPTUpJVEdldHRlciA6IHB1
YmxpYyBET01KSVROb2RlIHsKICAgICAgICAgewogICAgICAgICAgICAgUmVmPERPTUpJVDo6Q2Fs
bERPTVBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50Ojpj
cmVhdGUoKTsKICAgICAgICAgICAgIHBhdGNocG9pbnQtPnJlcXVpcmVHbG9iYWxPYmplY3QgPSBm
YWxzZTsKLSAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CisgICAg
ICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBE
T01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEpTVmFs
dWVSZWdzIHJlc3VsdHMgPSBwYXJhbXNbMF0uanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgICAgICAg
ICBHUFJSZWcgZG9tID0gcGFyYW1zWzFdLmdwcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb21qaXQvRE9NSklUSGVscGVycy5oIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJ
VEhlbHBlcnMuaAppbmRleCBkYmU1MzY1Zjg2ZmVjZDFiYzJlNzI3NjEzZjc1NjA1YjE2ZjM4MjUy
Li4xODA2YjJhZmExYzQ3MWMwMzA0NjMwYjgwMzhmMDMyM2Y2ZTM2MWViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSGVscGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbWppdC9ET01KSVRIZWxwZXJzLmgKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCB0cnlMb29rVXBX
cmFwcGVyQ2FjaGUoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGZh
aWx1cmVDYXMKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgV3JhcHBlZFR5cGUsIHR5cGVuYW1lIFRv
SlNGdW5jdGlvbj4KLXZvaWQgdG9XcmFwcGVyKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBKU0M6
OkRPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zLCBHUFJSZWcgd3JhcHBlZCwgR1BSUmVn
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBUb0pTRnVuY3Rpb24gZnVuY3Rpb24s
IEpTQzo6SlNWYWx1ZSBnbG9iYWxPYmplY3RDb25zdGFudCkKK3ZvaWQgdG9XcmFwcGVyKENDYWxs
SGVscGVycyYgaml0LCBKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zLCBHUFJS
ZWcgd3JhcHBlZCwgR1BSUmVnIGdsb2JhbE9iamVjdCwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBUb0pT
RnVuY3Rpb24gZnVuY3Rpb24sIEpTQzo6SlNWYWx1ZSBnbG9iYWxPYmplY3RDb25zdGFudCkKIHsK
ICAgICBBU1NFUlQod3JhcHBlZCAhPSByZXN1bHQucGF5bG9hZEdQUigpKTsKICAgICBBU1NFUlQo
Z2xvYmFsT2JqZWN0ICE9IHJlc3VsdC5wYXlsb2FkR1BSKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQv
SlNOb2RlRE9NSklULmNwcAppbmRleCBiNTBkMjRlOWEzM2M1YTNlYjc4YjhiNzE1MmQ4MzgzYmVm
N2RkMTM1Li5kOGY1OTJjNjRhZjFiNDJjZGI4YWVkODRmODM3NTZhNWM4MmYxYTYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcApAQCAtNTQsNyArNTQsNyBAQCBzdGF0aWMg
UmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nl
c3MocHRyZGlmZl90IG9mZgogewogICAgIFJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBw
YXRjaHBvaW50ID0gRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludDo6Y3JlYXRlKCk7CiAgICAgcGF0
Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKLSAgICBwYXRjaHBvaW50LT5zZXRH
ZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBET01KSVQ6OlBhdGNocG9pbnRQ
YXJhbXMmIHBhcmFtcykgeworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxI
ZWxwZXJzJiBqaXQsIERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAg
IEpTVmFsdWVSZWdzIHJlc3VsdCA9IHBhcmFtc1swXS5qc1ZhbHVlUmVncygpOwogICAgICAgICBH
UFJSZWcgZ2xvYmFsT2JqZWN0ID0gcGFyYW1zWzFdLmdwcigpOwogICAgICAgICBHUFJSZWcgbm9k
ZSA9IHBhcmFtc1syXS5ncHIoKTsKQEAgLTg0LDcgKzg0LDcgQEAgc3RhdGljIFJlZjxET01KSVQ6
OkNhbGxET01QYXRjaHBvaW50PiBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzKHB0cmRpZmZf
dCBvZmYKIHN0YXRpYyBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja05vZGUoKQogewogICAg
IFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBET01KSVQ6OlBhdGNocG9pbnQ6
OmNyZWF0ZSgpOwotICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CisgICAgcGF0
Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgRE9NSklUOjpQYXRj
aHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBm
YWlsdXJlQ2FzZXM7CiAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoRE9NSklUSGVscGVyczo6
YnJhbmNoSWZOb3ROb2RlKGppdCwgcGFyYW1zWzBdLmdwcigpKSk7CiAgICAgICAgIHJldHVybiBm
YWlsdXJlQ2FzZXM7CkBAIC0xNTcsNyArMTU3LDcgQEAgUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNo
cG9pbnQ+IE5vZGVOb2RlVHlwZURPTUpJVDo6Y2FsbERPTSgpCiB7CiAgICAgUmVmPERPTUpJVDo6
Q2FsbERPTVBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50
OjpjcmVhdGUoKTsKICAgICBwYXRjaHBvaW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0ID0gZmFsc2U7
Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKKyAgICBwYXRjaHBvaW50LT5z
ZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBET01KSVQ6OlBhdGNocG9pbnRQYXJh
bXMmIHBhcmFtcykgewogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHQgPSBwYXJhbXNbMF0uanNW
YWx1ZVJlZ3MoKTsKICAgICAgICAgR1BSUmVnIG5vZGUgPSBwYXJhbXNbMV0uZ3ByKCk7CiAgICAg
ICAgIGppdC5sb2FkOChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mobm9kZSwgSlNDOjpKU0NlbGw6OnR5
cGVJbmZvVHlwZU9mZnNldCgpKSwgcmVzdWx0LnBheWxvYWRHUFIoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291551</attachid>
            <date>2016-10-13 18:15:03 -0700</date>
            <delta_ts>2016-10-13 18:23:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163223-20161013181136.patch</filename>
            <type>text/plain</type>
            <size>45171</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MTk1N2ZlNzFlZjI0ODFjN2M0ZTY4OTI4MzBhM2U1MjFiMmQxNWFhLi41NWEzNDU0N2EzNTg0OTNh
Njg0MDNjMDU3YTBlNzczNTMxMzQ3YmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NSBAQAorMjAxNi0xMC0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRE9NSklUXSBVc2UgRE9NSklUOjpQYXRjaHBvaW50IGluIElDCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyMjMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogYnl0ZWNvZGUvRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6U2xvd1BhdGhDYWxsR2VuZXJhdG9yV2l0aEFyZ3Vt
ZW50czo6U2xvd1BhdGhDYWxsR2VuZXJhdG9yV2l0aEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6
OlNsb3dQYXRoQ2FsbEdlbmVyYXRvcldpdGhBcmd1bWVudHM6OmdlbmVyYXRlSW1wbCk6CisgICAg
ICAgIChKU0M6OkRPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zOjplbWl0U2xvd1BhdGhD
YWxscyk6CisgICAgICAgICogYnl0ZWNvZGUvRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJh
bXMuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdET01KSVRQYXRj
aHBvaW50UGFyYW1zLmguCisgICAgICAgIChKU0M6OkRPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50
UGFyYW1zOjpET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcyk6CisgICAgICAgIChKU0M6
OkRPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zOjpTbG93UGF0aENhbGxHZW5lcmF0b3I6
On5TbG93UGF0aENhbGxHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGlj
QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpjYWxjdWxh
dGVMaXZlUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhhbmRsaW5nKToKKyAgICAgICAgKEpT
Qzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9y
cGhpY0FjY2Vzcy5oOgorICAgICAgICAqIGRmZy9ERkdET01KSVRQYXRjaHBvaW50UGFyYW1zLmNw
cDoKKyAgICAgICAgKiBkZmcvREZHRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oOgorICAgICAgICAq
IGRvbWppdC9ET01KSVRQYXRjaHBvaW50Lmg6CisgICAgICAgICogZG9taml0L0RPTUpJVFBhdGNo
cG9pbnRQYXJhbXMuaDoKKyAgICAgICAgKEpTQzo6RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zOjph
ZGRTbG93UGF0aENhbGwpOgorICAgICAgICAqIGZ0bC9GVExET01KSVRQYXRjaHBvaW50UGFyYW1z
LmNwcDoKKyAgICAgICAgKiBmdGwvRlRMRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oOgorICAgICAg
ICAqIGppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlNDOjpTY3Jh
dGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnJlZ2lzdGVyc1RvU3BpbGxGb3JDQ2FsbCk6CisgICAgICAg
ICogaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oOgorICAgICAgICAqIGpzYy5jcHA6Cisg
ICAgICAgIChXVEY6OkRPTUpJVE5vZGU6OmNoZWNrRE9NTm9kZSk6CisgICAgICAgIChXVEY6OkRP
TUpJVEdldHRlcjo6ZG9tSklUTm9kZUdldHRlclNldHRlcik6CisgICAgICAgIChXVEY6OkRPTUpJ
VEdldHRlcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXI6OmN1
c3RvbUdldHRlcik6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlckNvbXBsZXg6OkRPTUpJVEdl
dHRlckNvbXBsZXgpOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXJDb21wbGV4OjpjcmVhdGVT
dHJ1Y3R1cmUpOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXJDb21wbGV4OjpjcmVhdGUpOgor
ICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXJDb21wbGV4OjpET01KSVROb2RlRE9NSklUOjpET01K
SVROb2RlRE9NSklUKToKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAoZnVuY3Rpb25DcmVhdGVET01KSVRHZXR0ZXJDb21wbGV4T2JqZWN0KToKKwogMjAx
Ni0xMC0xMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1l
IHZhcmlhYmxlcyBpbiBhcnJheVByb3RvRnVuY1NwbGljZSgpIHRvIG1hdGNoIG5hbWVzIGluIHRo
ZSBzcGVjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI5NmUzOTdiZDdkZjAzNmIxMTkyZWVmYjg3MGUzMWQyZTU2
MjExNDkuLjAyYTc4YmVmNzhmZmE4OWUzZTBhMjkxOTMwYzc3MjE2Nzc1MzZkOGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNi0xMC0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRE9NSklUXSBVc2UgRE9NSklUOjpQYXRjaHBvaW50
IGluIElDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjMyMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGRvbWppdC9ET01KSVRIZWxwZXJzLmg6CisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJz
Ojp0b1dyYXBwZXIpOgorICAgICAgICAqIGRvbWppdC9KU05vZGVET01KSVQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2Vzcyk6CisgICAgICAgIChXZWJD
b3JlOjpjaGVja05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZU5vZGVUeXBlRE9NSklUOjpj
YWxsRE9NKToKKwogMjAxNi0xMC0xMiAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29t
PgogCiAgICAgICAgIFtNb2Rlcm4gTWVkaWEgQ29udHJvbHNdIFNsaWRlcnM6IHNjcnViYmVyIGFu
ZCB2b2x1bWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA1N2NlZmY2NjE0
NmI5OThjNTEzYmEwN2UxOTZiYzBmY2NhYmMyZDlmLi4wZGUxOTVhMDcxNjAwMGZlMWZlNzhmYmNl
NmNiNWRkZmI3ZjMwZjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0y
MDIsNiArMjAyLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBieXRlY29kZS9D
b21wbGV4R2V0U3RhdHVzLmNwcAogICAgIGJ5dGVjb2RlL0RhdGFGb3JtYXQuY3BwCiAgICAgYnl0
ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCisgICAgYnl0ZWNvZGUvRE9NSklUQWNjZXNzQ2FzZVBh
dGNocG9pbnRQYXJhbXMuY3BwCiAgICAgYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNhbGxi
YWNrLmNwcAogICAgIGJ5dGVjb2RlL0RlZmVycmVkU291cmNlRHVtcC5jcHAKICAgICBieXRlY29k
ZS9FeGVjdXRpb25Db3VudGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBk
NDRiMmM0ZDMyNjJkNDE5NTE0YzkxNGNlZGJmM2M1YWE5ZWZmM2ZhLi40ZWMzZDFmY2U5YjdlMjE3
NmFlYzRkMjY1ZDVlY2Q0Yzk0NTUzMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMjExMCw2ICsyMTEwLDggQEAKIAkJRTM5REE0QTYxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9k
dWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi87IH07
CiAJCUUzOURBNEE3MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTUxQjdFOEI3QzAw
ODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNBNDIxNDMxRDZGNTg5MzAwMDdDNjE3IC8qIFByZWNpc2VK
dW1wVGFyZ2V0c0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzQTQyMTQyMUQ2RjU4OEYwMDA3QzYxNyAvKiBQcmVjaXNlSnVtcFRhcmdldHNJ
bmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJRTNCRkQwQkIxREFGODA4NzAwNjVERUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50
UGFyYW1zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzQkZEMEI5MURBRjgwN0MwMDY1REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBh
cmFtcy5jcHAgKi87IH07CisJCUUzQkZEMEJDMURBRjgwOEUwMDY1REVBMiAvKiBET01KSVRBY2Nl
c3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTNCRkQwQkExREFGODA3QzAwNjVERUEyIC8qIERPTUpJVEFjY2Vzc0Nh
c2VQYXRjaHBvaW50UGFyYW1zLmggKi87IH07CiAJCUUzQzA4RTNDMURBNDFCODEwMDM5NDc4RiAv
KiBET01KSVRQYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFM0MwOEUzQjFEQTQxQjdCMDAzOTQ3OEYgLyogRE9NSklUUGF0Y2hwb2ludC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRDIz
OUM4MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM2MUI4MjlDMUMwMEJC
RUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLzsgfTsKIAkJRTNEMjM5QzkxQjgyOUMx
QzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01v
ZHVsZUVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTQ0MTUsNiArNDQxNyw4IEBACiAJCUUzOURBNEE0MUI3RThCN0MwMDg0RjMz
QSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU01vZHVsZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
OURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZVJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFM0E0MjE0MjFENkY1ODhGMDAwN0M2MTcgLyogUHJlY2lzZUp1bXBUYXJnZXRz
SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcmVjaXNlSnVtcFRh
cmdldHNJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQkZEMEI5MURB
RjgwN0MwMDY1REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01KSVRBY2Nlc3NDYXNlUGF0Y2hw
b2ludFBhcmFtcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQkZEMEJBMURB
RjgwN0MwMDY1REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBh
cmFtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0MwOEUzQjFEQTQxQjdCMDAz
OTQ3OEYgLyogRE9NSklUUGF0Y2hwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBET01KSVRQYXRjaHBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
Q0IxRTI0MURBNzU0MEEwMEZBMUU1NiAvKiBET01KSVRTbG93UGF0aENhbGxzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVFNsb3dQYXRoQ2FsbHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxl
RW52aXJvbm1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNN
b2R1bGVFbnZpcm9ubWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02ODEy
LDYgKzY4MTYsOCBAQAogCQkJCTBGMEI4M0E1MTRCQ0Y1MDQwMDg4NUI0RiAvKiBDb2RlVHlwZS5o
ICovLAogCQkJCTBGNkZDNzRFMTk2MTEwQTgwMEUxRDAyRCAvKiBDb21wbGV4R2V0U3RhdHVzLmNw
cCAqLywKIAkJCQkwRjZGQzc0RjE5NjExMEE4MDBFMUQwMkQgLyogQ29tcGxleEdldFN0YXR1cy5o
ICovLAorCQkJCUUzQkZEMEI5MURBRjgwN0MwMDY1REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0
Y2hwb2ludFBhcmFtcy5jcHAgKi8sCisJCQkJRTNCRkQwQkExREFGODA3QzAwNjVERUEyIC8qIERP
TUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmggKi8sCiAJCQkJNjJFM0Q1RUYxQjhEMEI3
MzAwQjg2OEJCIC8qIERhdGFGb3JtYXQuY3BwICovLAogCQkJCTBGNDI2QTRBMTQ2MENENkIwMDEz
MUY4RiAvKiBEYXRhRm9ybWF0LmggKi8sCiAJCQkJMEZDNzEyREMxN0NEODc3ODAwOENDOTNDIC8q
IERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAgKi8sCkBAIC03NTEzLDYgKzc1MTksNyBA
QAogCQkJCTBGODM2NEI3MTY0QjBDMTEwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTg2RUM5REM1MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29k
ZVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNTZDMzYxNjI3QjBBRDAwN0YyNzgzIC8q
IERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywK
KwkJCQlFM0JGRDBCQzFEQUY4MDhFMDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9p
bnRQYXJhbXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkRCOUFEMUFCMEZCQzYwMDBCNTdFNSAv
KiBERkdDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZDOTU4MTRFRjkwQTIwMEM3MjUzMiAvKiBERkdDRkFQ
aGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDA3LDYgKzk0MTQsNyBAQAogCQkJCUUzNUUwMzVG
MUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTUzMjQzOEIxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvclBy
b3RvY29sT2JqZWN0cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTBFNEI2MTE4ODA5REQ1MDA2
OEE0NkQgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUz
QkZEMEJCMURBRjgwODcwMDY1REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFt
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTkzQ0Y4MjE4NDAzNzcxMDBCRkNFMjcgLyogSW5z
cGVjdG9yVmFsdWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUNGMTA3RUMzNzYwMDQy
N0E0OCAvKiBJbnRlcm5hbEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MjlEN0Q0
MEVEMjEyODIwMEI4OTYxOSAvKiBJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ET01KSVRBY2Nlc3NDYXNlUGF0
Y2hwb2ludFBhcmFtcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRE9NSklU
QWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0ZDA2OTZhNzI0ZWQ1
MmUyOTY0NjBiYzQ5YWE2Yjc2ZWU3ZmVkNGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3Bw
CkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRPTUpJVEFjY2Vzc0Nhc2VQ
YXRjaHBvaW50UGFyYW1zLmgiCisKKyNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCisjaW5jbHVkZSAi
UG9seW1vcnBoaWNBY2Nlc3MuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgorCisj
aWYgRU5BQkxFKEpJVCkKKworbmFtZXNwYWNlIEpTQyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEp1
bXBUeXBlLCB0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5cGVu
YW1lLi4uIEFyZ3VtZW50cz4KK2NsYXNzIFNsb3dQYXRoQ2FsbEdlbmVyYXRvcldpdGhBcmd1bWVu
dHMgOiBwdWJsaWMgRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXM6OlNsb3dQYXRoQ2Fs
bEdlbmVyYXRvciB7CitwdWJsaWM6CisgICAgU2xvd1BhdGhDYWxsR2VuZXJhdG9yV2l0aEFyZ3Vt
ZW50cyhKdW1wVHlwZSBmcm9tLCBDQ2FsbEhlbHBlcnM6OkxhYmVsIHRvLCBGdW5jdGlvblR5cGUg
ZnVuY3Rpb24sIFJlc3VsdFR5cGUgcmVzdWx0LCBzdGQ6OnR1cGxlPEFyZ3VtZW50cy4uLj4gYXJn
dW1lbnRzKQorICAgICAgICA6IG1fZnJvbShmcm9tKQorICAgICAgICAsIG1fdG8odG8pCisgICAg
ICAgICwgbV9mdW5jdGlvbihmdW5jdGlvbikKKyAgICAgICAgLCBtX3Jlc3VsdChyZXN1bHQpCisg
ICAgICAgICwgbV9hcmd1bWVudHMoYXJndW1lbnRzKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZTxzaXplX3QuLi4gQXJndW1lbnRzSW5kZXg+CisgICAgdm9pZCBnZW5lcmF0ZUltcGwoVk0m
IHZtLCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNl
ZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiBqaXQsIHN0ZDo6aW5kZXhfc2VxdWVuY2U8QXJndW1l
bnRzSW5kZXguLi4+KQorICAgIHsKKyAgICAgICAgc3RhdGUucHJlc2VydmVMaXZlUmVnaXN0ZXJz
VG9TdGFja0ZvckNhbGwodXNlZFJlZ2lzdGVycyk7CisKKyAgICAgICAgaml0LnN0b3JlMzIoCisg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzdGF0ZS5jYWxsU2l0ZUluZGV4
Rm9yRXhjZXB0aW9uSGFuZGxpbmdPck9yaWdpbmFsKCkuYml0cygpKSwKKyAgICAgICAgICAgIEND
YWxsSGVscGVyczo6dGFnRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oQ2FsbEZyYW1l
U2xvdDo6YXJndW1lbnRDb3VudCkpKTsKKworICAgICAgICBqaXQubWFrZVNwYWNlT25TdGFja0Zv
ckNDYWxsKCk7CisKKyAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCAmdm0udG9wQ2FsbEZyYW1lKTsKKworICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5LCB3
ZSBkbyBub3QgY2hlY2sgYW55IEFSTSBFQUJJIC8gU0g0IHRoaW5ncyBoZXJlLgorICAgICAgICAv
LyBCdXQgaXQgaXMgT0sgYmVjYXVzZSBhIGNvbXBpbGUgZXJyb3IgaGFwcGVucyB3aGVuIHlvdSBw
YXNzIEpTVmFsdWVSZWdzIGFzIGFuIGFyZ3VtZW50LgorICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMDk5CisgICAgICAgIGppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoc3RkOjpnZXQ8QXJndW1lbnRzSW5kZXg+KG1fYXJndW1lbnRzKS4u
Lik7CisKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIG9wZXJhdGlvbkNhbGwgPSBqaXQuY2Fs
bCgpOworICAgICAgICBhdXRvIGZ1bmN0aW9uID0gbV9mdW5jdGlvbjsKKyAgICAgICAgaml0LmFk
ZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAgICAgICAgbGlu
a0J1ZmZlci5saW5rKG9wZXJhdGlvbkNhbGwsIEZ1bmN0aW9uUHRyKGZ1bmN0aW9uKSk7CisgICAg
ICAgIH0pOworCisgICAgICAgIGppdC5zZXR1cFJlc3VsdHMobV9yZXN1bHQpOworICAgICAgICBq
aXQucmVjbGFpbVNwYWNlT25TdGFja0ZvckNDYWxsKCk7CisKKyAgICAgICAgQ0NhbGxIZWxwZXJz
OjpKdW1wIG5vRXhjZXB0aW9uID0gaml0LmVtaXRFeGNlcHRpb25DaGVjayhDQ2FsbEhlbHBlcnM6
OkludmVydGVkRXhjZXB0aW9uQ2hlY2spOworCisgICAgICAgIHN0YXRlLnJlc3RvcmVMaXZlUmVn
aXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbFdpdGhUaHJvd25FeGNlcHRpb24oKTsKKyAgICAgICAgc3Rh
dGUuZW1pdEV4cGxpY2l0RXhjZXB0aW9uSGFuZGxlcigpOworCisgICAgICAgIG5vRXhjZXB0aW9u
LmxpbmsoJmppdCk7CisgICAgICAgIGJvb2wgaXNHZXR0ZXIgPSB0cnVlOworICAgICAgICBzdGF0
ZS5yZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoaXNHZXR0ZXIpOworICAgIH0K
KworICAgIHZvaWQgZ2VuZXJhdGUoVk0mIHZtLCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRl
LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiBqaXQpIG92
ZXJyaWRlCisgICAgeworICAgICAgICBtX2Zyb20ubGluaygmaml0KTsKKyAgICAgICAgZ2VuZXJh
dGVJbXBsKHZtLCBzdGF0ZSwgdXNlZFJlZ2lzdGVycywgaml0LCBzdGQ6Om1ha2VfaW5kZXhfc2Vx
dWVuY2U8c3RkOjp0dXBsZV9zaXplPHN0ZDo6dHVwbGU8QXJndW1lbnRzLi4uPj46OnZhbHVlPigp
KTsKKyAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8obV90bywgJmppdCk7CisgICAgfQorCitwcm90
ZWN0ZWQ6CisgICAgSnVtcFR5cGUgbV9mcm9tOworICAgIENDYWxsSGVscGVyczo6TGFiZWwgbV90
bzsKKyAgICBGdW5jdGlvblR5cGUgbV9mdW5jdGlvbjsKKyAgICBSZXN1bHRUeXBlIG1fcmVzdWx0
OworICAgIHN0ZDo6dHVwbGU8QXJndW1lbnRzLi4uPiBtX2FyZ3VtZW50czsKK307CisKKyNkZWZp
bmUgSlNDX0RFRklORV9DQUxMX09QRVJBVElPTlMoT3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwg
Li4uKSBcCisgICAgdm9pZCBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtczo6YWRkU2xv
d1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGZyb20sIENDYWxsSGVscGVycyYg
aml0LCBPcGVyYXRpb25UeXBlIG9wZXJhdGlvbiwgUmVzdWx0VHlwZSByZXN1bHQsIHN0ZDo6dHVw
bGU8X19WQV9BUkdTX18+IGFyZ3MpIFwKKyAgICB7IFwKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpM
YWJlbCB0byA9IGppdC5sYWJlbCgpOyBcCisgICAgICAgIG1fZ2VuZXJhdG9ycy5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRoQXJndW1lbnRzPENDYWxsSGVs
cGVyczo6SnVtcExpc3QsIE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUsIF9fVkFfQVJHU19fPj4o
ZnJvbSwgdG8sIG9wZXJhdGlvbiwgcmVzdWx0LCBhcmdzKSk7IFwKKyAgICB9IFwKKworRE9NSklU
X1NMT1dfUEFUSF9DQUxMUyhKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUykKKyN1bmRlZiBKU0Nf
REVGSU5FX0NBTExfT1BFUkFUSU9OUworCit2b2lkIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50
UGFyYW1zOjplbWl0U2xvd1BhdGhDYWxscyhWTSYgdm0sIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYg
c3RhdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmIGpp
dCkKK3sKKyAgICBmb3IgKGF1dG8mIGdlbmVyYXRvciA6IG1fZ2VuZXJhdG9ycykKKyAgICAgICAg
Z2VuZXJhdG9yLT5nZW5lcmF0ZSh2bSwgc3RhdGUsIHVzZWRSZWdpc3RlcnMsIGppdCk7Cit9CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9ET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjFkNTUxODRmNTY0Y2U3NGQ1NjQxZWRiMGJiMDViYjkxOTA5MGVhMWEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRE9NSklUQWNjZXNzQ2FzZVBhdGNo
cG9pbnRQYXJhbXMuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoSklUKQorCisj
aW5jbHVkZSAiRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
c3RydWN0IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTsKKworY2xhc3MgRE9NSklUQWNjZXNzQ2FzZVBh
dGNocG9pbnRQYXJhbXMgOiBwdWJsaWMgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zIHsKK3B1Ymxp
YzoKKyAgICBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcyhWZWN0b3I8RE9NSklUOjpW
YWx1ZT4mJiByZWdzLCBWZWN0b3I8R1BSUmVnPiYmIGdwU2NyYXRjaCwgVmVjdG9yPEZQUlJlZz4m
JiBmcFNjcmF0Y2gpCisgICAgICAgIDogRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zKFdURk1vdmUo
cmVncyksIFdURk1vdmUoZ3BTY3JhdGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gpKQorICAgIHsKKyAg
ICB9CisKKyAgICBjbGFzcyBTbG93UGF0aENhbGxHZW5lcmF0b3IgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgdmlydHVhbCB+U2xvd1BhdGhDYWxsR2VuZXJhdG9yKCkgeyB9CisgICAgICAgIHZpcnR1
YWwgdm9pZCBnZW5lcmF0ZShWTSYsIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IFJlZ2lz
dGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmKSA9IDA7CisgICAgfTsKKworICAg
IHZvaWQgZW1pdFNsb3dQYXRoQ2FsbHMoVk0mLCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmLCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJik7CisKK3ByaXZhdGU6
CisjZGVmaW5lIEpTQ19ERUZJTkVfQ0FMTF9PUEVSQVRJT05TKE9wZXJhdGlvblR5cGUsIFJlc3Vs
dFR5cGUsIC4uLikgdm9pZCBhZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExp
c3QsIENDYWxsSGVscGVycyYsIE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUsIHN0ZDo6dHVwbGU8
X19WQV9BUkdTX18+IGFyZ3MpIG92ZXJyaWRlOworICAgIERPTUpJVF9TTE9XX1BBVEhfQ0FMTFMo
SlNDX0RFRklORV9DQUxMX09QRVJBVElPTlMpCisjdW5kZWYgSlNDX0RFRklORV9DQUxMX09QRVJB
VElPTlMKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoQ2FsbEdlbmVyYXRvcj4+
IG1fZ2VuZXJhdG9yczsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAppbmRleCA5YThhOGU1MjAw
OThhOTZhZTZkYzg1MDlmMDJmMTUzMWEwMDEyNTYwLi5lODhhNWEwODkyZjYzMTM5YjNjZmFkMDE1
ZmFmYjdlM2I0NWUxNTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAgLTMxLDYgKzMxLDggQEAKICNpbmNsdWRlICJC
aW5hcnlTd2l0Y2guaCIKICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJDb2Rl
QmxvY2suaCIKKyNpbmNsdWRlICJET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oIgor
I2luY2x1ZGUgIkRPTUpJVENhbGxET01QYXRjaHBvaW50LmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJn
dW1lbnRzLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgpA
QCAtNzQsNyArNzYsMTEgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnN1Y2NlZWQoKQog
CiB2b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6Y2FsY3VsYXRlTGl2ZVJlZ2lzdGVyc0ZvckNh
bGxBbmRFeGNlcHRpb25IYW5kbGluZyhjb25zdCBSZWdpc3RlclNldCYgZXh0cmEpCiB7CisgICAg
aWYgKG1fZXh0cmFMaXZlUmVnaXN0ZXJzRm9yQ2FsbCAhPSBleHRyYSkKKyAgICAgICAgbV9jYWxj
dWxhdGVkUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhhbmRsaW5nID0gZmFsc2U7CisKICAg
ICBpZiAoIW1fY2FsY3VsYXRlZFJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRpb25IYW5kbGluZykg
eworICAgICAgICBtX2V4dHJhTGl2ZVJlZ2lzdGVyc0ZvckNhbGwgPSBleHRyYTsKICAgICAgICAg
bV9jYWxjdWxhdGVkUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhhbmRsaW5nID0gdHJ1ZTsK
IAogICAgICAgICBtX2xpdmVSZWdpc3RlcnNUb1ByZXNlcnZlQXRFeGNlcHRpb25IYW5kbGluZ0Nh
bGxTaXRlID0gaml0LT5jb2RlQmxvY2soKS0+aml0Q29kZSgpLT5saXZlUmVnaXN0ZXJzVG9QcmVz
ZXJ2ZUF0RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZShqaXQtPmNvZGVCbG9jaygpLCBzdHViSW5m
by0+Y2FsbFNpdGVJbmRleCk7CkBAIC05MzIsNiArOTM4LDExMCBAQCB2b2lkIEFjY2Vzc0Nhc2U6
OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKG1fdHlwZSA9PSBDdXN0b21BY2Nlc3Nv
ckdldHRlciAmJiBtX3JhcmVEYXRhLT5kb21KSVQpIHsKKyAgICAgICAgICAgIC8vIFdlIGRvIG5v
dCBuZWVkIHRvIGVtaXQgQ2hlY2tET00gb3BlcmF0aW9uIHNpbmNlIHN0cnVjdHVyZSBjaGVjayBl
bnN1cmVzCisgICAgICAgICAgICAvLyB0aGF0IHRoZSBnaXZlbiBiYXNlIHZhbHVlIGlzIGFuIGFw
cHJvcHJpYXRlIERPTSBub2RlLgorICAgICAgICAgICAgUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNo
cG9pbnQ+IHBhdGNocG9pbnQgPSBtX3JhcmVEYXRhLT5kb21KSVQtPmNhbGxET00oKTsKKworICAg
ICAgICAgICAgVmVjdG9yPEdQUlJlZz4gZ3BTY3JhdGNoOworICAgICAgICAgICAgVmVjdG9yPEZQ
UlJlZz4gZnBTY3JhdGNoOworICAgICAgICAgICAgVmVjdG9yPERPTUpJVDo6VmFsdWU+IHJlZ3M7
CisKKyAgICAgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0b3Ioc3R1Yklu
Zm8ucGF0Y2gudXNlZFJlZ2lzdGVycyk7CisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhiYXNl
R1BSKTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2so
c3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5iYXNlVGFnR1BSKSk7CisjZW5kaWYK
KyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CisgICAgICAgICAgICBhbGxv
Y2F0b3IubG9jayhzY3JhdGNoR1BSKTsKKworICAgICAgICAgICAgR1BSUmVnIHBhcmFtQmFzZUdQ
UiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgICAgICBHUFJSZWcgcGFyYW1HbG9iYWxPYmplY3RH
UFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgcGFyYW1WYWx1ZVJl
Z3MgPSB2YWx1ZVJlZ3M7CisgICAgICAgICAgICBHUFJSZWcgcmVtYWluaW5nU2NyYXRjaEdQUiA9
IEludmFsaWRHUFJSZWc7CisKKyAgICAgICAgICAgIC8vIHZhbHVlUmVncyBhbmQgYmFzZUZvckdl
dEdQUiBtYXkgYmUgdGhlIHNhbWUuIEZvciBleGFtcGxlLCBpbiBCYXNlbGluZSBKSVQsIHdlIHBh
c3MgdGhlIHNhbWUgcmVnVDAgZm9yIGJhc2VHUFIgYW5kIHZhbHVlUmVncy4KKyAgICAgICAgICAg
IC8vIEluIEZUTCwgdGhlcmUgaXMgbm8gY29uc3RyYWludCB0aGF0IHRoZSBiYXNlRm9yR2V0R1BS
IGludGVyZmVyZXMgd2l0aCB0aGUgcmVzdWx0LiBUbyBtYWtlIGltcGxlbWVudGF0aW9uIHNpbXBs
ZSBpbgorICAgICAgICAgICAgLy8gRE9NSklUOjpQYXRjaHBvaW50LCBET01KSVQ6OlBhdGNocG9p
bnQgYXNzdW1lcyB0aGF0IHJlc3VsdCByZWdpc3RlcnMgYWx3YXlzIGVhcmx5IGludGVyZmVyZSB3
aXRoIGlucHV0IHJlZ2lzdGVycywgaW4gdGhpcyBjYXNlLAorICAgICAgICAgICAgLy8gYmFzZUZv
ckdldEdQUi4gU28gd2UgbW92ZSBiYXNlRm9yR2V0R1BSIHRvIHRoZSBvdGhlciByZWdpc3RlciBp
ZiBiYXNlRm9yR2V0R1BSID09IHZhbHVlUmVncy4KKyAgICAgICAgICAgIGlmIChiYXNlRm9yR2V0
R1BSICE9IHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpIHsKKyAgICAgICAgICAgICAgICBwYXJhbUJh
c2VHUFIgPSBiYXNlRm9yR2V0R1BSOworICAgICAgICAgICAgICAgIGlmICghcGF0Y2hwb2ludC0+
cmVxdWlyZUdsb2JhbE9iamVjdCkKKyAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nU2NyYXRj
aEdQUiA9IHNjcmF0Y2hHUFI7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICBwYXJhbUdsb2JhbE9iamVjdEdQUiA9IHNjcmF0Y2hHUFI7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGppdC5tb3ZlKHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIHNj
cmF0Y2hHUFIpOworICAgICAgICAgICAgICAgIHBhcmFtQmFzZUdQUiA9IHNjcmF0Y2hHUFI7Cisg
ICAgICAgICAgICAgICAgaWYgKHBhdGNocG9pbnQtPnJlcXVpcmVHbG9iYWxPYmplY3QpCisgICAg
ICAgICAgICAgICAgICAgIHBhcmFtR2xvYmFsT2JqZWN0R1BSID0gYWxsb2NhdG9yLmFsbG9jYXRl
U2NyYXRjaEdQUigpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZWdzLmFwcGVuZChw
YXJhbVZhbHVlUmVncyk7CisgICAgICAgICAgICBpZiAocGFyYW1HbG9iYWxPYmplY3RHUFIgIT0g
SW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgICAgICByZWdzLmFwcGVuZChwYXJhbUdsb2JhbE9i
amVjdEdQUik7CisgICAgICAgICAgICByZWdzLmFwcGVuZChwYXJhbUJhc2VHUFIpOworCisgICAg
ICAgICAgICBpZiAocGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzKSB7CisgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaSA9IDA7CisgICAgICAgICAgICAgICAgaWYgKHJlbWFpbmluZ1Nj
cmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZykgeworICAgICAgICAgICAgICAgICAgICBncFNjcmF0
Y2guYXBwZW5kKHJlbWFpbmluZ1NjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgICAgICArK2k7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZvciAoOyBpIDwgcGF0Y2hwb2lu
dC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzOyArK2kpCisgICAgICAgICAgICAgICAgICAgIGdwU2Ny
YXRjaC5hcHBlbmQoYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhdGNocG9pbnQtPm51
bUZQU2NyYXRjaFJlZ2lzdGVyczsgKytpKQorICAgICAgICAgICAgICAgIGZwU2NyYXRjaC5hcHBl
bmQoYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEZQUigpKTsKKworICAgICAgICAgICAgU2NyYXRj
aFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0ZSA9CisgICAg
ICAgICAgICAgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKGpp
dCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6OlNwYWNlRm9yQ0Nh
bGwpOworCisgICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgICAgIGRhdGFM
b2coImJhc2VHUFIgPSAiLCBiYXNlR1BSLCAiXG4iKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9n
KCJ2YWx1ZVJlZ3MgPSAiLCB2YWx1ZVJlZ3MsICJcbiIpOworICAgICAgICAgICAgICAgIGRhdGFM
b2coInNjcmF0Y2hHUFIgPSAiLCBzY3JhdGNoR1BSLCAiXG4iKTsKKyAgICAgICAgICAgICAgICBk
YXRhTG9nKCJwYXJhbUJhc2VHUFIgPSAiLCBwYXJhbUJhc2VHUFIsICJcbiIpOworICAgICAgICAg
ICAgICAgIGlmIChwYXJhbUdsb2JhbE9iamVjdEdQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCJwYXJhbUdsb2JhbE9iamVjdEdQUiA9ICIsIHBhcmFtR2xv
YmFsT2JqZWN0R1BSLCAiXG4iKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJwYXJhbVZhbHVl
UmVncyA9ICIsIHBhcmFtVmFsdWVSZWdzLCAiXG4iKTsKKyAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzOyArK2kp
CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coImdwU2NyYXRjaFsiLCBpLCAiXSA9ICIsIGdw
U2NyYXRjaFtpXSwgIlxuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChwYXRj
aHBvaW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0KSB7CisgICAgICAgICAgICAgICAgaml0LmVtaXRM
b2FkU3RydWN0dXJlKHBhcmFtQmFzZUdQUiwgcGFyYW1HbG9iYWxPYmplY3RHUFIsIHZhbHVlUmVn
cy5wYXlsb2FkR1BSKCkpOworICAgICAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVy
czo6QWRkcmVzcyhwYXJhbUdsb2JhbE9iamVjdEdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RP
ZmZzZXQoKSksIHBhcmFtR2xvYmFsT2JqZWN0R1BSKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gV2UgZG8gbm90IG5lZWQgdG8gc3BpbGwgbG9ja2VkIHJlZ2lzdGVycyBzaW5jZSB0
aGUgY2FsbGVyIChCYXNlbGluZSwgREZHLCBhbmQgRlRMKQorICAgICAgICAgICAgLy8gbXVzdCBh
c3N1bWUgdGhhdCB0aGV5IGNhbiBiZSBjbG9iYmVyZWQgaW4gdGhlIElDIGZhc3QgcGF0aCBpZiBp
dCBzdWNjZWVkcy4KKyAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHJlZ2lzdGVyc1RvU3BpbGxGb3JD
Q2FsbDsKKyAgICAgICAgICAgIGZvciAoYXV0byYgdmFsdWUgOiByZWdzKSB7CisgICAgICAgICAg
ICAgICAgRE9NSklUOjpSZWcgcmVnID0gdmFsdWUucmVnKCk7CisgICAgICAgICAgICAgICAgaWYg
KHJlZy5pc0pTVmFsdWVSZWdzKCkpCisgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyc1RvU3Bp
bGxGb3JDQ2FsbC5zZXQocmVnLmpzVmFsdWVSZWdzKCkpOworICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKHJlZy5pc0dQUigpKQorICAgICAgICAgICAgICAgICAgICByZWdpc3RlcnNUb1NwaWxsRm9y
Q0NhbGwuc2V0KHJlZy5ncHIoKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICByZWdpc3RlcnNUb1NwaWxsRm9yQ0NhbGwuc2V0KHJlZy5mcHIoKSk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBmb3IgKEdQUlJlZyByZWcgOiBncFNjcmF0Y2gpCisgICAgICAg
ICAgICAgICAgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLnNldChyZWcpOworICAgICAgICAgICAg
Zm9yIChGUFJSZWcgcmVnIDogZnBTY3JhdGNoKQorICAgICAgICAgICAgICAgIHJlZ2lzdGVyc1Rv
U3BpbGxGb3JDQ2FsbC5zZXQocmVnKTsKKyAgICAgICAgICAgIHJlZ2lzdGVyc1RvU3BpbGxGb3JD
Q2FsbC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpyZWdpc3RlcnNUb05vdFNhdmVGb3JDQ2FsbCgpKTsK
KworICAgICAgICAgICAgRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMgcGFyYW1zKFdU
Rk1vdmUocmVncyksIFdURk1vdmUoZ3BTY3JhdGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gpKTsKKyAg
ICAgICAgICAgIHBhdGNocG9pbnQtPmdlbmVyYXRvcigpLT5ydW4oaml0LCBwYXJhbXMpOworICAg
ICAgICAgICAgYWxsb2NhdG9yLnJlc3RvcmVSZXVzZWRSZWdpc3RlcnNCeVBvcHBpbmcoaml0LCBw
cmVzZXJ2ZWRTdGF0ZSk7CisgICAgICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CisKKyAgICAgICAg
ICAgIHBhcmFtcy5lbWl0U2xvd1BhdGhDYWxscyh2bSwgc3RhdGUsIHJlZ2lzdGVyc1RvU3BpbGxG
b3JDQ2FsbCwgaml0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAg
IC8vIFN0dWZmIGZvciBjdXN0b20gZ2V0dGVycy9zZXR0ZXJzLgogICAgICAgICBDQ2FsbEhlbHBl
cnM6OkNhbGwgb3BlcmF0aW9uQ2FsbDsKIApAQCAtOTQwLDkgKzEwNTAsNiBAQCB2b2lkIEFjY2Vz
c0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkNhbGwgZmFzdFBhdGhDYWxsOwogICAgICAgICBDQ2FsbEhlbHBlcnM6
OkNhbGwgc2xvd1BhdGhDYWxsOwogCi0gICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBzdWNjZXNz
OwotICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZmFpbDsKLQogICAgICAgICAvLyBUaGlzIGFs
c28gZG9lcyB0aGUgbmVjZXNzYXJ5IGNhbGN1bGF0aW9ucyBvZiB3aGV0aGVyIG9yIG5vdCB3ZSdy
ZSBhbgogICAgICAgICAvLyBleGNlcHRpb24gaGFuZGxpbmcgY2FsbCBzaXRlLgogICAgICAgICBz
dGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAppbmRleCA5NzBh
MjM1YmZkZTMyZTYzYWY2Yjk1ZGFmZjczMjNjMmI5NDhjNjVjLi5mYzJiMGMxZGNmMWEzZmIzN2Qz
ZmVjZDI0YjZjNjU2YmFhZjJiZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaApAQCAtNTE0LDYgKzUxNCw3IEBAIHN0cnVjdCBB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGUgewogICAgICAgICByZXR1cm4gbV9saXZlUmVnaXN0ZXJzVG9Q
cmVzZXJ2ZUF0RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZTsKICAgICB9CiAgICAgCisgICAgUmVn
aXN0ZXJTZXQgbV9leHRyYUxpdmVSZWdpc3RlcnNGb3JDYWxsOwogICAgIFJlZ2lzdGVyU2V0IG1f
bGl2ZVJlZ2lzdGVyc1RvUHJlc2VydmVBdEV4Y2VwdGlvbkhhbmRsaW5nQ2FsbFNpdGU7CiAgICAg
UmVnaXN0ZXJTZXQgbV9saXZlUmVnaXN0ZXJzRm9yQ2FsbDsKICAgICBDYWxsU2l0ZUluZGV4IG1f
Y2FsbFNpdGVJbmRleCB7IENhbGxTaXRlSW5kZXgoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
T01KSVRQYXRjaHBvaW50UGFyYW1zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RE9NSklUUGF0Y2hwb2ludFBhcmFtcy5jcHAKaW5kZXggMGExMWM2NzEzNDdkNzFiZmRhMzUxOTMw
ZTdjYjU1ZjFhNWVjNmYwNy4uOGVkNzdiNTJlZWNjYzUzYTA5NTQ2MTI4NmE1ODMxYWI3ZGQxNWNi
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdET01KSVRQYXRjaHBv
aW50UGFyYW1zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RPTUpJVFBh
dGNocG9pbnRQYXJhbXMuY3BwCkBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNo
KFNwZWN1bGF0aXZlSklUKiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QgZnJvbSwgT3BlcmF0
aW9uCiB9CiAKICNkZWZpbmUgSlNDX0RFRklORV9DQUxMX09QRVJBVElPTlMoT3BlcmF0aW9uVHlw
ZSwgUmVzdWx0VHlwZSwgLi4uKSBcCi0gICAgdm9pZCBET01KSVRQYXRjaHBvaW50UGFyYW1zOjph
ZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExpc3QgZnJvbSwgQ0NhbGxIZWxw
ZXJzJiwgT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIFJlc3VsdFR5cGUgcmVzdWx0LCBzdGQ6OnR1
cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBjb25zdCBcCisgICAgdm9pZCBET01KSVRQYXRjaHBvaW50
UGFyYW1zOjphZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExpc3QgZnJvbSwg
Q0NhbGxIZWxwZXJzJiwgT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIFJlc3VsdFR5cGUgcmVzdWx0
LCBzdGQ6OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBcCiAgICAgeyBcCiAgICAgICAgIGRpc3Bh
dGNoKG1faml0LCBmcm9tLCBvcGVyYXRpb24sIHJlc3VsdCwgYXJncywgc3RkOjptYWtlX2luZGV4
X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxkZWNsdHlwZShhcmdzKT46OnZhbHVlPigpKTsgXAog
ICAgIH0gXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdET01KSVRQ
YXRjaHBvaW50UGFyYW1zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RPTUpJVFBh
dGNocG9pbnRQYXJhbXMuaAppbmRleCA0NmZkZDRiZTYwMDRmMzMxZDdhOTk2Y2ExNjZiYTYxMzAw
MjA5ZjgyLi5mYjZhYjBiMmM2ODM3MTkyYTI4YjdlNjUxNTc0YzA1NTVlMTU1ZWI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RPTUpJVFBhdGNocG9pbnRQYXJhbXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RPTUpJVFBhdGNocG9pbnRQYXJh
bXMuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBET01KSVRQYXRjaHBvaW50UGFyYW1zIDogcHVi
bGljIERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyB7CiAgICAgfQogCiBwcml2YXRlOgotI2RlZmlu
ZSBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUyhPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCAu
Li4pIHZvaWQgYWRkU2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0LCBDQ2Fs
bEhlbHBlcnMmLCBPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCBzdGQ6OnR1cGxlPF9fVkFfQVJH
U19fPiBhcmdzKSBjb25zdCBvdmVycmlkZTsKKyNkZWZpbmUgSlNDX0RFRklORV9DQUxMX09QRVJB
VElPTlMoT3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwgLi4uKSB2b2lkIGFkZFNsb3dQYXRoQ2Fs
bEltcGwoQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzJiwgT3BlcmF0aW9uVHlw
ZSwgUmVzdWx0VHlwZSwgc3RkOjp0dXBsZTxfX1ZBX0FSR1NfXz4gYXJncykgb3ZlcnJpZGU7CiAg
ICAgRE9NSklUX1NMT1dfUEFUSF9DQUxMUyhKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUykKICN1
bmRlZiBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kb21qaXQvRE9NSklUUGF0Y2hwb2ludC5oCmluZGV4IDM4NjA4ZTI1NjlhMmFjZTY5MTBi
Mjg5MTkwN2Y1YmRiOGE5NTljNDMuLmJiOWY1ZTRmOWI4N2YyMTM3NTNmYWI4YTU5ZjAwNzk4ZGY2
OTBmMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUUGF0
Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUUGF0Y2hw
b2ludC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklU
IHsKIAogY2xhc3MgUGF0Y2hwb2ludFBhcmFtczsKIAotdHlwZWRlZiBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0IFBhdGNocG9pbnRHZW5lcmF0b3JGdW5jdGlvbihDQ2FsbEhlbHBlcnMmLCBjb25zdCBQ
YXRjaHBvaW50UGFyYW1zJik7Cit0eXBlZGVmIENDYWxsSGVscGVyczo6SnVtcExpc3QgUGF0Y2hw
b2ludEdlbmVyYXRvckZ1bmN0aW9uKENDYWxsSGVscGVycyYsIFBhdGNocG9pbnRQYXJhbXMmKTsK
IHR5cGVkZWYgU2hhcmVkVGFzazxQYXRjaHBvaW50R2VuZXJhdG9yRnVuY3Rpb24+IFBhdGNocG9p
bnRHZW5lcmF0b3I7CiAKIC8vIERPTUpJVCBwYXRjaHBvaW50IGlzIHRoZSB3YXkgdG8gaW5qZWN0
IGFuIG9wYXF1ZSBjb2RlIGdlbmVyYXRvciBpbnRvIERGRyBhbmQgRlRMLgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRQYXRjaHBvaW50UGFyYW1zLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaAppbmRl
eCBhZWVjZTFiN2UyOTZlZDE0YjQ2ZTRlZDY5MDg3MWQwMmEwNzY4MjM0Li5kODNiNmIwYmYxNjY0
MDViZmM0ZGM4ZTMxNTRkMTA5ZGVhMjhmMTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaApAQCAtNTUsMTMgKzU1LDEz
IEBAIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhdGNocG9pbnRQYXJhbXMpOwogICAgIH0KIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlw
ZW5hbWUuLi4gQXJndW1lbnRzPgotICAgIHZvaWQgYWRkU2xvd1BhdGhDYWxsKENDYWxsSGVscGVy
czo6SnVtcExpc3QgZnJvbSwgQ0NhbGxIZWxwZXJzJiBqaXQsIEZ1bmN0aW9uVHlwZSBmdW5jdGlv
biwgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpIGNvbnN0CisgICAg
dm9pZCBhZGRTbG93UGF0aENhbGwoQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBmcm9tLCBDQ2FsbEhl
bHBlcnMmIGppdCwgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLCBSZXN1bHRUeXBlIHJlc3VsdCwgQXJn
dW1lbnRzLi4uIGFyZ3VtZW50cykKICAgICB7CiAgICAgICAgIGFkZFNsb3dQYXRoQ2FsbEltcGwo
ZnJvbSwgaml0LCBmdW5jdGlvbiwgcmVzdWx0LCBzdGQ6Om1ha2VfdHVwbGUoYXJndW1lbnRzLi4u
KSk7CiAgICAgfQogCiBwcml2YXRlOgotI2RlZmluZSBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9O
UyhPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCAuLi4pIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1
YWwgdm9pZCBhZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExpc3QsIENDYWxs
SGVscGVycyYsIE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUsIHN0ZDo6dHVwbGU8X19WQV9BUkdT
X18+IGFyZ3MpIGNvbnN0ID0gMDsKKyNkZWZpbmUgSlNDX0RFRklORV9DQUxMX09QRVJBVElPTlMo
T3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwgLi4uKSBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFs
IHZvaWQgYWRkU2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0LCBDQ2FsbEhl
bHBlcnMmLCBPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCBzdGQ6OnR1cGxlPF9fVkFfQVJHU19f
PiBhcmdzKSA9IDA7CiAgICAgRE9NSklUX1NMT1dfUEFUSF9DQUxMUyhKU0NfREVGSU5FX0NBTExf
T1BFUkFUSU9OUykKICN1bmRlZiBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTERPTUpJVFBhdGNocG9pbnRQYXJhbXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExET01KSVRQYXRjaHBvaW50UGFyYW1z
LmNwcAppbmRleCBhYTIyNTU4NzgwNjBjNWY0ZmZlOWJlMWEzN2UzZjJjNDg1N2JiNDgxLi4xMDZl
MmU1NjE5OGI0YzFjY2U0ZDM0MTZiZWEwZTZiYjI4ZTM1NGViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTERPTUpJVFBhdGNocG9pbnRQYXJhbXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5jcHAKQEAg
LTUwLDcgKzUwLDcgQEAgc3RhdGljIHZvaWQgZGlzcGF0Y2goQ0NhbGxIZWxwZXJzJiBqaXQsIEZU
TDo6U3RhdGUqIHN0YXRlLCBjb25zdCBCMzo6U3RhY2ttYXBHZW4KIH0KIAogI2RlZmluZSBKU0Nf
REVGSU5FX0NBTExfT1BFUkFUSU9OUyhPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCAuLi4pIFwK
LSAgICB2b2lkIERPTUpJVFBhdGNocG9pbnRQYXJhbXM6OmFkZFNsb3dQYXRoQ2FsbEltcGwoQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCBmcm9tLCBDQ2FsbEhlbHBlcnMmIGppdCwgT3BlcmF0aW9uVHlw
ZSBvcGVyYXRpb24sIFJlc3VsdFR5cGUgcmVzdWx0LCBzdGQ6OnR1cGxlPF9fVkFfQVJHU19fPiBh
cmdzKSBjb25zdCBcCisgICAgdm9pZCBET01KSVRQYXRjaHBvaW50UGFyYW1zOjphZGRTbG93UGF0
aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExpc3QgZnJvbSwgQ0NhbGxIZWxwZXJzJiBqaXQs
IE9wZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBSZXN1bHRUeXBlIHJlc3VsdCwgc3RkOjp0dXBsZTxf
X1ZBX0FSR1NfXz4gYXJncykgXAogICAgIHsgXAogICAgICAgICBkaXNwYXRjaChqaXQsICZtX3N0
YXRlLCBtX3BhcmFtcywgbV9ub2RlLCBtX2V4Y2VwdGlvbnMsIGZyb20sIG9wZXJhdGlvbiwgcmVz
dWx0LCBhcmdzLCBzdGQ6Om1ha2VfaW5kZXhfc2VxdWVuY2U8c3RkOjp0dXBsZV9zaXplPGRlY2x0
eXBlKGFyZ3MpPjo6dmFsdWU+KCkpOyBcCiAgICAgfSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oCmluZGV4IDJkMTNlZWFh
N2Q1ODdjYjQ3ZTkzNzczMTI2ZmY3MDU5MzY0NDNmN2EuLjMzODdjOTA4NmUxMzY2MTI4NGY1Nzhj
NmNhNDQ0MmUyNzRjMGNmZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIERP
TUpJVFBhdGNocG9pbnRQYXJhbXMgOiBwdWJsaWMgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zIHsK
ICAgICB9CiAKIHByaXZhdGU6Ci0jZGVmaW5lIEpTQ19ERUZJTkVfQ0FMTF9PUEVSQVRJT05TKE9w
ZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUsIC4uLikgdm9pZCBhZGRTbG93UGF0aENhbGxJbXBsKEND
YWxsSGVscGVyczo6SnVtcExpc3QsIENDYWxsSGVscGVycyYsIE9wZXJhdGlvblR5cGUsIFJlc3Vs
dFR5cGUsIHN0ZDo6dHVwbGU8X19WQV9BUkdTX18+IGFyZ3MpIGNvbnN0IG92ZXJyaWRlOworI2Rl
ZmluZSBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUyhPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBl
LCAuLi4pIHZvaWQgYWRkU2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0LCBD
Q2FsbEhlbHBlcnMmLCBPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCBzdGQ6OnR1cGxlPF9fVkFf
QVJHU19fPiBhcmdzKSBvdmVycmlkZTsKICAgICBET01KSVRfU0xPV19QQVRIX0NBTExTKEpTQ19E
RUZJTkVfQ0FMTF9PUEVSQVRJT05TKQogI3VuZGVmIEpTQ19ERUZJTkVfQ0FMTF9PUEVSQVRJT05T
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yLmNwcAppbmRleCA5M2Q2NzBkNmM0MDJmNjI3Y2FmZTk1MWQyZjJiYWRhNzcxNzQz
YTc1Li5mYzRhYzMzNmVkZGNjNzRhOGVmODFlNThjZjgyYzhhOGE4ZjZhNGMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3Iu
Y3BwCkBAIC0yOTcsNiArMjk3LDI0IEBAIHZvaWQgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpy
ZXN0b3JlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChNYWNyb0Fzc2VtYmxlciYKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIH0KIAorUmVnaXN0ZXJTZXQg
U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpyZWdpc3RlcnNUb1NwaWxsRm9yQ0NhbGwoKSBjb25z
dAoreworICAgIFJlZ2lzdGVyU2V0IHJlZ2lzdGVyc1RvU3BpbGw7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKyAgICAgICAg
RlBSUmVnIHJlZyA9IEZQUkluZm86OnRvUmVnaXN0ZXIoaSk7CisgICAgICAgIGlmIChtX3NjcmF0
Y2hSZWdpc3RlcnMuZ2V0RlBSQnlJbmRleChpKSB8fCBtX3VzZWRSZWdpc3RlcnMuZ2V0KHJlZykp
CisgICAgICAgICAgICByZWdpc3RlcnNUb1NwaWxsLnNldChyZWcpOworICAgIH0KKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgewor
ICAgICAgICBHUFJSZWcgcmVnID0gR1BSSW5mbzo6dG9SZWdpc3RlcihpKTsKKyAgICAgICAgaWYg
KG1fc2NyYXRjaFJlZ2lzdGVycy5nZXRHUFJCeUluZGV4KGkpIHx8IG1fdXNlZFJlZ2lzdGVycy5n
ZXQocmVnKSkKKyAgICAgICAgICAgIHJlZ2lzdGVyc1RvU3BpbGwuc2V0KHJlZyk7CisgICAgfQor
CisgICAgcmVnaXN0ZXJzVG9TcGlsbC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpyZWdpc3RlcnNUb05v
dFNhdmVGb3JDQ2FsbCgpKTsKKyAgICByZXR1cm4gcmVnaXN0ZXJzVG9TcGlsbDsKK30KKwogfSAv
LyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmgKaW5kZXggNTgw
NWMyZjI5MzNkZTBlNTAxMjc3NWUxOWUzYzM1NGEwYTc1ZjM4Zi4uMzdjMWYwNmIzMmRlYzBiMjc5
OTM5YTdhOWMzZmNjODNiN2U3MWMyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oCkBAIC05Nyw2ICs5Nyw4IEBAIGNsYXNz
IFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciB7CiAgICAgc3RhdGljIHVuc2lnbmVkIHByZXNlcnZl
UmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoTWFjcm9Bc3NlbWJsZXImIGppdCwgY29uc3QgUmVnaXN0
ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIHVuc2lnbmVkIGV4dHJhUGFkZGluZ0luQnl0ZXMpOwogICAg
IHN0YXRpYyB2b2lkIHJlc3RvcmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKE1hY3JvQXNzZW1i
bGVyJiBqaXQsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBjb25zdCBSZWdpc3Rl
clNldCYgaWdub3JlLCB1bnNpZ25lZCBudW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQ
cmVzZXJ2YXRpb24sIHVuc2lnbmVkIGV4dHJhUGFkZGluZ0luQnl0ZXMpOwogCisgICAgUmVnaXN0
ZXJTZXQgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAg
UmVnaXN0ZXJTZXQgbV91c2VkUmVnaXN0ZXJzOwogICAgIFRlbXBSZWdpc3RlclNldCBtX2xvY2tl
ZFJlZ2lzdGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMjc0MTJkMzcyMzczMGNhNzVjM2I5
YzVhZjg4ZWQxZWE3M2ZlYTQ0Ny4uM2JmYTYyOGE2MGYwNjgzYTY5OTI5ZTcxNDY0MjI2ZTBlZWQ1
OTc3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTU1Nyw2ICs1NTcsMjIgQEAgY2xhc3MgRE9N
SklUTm9kZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNDOjpK
U1R5cGUoTGFzdEpTQ09iamVjdFR5cGUgKyAxKSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwog
ICAgIH0KIAorI2lmIEVOQUJMRShKSVQpCisgICAgc3RhdGljIFJlZjxET01KSVQ6OlBhdGNocG9p
bnQ+IGNoZWNrRE9NTm9kZSgpCisgICAgeworICAgICAgICBSZWY8RE9NSklUOjpQYXRjaHBvaW50
PiBwYXRjaHBvaW50ID0gRE9NSklUOjpQYXRjaHBvaW50OjpjcmVhdGUoKTsKKyAgICAgICAgcGF0
Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgRE9NSklUOjpQYXRj
aHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExp
c3QgZmFpbHVyZUNhc2VzOworICAgICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChqaXQuYnJh
bmNoOCgKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLAorICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhwYXJhbXNbMF0uZ3ByKCksIEpTQ2VsbDo6dHlw
ZUluZm9UeXBlT2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKEpTQzo6SlNUeXBlKExhc3RKU0NPYmplY3RUeXBlICsgMSkpKSk7CisgICAgICAgICAg
ICByZXR1cm4gZmFpbHVyZUNhc2VzOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIHBhdGNo
cG9pbnQ7CisgICAgfQorI2VuZGlmCisKICAgICBzdGF0aWMgRE9NSklUTm9kZSogY3JlYXRlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBET01KSVROb2RlKiBn
ZXR0ZXIgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxET01KSVROb2RlPih2bS5oZWFwLCBz
aXplb2YoRE9NSklUTm9kZSkpKSBET01KSVROb2RlKHZtLCBzdHJ1Y3R1cmUpOwpAQCAtNjA4LDI4
ICs2MjQsMTAxIEBAIGNsYXNzIERPTUpJVEdldHRlciA6IHB1YmxpYyBET01KSVROb2RlIHsKICNp
ZiBFTkFCTEUoSklUKQogICAgICAgICBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgp
IG92ZXJyaWRlCiAgICAgICAgIHsKLSAgICAgICAgICAgIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+
IHBhdGNocG9pbnQgPSBET01KSVQ6OlBhdGNocG9pbnQ6OmNyZWF0ZSgpOwotICAgICAgICAgICAg
cGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgRE9N
SklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsKLSAgICAgICAgICAgICAgICBmYWlsdXJlQ2Fz
ZXMuYXBwZW5kKGppdC5icmFuY2g4KAotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocGFy
YW1zWzBdLmdwcigpLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKLSAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNDOjpKU1R5cGUoTGFzdEpTQ09i
amVjdFR5cGUgKyAxKSkpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFpbHVyZUNhc2VzOwor
ICAgICAgICAgICAgcmV0dXJuIERPTU5vZGU6OmNoZWNrRE9NTm9kZSgpOworICAgICAgICB9CisK
KyAgICAgICAgUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlk
ZQorICAgICAgICB7CisgICAgICAgICAgICBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4g
cGF0Y2hwb2ludCA9IERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ6OmNyZWF0ZSgpOworICAgICAg
ICAgICAgcGF0Y2hwb2ludC0+cmVxdWlyZUdsb2JhbE9iamVjdCA9IGZhbHNlOworICAgICAgICAg
ICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgRE9NSklU
OjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVn
cyByZXN1bHRzID0gcGFyYW1zWzBdLmpzVmFsdWVSZWdzKCk7CisgICAgICAgICAgICAgICAgR1BS
UmVnIGRvbSA9IHBhcmFtc1sxXS5ncHIoKTsKKworICAgICAgICAgICAgICAgIHBhcmFtcy5hZGRT
bG93UGF0aENhbGwoaml0Lmp1bXAoKSwgaml0LCBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSgq
KShFeGVjU3RhdGUqLCB2b2lkKik+KFtdKEV4ZWNTdGF0ZSosIHZvaWQqIHBvaW50ZXIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihzdGF0aWNf
Y2FzdDxET01KSVRHZXR0ZXIqPihwb2ludGVyKS0+dmFsdWUoKSkpOworICAgICAgICAgICAgICAg
IH0pLCByZXN1bHRzLCBkb20pOworICAgICAgICAgICAgICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0KCk7CisKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuIHBhdGNo
cG9pbnQ7CiAgICAgICAgIH0KKyNlbmRpZgorICAgIH07CisKKyAgICBzdGF0aWMgRE9NSklUOjpH
ZXR0ZXJTZXR0ZXIqIGRvbUpJVE5vZGVHZXR0ZXJTZXR0ZXIoKQorICAgIHsKKyAgICAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPERPTUpJVE5vZGVET01KSVQ+IGdyYXBoOworICAgICAgICByZXR1
cm4gJmdyYXBoLmdldCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKKyAgICB7CisgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICAgICAgRE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVCA9IGRvbUpJVE5vZGVHZXR0ZXJTZXR0
ZXIoKTsKKyAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyKiBjdXN0b21HZXR0ZXJTZXR0ZXIgPSBD
dXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZG9tSklULT5nZXR0ZXIoKSwgZG9tSklULT5z
ZXR0ZXIoKSwgZG9tSklUKTsKKyAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiY3VzdG9tR2V0dGVyIiksIGN1c3RvbUdldHRlclNl
dHRlciwgUmVhZE9ubHkgfCBDdXN0b21BY2Nlc3Nvcik7CisgICAgfQorCisgICAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIGN1c3RvbUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQorICAgIHsKKyAgICAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgICAgIERPTUpJVE5vZGUqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PERPTUpJVE5vZGUq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgICAgIGlmICghdGhpc09iamVjdCkK
KyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0LT52YWx1ZSgpKSk7
CisgICAgfQorfTsKKworY2xhc3MgRE9NSklUR2V0dGVyQ29tcGxleCA6IHB1YmxpYyBET01KSVRO
b2RlIHsKK3B1YmxpYzoKKyAgICBET01KSVRHZXR0ZXJDb21wbGV4KFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9
CisKKyAgICBERUNMQVJFX0lORk87CisgICAgdHlwZWRlZiBET01KSVROb2RlIEJhc2U7CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3M7CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IFR5cGVJbmZvKEpTQzo6SlNUeXBlKExhc3RKU0NPYmplY3RUeXBlICsgMSksIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgRE9NSklUR2V0dGVyQ29tcGxleCog
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBET01K
SVRHZXR0ZXJDb21wbGV4KiBnZXR0ZXIgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxET01K
SVRHZXR0ZXJDb21wbGV4Pih2bS5oZWFwLCBzaXplb2YoRE9NSklUR2V0dGVyQ29tcGxleCkpKSBE
T01KSVRHZXR0ZXJDb21wbGV4KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBnZXR0ZXItPmZpbmlz
aENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIGdldHRlcjsKKyAgICB9CisKKyAgICBjbGFz
cyBET01KSVROb2RlRE9NSklUIDogcHVibGljIERPTUpJVDo6R2V0dGVyU2V0dGVyIHsKKyAgICBw
dWJsaWM6CisgICAgICAgIERPTUpJVE5vZGVET01KSVQoKQorICAgICAgICAgICAgOiBET01KSVQ6
OkdldHRlclNldHRlcihET01KSVRHZXR0ZXJDb21wbGV4OjpjdXN0b21HZXR0ZXIsIG51bGxwdHIs
IERPTUpJVE5vZGU6OmluZm8oKSkKKyAgICAgICAgeworICAgICAgICB9CisKKyNpZiBFTkFCTEUo
SklUKQorICAgICAgICBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRl
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBET01Ob2RlOjpjaGVja0RPTU5vZGUoKTsK
KyAgICAgICAgfQogCiAgICAgICAgIFJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBjYWxs
RE9NKCkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgUmVmPERPTUpJVDo6Q2FsbERP
TVBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50OjpjcmVh
dGUoKTsKICAgICAgICAgICAgIHBhdGNocG9pbnQtPnJlcXVpcmVHbG9iYWxPYmplY3QgPSBmYWxz
ZTsKLSAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAg
ICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBET01K
SVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEpTVmFsdWVS
ZWdzIHJlc3VsdHMgPSBwYXJhbXNbMF0uanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgICAgICAgICBH
UFJSZWcgZG9tID0gcGFyYW1zWzFdLmdwcigpOwogCiAgICAgICAgICAgICAgICAgcGFyYW1zLmFk
ZFNsb3dQYXRoQ2FsbChqaXQuanVtcCgpLCBqaXQsIHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVl
KCopKEV4ZWNTdGF0ZSosIHZvaWQqKT4oW10oRXhlY1N0YXRlKiwgdm9pZCogcG9pbnRlcikgewot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHN0YXRp
Y19jYXN0PERPTUpJVEdldHRlcio+KHBvaW50ZXIpLT52YWx1ZSgpKSk7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoc3RhdGljX2Nhc3Q8RE9NSklU
R2V0dGVyQ29tcGxleCo+KHBvaW50ZXIpLT52YWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAgfSks
IHJlc3VsdHMsIGRvbSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIENDYWxsSGVscGVyczo6SnVt
cExpc3QoKTsKIApAQCAtNjczLDYgKzc2Miw3IEBAIGNvbnN0IENsYXNzSW5mbyBJbXB1cmVHZXR0
ZXI6OnNfaW5mbyA9IHsgIkltcHVyZUdldHRlciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFUCiBj
b25zdCBDbGFzc0luZm8gQ3VzdG9tR2V0dGVyOjpzX2luZm8gPSB7ICJDdXN0b21HZXR0ZXIiLCAm
QmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEN1c3RvbUdldHRlcikgfTsKIGNv
bnN0IENsYXNzSW5mbyBET01KSVROb2RlOjpzX2luZm8gPSB7ICJET01KSVROb2RlIiwgJkJhc2U6
OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShET01KSVROb2RlKSB9OwogY29uc3QgQ2xh
c3NJbmZvIERPTUpJVEdldHRlcjo6c19pbmZvID0geyAiRE9NSklUR2V0dGVyIiwgJkJhc2U6OnNf
aW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShET01KSVRHZXR0ZXIpIH07Citjb25zdCBDbGFz
c0luZm8gRE9NSklUR2V0dGVyQ29tcGxleDo6c19pbmZvID0geyAiRE9NSklUR2V0dGVyQ29tcGxl
eCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRE9NSklUR2V0dGVyQ29t
cGxleCkgfTsKIGNvbnN0IENsYXNzSW5mbyBSdW50aW1lQXJyYXk6OnNfaW5mbyA9IHsgIlJ1bnRp
bWVBcnJheSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoUnVudGltZUFy
cmF5KSB9OwogY29uc3QgQ2xhc3NJbmZvIFNpbXBsZU9iamVjdDo6c19pbmZvID0geyAiU2ltcGxl
T2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShTaW1wbGVPYmpl
Y3QpIH07CiBzdGF0aWMgYm9vbCB0ZXN0MjYyQXN5bmNQYXNzZWQgeyBmYWxzZSB9OwpAQCAtNzAz
LDYgKzc5Myw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
Q3JlYXRlSW1wdXJlR2V0dGVyKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVDdXN0b21HZXR0ZXJPYmplY3QoRXhlY1N0YXRlKik7
CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURPTUpJ
VE5vZGVPYmplY3QoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkNyZWF0ZURPTUpJVEdldHRlck9iamVjdChFeGVjU3RhdGUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVy
Q29tcGxleE9iamVjdChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uQ3JlYXRlQnVpbHRpbihFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlR2xvYmFsT2JqZWN0KEV4ZWNTdGF0
ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRJbXB1
cmVHZXR0ZXJEZWxlZ2F0ZShFeGVjU3RhdGUqKTsKQEAgLTk4OSw2ICsxMDgwLDcgQEAgY2xhc3Mg
R2xvYmFsT2JqZWN0IDogcHVibGljIEpTR2xvYmFsT2JqZWN0IHsKICAgICAgICAgYWRkRnVuY3Rp
b24odm0sICJjcmVhdGVDdXN0b21HZXR0ZXJPYmplY3QiLCBmdW5jdGlvbkNyZWF0ZUN1c3RvbUdl
dHRlck9iamVjdCwgMCk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiY3JlYXRlRE9NSklUTm9k
ZU9iamVjdCIsIGZ1bmN0aW9uQ3JlYXRlRE9NSklUTm9kZU9iamVjdCwgMCk7CiAgICAgICAgIGFk
ZEZ1bmN0aW9uKHZtLCAiY3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0IiwgZnVuY3Rpb25DcmVhdGVE
T01KSVRHZXR0ZXJPYmplY3QsIDApOworICAgICAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZURP
TUpJVEdldHRlckNvbXBsZXhPYmplY3QiLCBmdW5jdGlvbkNyZWF0ZURPTUpJVEdldHRlckNvbXBs
ZXhPYmplY3QsIDApOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZUJ1aWx0aW4iLCBm
dW5jdGlvbkNyZWF0ZUJ1aWx0aW4sIDIpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0
ZUdsb2JhbE9iamVjdCIsIGZ1bmN0aW9uQ3JlYXRlR2xvYmFsT2JqZWN0LCAwKTsKICAgICAgICAg
YWRkRnVuY3Rpb24odm0sICJzZXRJbXB1cmVHZXR0ZXJEZWxlZ2F0ZSIsIGZ1bmN0aW9uU2V0SW1w
dXJlR2V0dGVyRGVsZWdhdGUsIDIpOwpAQCAtMTUwOSw2ICsxNjAxLDE0IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVET01KSVRHZXR0ZXJPYmplY3QoRXhlY1N0
YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURPTUpJVEdldHRlckNvbXBs
ZXhPYmplY3QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMp
OworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gRE9NSklUR2V0dGVyQ29tcGxleDo6Y3JlYXRl
U3RydWN0dXJlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwganNOdWxs
KCkpOworICAgIERPTUpJVEdldHRlckNvbXBsZXgqIHJlc3VsdCA9IERPTUpJVEdldHRlckNvbXBs
ZXg6OmNyZWF0ZShleGVjLT52bSgpLCBzdHJ1Y3R1cmUpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
blNldEltcHVyZUdldHRlckRlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2tI
b2xkZXIgbG9jayhleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01K
SVRIZWxwZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSGVscGVycy5oCmluZGV4
IGRiZTUzNjVmODZmZWNkMWJjMmU3Mjc2MTNmNzU2MDViMTZmMzgyNTIuLjE4MDZiMmFmYTFjNDcx
YzAzMDQ2MzBiODAzOGYwMzIzZjZlMzYxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bWppdC9ET01KSVRIZWxwZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEhl
bHBlcnMuaApAQCAtNTksNyArNTksNyBAQCB2b2lkIHRyeUxvb2tVcFdyYXBwZXJDYWNoZShDQ2Fs
bEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZmFpbHVyZUNhcwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBXcmFwcGVkVHlwZSwgdHlwZW5hbWUgVG9KU0Z1bmN0aW9uPgotdm9p
ZCB0b1dyYXBwZXIoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEpTQzo6RE9NSklUOjpQYXRjaHBv
aW50UGFyYW1zJiBwYXJhbXMsIEdQUlJlZyB3cmFwcGVkLCBHUFJSZWcgZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlUmVncyByZXN1bHQsIFRvSlNGdW5jdGlvbiBmdW5jdGlvbiwgSlNDOjpKU1ZhbHVlIGds
b2JhbE9iamVjdENvbnN0YW50KQordm9pZCB0b1dyYXBwZXIoQ0NhbGxIZWxwZXJzJiBqaXQsIEpT
Qzo6RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMsIEdQUlJlZyB3cmFwcGVkLCBHUFJS
ZWcgZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlUmVncyByZXN1bHQsIFRvSlNGdW5jdGlvbiBmdW5jdGlv
biwgSlNDOjpKU1ZhbHVlIGdsb2JhbE9iamVjdENvbnN0YW50KQogewogICAgIEFTU0VSVCh3cmFw
cGVkICE9IHJlc3VsdC5wYXlsb2FkR1BSKCkpOwogICAgIEFTU0VSVChnbG9iYWxPYmplY3QgIT0g
cmVzdWx0LnBheWxvYWRHUFIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQv
SlNOb2RlRE9NSklULmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3Bw
CmluZGV4IGI1MGQyNGU5YTMzYzVhM2ViNzhiOGI3MTUyZDgzODNiZWY3ZGQxMzUuLmQ4ZjU5MmM2
NGFmMWI0MmNkYjhhZWQ4NGY4Mzc1NmE1YzgyZjFhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9K
U05vZGVET01KSVQuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyBSZWY8RE9NSklUOjpDYWxs
RE9NUGF0Y2hwb2ludD4gY3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2VzcyhwdHJkaWZmX3Qgb2Zm
CiB7CiAgICAgUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBET01K
SVQ6OkNhbGxET01QYXRjaHBvaW50OjpjcmVhdGUoKTsKICAgICBwYXRjaHBvaW50LT5udW1HUFNj
cmF0Y2hSZWdpc3RlcnMgPSAxOwotICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7
CisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgRE9N
SklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVz
dWx0ID0gcGFyYW1zWzBdLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEdQUlJlZyBnbG9iYWxPYmpl
Y3QgPSBwYXJhbXNbMV0uZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBub2RlID0gcGFyYW1zWzJdLmdw
cigpOwpAQCAtODQsNyArODQsNyBAQCBzdGF0aWMgUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9p
bnQ+IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3MocHRyZGlmZl90IG9mZgogc3RhdGljIFJl
ZjxET01KSVQ6OlBhdGNocG9pbnQ+IGNoZWNrTm9kZSgpCiB7CiAgICAgUmVmPERPTUpJVDo6UGF0
Y2hwb2ludD4gcGF0Y2hwb2ludCA9IERPTUpJVDo6UGF0Y2hwb2ludDo6Y3JlYXRlKCk7Ci0gICAg
cGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgRE9N
SklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKKyAgICBwYXRjaHBvaW50LT5zZXRHZW5l
cmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBh
cmFtcykgewogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsKICAg
ICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChET01KSVRIZWxwZXJzOjpicmFuY2hJZk5vdE5vZGUo
aml0LCBwYXJhbXNbMF0uZ3ByKCkpKTsKICAgICAgICAgcmV0dXJuIGZhaWx1cmVDYXNlczsKQEAg
LTE1Nyw3ICsxNTcsNyBAQCBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gTm9kZU5vZGVU
eXBlRE9NSklUOjpjYWxsRE9NKCkKIHsKICAgICBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2lu
dD4gcGF0Y2hwb2ludCA9IERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ6OmNyZWF0ZSgpOwogICAg
IHBhdGNocG9pbnQtPnJlcXVpcmVHbG9iYWxPYmplY3QgPSBmYWxzZTsKLSAgICBwYXRjaHBvaW50
LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBET01KSVQ6OlBhdGNo
cG9pbnRQYXJhbXMmIHBhcmFtcykgeworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0o
Q0NhbGxIZWxwZXJzJiBqaXQsIERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CiAg
ICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdCA9IHBhcmFtc1swXS5qc1ZhbHVlUmVncygpOwogICAg
ICAgICBHUFJSZWcgbm9kZSA9IHBhcmFtc1sxXS5ncHIoKTsKICAgICAgICAgaml0LmxvYWQ4KEND
YWxsSGVscGVyczo6QWRkcmVzcyhub2RlLCBKU0M6OkpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0
KCkpLCByZXN1bHQucGF5bG9hZEdQUigpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291552</attachid>
            <date>2016-10-13 18:23:50 -0700</date>
            <delta_ts>2016-10-13 22:14:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163223-20161013182023.patch</filename>
            <type>text/plain</type>
            <size>45189</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MTk1N2ZlNzFlZjI0ODFjN2M0ZTY4OTI4MzBhM2U1MjFiMmQxNWFhLi41OGFjNjJhYzY2NjA3ZjI5
Y2YyNDg3NmQ5ODQ0ZDEzM2FjZDg5MDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NSBAQAorMjAxNi0xMC0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRE9NSklUXSBVc2UgRE9NSklUOjpQYXRjaHBvaW50IGluIElDCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyMjMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogYnl0ZWNvZGUvRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6U2xvd1BhdGhDYWxsR2VuZXJhdG9yV2l0aEFyZ3Vt
ZW50czo6U2xvd1BhdGhDYWxsR2VuZXJhdG9yV2l0aEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6
OlNsb3dQYXRoQ2FsbEdlbmVyYXRvcldpdGhBcmd1bWVudHM6OmdlbmVyYXRlSW1wbCk6CisgICAg
ICAgIChKU0M6OkRPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zOjplbWl0U2xvd1BhdGhD
YWxscyk6CisgICAgICAgICogYnl0ZWNvZGUvRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJh
bXMuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdET01KSVRQYXRj
aHBvaW50UGFyYW1zLmguCisgICAgICAgIChKU0M6OkRPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50
UGFyYW1zOjpET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcyk6CisgICAgICAgIChKU0M6
OkRPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zOjpTbG93UGF0aENhbGxHZW5lcmF0b3I6
On5TbG93UGF0aENhbGxHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGlj
QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpjYWxjdWxh
dGVMaXZlUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhhbmRsaW5nKToKKyAgICAgICAgKEpT
Qzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9y
cGhpY0FjY2Vzcy5oOgorICAgICAgICAqIGRmZy9ERkdET01KSVRQYXRjaHBvaW50UGFyYW1zLmNw
cDoKKyAgICAgICAgKiBkZmcvREZHRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oOgorICAgICAgICAq
IGRvbWppdC9ET01KSVRQYXRjaHBvaW50Lmg6CisgICAgICAgICogZG9taml0L0RPTUpJVFBhdGNo
cG9pbnRQYXJhbXMuaDoKKyAgICAgICAgKEpTQzo6RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zOjph
ZGRTbG93UGF0aENhbGwpOgorICAgICAgICAqIGZ0bC9GVExET01KSVRQYXRjaHBvaW50UGFyYW1z
LmNwcDoKKyAgICAgICAgKiBmdGwvRlRMRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oOgorICAgICAg
ICAqIGppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlNDOjpTY3Jh
dGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnJlZ2lzdGVyc1RvU3BpbGxGb3JDQ2FsbCk6CisgICAgICAg
ICogaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oOgorICAgICAgICAqIGpzYy5jcHA6Cisg
ICAgICAgIChXVEY6OkRPTUpJVE5vZGU6OmNoZWNrRE9NSklUTm9kZSk6CisgICAgICAgIChXVEY6
OkRPTUpJVEdldHRlcjo6ZG9tSklUTm9kZUdldHRlclNldHRlcik6CisgICAgICAgIChXVEY6OkRP
TUpJVEdldHRlcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXI6
OmN1c3RvbUdldHRlcik6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlckNvbXBsZXg6OkRPTUpJ
VEdldHRlckNvbXBsZXgpOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXJDb21wbGV4OjpjcmVh
dGVTdHJ1Y3R1cmUpOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXJDb21wbGV4OjpjcmVhdGUp
OgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXJDb21wbGV4OjpET01KSVROb2RlRE9NSklUOjpE
T01KSVROb2RlRE9NSklUKToKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAoZnVuY3Rpb25DcmVhdGVET01KSVRHZXR0ZXJDb21wbGV4T2JqZWN0KToKKwog
MjAxNi0xMC0xMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVu
YW1lIHZhcmlhYmxlcyBpbiBhcnJheVByb3RvRnVuY1NwbGljZSgpIHRvIG1hdGNoIG5hbWVzIGlu
IHRoZSBzcGVjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI5NmUzOTdiZDdkZjAzNmIxMTkyZWVmYjg3MGUzMWQy
ZTU2MjExNDkuLjAyYTc4YmVmNzhmZmE4OWUzZTBhMjkxOTMwYzc3MjE2Nzc1MzZkOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNi0xMC0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRE9NSklUXSBVc2UgRE9NSklUOjpQYXRjaHBv
aW50IGluIElDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjMyMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGRvbWppdC9ET01KSVRIZWxwZXJzLmg6CisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxw
ZXJzOjp0b1dyYXBwZXIpOgorICAgICAgICAqIGRvbWppdC9KU05vZGVET01KSVQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2Vzcyk6CisgICAgICAgIChX
ZWJDb3JlOjpjaGVja05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZU5vZGVUeXBlRE9NSklU
OjpjYWxsRE9NKToKKwogMjAxNi0xMC0xMiAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtNb2Rlcm4gTWVkaWEgQ29udHJvbHNdIFNsaWRlcnM6IHNjcnViYmVy
IGFuZCB2b2x1bWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA1N2NlZmY2
NjE0NmI5OThjNTEzYmEwN2UxOTZiYzBmY2NhYmMyZDlmLi4wZGUxOTVhMDcxNjAwMGZlMWZlNzhm
YmNlNmNiNWRkZmI3ZjMwZjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0yMDIsNiArMjAyLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBieXRlY29k
ZS9Db21wbGV4R2V0U3RhdHVzLmNwcAogICAgIGJ5dGVjb2RlL0RhdGFGb3JtYXQuY3BwCiAgICAg
Ynl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCisgICAgYnl0ZWNvZGUvRE9NSklUQWNjZXNzQ2Fz
ZVBhdGNocG9pbnRQYXJhbXMuY3BwCiAgICAgYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmNwcAogICAgIGJ5dGVjb2RlL0RlZmVycmVkU291cmNlRHVtcC5jcHAKICAgICBieXRl
Y29kZS9FeGVjdXRpb25Db3VudGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBkNDRiMmM0ZDMyNjJkNDE5NTE0YzkxNGNlZGJmM2M1YWE5ZWZmM2ZhLi40ZWMzZDFmY2U5Yjdl
MjE3NmFlYzRkMjY1ZDVlY2Q0Yzk0NTUzMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjExMCw2ICsyMTEwLDggQEAKIAkJRTM5REE0QTYxQjdFOEI3QzAwODRGMzNBIC8qIEpT
TW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi87
IH07CiAJCUUzOURBNEE3MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTUxQjdFOEI3
QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNBNDIxNDMxRDZGNTg5MzAwMDdDNjE3IC8qIFByZWNp
c2VKdW1wVGFyZ2V0c0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzQTQyMTQyMUQ2RjU4OEYwMDA3QzYxNyAvKiBQcmVjaXNlSnVtcFRhcmdl
dHNJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJRTNCRkQwQkIxREFGODA4NzAwNjVERUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBv
aW50UGFyYW1zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzQkZEMEI5MURBRjgwN0MwMDY1REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2lu
dFBhcmFtcy5jcHAgKi87IH07CisJCUUzQkZEMEJDMURBRjgwOEUwMDY1REVBMiAvKiBET01KSVRB
Y2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNCRkQwQkExREFGODA3QzAwNjVERUEyIC8qIERPTUpJVEFjY2Vz
c0Nhc2VQYXRjaHBvaW50UGFyYW1zLmggKi87IH07CiAJCUUzQzA4RTNDMURBNDFCODEwMDM5NDc4
RiAvKiBET01KSVRQYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFM0MwOEUzQjFEQTQxQjdCMDAzOTQ3OEYgLyogRE9NSklUUGF0Y2hwb2lu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUz
RDIzOUM4MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM2MUI4MjlDMUMw
MEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLzsgfTsKIAkJRTNEMjM5QzkxQjgy
OUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBK
U01vZHVsZUVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTQ0MTUsNiArNDQxNyw4IEBACiAJCUUzOURBNEE0MUI3RThCN0MwMDg0
RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU01vZHVsZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZVJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFM0E0MjE0MjFENkY1ODhGMDAwN0M2MTcgLyogUHJlY2lzZUp1bXBUYXJn
ZXRzSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcmVjaXNlSnVt
cFRhcmdldHNJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQkZEMEI5
MURBRjgwN0MwMDY1REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01KSVRBY2Nlc3NDYXNlUGF0
Y2hwb2ludFBhcmFtcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQkZEMEJB
MURBRjgwN0MwMDY1REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2lu
dFBhcmFtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0MwOEUzQjFEQTQxQjdC
MDAzOTQ3OEYgLyogRE9NSklUUGF0Y2hwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBET01KSVRQYXRjaHBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzQ0IxRTI0MURBNzU0MEEwMEZBMUU1NiAvKiBET01KSVRTbG93UGF0aENhbGxzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVFNsb3dQYXRoQ2FsbHMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9k
dWxlRW52aXJvbm1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNNb2R1bGVFbnZpcm9ubWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02
ODEyLDYgKzY4MTYsOCBAQAogCQkJCTBGMEI4M0E1MTRCQ0Y1MDQwMDg4NUI0RiAvKiBDb2RlVHlw
ZS5oICovLAogCQkJCTBGNkZDNzRFMTk2MTEwQTgwMEUxRDAyRCAvKiBDb21wbGV4R2V0U3RhdHVz
LmNwcCAqLywKIAkJCQkwRjZGQzc0RjE5NjExMEE4MDBFMUQwMkQgLyogQ29tcGxleEdldFN0YXR1
cy5oICovLAorCQkJCUUzQkZEMEI5MURBRjgwN0MwMDY1REVBMiAvKiBET01KSVRBY2Nlc3NDYXNl
UGF0Y2hwb2ludFBhcmFtcy5jcHAgKi8sCisJCQkJRTNCRkQwQkExREFGODA3QzAwNjVERUEyIC8q
IERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmggKi8sCiAJCQkJNjJFM0Q1RUYxQjhE
MEI3MzAwQjg2OEJCIC8qIERhdGFGb3JtYXQuY3BwICovLAogCQkJCTBGNDI2QTRBMTQ2MENENkIw
MDEzMUY4RiAvKiBEYXRhRm9ybWF0LmggKi8sCiAJCQkJMEZDNzEyREMxN0NEODc3ODAwOENDOTND
IC8qIERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAgKi8sCkBAIC03NTEzLDYgKzc1MTks
NyBAQAogCQkJCTBGODM2NEI3MTY0QjBDMTEwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5REM1MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRl
Q29kZVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNTZDMzYxNjI3QjBBRDAwN0YyNzgz
IC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAq
LywKKwkJCQlFM0JGRDBCQzFEQUY4MDhFMDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNo
cG9pbnRQYXJhbXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkRCOUFEMUFCMEZCQzYwMDBCNTdF
NSAvKiBERkdDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZDOTU4MTRFRjkwQTIwMEM3MjUzMiAvKiBERkdD
RkFQaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDA3LDYgKzk0MTQsNyBAQAogCQkJCUUzNUUw
MzVGMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTUzMjQzOEIxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3Rv
clByb3RvY29sT2JqZWN0cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTBFNEI2MTE4ODA5REQ1
MDA2OEE0NkQgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUUzQkZEMEJCMURBRjgwODcwMDY1REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBh
cmFtcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTkzQ0Y4MjE4NDAzNzcxMDBCRkNFMjcgLyog
SW5zcGVjdG9yVmFsdWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUNGMTA3RUMzNzYw
MDQyN0E0OCAvKiBJbnRlcm5hbEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MjlE
N0Q0MEVEMjEyODIwMEI4OTYxOSAvKiBJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ET01KSVRBY2Nlc3NDYXNl
UGF0Y2hwb2ludFBhcmFtcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRE9N
SklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0ZDA2OTZhNzI0
ZWQ1MmUyOTY0NjBiYzQ5YWE2Yjc2ZWU3ZmVkNGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMu
Y3BwCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRPTUpJVEFjY2Vzc0Nh
c2VQYXRjaHBvaW50UGFyYW1zLmgiCisKKyNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCisjaW5jbHVk
ZSAiUG9seW1vcnBoaWNBY2Nlc3MuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgor
CisjaWYgRU5BQkxFKEpJVCkKKworbmFtZXNwYWNlIEpTQyB7CisKK3RlbXBsYXRlPHR5cGVuYW1l
IEp1bXBUeXBlLCB0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5
cGVuYW1lLi4uIEFyZ3VtZW50cz4KK2NsYXNzIFNsb3dQYXRoQ2FsbEdlbmVyYXRvcldpdGhBcmd1
bWVudHMgOiBwdWJsaWMgRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXM6OlNsb3dQYXRo
Q2FsbEdlbmVyYXRvciB7CitwdWJsaWM6CisgICAgU2xvd1BhdGhDYWxsR2VuZXJhdG9yV2l0aEFy
Z3VtZW50cyhKdW1wVHlwZSBmcm9tLCBDQ2FsbEhlbHBlcnM6OkxhYmVsIHRvLCBGdW5jdGlvblR5
cGUgZnVuY3Rpb24sIFJlc3VsdFR5cGUgcmVzdWx0LCBzdGQ6OnR1cGxlPEFyZ3VtZW50cy4uLj4g
YXJndW1lbnRzKQorICAgICAgICA6IG1fZnJvbShmcm9tKQorICAgICAgICAsIG1fdG8odG8pCisg
ICAgICAgICwgbV9mdW5jdGlvbihmdW5jdGlvbikKKyAgICAgICAgLCBtX3Jlc3VsdChyZXN1bHQp
CisgICAgICAgICwgbV9hcmd1bWVudHMoYXJndW1lbnRzKQorICAgIHsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTxzaXplX3QuLi4gQXJndW1lbnRzSW5kZXg+CisgICAgdm9pZCBnZW5lcmF0ZUltcGwo
Vk0mIHZtLCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBSZWdpc3RlclNldCYg
dXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiBqaXQsIHN0ZDo6aW5kZXhfc2VxdWVuY2U8QXJn
dW1lbnRzSW5kZXguLi4+KQorICAgIHsKKyAgICAgICAgc3RhdGUucHJlc2VydmVMaXZlUmVnaXN0
ZXJzVG9TdGFja0ZvckNhbGwodXNlZFJlZ2lzdGVycyk7CisKKyAgICAgICAgaml0LnN0b3JlMzIo
CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzdGF0ZS5jYWxsU2l0ZUlu
ZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmdPck9yaWdpbmFsKCkuYml0cygpKSwKKyAgICAgICAgICAg
IENDYWxsSGVscGVyczo6dGFnRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudCkpKTsKKworICAgICAgICBqaXQubWFrZVNwYWNlT25TdGFj
a0ZvckNDYWxsKCk7CisKKyAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCAmdm0udG9wQ2FsbEZyYW1lKTsKKworICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5
LCB3ZSBkbyBub3QgY2hlY2sgYW55IEFSTSBFQUJJIC8gU0g0IHRoaW5ncyBoZXJlLgorICAgICAg
ICAvLyBCdXQgaXQgaXMgT0sgYmVjYXVzZSBhIGNvbXBpbGUgZXJyb3IgaGFwcGVucyB3aGVuIHlv
dSBwYXNzIEpTVmFsdWVSZWdzIGFzIGFuIGFyZ3VtZW50LgorICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMDk5CisgICAgICAgIGppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoc3RkOjpnZXQ8QXJndW1lbnRzSW5kZXg+KG1fYXJndW1lbnRz
KS4uLik7CisKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIG9wZXJhdGlvbkNhbGwgPSBqaXQu
Y2FsbCgpOworICAgICAgICBhdXRvIGZ1bmN0aW9uID0gbV9mdW5jdGlvbjsKKyAgICAgICAgaml0
LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAgICAgICAg
bGlua0J1ZmZlci5saW5rKG9wZXJhdGlvbkNhbGwsIEZ1bmN0aW9uUHRyKGZ1bmN0aW9uKSk7Cisg
ICAgICAgIH0pOworCisgICAgICAgIGppdC5zZXR1cFJlc3VsdHMobV9yZXN1bHQpOworICAgICAg
ICBqaXQucmVjbGFpbVNwYWNlT25TdGFja0ZvckNDYWxsKCk7CisKKyAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpKdW1wIG5vRXhjZXB0aW9uID0gaml0LmVtaXRFeGNlcHRpb25DaGVjayhDQ2FsbEhlbHBl
cnM6OkludmVydGVkRXhjZXB0aW9uQ2hlY2spOworCisgICAgICAgIHN0YXRlLnJlc3RvcmVMaXZl
UmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbFdpdGhUaHJvd25FeGNlcHRpb24oKTsKKyAgICAgICAg
c3RhdGUuZW1pdEV4cGxpY2l0RXhjZXB0aW9uSGFuZGxlcigpOworCisgICAgICAgIG5vRXhjZXB0
aW9uLmxpbmsoJmppdCk7CisgICAgICAgIGJvb2wgaXNHZXR0ZXIgPSB0cnVlOworICAgICAgICBz
dGF0ZS5yZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoaXNHZXR0ZXIpOworICAg
IH0KKworICAgIHZvaWQgZ2VuZXJhdGUoVk0mIHZtLCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0
YXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJiBqaXQp
IG92ZXJyaWRlCisgICAgeworICAgICAgICBtX2Zyb20ubGluaygmaml0KTsKKyAgICAgICAgZ2Vu
ZXJhdGVJbXBsKHZtLCBzdGF0ZSwgdXNlZFJlZ2lzdGVycywgaml0LCBzdGQ6Om1ha2VfaW5kZXhf
c2VxdWVuY2U8c3RkOjp0dXBsZV9zaXplPHN0ZDo6dHVwbGU8QXJndW1lbnRzLi4uPj46OnZhbHVl
PigpKTsKKyAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8obV90bywgJmppdCk7CisgICAgfQorCitw
cm90ZWN0ZWQ6CisgICAgSnVtcFR5cGUgbV9mcm9tOworICAgIENDYWxsSGVscGVyczo6TGFiZWwg
bV90bzsKKyAgICBGdW5jdGlvblR5cGUgbV9mdW5jdGlvbjsKKyAgICBSZXN1bHRUeXBlIG1fcmVz
dWx0OworICAgIHN0ZDo6dHVwbGU8QXJndW1lbnRzLi4uPiBtX2FyZ3VtZW50czsKK307CisKKyNk
ZWZpbmUgSlNDX0RFRklORV9DQUxMX09QRVJBVElPTlMoT3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlw
ZSwgLi4uKSBcCisgICAgdm9pZCBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtczo6YWRk
U2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGZyb20sIENDYWxsSGVscGVy
cyYgaml0LCBPcGVyYXRpb25UeXBlIG9wZXJhdGlvbiwgUmVzdWx0VHlwZSByZXN1bHQsIHN0ZDo6
dHVwbGU8X19WQV9BUkdTX18+IGFyZ3MpIFwKKyAgICB7IFwKKyAgICAgICAgQ0NhbGxIZWxwZXJz
OjpMYWJlbCB0byA9IGppdC5sYWJlbCgpOyBcCisgICAgICAgIG1fZ2VuZXJhdG9ycy5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRoQXJndW1lbnRzPENDYWxs
SGVscGVyczo6SnVtcExpc3QsIE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUsIF9fVkFfQVJHU19f
Pj4oZnJvbSwgdG8sIG9wZXJhdGlvbiwgcmVzdWx0LCBhcmdzKSk7IFwKKyAgICB9IFwKKworRE9N
SklUX1NMT1dfUEFUSF9DQUxMUyhKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUykKKyN1bmRlZiBK
U0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUworCit2b2lkIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBv
aW50UGFyYW1zOjplbWl0U2xvd1BhdGhDYWxscyhWTSYgdm0sIEFjY2Vzc0dlbmVyYXRpb25TdGF0
ZSYgc3RhdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMm
IGppdCkKK3sKKyAgICBmb3IgKGF1dG8mIGdlbmVyYXRvciA6IG1fZ2VuZXJhdG9ycykKKyAgICAg
ICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZSh2bSwgc3RhdGUsIHVzZWRSZWdpc3RlcnMsIGppdCk7Cit9
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9ET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjFkNTUxODRmNTY0Y2U3NGQ1NjQxZWRiMGJiMDViYjkxOTA5MGVhMWEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRE9NSklUQWNjZXNzQ2FzZVBh
dGNocG9pbnRQYXJhbXMuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoSklUKQor
CisjaW5jbHVkZSAiRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oIgorCituYW1lc3BhY2UgSlNDIHsK
Kworc3RydWN0IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTsKKworY2xhc3MgRE9NSklUQWNjZXNzQ2Fz
ZVBhdGNocG9pbnRQYXJhbXMgOiBwdWJsaWMgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zIHsKK3B1
YmxpYzoKKyAgICBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcyhWZWN0b3I8RE9NSklU
OjpWYWx1ZT4mJiByZWdzLCBWZWN0b3I8R1BSUmVnPiYmIGdwU2NyYXRjaCwgVmVjdG9yPEZQUlJl
Zz4mJiBmcFNjcmF0Y2gpCisgICAgICAgIDogRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zKFdURk1v
dmUocmVncyksIFdURk1vdmUoZ3BTY3JhdGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gpKQorICAgIHsK
KyAgICB9CisKKyAgICBjbGFzcyBTbG93UGF0aENhbGxHZW5lcmF0b3IgeworICAgIHB1YmxpYzoK
KyAgICAgICAgdmlydHVhbCB+U2xvd1BhdGhDYWxsR2VuZXJhdG9yKCkgeyB9CisgICAgICAgIHZp
cnR1YWwgdm9pZCBnZW5lcmF0ZShWTSYsIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IFJl
Z2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDQ2FsbEhlbHBlcnMmKSA9IDA7CisgICAgfTsKKwor
ICAgIHZvaWQgZW1pdFNsb3dQYXRoQ2FsbHMoVk0mLCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmLCBj
b25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ0NhbGxIZWxwZXJzJik7CisKK3ByaXZh
dGU6CisjZGVmaW5lIEpTQ19ERUZJTkVfQ0FMTF9PUEVSQVRJT05TKE9wZXJhdGlvblR5cGUsIFJl
c3VsdFR5cGUsIC4uLikgdm9pZCBhZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVt
cExpc3QsIENDYWxsSGVscGVycyYsIE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUsIHN0ZDo6dHVw
bGU8X19WQV9BUkdTX18+IGFyZ3MpIG92ZXJyaWRlOworICAgIERPTUpJVF9TTE9XX1BBVEhfQ0FM
TFMoSlNDX0RFRklORV9DQUxMX09QRVJBVElPTlMpCisjdW5kZWYgSlNDX0RFRklORV9DQUxMX09Q
RVJBVElPTlMKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoQ2FsbEdlbmVyYXRv
cj4+IG1fZ2VuZXJhdG9yczsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAppbmRleCA5YThhOGU1
MjAwOThhOTZhZTZkYzg1MDlmMDJmMTUzMWEwMDEyNTYwLi5lODhhNWEwODkyZjYzMTM5YjNjZmFk
MDE1ZmFmYjdlM2I0NWUxNTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAgLTMxLDYgKzMxLDggQEAKICNpbmNsdWRl
ICJCaW5hcnlTd2l0Y2guaCIKICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKKyNpbmNsdWRlICJET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5o
IgorI2luY2x1ZGUgIkRPTUpJVENhbGxET01QYXRjaHBvaW50LmgiCiAjaW5jbHVkZSAiRGlyZWN0
QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVhcC5o
IgpAQCAtNzQsNyArNzYsMTEgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnN1Y2NlZWQo
KQogCiB2b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6Y2FsY3VsYXRlTGl2ZVJlZ2lzdGVyc0Zv
ckNhbGxBbmRFeGNlcHRpb25IYW5kbGluZyhjb25zdCBSZWdpc3RlclNldCYgZXh0cmEpCiB7Cisg
ICAgaWYgKG1fZXh0cmFMaXZlUmVnaXN0ZXJzRm9yQ2FsbCAhPSBleHRyYSkKKyAgICAgICAgbV9j
YWxjdWxhdGVkUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhhbmRsaW5nID0gZmFsc2U7CisK
ICAgICBpZiAoIW1fY2FsY3VsYXRlZFJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRpb25IYW5kbGlu
ZykgeworICAgICAgICBtX2V4dHJhTGl2ZVJlZ2lzdGVyc0ZvckNhbGwgPSBleHRyYTsKICAgICAg
ICAgbV9jYWxjdWxhdGVkUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhhbmRsaW5nID0gdHJ1
ZTsKIAogICAgICAgICBtX2xpdmVSZWdpc3RlcnNUb1ByZXNlcnZlQXRFeGNlcHRpb25IYW5kbGlu
Z0NhbGxTaXRlID0gaml0LT5jb2RlQmxvY2soKS0+aml0Q29kZSgpLT5saXZlUmVnaXN0ZXJzVG9Q
cmVzZXJ2ZUF0RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZShqaXQtPmNvZGVCbG9jaygpLCBzdHVi
SW5mby0+Y2FsbFNpdGVJbmRleCk7CkBAIC05MzIsNiArOTM4LDExMCBAQCB2b2lkIEFjY2Vzc0Nh
c2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKG1fdHlwZSA9PSBDdXN0b21BY2Nl
c3NvckdldHRlciAmJiBtX3JhcmVEYXRhLT5kb21KSVQpIHsKKyAgICAgICAgICAgIC8vIFdlIGRv
IG5vdCBuZWVkIHRvIGVtaXQgQ2hlY2tET00gb3BlcmF0aW9uIHNpbmNlIHN0cnVjdHVyZSBjaGVj
ayBlbnN1cmVzCisgICAgICAgICAgICAvLyB0aGF0IHRoZSBnaXZlbiBiYXNlIHZhbHVlIGlzIGFu
IGFwcHJvcHJpYXRlIERPTSBub2RlLgorICAgICAgICAgICAgUmVmPERPTUpJVDo6Q2FsbERPTVBh
dGNocG9pbnQ+IHBhdGNocG9pbnQgPSBtX3JhcmVEYXRhLT5kb21KSVQtPmNhbGxET00oKTsKKwor
ICAgICAgICAgICAgVmVjdG9yPEdQUlJlZz4gZ3BTY3JhdGNoOworICAgICAgICAgICAgVmVjdG9y
PEZQUlJlZz4gZnBTY3JhdGNoOworICAgICAgICAgICAgVmVjdG9yPERPTUpJVDo6VmFsdWU+IHJl
Z3M7CisKKyAgICAgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0b3Ioc3R1
YkluZm8ucGF0Y2gudXNlZFJlZ2lzdGVycyk7CisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhi
YXNlR1BSKTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICAgICAgYWxsb2NhdG9yLmxv
Y2soc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5iYXNlVGFnR1BSKSk7CisjZW5k
aWYKKyAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZhbHVlUmVncyk7CisgICAgICAgICAgICBh
bGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKKworICAgICAgICAgICAgR1BSUmVnIHBhcmFtQmFz
ZUdQUiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgICAgICBHUFJSZWcgcGFyYW1HbG9iYWxPYmpl
Y3RHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgcGFyYW1WYWx1
ZVJlZ3MgPSB2YWx1ZVJlZ3M7CisgICAgICAgICAgICBHUFJSZWcgcmVtYWluaW5nU2NyYXRjaEdQ
UiA9IEludmFsaWRHUFJSZWc7CisKKyAgICAgICAgICAgIC8vIHZhbHVlUmVncyBhbmQgYmFzZUZv
ckdldEdQUiBtYXkgYmUgdGhlIHNhbWUuIEZvciBleGFtcGxlLCBpbiBCYXNlbGluZSBKSVQsIHdl
IHBhc3MgdGhlIHNhbWUgcmVnVDAgZm9yIGJhc2VHUFIgYW5kIHZhbHVlUmVncy4KKyAgICAgICAg
ICAgIC8vIEluIEZUTCwgdGhlcmUgaXMgbm8gY29uc3RyYWludCB0aGF0IHRoZSBiYXNlRm9yR2V0
R1BSIGludGVyZmVyZXMgd2l0aCB0aGUgcmVzdWx0LiBUbyBtYWtlIGltcGxlbWVudGF0aW9uIHNp
bXBsZSBpbgorICAgICAgICAgICAgLy8gRE9NSklUOjpQYXRjaHBvaW50LCBET01KSVQ6OlBhdGNo
cG9pbnQgYXNzdW1lcyB0aGF0IHJlc3VsdCByZWdpc3RlcnMgYWx3YXlzIGVhcmx5IGludGVyZmVy
ZSB3aXRoIGlucHV0IHJlZ2lzdGVycywgaW4gdGhpcyBjYXNlLAorICAgICAgICAgICAgLy8gYmFz
ZUZvckdldEdQUi4gU28gd2UgbW92ZSBiYXNlRm9yR2V0R1BSIHRvIHRoZSBvdGhlciByZWdpc3Rl
ciBpZiBiYXNlRm9yR2V0R1BSID09IHZhbHVlUmVncy4KKyAgICAgICAgICAgIGlmIChiYXNlRm9y
R2V0R1BSICE9IHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpIHsKKyAgICAgICAgICAgICAgICBwYXJh
bUJhc2VHUFIgPSBiYXNlRm9yR2V0R1BSOworICAgICAgICAgICAgICAgIGlmICghcGF0Y2hwb2lu
dC0+cmVxdWlyZUdsb2JhbE9iamVjdCkKKyAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nU2Ny
YXRjaEdQUiA9IHNjcmF0Y2hHUFI7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBwYXJhbUdsb2JhbE9iamVjdEdQUiA9IHNjcmF0Y2hHUFI7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGppdC5tb3ZlKHZhbHVlUmVncy5wYXlsb2FkR1BSKCks
IHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgIHBhcmFtQmFzZUdQUiA9IHNjcmF0Y2hHUFI7
CisgICAgICAgICAgICAgICAgaWYgKHBhdGNocG9pbnQtPnJlcXVpcmVHbG9iYWxPYmplY3QpCisg
ICAgICAgICAgICAgICAgICAgIHBhcmFtR2xvYmFsT2JqZWN0R1BSID0gYWxsb2NhdG9yLmFsbG9j
YXRlU2NyYXRjaEdQUigpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZWdzLmFwcGVu
ZChwYXJhbVZhbHVlUmVncyk7CisgICAgICAgICAgICBpZiAocGFyYW1HbG9iYWxPYmplY3RHUFIg
IT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgICAgICByZWdzLmFwcGVuZChwYXJhbUdsb2Jh
bE9iamVjdEdQUik7CisgICAgICAgICAgICByZWdzLmFwcGVuZChwYXJhbUJhc2VHUFIpOworCisg
ICAgICAgICAgICBpZiAocGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzKSB7CisgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaSA9IDA7CisgICAgICAgICAgICAgICAgaWYgKHJlbWFpbmlu
Z1NjcmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZykgeworICAgICAgICAgICAgICAgICAgICBncFNj
cmF0Y2guYXBwZW5kKHJlbWFpbmluZ1NjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgICAgICAr
K2k7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZvciAoOyBpIDwgcGF0Y2hw
b2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzOyArK2kpCisgICAgICAgICAgICAgICAgICAgIGdw
U2NyYXRjaC5hcHBlbmQoYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhdGNocG9pbnQt
Pm51bUZQU2NyYXRjaFJlZ2lzdGVyczsgKytpKQorICAgICAgICAgICAgICAgIGZwU2NyYXRjaC5h
cHBlbmQoYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEZQUigpKTsKKworICAgICAgICAgICAgU2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0ZSA9Cisg
ICAgICAgICAgICAgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5n
KGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6OlNwYWNlRm9y
Q0NhbGwpOworCisgICAgICAgICAgICBpZiAodmVyYm9zZSkgeworICAgICAgICAgICAgICAgIGRh
dGFMb2coImJhc2VHUFIgPSAiLCBiYXNlR1BSLCAiXG4iKTsKKyAgICAgICAgICAgICAgICBkYXRh
TG9nKCJ2YWx1ZVJlZ3MgPSAiLCB2YWx1ZVJlZ3MsICJcbiIpOworICAgICAgICAgICAgICAgIGRh
dGFMb2coInNjcmF0Y2hHUFIgPSAiLCBzY3JhdGNoR1BSLCAiXG4iKTsKKyAgICAgICAgICAgICAg
ICBkYXRhTG9nKCJwYXJhbUJhc2VHUFIgPSAiLCBwYXJhbUJhc2VHUFIsICJcbiIpOworICAgICAg
ICAgICAgICAgIGlmIChwYXJhbUdsb2JhbE9iamVjdEdQUiAhPSBJbnZhbGlkR1BSUmVnKQorICAg
ICAgICAgICAgICAgICAgICBkYXRhTG9nKCJwYXJhbUdsb2JhbE9iamVjdEdQUiA9ICIsIHBhcmFt
R2xvYmFsT2JqZWN0R1BSLCAiXG4iKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJwYXJhbVZh
bHVlUmVncyA9ICIsIHBhcmFtVmFsdWVSZWdzLCAiXG4iKTsKKyAgICAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzOyAr
K2kpCisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coImdwU2NyYXRjaFsiLCBpLCAiXSA9ICIs
IGdwU2NyYXRjaFtpXSwgIlxuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChw
YXRjaHBvaW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0KSB7CisgICAgICAgICAgICAgICAgaml0LmVt
aXRMb2FkU3RydWN0dXJlKHBhcmFtQmFzZUdQUiwgcGFyYW1HbG9iYWxPYmplY3RHUFIsIHZhbHVl
UmVncy5wYXlsb2FkR1BSKCkpOworICAgICAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhwYXJhbUdsb2JhbE9iamVjdEdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmpl
Y3RPZmZzZXQoKSksIHBhcmFtR2xvYmFsT2JqZWN0R1BSKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gV2UgZG8gbm90IG5lZWQgdG8gc3BpbGwgbG9ja2VkIHJlZ2lzdGVycyBzaW5j
ZSB0aGUgY2FsbGVyIChCYXNlbGluZSwgREZHLCBhbmQgRlRMKQorICAgICAgICAgICAgLy8gbXVz
dCBhc3N1bWUgdGhhdCB0aGV5IGNhbiBiZSBjbG9iYmVyZWQgaW4gdGhlIElDIGZhc3QgcGF0aCBp
ZiBpdCBzdWNjZWVkcy4KKyAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHJlZ2lzdGVyc1RvU3BpbGxG
b3JDQ2FsbDsKKyAgICAgICAgICAgIGZvciAoYXV0byYgdmFsdWUgOiByZWdzKSB7CisgICAgICAg
ICAgICAgICAgRE9NSklUOjpSZWcgcmVnID0gdmFsdWUucmVnKCk7CisgICAgICAgICAgICAgICAg
aWYgKHJlZy5pc0pTVmFsdWVSZWdzKCkpCisgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyc1Rv
U3BpbGxGb3JDQ2FsbC5zZXQocmVnLmpzVmFsdWVSZWdzKCkpOworICAgICAgICAgICAgICAgIGVs
c2UgaWYgKHJlZy5pc0dQUigpKQorICAgICAgICAgICAgICAgICAgICByZWdpc3RlcnNUb1NwaWxs
Rm9yQ0NhbGwuc2V0KHJlZy5ncHIoKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICByZWdpc3RlcnNUb1NwaWxsRm9yQ0NhbGwuc2V0KHJlZy5mcHIoKSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBmb3IgKEdQUlJlZyByZWcgOiBncFNjcmF0Y2gpCisgICAg
ICAgICAgICAgICAgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLnNldChyZWcpOworICAgICAgICAg
ICAgZm9yIChGUFJSZWcgcmVnIDogZnBTY3JhdGNoKQorICAgICAgICAgICAgICAgIHJlZ2lzdGVy
c1RvU3BpbGxGb3JDQ2FsbC5zZXQocmVnKTsKKyAgICAgICAgICAgIHJlZ2lzdGVyc1RvU3BpbGxG
b3JDQ2FsbC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpyZWdpc3RlcnNUb05vdFNhdmVGb3JDQ2FsbCgp
KTsKKworICAgICAgICAgICAgRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMgcGFyYW1z
KFdURk1vdmUocmVncyksIFdURk1vdmUoZ3BTY3JhdGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gpKTsK
KyAgICAgICAgICAgIHBhdGNocG9pbnQtPmdlbmVyYXRvcigpLT5ydW4oaml0LCBwYXJhbXMpOwor
ICAgICAgICAgICAgYWxsb2NhdG9yLnJlc3RvcmVSZXVzZWRSZWdpc3RlcnNCeVBvcHBpbmcoaml0
LCBwcmVzZXJ2ZWRTdGF0ZSk7CisgICAgICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CisKKyAgICAg
ICAgICAgIHBhcmFtcy5lbWl0U2xvd1BhdGhDYWxscyh2bSwgc3RhdGUsIHJlZ2lzdGVyc1RvU3Bp
bGxGb3JDQ2FsbCwgaml0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAg
ICAgIC8vIFN0dWZmIGZvciBjdXN0b20gZ2V0dGVycy9zZXR0ZXJzLgogICAgICAgICBDQ2FsbEhl
bHBlcnM6OkNhbGwgb3BlcmF0aW9uQ2FsbDsKIApAQCAtOTQwLDkgKzEwNTAsNiBAQCB2b2lkIEFj
Y2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgZmFzdFBhdGhDYWxsOwogICAgICAgICBDQ2FsbEhlbHBl
cnM6OkNhbGwgc2xvd1BhdGhDYWxsOwogCi0gICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBzdWNj
ZXNzOwotICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZmFpbDsKLQogICAgICAgICAvLyBUaGlz
IGFsc28gZG9lcyB0aGUgbmVjZXNzYXJ5IGNhbGN1bGF0aW9ucyBvZiB3aGV0aGVyIG9yIG5vdCB3
ZSdyZSBhbgogICAgICAgICAvLyBleGNlcHRpb24gaGFuZGxpbmcgY2FsbCBzaXRlLgogICAgICAg
ICBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAppbmRleCA5
NzBhMjM1YmZkZTMyZTYzYWY2Yjk1ZGFmZjczMjNjMmI5NDhjNjVjLi5mYzJiMGMxZGNmMWEzZmIz
N2QzZmVjZDI0YjZjNjU2YmFhZjJiZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaApAQCAtNTE0LDYgKzUxNCw3IEBAIHN0cnVj
dCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUgewogICAgICAgICByZXR1cm4gbV9saXZlUmVnaXN0ZXJz
VG9QcmVzZXJ2ZUF0RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZTsKICAgICB9CiAgICAgCisgICAg
UmVnaXN0ZXJTZXQgbV9leHRyYUxpdmVSZWdpc3RlcnNGb3JDYWxsOwogICAgIFJlZ2lzdGVyU2V0
IG1fbGl2ZVJlZ2lzdGVyc1RvUHJlc2VydmVBdEV4Y2VwdGlvbkhhbmRsaW5nQ2FsbFNpdGU7CiAg
ICAgUmVnaXN0ZXJTZXQgbV9saXZlUmVnaXN0ZXJzRm9yQ2FsbDsKICAgICBDYWxsU2l0ZUluZGV4
IG1fY2FsbFNpdGVJbmRleCB7IENhbGxTaXRlSW5kZXgoc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdET01KSVRQYXRjaHBvaW50UGFyYW1zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5jcHAKaW5kZXggMGExMWM2NzEzNDdkNzFiZmRhMzUx
OTMwZTdjYjU1ZjFhNWVjNmYwNy4uOGVkNzdiNTJlZWNjYzUzYTA5NTQ2MTI4NmE1ODMxYWI3ZGQx
NWNiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdET01KSVRQYXRj
aHBvaW50UGFyYW1zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RPTUpJ
VFBhdGNocG9pbnRQYXJhbXMuY3BwCkBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyB2b2lkIGRpc3Bh
dGNoKFNwZWN1bGF0aXZlSklUKiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QgZnJvbSwgT3Bl
cmF0aW9uCiB9CiAKICNkZWZpbmUgSlNDX0RFRklORV9DQUxMX09QRVJBVElPTlMoT3BlcmF0aW9u
VHlwZSwgUmVzdWx0VHlwZSwgLi4uKSBcCi0gICAgdm9pZCBET01KSVRQYXRjaHBvaW50UGFyYW1z
OjphZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExpc3QgZnJvbSwgQ0NhbGxI
ZWxwZXJzJiwgT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIFJlc3VsdFR5cGUgcmVzdWx0LCBzdGQ6
OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBjb25zdCBcCisgICAgdm9pZCBET01KSVRQYXRjaHBv
aW50UGFyYW1zOjphZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExpc3QgZnJv
bSwgQ0NhbGxIZWxwZXJzJiwgT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIFJlc3VsdFR5cGUgcmVz
dWx0LCBzdGQ6OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBcCiAgICAgeyBcCiAgICAgICAgIGRp
c3BhdGNoKG1faml0LCBmcm9tLCBvcGVyYXRpb24sIHJlc3VsdCwgYXJncywgc3RkOjptYWtlX2lu
ZGV4X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxkZWNsdHlwZShhcmdzKT46OnZhbHVlPigpKTsg
XAogICAgIH0gXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdET01K
SVRQYXRjaHBvaW50UGFyYW1zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RPTUpJ
VFBhdGNocG9pbnRQYXJhbXMuaAppbmRleCA0NmZkZDRiZTYwMDRmMzMxZDdhOTk2Y2ExNjZiYTYx
MzAwMjA5ZjgyLi5mYjZhYjBiMmM2ODM3MTkyYTI4YjdlNjUxNTc0YzA1NTVlMTU1ZWI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RPTUpJVFBhdGNocG9pbnRQYXJh
bXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RPTUpJVFBhdGNocG9pbnRQ
YXJhbXMuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBET01KSVRQYXRjaHBvaW50UGFyYW1zIDog
cHVibGljIERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyB7CiAgICAgfQogCiBwcml2YXRlOgotI2Rl
ZmluZSBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUyhPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBl
LCAuLi4pIHZvaWQgYWRkU2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0LCBD
Q2FsbEhlbHBlcnMmLCBPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCBzdGQ6OnR1cGxlPF9fVkFf
QVJHU19fPiBhcmdzKSBjb25zdCBvdmVycmlkZTsKKyNkZWZpbmUgSlNDX0RFRklORV9DQUxMX09Q
RVJBVElPTlMoT3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwgLi4uKSB2b2lkIGFkZFNsb3dQYXRo
Q2FsbEltcGwoQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzJiwgT3BlcmF0aW9u
VHlwZSwgUmVzdWx0VHlwZSwgc3RkOjp0dXBsZTxfX1ZBX0FSR1NfXz4gYXJncykgb3ZlcnJpZGU7
CiAgICAgRE9NSklUX1NMT1dfUEFUSF9DQUxMUyhKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUykK
ICN1bmRlZiBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kb21qaXQvRE9NSklUUGF0Y2hwb2ludC5oCmluZGV4IDM4NjA4ZTI1NjlhMmFjZTY5
MTBiMjg5MTkwN2Y1YmRiOGE5NTljNDMuLmJiOWY1ZTRmOWI4N2YyMTM3NTNmYWI4YTU5ZjAwNzk4
ZGY2OTBmMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklU
UGF0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUUGF0
Y2hwb2ludC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9N
SklUIHsKIAogY2xhc3MgUGF0Y2hwb2ludFBhcmFtczsKIAotdHlwZWRlZiBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0IFBhdGNocG9pbnRHZW5lcmF0b3JGdW5jdGlvbihDQ2FsbEhlbHBlcnMmLCBjb25z
dCBQYXRjaHBvaW50UGFyYW1zJik7Cit0eXBlZGVmIENDYWxsSGVscGVyczo6SnVtcExpc3QgUGF0
Y2hwb2ludEdlbmVyYXRvckZ1bmN0aW9uKENDYWxsSGVscGVycyYsIFBhdGNocG9pbnRQYXJhbXMm
KTsKIHR5cGVkZWYgU2hhcmVkVGFzazxQYXRjaHBvaW50R2VuZXJhdG9yRnVuY3Rpb24+IFBhdGNo
cG9pbnRHZW5lcmF0b3I7CiAKIC8vIERPTUpJVCBwYXRjaHBvaW50IGlzIHRoZSB3YXkgdG8gaW5q
ZWN0IGFuIG9wYXF1ZSBjb2RlIGdlbmVyYXRvciBpbnRvIERGRyBhbmQgRlRMLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRQYXRjaHBvaW50UGFyYW1zLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaApp
bmRleCBhZWVjZTFiN2UyOTZlZDE0YjQ2ZTRlZDY5MDg3MWQwMmEwNzY4MjM0Li5kODNiNmIwYmYx
NjY0MDViZmM0ZGM4ZTMxNTRkMTA5ZGVhMjhmMTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaApAQCAtNTUsMTMgKzU1
LDEzIEBAIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhdGNocG9pbnRQYXJhbXMpOwogICAgIH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlwZSwg
dHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAgIHZvaWQgYWRkU2xvd1BhdGhDYWxsKENDYWxsSGVs
cGVyczo6SnVtcExpc3QgZnJvbSwgQ0NhbGxIZWxwZXJzJiBqaXQsIEZ1bmN0aW9uVHlwZSBmdW5j
dGlvbiwgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpIGNvbnN0Cisg
ICAgdm9pZCBhZGRTbG93UGF0aENhbGwoQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBmcm9tLCBDQ2Fs
bEhlbHBlcnMmIGppdCwgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLCBSZXN1bHRUeXBlIHJlc3VsdCwg
QXJndW1lbnRzLi4uIGFyZ3VtZW50cykKICAgICB7CiAgICAgICAgIGFkZFNsb3dQYXRoQ2FsbElt
cGwoZnJvbSwgaml0LCBmdW5jdGlvbiwgcmVzdWx0LCBzdGQ6Om1ha2VfdHVwbGUoYXJndW1lbnRz
Li4uKSk7CiAgICAgfQogCiBwcml2YXRlOgotI2RlZmluZSBKU0NfREVGSU5FX0NBTExfT1BFUkFU
SU9OUyhPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCAuLi4pIEpTX0VYUE9SVF9QUklWQVRFIHZp
cnR1YWwgdm9pZCBhZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExpc3QsIEND
YWxsSGVscGVycyYsIE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUsIHN0ZDo6dHVwbGU8X19WQV9B
UkdTX18+IGFyZ3MpIGNvbnN0ID0gMDsKKyNkZWZpbmUgSlNDX0RFRklORV9DQUxMX09QRVJBVElP
TlMoT3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwgLi4uKSBKU19FWFBPUlRfUFJJVkFURSB2aXJ0
dWFsIHZvaWQgYWRkU2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0LCBDQ2Fs
bEhlbHBlcnMmLCBPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCBzdGQ6OnR1cGxlPF9fVkFfQVJH
U19fPiBhcmdzKSA9IDA7CiAgICAgRE9NSklUX1NMT1dfUEFUSF9DQUxMUyhKU0NfREVGSU5FX0NB
TExfT1BFUkFUSU9OUykKICN1bmRlZiBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTERPTUpJVFBhdGNocG9pbnRQYXJh
bXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExET01KSVRQYXRjaHBvaW50UGFy
YW1zLmNwcAppbmRleCBhYTIyNTU4NzgwNjBjNWY0ZmZlOWJlMWEzN2UzZjJjNDg1N2JiNDgxLi4x
MDZlMmU1NjE5OGI0YzFjY2U0ZDM0MTZiZWEwZTZiYjI4ZTM1NGViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTERPTUpJVFBhdGNocG9pbnRQYXJhbXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5jcHAK
QEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIHZvaWQgZGlzcGF0Y2goQ0NhbGxIZWxwZXJzJiBqaXQs
IEZUTDo6U3RhdGUqIHN0YXRlLCBjb25zdCBCMzo6U3RhY2ttYXBHZW4KIH0KIAogI2RlZmluZSBK
U0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUyhPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCAuLi4p
IFwKLSAgICB2b2lkIERPTUpJVFBhdGNocG9pbnRQYXJhbXM6OmFkZFNsb3dQYXRoQ2FsbEltcGwo
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBmcm9tLCBDQ2FsbEhlbHBlcnMmIGppdCwgT3BlcmF0aW9u
VHlwZSBvcGVyYXRpb24sIFJlc3VsdFR5cGUgcmVzdWx0LCBzdGQ6OnR1cGxlPF9fVkFfQVJHU19f
PiBhcmdzKSBjb25zdCBcCisgICAgdm9pZCBET01KSVRQYXRjaHBvaW50UGFyYW1zOjphZGRTbG93
UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExpc3QgZnJvbSwgQ0NhbGxIZWxwZXJzJiBq
aXQsIE9wZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBSZXN1bHRUeXBlIHJlc3VsdCwgc3RkOjp0dXBs
ZTxfX1ZBX0FSR1NfXz4gYXJncykgXAogICAgIHsgXAogICAgICAgICBkaXNwYXRjaChqaXQsICZt
X3N0YXRlLCBtX3BhcmFtcywgbV9ub2RlLCBtX2V4Y2VwdGlvbnMsIGZyb20sIG9wZXJhdGlvbiwg
cmVzdWx0LCBhcmdzLCBzdGQ6Om1ha2VfaW5kZXhfc2VxdWVuY2U8c3RkOjp0dXBsZV9zaXplPGRl
Y2x0eXBlKGFyZ3MpPjo6dmFsdWU+KCkpOyBcCiAgICAgfSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oCmluZGV4IDJkMTNl
ZWFhN2Q1ODdjYjQ3ZTkzNzczMTI2ZmY3MDU5MzY0NDNmN2EuLjMzODdjOTA4NmUxMzY2MTI4NGY1
NzhjNmNhNDQ0MmUyNzRjMGNmZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNz
IERPTUpJVFBhdGNocG9pbnRQYXJhbXMgOiBwdWJsaWMgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1z
IHsKICAgICB9CiAKIHByaXZhdGU6Ci0jZGVmaW5lIEpTQ19ERUZJTkVfQ0FMTF9PUEVSQVRJT05T
KE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUsIC4uLikgdm9pZCBhZGRTbG93UGF0aENhbGxJbXBs
KENDYWxsSGVscGVyczo6SnVtcExpc3QsIENDYWxsSGVscGVycyYsIE9wZXJhdGlvblR5cGUsIFJl
c3VsdFR5cGUsIHN0ZDo6dHVwbGU8X19WQV9BUkdTX18+IGFyZ3MpIGNvbnN0IG92ZXJyaWRlOwor
I2RlZmluZSBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUyhPcGVyYXRpb25UeXBlLCBSZXN1bHRU
eXBlLCAuLi4pIHZvaWQgYWRkU2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
LCBDQ2FsbEhlbHBlcnMmLCBPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCBzdGQ6OnR1cGxlPF9f
VkFfQVJHU19fPiBhcmdzKSBvdmVycmlkZTsKICAgICBET01KSVRfU0xPV19QQVRIX0NBTExTKEpT
Q19ERUZJTkVfQ0FMTF9PUEVSQVRJT05TKQogI3VuZGVmIEpTQ19ERUZJTkVfQ0FMTF9PUEVSQVRJ
T05TCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2NyYXRjaFJlZ2lz
dGVyQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2NyYXRjaFJlZ2lz
dGVyQWxsb2NhdG9yLmNwcAppbmRleCA5M2Q2NzBkNmM0MDJmNjI3Y2FmZTk1MWQyZjJiYWRhNzcx
NzQzYTc1Li5mYzRhYzMzNmVkZGNjNzRhOGVmODFlNThjZjgyYzhhOGE4ZjZhNGMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0
b3IuY3BwCkBAIC0yOTcsNiArMjk3LDI0IEBAIHZvaWQgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
OjpyZXN0b3JlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChNYWNyb0Fzc2VtYmxlciYKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIH0KIAorUmVnaXN0ZXJT
ZXQgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpyZWdpc3RlcnNUb1NwaWxsRm9yQ0NhbGwoKSBj
b25zdAoreworICAgIFJlZ2lzdGVyU2V0IHJlZ2lzdGVyc1RvU3BpbGw7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKyAgICAg
ICAgRlBSUmVnIHJlZyA9IEZQUkluZm86OnRvUmVnaXN0ZXIoaSk7CisgICAgICAgIGlmIChtX3Nj
cmF0Y2hSZWdpc3RlcnMuZ2V0RlBSQnlJbmRleChpKSB8fCBtX3VzZWRSZWdpc3RlcnMuZ2V0KHJl
ZykpCisgICAgICAgICAgICByZWdpc3RlcnNUb1NwaWxsLnNldChyZWcpOworICAgIH0KKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkg
eworICAgICAgICBHUFJSZWcgcmVnID0gR1BSSW5mbzo6dG9SZWdpc3RlcihpKTsKKyAgICAgICAg
aWYgKG1fc2NyYXRjaFJlZ2lzdGVycy5nZXRHUFJCeUluZGV4KGkpIHx8IG1fdXNlZFJlZ2lzdGVy
cy5nZXQocmVnKSkKKyAgICAgICAgICAgIHJlZ2lzdGVyc1RvU3BpbGwuc2V0KHJlZyk7CisgICAg
fQorCisgICAgcmVnaXN0ZXJzVG9TcGlsbC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpyZWdpc3RlcnNU
b05vdFNhdmVGb3JDQ2FsbCgpKTsKKyAgICByZXR1cm4gcmVnaXN0ZXJzVG9TcGlsbDsKK30KKwog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmgKaW5kZXgg
NTgwNWMyZjI5MzNkZTBlNTAxMjc3NWUxOWUzYzM1NGEwYTc1ZjM4Zi4uMzdjMWYwNmIzMmRlYzBi
Mjc5OTM5YTdhOWMzZmNjODNiN2U3MWMyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9TY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oCkBAIC05Nyw2ICs5Nyw4IEBAIGNs
YXNzIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciB7CiAgICAgc3RhdGljIHVuc2lnbmVkIHByZXNl
cnZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoTWFjcm9Bc3NlbWJsZXImIGppdCwgY29uc3QgUmVn
aXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIHVuc2lnbmVkIGV4dHJhUGFkZGluZ0luQnl0ZXMpOwog
ICAgIHN0YXRpYyB2b2lkIHJlc3RvcmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKE1hY3JvQXNz
ZW1ibGVyJiBqaXQsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBjb25zdCBSZWdp
c3RlclNldCYgaWdub3JlLCB1bnNpZ25lZCBudW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0
ZXJQcmVzZXJ2YXRpb24sIHVuc2lnbmVkIGV4dHJhUGFkZGluZ0luQnl0ZXMpOwogCisgICAgUmVn
aXN0ZXJTZXQgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsKCkgY29uc3Q7CisKIHByaXZhdGU6CiAg
ICAgUmVnaXN0ZXJTZXQgbV91c2VkUmVnaXN0ZXJzOwogICAgIFRlbXBSZWdpc3RlclNldCBtX2xv
Y2tlZFJlZ2lzdGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMjc0MTJkMzcyMzczMGNhNzVj
M2I5YzVhZjg4ZWQxZWE3M2ZlYTQ0Ny4uY2ExNTA3MDUyNWY4M2UyZWI0MTU3YjQ3NjhmYWU5OTI5
ZDAzMGU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTU1Nyw2ICs1NTcsMjIgQEAgY2xhc3Mg
RE9NSklUTm9kZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlND
OjpKU1R5cGUoTGFzdEpTQ09iamVjdFR5cGUgKyAxKSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OwogICAgIH0KIAorI2lmIEVOQUJMRShKSVQpCisgICAgc3RhdGljIFJlZjxET01KSVQ6OlBhdGNo
cG9pbnQ+IGNoZWNrRE9NSklUTm9kZSgpCisgICAgeworICAgICAgICBSZWY8RE9NSklUOjpQYXRj
aHBvaW50PiBwYXRjaHBvaW50ID0gRE9NSklUOjpQYXRjaHBvaW50OjpjcmVhdGUoKTsKKyAgICAg
ICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgRE9NSklU
OjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6
SnVtcExpc3QgZmFpbHVyZUNhc2VzOworICAgICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChq
aXQuYnJhbmNoOCgKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLAorICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhwYXJhbXNbMF0uZ3ByKCksIEpTQ2Vs
bDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKEpTQzo6SlNUeXBlKExhc3RKU0NPYmplY3RUeXBlICsgMSkpKSk7CisgICAg
ICAgICAgICByZXR1cm4gZmFpbHVyZUNhc2VzOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJu
IHBhdGNocG9pbnQ7CisgICAgfQorI2VuZGlmCisKICAgICBzdGF0aWMgRE9NSklUTm9kZSogY3Jl
YXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBET01KSVRO
b2RlKiBnZXR0ZXIgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxET01KSVROb2RlPih2bS5o
ZWFwLCBzaXplb2YoRE9NSklUTm9kZSkpKSBET01KSVROb2RlKHZtLCBzdHJ1Y3R1cmUpOwpAQCAt
NjA4LDI4ICs2MjQsMTAxIEBAIGNsYXNzIERPTUpJVEdldHRlciA6IHB1YmxpYyBET01KSVROb2Rl
IHsKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBjaGVj
a0RPTSgpIG92ZXJyaWRlCiAgICAgICAgIHsKLSAgICAgICAgICAgIFJlZjxET01KSVQ6OlBhdGNo
cG9pbnQ+IHBhdGNocG9pbnQgPSBET01KSVQ6OlBhdGNocG9pbnQ6OmNyZWF0ZSgpOwotICAgICAg
ICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsKLSAgICAgICAgICAgICAgICBmYWls
dXJlQ2FzZXMuYXBwZW5kKGppdC5icmFuY2g4KAotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MocGFyYW1zWzBdLmdwcigpLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKLSAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNDOjpKU1R5cGUoTGFz
dEpTQ09iamVjdFR5cGUgKyAxKSkpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFpbHVyZUNh
c2VzOworICAgICAgICAgICAgcmV0dXJuIERPTUpJVE5vZGU6OmNoZWNrRE9NSklUTm9kZSgpOwor
ICAgICAgICB9CisKKyAgICAgICAgUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxE
T00oKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBSZWY8RE9NSklUOjpDYWxsRE9N
UGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ6OmNyZWF0
ZSgpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+cmVxdWlyZUdsb2JhbE9iamVjdCA9IGZhbHNl
OworICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMm
IGppdCwgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAg
ICBKU1ZhbHVlUmVncyByZXN1bHRzID0gcGFyYW1zWzBdLmpzVmFsdWVSZWdzKCk7CisgICAgICAg
ICAgICAgICAgR1BSUmVnIGRvbSA9IHBhcmFtc1sxXS5ncHIoKTsKKworICAgICAgICAgICAgICAg
IHBhcmFtcy5hZGRTbG93UGF0aENhbGwoaml0Lmp1bXAoKSwgaml0LCBzdGF0aWNfY2FzdDxFbmNv
ZGVkSlNWYWx1ZSgqKShFeGVjU3RhdGUqLCB2b2lkKik+KFtdKEV4ZWNTdGF0ZSosIHZvaWQqIHBv
aW50ZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcihzdGF0aWNfY2FzdDxET01KSVRHZXR0ZXIqPihwb2ludGVyKS0+dmFsdWUoKSkpOworICAg
ICAgICAgICAgICAgIH0pLCByZXN1bHRzLCBkb20pOworICAgICAgICAgICAgICAgIHJldHVybiBD
Q2FsbEhlbHBlcnM6Okp1bXBMaXN0KCk7CisKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAg
cmV0dXJuIHBhdGNocG9pbnQ7CiAgICAgICAgIH0KKyNlbmRpZgorICAgIH07CisKKyAgICBzdGF0
aWMgRE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVE5vZGVHZXR0ZXJTZXR0ZXIoKQorICAgIHsK
KyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPERPTUpJVE5vZGVET01KSVQ+IGdyYXBoOwor
ICAgICAgICByZXR1cm4gJmdyYXBoLmdldCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKKyAgICB7CisgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKKyAgICAgICAgRE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVCA9IGRvbUpJVE5v
ZGVHZXR0ZXJTZXR0ZXIoKTsKKyAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyKiBjdXN0b21HZXR0
ZXJTZXR0ZXIgPSBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZG9tSklULT5nZXR0ZXIo
KSwgZG9tSklULT5zZXR0ZXIoKSwgZG9tSklUKTsKKyAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNj
ZXNzb3Iodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiY3VzdG9tR2V0dGVyIiksIGN1
c3RvbUdldHRlclNldHRlciwgUmVhZE9ubHkgfCBDdXN0b21BY2Nlc3Nvcik7CisgICAgfQorCisg
ICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGN1c3RvbUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQorICAgIHsKKyAgICAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgICAgIERPTUpJVE5vZGUqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0
PERPTUpJVE5vZGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgICAgIGlmICgh
dGhpc09iamVjdCkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNj
b3BlKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0
LT52YWx1ZSgpKSk7CisgICAgfQorfTsKKworY2xhc3MgRE9NSklUR2V0dGVyQ29tcGxleCA6IHB1
YmxpYyBET01KSVROb2RlIHsKK3B1YmxpYzoKKyAgICBET01KSVRHZXR0ZXJDb21wbGV4KFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQor
ICAgIHsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisgICAgdHlwZWRlZiBET01KSVROb2Rl
IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3M7CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTQzo6SlNUeXBlKExhc3RKU0NPYmplY3RUeXBlICsgMSks
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgRE9NSklUR2V0
dGVyQ29tcGxleCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgewor
ICAgICAgICBET01KSVRHZXR0ZXJDb21wbGV4KiBnZXR0ZXIgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxET01KSVRHZXR0ZXJDb21wbGV4Pih2bS5oZWFwLCBzaXplb2YoRE9NSklUR2V0dGVy
Q29tcGxleCkpKSBET01KSVRHZXR0ZXJDb21wbGV4KHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBn
ZXR0ZXItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIGdldHRlcjsKKyAgICB9
CisKKyAgICBjbGFzcyBET01KSVROb2RlRE9NSklUIDogcHVibGljIERPTUpJVDo6R2V0dGVyU2V0
dGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIERPTUpJVE5vZGVET01KSVQoKQorICAgICAgICAg
ICAgOiBET01KSVQ6OkdldHRlclNldHRlcihET01KSVRHZXR0ZXJDb21wbGV4OjpjdXN0b21HZXR0
ZXIsIG51bGxwdHIsIERPTUpJVE5vZGU6OmluZm8oKSkKKyAgICAgICAgeworICAgICAgICB9CisK
KyNpZiBFTkFCTEUoSklUKQorICAgICAgICBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja0RP
TSgpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBET01KSVROb2RlOjpj
aGVja0RPTUpJVE5vZGUoKTsKKyAgICAgICAgfQogCiAgICAgICAgIFJlZjxET01KSVQ6OkNhbGxE
T01QYXRjaHBvaW50PiBjYWxsRE9NKCkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAg
UmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBET01KSVQ6OkNhbGxE
T01QYXRjaHBvaW50OjpjcmVhdGUoKTsKICAgICAgICAgICAgIHBhdGNocG9pbnQtPnJlcXVpcmVH
bG9iYWxPYmplY3QgPSBmYWxzZTsKLSAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRv
cihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYg
cGFyYW1zKSB7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxs
SGVscGVycyYgaml0LCBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykgewogICAgICAg
ICAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdHMgPSBwYXJhbXNbMF0uanNWYWx1ZVJlZ3MoKTsK
ICAgICAgICAgICAgICAgICBHUFJSZWcgZG9tID0gcGFyYW1zWzFdLmdwcigpOwogCiAgICAgICAg
ICAgICAgICAgcGFyYW1zLmFkZFNsb3dQYXRoQ2FsbChqaXQuanVtcCgpLCBqaXQsIHN0YXRpY19j
YXN0PEVuY29kZWRKU1ZhbHVlKCopKEV4ZWNTdGF0ZSosIHZvaWQqKT4oW10oRXhlY1N0YXRlKiwg
dm9pZCogcG9pbnRlcikgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKHN0YXRpY19jYXN0PERPTUpJVEdldHRlcio+KHBvaW50ZXIpLT52YWx1ZSgp
KSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
c3RhdGljX2Nhc3Q8RE9NSklUR2V0dGVyQ29tcGxleCo+KHBvaW50ZXIpLT52YWx1ZSgpKSk7CiAg
ICAgICAgICAgICAgICAgfSksIHJlc3VsdHMsIGRvbSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IENDYWxsSGVscGVyczo6SnVtcExpc3QoKTsKIApAQCAtNjczLDYgKzc2Miw3IEBAIGNvbnN0IENs
YXNzSW5mbyBJbXB1cmVHZXR0ZXI6OnNfaW5mbyA9IHsgIkltcHVyZUdldHRlciIsICZCYXNlOjpz
X2luZm8sIDAsIENSRUFUCiBjb25zdCBDbGFzc0luZm8gQ3VzdG9tR2V0dGVyOjpzX2luZm8gPSB7
ICJDdXN0b21HZXR0ZXIiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEN1
c3RvbUdldHRlcikgfTsKIGNvbnN0IENsYXNzSW5mbyBET01KSVROb2RlOjpzX2luZm8gPSB7ICJE
T01KSVROb2RlIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShET01KSVRO
b2RlKSB9OwogY29uc3QgQ2xhc3NJbmZvIERPTUpJVEdldHRlcjo6c19pbmZvID0geyAiRE9NSklU
R2V0dGVyIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShET01KSVRHZXR0
ZXIpIH07Citjb25zdCBDbGFzc0luZm8gRE9NSklUR2V0dGVyQ29tcGxleDo6c19pbmZvID0geyAi
RE9NSklUR2V0dGVyQ29tcGxleCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoRE9NSklUR2V0dGVyQ29tcGxleCkgfTsKIGNvbnN0IENsYXNzSW5mbyBSdW50aW1lQXJyYXk6
OnNfaW5mbyA9IHsgIlJ1bnRpbWVBcnJheSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoUnVudGltZUFycmF5KSB9OwogY29uc3QgQ2xhc3NJbmZvIFNpbXBsZU9iamVjdDo6
c19pbmZvID0geyAiU2ltcGxlT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShTaW1wbGVPYmplY3QpIH07CiBzdGF0aWMgYm9vbCB0ZXN0MjYyQXN5bmNQYXNzZWQg
eyBmYWxzZSB9OwpAQCAtNzAzLDYgKzc5Myw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlSW1wdXJlR2V0dGVyKEV4ZWNTdGF0ZSopOwogc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVDdXN0b21HZXR0ZXJP
YmplY3QoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkNyZWF0ZURPTUpJVE5vZGVPYmplY3QoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURPTUpJVEdldHRlck9iamVjdChF
eGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
Q3JlYXRlRE9NSklUR2V0dGVyQ29tcGxleE9iamVjdChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlQnVpbHRpbihFeGVjU3RhdGUq
KTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlR2xv
YmFsT2JqZWN0KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25TZXRJbXB1cmVHZXR0ZXJEZWxlZ2F0ZShFeGVjU3RhdGUqKTsKQEAgLTk4OSw2
ICsxMDgwLDcgQEAgY2xhc3MgR2xvYmFsT2JqZWN0IDogcHVibGljIEpTR2xvYmFsT2JqZWN0IHsK
ICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVDdXN0b21HZXR0ZXJPYmplY3QiLCBmdW5j
dGlvbkNyZWF0ZUN1c3RvbUdldHRlck9iamVjdCwgMCk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZt
LCAiY3JlYXRlRE9NSklUTm9kZU9iamVjdCIsIGZ1bmN0aW9uQ3JlYXRlRE9NSklUTm9kZU9iamVj
dCwgMCk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiY3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0
IiwgZnVuY3Rpb25DcmVhdGVET01KSVRHZXR0ZXJPYmplY3QsIDApOworICAgICAgICBhZGRGdW5j
dGlvbih2bSwgImNyZWF0ZURPTUpJVEdldHRlckNvbXBsZXhPYmplY3QiLCBmdW5jdGlvbkNyZWF0
ZURPTUpJVEdldHRlckNvbXBsZXhPYmplY3QsIDApOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwg
ImNyZWF0ZUJ1aWx0aW4iLCBmdW5jdGlvbkNyZWF0ZUJ1aWx0aW4sIDIpOwogICAgICAgICBhZGRG
dW5jdGlvbih2bSwgImNyZWF0ZUdsb2JhbE9iamVjdCIsIGZ1bmN0aW9uQ3JlYXRlR2xvYmFsT2Jq
ZWN0LCAwKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJzZXRJbXB1cmVHZXR0ZXJEZWxlZ2F0
ZSIsIGZ1bmN0aW9uU2V0SW1wdXJlR2V0dGVyRGVsZWdhdGUsIDIpOwpAQCAtMTUwOSw2ICsxNjAx
LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVET01KSVRH
ZXR0ZXJPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0
ZURPTUpJVEdldHRlckNvbXBsZXhPYmplY3QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTTG9j
a0hvbGRlciBsb2NrKGV4ZWMpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gRE9NSklUR2V0
dGVyQ29tcGxleDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwganNOdWxsKCkpOworICAgIERPTUpJVEdldHRlckNvbXBsZXgqIHJlc3VsdCA9
IERPTUpJVEdldHRlckNvbXBsZXg6OmNyZWF0ZShleGVjLT52bSgpLCBzdHJ1Y3R1cmUpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvblNldEltcHVyZUdldHRlckRlbGVnYXRlKEV4ZWNTdGF0ZSogZXhl
YykKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbWppdC9ET01KSVRIZWxwZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9N
SklUSGVscGVycy5oCmluZGV4IGRiZTUzNjVmODZmZWNkMWJjMmU3Mjc2MTNmNzU2MDViMTZmMzgy
NTIuLjE4MDZiMmFmYTFjNDcxYzAzMDQ2MzBiODAzOGYwMzIzZjZlMzYxZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRIZWxwZXJzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9taml0L0RPTUpJVEhlbHBlcnMuaApAQCAtNTksNyArNTksNyBAQCB2b2lkIHRyeUxvb2tV
cFdyYXBwZXJDYWNoZShDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYg
ZmFpbHVyZUNhcwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBXcmFwcGVkVHlwZSwgdHlwZW5hbWUg
VG9KU0Z1bmN0aW9uPgotdm9pZCB0b1dyYXBwZXIoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEpT
Qzo6RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMsIEdQUlJlZyB3cmFwcGVkLCBHUFJS
ZWcgZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlUmVncyByZXN1bHQsIFRvSlNGdW5jdGlvbiBmdW5jdGlv
biwgSlNDOjpKU1ZhbHVlIGdsb2JhbE9iamVjdENvbnN0YW50KQordm9pZCB0b1dyYXBwZXIoQ0Nh
bGxIZWxwZXJzJiBqaXQsIEpTQzo6RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMsIEdQ
UlJlZyB3cmFwcGVkLCBHUFJSZWcgZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlUmVncyByZXN1bHQsIFRv
SlNGdW5jdGlvbiBmdW5jdGlvbiwgSlNDOjpKU1ZhbHVlIGdsb2JhbE9iamVjdENvbnN0YW50KQog
ewogICAgIEFTU0VSVCh3cmFwcGVkICE9IHJlc3VsdC5wYXlsb2FkR1BSKCkpOwogICAgIEFTU0VS
VChnbG9iYWxPYmplY3QgIT0gcmVzdWx0LnBheWxvYWRHUFIoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbWpp
dC9KU05vZGVET01KSVQuY3BwCmluZGV4IGI1MGQyNGU5YTMzYzVhM2ViNzhiOGI3MTUyZDgzODNi
ZWY3ZGQxMzUuLmQ4ZjU5MmM2NGFmMWI0MmNkYjhhZWQ4NGY4Mzc1NmE1YzgyZjFhNjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHN0YXRp
YyBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gY3JlYXRlQ2FsbERPTUZvck9mZnNldEFj
Y2VzcyhwdHJkaWZmX3Qgb2ZmCiB7CiAgICAgUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+
IHBhdGNocG9pbnQgPSBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50OjpjcmVhdGUoKTsKICAgICBw
YXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOwotICAgIHBhdGNocG9pbnQtPnNl
dEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IERPTUpJVDo6UGF0Y2hwb2lu
dFBhcmFtcyYgcGFyYW1zKSB7CisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2Fs
bEhlbHBlcnMmIGppdCwgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKICAgICAg
ICAgSlNWYWx1ZVJlZ3MgcmVzdWx0ID0gcGFyYW1zWzBdLmpzVmFsdWVSZWdzKCk7CiAgICAgICAg
IEdQUlJlZyBnbG9iYWxPYmplY3QgPSBwYXJhbXNbMV0uZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBu
b2RlID0gcGFyYW1zWzJdLmdwcigpOwpAQCAtODQsNyArODQsNyBAQCBzdGF0aWMgUmVmPERPTUpJ
VDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3MocHRyZGlm
Zl90IG9mZgogc3RhdGljIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IGNoZWNrTm9kZSgpCiB7CiAg
ICAgUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IERPTUpJVDo6UGF0Y2hwb2lu
dDo6Y3JlYXRlKCk7Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKKyAgICBw
YXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBET01KSVQ6OlBh
dGNocG9pbnRQYXJhbXMmIHBhcmFtcykgewogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
IGZhaWx1cmVDYXNlczsKICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChET01KSVRIZWxwZXJz
OjpicmFuY2hJZk5vdE5vZGUoaml0LCBwYXJhbXNbMF0uZ3ByKCkpKTsKICAgICAgICAgcmV0dXJu
IGZhaWx1cmVDYXNlczsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBSZWY8RE9NSklUOjpDYWxsRE9NUGF0
Y2hwb2ludD4gTm9kZU5vZGVUeXBlRE9NSklUOjpjYWxsRE9NKCkKIHsKICAgICBSZWY8RE9NSklU
OjpDYWxsRE9NUGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IERPTUpJVDo6Q2FsbERPTVBhdGNocG9p
bnQ6OmNyZWF0ZSgpOwogICAgIHBhdGNocG9pbnQtPnJlcXVpcmVHbG9iYWxPYmplY3QgPSBmYWxz
ZTsKLSAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBj
b25zdCBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykgeworICAgIHBhdGNocG9pbnQt
PnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIERPTUpJVDo6UGF0Y2hwb2ludFBh
cmFtcyYgcGFyYW1zKSB7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdCA9IHBhcmFtc1swXS5q
c1ZhbHVlUmVncygpOwogICAgICAgICBHUFJSZWcgbm9kZSA9IHBhcmFtc1sxXS5ncHIoKTsKICAg
ICAgICAgaml0LmxvYWQ4KENDYWxsSGVscGVyczo6QWRkcmVzcyhub2RlLCBKU0M6OkpTQ2VsbDo6
dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCByZXN1bHQucGF5bG9hZEdQUigpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291567</attachid>
            <date>2016-10-13 22:14:38 -0700</date>
            <delta_ts>2016-10-13 23:17:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163223-20161013221111.patch</filename>
            <type>text/plain</type>
            <size>47480</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MTk1N2ZlNzFlZjI0ODFjN2M0ZTY4OTI4MzBhM2U1MjFiMmQxNWFhLi5kNmVmOTgzYjA4ZjI5NDQ1
ZGUxMGUwN2E3NDc5NDk0OTRhNWJjMjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NyBAQAorMjAxNi0xMC0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRE9NSklUXSBVc2UgRE9NSklUOjpQYXRjaHBvaW50IGluIElDCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyMjMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNo
IHVzZXMgRE9NSklUOjpQYXRjaHBvaW50IHRvIGlubGluZSBET00gYWNjZXNzZXMgZXZlbiBpbiBJ
QyEKKyAgICAgICAgSXQgaXMgdXNlZnVsIGZvciBCYXNlbGluZSBKSVQgY2FzZXMgYW5kIEdldEJ5
SWQgY2FzZXMgaW4gREZHIGFuZCBGVEwuCisgICAgICAgIEluIEFjY2Vzc0Nhc2UsIHdlIGNvbnN0
cnVjdCB0aGUgZW52aXJvbm1lbnQgdGhhdCBhbGxvd3MgRE9NSklUOjpQYXRjaHBvaW50CisgICAg
ICAgIHRvIGVtaXQgY29kZSBhbmQgbWFrZSBET01KSVQgYWNjZXNzb3JzIGlubGluZWQgaW4gSUMu
CisKKyAgICAgICAgVG8gYWxsb3cgRE9NSklUOjpQYXRjaHBvaW50IHRvIGVtaXQgY29kZSwgd2Ug
Y3JlYXRlIGEgbWVjaGFuaXNtIHRvIGVtaXQgY2FsbHMKKyAgICAgICAgcmVxdWlyZWQgaW4gRE9N
SklUOjpQYXRjaHBvaW50LiBUaGlzIHN5c3RlbSBpcyB1c2VmdWwgd2hlbiB3ZSBjcmVhdGUgdGhl
IHN1cGVyLQorICAgICAgICBwb2x5bW9ycGhpYyBzdXBwb3J0WzFdIGxhdGVyLiBBbmQgaW5saW5p
bmcgbWVjaGFuaXNtIGlzIHVzZWZ1bCBldmVuIGFmdGVyCisgICAgICAgIGludHJvZHVjaW5nIHN1
cGVyLXBvbHltb3JwaGljIHN1cHBvcnQgc2luY2UgaXQgY2FuIHdvcmsgZXZlbiBhZnRlciB3ZSBm
aXJlIHRoZQorICAgICAgICB3YXRjaHBvaW50IGZvciBzdXBlci1wb2x5bW9ycGhpYyBoYW5kbGlu
Zy4KKworICAgICAgICBUaGlzIHBhdGNoIGltcHJvdmVzIERyb21hZW8gZG9tLXRyYXZlcnNlIDgl
ICgyNjMuOTUgcnVucy9zIHYucy4gMjQ0LjA3IHJ1bnMvcykuCisKKyAgICAgICAgWzFdOiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjI2CisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0RPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50
UGFyYW1zLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlNsb3dQYXRoQ2FsbEdlbmVyYXRvcldp
dGhBcmd1bWVudHM6OlNsb3dQYXRoQ2FsbEdlbmVyYXRvcldpdGhBcmd1bWVudHMpOgorICAgICAg
ICAoSlNDOjpTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRoQXJndW1lbnRzOjpnZW5lcmF0ZUltcGwp
OgorICAgICAgICAoSlNDOjpET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtczo6ZW1pdFNs
b3dQYXRoQ2FsbHMpOgorICAgICAgICAqIGJ5dGVjb2RlL0RPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBv
aW50UGFyYW1zLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRE9N
SklUUGF0Y2hwb2ludFBhcmFtcy5oLgorICAgICAgICAoSlNDOjpET01KSVRBY2Nlc3NDYXNlUGF0
Y2hwb2ludFBhcmFtczo6RE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMpOgorICAgICAg
ICAoSlNDOjpET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtczo6U2xvd1BhdGhDYWxsR2Vu
ZXJhdG9yOjp+U2xvd1BhdGhDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5
bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6
Y2FsY3VsYXRlTGl2ZVJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRpb25IYW5kbGluZyk6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUv
UG9seW1vcnBoaWNBY2Nlc3MuaDoKKyAgICAgICAgKiBkZmcvREZHRE9NSklUUGF0Y2hwb2ludFBh
cmFtcy5jcHA6CisgICAgICAgICogZGZnL0RGR0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaDoKKyAg
ICAgICAgKiBkb21qaXQvRE9NSklUUGF0Y2hwb2ludC5oOgorICAgICAgICAqIGRvbWppdC9ET01K
SVRQYXRjaHBvaW50UGFyYW1zLmg6CisgICAgICAgIChKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludFBh
cmFtczo6YWRkU2xvd1BhdGhDYWxsKToKKyAgICAgICAgKiBmdGwvRlRMRE9NSklUUGF0Y2hwb2lu
dFBhcmFtcy5jcHA6CisgICAgICAgICogZnRsL0ZUTERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaDoK
KyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoV1RGOjpET01KSVROb2RlOjpjaGVja0RPTUpJ
VE5vZGUpOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXJDb21wbGV4OjpET01KSVRHZXR0ZXJD
b21wbGV4KToKKyAgICAgICAgKFdURjo6RE9NSklUR2V0dGVyQ29tcGxleDo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKFdURjo6RE9NSklUR2V0dGVyQ29tcGxleDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdURjo6RE9NSklUR2V0dGVyQ29tcGxleDo6RE9NSklUTm9kZURPTUpJVDo6RE9NSklUTm9k
ZURPTUpJVCk6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlckNvbXBsZXg6OmRvbUpJVE5vZGVH
ZXR0ZXJTZXR0ZXIpOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXJDb21wbGV4OjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlckNvbXBsZXg6OmN1c3RvbUdldHRl
cik6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKGZ1
bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyQ29tcGxleE9iamVjdCk6CisKIDIwMTYtMTAtMTIgIE1h
cmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSB2YXJpYWJsZXMg
aW4gYXJyYXlQcm90b0Z1bmNTcGxpY2UoKSB0byBtYXRjaCBuYW1lcyBpbiB0aGUgc3BlYy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCAyOTZlMzk3YmQ3ZGYwMzZiMTE5MmVlZmI4NzBlMzFkMmU1NjIxMTQ5Li5jMTI1
NjdhYjEwNGE3YTQwZmExOGVmNzViMzNhODdjNDc1ZjkzMmNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTkgQEAKKzIwMTYtMTAtMTMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CisKKyAgICAgICAgW0RPTUpJVF0gVXNlIERPTUpJVDo6UGF0Y2hwb2ludCBpbiBJQworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjIzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBET01KSVRQ
YXRjaHBvaW50UGFyYW1zIG5vbi1jb25zdC4KKworICAgICAgICAqIGRvbWppdC9ET01KSVRIZWxw
ZXJzLmg6CisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJzOjp0b1dyYXBwZXIpOgorICAg
ICAgICAqIGRvbWppdC9KU05vZGVET01KSVQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Q2FsbERPTUZvck9mZnNldEFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja05vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZU5vZGVUeXBlRE9NSklUOjpjYWxsRE9NKToKKwogMjAxNi0x
MC0xMiAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtNb2Rl
cm4gTWVkaWEgQ29udHJvbHNdIFNsaWRlcnM6IHNjcnViYmVyIGFuZCB2b2x1bWUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA1N2NlZmY2NjE0NmI5OThjNTEzYmEwN2UxOTZi
YzBmY2NhYmMyZDlmLi4wZGUxOTVhMDcxNjAwMGZlMWZlNzhmYmNlNmNiNWRkZmI3ZjMwZjQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMDIsNiArMjAyLDcgQEAgc2V0
KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBieXRlY29kZS9Db21wbGV4R2V0U3RhdHVzLmNw
cAogICAgIGJ5dGVjb2RlL0RhdGFGb3JtYXQuY3BwCiAgICAgYnl0ZWNvZGUvREZHRXhpdFByb2Zp
bGUuY3BwCisgICAgYnl0ZWNvZGUvRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3Bw
CiAgICAgYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcAogICAgIGJ5dGVj
b2RlL0RlZmVycmVkU291cmNlRHVtcC5jcHAKICAgICBieXRlY29kZS9FeGVjdXRpb25Db3VudGVy
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNDRiMmM0ZDMyNjJkNDE5NTE0
YzkxNGNlZGJmM2M1YWE5ZWZmM2ZhLi40ZWMzZDFmY2U5YjdlMjE3NmFlYzRkMjY1ZDVlY2Q0Yzk0
NTUzMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjExMCw2ICsyMTEwLDgg
QEAKIAkJRTM5REE0QTYxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOURBNEE0MUI3RThC
N0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi87IH07CiAJCUUzOURBNEE3MUI3RThC
N0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxl
UmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTNBNDIxNDMxRDZGNTg5MzAwMDdDNjE3IC8qIFByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTQyMTQy
MUQ2RjU4OEYwMDA3QzYxNyAvKiBQcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTNCRkQwQkIxREFGODA4
NzAwNjVERUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQkZEMEI5MURBRjgwN0Mw
MDY1REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHAgKi87IH07CisJ
CUUzQkZEMEJDMURBRjgwOEUwMDY1REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBh
cmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNC
RkQwQkExREFGODA3QzAwNjVERUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1z
LmggKi87IH07CiAJCUUzQzA4RTNDMURBNDFCODEwMDM5NDc4RiAvKiBET01KSVRQYXRjaHBvaW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0MwOEUz
QjFEQTQxQjdCMDAzOTQ3OEYgLyogRE9NSklUUGF0Y2hwb2ludC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRDIzOUM4MUI4MjlDMUMwMEJCRUY2
NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVu
dmlyb25tZW50LmNwcCAqLzsgfTsKIAkJRTNEMjM5QzkxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9k
dWxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ0MTUs
NiArNDQxNyw4IEBACiAJCUUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29y
ZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZVJlY29y
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOURBNEE1MUI3RThCN0MwMDg0
RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU01vZHVsZVJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0E0MjE0
MjFENkY1ODhGMDAwN0M2MTcgLyogUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQkZEMEI5MURBRjgwN0MwMDY1REVBMiAvKiBE
T01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQkZEMEJBMURBRjgwN0MwMDY1REVBMiAvKiBE
T01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFM0MwOEUzQjFEQTQxQjdCMDAzOTQ3OEYgLyogRE9NSklUUGF0
Y2hwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01KSVRQYXRjaHBv
aW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQ0IxRTI0MURBNzU0MEEwMEZB
MUU1NiAvKiBET01KSVRTbG93UGF0aENhbGxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERPTUpJVFNsb3dQYXRoQ2FsbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVFbnZpcm9ubWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02ODEyLDYgKzY4MTYsOCBAQAogCQkJ
CTBGMEI4M0E1MTRCQ0Y1MDQwMDg4NUI0RiAvKiBDb2RlVHlwZS5oICovLAogCQkJCTBGNkZDNzRF
MTk2MTEwQTgwMEUxRDAyRCAvKiBDb21wbGV4R2V0U3RhdHVzLmNwcCAqLywKIAkJCQkwRjZGQzc0
RjE5NjExMEE4MDBFMUQwMkQgLyogQ29tcGxleEdldFN0YXR1cy5oICovLAorCQkJCUUzQkZEMEI5
MURBRjgwN0MwMDY1REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHAg
Ki8sCisJCQkJRTNCRkQwQkExREFGODA3QzAwNjVERUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRj
aHBvaW50UGFyYW1zLmggKi8sCiAJCQkJNjJFM0Q1RUYxQjhEMEI3MzAwQjg2OEJCIC8qIERhdGFG
b3JtYXQuY3BwICovLAogCQkJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAvKiBEYXRhRm9ybWF0
LmggKi8sCiAJCQkJMEZDNzEyREMxN0NEODc3ODAwOENDOTNDIC8qIERlZmVycmVkQ29tcGlsYXRp
b25DYWxsYmFjay5jcHAgKi8sCkBAIC03NTEzLDYgKzc1MTksNyBAQAogCQkJCTBGODM2NEI3MTY0
QjBDMTEwMDUzMzI5QSAvKiBERkdCcmFuY2hEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2RUM5REM1MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYyNTZDMzYxNjI3QjBBRDAwN0YyNzgzIC8qIERGR0NhbGxBcnJheUFsbG9j
YXRvclNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlFM0JGRDBCQzFEQUY4
MDhFMDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQkRCOUFEMUFCMEZCQzYwMDBCNTdFNSAvKiBERkdDYWxsQ3JlYXRlRGly
ZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0Iy
OTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRkZDOTU4MTRFRjkwQTIwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC05NDA3LDYgKzk0MTQsNyBAQAogCQkJCUUzNUUwMzVGMUI3QUI0M0UwMDczQUQyQSAv
KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTUzMjQzOEIxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBNTBFNEI2MTE4ODA5REQ1MDA2OEE0NkQgLyogSW5zcGVjdG9y
UnVudGltZUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzQkZEMEJCMURBRjgwODcwMDY1
REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBNTkzQ0Y4MjE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE0N0YzOUNGMTA3RUMzNzYwMDQyN0E0OCAvKiBJbnRlcm5hbEZ1
bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MjlEN0Q0MEVEMjEyODIwMEI4OTYxOSAv
KiBJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9ET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9p
bnRQYXJhbXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3MWE4MmIwMTEzZGZkYjkxZDU4YmU3NWYyNWQ5ZmVi
ZjFlNmJmMzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3BwCkBAIC0wLDAgKzEsMTIwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkRPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmgi
CisKKyNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCisjaW5jbHVkZSAiUG9seW1vcnBoaWNBY2Nlc3Mu
aCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgorCisjaWYgRU5BQkxFKEpJVCkKKwor
bmFtZXNwYWNlIEpTQyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBG
dW5jdGlvblR5cGUsIHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4K
K2NsYXNzIFNsb3dQYXRoQ2FsbEdlbmVyYXRvcldpdGhBcmd1bWVudHMgOiBwdWJsaWMgRE9NSklU
QWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXM6OlNsb3dQYXRoQ2FsbEdlbmVyYXRvciB7CitwdWJs
aWM6CisgICAgU2xvd1BhdGhDYWxsR2VuZXJhdG9yV2l0aEFyZ3VtZW50cyhKdW1wVHlwZSBmcm9t
LCBDQ2FsbEhlbHBlcnM6OkxhYmVsIHRvLCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sIFJlc3VsdFR5
cGUgcmVzdWx0LCBzdGQ6OnR1cGxlPEFyZ3VtZW50cy4uLj4gYXJndW1lbnRzKQorICAgICAgICA6
IG1fZnJvbShmcm9tKQorICAgICAgICAsIG1fdG8odG8pCisgICAgICAgICwgbV9mdW5jdGlvbihm
dW5jdGlvbikKKyAgICAgICAgLCBtX3Jlc3VsdChyZXN1bHQpCisgICAgICAgICwgbV9hcmd1bWVu
dHMoYXJndW1lbnRzKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxzaXplX3QuLi4gQXJn
dW1lbnRzSW5kZXg+CisgICAgdm9pZCBnZW5lcmF0ZUltcGwoVk0mIHZtLCBBY2Nlc3NHZW5lcmF0
aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVyc0J5UGF0Y2hw
b2ludCwgQ0NhbGxIZWxwZXJzJiBqaXQsIHN0ZDo6aW5kZXhfc2VxdWVuY2U8QXJndW1lbnRzSW5k
ZXguLi4+KQorICAgIHsKKyAgICAgICAgLy8gV2Ugc3BpbGwgKDEpIHRoZSB1c2VkIHJlZ2lzdGVy
cyBieSBJQyBhbmQgKDIpIHRoZSB1c2VkIHJlZ2lzdGVycyBieSBET01KSVQ6OlBhdGNocG9pbnQu
CisgICAgICAgIHN0YXRlLnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKHVzZWRS
ZWdpc3RlcnNCeVBhdGNocG9pbnQpOworCisgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhdGUuY2FsbFNpdGVJbmRleEZvckV4Y2Vw
dGlvbkhhbmRsaW5nT3JPcmlnaW5hbCgpLmJpdHMoKSksCisgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OnRhZ0ZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KENhbGxGcmFtZVNsb3Q6OmFy
Z3VtZW50Q291bnQpKSk7CisKKyAgICAgICAgaml0Lm1ha2VTcGFjZU9uU3RhY2tGb3JDQ2FsbCgp
OworCisgICAgICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgJnZt
LnRvcENhbGxGcmFtZSk7CisKKyAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgd2UgZG8gbm90
IGNoZWNrIGFueSBBUk0gRUFCSSAvIFNINCB0aGluZ3MgaGVyZS4KKyAgICAgICAgLy8gQnV0IGl0
IGlzIE9LIGJlY2F1c2UgYSBjb21waWxlIGVycm9yIGhhcHBlbnMgd2hlbiB5b3UgcGFzcyBKU1Zh
bHVlUmVncyBhcyBhbiBhcmd1bWVudC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MzA5OQorICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKHN0ZDo6Z2V0PEFyZ3VtZW50c0luZGV4PihtX2FyZ3VtZW50cykuLi4pOworCisg
ICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBvcGVyYXRpb25DYWxsID0gaml0LmNhbGwoKTsKKyAg
ICAgICAgYXV0byBmdW5jdGlvbiA9IG1fZnVuY3Rpb247CisgICAgICAgIGppdC5hZGRMaW5rVGFz
ayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAgICAgIGxpbmtCdWZmZXIu
bGluayhvcGVyYXRpb25DYWxsLCBGdW5jdGlvblB0cihmdW5jdGlvbikpOworICAgICAgICB9KTsK
KworICAgICAgICBqaXQuc2V0dXBSZXN1bHRzKG1fcmVzdWx0KTsKKyAgICAgICAgaml0LnJlY2xh
aW1TcGFjZU9uU3RhY2tGb3JDQ2FsbCgpOworCisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBu
b0V4Y2VwdGlvbiA9IGppdC5lbWl0RXhjZXB0aW9uQ2hlY2soQ0NhbGxIZWxwZXJzOjpJbnZlcnRl
ZEV4Y2VwdGlvbkNoZWNrKTsKKworICAgICAgICBzdGF0ZS5yZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zy
b21TdGFja0ZvckNhbGxXaXRoVGhyb3duRXhjZXB0aW9uKCk7CisgICAgICAgIHN0YXRlLmVtaXRF
eHBsaWNpdEV4Y2VwdGlvbkhhbmRsZXIoKTsKKworICAgICAgICBub0V4Y2VwdGlvbi5saW5rKCZq
aXQpOworICAgICAgICBib29sIGlzR2V0dGVyID0gdHJ1ZTsKKyAgICAgICAgc3RhdGUucmVzdG9y
ZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKGlzR2V0dGVyKTsKKyAgICB9CisKKyAgICB2
b2lkIGdlbmVyYXRlKFZNJiB2bSwgQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3Qg
UmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnNCeVBhdGNocG9pbnQsIENDYWxsSGVscGVycyYgaml0
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgbV9mcm9tLmxpbmsoJmppdCk7CisgICAgICAgIGdl
bmVyYXRlSW1wbCh2bSwgc3RhdGUsIHVzZWRSZWdpc3RlcnNCeVBhdGNocG9pbnQsIGppdCwgc3Rk
OjptYWtlX2luZGV4X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxzdGQ6OnR1cGxlPEFyZ3VtZW50
cy4uLj4+Ojp2YWx1ZT4oKSk7CisgICAgICAgIGppdC5qdW1wKCkubGlua1RvKG1fdG8sICZqaXQp
OworICAgIH0KKworcHJvdGVjdGVkOgorICAgIEp1bXBUeXBlIG1fZnJvbTsKKyAgICBDQ2FsbEhl
bHBlcnM6OkxhYmVsIG1fdG87CisgICAgRnVuY3Rpb25UeXBlIG1fZnVuY3Rpb247CisgICAgUmVz
dWx0VHlwZSBtX3Jlc3VsdDsKKyAgICBzdGQ6OnR1cGxlPEFyZ3VtZW50cy4uLj4gbV9hcmd1bWVu
dHM7Cit9OworCisjZGVmaW5lIEpTQ19ERUZJTkVfQ0FMTF9PUEVSQVRJT05TKE9wZXJhdGlvblR5
cGUsIFJlc3VsdFR5cGUsIC4uLikgXAorICAgIHZvaWQgRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9p
bnRQYXJhbXM6OmFkZFNsb3dQYXRoQ2FsbEltcGwoQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBmcm9t
LCBDQ2FsbEhlbHBlcnMmIGppdCwgT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIFJlc3VsdFR5cGUg
cmVzdWx0LCBzdGQ6OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBcCisgICAgeyBcCisgICAgICAg
IENDYWxsSGVscGVyczo6TGFiZWwgdG8gPSBqaXQubGFiZWwoKTsgXAorICAgICAgICBtX2dlbmVy
YXRvcnMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2xvd1BhdGhDYWxsR2VuZXJhdG9yV2l0aEFy
Z3VtZW50czxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0LCBPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBl
LCBfX1ZBX0FSR1NfXz4+KGZyb20sIHRvLCBvcGVyYXRpb24sIHJlc3VsdCwgYXJncykpOyBcCisg
ICAgfSBcCisKK0RPTUpJVF9TTE9XX1BBVEhfQ0FMTFMoSlNDX0RFRklORV9DQUxMX09QRVJBVElP
TlMpCisjdW5kZWYgSlNDX0RFRklORV9DQUxMX09QRVJBVElPTlMKKwordm9pZCBET01KSVRBY2Nl
c3NDYXNlUGF0Y2hwb2ludFBhcmFtczo6ZW1pdFNsb3dQYXRoQ2FsbHMoVk0mIHZtLCBBY2Nlc3NH
ZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVyc0J5
UGF0Y2hwb2ludCwgQ0NhbGxIZWxwZXJzJiBqaXQpCit7CisgICAgZm9yIChhdXRvJiBnZW5lcmF0
b3IgOiBtX2dlbmVyYXRvcnMpCisgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGUodm0sIHN0YXRl
LCB1c2VkUmVnaXN0ZXJzQnlQYXRjaHBvaW50LCBqaXQpOworfQorCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RPTUpJVEFjY2Vzc0Nhc2VQ
YXRjaHBvaW50UGFyYW1zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRE9NSklU
QWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YWNmNDM1NDg0OGVjNzc2
YjlmOTg2YjhkYTRhMGQzMjJlNjQyMzQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0RPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmgKQEAg
LTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkRPTUpJVFBh
dGNocG9pbnRQYXJhbXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBBY2Nlc3NHZW5l
cmF0aW9uU3RhdGU7CisKK2NsYXNzIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zIDog
cHVibGljIERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyB7CitwdWJsaWM6CisgICAgRE9NSklUQWNj
ZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMoVmVjdG9yPERPTUpJVDo6VmFsdWU+JiYgcmVncywgVmVj
dG9yPEdQUlJlZz4mJiBncFNjcmF0Y2gsIFZlY3RvcjxGUFJSZWc+JiYgZnBTY3JhdGNoKQorICAg
ICAgICA6IERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyhXVEZNb3ZlKHJlZ3MpLCBXVEZNb3ZlKGdw
U2NyYXRjaCksIFdURk1vdmUoZnBTY3JhdGNoKSkKKyAgICB7CisgICAgfQorCisgICAgY2xhc3Mg
U2xvd1BhdGhDYWxsR2VuZXJhdG9yIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgflNs
b3dQYXRoQ2FsbEdlbmVyYXRvcigpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGUo
Vk0mLCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lz
dGVyc0J5UGF0Y2hwb2ludCwgQ0NhbGxIZWxwZXJzJikgPSAwOworICAgIH07CisKKyAgICB2b2lk
IGVtaXRTbG93UGF0aENhbGxzKFZNJiwgQWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgUmVn
aXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnNCeVBhdGNocG9pbnQsIENDYWxsSGVscGVycyYpOworCitw
cml2YXRlOgorI2RlZmluZSBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUyhPcGVyYXRpb25UeXBl
LCBSZXN1bHRUeXBlLCAuLi4pIHZvaWQgYWRkU2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0LCBDQ2FsbEhlbHBlcnMmLCBPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCBzdGQ6
OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBvdmVycmlkZTsKKyAgICBET01KSVRfU0xPV19QQVRI
X0NBTExTKEpTQ19ERUZJTkVfQ0FMTF9PUEVSQVRJT05TKQorI3VuZGVmIEpTQ19ERUZJTkVfQ0FM
TF9PUEVSQVRJT05TCisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aENhbGxHZW5l
cmF0b3I+PiBtX2dlbmVyYXRvcnM7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggOWE4
YThlNTIwMDk4YTk2YWU2ZGM4NTA5ZjAyZjE1MzFhMDAxMjU2MC4uYTBlYmQ1Yzk2NDViYWJlNDc2
ZmZiNzQyMmYwYTAyN2UxMDU1OTcwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC0zMSw2ICszMSw4IEBACiAjaW5j
bHVkZSAiQmluYXJ5U3dpdGNoLmgiCiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJh
bXMuaCIKKyNpbmNsdWRlICJET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oIgogI2luY2x1ZGUgIkRp
cmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhl
YXAuaCIKQEAgLTc0LDcgKzc2LDExIEBAIHZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpzdWNj
ZWVkKCkKIAogdm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OmNhbGN1bGF0ZUxpdmVSZWdpc3Rl
cnNGb3JDYWxsQW5kRXhjZXB0aW9uSGFuZGxpbmcoY29uc3QgUmVnaXN0ZXJTZXQmIGV4dHJhKQog
eworICAgIGlmIChtX2V4dHJhTGl2ZVJlZ2lzdGVyc0ZvckNhbGwgIT0gZXh0cmEpCisgICAgICAg
IG1fY2FsY3VsYXRlZFJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRpb25IYW5kbGluZyA9IGZhbHNl
OworCiAgICAgaWYgKCFtX2NhbGN1bGF0ZWRSZWdpc3RlcnNGb3JDYWxsQW5kRXhjZXB0aW9uSGFu
ZGxpbmcpIHsKKyAgICAgICAgbV9leHRyYUxpdmVSZWdpc3RlcnNGb3JDYWxsID0gZXh0cmE7CiAg
ICAgICAgIG1fY2FsY3VsYXRlZFJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRpb25IYW5kbGluZyA9
IHRydWU7CiAKICAgICAgICAgbV9saXZlUmVnaXN0ZXJzVG9QcmVzZXJ2ZUF0RXhjZXB0aW9uSGFu
ZGxpbmdDYWxsU2l0ZSA9IGppdC0+Y29kZUJsb2NrKCktPmppdENvZGUoKS0+bGl2ZVJlZ2lzdGVy
c1RvUHJlc2VydmVBdEV4Y2VwdGlvbkhhbmRsaW5nQ2FsbFNpdGUoaml0LT5jb2RlQmxvY2soKSwg
c3R1YkluZm8tPmNhbGxTaXRlSW5kZXgpOwpAQCAtOTMyLDYgKzkzOCwxMTUgQEAgdm9pZCBBY2Nl
c3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCisgICAgICAgIGlmIChtX3R5cGUgPT0gQ3VzdG9t
QWNjZXNzb3JHZXR0ZXIgJiYgbV9yYXJlRGF0YS0+ZG9tSklUKSB7CisgICAgICAgICAgICAvLyBX
ZSBkbyBub3QgbmVlZCB0byBlbWl0IENoZWNrRE9NIG9wZXJhdGlvbiBzaW5jZSBzdHJ1Y3R1cmUg
Y2hlY2sgZW5zdXJlcworICAgICAgICAgICAgLy8gdGhhdCB0aGUgc3RydWN0dXJlIG9mIHRoZSBn
aXZlbiBiYXNlIHZhbHVlISBTbyBhbGwgd2Ugc2hvdWxkIGRvIGlzIHBlcmZvcm1pbmcKKyAgICAg
ICAgICAgIC8vIHRoZSBDaGVja0RPTSB0aGluZ3kgaW4gSUMgY29tcGlsaW5nIHRpbWUuCisgICAg
ICAgICAgICBpZiAoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpLT5pc1N1YkNsYXNzT2YobV9yYXJl
RGF0YS0+ZG9tSklULT50aGlzQ2xhc3NJbmZvKCkpKSB7CisgICAgICAgICAgICAgICAgLy8gV2Ug
Y29uc3RydWN0IHRoZSBlbnZpcm9ubWVudCB0aGF0IGNhbiBleGVjdXRlIHRoZSBET01KSVQ6OlBh
dGNocG9pbnQgaGVyZS4KKyAgICAgICAgICAgICAgICBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hw
b2ludD4gcGF0Y2hwb2ludCA9IG1fcmFyZURhdGEtPmRvbUpJVC0+Y2FsbERPTSgpOworCisgICAg
ICAgICAgICAgICAgVmVjdG9yPEdQUlJlZz4gZ3BTY3JhdGNoOworICAgICAgICAgICAgICAgIFZl
Y3RvcjxGUFJSZWc+IGZwU2NyYXRjaDsKKyAgICAgICAgICAgICAgICBWZWN0b3I8RE9NSklUOjpW
YWx1ZT4gcmVnczsKKworICAgICAgICAgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBh
bGxvY2F0b3Ioc3R1YkluZm8ucGF0Y2gudXNlZFJlZ2lzdGVycyk7CisgICAgICAgICAgICAgICAg
YWxsb2NhdG9yLmxvY2soYmFzZUdQUik7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAg
ICAgICAgICBhbGxvY2F0b3IubG9jayhzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNo
LmJhc2VUYWdHUFIpKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGFsbG9jYXRvci5sb2NrKHZh
bHVlUmVncyk7CisgICAgICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2soc2NyYXRjaEdQUik7CisK
KyAgICAgICAgICAgICAgICBHUFJSZWcgcGFyYW1CYXNlR1BSID0gSW52YWxpZEdQUlJlZzsKKyAg
ICAgICAgICAgICAgICBHUFJSZWcgcGFyYW1HbG9iYWxPYmplY3RHUFIgPSBJbnZhbGlkR1BSUmVn
OworICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHBhcmFtVmFsdWVSZWdzID0gdmFsdWVSZWdz
OworICAgICAgICAgICAgICAgIEdQUlJlZyByZW1haW5pbmdTY3JhdGNoR1BSID0gSW52YWxpZEdQ
UlJlZzsKKworICAgICAgICAgICAgICAgIC8vIHZhbHVlUmVncyBhbmQgYmFzZUZvckdldEdQUiBt
YXkgYmUgdGhlIHNhbWUuIEZvciBleGFtcGxlLCBpbiBCYXNlbGluZSBKSVQsIHdlIHBhc3MgdGhl
IHNhbWUgcmVnVDAgZm9yIGJhc2VHUFIgYW5kIHZhbHVlUmVncy4KKyAgICAgICAgICAgICAgICAv
LyBJbiBGVEwsIHRoZXJlIGlzIG5vIGNvbnN0cmFpbnQgdGhhdCB0aGUgYmFzZUZvckdldEdQUiBp
bnRlcmZlcmVzIHdpdGggdGhlIHJlc3VsdC4gVG8gbWFrZSBpbXBsZW1lbnRhdGlvbiBzaW1wbGUg
aW4KKyAgICAgICAgICAgICAgICAvLyBET01KSVQ6OlBhdGNocG9pbnQsIERPTUpJVDo6UGF0Y2hw
b2ludCBhc3N1bWVzIHRoYXQgcmVzdWx0IHJlZ2lzdGVycyBhbHdheXMgZWFybHkgaW50ZXJmZXJl
IHdpdGggaW5wdXQgcmVnaXN0ZXJzLCBpbiB0aGlzIGNhc2UsCisgICAgICAgICAgICAgICAgLy8g
YmFzZUZvckdldEdQUi4gU28gd2UgbW92ZSBiYXNlRm9yR2V0R1BSIHRvIHRoZSBvdGhlciByZWdp
c3RlciBpZiBiYXNlRm9yR2V0R1BSID09IHZhbHVlUmVncy4KKyAgICAgICAgICAgICAgICBpZiAo
YmFzZUZvckdldEdQUiAhPSB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpKSB7CisgICAgICAgICAgICAg
ICAgICAgIHBhcmFtQmFzZUdQUiA9IGJhc2VGb3JHZXRHUFI7CisgICAgICAgICAgICAgICAgICAg
IGlmICghcGF0Y2hwb2ludC0+cmVxdWlyZUdsb2JhbE9iamVjdCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJlbWFpbmluZ1NjcmF0Y2hHUFIgPSBzY3JhdGNoR1BSOworICAgICAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbUdsb2JhbE9iamVjdEdQUiA9
IHNjcmF0Y2hHUFI7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgaml0Lm1vdmUodmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgc2NyYXRjaEdQUik7CisgICAgICAg
ICAgICAgICAgICAgIHBhcmFtQmFzZUdQUiA9IHNjcmF0Y2hHUFI7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChwYXRjaHBvaW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0KQorICAgICAgICAgICAgICAg
ICAgICAgICAgcGFyYW1HbG9iYWxPYmplY3RHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNo
R1BSKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmVncy5hcHBlbmQo
cGFyYW1WYWx1ZVJlZ3MpOworICAgICAgICAgICAgICAgIGlmIChwYXJhbUdsb2JhbE9iamVjdEdQ
UiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgICAgICAgICByZWdzLmFwcGVuZChwYXJh
bUdsb2JhbE9iamVjdEdQUik7CisgICAgICAgICAgICAgICAgcmVncy5hcHBlbmQocGFyYW1CYXNl
R1BSKTsKKworICAgICAgICAgICAgICAgIGlmIChwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdp
c3RlcnMpIHsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaSA9IDA7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChyZW1haW5pbmdTY3JhdGNoR1BSICE9IEludmFsaWRHUFJSZWcpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGdwU2NyYXRjaC5hcHBlbmQocmVtYWluaW5nU2NyYXRjaEdQ
Uik7CisgICAgICAgICAgICAgICAgICAgICAgICArK2k7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgZm9yICg7IGkgPCBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hS
ZWdpc3RlcnM7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdwU2NyYXRjaC5hcHBlbmQo
YWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0Y2hwb2ludC0+bnVtRlBT
Y3JhdGNoUmVnaXN0ZXJzOyArK2kpCisgICAgICAgICAgICAgICAgICAgIGZwU2NyYXRjaC5hcHBl
bmQoYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEZQUigpKTsKKworICAgICAgICAgICAgICAgIC8v
IExldCdzIHN0b3JlIHRoZSByZXVzZWQgcmVnaXN0ZXJzIHRvIHRoZSBzdGFjay4gQWZ0ZXIgdGhh
dCwgd2UgY2FuIHVzZSBhbGxvY2F0ZWQgc2NyYXRjaCByZWdpc3RlcnMuCisgICAgICAgICAgICAg
ICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0
ZSA9CisgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVy
c0J5UHVzaGluZyhqaXQsIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6RXh0cmFTdGFja1NwYWNl
OjpTcGFjZUZvckNDYWxsKTsKKworICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coImJhc2VHUFIgPSAiLCBiYXNlR1BSLCAiXG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZygidmFsdWVSZWdzID0gIiwgdmFsdWVSZWdzLCAiXG4i
KTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygic2NyYXRjaEdQUiA9ICIsIHNjcmF0Y2hH
UFIsICJcbiIpOworICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJwYXJhbUJhc2VHUFIgPSAi
LCBwYXJhbUJhc2VHUFIsICJcbiIpOworICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1HbG9i
YWxPYmplY3RHUFIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2coInBhcmFtR2xvYmFsT2JqZWN0R1BSID0gIiwgcGFyYW1HbG9iYWxPYmplY3RHUFIsICJc
biIpOworICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJwYXJhbVZhbHVlUmVncyA9ICIsIHBh
cmFtVmFsdWVSZWdzLCAiXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVyczsgKytpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZygiZ3BTY3JhdGNoWyIsIGksICJdID0gIiwgZ3BTY3Jh
dGNoW2ldLCAiXG4iKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAo
cGF0Y2hwb2ludC0+cmVxdWlyZUdsb2JhbE9iamVjdCkgeworICAgICAgICAgICAgICAgICAgICBq
aXQuZW1pdExvYWRTdHJ1Y3R1cmUocGFyYW1CYXNlR1BSLCBwYXJhbUdsb2JhbE9iamVjdEdQUiwg
dmFsdWVSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgICAgICAgICAgICAgICAgIGppdC5sb2FkUHRy
KENDYWxsSGVscGVyczo6QWRkcmVzcyhwYXJhbUdsb2JhbE9iamVjdEdQUiwgU3RydWN0dXJlOjpn
bG9iYWxPYmplY3RPZmZzZXQoKSksIHBhcmFtR2xvYmFsT2JqZWN0R1BSKTsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3QgbmVlZCB0byBzcGlsbCBsb2Nr
ZWQgcmVnaXN0ZXJzIHNpbmNlIHRoZSBjYWxsZXIgKEJhc2VsaW5lLCBERkcsIGFuZCBGVEwpCisg
ICAgICAgICAgICAgICAgLy8gbXVzdCBhc3N1bWUgdGhhdCB0aGV5IGNhbiBiZSBjbG9iYmVyZWQg
aW4gdGhlIElDIGZhc3QgcGF0aCBpZiBpdCBzdWNjZWVkcy4KKyAgICAgICAgICAgICAgICBSZWdp
c3RlclNldCByZWdpc3RlcnNUb1NwaWxsRm9yQ0NhbGw7CisgICAgICAgICAgICAgICAgZm9yIChh
dXRvJiB2YWx1ZSA6IHJlZ3MpIHsKKyAgICAgICAgICAgICAgICAgICAgRE9NSklUOjpSZWcgcmVn
ID0gdmFsdWUucmVnKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZWcuaXNKU1ZhbHVlUmVn
cygpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLnNl
dChyZWcuanNWYWx1ZVJlZ3MoKSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlZy5p
c0dQUigpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxs
LnNldChyZWcuZ3ByKCkpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgICAgICByZWdpc3RlcnNUb1NwaWxsRm9yQ0NhbGwuc2V0KHJlZy5mcHIoKSk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZvciAoR1BSUmVnIHJlZyA6IGdwU2NyYXRj
aCkKKyAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLnNldChyZWcp
OworICAgICAgICAgICAgICAgIGZvciAoRlBSUmVnIHJlZyA6IGZwU2NyYXRjaCkKKyAgICAgICAg
ICAgICAgICAgICAgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLnNldChyZWcpOworICAgICAgICAg
ICAgICAgIHJlZ2lzdGVyc1RvU3BpbGxGb3JDQ2FsbC5leGNsdWRlKFJlZ2lzdGVyU2V0OjpyZWdp
c3RlcnNUb05vdFNhdmVGb3JDQ2FsbCgpKTsKKworICAgICAgICAgICAgICAgIERPTUpJVEFjY2Vz
c0Nhc2VQYXRjaHBvaW50UGFyYW1zIHBhcmFtcyhXVEZNb3ZlKHJlZ3MpLCBXVEZNb3ZlKGdwU2Ny
YXRjaCksIFdURk1vdmUoZnBTY3JhdGNoKSk7CisgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+
Z2VuZXJhdG9yKCktPnJ1bihqaXQsIHBhcmFtcyk7CisgICAgICAgICAgICAgICAgYWxsb2NhdG9y
LnJlc3RvcmVSZXVzZWRSZWdpc3RlcnNCeVBvcHBpbmcoaml0LCBwcmVzZXJ2ZWRTdGF0ZSk7Cisg
ICAgICAgICAgICAgICAgc3RhdGUuc3VjY2VlZCgpOworCisgICAgICAgICAgICAgICAgcGFyYW1z
LmVtaXRTbG93UGF0aENhbGxzKHZtLCBzdGF0ZSwgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLCBq
aXQpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CiAgICAgICAgIC8vIFN0dWZmIGZvciBjdXN0b20gZ2V0dGVycy9zZXR0ZXJzLgogICAgICAgICBD
Q2FsbEhlbHBlcnM6OkNhbGwgb3BlcmF0aW9uQ2FsbDsKIApAQCAtOTQwLDkgKzEwNTUsNiBAQCB2
b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRl
KQogICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgZmFzdFBhdGhDYWxsOwogICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOwogCi0gICAgICAgIENDYWxsSGVscGVyczo6SnVt
cCBzdWNjZXNzOwotICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZmFpbDsKLQogICAgICAgICAv
LyBUaGlzIGFsc28gZG9lcyB0aGUgbmVjZXNzYXJ5IGNhbGN1bGF0aW9ucyBvZiB3aGV0aGVyIG9y
IG5vdCB3ZSdyZSBhbgogICAgICAgICAvLyBleGNlcHRpb24gaGFuZGxpbmcgY2FsbCBzaXRlLgog
ICAgICAgICBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaApp
bmRleCA5NzBhMjM1YmZkZTMyZTYzYWY2Yjk1ZGFmZjczMjNjMmI5NDhjNjVjLi5mYzJiMGMxZGNm
MWEzZmIzN2QzZmVjZDI0YjZjNjU2YmFhZjJiZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaApAQCAtNTE0LDYgKzUxNCw3IEBA
IHN0cnVjdCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUgewogICAgICAgICByZXR1cm4gbV9saXZlUmVn
aXN0ZXJzVG9QcmVzZXJ2ZUF0RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZTsKICAgICB9CiAgICAg
CisgICAgUmVnaXN0ZXJTZXQgbV9leHRyYUxpdmVSZWdpc3RlcnNGb3JDYWxsOwogICAgIFJlZ2lz
dGVyU2V0IG1fbGl2ZVJlZ2lzdGVyc1RvUHJlc2VydmVBdEV4Y2VwdGlvbkhhbmRsaW5nQ2FsbFNp
dGU7CiAgICAgUmVnaXN0ZXJTZXQgbV9saXZlUmVnaXN0ZXJzRm9yQ2FsbDsKICAgICBDYWxsU2l0
ZUluZGV4IG1fY2FsbFNpdGVJbmRleCB7IENhbGxTaXRlSW5kZXgoc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdET01KSVRQYXRjaHBvaW50UGFyYW1zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5jcHAKaW5kZXggMGExMWM2NzEzNDdkNzFi
ZmRhMzUxOTMwZTdjYjU1ZjFhNWVjNmYwNy4uOGVkNzdiNTJlZWNjYzUzYTA5NTQ2MTI4NmE1ODMx
YWI3ZGQxNWNiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdET01K
SVRQYXRjaHBvaW50UGFyYW1zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuY3BwCkBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyB2b2lk
IGRpc3BhdGNoKFNwZWN1bGF0aXZlSklUKiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QgZnJv
bSwgT3BlcmF0aW9uCiB9CiAKICNkZWZpbmUgSlNDX0RFRklORV9DQUxMX09QRVJBVElPTlMoT3Bl
cmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwgLi4uKSBcCi0gICAgdm9pZCBET01KSVRQYXRjaHBvaW50
UGFyYW1zOjphZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExpc3QgZnJvbSwg
Q0NhbGxIZWxwZXJzJiwgT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIFJlc3VsdFR5cGUgcmVzdWx0
LCBzdGQ6OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBjb25zdCBcCisgICAgdm9pZCBET01KSVRQ
YXRjaHBvaW50UGFyYW1zOjphZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExp
c3QgZnJvbSwgQ0NhbGxIZWxwZXJzJiwgT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIFJlc3VsdFR5
cGUgcmVzdWx0LCBzdGQ6OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBcCiAgICAgeyBcCiAgICAg
ICAgIGRpc3BhdGNoKG1faml0LCBmcm9tLCBvcGVyYXRpb24sIHJlc3VsdCwgYXJncywgc3RkOjpt
YWtlX2luZGV4X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxkZWNsdHlwZShhcmdzKT46OnZhbHVl
PigpKTsgXAogICAgIH0gXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdET01KSVRQYXRjaHBvaW50UGFyYW1zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaAppbmRleCA0NmZkZDRiZTYwMDRmMzMxZDdhOTk2Y2Ex
NjZiYTYxMzAwMjA5ZjgyLi5mYjZhYjBiMmM2ODM3MTkyYTI4YjdlNjUxNTc0YzA1NTVlMTU1ZWI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RPTUpJVFBhdGNocG9p
bnRQYXJhbXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RPTUpJVFBhdGNo
cG9pbnRQYXJhbXMuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBET01KSVRQYXRjaHBvaW50UGFy
YW1zIDogcHVibGljIERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyB7CiAgICAgfQogCiBwcml2YXRl
OgotI2RlZmluZSBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUyhPcGVyYXRpb25UeXBlLCBSZXN1
bHRUeXBlLCAuLi4pIHZvaWQgYWRkU2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBlcnM6Okp1bXBM
aXN0LCBDQ2FsbEhlbHBlcnMmLCBPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCBzdGQ6OnR1cGxl
PF9fVkFfQVJHU19fPiBhcmdzKSBjb25zdCBvdmVycmlkZTsKKyNkZWZpbmUgSlNDX0RFRklORV9D
QUxMX09QRVJBVElPTlMoT3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwgLi4uKSB2b2lkIGFkZFNs
b3dQYXRoQ2FsbEltcGwoQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzJiwgT3Bl
cmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwgc3RkOjp0dXBsZTxfX1ZBX0FSR1NfXz4gYXJncykgb3Zl
cnJpZGU7CiAgICAgRE9NSklUX1NMT1dfUEFUSF9DQUxMUyhKU0NfREVGSU5FX0NBTExfT1BFUkFU
SU9OUykKICN1bmRlZiBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUUGF0Y2hwb2ludC5oCmluZGV4IDM4NjA4ZTI1Njlh
MmFjZTY5MTBiMjg5MTkwN2Y1YmRiOGE5NTljNDMuLmJiOWY1ZTRmOWI4N2YyMTM3NTNmYWI4YTU5
ZjAwNzk4ZGY2OTBmMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQv
RE9NSklUUGF0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9N
SklUUGF0Y2hwb2ludC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgRE9NSklUIHsKIAogY2xhc3MgUGF0Y2hwb2ludFBhcmFtczsKIAotdHlwZWRlZiBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0IFBhdGNocG9pbnRHZW5lcmF0b3JGdW5jdGlvbihDQ2FsbEhlbHBlcnMm
LCBjb25zdCBQYXRjaHBvaW50UGFyYW1zJik7Cit0eXBlZGVmIENDYWxsSGVscGVyczo6SnVtcExp
c3QgUGF0Y2hwb2ludEdlbmVyYXRvckZ1bmN0aW9uKENDYWxsSGVscGVycyYsIFBhdGNocG9pbnRQ
YXJhbXMmKTsKIHR5cGVkZWYgU2hhcmVkVGFzazxQYXRjaHBvaW50R2VuZXJhdG9yRnVuY3Rpb24+
IFBhdGNocG9pbnRHZW5lcmF0b3I7CiAKIC8vIERPTUpJVCBwYXRjaHBvaW50IGlzIHRoZSB3YXkg
dG8gaW5qZWN0IGFuIG9wYXF1ZSBjb2RlIGdlbmVyYXRvciBpbnRvIERGRyBhbmQgRlRMLgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRQYXRjaHBvaW50UGFy
YW1zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnRQYXJh
bXMuaAppbmRleCBhZWVjZTFiN2UyOTZlZDE0YjQ2ZTRlZDY5MDg3MWQwMmEwNzY4MjM0Li5kODNi
NmIwYmYxNjY0MDViZmM0ZGM4ZTMxNTRkMTA5ZGVhMjhmMTA4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaApAQCAtNTUs
MTMgKzU1LDEzIEBAIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhdGNocG9pbnRQYXJhbXMpOwogICAg
IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0
VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAgIHZvaWQgYWRkU2xvd1BhdGhDYWxsKEND
YWxsSGVscGVyczo6SnVtcExpc3QgZnJvbSwgQ0NhbGxIZWxwZXJzJiBqaXQsIEZ1bmN0aW9uVHlw
ZSBmdW5jdGlvbiwgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpIGNv
bnN0CisgICAgdm9pZCBhZGRTbG93UGF0aENhbGwoQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBmcm9t
LCBDQ2FsbEhlbHBlcnMmIGppdCwgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLCBSZXN1bHRUeXBlIHJl
c3VsdCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKICAgICB7CiAgICAgICAgIGFkZFNsb3dQYXRo
Q2FsbEltcGwoZnJvbSwgaml0LCBmdW5jdGlvbiwgcmVzdWx0LCBzdGQ6Om1ha2VfdHVwbGUoYXJn
dW1lbnRzLi4uKSk7CiAgICAgfQogCiBwcml2YXRlOgotI2RlZmluZSBKU0NfREVGSU5FX0NBTExf
T1BFUkFUSU9OUyhPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCAuLi4pIEpTX0VYUE9SVF9QUklW
QVRFIHZpcnR1YWwgdm9pZCBhZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExp
c3QsIENDYWxsSGVscGVycyYsIE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUsIHN0ZDo6dHVwbGU8
X19WQV9BUkdTX18+IGFyZ3MpIGNvbnN0ID0gMDsKKyNkZWZpbmUgSlNDX0RFRklORV9DQUxMX09Q
RVJBVElPTlMoT3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwgLi4uKSBKU19FWFBPUlRfUFJJVkFU
RSB2aXJ0dWFsIHZvaWQgYWRkU2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
LCBDQ2FsbEhlbHBlcnMmLCBPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCBzdGQ6OnR1cGxlPF9f
VkFfQVJHU19fPiBhcmdzKSA9IDA7CiAgICAgRE9NSklUX1NMT1dfUEFUSF9DQUxMUyhKU0NfREVG
SU5FX0NBTExfT1BFUkFUSU9OUykKICN1bmRlZiBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTERPTUpJVFBhdGNocG9p
bnRQYXJhbXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExET01KSVRQYXRjaHBv
aW50UGFyYW1zLmNwcAppbmRleCBhYTIyNTU4NzgwNjBjNWY0ZmZlOWJlMWEzN2UzZjJjNDg1N2Ji
NDgxLi4xMDZlMmU1NjE5OGI0YzFjY2U0ZDM0MTZiZWEwZTZiYjI4ZTM1NGViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTERPTUpJVFBhdGNocG9pbnRQYXJhbXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRE9NSklUUGF0Y2hwb2ludFBhcmFt
cy5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIHZvaWQgZGlzcGF0Y2goQ0NhbGxIZWxwZXJz
JiBqaXQsIEZUTDo6U3RhdGUqIHN0YXRlLCBjb25zdCBCMzo6U3RhY2ttYXBHZW4KIH0KIAogI2Rl
ZmluZSBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUyhPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBl
LCAuLi4pIFwKLSAgICB2b2lkIERPTUpJVFBhdGNocG9pbnRQYXJhbXM6OmFkZFNsb3dQYXRoQ2Fs
bEltcGwoQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBmcm9tLCBDQ2FsbEhlbHBlcnMmIGppdCwgT3Bl
cmF0aW9uVHlwZSBvcGVyYXRpb24sIFJlc3VsdFR5cGUgcmVzdWx0LCBzdGQ6OnR1cGxlPF9fVkFf
QVJHU19fPiBhcmdzKSBjb25zdCBcCisgICAgdm9pZCBET01KSVRQYXRjaHBvaW50UGFyYW1zOjph
ZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExpc3QgZnJvbSwgQ0NhbGxIZWxw
ZXJzJiBqaXQsIE9wZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBSZXN1bHRUeXBlIHJlc3VsdCwgc3Rk
Ojp0dXBsZTxfX1ZBX0FSR1NfXz4gYXJncykgXAogICAgIHsgXAogICAgICAgICBkaXNwYXRjaChq
aXQsICZtX3N0YXRlLCBtX3BhcmFtcywgbV9ub2RlLCBtX2V4Y2VwdGlvbnMsIGZyb20sIG9wZXJh
dGlvbiwgcmVzdWx0LCBhcmdzLCBzdGQ6Om1ha2VfaW5kZXhfc2VxdWVuY2U8c3RkOjp0dXBsZV9z
aXplPGRlY2x0eXBlKGFyZ3MpPjo6dmFsdWU+KCkpOyBcCiAgICAgfSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oCmluZGV4
IDJkMTNlZWFhN2Q1ODdjYjQ3ZTkzNzczMTI2ZmY3MDU5MzY0NDNmN2EuLjMzODdjOTA4NmUxMzY2
MTI4NGY1NzhjNmNhNDQ0MmUyNzRjMGNmZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oCkBAIC00Niw3ICs0Niw3IEBA
IGNsYXNzIERPTUpJVFBhdGNocG9pbnRQYXJhbXMgOiBwdWJsaWMgRE9NSklUOjpQYXRjaHBvaW50
UGFyYW1zIHsKICAgICB9CiAKIHByaXZhdGU6Ci0jZGVmaW5lIEpTQ19ERUZJTkVfQ0FMTF9PUEVS
QVRJT05TKE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUsIC4uLikgdm9pZCBhZGRTbG93UGF0aENh
bGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExpc3QsIENDYWxsSGVscGVycyYsIE9wZXJhdGlvblR5
cGUsIFJlc3VsdFR5cGUsIHN0ZDo6dHVwbGU8X19WQV9BUkdTX18+IGFyZ3MpIGNvbnN0IG92ZXJy
aWRlOworI2RlZmluZSBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUyhPcGVyYXRpb25UeXBlLCBS
ZXN1bHRUeXBlLCAuLi4pIHZvaWQgYWRkU2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0LCBDQ2FsbEhlbHBlcnMmLCBPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCBzdGQ6OnR1
cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBvdmVycmlkZTsKICAgICBET01KSVRfU0xPV19QQVRIX0NB
TExTKEpTQ19ERUZJTkVfQ0FMTF9PUEVSQVRJT05TKQogI3VuZGVmIEpTQ19ERUZJTkVfQ0FMTF9P
UEVSQVRJT05TCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMjc0MTJkMzcyMzczMGNhNzVjM2I5
YzVhZjg4ZWQxZWE3M2ZlYTQ0Ny4uOTNkMDFkNGM3NWQzOTVhNmU3MTNhMmJiNTdmNDVjYmZjNzhh
YjEyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTU1Nyw2ICs1NTcsMjIgQEAgY2xhc3MgRE9N
SklUTm9kZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNDOjpK
U1R5cGUoTGFzdEpTQ09iamVjdFR5cGUgKyAxKSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwog
ICAgIH0KIAorI2lmIEVOQUJMRShKSVQpCisgICAgc3RhdGljIFJlZjxET01KSVQ6OlBhdGNocG9p
bnQ+IGNoZWNrRE9NSklUTm9kZSgpCisgICAgeworICAgICAgICBSZWY8RE9NSklUOjpQYXRjaHBv
aW50PiBwYXRjaHBvaW50ID0gRE9NSklUOjpQYXRjaHBvaW50OjpjcmVhdGUoKTsKKyAgICAgICAg
cGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgRE9NSklUOjpQ
YXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVt
cExpc3QgZmFpbHVyZUNhc2VzOworICAgICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChqaXQu
YnJhbmNoOCgKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLAorICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhwYXJhbXNbMF0uZ3ByKCksIEpTQ2VsbDo6
dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKEpTQzo6SlNUeXBlKExhc3RKU0NPYmplY3RUeXBlICsgMSkpKSk7CisgICAgICAg
ICAgICByZXR1cm4gZmFpbHVyZUNhc2VzOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIHBh
dGNocG9pbnQ7CisgICAgfQorI2VuZGlmCisKICAgICBzdGF0aWMgRE9NSklUTm9kZSogY3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBET01KSVROb2Rl
KiBnZXR0ZXIgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxET01KSVROb2RlPih2bS5oZWFw
LCBzaXplb2YoRE9NSklUTm9kZSkpKSBET01KSVROb2RlKHZtLCBzdHJ1Y3R1cmUpOwpAQCAtNjA4
LDIzICs2MjQsMTQgQEAgY2xhc3MgRE9NSklUR2V0dGVyIDogcHVibGljIERPTUpJVE5vZGUgewog
I2lmIEVOQUJMRShKSVQpCiAgICAgICAgIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IGNoZWNrRE9N
KCkgb3ZlcnJpZGUKICAgICAgICAgewotICAgICAgICAgICAgUmVmPERPTUpJVDo6UGF0Y2hwb2lu
dD4gcGF0Y2hwb2ludCA9IERPTUpJVDo6UGF0Y2hwb2ludDo6Y3JlYXRlKCk7Ci0gICAgICAgICAg
ICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBE
T01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykgewotICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6SnVtcExpc3QgZmFpbHVyZUNhc2VzOwotICAgICAgICAgICAgICAgIGZhaWx1cmVD
YXNlcy5hcHBlbmQoaml0LmJyYW5jaDgoCi0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6Tm90RXF1YWwsCi0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhw
YXJhbXNbMF0uZ3ByKCksIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAotICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU0M6OkpTVHlwZShMYXN0SlND
T2JqZWN0VHlwZSArIDEpKSkpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWlsdXJlQ2FzZXM7
Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybiBwYXRjaHBvaW50OworICAgICAg
ICAgICAgcmV0dXJuIERPTUpJVE5vZGU6OmNoZWNrRE9NSklUTm9kZSgpOwogICAgICAgICB9CiAK
ICAgICAgICAgUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlk
ZQogICAgICAgICB7CiAgICAgICAgICAgICBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4g
cGF0Y2hwb2ludCA9IERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ6OmNyZWF0ZSgpOwogICAgICAg
ICAgICAgcGF0Y2hwb2ludC0+cmVxdWlyZUdsb2JhbE9iamVjdCA9IGZhbHNlOwotICAgICAgICAg
ICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIHBhdGNocG9p
bnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIERPTUpJVDo6UGF0Y2hwb2lu
dFBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0cyA9
IHBhcmFtc1swXS5qc1ZhbHVlUmVncygpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBkb20gPSBw
YXJhbXNbMV0uZ3ByKCk7CiAKQEAgLTY2Niw2ICs2NzMsOTIgQEAgY2xhc3MgRE9NSklUR2V0dGVy
IDogcHVibGljIERPTUpJVE5vZGUgewogICAgIH0KIH07CiAKK2NsYXNzIERPTUpJVEdldHRlckNv
bXBsZXggOiBwdWJsaWMgRE9NSklUTm9kZSB7CitwdWJsaWM6CisgICAgRE9NSklUR2V0dGVyQ29t
cGxleChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2Uodm0sIHN0
cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworICAgIHR5cGVkZWYg
RE9NSklUTm9kZSBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU0M6OkpTVHlwZShMYXN0SlNDT2JqZWN0
VHlwZSArIDEpLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGlj
IERPTUpJVEdldHRlckNvbXBsZXgqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgIHsKKyAgICAgICAgRE9NSklUR2V0dGVyQ29tcGxleCogZ2V0dGVyID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8RE9NSklUR2V0dGVyQ29tcGxleD4odm0uaGVhcCwgc2l6ZW9mKERP
TUpJVEdldHRlckNvbXBsZXgpKSkgRE9NSklUR2V0dGVyQ29tcGxleCh2bSwgc3RydWN0dXJlKTsK
KyAgICAgICAgZ2V0dGVyLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBnZXR0
ZXI7CisgICAgfQorCisgICAgY2xhc3MgRE9NSklUTm9kZURPTUpJVCA6IHB1YmxpYyBET01KSVQ6
OkdldHRlclNldHRlciB7CisgICAgcHVibGljOgorICAgICAgICBET01KSVROb2RlRE9NSklUKCkK
KyAgICAgICAgICAgIDogRE9NSklUOjpHZXR0ZXJTZXR0ZXIoRE9NSklUR2V0dGVyQ29tcGxleDo6
Y3VzdG9tR2V0dGVyLCBudWxscHRyLCBET01KSVROb2RlOjppbmZvKCkpCisgICAgICAgIHsKKyAg
ICAgICAgfQorCisjaWYgRU5BQkxFKEpJVCkKKyAgICAgICAgUmVmPERPTUpJVDo6UGF0Y2hwb2lu
dD4gY2hlY2tET00oKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gRE9N
SklUTm9kZTo6Y2hlY2tET01KSVROb2RlKCk7CisgICAgICAgIH0KKworICAgICAgICBSZWY8RE9N
SklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gY2FsbERPTSgpIG92ZXJyaWRlCisgICAgICAgIHsKKyAg
ICAgICAgICAgIFJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBwYXRjaHBvaW50ID0gRE9N
SklUOjpDYWxsRE9NUGF0Y2hwb2ludDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBwYXRjaHBvaW50
LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAzOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+bnVt
RlBTY3JhdGNoUmVnaXN0ZXJzID0gMzsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVy
YXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFy
YW1zKSB7CisgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0cyA9IHBhcmFtc1swXS5q
c1ZhbHVlUmVncygpOworICAgICAgICAgICAgICAgIEdQUlJlZyBkb21HUFIgPSBwYXJhbXNbMl0u
Z3ByKCk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoNDIpLCBwYXJhbXMuZ3BTY3JhdGNoKDApKTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig0MiksIHBhcmFtcy5ncFNjcmF0Y2goMSkpOworICAg
ICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDQyKSwgcGFy
YW1zLmdwU2NyYXRjaCgyKSk7CisKKyAgICAgICAgICAgICAgICBwYXJhbXMuYWRkU2xvd1BhdGhD
YWxsKGppdC5qdW1wKCksIGppdCwgc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUoKikoRXhlY1N0
YXRlKiwgdm9pZCopPihbXShFeGVjU3RhdGUqLCB2b2lkKiBwb2ludGVyKSB7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoc3RhdGljX2Nhc3Q8RE9N
SklUR2V0dGVyKj4ocG9pbnRlciktPnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICB9KSwgcmVz
dWx0cywgZG9tR1BSKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpKdW1w
TGlzdCgpOworCisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybiBwYXRjaHBvaW50
OworICAgICAgICB9CisjZW5kaWYKKyAgICB9OworCisgICAgc3RhdGljIERPTUpJVDo6R2V0dGVy
U2V0dGVyKiBkb21KSVROb2RlR2V0dGVyU2V0dGVyKCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxET01KSVROb2RlRE9NSklUPiBncmFwaDsKKyAgICAgICAgcmV0dXJuICZn
cmFwaC5nZXQoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCisgICAgeworICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAg
IERPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVQgPSBkb21KSVROb2RlR2V0dGVyU2V0dGVyKCk7
CisgICAgICAgIEN1c3RvbUdldHRlclNldHRlciogY3VzdG9tR2V0dGVyU2V0dGVyID0gQ3VzdG9t
R2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGRvbUpJVC0+Z2V0dGVyKCksIGRvbUpJVC0+c2V0dGVy
KCksIGRvbUpJVCk7CisgICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZ2bSwgImN1c3RvbUdldHRlciIpLCBjdXN0b21HZXR0ZXJTZXR0ZXIs
IFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IpOworICAgIH0KKworICAgIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBjdXN0b21HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKKyAgICB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgICAg
ICBET01KSVROb2RlKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxET01KSVROb2RlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgICAgICBpZiAoIXRoaXNPYmplY3QpCisgICAg
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhpc09iamVjdC0+dmFsdWUoKSkpOworICAg
IH0KK307CisKIGNvbnN0IENsYXNzSW5mbyBFbGVtZW50OjpzX2luZm8gPSB7ICJFbGVtZW50Iiwg
JkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShFbGVtZW50KSB9OwogY29uc3Qg
Q2xhc3NJbmZvIE1hc3F1ZXJhZGVyOjpzX2luZm8gPSB7ICJNYXNxdWVyYWRlciIsICZCYXNlOjpz
X2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoTWFzcXVlcmFkZXIpIH07CiBjb25zdCBDbGFz
c0luZm8gUm9vdDo6c19pbmZvID0geyAiUm9vdCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9N
RVRIT0RfVEFCTEUoUm9vdCkgfTsKQEAgLTY3Myw2ICs3NjYsNyBAQCBjb25zdCBDbGFzc0luZm8g
SW1wdXJlR2V0dGVyOjpzX2luZm8gPSB7ICJJbXB1cmVHZXR0ZXIiLCAmQmFzZTo6c19pbmZvLCAw
LCBDUkVBVAogY29uc3QgQ2xhc3NJbmZvIEN1c3RvbUdldHRlcjo6c19pbmZvID0geyAiQ3VzdG9t
R2V0dGVyIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShDdXN0b21HZXR0
ZXIpIH07CiBjb25zdCBDbGFzc0luZm8gRE9NSklUTm9kZTo6c19pbmZvID0geyAiRE9NSklUTm9k
ZSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRE9NSklUTm9kZSkgfTsK
IGNvbnN0IENsYXNzSW5mbyBET01KSVRHZXR0ZXI6OnNfaW5mbyA9IHsgIkRPTUpJVEdldHRlciIs
ICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRE9NSklUR2V0dGVyKSB9Owor
Y29uc3QgQ2xhc3NJbmZvIERPTUpJVEdldHRlckNvbXBsZXg6OnNfaW5mbyA9IHsgIkRPTUpJVEdl
dHRlckNvbXBsZXgiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKERPTUpJ
VEdldHRlckNvbXBsZXgpIH07CiBjb25zdCBDbGFzc0luZm8gUnVudGltZUFycmF5OjpzX2luZm8g
PSB7ICJSdW50aW1lQXJyYXkiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KFJ1bnRpbWVBcnJheSkgfTsKIGNvbnN0IENsYXNzSW5mbyBTaW1wbGVPYmplY3Q6OnNfaW5mbyA9
IHsgIlNpbXBsZU9iamVjdCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
U2ltcGxlT2JqZWN0KSB9Owogc3RhdGljIGJvb2wgdGVzdDI2MkFzeW5jUGFzc2VkIHsgZmFsc2Ug
fTsKQEAgLTcwMyw2ICs3OTcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkNyZWF0ZUltcHVyZUdldHRlcihFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlQ3VzdG9tR2V0dGVyT2JqZWN0KEV4
ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25D
cmVhdGVET01KSVROb2RlT2JqZWN0KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVET01KSVRHZXR0ZXJPYmplY3QoRXhlY1N0YXRl
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURP
TUpJVEdldHRlckNvbXBsZXhPYmplY3QoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUJ1aWx0aW4oRXhlY1N0YXRlKik7CiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUdsb2JhbE9iamVj
dChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uU2V0SW1wdXJlR2V0dGVyRGVsZWdhdGUoRXhlY1N0YXRlKik7CkBAIC05ODksNiArMTA4NCw3
IEBAIGNsYXNzIEdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0dsb2JhbE9iamVjdCB7CiAgICAgICAg
IGFkZEZ1bmN0aW9uKHZtLCAiY3JlYXRlQ3VzdG9tR2V0dGVyT2JqZWN0IiwgZnVuY3Rpb25DcmVh
dGVDdXN0b21HZXR0ZXJPYmplY3QsIDApOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0
ZURPTUpJVE5vZGVPYmplY3QiLCBmdW5jdGlvbkNyZWF0ZURPTUpJVE5vZGVPYmplY3QsIDApOwog
ICAgICAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZURPTUpJVEdldHRlck9iamVjdCIsIGZ1bmN0
aW9uQ3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0LCAwKTsKKyAgICAgICAgYWRkRnVuY3Rpb24odm0s
ICJjcmVhdGVET01KSVRHZXR0ZXJDb21wbGV4T2JqZWN0IiwgZnVuY3Rpb25DcmVhdGVET01KSVRH
ZXR0ZXJDb21wbGV4T2JqZWN0LCAwKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVC
dWlsdGluIiwgZnVuY3Rpb25DcmVhdGVCdWlsdGluLCAyKTsKICAgICAgICAgYWRkRnVuY3Rpb24o
dm0sICJjcmVhdGVHbG9iYWxPYmplY3QiLCBmdW5jdGlvbkNyZWF0ZUdsb2JhbE9iamVjdCwgMCk7
CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAic2V0SW1wdXJlR2V0dGVyRGVsZWdhdGUiLCBmdW5j
dGlvblNldEltcHVyZUdldHRlckRlbGVnYXRlLCAyKTsKQEAgLTE1MDksNiArMTYwNSwxNCBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyT2Jq
ZWN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVET01KSVRH
ZXR0ZXJDb21wbGV4T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU0xvY2tIb2xkZXIg
bG9jayhleGVjKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IERPTUpJVEdldHRlckNvbXBs
ZXg6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCksIGpzTnVsbCgpKTsKKyAgICBET01KSVRHZXR0ZXJDb21wbGV4KiByZXN1bHQgPSBET01KSVRH
ZXR0ZXJDb21wbGV4OjpjcmVhdGUoZXhlYy0+dm0oKSwgc3RydWN0dXJlKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25TZXRJbXB1cmVHZXR0ZXJEZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b21qaXQvRE9NSklUSGVscGVycy5oIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEhlbHBl
cnMuaAppbmRleCBkYmU1MzY1Zjg2ZmVjZDFiYzJlNzI3NjEzZjc1NjA1YjE2ZjM4MjUyLi4xODA2
YjJhZmExYzQ3MWMwMzA0NjMwYjgwMzhmMDMyM2Y2ZTM2MWViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb21qaXQvRE9NSklUSGVscGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWpp
dC9ET01KSVRIZWxwZXJzLmgKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCB0cnlMb29rVXBXcmFwcGVy
Q2FjaGUoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGZhaWx1cmVD
YXMKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgV3JhcHBlZFR5cGUsIHR5cGVuYW1lIFRvSlNGdW5j
dGlvbj4KLXZvaWQgdG9XcmFwcGVyKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBKU0M6OkRPTUpJ
VDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zLCBHUFJSZWcgd3JhcHBlZCwgR1BSUmVnIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBUb0pTRnVuY3Rpb24gZnVuY3Rpb24sIEpTQzo6
SlNWYWx1ZSBnbG9iYWxPYmplY3RDb25zdGFudCkKK3ZvaWQgdG9XcmFwcGVyKENDYWxsSGVscGVy
cyYgaml0LCBKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zLCBHUFJSZWcgd3Jh
cHBlZCwgR1BSUmVnIGdsb2JhbE9iamVjdCwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBUb0pTRnVuY3Rp
b24gZnVuY3Rpb24sIEpTQzo6SlNWYWx1ZSBnbG9iYWxPYmplY3RDb25zdGFudCkKIHsKICAgICBB
U1NFUlQod3JhcHBlZCAhPSByZXN1bHQucGF5bG9hZEdQUigpKTsKICAgICBBU1NFUlQoZ2xvYmFs
T2JqZWN0ICE9IHJlc3VsdC5wYXlsb2FkR1BSKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9taml0L0pTTm9kZURPTUpJVC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2Rl
RE9NSklULmNwcAppbmRleCBiNTBkMjRlOWEzM2M1YTNlYjc4YjhiNzE1MmQ4MzgzYmVmN2RkMTM1
Li5kOGY1OTJjNjRhZjFiNDJjZGI4YWVkODRmODM3NTZhNWM4MmYxYTYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcApAQCAtNTQsNyArNTQsNyBAQCBzdGF0aWMgUmVmPERP
TUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3MocHRy
ZGlmZl90IG9mZgogewogICAgIFJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBwYXRjaHBv
aW50ID0gRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludDo6Y3JlYXRlKCk7CiAgICAgcGF0Y2hwb2lu
dC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKLSAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0
b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMm
IHBhcmFtcykgeworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJz
JiBqaXQsIERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgIEpTVmFs
dWVSZWdzIHJlc3VsdCA9IHBhcmFtc1swXS5qc1ZhbHVlUmVncygpOwogICAgICAgICBHUFJSZWcg
Z2xvYmFsT2JqZWN0ID0gcGFyYW1zWzFdLmdwcigpOwogICAgICAgICBHUFJSZWcgbm9kZSA9IHBh
cmFtc1syXS5ncHIoKTsKQEAgLTg0LDcgKzg0LDcgQEAgc3RhdGljIFJlZjxET01KSVQ6OkNhbGxE
T01QYXRjaHBvaW50PiBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzKHB0cmRpZmZfdCBvZmYK
IHN0YXRpYyBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja05vZGUoKQogewogICAgIFJlZjxE
T01KSVQ6OlBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBET01KSVQ6OlBhdGNocG9pbnQ6OmNyZWF0
ZSgpOwotICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0IERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CisgICAgcGF0Y2hwb2lu
dC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgRE9NSklUOjpQYXRjaHBvaW50
UGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBmYWlsdXJl
Q2FzZXM7CiAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoRE9NSklUSGVscGVyczo6YnJhbmNo
SWZOb3ROb2RlKGppdCwgcGFyYW1zWzBdLmdwcigpKSk7CiAgICAgICAgIHJldHVybiBmYWlsdXJl
Q2FzZXM7CkBAIC0xNTcsNyArMTU3LDcgQEAgUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+
IE5vZGVOb2RlVHlwZURPTUpJVDo6Y2FsbERPTSgpCiB7CiAgICAgUmVmPERPTUpJVDo6Q2FsbERP
TVBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50OjpjcmVh
dGUoKTsKICAgICBwYXRjaHBvaW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0ID0gZmFsc2U7Ci0gICAg
cGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgRE9N
SklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKKyAgICBwYXRjaHBvaW50LT5zZXRHZW5l
cmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBh
cmFtcykgewogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHQgPSBwYXJhbXNbMF0uanNWYWx1ZVJl
Z3MoKTsKICAgICAgICAgR1BSUmVnIG5vZGUgPSBwYXJhbXNbMV0uZ3ByKCk7CiAgICAgICAgIGpp
dC5sb2FkOChDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mobm9kZSwgSlNDOjpKU0NlbGw6OnR5cGVJbmZv
VHlwZU9mZnNldCgpKSwgcmVzdWx0LnBheWxvYWRHUFIoKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQwZjA4YzdlZGFjY2Y3YjhkNmVi
MmFlYWEyNjc1MDkxMzMzYzZlZGMuLjUzNDg4YTMwNGY1NGJlMzM3ZTRmY2M5Nzk4MTRmMjJhMTkw
MmVjMTIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTYtMTAtMTMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gVXNlIERPTUpJVDo6UGF0Y2hwb2lu
dCBpbiBJQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYzMjIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBzdHJlc3MvZG9taml0LWdldHRlci1jb21wbGV4LXdpdGgtaW5jb3JyZWN0LW9iamVjdC5qczog
QWRkZWQuCisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChhY2Nlc3MpOgorICAgICAg
ICAoaS5zaG91bGRUaHJvdyk6CisgICAgICAgICogc3RyZXNzL2RvbWppdC1nZXR0ZXItY29tcGxl
eC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChhY2Nlc3MpOgorCiAy
MDE2LTEwLTEyICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIEhhbmRsZSBub24tZnVuY3Rpb24sIG5vbi11bmRlZmluZWQgY29tcGFyYXRvciBpbiBBcnJh
eS5wcm90b3R5cGUuc29ydApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZG9taml0LWdldHRl
ci1jb21wbGV4LXdpdGgtaW5jb3JyZWN0LW9iamVjdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2RvbWpp
dC1nZXR0ZXItY29tcGxleC13aXRoLWluY29ycmVjdC1vYmplY3QuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjRi
ODBjY2Q4ODRhYzM4ZDA0M2JlNjIwOGNiOThlN2MyMGFmNmEzMAotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2RvbWppdC1nZXR0ZXItY29tcGxleC13aXRoLWluY29ycmVjdC1vYmpl
Y3QuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JN
ZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0g
bnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAg
aWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7
CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKwordmFyIGNvbXBs
ZXggPSBjcmVhdGVET01KSVRHZXR0ZXJDb21wbGV4T2JqZWN0KCk7Cit2YXIgb2JqZWN0ID0ge307
CitvYmplY3QuX19wcm90b19fID0gY29tcGxleDsKK2Z1bmN0aW9uIGFjY2VzcyhvYmplY3QpCit7
CisgICAgcmV0dXJuIG9iamVjdC5jdXN0b21HZXR0ZXI7Cit9Citub0lubGluZShhY2Nlc3MpOwor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgIHNob3VsZFRocm93KCgpID0+IHsK
KyAgICAgICAgYWNjZXNzKG9iamVjdCk7CisgICAgfSwgYFR5cGVFcnJvcjogVHlwZSBlcnJvcmAp
OworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZG9taml0LWdldHRlci1jb21wbGV4Lmpz
IGIvSlNUZXN0cy9zdHJlc3MvZG9taml0LWdldHRlci1jb21wbGV4LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5
NWRlN2U1MmIwNmVmM2IyNDQ3NDVkYjdjNWI4ZTdjZGU2NjAwMTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLWNvbXBsZXguanMKQEAgLTAsMCArMSwxNCBA
QAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJp
bmcoYWN0dWFsKX1gKTsKK30KKwordmFyIGNvbXBsZXggPSBjcmVhdGVET01KSVRHZXR0ZXJDb21w
bGV4T2JqZWN0KCk7CitmdW5jdGlvbiBhY2Nlc3MoY29tcGxleCkKK3sKKyAgICByZXR1cm4gY29t
cGxleC5jdXN0b21HZXR0ZXI7Cit9Citub0lubGluZShhY2Nlc3MpOworZm9yICh2YXIgaSA9IDA7
IGkgPCAxZTQ7ICsraSkgeworICAgIHNob3VsZEJlKGFjY2Vzcyhjb21wbGV4KSwgNDIpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291574</attachid>
            <date>2016-10-13 23:17:17 -0700</date>
            <delta_ts>2016-10-14 14:46:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163223-20161014151349.patch</filename>
            <type>text/plain</type>
            <size>47350</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MzM5OTEyZTNiYTU5N2Q1Yzc3MzUwZGVjNWRlZjNmMWY1ZjZmN2E3Li40OTExZjUwODJiYzViMTQ5
MmY4ZThiNWMyMjYxMTA3ZGU0ODA3YjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OCBAQAorMjAxNi0xMC0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRE9NSklUXSBVc2UgRE9NSklUOjpQYXRjaHBvaW50IGluIElDCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyMjMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNo
IHVzZXMgRE9NSklUOjpQYXRjaHBvaW50IHRvIGlubGluZSBET00gYWNjZXNzZXMgZXZlbiBpbiBJ
QyEKKyAgICAgICAgSXQgaXMgdXNlZnVsIGZvciBCYXNlbGluZSBKSVQgY2FzZXMgYW5kIEdldEJ5
SWQgY2FzZXMgaW4gREZHIGFuZCBGVEwuCisgICAgICAgIEluIEFjY2Vzc0Nhc2UsIHdlIGNvbnN0
cnVjdCB0aGUgZW52aXJvbm1lbnQgdGhhdCBhbGxvd3MgRE9NSklUOjpQYXRjaHBvaW50CisgICAg
ICAgIHRvIGVtaXQgY29kZSBhbmQgbWFrZSBET01KSVQgYWNjZXNzb3JzIGlubGluZWQgaW4gSUMu
CisKKyAgICAgICAgVG8gYWxsb3cgRE9NSklUOjpQYXRjaHBvaW50IHRvIGVtaXQgY29kZSwgd2Ug
Y3JlYXRlIGEgbWVjaGFuaXNtIHRvIGVtaXQgY2FsbHMKKyAgICAgICAgcmVxdWlyZWQgaW4gRE9N
SklUOjpQYXRjaHBvaW50LiBUaGlzIHN5c3RlbSBpcyB1c2VmdWwgd2hlbiB3ZSBjcmVhdGUgdGhl
IHN1cGVyLQorICAgICAgICBwb2x5bW9ycGhpYyBzdXBwb3J0WzFdIGxhdGVyLiBBbmQgaW5saW5p
bmcgbWVjaGFuaXNtIGlzIHVzZWZ1bCBldmVuIGFmdGVyCisgICAgICAgIGludHJvZHVjaW5nIHN1
cGVyLXBvbHltb3JwaGljIHN1cHBvcnQgc2luY2UgaXQgY2FuIHdvcmsgZXZlbiBhZnRlciB3ZSBm
aXJlIHRoZQorICAgICAgICB3YXRjaHBvaW50IGZvciBzdXBlci1wb2x5bW9ycGhpYyBoYW5kbGlu
Zy4KKworICAgICAgICBUaGlzIHBhdGNoIGltcHJvdmVzIERyb21hZW8gZG9tLXRyYXZlcnNlIDgl
ICgyNjMuOTUgcnVucy9zIHYucy4gMjQ0LjA3IHJ1bnMvcykuCisKKyAgICAgICAgWzFdOiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjI2CisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0RPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50
UGFyYW1zLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlNsb3dQYXRoQ2FsbEdlbmVyYXRvcldp
dGhBcmd1bWVudHM6OlNsb3dQYXRoQ2FsbEdlbmVyYXRvcldpdGhBcmd1bWVudHMpOgorICAgICAg
ICAoSlNDOjpTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRoQXJndW1lbnRzOjpnZW5lcmF0ZUltcGwp
OgorICAgICAgICAoSlNDOjpET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtczo6ZW1pdFNs
b3dQYXRoQ2FsbHMpOgorICAgICAgICAqIGJ5dGVjb2RlL0RPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBv
aW50UGFyYW1zLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRE9N
SklUUGF0Y2hwb2ludFBhcmFtcy5oLgorICAgICAgICAoSlNDOjpET01KSVRBY2Nlc3NDYXNlUGF0
Y2hwb2ludFBhcmFtczo6RE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMpOgorICAgICAg
ICAoSlNDOjpET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtczo6U2xvd1BhdGhDYWxsR2Vu
ZXJhdG9yOjp+U2xvd1BhdGhDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5
bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6
Y2FsY3VsYXRlTGl2ZVJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRpb25IYW5kbGluZyk6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgIChKU0M6OkFjY2Vz
c0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGlj
QWNjZXNzLmg6CisgICAgICAgICogZGZnL0RGR0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdET01KSVRQYXRjaHBvaW50UGFyYW1zLmg6CisgICAgICAgICogZG9t
aml0L0RPTUpJVFBhdGNocG9pbnQuaDoKKyAgICAgICAgKiBkb21qaXQvRE9NSklUUGF0Y2hwb2lu
dFBhcmFtcy5oOgorICAgICAgICAoSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJhbXM6OmFkZFNs
b3dQYXRoQ2FsbCk6CisgICAgICAgICogZnRsL0ZUTERPTUpJVFBhdGNocG9pbnRQYXJhbXMuY3Bw
OgorICAgICAgICAqIGZ0bC9GVExET01KSVRQYXRjaHBvaW50UGFyYW1zLmg6CisgICAgICAgICog
anNjLmNwcDoKKyAgICAgICAgKFdURjo6RE9NSklUTm9kZTo6Y2hlY2tET01KSVROb2RlKToKKyAg
ICAgICAgKFdURjo6RE9NSklUR2V0dGVyQ29tcGxleDo6RE9NSklUR2V0dGVyQ29tcGxleCk6Cisg
ICAgICAgIChXVEY6OkRPTUpJVEdldHRlckNvbXBsZXg6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgIChXVEY6OkRPTUpJVEdldHRlckNvbXBsZXg6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OkRP
TUpJVEdldHRlckNvbXBsZXg6OkRPTUpJVE5vZGVET01KSVQ6OkRPTUpJVE5vZGVET01KSVQpOgor
ICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXJDb21wbGV4Ojpkb21KSVROb2RlR2V0dGVyU2V0dGVy
KToKKyAgICAgICAgKFdURjo6RE9NSklUR2V0dGVyQ29tcGxleDo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXJDb21wbGV4OjpjdXN0b21HZXR0ZXIpOgorICAgICAg
ICAoR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChmdW5jdGlvbkNyZWF0
ZURPTUpJVEdldHRlckNvbXBsZXhPYmplY3QpOgorCiAyMDE2LTEwLTEzICBNYXJrIExhbSAgPG1h
cmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggQXJyYXkucHJvdG90eXBlLnNwbGljZSBF
UzYgY29tcGxpYW5jZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2NjcxNWM3MzQyNWMxNTAzMTAyODQyYjkwOTNj
NzBhNmQ1ODk1MWExLi4xYWRiYzZiMTk4NjNmMzJlN2M1OTVhYzE5OWQxMmMxNTk2MmIyODA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMTAtMTMgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gVXNlIERPTUpJVDo6UGF0
Y2hwb2ludCBpbiBJQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYzMjIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTWFrZSBET01KSVRQYXRjaHBvaW50UGFyYW1zIG5vbi1jb25zdC4KKworICAgICAgICAq
IGRvbWppdC9ET01KSVRIZWxwZXJzLmg6CisgICAgICAgIChXZWJDb3JlOjpET01KSVRIZWxwZXJz
Ojp0b1dyYXBwZXIpOgorICAgICAgICAqIGRvbWppdC9KU05vZGVET01KSVQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2Vzcyk6CisgICAgICAgIChXZWJD
b3JlOjpjaGVja05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZU5vZGVUeXBlRE9NSklUOjpj
YWxsRE9NKToKKwogMjAxNi0xMC0xMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBBUEkgdGVzdCBhZnRlciByMjA3MzE4LgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGFhZTcxYjQyZjA0NTJjODU0ZTk4YzRlODkz
YjFiOGM3ZmYzY2FmYWYuLjAzMWJkZjZiYjdmYjQ1MDYwZTRhYjQxZTMyZTc4YmNmYzJmNjkxNjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIwMyw2ICsyMDMsNyBAQCBz
ZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGJ5dGVjb2RlL0NvbXBsZXhHZXRTdGF0dXMu
Y3BwCiAgICAgYnl0ZWNvZGUvRGF0YUZvcm1hdC5jcHAKICAgICBieXRlY29kZS9ERkdFeGl0UHJv
ZmlsZS5jcHAKKyAgICBieXRlY29kZS9ET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5j
cHAKICAgICBieXRlY29kZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCiAgICAgYnl0
ZWNvZGUvRGVmZXJyZWRTb3VyY2VEdW1wLmNwcAogICAgIGJ5dGVjb2RlL0V4ZWN1dGlvbkNvdW50
ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDEwOGZlOGFlMGY5NGI5Zjc0
NzM0ZDc4MTg4ZjBjZjVjZmM4YTE4MTkuLjNkMTRhYTM0NWQ0NGIwNzIwM2UxZjM2MTg2MDhmMzdk
NDU2YzEwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTEyLDYgKzIxMTIs
OCBAQAogCQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTQxQjdF
OEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLzsgfTsKIAkJRTM5REE0QTcxQjdF
OEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1
bGVSZWNvcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFM0E0MjE0MzFENkY1ODkzMDAwN0M2MTcgLyogUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBNDIx
NDIxRDZGNTg4RjAwMDdDNjE3IC8qIFByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFM0JGRDBCQjFEQUY4
MDg3MDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCRkQwQjkxREFGODA3
QzAwNjVERUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmNwcCAqLzsgfTsK
KwkJRTNCRkQwQkMxREFGODA4RTAwNjVERUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50
UGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
M0JGRDBCQTFEQUY4MDdDMDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJh
bXMuaCAqLzsgfTsKIAkJRTNDMDhFM0MxREE0MUI4MTAwMzk0NzhGIC8qIERPTUpJVFBhdGNocG9p
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzA4
RTNCMURBNDFCN0IwMDM5NDc4RiAvKiBET01KSVRQYXRjaHBvaW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNEMjM5QzgxQjgyOUMxQzAwQkJF
RjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxl
RW52aXJvbm1lbnQuY3BwICovOyB9OwogCQlFM0QyMzlDOTFCODI5QzFDMDBCQkVGNjcgLyogSlNN
b2R1bGVFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDQx
OSw2ICs0NDIxLDggQEAKIAkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVj
b3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlUmVj
b3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTUxQjdFOEI3QzAw
ODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTTW9kdWxlUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQTQy
MTQyMUQ2RjU4OEYwMDA3QzYxNyAvKiBQcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNCRkQwQjkxREFGODA3QzAwNjVERUEyIC8q
IERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNCRkQwQkExREFGODA3QzAwNjVERUEyIC8q
IERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQzA4RTNCMURBNDFCN0IwMDM5NDc4RiAvKiBET01KSVRQ
YXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVFBhdGNo
cG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNDQjFFMjQxREE3NTQwQTAw
RkExRTU2IC8qIERPTUpJVFNsb3dQYXRoQ2FsbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NSklUU2xvd1BhdGhDYWxscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY4MTgsNiArNjgyMiw4IEBACiAJ
CQkJMEYwQjgzQTUxNEJDRjUwNDAwODg1QjRGIC8qIENvZGVUeXBlLmggKi8sCiAJCQkJMEY2RkM3
NEUxOTYxMTBBODAwRTFEMDJEIC8qIENvbXBsZXhHZXRTdGF0dXMuY3BwICovLAogCQkJCTBGNkZD
NzRGMTk2MTEwQTgwMEUxRDAyRCAvKiBDb21wbGV4R2V0U3RhdHVzLmggKi8sCisJCQkJRTNCRkQw
QjkxREFGODA3QzAwNjVERUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmNw
cCAqLywKKwkJCQlFM0JGRDBCQTFEQUY4MDdDMDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBh
dGNocG9pbnRQYXJhbXMuaCAqLywKIAkJCQk2MkUzRDVFRjFCOEQwQjczMDBCODY4QkIgLyogRGF0
YUZvcm1hdC5jcHAgKi8sCiAJCQkJMEY0MjZBNEExNDYwQ0Q2QjAwMTMxRjhGIC8qIERhdGFGb3Jt
YXQuaCAqLywKIAkJCQkwRkM3MTJEQzE3Q0Q4Nzc4MDA4Q0M5M0MgLyogRGVmZXJyZWRDb21waWxh
dGlvbkNhbGxiYWNrLmNwcCAqLywKQEAgLTc1MTksNiArNzUyNSw3IEBACiAJCQkJMEY4MzY0Qjcx
NjRCMEMxMTAwNTMzMjlBIC8qIERGR0JyYW5jaERpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODZFQzlEQzUxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVDb2RlUGFyc2VyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjI1NkMzNjE2MjdCMEFEMDA3RjI3ODMgLyogREZHQ2FsbEFycmF5QWxs
b2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzQkZEMEJDMURB
RjgwOEUwMDY1REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZCREI5QUQxQUIwRkJDNjAwMEI1N0U1IC8qIERGR0NhbGxDcmVhdGVE
aXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3
QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZGRkM5NTgxNEVGOTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTk0MTUsNiArOTQyMiw3IEBACiAJCQkJRTM1RTAzNUYxQjdBQjQzRTAwNzNBRDJB
IC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBNTMyNDM4QjE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE1MEU0QjYxMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0
b3JSdW50aW1lQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTNCRkQwQkIxREFGODA4NzAw
NjVERUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE1OTNDRjgyMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5Q0YxMDdFQzM3NjAwNDI3QTQ4IC8qIEludGVybmFs
RnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyOUQ3RDQwRUQyMTI4MjAwQjg5NjE5
IC8qIEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ET01KSVRBY2Nlc3NDYXNlUGF0Y2hw
b2ludFBhcmFtcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjcxYTgyYjAxMTNkZmRiOTFkNThiZTc1ZjI1ZDlm
ZWJmMWU2YmYzOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9ET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHAKQEAgLTAsMCArMSwxMjAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMu
aCIKKworI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJQb2x5bW9ycGhpY0FjY2Vz
cy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCisKKyNpZiBFTkFCTEUoSklUKQor
CituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgSnVtcFR5cGUsIHR5cGVuYW1l
IEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRz
PgorY2xhc3MgU2xvd1BhdGhDYWxsR2VuZXJhdG9yV2l0aEFyZ3VtZW50cyA6IHB1YmxpYyBET01K
SVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtczo6U2xvd1BhdGhDYWxsR2VuZXJhdG9yIHsKK3B1
YmxpYzoKKyAgICBTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRoQXJndW1lbnRzKEp1bXBUeXBlIGZy
b20sIENDYWxsSGVscGVyczo6TGFiZWwgdG8sIEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwgUmVzdWx0
VHlwZSByZXN1bHQsIHN0ZDo6dHVwbGU8QXJndW1lbnRzLi4uPiBhcmd1bWVudHMpCisgICAgICAg
IDogbV9mcm9tKGZyb20pCisgICAgICAgICwgbV90byh0bykKKyAgICAgICAgLCBtX2Z1bmN0aW9u
KGZ1bmN0aW9uKQorICAgICAgICAsIG1fcmVzdWx0KHJlc3VsdCkKKyAgICAgICAgLCBtX2FyZ3Vt
ZW50cyhhcmd1bWVudHMpCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlPHNpemVfdC4uLiBB
cmd1bWVudHNJbmRleD4KKyAgICB2b2lkIGdlbmVyYXRlSW1wbChWTSYgdm0sIEFjY2Vzc0dlbmVy
YXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzQnlQYXRj
aHBvaW50LCBDQ2FsbEhlbHBlcnMmIGppdCwgc3RkOjppbmRleF9zZXF1ZW5jZTxBcmd1bWVudHNJ
bmRleC4uLj4pCisgICAgeworICAgICAgICAvLyBXZSBzcGlsbCAoMSkgdGhlIHVzZWQgcmVnaXN0
ZXJzIGJ5IElDIGFuZCAoMikgdGhlIHVzZWQgcmVnaXN0ZXJzIGJ5IERPTUpJVDo6UGF0Y2hwb2lu
dC4KKyAgICAgICAgc3RhdGUucHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwodXNl
ZFJlZ2lzdGVyc0J5UGF0Y2hwb2ludCk7CisKKyAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzdGF0ZS5jYWxsU2l0ZUluZGV4Rm9yRXhj
ZXB0aW9uSGFuZGxpbmdPck9yaWdpbmFsKCkuYml0cygpKSwKKyAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6dGFnRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudCkpKTsKKworICAgICAgICBqaXQubWFrZVNwYWNlT25TdGFja0ZvckNDYWxs
KCk7CisKKyAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAm
dm0udG9wQ2FsbEZyYW1lKTsKKworICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5LCB3ZSBkbyBu
b3QgY2hlY2sgYW55IEFSTSBFQUJJIC8gU0g0IHRoaW5ncyBoZXJlLgorICAgICAgICAvLyBCdXQg
aXQgaXMgT0sgYmVjYXVzZSBhIGNvbXBpbGUgZXJyb3IgaGFwcGVucyB3aGVuIHlvdSBwYXNzIEpT
VmFsdWVSZWdzIGFzIGFuIGFyZ3VtZW50LgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMDk5CisgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoc3RkOjpnZXQ8QXJndW1lbnRzSW5kZXg+KG1fYXJndW1lbnRzKS4uLik7CisK
KyAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIG9wZXJhdGlvbkNhbGwgPSBqaXQuY2FsbCgpOwor
ICAgICAgICBhdXRvIGZ1bmN0aW9uID0gbV9mdW5jdGlvbjsKKyAgICAgICAgaml0LmFkZExpbmtU
YXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAgICAgICAgbGlua0J1ZmZl
ci5saW5rKG9wZXJhdGlvbkNhbGwsIEZ1bmN0aW9uUHRyKGZ1bmN0aW9uKSk7CisgICAgICAgIH0p
OworCisgICAgICAgIGppdC5zZXR1cFJlc3VsdHMobV9yZXN1bHQpOworICAgICAgICBqaXQucmVj
bGFpbVNwYWNlT25TdGFja0ZvckNDYWxsKCk7CisKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1w
IG5vRXhjZXB0aW9uID0gaml0LmVtaXRFeGNlcHRpb25DaGVjayhDQ2FsbEhlbHBlcnM6OkludmVy
dGVkRXhjZXB0aW9uQ2hlY2spOworCisgICAgICAgIHN0YXRlLnJlc3RvcmVMaXZlUmVnaXN0ZXJz
RnJvbVN0YWNrRm9yQ2FsbFdpdGhUaHJvd25FeGNlcHRpb24oKTsKKyAgICAgICAgc3RhdGUuZW1p
dEV4cGxpY2l0RXhjZXB0aW9uSGFuZGxlcigpOworCisgICAgICAgIG5vRXhjZXB0aW9uLmxpbmso
JmppdCk7CisgICAgICAgIGJvb2wgaXNHZXR0ZXIgPSB0cnVlOworICAgICAgICBzdGF0ZS5yZXN0
b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoaXNHZXR0ZXIpOworICAgIH0KKworICAg
IHZvaWQgZ2VuZXJhdGUoVk0mIHZtLCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVyc0J5UGF0Y2hwb2ludCwgQ0NhbGxIZWxwZXJzJiBq
aXQpIG92ZXJyaWRlCisgICAgeworICAgICAgICBtX2Zyb20ubGluaygmaml0KTsKKyAgICAgICAg
Z2VuZXJhdGVJbXBsKHZtLCBzdGF0ZSwgdXNlZFJlZ2lzdGVyc0J5UGF0Y2hwb2ludCwgaml0LCBz
dGQ6Om1ha2VfaW5kZXhfc2VxdWVuY2U8c3RkOjp0dXBsZV9zaXplPHN0ZDo6dHVwbGU8QXJndW1l
bnRzLi4uPj46OnZhbHVlPigpKTsKKyAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8obV90bywgJmpp
dCk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgSnVtcFR5cGUgbV9mcm9tOworICAgIENDYWxs
SGVscGVyczo6TGFiZWwgbV90bzsKKyAgICBGdW5jdGlvblR5cGUgbV9mdW5jdGlvbjsKKyAgICBS
ZXN1bHRUeXBlIG1fcmVzdWx0OworICAgIHN0ZDo6dHVwbGU8QXJndW1lbnRzLi4uPiBtX2FyZ3Vt
ZW50czsKK307CisKKyNkZWZpbmUgSlNDX0RFRklORV9DQUxMX09QRVJBVElPTlMoT3BlcmF0aW9u
VHlwZSwgUmVzdWx0VHlwZSwgLi4uKSBcCisgICAgdm9pZCBET01KSVRBY2Nlc3NDYXNlUGF0Y2hw
b2ludFBhcmFtczo6YWRkU2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGZy
b20sIENDYWxsSGVscGVycyYgaml0LCBPcGVyYXRpb25UeXBlIG9wZXJhdGlvbiwgUmVzdWx0VHlw
ZSByZXN1bHQsIHN0ZDo6dHVwbGU8X19WQV9BUkdTX18+IGFyZ3MpIFwKKyAgICB7IFwKKyAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCB0byA9IGppdC5sYWJlbCgpOyBcCisgICAgICAgIG1fZ2Vu
ZXJhdG9ycy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRo
QXJndW1lbnRzPENDYWxsSGVscGVyczo6SnVtcExpc3QsIE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5
cGUsIF9fVkFfQVJHU19fPj4oZnJvbSwgdG8sIG9wZXJhdGlvbiwgcmVzdWx0LCBhcmdzKSk7IFwK
KyAgICB9IFwKKworRE9NSklUX1NMT1dfUEFUSF9DQUxMUyhKU0NfREVGSU5FX0NBTExfT1BFUkFU
SU9OUykKKyN1bmRlZiBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUworCit2b2lkIERPTUpJVEFj
Y2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zOjplbWl0U2xvd1BhdGhDYWxscyhWTSYgdm0sIEFjY2Vz
c0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJz
QnlQYXRjaHBvaW50LCBDQ2FsbEhlbHBlcnMmIGppdCkKK3sKKyAgICBmb3IgKGF1dG8mIGdlbmVy
YXRvciA6IG1fZ2VuZXJhdG9ycykKKyAgICAgICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZSh2bSwgc3Rh
dGUsIHVzZWRSZWdpc3RlcnNCeVBhdGNocG9pbnQsIGppdCk7Cit9CisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRE9NSklUQWNjZXNzQ2Fz
ZVBhdGNocG9pbnRQYXJhbXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ET01K
SVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhY2Y0MzU0ODQ4ZWM3
NzZiOWY5ODZiOGRhNGEwZDMyMmU2NDIzNDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaApA
QCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAiRE9NSklU
UGF0Y2hwb2ludFBhcmFtcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IEFjY2Vzc0dl
bmVyYXRpb25TdGF0ZTsKKworY2xhc3MgRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMg
OiBwdWJsaWMgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zIHsKK3B1YmxpYzoKKyAgICBET01KSVRB
Y2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcyhWZWN0b3I8RE9NSklUOjpWYWx1ZT4mJiByZWdzLCBW
ZWN0b3I8R1BSUmVnPiYmIGdwU2NyYXRjaCwgVmVjdG9yPEZQUlJlZz4mJiBmcFNjcmF0Y2gpCisg
ICAgICAgIDogRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zKFdURk1vdmUocmVncyksIFdURk1vdmUo
Z3BTY3JhdGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gpKQorICAgIHsKKyAgICB9CisKKyAgICBjbGFz
cyBTbG93UGF0aENhbGxHZW5lcmF0b3IgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+
U2xvd1BhdGhDYWxsR2VuZXJhdG9yKCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0
ZShWTSYsIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzQnlQYXRjaHBvaW50LCBDQ2FsbEhlbHBlcnMmKSA9IDA7CisgICAgfTsKKworICAgIHZv
aWQgZW1pdFNsb3dQYXRoQ2FsbHMoVk0mLCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBS
ZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVyc0J5UGF0Y2hwb2ludCwgQ0NhbGxIZWxwZXJzJik7CisK
K3ByaXZhdGU6CisjZGVmaW5lIEpTQ19ERUZJTkVfQ0FMTF9PUEVSQVRJT05TKE9wZXJhdGlvblR5
cGUsIFJlc3VsdFR5cGUsIC4uLikgdm9pZCBhZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVy
czo6SnVtcExpc3QsIENDYWxsSGVscGVycyYsIE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUsIHN0
ZDo6dHVwbGU8X19WQV9BUkdTX18+IGFyZ3MpIG92ZXJyaWRlOworICAgIERPTUpJVF9TTE9XX1BB
VEhfQ0FMTFMoSlNDX0RFRklORV9DQUxMX09QRVJBVElPTlMpCisjdW5kZWYgSlNDX0RFRklORV9D
QUxMX09QRVJBVElPTlMKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoQ2FsbEdl
bmVyYXRvcj4+IG1fZ2VuZXJhdG9yczsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAppbmRleCA5
YThhOGU1MjAwOThhOTZhZTZkYzg1MDlmMDJmMTUzMWEwMDEyNTYwLi5lYzJlYjY0ZGM0MmYxMjc1
NTZjZDhkZjM4ZTIzYmFiYTAxNTA4OGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAgLTMxLDYgKzMxLDggQEAKICNp
bmNsdWRlICJCaW5hcnlTd2l0Y2guaCIKICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBh
cmFtcy5oIgorI2luY2x1ZGUgIkRPTUpJVENhbGxET01QYXRjaHBvaW50LmgiCiAjaW5jbHVkZSAi
RGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAi
SGVhcC5oIgpAQCAtNzQsNyArNzYsMTEgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnN1
Y2NlZWQoKQogCiB2b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6Y2FsY3VsYXRlTGl2ZVJlZ2lz
dGVyc0ZvckNhbGxBbmRFeGNlcHRpb25IYW5kbGluZyhjb25zdCBSZWdpc3RlclNldCYgZXh0cmEp
CiB7CisgICAgaWYgKG1fZXh0cmFMaXZlUmVnaXN0ZXJzRm9yQ2FsbCAhPSBleHRyYSkKKyAgICAg
ICAgbV9jYWxjdWxhdGVkUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhhbmRsaW5nID0gZmFs
c2U7CisKICAgICBpZiAoIW1fY2FsY3VsYXRlZFJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRpb25I
YW5kbGluZykgeworICAgICAgICBtX2V4dHJhTGl2ZVJlZ2lzdGVyc0ZvckNhbGwgPSBleHRyYTsK
ICAgICAgICAgbV9jYWxjdWxhdGVkUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhhbmRsaW5n
ID0gdHJ1ZTsKIAogICAgICAgICBtX2xpdmVSZWdpc3RlcnNUb1ByZXNlcnZlQXRFeGNlcHRpb25I
YW5kbGluZ0NhbGxTaXRlID0gaml0LT5jb2RlQmxvY2soKS0+aml0Q29kZSgpLT5saXZlUmVnaXN0
ZXJzVG9QcmVzZXJ2ZUF0RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZShqaXQtPmNvZGVCbG9jaygp
LCBzdHViSW5mby0+Y2FsbFNpdGVJbmRleCk7CkBAIC05MzIsNiArOTM4LDE2IEBAIHZvaWQgQWNj
ZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBpZiAobV90eXBlID09IEN1c3Rv
bUFjY2Vzc29yR2V0dGVyICYmIG1fcmFyZURhdGEtPmRvbUpJVCkgeworICAgICAgICAgICAgLy8g
V2UgZG8gbm90IG5lZWQgdG8gZW1pdCBDaGVja0RPTSBvcGVyYXRpb24gc2luY2Ugc3RydWN0dXJl
IGNoZWNrIGVuc3VyZXMKKyAgICAgICAgICAgIC8vIHRoYXQgdGhlIHN0cnVjdHVyZSBvZiB0aGUg
Z2l2ZW4gYmFzZSB2YWx1ZSBpcyBzdHJ1Y3R1cmUoKSEgU28gYWxsIHdlIHNob3VsZAorICAgICAg
ICAgICAgLy8gZG8gaXMgcGVyZm9ybWluZyB0aGUgQ2hlY2tET00gdGhpbmd5IGluIElDIGNvbXBp
bGluZyB0aW1lIGhlcmUuCisgICAgICAgICAgICBpZiAoc3RydWN0dXJlKCktPmNsYXNzSW5mbygp
LT5pc1N1YkNsYXNzT2YobV9yYXJlRGF0YS0+ZG9tSklULT50aGlzQ2xhc3NJbmZvKCkpKSB7Cisg
ICAgICAgICAgICAgICAgZW1pdERPTUpJVEdldHRlcihzdGF0ZSwgYmFzZUZvckdldEdQUik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAg
ICAgLy8gU3R1ZmYgZm9yIGN1c3RvbSBnZXR0ZXJzL3NldHRlcnMuCiAgICAgICAgIENDYWxsSGVs
cGVyczo6Q2FsbCBvcGVyYXRpb25DYWxsOwogCkBAIC05NDAsOSArOTU2LDYgQEAgdm9pZCBBY2Nl
c3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGZhc3RQYXRoQ2FsbDsKICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpDYWxsIHNsb3dQYXRoQ2FsbDsKIAotICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgc3VjY2Vz
czsKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGZhaWw7Ci0KICAgICAgICAgLy8gVGhpcyBh
bHNvIGRvZXMgdGhlIG5lY2Vzc2FyeSBjYWxjdWxhdGlvbnMgb2Ygd2hldGhlciBvciBub3Qgd2Un
cmUgYW4KICAgICAgICAgLy8gZXhjZXB0aW9uIGhhbmRsaW5nIGNhbGwgc2l0ZS4KICAgICAgICAg
c3RhdGUucHJlc2VydmVMaXZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoKTsKQEAgLTEzODUsNiAr
MTM5OCwxMTcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlv
blN0YXRlJiBzdGF0ZSkKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCit2
b2lkIEFjY2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBz
dGF0ZSwgR1BSUmVnIGJhc2VGb3JHZXRHUFIpCit7CisgICAgQ0NhbGxIZWxwZXJzJiBqaXQgPSAq
c3RhdGUuaml0OworICAgIFZNJiB2bSA9ICpqaXQudm0oKTsKKyAgICBTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8gPSAqc3RhdGUuc3R1YkluZm87CisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdz
ID0gc3RhdGUudmFsdWVSZWdzOworICAgIEdQUlJlZyBiYXNlR1BSID0gc3RhdGUuYmFzZUdQUjsK
KyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHN0YXRlLnNjcmF0Y2hHUFI7CisKKyAgICAvLyBXZSBj
b25zdHJ1Y3QgdGhlIGVudmlyb25tZW50IHRoYXQgY2FuIGV4ZWN1dGUgdGhlIERPTUpJVDo6UGF0
Y2hwb2ludCBoZXJlLgorICAgIFJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBwYXRjaHBv
aW50ID0gbV9yYXJlRGF0YS0+ZG9tSklULT5jYWxsRE9NKCk7CisKKyAgICBWZWN0b3I8R1BSUmVn
PiBncFNjcmF0Y2g7CisgICAgVmVjdG9yPEZQUlJlZz4gZnBTY3JhdGNoOworICAgIFZlY3RvcjxE
T01KSVQ6OlZhbHVlPiByZWdzOworCisgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9j
YXRvcihzdHViSW5mby5wYXRjaC51c2VkUmVnaXN0ZXJzKTsKKyAgICBhbGxvY2F0b3IubG9jayhi
YXNlR1BSKTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIGFsbG9jYXRvci5sb2NrKHN0YXRp
Y19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guYmFzZVRhZ0dQUikpOworI2VuZGlmCisgICAg
YWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKKyAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BS
KTsKKworICAgIEdQUlJlZyBwYXJhbUJhc2VHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIEdQUlJl
ZyBwYXJhbUdsb2JhbE9iamVjdEdQUiA9IEludmFsaWRHUFJSZWc7CisgICAgSlNWYWx1ZVJlZ3Mg
cGFyYW1WYWx1ZVJlZ3MgPSB2YWx1ZVJlZ3M7CisgICAgR1BSUmVnIHJlbWFpbmluZ1NjcmF0Y2hH
UFIgPSBJbnZhbGlkR1BSUmVnOworCisgICAgLy8gdmFsdWVSZWdzIGFuZCBiYXNlRm9yR2V0R1BS
IG1heSBiZSB0aGUgc2FtZS4gRm9yIGV4YW1wbGUsIGluIEJhc2VsaW5lIEpJVCwgd2UgcGFzcyB0
aGUgc2FtZSByZWdUMCBmb3IgYmFzZUdQUiBhbmQgdmFsdWVSZWdzLgorICAgIC8vIEluIEZUTCwg
dGhlcmUgaXMgbm8gY29uc3RyYWludCB0aGF0IHRoZSBiYXNlRm9yR2V0R1BSIGludGVyZmVyZXMg
d2l0aCB0aGUgcmVzdWx0LiBUbyBtYWtlIGltcGxlbWVudGF0aW9uIHNpbXBsZSBpbgorICAgIC8v
IERPTUpJVDo6UGF0Y2hwb2ludCwgRE9NSklUOjpQYXRjaHBvaW50IGFzc3VtZXMgdGhhdCByZXN1
bHQgcmVnaXN0ZXJzIGFsd2F5cyBlYXJseSBpbnRlcmZlcmUgd2l0aCBpbnB1dCByZWdpc3RlcnMs
IGluIHRoaXMgY2FzZSwKKyAgICAvLyBiYXNlRm9yR2V0R1BSLiBTbyB3ZSBtb3ZlIGJhc2VGb3JH
ZXRHUFIgdG8gdGhlIG90aGVyIHJlZ2lzdGVyIGlmIGJhc2VGb3JHZXRHUFIgPT0gdmFsdWVSZWdz
LgorICAgIGlmIChiYXNlRm9yR2V0R1BSICE9IHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpIHsKKyAg
ICAgICAgcGFyYW1CYXNlR1BSID0gYmFzZUZvckdldEdQUjsKKyAgICAgICAgaWYgKCFwYXRjaHBv
aW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0KQorICAgICAgICAgICAgcmVtYWluaW5nU2NyYXRjaEdQ
UiA9IHNjcmF0Y2hHUFI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhcmFtR2xvYmFsT2Jq
ZWN0R1BSID0gc2NyYXRjaEdQUjsKKyAgICB9IGVsc2UgeworICAgICAgICBqaXQubW92ZSh2YWx1
ZVJlZ3MucGF5bG9hZEdQUigpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgcGFyYW1CYXNlR1BSID0g
c2NyYXRjaEdQUjsKKyAgICAgICAgaWYgKHBhdGNocG9pbnQtPnJlcXVpcmVHbG9iYWxPYmplY3Qp
CisgICAgICAgICAgICBwYXJhbUdsb2JhbE9iamVjdEdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNj
cmF0Y2hHUFIoKTsKKyAgICB9CisKKyAgICByZWdzLmFwcGVuZChwYXJhbVZhbHVlUmVncyk7Cisg
ICAgaWYgKHBhcmFtR2xvYmFsT2JqZWN0R1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgIHJl
Z3MuYXBwZW5kKHBhcmFtR2xvYmFsT2JqZWN0R1BSKTsKKyAgICByZWdzLmFwcGVuZChwYXJhbUJh
c2VHUFIpOworCisgICAgaWYgKHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycykgewor
ICAgICAgICB1bnNpZ25lZCBpID0gMDsKKyAgICAgICAgaWYgKHJlbWFpbmluZ1NjcmF0Y2hHUFIg
IT0gSW52YWxpZEdQUlJlZykgeworICAgICAgICAgICAgZ3BTY3JhdGNoLmFwcGVuZChyZW1haW5p
bmdTY3JhdGNoR1BSKTsKKyAgICAgICAgICAgICsraTsKKyAgICAgICAgfQorICAgICAgICBmb3Ig
KDsgaSA8IHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVyczsgKytpKQorICAgICAgICAg
ICAgZ3BTY3JhdGNoLmFwcGVuZChhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCkpOworICAg
IH0KKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXRjaHBvaW50LT5udW1GUFNjcmF0
Y2hSZWdpc3RlcnM7ICsraSkKKyAgICAgICAgZnBTY3JhdGNoLmFwcGVuZChhbGxvY2F0b3IuYWxs
b2NhdGVTY3JhdGNoRlBSKCkpOworCisgICAgLy8gTGV0J3Mgc3RvcmUgdGhlIHJldXNlZCByZWdp
c3RlcnMgdG8gdGhlIHN0YWNrLiBBZnRlciB0aGF0LCB3ZSBjYW4gdXNlIGFsbG9jYXRlZCBzY3Jh
dGNoIHJlZ2lzdGVycy4KKyAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0
YXRlIHByZXNlcnZlZFN0YXRlID0KKyAgICAgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVn
aXN0ZXJzQnlQdXNoaW5nKGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNr
U3BhY2U6OlNwYWNlRm9yQ0NhbGwpOworCisgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgZGF0
YUxvZygiYmFzZUdQUiA9ICIsIGJhc2VHUFIsICJcbiIpOworICAgICAgICBkYXRhTG9nKCJ2YWx1
ZVJlZ3MgPSAiLCB2YWx1ZVJlZ3MsICJcbiIpOworICAgICAgICBkYXRhTG9nKCJzY3JhdGNoR1BS
ID0gIiwgc2NyYXRjaEdQUiwgIlxuIik7CisgICAgICAgIGRhdGFMb2coInBhcmFtQmFzZUdQUiA9
ICIsIHBhcmFtQmFzZUdQUiwgIlxuIik7CisgICAgICAgIGlmIChwYXJhbUdsb2JhbE9iamVjdEdQ
UiAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAgICAgZGF0YUxvZygicGFyYW1HbG9iYWxPYmpl
Y3RHUFIgPSAiLCBwYXJhbUdsb2JhbE9iamVjdEdQUiwgIlxuIik7CisgICAgICAgIGRhdGFMb2co
InBhcmFtVmFsdWVSZWdzID0gIiwgcGFyYW1WYWx1ZVJlZ3MsICJcbiIpOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzOyAr
K2kpCisgICAgICAgICAgICBkYXRhTG9nKCJncFNjcmF0Y2hbIiwgaSwgIl0gPSAiLCBncFNjcmF0
Y2hbaV0sICJcbiIpOworICAgIH0KKworICAgIGlmIChwYXRjaHBvaW50LT5yZXF1aXJlR2xvYmFs
T2JqZWN0KSB7CisgICAgICAgIGppdC5lbWl0TG9hZFN0cnVjdHVyZShwYXJhbUJhc2VHUFIsIHBh
cmFtR2xvYmFsT2JqZWN0R1BSLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAgaml0
LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHBhcmFtR2xvYmFsT2JqZWN0R1BSLCBTdHJ1
Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcGFyYW1HbG9iYWxPYmplY3RHUFIpOworICAg
IH0KKworICAgIC8vIFdlIGRvIG5vdCBuZWVkIHRvIHNwaWxsIGxvY2tlZCByZWdpc3RlcnMgc2lu
Y2UgdGhlIGNhbGxlciAoQmFzZWxpbmUsIERGRywgYW5kIEZUTCkKKyAgICAvLyBtdXN0IGFzc3Vt
ZSB0aGF0IHRoZXkgY2FuIGJlIGNsb2JiZXJlZCBpbiB0aGUgSUMgZmFzdCBwYXRoIGlmIGl0IHN1
Y2NlZWRzLgorICAgIFJlZ2lzdGVyU2V0IHJlZ2lzdGVyc1RvU3BpbGxGb3JDQ2FsbDsKKyAgICBm
b3IgKGF1dG8mIHZhbHVlIDogcmVncykgeworICAgICAgICBET01KSVQ6OlJlZyByZWcgPSB2YWx1
ZS5yZWcoKTsKKyAgICAgICAgaWYgKHJlZy5pc0pTVmFsdWVSZWdzKCkpCisgICAgICAgICAgICBy
ZWdpc3RlcnNUb1NwaWxsRm9yQ0NhbGwuc2V0KHJlZy5qc1ZhbHVlUmVncygpKTsKKyAgICAgICAg
ZWxzZSBpZiAocmVnLmlzR1BSKCkpCisgICAgICAgICAgICByZWdpc3RlcnNUb1NwaWxsRm9yQ0Nh
bGwuc2V0KHJlZy5ncHIoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlZ2lzdGVyc1Rv
U3BpbGxGb3JDQ2FsbC5zZXQocmVnLmZwcigpKTsKKyAgICB9CisgICAgZm9yIChHUFJSZWcgcmVn
IDogZ3BTY3JhdGNoKQorICAgICAgICByZWdpc3RlcnNUb1NwaWxsRm9yQ0NhbGwuc2V0KHJlZyk7
CisgICAgZm9yIChGUFJSZWcgcmVnIDogZnBTY3JhdGNoKQorICAgICAgICByZWdpc3RlcnNUb1Nw
aWxsRm9yQ0NhbGwuc2V0KHJlZyk7CisgICAgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLmV4Y2x1
ZGUoUmVnaXN0ZXJTZXQ6OnJlZ2lzdGVyc1RvTm90U2F2ZUZvckNDYWxsKCkpOworCisgICAgRE9N
SklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMgcGFyYW1zKFdURk1vdmUocmVncyksIFdURk1v
dmUoZ3BTY3JhdGNoKSwgV1RGTW92ZShmcFNjcmF0Y2gpKTsKKyAgICBwYXRjaHBvaW50LT5nZW5l
cmF0b3IoKS0+cnVuKGppdCwgcGFyYW1zKTsKKyAgICBhbGxvY2F0b3IucmVzdG9yZVJldXNlZFJl
Z2lzdGVyc0J5UG9wcGluZyhqaXQsIHByZXNlcnZlZFN0YXRlKTsKKyAgICBzdGF0ZS5zdWNjZWVk
KCk7CisKKyAgICBwYXJhbXMuZW1pdFNsb3dQYXRoQ2FsbHModm0sIHN0YXRlLCByZWdpc3RlcnNU
b1NwaWxsRm9yQ0NhbGwsIGppdCk7Cit9CisKIFBvbHltb3JwaGljQWNjZXNzOjpQb2x5bW9ycGhp
Y0FjY2VzcygpIHsgfQogUG9seW1vcnBoaWNBY2Nlc3M6On5Qb2x5bW9ycGhpY0FjY2VzcygpIHsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBo
aWNBY2Nlc3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0Fj
Y2Vzcy5oCmluZGV4IDk3MGEyMzViZmRlMzJlNjNhZjZiOTVkYWZmNzMyM2MyYjk0OGM2NWMuLjA3
MDhjMDlhNDM1MmIwNGIyMDQxOWQzOTI3MTBmOWZiZDJhZmQ2MmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oCkBAIC0yNzcsNiAr
Mjc3LDcgQEAgY2xhc3MgQWNjZXNzQ2FzZSB7CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUltcGwo
QWNjZXNzR2VuZXJhdGlvblN0YXRlJik7CiAgICAgdm9pZCBlbWl0SW50cmluc2ljR2V0dGVyKEFj
Y2Vzc0dlbmVyYXRpb25TdGF0ZSYpOworICAgIHZvaWQgZW1pdERPTUpJVEdldHRlcihBY2Nlc3NH
ZW5lcmF0aW9uU3RhdGUmLCBHUFJSZWcgYmFzZUZvckdldEdQUik7CiAgICAgCiAgICAgQWNjZXNz
VHlwZSBtX3R5cGUgeyBMb2FkIH07CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFByaW1vcmRpYWwgfTsK
QEAgLTUxNCw2ICs1MTUsNyBAQCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsKICAgICAg
ICAgcmV0dXJuIG1fbGl2ZVJlZ2lzdGVyc1RvUHJlc2VydmVBdEV4Y2VwdGlvbkhhbmRsaW5nQ2Fs
bFNpdGU7CiAgICAgfQogICAgIAorICAgIFJlZ2lzdGVyU2V0IG1fZXh0cmFMaXZlUmVnaXN0ZXJz
Rm9yQ2FsbDsKICAgICBSZWdpc3RlclNldCBtX2xpdmVSZWdpc3RlcnNUb1ByZXNlcnZlQXRFeGNl
cHRpb25IYW5kbGluZ0NhbGxTaXRlOwogICAgIFJlZ2lzdGVyU2V0IG1fbGl2ZVJlZ2lzdGVyc0Zv
ckNhbGw7CiAgICAgQ2FsbFNpdGVJbmRleCBtX2NhbGxTaXRlSW5kZXggeyBDYWxsU2l0ZUluZGV4
KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuY3BwCmlu
ZGV4IDBhMTFjNjcxMzQ3ZDcxYmZkYTM1MTkzMGU3Y2I1NWYxYTVlYzZmMDcuLjhlZDc3YjUyZWVj
Y2M1M2EwOTU0NjEyODZhNTgzMWFiN2RkMTVjYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdET01KSVRQYXRjaHBvaW50UGFyYW1zLmNwcApAQCAtNDAsNyAr
NDAsNyBAQCBzdGF0aWMgdm9pZCBkaXNwYXRjaChTcGVjdWxhdGl2ZUpJVCogaml0LCBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0IGZyb20sIE9wZXJhdGlvbgogfQogCiAjZGVmaW5lIEpTQ19ERUZJTkVf
Q0FMTF9PUEVSQVRJT05TKE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUsIC4uLikgXAotICAgIHZv
aWQgRE9NSklUUGF0Y2hwb2ludFBhcmFtczo6YWRkU2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBl
cnM6Okp1bXBMaXN0IGZyb20sIENDYWxsSGVscGVycyYsIE9wZXJhdGlvblR5cGUgb3BlcmF0aW9u
LCBSZXN1bHRUeXBlIHJlc3VsdCwgc3RkOjp0dXBsZTxfX1ZBX0FSR1NfXz4gYXJncykgY29uc3Qg
XAorICAgIHZvaWQgRE9NSklUUGF0Y2hwb2ludFBhcmFtczo6YWRkU2xvd1BhdGhDYWxsSW1wbChD
Q2FsbEhlbHBlcnM6Okp1bXBMaXN0IGZyb20sIENDYWxsSGVscGVycyYsIE9wZXJhdGlvblR5cGUg
b3BlcmF0aW9uLCBSZXN1bHRUeXBlIHJlc3VsdCwgc3RkOjp0dXBsZTxfX1ZBX0FSR1NfXz4gYXJn
cykgXAogICAgIHsgXAogICAgICAgICBkaXNwYXRjaChtX2ppdCwgZnJvbSwgb3BlcmF0aW9uLCBy
ZXN1bHQsIGFyZ3MsIHN0ZDo6bWFrZV9pbmRleF9zZXF1ZW5jZTxzdGQ6OnR1cGxlX3NpemU8ZGVj
bHR5cGUoYXJncyk+Ojp2YWx1ZT4oKSk7IFwKICAgICB9IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdET01KSVRQYXRjaHBvaW50UGFyYW1zLmgKaW5kZXggNDZmZGQ0
YmU2MDA0ZjMzMWQ3YTk5NmNhMTY2YmE2MTMwMDIwOWY4Mi4uZmI2YWIwYjJjNjgzNzE5MmEyOGI3
ZTY1MTU3NGMwNTU1ZTE1NWViNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdET01KSVRQYXRjaHBvaW50UGFyYW1zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdET01KSVRQYXRjaHBvaW50UGFyYW1zLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3Mg
RE9NSklUUGF0Y2hwb2ludFBhcmFtcyA6IHB1YmxpYyBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMg
ewogICAgIH0KIAogcHJpdmF0ZToKLSNkZWZpbmUgSlNDX0RFRklORV9DQUxMX09QRVJBVElPTlMo
T3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwgLi4uKSB2b2lkIGFkZFNsb3dQYXRoQ2FsbEltcGwo
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzJiwgT3BlcmF0aW9uVHlwZSwgUmVz
dWx0VHlwZSwgc3RkOjp0dXBsZTxfX1ZBX0FSR1NfXz4gYXJncykgY29uc3Qgb3ZlcnJpZGU7Cisj
ZGVmaW5lIEpTQ19ERUZJTkVfQ0FMTF9PUEVSQVRJT05TKE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5
cGUsIC4uLikgdm9pZCBhZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExpc3Qs
IENDYWxsSGVscGVycyYsIE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUsIHN0ZDo6dHVwbGU8X19W
QV9BUkdTX18+IGFyZ3MpIG92ZXJyaWRlOwogICAgIERPTUpJVF9TTE9XX1BBVEhfQ0FMTFMoSlND
X0RFRklORV9DQUxMX09QRVJBVElPTlMpCiAjdW5kZWYgSlNDX0RFRklORV9DQUxMX09QRVJBVElP
TlMKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRQYXRj
aHBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnQu
aAppbmRleCAzODYwOGUyNTY5YTJhY2U2OTEwYjI4OTE5MDdmNWJkYjhhOTU5YzQzLi5iYjlmNWU0
ZjliODdmMjEzNzUzZmFiOGE1OWYwMDc5OGRmNjkwZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnQuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERPTUpJVCB7CiAKIGNsYXNzIFBhdGNocG9pbnRQYXJhbXM7
CiAKLXR5cGVkZWYgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBQYXRjaHBvaW50R2VuZXJhdG9yRnVu
Y3Rpb24oQ0NhbGxIZWxwZXJzJiwgY29uc3QgUGF0Y2hwb2ludFBhcmFtcyYpOwordHlwZWRlZiBD
Q2FsbEhlbHBlcnM6Okp1bXBMaXN0IFBhdGNocG9pbnRHZW5lcmF0b3JGdW5jdGlvbihDQ2FsbEhl
bHBlcnMmLCBQYXRjaHBvaW50UGFyYW1zJik7CiB0eXBlZGVmIFNoYXJlZFRhc2s8UGF0Y2hwb2lu
dEdlbmVyYXRvckZ1bmN0aW9uPiBQYXRjaHBvaW50R2VuZXJhdG9yOwogCiAvLyBET01KSVQgcGF0
Y2hwb2ludCBpcyB0aGUgd2F5IHRvIGluamVjdCBhbiBvcGFxdWUgY29kZSBnZW5lcmF0b3IgaW50
byBERkcgYW5kIEZUTC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQv
RE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9E
T01KSVRQYXRjaHBvaW50UGFyYW1zLmgKaW5kZXggYWVlY2UxYjdlMjk2ZWQxNGI0NmU0ZWQ2OTA4
NzFkMDJhMDc2ODIzNC4uZDgzYjZiMGJmMTY2NDA1YmZjNGRjOGUzMTU0ZDEwOWRlYTI4ZjEwOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRQYXRjaHBvaW50
UGFyYW1zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRQYXRjaHBv
aW50UGFyYW1zLmgKQEAgLTU1LDEzICs1NSwxMyBAQCBXVEZfTUFLRV9OT05DT1BZQUJMRShQYXRj
aHBvaW50UGFyYW1zKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5
cGUsIHR5cGVuYW1lIFJlc3VsdFR5cGUsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLSAgICB2b2lk
IGFkZFNsb3dQYXRoQ2FsbChDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGZyb20sIENDYWxsSGVscGVy
cyYgaml0LCBGdW5jdGlvblR5cGUgZnVuY3Rpb24sIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVu
dHMuLi4gYXJndW1lbnRzKSBjb25zdAorICAgIHZvaWQgYWRkU2xvd1BhdGhDYWxsKENDYWxsSGVs
cGVyczo6SnVtcExpc3QgZnJvbSwgQ0NhbGxIZWxwZXJzJiBqaXQsIEZ1bmN0aW9uVHlwZSBmdW5j
dGlvbiwgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCiAgICAgewog
ICAgICAgICBhZGRTbG93UGF0aENhbGxJbXBsKGZyb20sIGppdCwgZnVuY3Rpb24sIHJlc3VsdCwg
c3RkOjptYWtlX3R1cGxlKGFyZ3VtZW50cy4uLikpOwogICAgIH0KIAogcHJpdmF0ZToKLSNkZWZp
bmUgSlNDX0RFRklORV9DQUxMX09QRVJBVElPTlMoT3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwg
Li4uKSBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgYWRkU2xvd1BhdGhDYWxsSW1wbChD
Q2FsbEhlbHBlcnM6Okp1bXBMaXN0LCBDQ2FsbEhlbHBlcnMmLCBPcGVyYXRpb25UeXBlLCBSZXN1
bHRUeXBlLCBzdGQ6OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBjb25zdCA9IDA7CisjZGVmaW5l
IEpTQ19ERUZJTkVfQ0FMTF9PUEVSQVRJT05TKE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUsIC4u
LikgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB2b2lkIGFkZFNsb3dQYXRoQ2FsbEltcGwoQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzJiwgT3BlcmF0aW9uVHlwZSwgUmVzdWx0
VHlwZSwgc3RkOjp0dXBsZTxfX1ZBX0FSR1NfXz4gYXJncykgPSAwOwogICAgIERPTUpJVF9TTE9X
X1BBVEhfQ0FMTFMoSlNDX0RFRklORV9DQUxMX09QRVJBVElPTlMpCiAjdW5kZWYgSlNDX0RFRklO
RV9DQUxMX09QRVJBVElPTlMKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExET01KSVRQYXRjaHBvaW50UGFyYW1zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5jcHAKaW5kZXggYWEyMjU1ODc4MDYwYzVmNGZm
ZTliZTFhMzdlM2YyYzQ4NTdiYjQ4MS4uMTA2ZTJlNTYxOThiNGMxY2NlNGQzNDE2YmVhMGU2YmIy
OGUzNTRlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExET01KSVRQ
YXRjaHBvaW50UGFyYW1zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTERP
TUpJVFBhdGNocG9pbnRQYXJhbXMuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyB2b2lkIGRp
c3BhdGNoKENDYWxsSGVscGVycyYgaml0LCBGVEw6OlN0YXRlKiBzdGF0ZSwgY29uc3QgQjM6OlN0
YWNrbWFwR2VuCiB9CiAKICNkZWZpbmUgSlNDX0RFRklORV9DQUxMX09QRVJBVElPTlMoT3BlcmF0
aW9uVHlwZSwgUmVzdWx0VHlwZSwgLi4uKSBcCi0gICAgdm9pZCBET01KSVRQYXRjaHBvaW50UGFy
YW1zOjphZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExpc3QgZnJvbSwgQ0Nh
bGxIZWxwZXJzJiBqaXQsIE9wZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBSZXN1bHRUeXBlIHJlc3Vs
dCwgc3RkOjp0dXBsZTxfX1ZBX0FSR1NfXz4gYXJncykgY29uc3QgXAorICAgIHZvaWQgRE9NSklU
UGF0Y2hwb2ludFBhcmFtczo6YWRkU2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBlcnM6Okp1bXBM
aXN0IGZyb20sIENDYWxsSGVscGVycyYgaml0LCBPcGVyYXRpb25UeXBlIG9wZXJhdGlvbiwgUmVz
dWx0VHlwZSByZXN1bHQsIHN0ZDo6dHVwbGU8X19WQV9BUkdTX18+IGFyZ3MpIFwKICAgICB7IFwK
ICAgICAgICAgZGlzcGF0Y2goaml0LCAmbV9zdGF0ZSwgbV9wYXJhbXMsIG1fbm9kZSwgbV9leGNl
cHRpb25zLCBmcm9tLCBvcGVyYXRpb24sIHJlc3VsdCwgYXJncywgc3RkOjptYWtlX2luZGV4X3Nl
cXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxkZWNsdHlwZShhcmdzKT46OnZhbHVlPigpKTsgXAogICAg
IH0gXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExET01KSVRQYXRj
aHBvaW50UGFyYW1zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTERPTUpJVFBhdGNo
cG9pbnRQYXJhbXMuaAppbmRleCAyZDEzZWVhYTdkNTg3Y2I0N2U5Mzc3MzEyNmZmNzA1OTM2NDQz
ZjdhLi4zMzg3YzkwODZlMTM2NjEyODRmNTc4YzZjYTQ0NDJlMjc0YzBjZmRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTERPTUpJVFBhdGNocG9pbnRQYXJhbXMu
aApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBET01KSVRQYXRjaHBvaW50UGFyYW1zIDogcHVibGlj
IERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyB7CiAgICAgfQogCiBwcml2YXRlOgotI2RlZmluZSBK
U0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUyhPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCAuLi4p
IHZvaWQgYWRkU2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0LCBDQ2FsbEhl
bHBlcnMmLCBPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCBzdGQ6OnR1cGxlPF9fVkFfQVJHU19f
PiBhcmdzKSBjb25zdCBvdmVycmlkZTsKKyNkZWZpbmUgSlNDX0RFRklORV9DQUxMX09QRVJBVElP
TlMoT3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwgLi4uKSB2b2lkIGFkZFNsb3dQYXRoQ2FsbElt
cGwoQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzJiwgT3BlcmF0aW9uVHlwZSwg
UmVzdWx0VHlwZSwgc3RkOjp0dXBsZTxfX1ZBX0FSR1NfXz4gYXJncykgb3ZlcnJpZGU7CiAgICAg
RE9NSklUX1NMT1dfUEFUSF9DQUxMUyhKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUykKICN1bmRl
ZiBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDI3
NDEyZDM3MjM3MzBjYTc1YzNiOWM1YWY4OGVkMWVhNzNmZWE0NDcuLjkzZDAxZDRjNzVkMzk1YTZl
NzEzYTJiYjU3ZjQ1Y2JmYzc4YWIxMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC01NTcsNiAr
NTU3LDIyIEBAIGNsYXNzIERPTUpJVE5vZGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKEpTQzo6SlNUeXBlKExhc3RKU0NPYmplY3RUeXBlICsgMSksIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKKyNpZiBFTkFCTEUoSklUKQorICAgIHN0YXRpYyBS
ZWY8RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja0RPTUpJVE5vZGUoKQorICAgIHsKKyAgICAgICAg
UmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IERPTUpJVDo6UGF0Y2hwb2ludDo6
Y3JlYXRlKCk7CisgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxw
ZXJzJiBqaXQsIERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsKKyAgICAgICAgICAgIGZhaWx1
cmVDYXNlcy5hcHBlbmQoaml0LmJyYW5jaDgoCisgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpOb3RFcXVhbCwKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocGFyYW1z
WzBdLmdwcigpLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKKyAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU0M6OkpTVHlwZShMYXN0SlNDT2JqZWN0VHlw
ZSArIDEpKSkpOworICAgICAgICAgICAgcmV0dXJuIGZhaWx1cmVDYXNlczsKKyAgICAgICAgfSk7
CisgICAgICAgIHJldHVybiBwYXRjaHBvaW50OworICAgIH0KKyNlbmRpZgorCiAgICAgc3RhdGlj
IERPTUpJVE5vZGUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsK
ICAgICAgICAgRE9NSklUTm9kZSogZ2V0dGVyID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
RE9NSklUTm9kZT4odm0uaGVhcCwgc2l6ZW9mKERPTUpJVE5vZGUpKSkgRE9NSklUTm9kZSh2bSwg
c3RydWN0dXJlKTsKQEAgLTYwOCwyMyArNjI0LDE0IEBAIGNsYXNzIERPTUpJVEdldHRlciA6IHB1
YmxpYyBET01KSVROb2RlIHsKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBSZWY8RE9NSklUOjpQ
YXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRlCiAgICAgICAgIHsKLSAgICAgICAgICAgIFJl
ZjxET01KSVQ6OlBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBET01KSVQ6OlBhdGNocG9pbnQ6OmNy
ZWF0ZSgpOwotICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKLSAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsKLSAgICAg
ICAgICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGppdC5icmFuY2g4KAotICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MocGFyYW1zWzBdLmdwcigpLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9m
ZnNldCgpKSwKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
SlNDOjpKU1R5cGUoTGFzdEpTQ09iamVjdFR5cGUgKyAxKSkpKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFpbHVyZUNhc2VzOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm4g
cGF0Y2hwb2ludDsKKyAgICAgICAgICAgIHJldHVybiBET01KSVROb2RlOjpjaGVja0RPTUpJVE5v
ZGUoKTsKICAgICAgICAgfQogCiAgICAgICAgIFJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50
PiBjYWxsRE9NKCkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgUmVmPERPTUpJVDo6
Q2FsbERPTVBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50
OjpjcmVhdGUoKTsKICAgICAgICAgICAgIHBhdGNocG9pbnQtPnJlcXVpcmVHbG9iYWxPYmplY3Qg
PSBmYWxzZTsKLSAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7Cisg
ICAgICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0
LCBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEpT
VmFsdWVSZWdzIHJlc3VsdHMgPSBwYXJhbXNbMF0uanNWYWx1ZVJlZ3MoKTsKICAgICAgICAgICAg
ICAgICBHUFJSZWcgZG9tID0gcGFyYW1zWzFdLmdwcigpOwogCkBAIC02NjYsNiArNjczLDkyIEBA
IGNsYXNzIERPTUpJVEdldHRlciA6IHB1YmxpYyBET01KSVROb2RlIHsKICAgICB9CiB9OwogCitj
bGFzcyBET01KSVRHZXR0ZXJDb21wbGV4IDogcHVibGljIERPTUpJVE5vZGUgeworcHVibGljOgor
ICAgIERPTUpJVEdldHRlckNvbXBsZXgoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAg
ICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAgIERFQ0xBUkVf
SU5GTzsKKyAgICB0eXBlZGVmIERPTUpJVE5vZGUgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNDOjpK
U1R5cGUoTGFzdEpTQ09iamVjdFR5cGUgKyAxKSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwor
ICAgIH0KKworICAgIHN0YXRpYyBET01KSVRHZXR0ZXJDb21wbGV4KiBjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIERPTUpJVEdldHRlckNvbXBsZXgq
IGdldHRlciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERPTUpJVEdldHRlckNvbXBsZXg+
KHZtLmhlYXAsIHNpemVvZihET01KSVRHZXR0ZXJDb21wbGV4KSkpIERPTUpJVEdldHRlckNvbXBs
ZXgodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGdldHRlci0+ZmluaXNoQ3JlYXRpb24odm0pOwor
ICAgICAgICByZXR1cm4gZ2V0dGVyOworICAgIH0KKworICAgIGNsYXNzIERPTUpJVE5vZGVET01K
SVQgOiBwdWJsaWMgRE9NSklUOjpHZXR0ZXJTZXR0ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAg
RE9NSklUTm9kZURPTUpJVCgpCisgICAgICAgICAgICA6IERPTUpJVDo6R2V0dGVyU2V0dGVyKERP
TUpJVEdldHRlckNvbXBsZXg6OmN1c3RvbUdldHRlciwgbnVsbHB0ciwgRE9NSklUTm9kZTo6aW5m
bygpKQorICAgICAgICB7CisgICAgICAgIH0KKworI2lmIEVOQUJMRShKSVQpCisgICAgICAgIFJl
ZjxET01KSVQ6OlBhdGNocG9pbnQ+IGNoZWNrRE9NKCkgb3ZlcnJpZGUKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIERPTUpJVE5vZGU6OmNoZWNrRE9NSklUTm9kZSgpOworICAgICAgICB9
CisKKyAgICAgICAgUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVy
cmlkZQorICAgICAgICB7CisgICAgICAgICAgICBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2lu
dD4gcGF0Y2hwb2ludCA9IERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ6OmNyZWF0ZSgpOworICAg
ICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMzsKKyAgICAgICAg
ICAgIHBhdGNocG9pbnQtPm51bUZQU2NyYXRjaFJlZ2lzdGVycyA9IDM7CisgICAgICAgICAgICBw
YXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBET01KSVQ6OlBh
dGNocG9pbnRQYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHJl
c3VsdHMgPSBwYXJhbXNbMF0uanNWYWx1ZVJlZ3MoKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcg
ZG9tR1BSID0gcGFyYW1zWzJdLmdwcigpOworICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKDQyKSwgcGFyYW1zLmdwU2NyYXRjaCgwKSk7CisgICAgICAg
ICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNDIpLCBwYXJhbXMu
Z3BTY3JhdGNoKDEpKTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMig0MiksIHBhcmFtcy5ncFNjcmF0Y2goMikpOworCisgICAgICAgICAgICAgICAg
cGFyYW1zLmFkZFNsb3dQYXRoQ2FsbChqaXQuanVtcCgpLCBqaXQsIHN0YXRpY19jYXN0PEVuY29k
ZWRKU1ZhbHVlKCopKEV4ZWNTdGF0ZSosIHZvaWQqKT4oW10oRXhlY1N0YXRlKiwgdm9pZCogcG9p
bnRlcikgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKHN0YXRpY19jYXN0PERPTUpJVEdldHRlcio+KHBvaW50ZXIpLT52YWx1ZSgpKSk7CisgICAg
ICAgICAgICAgICAgfSksIHJlc3VsdHMsIGRvbUdQUik7CisgICAgICAgICAgICAgICAgcmV0dXJu
IENDYWxsSGVscGVyczo6SnVtcExpc3QoKTsKKworICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICByZXR1cm4gcGF0Y2hwb2ludDsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfTsKKworICAgIHN0
YXRpYyBET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUTm9kZUdldHRlclNldHRlcigpCisgICAg
eworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RE9NSklUTm9kZURPTUpJVD4gZ3JhcGg7
CisgICAgICAgIHJldHVybiAmZ3JhcGguZ2V0KCk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQorICAgIHsKKyAgICAgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgICAgICBET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUID0gZG9tSklU
Tm9kZUdldHRlclNldHRlcigpOworICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXIqIGN1c3RvbUdl
dHRlclNldHRlciA9IEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBkb21KSVQtPmdldHRl
cigpLCBkb21KSVQtPnNldHRlcigpLCBkb21KSVQpOworICAgICAgICBwdXREaXJlY3RDdXN0b21B
Y2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJjdXN0b21HZXR0ZXIiKSwg
Y3VzdG9tR2V0dGVyU2V0dGVyLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29yKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgY3VzdG9tR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCisgICAgeworICAgICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICAgICAgRE9NSklUTm9kZSogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8RE9NSklUTm9kZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICAgICAgaWYg
KCF0aGlzT2JqZWN0KQorICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHRoaXNPYmpl
Y3QtPnZhbHVlKCkpKTsKKyAgICB9Cit9OworCiBjb25zdCBDbGFzc0luZm8gRWxlbWVudDo6c19p
bmZvID0geyAiRWxlbWVudCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
RWxlbWVudCkgfTsKIGNvbnN0IENsYXNzSW5mbyBNYXNxdWVyYWRlcjo6c19pbmZvID0geyAiTWFz
cXVlcmFkZXIiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE1hc3F1ZXJh
ZGVyKSB9OwogY29uc3QgQ2xhc3NJbmZvIFJvb3Q6OnNfaW5mbyA9IHsgIlJvb3QiLCAmQmFzZTo6
c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFJvb3QpIH07CkBAIC02NzMsNiArNzY2LDcg
QEAgY29uc3QgQ2xhc3NJbmZvIEltcHVyZUdldHRlcjo6c19pbmZvID0geyAiSW1wdXJlR2V0dGVy
IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVQKIGNvbnN0IENsYXNzSW5mbyBDdXN0b21HZXR0ZXI6
OnNfaW5mbyA9IHsgIkN1c3RvbUdldHRlciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoQ3VzdG9tR2V0dGVyKSB9OwogY29uc3QgQ2xhc3NJbmZvIERPTUpJVE5vZGU6OnNf
aW5mbyA9IHsgIkRPTUpJVE5vZGUiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKERPTUpJVE5vZGUpIH07CiBjb25zdCBDbGFzc0luZm8gRE9NSklUR2V0dGVyOjpzX2luZm8g
PSB7ICJET01KSVRHZXR0ZXIiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KERPTUpJVEdldHRlcikgfTsKK2NvbnN0IENsYXNzSW5mbyBET01KSVRHZXR0ZXJDb21wbGV4Ojpz
X2luZm8gPSB7ICJET01KSVRHZXR0ZXJDb21wbGV4IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShET01KSVRHZXR0ZXJDb21wbGV4KSB9OwogY29uc3QgQ2xhc3NJbmZvIFJ1
bnRpbWVBcnJheTo6c19pbmZvID0geyAiUnVudGltZUFycmF5IiwgJkJhc2U6OnNfaW5mbywgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShSdW50aW1lQXJyYXkpIH07CiBjb25zdCBDbGFzc0luZm8gU2lt
cGxlT2JqZWN0OjpzX2luZm8gPSB7ICJTaW1wbGVPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAwLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKFNpbXBsZU9iamVjdCkgfTsKIHN0YXRpYyBib29sIHRlc3QyNjJB
c3luY1Bhc3NlZCB7IGZhbHNlIH07CkBAIC03MDMsNiArNzk3LDcgQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVJbXB1cmVHZXR0ZXIoRXhlY1N0YXRl
Kik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUN1
c3RvbUdldHRlck9iamVjdChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklUTm9kZU9iamVjdChFeGVjU3RhdGUqKTsKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0
dGVyT2JqZWN0KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25DcmVhdGVET01KSVRHZXR0ZXJDb21wbGV4T2JqZWN0KEV4ZWNTdGF0ZSopOwog
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVCdWlsdGlu
KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25DcmVhdGVHbG9iYWxPYmplY3QoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldEltcHVyZUdldHRlckRlbGVnYXRlKEV4ZWNTdGF0ZSop
OwpAQCAtOTg5LDYgKzEwODQsNyBAQCBjbGFzcyBHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNHbG9i
YWxPYmplY3QgewogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZUN1c3RvbUdldHRlck9i
amVjdCIsIGZ1bmN0aW9uQ3JlYXRlQ3VzdG9tR2V0dGVyT2JqZWN0LCAwKTsKICAgICAgICAgYWRk
RnVuY3Rpb24odm0sICJjcmVhdGVET01KSVROb2RlT2JqZWN0IiwgZnVuY3Rpb25DcmVhdGVET01K
SVROb2RlT2JqZWN0LCAwKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVET01KSVRH
ZXR0ZXJPYmplY3QiLCBmdW5jdGlvbkNyZWF0ZURPTUpJVEdldHRlck9iamVjdCwgMCk7CisgICAg
ICAgIGFkZEZ1bmN0aW9uKHZtLCAiY3JlYXRlRE9NSklUR2V0dGVyQ29tcGxleE9iamVjdCIsIGZ1
bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyQ29tcGxleE9iamVjdCwgMCk7CiAgICAgICAgIGFkZEZ1
bmN0aW9uKHZtLCAiY3JlYXRlQnVpbHRpbiIsIGZ1bmN0aW9uQ3JlYXRlQnVpbHRpbiwgMik7CiAg
ICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiY3JlYXRlR2xvYmFsT2JqZWN0IiwgZnVuY3Rpb25DcmVh
dGVHbG9iYWxPYmplY3QsIDApOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgInNldEltcHVyZUdl
dHRlckRlbGVnYXRlIiwgZnVuY3Rpb25TZXRJbXB1cmVHZXR0ZXJEZWxlZ2F0ZSwgMik7CkBAIC0x
NTA5LDYgKzE2MDUsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNy
ZWF0ZURPTUpJVEdldHRlck9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyQ29tcGxleE9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBET01KSVRHZXR0ZXJDb21wbGV4OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBqc051bGwoKSk7CisgICAgRE9NSklUR2V0dGVyQ29tcGxl
eCogcmVzdWx0ID0gRE9NSklUR2V0dGVyQ29tcGxleDo6Y3JlYXRlKGV4ZWMtPnZtKCksIHN0cnVj
dHVyZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0SW1wdXJlR2V0dGVyRGVsZWdhdGUoRXhl
Y1N0YXRlKiBleGVjKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEhlbHBlcnMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbWppdC9ET01KSVRIZWxwZXJzLmgKaW5kZXggZGJlNTM2NWY4NmZlY2QxYmMyZTcyNzYxM2Y3
NTYwNWIxNmYzODI1Mi4uMTgwNmIyYWZhMWM0NzFjMDMwNDYzMGI4MDM4ZjAzMjNmNmUzNjFlYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEhlbHBlcnMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSGVscGVycy5oCkBAIC01OSw3ICs1OSw3IEBAIHZv
aWQgdHJ5TG9va1VwV3JhcHBlckNhY2hlKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0JiBmYWlsdXJlQ2FzCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFdyYXBwZWRUeXBl
LCB0eXBlbmFtZSBUb0pTRnVuY3Rpb24+Ci12b2lkIHRvV3JhcHBlcihDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcywgR1BSUmVnIHdy
YXBwZWQsIEdQUlJlZyBnbG9iYWxPYmplY3QsIEpTVmFsdWVSZWdzIHJlc3VsdCwgVG9KU0Z1bmN0
aW9uIGZ1bmN0aW9uLCBKU0M6OkpTVmFsdWUgZ2xvYmFsT2JqZWN0Q29uc3RhbnQpCit2b2lkIHRv
V3JhcHBlcihDQ2FsbEhlbHBlcnMmIGppdCwgSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMm
IHBhcmFtcywgR1BSUmVnIHdyYXBwZWQsIEdQUlJlZyBnbG9iYWxPYmplY3QsIEpTVmFsdWVSZWdz
IHJlc3VsdCwgVG9KU0Z1bmN0aW9uIGZ1bmN0aW9uLCBKU0M6OkpTVmFsdWUgZ2xvYmFsT2JqZWN0
Q29uc3RhbnQpCiB7CiAgICAgQVNTRVJUKHdyYXBwZWQgIT0gcmVzdWx0LnBheWxvYWRHUFIoKSk7
CiAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCAhPSByZXN1bHQucGF5bG9hZEdQUigpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5jcHAKaW5kZXggYjUwZDI0ZTlhMzNjNWEzZWI3OGI4
YjcxNTJkODM4M2JlZjdkZDEzNS4uZDhmNTkyYzY0YWYxYjQyY2RiOGFlZDg0ZjgzNzU2YTVjODJm
MWE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5jcHAKQEAgLTU0LDcgKzU0
LDcgQEAgc3RhdGljIFJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBjcmVhdGVDYWxsRE9N
Rm9yT2Zmc2V0QWNjZXNzKHB0cmRpZmZfdCBvZmYKIHsKICAgICBSZWY8RE9NSklUOjpDYWxsRE9N
UGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ6OmNyZWF0
ZSgpOwogICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7Ci0gICAgcGF0
Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgRE9NSklU
OjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKKyAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0
b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFt
cykgewogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHQgPSBwYXJhbXNbMF0uanNWYWx1ZVJlZ3Mo
KTsKICAgICAgICAgR1BSUmVnIGdsb2JhbE9iamVjdCA9IHBhcmFtc1sxXS5ncHIoKTsKICAgICAg
ICAgR1BSUmVnIG5vZGUgPSBwYXJhbXNbMl0uZ3ByKCk7CkBAIC04NCw3ICs4NCw3IEBAIHN0YXRp
YyBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gY3JlYXRlQ2FsbERPTUZvck9mZnNldEFj
Y2VzcyhwdHJkaWZmX3Qgb2ZmCiBzdGF0aWMgUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tO
b2RlKCkKIHsKICAgICBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBwYXRjaHBvaW50ID0gRE9NSklU
OjpQYXRjaHBvaW50OjpjcmVhdGUoKTsKLSAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1d
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFt
cykgeworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQs
IERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgIENDYWxsSGVscGVy
czo6SnVtcExpc3QgZmFpbHVyZUNhc2VzOwogICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKERP
TUpJVEhlbHBlcnM6OmJyYW5jaElmTm90Tm9kZShqaXQsIHBhcmFtc1swXS5ncHIoKSkpOwogICAg
ICAgICByZXR1cm4gZmFpbHVyZUNhc2VzOwpAQCAtMTU3LDcgKzE1Nyw3IEBAIFJlZjxET01KSVQ6
OkNhbGxET01QYXRjaHBvaW50PiBOb2RlTm9kZVR5cGVET01KSVQ6OmNhbGxET00oKQogewogICAg
IFJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBwYXRjaHBvaW50ID0gRE9NSklUOjpDYWxs
RE9NUGF0Y2hwb2ludDo6Y3JlYXRlKCk7CiAgICAgcGF0Y2hwb2ludC0+cmVxdWlyZUdsb2JhbE9i
amVjdCA9IGZhbHNlOwotICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CisgICAg
cGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgRE9NSklUOjpQ
YXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0ID0g
cGFyYW1zWzBdLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEdQUlJlZyBub2RlID0gcGFyYW1zWzFd
LmdwcigpOwogICAgICAgICBqaXQubG9hZDgoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG5vZGUsIEpT
Qzo6SlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIHJlc3VsdC5wYXlsb2FkR1BSKCkpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA4
NGI4NzAwZjdjZjdlMjY1OWZiOWQ4MjUxY2ZmZjcwY2JmM2VkNGM5Li5mOTYyYTg0YjNhNTYxNzRk
ZjFlMGQwM2U3YjJlY2MxMDQ0NjgwYzBjIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE2LTEwLTEzICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01KSVRdIFVz
ZSBET01KSVQ6OlBhdGNocG9pbnQgaW4gSUMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MzIyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2RvbWppdC1nZXR0ZXItY29tcGxleC13aXRoLWlu
Y29ycmVjdC1vYmplY3QuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAg
ICAoYWNjZXNzKToKKyAgICAgICAgKGkuc2hvdWxkVGhyb3cpOgorICAgICAgICAqIHN0cmVzcy9k
b21qaXQtZ2V0dGVyLWNvbXBsZXguanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAg
ICAgICAoYWNjZXNzKToKKwogMjAxNi0xMC0xMyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgRml4IEFycmF5LnByb3RvdHlwZS5zcGxpY2UgRVM2IGNvbXBsaWFuY2Uu
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLWNvbXBsZXgtd2l0aC1p
bmNvcnJlY3Qtb2JqZWN0LmpzIGIvSlNUZXN0cy9zdHJlc3MvZG9taml0LWdldHRlci1jb21wbGV4
LXdpdGgtaW5jb3JyZWN0LW9iamVjdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNGI4MGNjZDg4NGFjMzhkMDQz
YmU2MjA4Y2I5OGU3YzIwYWY2YTMwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
ZG9taml0LWdldHRlci1jb21wbGV4LXdpdGgtaW5jb3JyZWN0LW9iamVjdC5qcwpAQCAtMCwwICsx
LDI4IEBACitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2
YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7
CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3du
ID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3du
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5n
KGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBl
cnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCit2YXIgY29tcGxleCA9IGNyZWF0ZURPTUpJ
VEdldHRlckNvbXBsZXhPYmplY3QoKTsKK3ZhciBvYmplY3QgPSB7fTsKK29iamVjdC5fX3Byb3Rv
X18gPSBjb21wbGV4OworZnVuY3Rpb24gYWNjZXNzKG9iamVjdCkKK3sKKyAgICByZXR1cm4gb2Jq
ZWN0LmN1c3RvbUdldHRlcjsKK30KK25vSW5saW5lKGFjY2Vzcyk7Citmb3IgKHZhciBpID0gMDsg
aSA8IDFlNDsgKytpKSB7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBhY2Nlc3Mo
b2JqZWN0KTsKKyAgICB9LCBgVHlwZUVycm9yOiBUeXBlIGVycm9yYCk7Cit9CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLWNvbXBsZXguanMgYi9KU1Rlc3RzL3N0cmVz
cy9kb21qaXQtZ2V0dGVyLWNvbXBsZXguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTk1ZGU3ZTUyYjA2ZWYzYjI0
NDc0NWRiN2M1YjhlN2NkZTY2MDAxNQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L2RvbWppdC1nZXR0ZXItY29tcGxleC5qcwpAQCAtMCwwICsxLDE0IEBACitmdW5jdGlvbiBzaG91
bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiAke1N0cmluZyhhY3R1YWwpfWApOwor
fQorCit2YXIgY29tcGxleCA9IGNyZWF0ZURPTUpJVEdldHRlckNvbXBsZXhPYmplY3QoKTsKK2Z1
bmN0aW9uIGFjY2Vzcyhjb21wbGV4KQoreworICAgIHJldHVybiBjb21wbGV4LmN1c3RvbUdldHRl
cjsKK30KK25vSW5saW5lKGFjY2Vzcyk7Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7
CisgICAgc2hvdWxkQmUoYWNjZXNzKGNvbXBsZXgpLCA0Mik7Cit9Cg==
</data>
<flag name="review"
          id="314696"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291740</attachid>
            <date>2016-10-16 02:13:22 -0700</date>
            <delta_ts>2016-10-17 13:24:10 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-163223-20161016020952.patch</filename>
            <type>text/plain</type>
            <size>67603</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3Mzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
M2VmYTJjOWQzODhlZGU3ODVkNTg2NTc4OWYyNjUyODcwZDQzNWUwLi45ZDdjNzRjMzBiMWNjYmM4
ZDM3M2IyZmZiYWFjMzA5Y2Q0NDRlOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NCBAQAorMjAxNi0xMC0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRE9NSklUXSBVc2UgRE9NSklUOjpQYXRjaHBvaW50IGluIElDCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyMjMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNo
IHVzZXMgRE9NSklUOjpQYXRjaHBvaW50IHRvIGlubGluZSBET00gYWNjZXNzZXMgZXZlbiBpbiBJ
QyEKKyAgICAgICAgSXQgaXMgdXNlZnVsIGZvciBCYXNlbGluZSBKSVQgY2FzZXMgYW5kIEdldEJ5
SWQgY2FzZXMgaW4gREZHIGFuZCBGVEwuCisgICAgICAgIEluIEFjY2Vzc0Nhc2UsIHdlIGNvbnN0
cnVjdCB0aGUgZW52aXJvbm1lbnQgdGhhdCBhbGxvd3MgRE9NSklUOjpQYXRjaHBvaW50CisgICAg
ICAgIHRvIGVtaXQgY29kZSBhbmQgbWFrZSBET01KSVQgYWNjZXNzb3JzIGlubGluZWQgaW4gSUMu
CisKKyAgICAgICAgVG8gYWxsb3cgRE9NSklUOjpQYXRjaHBvaW50IHRvIGVtaXQgY29kZSwgd2Ug
Y3JlYXRlIGEgbWVjaGFuaXNtIHRvIGVtaXQgY2FsbHMKKyAgICAgICAgcmVxdWlyZWQgaW4gRE9N
SklUOjpQYXRjaHBvaW50LiBUaGlzIHN5c3RlbSBpcyB1c2VmdWwgd2hlbiB3ZSBjcmVhdGUgdGhl
IHN1cGVyLQorICAgICAgICBwb2x5bW9ycGhpYyBzdXBwb3J0WzFdIGxhdGVyLiBBbmQgaW5saW5p
bmcgbWVjaGFuaXNtIGlzIHVzZWZ1bCBldmVuIGFmdGVyCisgICAgICAgIGludHJvZHVjaW5nIHN1
cGVyLXBvbHltb3JwaGljIHN1cHBvcnQgc2luY2UgaXQgY2FuIHdvcmsgZXZlbiBhZnRlciB3ZSBm
aXJlIHRoZQorICAgICAgICB3YXRjaHBvaW50IGZvciBzdXBlci1wb2x5bW9ycGhpYyBoYW5kbGlu
Zy4KKworICAgICAgICBUaGlzIHBhdGNoIGltcHJvdmVzIERyb21hZW8gZG9tLXRyYXZlcnNlIDgl
ICgyNjMuOTUgcnVucy9zIHYucy4gMjQ0LjA3IHJ1bnMvcykuCisKKyAgICAgICAgWzFdOiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjI2CisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0RPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50
UGFyYW1zLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlNsb3dQYXRoQ2FsbEdlbmVyYXRvcldp
dGhBcmd1bWVudHM6OlNsb3dQYXRoQ2FsbEdlbmVyYXRvcldpdGhBcmd1bWVudHMpOgorICAgICAg
ICAoSlNDOjpTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRoQXJndW1lbnRzOjpnZW5lcmF0ZUltcGwp
OgorICAgICAgICAoSlNDOjpET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtczo6ZW1pdFNs
b3dQYXRoQ2FsbHMpOgorICAgICAgICAqIGJ5dGVjb2RlL0RPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBv
aW50UGFyYW1zLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRE9N
SklUUGF0Y2hwb2ludFBhcmFtcy5oLgorICAgICAgICAoSlNDOjpET01KSVRBY2Nlc3NDYXNlUGF0
Y2hwb2ludFBhcmFtczo6RE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMpOgorICAgICAg
ICAoSlNDOjpET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtczo6U2xvd1BhdGhDYWxsR2Vu
ZXJhdG9yOjp+U2xvd1BhdGhDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5
bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6
bGl2ZVJlZ2lzdGVyc0ZvckNhbGwpOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGU6OmxpdmVSZWdpc3RlcnNUb1ByZXNlcnZlQXRFeGNlcHRpb25IYW5kbGluZ0NhbGxTaXRlKToK
KyAgICAgICAgKEpTQzo6Y2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkFjY2Vz
c0dlbmVyYXRpb25TdGF0ZTo6Y2FsY3VsYXRlTGl2ZVJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRp
b25IYW5kbGluZyk6CisgICAgICAgIChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cmVzdG9y
ZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsV2l0aFRocm93bkV4Y2VwdGlvbik6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9t
U3RhY2tGb3JDYWxsKToKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpjYWxs
U2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmdPck9yaWdpbmFsKToKKyAgICAgICAgKEpTQzo6
QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpvcmlnaW5hbEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAoSlNDOjpBY2Nlc3ND
YXNlOjplbWl0RE9NSklUR2V0dGVyKToKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6
OnJlZ2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNl
cnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRl
Y29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9u
U3RhdGU6OlNwaWxsU3RhdGU6OmlzRW1wdHkpOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0
aW9uU3RhdGU6OnNldFNwaWxsU3RhdGVGb3JKU0dldHRlclNldHRlcik6CisgICAgICAgIChKU0M6
OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6c3BpbGxTdGF0ZUZvckpTR2V0dGVyU2V0dGVyKToKKyAg
ICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpsaXZlUmVnaXN0ZXJzRm9yQ2FsbCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6bnVtYmVyT2ZT
dGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpsaXZlUmVnaXN0ZXJzVG9QcmVzZXJ2ZUF0RXhj
ZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZSk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0RPTUpJ
VFBhdGNocG9pbnRQYXJhbXMuY3BwOgorICAgICAgICAqIGRmZy9ERkdET01KSVRQYXRjaHBvaW50
UGFyYW1zLmg6CisgICAgICAgICogZG9taml0L0RPTUpJVFBhdGNocG9pbnQuaDoKKyAgICAgICAg
KiBkb21qaXQvRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oOgorICAgICAgICAoSlNDOjpET01KSVQ6
OlBhdGNocG9pbnRQYXJhbXM6OmFkZFNsb3dQYXRoQ2FsbCk6CisgICAgICAgICogZnRsL0ZUTERP
TUpJVFBhdGNocG9pbnRQYXJhbXMuY3BwOgorICAgICAgICAqIGZ0bC9GVExET01KSVRQYXRjaHBv
aW50UGFyYW1zLmg6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKFdURjo6RE9NSklUTm9k
ZTo6Y2hlY2tET01KSVROb2RlKToKKyAgICAgICAgKFdURjo6RE9NSklUR2V0dGVyQ29tcGxleDo6
RE9NSklUR2V0dGVyQ29tcGxleCk6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlckNvbXBsZXg6
OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlckNvbXBsZXg6OmNy
ZWF0ZSk6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlckNvbXBsZXg6OkRPTUpJVE5vZGVET01K
SVQ6OkRPTUpJVE5vZGVET01KSVQpOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXJDb21wbGV4
Ojpkb21KSVROb2RlR2V0dGVyU2V0dGVyKToKKyAgICAgICAgKFdURjo6RE9NSklUR2V0dGVyQ29t
cGxleDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXJDb21wbGV4
OjpmdW5jdGlvbkVuYWJsZUV4Y2VwdGlvbik6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlckNv
bXBsZXg6OmN1c3RvbUdldHRlcik6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyQ29tcGxleE9iamVjdCk6
CisKIDIwMTYtMTAtMTUgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IEFkZCBhICR2bS5nZXRwaWQoKSBtZXRob2QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk0OWZhMmQwZDhjMTBh
M2I4M2ZjZTBmZTRmMjQ5ZTIwZDdjNTMzNy4uN2RhZmE0Y2I5YmZlMTk1MDVjZmU2ZjRiZjE3ZmFl
OGIyZDQyODMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE2LTEwLTE2ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01KSVRdIFVz
ZSBET01KSVQ6OlBhdGNocG9pbnQgaW4gSUMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MzIyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1ha2UgRE9NSklUUGF0Y2hwb2ludFBhcmFtcyBub24tY29uc3Qu
CisKKyAgICAgICAgKiBkb21qaXQvRE9NSklUSGVscGVycy5oOgorICAgICAgICAoV2ViQ29yZTo6
RE9NSklUSGVscGVyczo6dG9XcmFwcGVyKToKKyAgICAgICAgKiBkb21qaXQvSlNOb2RlRE9NSklU
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3MpOgor
ICAgICAgICAoV2ViQ29yZTo6Y2hlY2tOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVOb2Rl
VHlwZURPTUpJVDo6Y2FsbERPTSk6CisKIDIwMTYtMTAtMTUgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBEZWxldGUgdGhlIGFuaW1hdGVkIGlt
YWdlIGNhdGNodXAgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDBm
ZGI4ZGRjZWFmNzM2ZDgzZmRiNTA4NDA3M2ZmNzM0OTczYmVkODQuLjRmYjg1NmQ1YWRjM2EyYjMw
ZTQxNmI5ZDE0ZTdmMDNlZDM4MWZhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTIwNCw2ICsyMDQsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGJ5
dGVjb2RlL0NvbXBsZXhHZXRTdGF0dXMuY3BwCiAgICAgYnl0ZWNvZGUvRGF0YUZvcm1hdC5jcHAK
ICAgICBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAKKyAgICBieXRlY29kZS9ET01KSVRBY2Nl
c3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHAKICAgICBieXRlY29kZS9EZWZlcnJlZENvbXBpbGF0
aW9uQ2FsbGJhY2suY3BwCiAgICAgYnl0ZWNvZGUvRGVmZXJyZWRTb3VyY2VEdW1wLmNwcAogICAg
IGJ5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGVlOGM3ZjliZjMwOWU4OWY3OTUyMWY0MTRkMjYyN2I3YWIzM2FlYzIuLmJjZWNhYzcw
Zjg4ZTBiNDI2MzUzNzUwNTQzZjI1MjYyNjk3ZDY4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0yMTE0LDYgKzIxMTQsOCBAQAogCQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYzM0Eg
LyogSlNNb2R1bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNw
cCAqLzsgfTsKIAkJRTM5REE0QTcxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRBNTFC
N0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0E0MjE0MzFENkY1ODkzMDAwN0M2MTcgLyog
UHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNBNDIxNDIxRDZGNTg4RjAwMDdDNjE3IC8qIFByZWNpc2VKdW1w
VGFyZ2V0c0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlFM0JGRDBCQjFEQUY4MDg3MDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBh
dGNocG9pbnRQYXJhbXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTNCRkQwQjkxREFGODA3QzAwNjVERUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRj
aHBvaW50UGFyYW1zLmNwcCAqLzsgfTsKKwkJRTNCRkQwQkMxREFGODA4RTAwNjVERUEyIC8qIERP
TUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0JGRDBCQTFEQUY4MDdDMDA2NURFQTIgLyogRE9NSklU
QWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaCAqLzsgfTsKIAkJRTNDMDhFM0MxREE0MUI4MTAw
Mzk0NzhGIC8qIERPTUpJVFBhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzA4RTNCMURBNDFCN0IwMDM5NDc4RiAvKiBET01KSVRQYXRj
aHBvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTNEMjM5QzgxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzYxQjgy
OUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovOyB9OwogCQlFM0QyMzlD
OTFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3
IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtNDQyMyw2ICs0NDI1LDggQEAKIAkJRTM5REE0QTQxQjdFOEI3
QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzQTQyMTQyMUQ2RjU4OEYwMDA3QzYxNyAvKiBQcmVjaXNlSnVt
cFRhcmdldHNJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByZWNp
c2VKdW1wVGFyZ2V0c0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNC
RkQwQjkxREFGODA3QzAwNjVERUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1z
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTUpJVEFjY2Vzc0Nh
c2VQYXRjaHBvaW50UGFyYW1zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNC
RkQwQkExREFGODA3QzAwNjVERUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVEFjY2Vzc0Nhc2VQYXRj
aHBvaW50UGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQzA4RTNCMURB
NDFCN0IwMDM5NDc4RiAvKiBET01KSVRQYXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERPTUpJVFBhdGNocG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTNDQjFFMjQxREE3NTQwQTAwRkExRTU2IC8qIERPTUpJVFNsb3dQYXRoQ2FsbHMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUU2xvd1BhdGhDYWxscy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyog
SlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU01vZHVsZUVudmlyb25tZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTY4MjQsNiArNjgyOCw4IEBACiAJCQkJMEYwQjgzQTUxNEJDRjUwNDAwODg1QjRGIC8qIENv
ZGVUeXBlLmggKi8sCiAJCQkJMEY2RkM3NEUxOTYxMTBBODAwRTFEMDJEIC8qIENvbXBsZXhHZXRT
dGF0dXMuY3BwICovLAogCQkJCTBGNkZDNzRGMTk2MTEwQTgwMEUxRDAyRCAvKiBDb21wbGV4R2V0
U3RhdHVzLmggKi8sCisJCQkJRTNCRkQwQjkxREFGODA3QzAwNjVERUEyIC8qIERPTUpJVEFjY2Vz
c0Nhc2VQYXRjaHBvaW50UGFyYW1zLmNwcCAqLywKKwkJCQlFM0JGRDBCQTFEQUY4MDdDMDA2NURF
QTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaCAqLywKIAkJCQk2MkUzRDVF
RjFCOEQwQjczMDBCODY4QkIgLyogRGF0YUZvcm1hdC5jcHAgKi8sCiAJCQkJMEY0MjZBNEExNDYw
Q0Q2QjAwMTMxRjhGIC8qIERhdGFGb3JtYXQuaCAqLywKIAkJCQkwRkM3MTJEQzE3Q0Q4Nzc4MDA4
Q0M5M0MgLyogRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCAqLywKQEAgLTc1MjYsNiAr
NzUzMiw3IEBACiAJCQkJMEY4MzY0QjcxNjRCMEMxMTAwNTMzMjlBIC8qIERGR0JyYW5jaERpcmVj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlEQzUxMzI4REY4MjAwMkIyQUQ3IC8qIERG
R0J5dGVDb2RlUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI1NkMzNjE2MjdCMEFEMDA3
RjI3ODMgLyogREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUUzQkZEMEJDMURBRjgwOEUwMDY1REVBMiAvKiBET01KSVRBY2Nlc3NDYXNl
UGF0Y2hwb2ludFBhcmFtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCREI5QUQxQUIwRkJDNjAw
MEI1N0U1IC8qIERGR0NhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0NhcGFi
aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NTgxNEVGOTBBMjAwQzcyNTMyIC8q
IERGR0NGQVBoYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTk0MjIsNiArOTQyOSw3IEBACiAJCQkJ
RTM1RTAzNUYxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVj
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTMyNDM4QjE4NTY4MzM1MDAyRUQ2OTIgLyogSW5z
cGVjdG9yUHJvdG9jb2xPYmplY3RzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MEU0QjYxMTg4
MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJRTNCRkQwQkIxREFGODA4NzAwNjVERUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBv
aW50UGFyYW1zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1OTNDRjgyMTg0MDM3NzEwMEJGQ0Uy
NyAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5Q0YxMDdF
QzM3NjAwNDI3QTQ4IC8qIEludGVybmFsRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MTQyOUQ3RDQwRUQyMTI4MjAwQjg5NjE5IC8qIEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RPTUpJVEFjY2Vz
c0Nhc2VQYXRjaHBvaW50UGFyYW1zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9ET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2EzZjhi
YTNiZGNhNDc3NjVmY2Y4Mjk0ZWQ0MmZjNTFhZjZjZTgxYwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBh
cmFtcy5jcHAKQEAgLTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE9NSklUQWNj
ZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaCIKKworI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNp
bmNsdWRlICJQb2x5bW9ycGhpY0FjY2Vzcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZv
LmgiCisKKyNpZiBFTkFCTEUoSklUKQorCituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgSnVtcFR5cGUsIHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlw
ZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgorY2xhc3MgU2xvd1BhdGhDYWxsR2VuZXJhdG9yV2l0
aEFyZ3VtZW50cyA6IHB1YmxpYyBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtczo6U2xv
d1BhdGhDYWxsR2VuZXJhdG9yIHsKK3B1YmxpYzoKKyAgICBTbG93UGF0aENhbGxHZW5lcmF0b3JX
aXRoQXJndW1lbnRzKEp1bXBUeXBlIGZyb20sIENDYWxsSGVscGVyczo6TGFiZWwgdG8sIEZ1bmN0
aW9uVHlwZSBmdW5jdGlvbiwgUmVzdWx0VHlwZSByZXN1bHQsIHN0ZDo6dHVwbGU8QXJndW1lbnRz
Li4uPiBhcmd1bWVudHMpCisgICAgICAgIDogbV9mcm9tKGZyb20pCisgICAgICAgICwgbV90byh0
bykKKyAgICAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQorICAgICAgICAsIG1fcmVzdWx0KHJl
c3VsdCkKKyAgICAgICAgLCBtX2FyZ3VtZW50cyhhcmd1bWVudHMpCisgICAgeworICAgIH0KKwor
ICAgIHRlbXBsYXRlPHNpemVfdC4uLiBBcmd1bWVudHNJbmRleD4KKyAgICBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0IGdlbmVyYXRlSW1wbChWTSYgdm0sIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3Rh
dGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzQnlQYXRjaHBvaW50LCBDQ2FsbEhl
bHBlcnMmIGppdCwgc3RkOjppbmRleF9zZXF1ZW5jZTxBcmd1bWVudHNJbmRleC4uLj4pCisgICAg
eworICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGV4Y2VwdGlvbnM7CisgICAgICAgIC8v
IFdlIHNwaWxsICgxKSB0aGUgdXNlZCByZWdpc3RlcnMgYnkgSUMgYW5kICgyKSB0aGUgdXNlZCBy
ZWdpc3RlcnMgYnkgRE9NSklUOjpQYXRjaHBvaW50LgorICAgICAgICBBY2Nlc3NHZW5lcmF0aW9u
U3RhdGU6OlNwaWxsU3RhdGUgc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNlcnZlTGl2ZVJlZ2lzdGVy
c1RvU3RhY2tGb3JDYWxsKHVzZWRSZWdpc3RlcnNCeVBhdGNocG9pbnQpOworCisgICAgICAgIGpp
dC5zdG9yZTMyKAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhdGUu
Y2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nT3JPcmlnaW5hbCgpLmJpdHMoKSksCisg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0
ZXI+KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CisKKyAgICAgICAgaml0Lm1ha2VT
cGFjZU9uU3RhY2tGb3JDQ2FsbCgpOworCisgICAgICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgJnZtLnRvcENhbGxGcmFtZSk7CisKKyAgICAgICAgLy8gRklYTUU6
IEN1cnJlbnRseSwgd2UgZG8gbm90IGNoZWNrIGFueSBBUk0gRUFCSSAvIFNINCB0aGluZ3MgaGVy
ZS4KKyAgICAgICAgLy8gQnV0IGl0IGlzIE9LIGJlY2F1c2UgYSBjb21waWxlIGVycm9yIGhhcHBl
bnMgd2hlbiB5b3UgcGFzcyBKU1ZhbHVlUmVncyBhcyBhbiBhcmd1bWVudC4KKyAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzA5OQorICAgICAgICBq
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKHN0ZDo6Z2V0PEFyZ3VtZW50c0luZGV4Piht
X2FyZ3VtZW50cykuLi4pOworCisgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBvcGVyYXRpb25D
YWxsID0gaml0LmNhbGwoKTsKKyAgICAgICAgYXV0byBmdW5jdGlvbiA9IG1fZnVuY3Rpb247Cisg
ICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAg
ICAgICAgICAgIGxpbmtCdWZmZXIubGluayhvcGVyYXRpb25DYWxsLCBGdW5jdGlvblB0cihmdW5j
dGlvbikpOworICAgICAgICB9KTsKKworICAgICAgICBqaXQuc2V0dXBSZXN1bHRzKG1fcmVzdWx0
KTsKKyAgICAgICAgaml0LnJlY2xhaW1TcGFjZU9uU3RhY2tGb3JDQ2FsbCgpOworCisgICAgICAg
IENDYWxsSGVscGVyczo6SnVtcCBub0V4Y2VwdGlvbiA9IGppdC5lbWl0RXhjZXB0aW9uQ2hlY2so
Q0NhbGxIZWxwZXJzOjpJbnZlcnRlZEV4Y2VwdGlvbkNoZWNrKTsKKworICAgICAgICBzdGF0ZS5y
ZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGxXaXRoVGhyb3duRXhjZXB0aW9uKHNw
aWxsU3RhdGUpOworICAgICAgICBleGNlcHRpb25zLmFwcGVuZChqaXQuanVtcCgpKTsKKworICAg
ICAgICBub0V4Y2VwdGlvbi5saW5rKCZqaXQpOworICAgICAgICBSZWdpc3RlclNldCBkb250UmVz
dG9yZTsKKyAgICAgICAgZG9udFJlc3RvcmUuc2V0KG1fcmVzdWx0KTsKKyAgICAgICAgc3RhdGUu
cmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKHNwaWxsU3RhdGUsIGRvbnRSZXN0
b3JlKTsKKworICAgICAgICByZXR1cm4gZXhjZXB0aW9uczsKKyAgICB9CisKKyAgICBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0IGdlbmVyYXRlKFZNJiB2bSwgQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBz
dGF0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnNCeVBhdGNocG9pbnQsIENDYWxs
SGVscGVycyYgaml0KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgbV9mcm9tLmxpbmsoJmppdCk7
CisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZXhjZXB0aW9ucyA9IGdlbmVyYXRlSW1w
bCh2bSwgc3RhdGUsIHVzZWRSZWdpc3RlcnNCeVBhdGNocG9pbnQsIGppdCwgc3RkOjptYWtlX2lu
ZGV4X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxzdGQ6OnR1cGxlPEFyZ3VtZW50cy4uLj4+Ojp2
YWx1ZT4oKSk7CisgICAgICAgIGppdC5qdW1wKCkubGlua1RvKG1fdG8sICZqaXQpOworICAgICAg
ICByZXR1cm4gZXhjZXB0aW9uczsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBKdW1wVHlwZSBt
X2Zyb207CisgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBtX3RvOworICAgIEZ1bmN0aW9uVHlwZSBt
X2Z1bmN0aW9uOworICAgIFJlc3VsdFR5cGUgbV9yZXN1bHQ7CisgICAgc3RkOjp0dXBsZTxBcmd1
bWVudHMuLi4+IG1fYXJndW1lbnRzOworfTsKKworI2RlZmluZSBKU0NfREVGSU5FX0NBTExfT1BF
UkFUSU9OUyhPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCAuLi4pIFwKKyAgICB2b2lkIERPTUpJ
VEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zOjphZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVs
cGVyczo6SnVtcExpc3QgZnJvbSwgQ0NhbGxIZWxwZXJzJiBqaXQsIE9wZXJhdGlvblR5cGUgb3Bl
cmF0aW9uLCBSZXN1bHRUeXBlIHJlc3VsdCwgc3RkOjp0dXBsZTxfX1ZBX0FSR1NfXz4gYXJncykg
XAorICAgIHsgXAorICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHRvID0gaml0LmxhYmVsKCk7
IFwKKyAgICAgICAgbV9nZW5lcmF0b3JzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNsb3dQYXRo
Q2FsbEdlbmVyYXRvcldpdGhBcmd1bWVudHM8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCwgT3BlcmF0
aW9uVHlwZSwgUmVzdWx0VHlwZSwgX19WQV9BUkdTX18+Pihmcm9tLCB0bywgb3BlcmF0aW9uLCBy
ZXN1bHQsIGFyZ3MpKTsgXAorICAgIH0gXAorCitET01KSVRfU0xPV19QQVRIX0NBTExTKEpTQ19E
RUZJTkVfQ0FMTF9PUEVSQVRJT05TKQorI3VuZGVmIEpTQ19ERUZJTkVfQ0FMTF9PUEVSQVRJT05T
CisKK0NDYWxsSGVscGVyczo6SnVtcExpc3QgRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJh
bXM6OmVtaXRTbG93UGF0aENhbGxzKFZNJiB2bSwgQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0
ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnNCeVBhdGNocG9pbnQsIENDYWxsSGVs
cGVycyYgaml0KQoreworICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZXhjZXB0aW9uczsKKyAg
ICBmb3IgKGF1dG8mIGdlbmVyYXRvciA6IG1fZ2VuZXJhdG9ycykKKyAgICAgICAgZXhjZXB0aW9u
cy5hcHBlbmQoZ2VuZXJhdG9yLT5nZW5lcmF0ZSh2bSwgc3RhdGUsIHVzZWRSZWdpc3RlcnNCeVBh
dGNocG9pbnQsIGppdCkpOworICAgIHJldHVybiBleGNlcHRpb25zOworfQorCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RPTUpJVEFjY2Vz
c0Nhc2VQYXRjaHBvaW50UGFyYW1zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NThhYmE3NzY3
YTYwZTQ5MGY4N2Q3MDkwNDY3MDVjM2JmMjVjOTM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1z
LmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkRP
TUpJVFBhdGNocG9pbnRQYXJhbXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBBY2Nl
c3NHZW5lcmF0aW9uU3RhdGU7CisKK2NsYXNzIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFy
YW1zIDogcHVibGljIERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyB7CitwdWJsaWM6CisgICAgRE9N
SklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMoVmVjdG9yPERPTUpJVDo6VmFsdWU+JiYgcmVn
cywgVmVjdG9yPEdQUlJlZz4mJiBncFNjcmF0Y2gsIFZlY3RvcjxGUFJSZWc+JiYgZnBTY3JhdGNo
KQorICAgICAgICA6IERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyhXVEZNb3ZlKHJlZ3MpLCBXVEZN
b3ZlKGdwU2NyYXRjaCksIFdURk1vdmUoZnBTY3JhdGNoKSkKKyAgICB7CisgICAgfQorCisgICAg
Y2xhc3MgU2xvd1BhdGhDYWxsR2VuZXJhdG9yIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1
YWwgflNsb3dQYXRoQ2FsbEdlbmVyYXRvcigpIHsgfQorICAgICAgICB2aXJ0dWFsIENDYWxsSGVs
cGVyczo6SnVtcExpc3QgZ2VuZXJhdGUoVk0mLCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmLCBjb25z
dCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVyc0J5UGF0Y2hwb2ludCwgQ0NhbGxIZWxwZXJzJikg
PSAwOworICAgIH07CisKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGVtaXRTbG93UGF0aENh
bGxzKFZNJiwgQWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnNCeVBhdGNocG9pbnQsIENDYWxsSGVscGVycyYpOworCitwcml2YXRlOgorI2RlZmlu
ZSBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUyhPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCAu
Li4pIHZvaWQgYWRkU2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0LCBDQ2Fs
bEhlbHBlcnMmLCBPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCBzdGQ6OnR1cGxlPF9fVkFfQVJH
U19fPiBhcmdzKSBvdmVycmlkZTsKKyAgICBET01KSVRfU0xPV19QQVRIX0NBTExTKEpTQ19ERUZJ
TkVfQ0FMTF9PUEVSQVRJT05TKQorI3VuZGVmIEpTQ19ERUZJTkVfQ0FMTF9PUEVSQVRJT05TCisg
ICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aENhbGxHZW5lcmF0b3I+PiBtX2dlbmVy
YXRvcnM7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggOWE4YThlNTIwMDk4YTk2YWU2
ZGM4NTA5ZjAyZjE1MzFhMDAxMjU2MC4uNTE0ZDVlNjIyMzNhYTc3OTM1YTQ3NDRiNjliYTZjZmQ4
Y2JhODYxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlt
b3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9s
eW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVkZSAiQmluYXJ5U3dp
dGNoLmgiCiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CisjaW5jbHVkZSAiRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaCIKKyNpbmNsdWRl
ICJET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oIgogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5o
IgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKQEAgLTcyLDcg
Kzc0LDI4IEBAIHZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpzdWNjZWVkKCkKICAgICBzdWNj
ZXNzLmFwcGVuZChqaXQtPmp1bXAoKSk7CiB9CiAKLXZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRl
OjpjYWxjdWxhdGVMaXZlUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhhbmRsaW5nKGNvbnN0
IFJlZ2lzdGVyU2V0JiBleHRyYSkKK2NvbnN0IFJlZ2lzdGVyU2V0JiBBY2Nlc3NHZW5lcmF0aW9u
U3RhdGU6OmxpdmVSZWdpc3RlcnNGb3JDYWxsKCkKK3sKKyAgICBpZiAoIW1fY2FsY3VsYXRlZFJl
Z2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRpb25IYW5kbGluZykKKyAgICAgICAgY2FsY3VsYXRlTGl2
ZVJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRpb25IYW5kbGluZygpOworICAgIHJldHVybiBtX2xp
dmVSZWdpc3RlcnNGb3JDYWxsOworfQorCitjb25zdCBSZWdpc3RlclNldCYgQWNjZXNzR2VuZXJh
dGlvblN0YXRlOjpsaXZlUmVnaXN0ZXJzVG9QcmVzZXJ2ZUF0RXhjZXB0aW9uSGFuZGxpbmdDYWxs
U2l0ZSgpCit7CisgICAgaWYgKCFtX2NhbGN1bGF0ZWRSZWdpc3RlcnNGb3JDYWxsQW5kRXhjZXB0
aW9uSGFuZGxpbmcpCisgICAgICAgIGNhbGN1bGF0ZUxpdmVSZWdpc3RlcnNGb3JDYWxsQW5kRXhj
ZXB0aW9uSGFuZGxpbmcoKTsKKyAgICByZXR1cm4gbV9saXZlUmVnaXN0ZXJzVG9QcmVzZXJ2ZUF0
RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZTsKK30KKworc3RhdGljIFJlZ2lzdGVyU2V0IGNhbGxl
ZVNhdmVSZWdpc3RlcnMoKQoreworICAgIFJlZ2lzdGVyU2V0IHJlc3VsdCA9IFJlZ2lzdGVyU2V0
OjpyZWdpc3RlcnNUb05vdFNhdmVGb3JKU0NhbGwoKTsKKyAgICByZXN1bHQuZmlsdGVyKFJlZ2lz
dGVyU2V0OjpyZWdpc3RlcnNUb05vdFNhdmVGb3JDQ2FsbCgpKTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCitjb25zdCBSZWdpc3RlclNldCYgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpjYWxjdWxh
dGVMaXZlUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhhbmRsaW5nKCkKIHsKICAgICBpZiAo
IW1fY2FsY3VsYXRlZFJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRpb25IYW5kbGluZykgewogICAg
ICAgICBtX2NhbGN1bGF0ZWRSZWdpc3RlcnNGb3JDYWxsQW5kRXhjZXB0aW9uSGFuZGxpbmcgPSB0
cnVlOwpAQCAtODMsMzUgKzEwNiwyNSBAQCB2b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6Y2Fs
Y3VsYXRlTGl2ZVJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRpb25IYW5kbGluZyhjbwogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdC0+Y29kZUJs
b2NrKCktPmppdFR5cGUoKSkpOwogCiAgICAgICAgIG1fbGl2ZVJlZ2lzdGVyc0ZvckNhbGwgPSBS
ZWdpc3RlclNldChtX2xpdmVSZWdpc3RlcnNUb1ByZXNlcnZlQXRFeGNlcHRpb25IYW5kbGluZ0Nh
bGxTaXRlLCBhbGxvY2F0b3ItPnVzZWRSZWdpc3RlcnMoKSk7Ci0gICAgICAgIG1fbGl2ZVJlZ2lz
dGVyc0ZvckNhbGwubWVyZ2UoZXh0cmEpOwotICAgICAgICBtX2xpdmVSZWdpc3RlcnNGb3JDYWxs
LmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlZ2lzdGVyc1RvTm90U2F2ZUZvckpTQ2FsbCgpKTsKLSAg
ICAgICAgbV9saXZlUmVnaXN0ZXJzRm9yQ2FsbC5tZXJnZShleHRyYSk7CisgICAgICAgIG1fbGl2
ZVJlZ2lzdGVyc0ZvckNhbGwuZXhjbHVkZShjYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwogICAgIH0K
KyAgICByZXR1cm4gbV9saXZlUmVnaXN0ZXJzRm9yQ2FsbDsKIH0KIAotdm9pZCBBY2Nlc3NHZW5l
cmF0aW9uU3RhdGU6OnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGNvbnN0IFJl
Z2lzdGVyU2V0JiBleHRyYSkKK2F1dG8gQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpwcmVzZXJ2ZUxp
dmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbChjb25zdCBSZWdpc3RlclNldCYgZXh0cmEpIC0+IFNw
aWxsU3RhdGUKIHsKLSAgICBjYWxjdWxhdGVMaXZlUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlv
bkhhbmRsaW5nKGV4dHJhKTsKKyAgICBSZWdpc3RlclNldCBsaXZlUmVnaXN0ZXJzID0gbGl2ZVJl
Z2lzdGVyc0ZvckNhbGwoKTsKKyAgICBsaXZlUmVnaXN0ZXJzLm1lcmdlKGV4dHJhKTsKICAgICAK
ICAgICB1bnNpZ25lZCBleHRyYVN0YWNrUGFkZGluZyA9IDA7Ci0gICAgdW5zaWduZWQgbnVtYmVy
T2ZTdGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uID0gU2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yOjpwcmVzZXJ2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKCpqaXQsIGxpdmVSZWdp
c3RlcnNGb3JDYWxsKCksIGV4dHJhU3RhY2tQYWRkaW5nKTsKLSAgICBpZiAobV9udW1iZXJPZlN0
YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24gIT0gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChudW1iZXJPZlN0YWNr
Qnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24gPT0gbV9udW1iZXJPZlN0YWNrQnl0ZXNV
c2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24pOwotICAgIG1fbnVtYmVyT2ZTdGFja0J5dGVzVXNl
ZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uID0gbnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZvclJlZ2lz
dGVyUHJlc2VydmF0aW9uOwotfQotCi12b2lkIEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cmVzdG9y
ZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKGJvb2wgaXNHZXR0ZXIpCi17Ci0gICAgUmVn
aXN0ZXJTZXQgZG9udFJlc3RvcmU7Ci0gICAgaWYgKGlzR2V0dGVyKSB7Ci0gICAgICAgIC8vIFRo
aXMgaXMgdGhlIHJlc3VsdCB2YWx1ZS4gV2UgZG9uJ3Qgd2FudCB0byBvdmVyd3JpdGUgdGhlIHJl
c3VsdCB3aXRoIHdoYXQgd2Ugc3RvcmVkIHRvIHRoZSBzdGFjay4KLSAgICAgICAgLy8gV2Ugc29t
ZXRpbWVzIGhhdmUgdG8gc3RvcmUgaXQgdG8gdGhlIHN0YWNrIGp1c3QgaW4gY2FzZSB3ZSB0aHJv
dyBhbiBleGNlcHRpb24gYW5kIG5lZWQgdGhlIG9yaWdpbmFsIHZhbHVlLgotICAgICAgICBkb250
UmVzdG9yZS5zZXQodmFsdWVSZWdzKTsKLSAgICB9Ci0gICAgcmVzdG9yZUxpdmVSZWdpc3RlcnNG
cm9tU3RhY2tGb3JDYWxsKGRvbnRSZXN0b3JlKTsKKyAgICB1bnNpZ25lZCBudW1iZXJPZlN0YWNr
Qnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24gPSBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0
b3I6OnByZXNlcnZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoKmppdCwgbGl2ZVJlZ2lzdGVycywg
ZXh0cmFTdGFja1BhZGRpbmcpOworICAgIHJldHVybiBTcGlsbFN0YXRlIHsKKyAgICAgICAgbGl2
ZVJlZ2lzdGVycywKKyAgICAgICAgbnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJl
c2VydmF0aW9uCisgICAgfTsKIH0KIAotdm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnJlc3Rv
cmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbFdpdGhUaHJvd25FeGNlcHRpb24oKQordm9p
ZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9y
Q2FsbFdpdGhUaHJvd25FeGNlcHRpb24oY29uc3QgU3BpbGxTdGF0ZSYgc3BpbGxTdGF0ZSkKIHsK
ICAgICAvLyBFdmVuIGlmIHdlJ3JlIGEgZ2V0dGVyLCB3ZSBkb24ndCB3YW50IHRvIGlnbm9yZSB0
aGUgcmVzdWx0IHZhbHVlIGxpa2Ugd2Ugbm9ybWFsbHkgZG8KICAgICAvLyBiZWNhdXNlIHRoZSBn
ZXR0ZXIgdGhyZXcsIGFuZCB0aGVyZWZvcmUsIGRpZG4ndCByZXR1cm4gYSB2YWx1ZSB0aGF0IG1l
YW5zIGFueXRoaW5nLgpAQCAtMTE5LDI1ICsxMzIsMjYgQEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9u
U3RhdGU6OnJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbFdpdGhUaHJvd25FeGNl
cHQKICAgICAvLyBpbmxpbmUgY2FjaGUuIFRoZSBzdWJ0bGV0eSBoZXJlIGlzIGlmIHRoZSBiYXNl
IGFuZCB0aGUgcmVzdWx0IGFyZSB0aGUgc2FtZSByZWdpc3RlciwKICAgICAvLyBhbmQgdGhlIGdl
dHRlciB0aHJldywgd2Ugd2FudCBPU1IgZXhpdCB0byBzZWUgdGhlIG9yaWdpbmFsIGJhc2UgdmFs
dWUsIG5vdCB0aGUgcmVzdWx0CiAgICAgLy8gb2YgdGhlIGdldHRlciBjYWxsLgotICAgIFJlZ2lz
dGVyU2V0IGRvbnRSZXN0b3JlID0gbGl2ZVJlZ2lzdGVyc0ZvckNhbGwoKTsKKyAgICBSZWdpc3Rl
clNldCBkb250UmVzdG9yZSA9IHNwaWxsU3RhdGUuc3BpbGxlZFJlZ2lzdGVyczsKICAgICAvLyBB
cyBhbiBvcHRpbWl6YXRpb24gaGVyZSwgd2Ugb25seSBuZWVkIHRvIHJlc3RvcmUgd2hhdCBpcyBs
aXZlIGZvciBleGNlcHRpb24gaGFuZGxpbmcuCiAgICAgLy8gV2UgY2FuIGNvbnN0cnVjdCB0aGUg
ZG9udFJlc3RvcmUgc2V0IHRvIGFjY29tcGxpc2ggdGhpcyBnb2FsIGJ5IGhhdmluZyBpdCBjb250
YWluIG9ubHkKICAgICAvLyB3aGF0IGlzIGxpdmUgZm9yIGNhbGwgYnV0IG5vdCBsaXZlIGZvciBl
eGNlcHRpb24gaGFuZGxpbmcuIEJ5IGlnbm9yaW5nIHRoaW5ncyB0aGF0IGFyZQogICAgIC8vIG9u
bHkgbGl2ZSBhdCB0aGUgY2FsbCBidXQgbm90IHRoZSBleGNlcHRpb24gaGFuZGxlciwgd2Ugd2ls
bCBvbmx5IHJlc3RvcmUgdGhpbmdzIGxpdmUKICAgICAvLyBhdCB0aGUgZXhjZXB0aW9uIGhhbmRs
ZXIuCiAgICAgZG9udFJlc3RvcmUuZXhjbHVkZShsaXZlUmVnaXN0ZXJzVG9QcmVzZXJ2ZUF0RXhj
ZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZSgpKTsKLSAgICByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21T
dGFja0ZvckNhbGwoZG9udFJlc3RvcmUpOworICAgIHJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0
YWNrRm9yQ2FsbChzcGlsbFN0YXRlLCBkb250UmVzdG9yZSk7CiB9CiAKLXZvaWQgQWNjZXNzR2Vu
ZXJhdGlvblN0YXRlOjpyZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoY29uc3Qg
UmVnaXN0ZXJTZXQmIGRvbnRSZXN0b3JlKQordm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnJl
c3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChjb25zdCBTcGlsbFN0YXRlJiBzcGls
bFN0YXRlLCBjb25zdCBSZWdpc3RlclNldCYgZG9udFJlc3RvcmUpCiB7CiAgICAgdW5zaWduZWQg
ZXh0cmFTdGFja1BhZGRpbmcgPSAwOwotICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVz
dG9yZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoKmppdCwgbGl2ZVJlZ2lzdGVyc0ZvckNhbGwo
KSwgZG9udFJlc3RvcmUsIG1fbnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2Vy
dmF0aW9uLCBleHRyYVN0YWNrUGFkZGluZyk7CisgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
OjpyZXN0b3JlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbCgqaml0LCBzcGlsbFN0YXRlLnNwaWxs
ZWRSZWdpc3RlcnMsIGRvbnRSZXN0b3JlLCBzcGlsbFN0YXRlLm51bWJlck9mU3RhY2tCeXRlc1Vz
ZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbiwgZXh0cmFTdGFja1BhZGRpbmcpOwogfQogCiBDYWxs
U2l0ZUluZGV4IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6Y2FsbFNpdGVJbmRleEZvckV4Y2VwdGlv
bkhhbmRsaW5nT3JPcmlnaW5hbCgpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlQobV9jYWxjdWxhdGVk
UmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhhbmRsaW5nKTsKKyAgICBpZiAoIW1fY2FsY3Vs
YXRlZFJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRpb25IYW5kbGluZykKKyAgICAgICAgY2FsY3Vs
YXRlTGl2ZVJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRpb25IYW5kbGluZygpOwogCiAgICAgaWYg
KCFtX2NhbGN1bGF0ZWRDYWxsU2l0ZUluZGV4KSB7CiAgICAgICAgIG1fY2FsY3VsYXRlZENhbGxT
aXRlSW5kZXggPSB0cnVlOwpAQCAtMTUxLDggKzE2NSwxMSBAQCBDYWxsU2l0ZUluZGV4IEFjY2Vz
c0dlbmVyYXRpb25TdGF0ZTo6Y2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nT3JPcmln
aW5hbAogICAgIHJldHVybiBtX2NhbGxTaXRlSW5kZXg7CiB9CiAKLWNvbnN0IEhhbmRsZXJJbmZv
JiBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6Om9yaWdpbmFsRXhjZXB0aW9uSGFuZGxlcigpIGNvbnN0
Citjb25zdCBIYW5kbGVySW5mbyYgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpvcmlnaW5hbEV4Y2Vw
dGlvbkhhbmRsZXIoKQogeworICAgIGlmICghbV9jYWxjdWxhdGVkUmVnaXN0ZXJzRm9yQ2FsbEFu
ZEV4Y2VwdGlvbkhhbmRsaW5nKQorICAgICAgICBjYWxjdWxhdGVMaXZlUmVnaXN0ZXJzRm9yQ2Fs
bEFuZEV4Y2VwdGlvbkhhbmRsaW5nKCk7CisKICAgICBSRUxFQVNFX0FTU0VSVChtX25lZWRzVG9S
ZXN0b3JlUmVnaXN0ZXJzSWZFeGNlcHRpb24pOwogICAgIEhhbmRsZXJJbmZvKiBleGNlcHRpb25I
YW5kbGVyID0gaml0LT5jb2RlQmxvY2soKS0+aGFuZGxlckZvckluZGV4KHN0dWJJbmZvLT5jYWxs
U2l0ZUluZGV4LmJpdHMoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZXhjZXB0aW9uSGFuZGxlcik7
CkBAIC05MzIsNiArOTQ5LDE2IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vz
c0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAorICAgICAgICBpZiAobV90eXBlID09IEN1c3RvbUFjY2Vzc29yR2V0dGVyICYmIG1fcmFyZURh
dGEtPmRvbUpJVCkgeworICAgICAgICAgICAgLy8gV2UgZG8gbm90IG5lZWQgdG8gZW1pdCBDaGVj
a0RPTSBvcGVyYXRpb24gc2luY2Ugc3RydWN0dXJlIGNoZWNrIGVuc3VyZXMKKyAgICAgICAgICAg
IC8vIHRoYXQgdGhlIHN0cnVjdHVyZSBvZiB0aGUgZ2l2ZW4gYmFzZSB2YWx1ZSBpcyBzdHJ1Y3R1
cmUoKSEgU28gYWxsIHdlIHNob3VsZAorICAgICAgICAgICAgLy8gZG8gaXMgcGVyZm9ybWluZyB0
aGUgQ2hlY2tET00gdGhpbmd5IGluIElDIGNvbXBpbGluZyB0aW1lIGhlcmUuCisgICAgICAgICAg
ICBpZiAoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpLT5pc1N1YkNsYXNzT2YobV9yYXJlRGF0YS0+
ZG9tSklULT50aGlzQ2xhc3NJbmZvKCkpKSB7CisgICAgICAgICAgICAgICAgZW1pdERPTUpJVEdl
dHRlcihzdGF0ZSwgYmFzZUZvckdldEdQUik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAgLy8gU3R1ZmYgZm9yIGN1c3RvbSBnZXR0
ZXJzL3NldHRlcnMuCiAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBvcGVyYXRpb25DYWxsOwog
CkBAIC05NDAsMTIgKzk2NywxOSBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nl
c3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgZmFz
dFBhdGhDYWxsOwogICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOwogCi0g
ICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBzdWNjZXNzOwotICAgICAgICBDQ2FsbEhlbHBlcnM6
Okp1bXAgZmFpbDsKLQogICAgICAgICAvLyBUaGlzIGFsc28gZG9lcyB0aGUgbmVjZXNzYXJ5IGNh
bGN1bGF0aW9ucyBvZiB3aGV0aGVyIG9yIG5vdCB3ZSdyZSBhbgogICAgICAgICAvLyBleGNlcHRp
b24gaGFuZGxpbmcgY2FsbCBzaXRlLgotICAgICAgICBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3Rl
cnNUb1N0YWNrRm9yQ2FsbCgpOworICAgICAgICBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxs
U3RhdGUgc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JD
YWxsKCk7CisKKyAgICAgICAgYXV0byByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNh
bGwgPSBbJl0oQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpTcGlsbFN0YXRlJiBzcGlsbFN0YXRlLCBi
b29sIGNhbGxIYXNSZXR1cm5WYWx1ZSkgeworICAgICAgICAgICAgUmVnaXN0ZXJTZXQgZG9udFJl
c3RvcmU7CisgICAgICAgICAgICBpZiAoY2FsbEhhc1JldHVyblZhbHVlKSB7CisgICAgICAgICAg
ICAgICAgLy8gVGhpcyBpcyB0aGUgcmVzdWx0IHZhbHVlLiBXZSBkb24ndCB3YW50IHRvIG92ZXJ3
cml0ZSB0aGUgcmVzdWx0IHdpdGggd2hhdCB3ZSBzdG9yZWQgdG8gdGhlIHN0YWNrLgorICAgICAg
ICAgICAgICAgIC8vIFdlIHNvbWV0aW1lcyBoYXZlIHRvIHN0b3JlIGl0IHRvIHRoZSBzdGFjayBq
dXN0IGluIGNhc2Ugd2UgdGhyb3cgYW4gZXhjZXB0aW9uIGFuZCBuZWVkIHRoZSBvcmlnaW5hbCB2
YWx1ZS4KKyAgICAgICAgICAgICAgICBkb250UmVzdG9yZS5zZXQodmFsdWVSZWdzKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHN0YXRlLnJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNr
Rm9yQ2FsbChzcGlsbFN0YXRlLCBkb250UmVzdG9yZSk7CisgICAgICAgIH07CiAKICAgICAgICAg
aml0LnN0b3JlMzIoCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzdGF0
ZS5jYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmdPck9yaWdpbmFsKCkuYml0cygpKSwK
QEAgLTk2Niw2ICsxMDAwLDggQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNz
R2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIC8vIFRoZXJlZm9yZSwgd2UgdGVt
cG9yYXJpbHkgZ3JvdyB0aGUgc3RhY2sgZm9yIHRoZSBwdXJwb3NlIG9mIHRoZSBjYWxsIGFuZCB0
aGVuCiAgICAgICAgICAgICAvLyBzaHJpbmsgaXQgYWZ0ZXIuCiAKKyAgICAgICAgICAgIHN0YXRl
LnNldFNwaWxsU3RhdGVGb3JKU0dldHRlclNldHRlcihzcGlsbFN0YXRlKTsKKwogICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoIW1fcmFyZURhdGEtPmNhbGxMaW5rSW5mbyk7CiAgICAgICAgICAg
ICBtX3JhcmVEYXRhLT5jYWxsTGlua0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5rSW5m
bz4oKTsKICAgICAgICAgICAgIApAQCAtMTA2NSw5ICsxMTAxLDEwIEBAIHZvaWQgQWNjZXNzQ2Fz
ZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAKICAgICAgICAg
ICAgIGRvbmUubGluaygmaml0KTsKIAotICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMigoY29kZUJsb2NrLT5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVv
ZihSZWdpc3RlcikpIC0gc3RhdGUucHJlc2VydmVkUmV1c2VkUmVnaXN0ZXJTdGF0ZS5udW1iZXJP
ZkJ5dGVzUHJlc2VydmVkIC0gc3RhdGUubnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZvclJlZ2lzdGVy
UHJlc2VydmF0aW9uKCkpLAorICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMigoY29kZUJsb2NrLT5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdp
c3RlcikpIC0gc3RhdGUucHJlc2VydmVkUmV1c2VkUmVnaXN0ZXJTdGF0ZS5udW1iZXJPZkJ5dGVz
UHJlc2VydmVkIC0gc3BpbGxTdGF0ZS5udW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQ
cmVzZXJ2YXRpb24pLAogICAgICAgICAgICAgICAgIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICAgICAgICAgIHN0YXRl
LnJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChpc0dldHRlcigpKTsKKyAgICAg
ICAgICAgIGJvb2wgY2FsbEhhc1JldHVyblZhbHVlID0gaXNHZXR0ZXIoKTsKKyAgICAgICAgICAg
IHJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChzcGlsbFN0YXRlLCBjYWxsSGFz
UmV0dXJuVmFsdWUpOwogCiAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soCiAgICAgICAgICAg
ICAgICAgWz0sICZ2bV0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKQEAgLTExMjcsMTEgKzEx
NjQsMTIgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0
YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBub0V4Y2VwdGlvbiA9
CiAgICAgICAgICAgICAgICAgaml0LmVtaXRFeGNlcHRpb25DaGVjayhDQ2FsbEhlbHBlcnM6Oklu
dmVydGVkRXhjZXB0aW9uQ2hlY2spOwogCi0gICAgICAgICAgICBzdGF0ZS5yZXN0b3JlTGl2ZVJl
Z2lzdGVyc0Zyb21TdGFja0ZvckNhbGxXaXRoVGhyb3duRXhjZXB0aW9uKCk7CisgICAgICAgICAg
ICBzdGF0ZS5yZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGxXaXRoVGhyb3duRXhj
ZXB0aW9uKHNwaWxsU3RhdGUpOwogICAgICAgICAgICAgc3RhdGUuZW1pdEV4cGxpY2l0RXhjZXB0
aW9uSGFuZGxlcigpOwogICAgICAgICAKICAgICAgICAgICAgIG5vRXhjZXB0aW9uLmxpbmsoJmpp
dCk7Ci0gICAgICAgICAgICBzdGF0ZS5yZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNh
bGwoaXNHZXR0ZXIoKSk7CisgICAgICAgICAgICBib29sIGNhbGxIYXNSZXR1cm5WYWx1ZSA9IGlz
R2V0dGVyKCk7CisgICAgICAgICAgICByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNh
bGwoc3BpbGxTdGF0ZSwgY2FsbEhhc1JldHVyblZhbHVlKTsKICAgICAgICAgfQogICAgICAgICBz
dGF0ZS5zdWNjZWVkKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTEyNDgsNyArMTI4Niw3IEBAIHZv
aWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUp
CiAgICAgICAgICAgICAgICAgUmVnaXN0ZXJTZXQgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlOwog
ICAgICAgICAgICAgICAgIGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZS5zZXQoYmFzZUdQUik7CiAg
ICAgICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1ByZXNlcnZlLnNldCh2YWx1ZVJlZ3MpOwot
ICAgICAgICAgICAgICAgIHN0YXRlLnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxs
KGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZSk7CisgICAgICAgICAgICAgICAgQWNjZXNzR2VuZXJh
dGlvblN0YXRlOjpTcGlsbFN0YXRlIHNwaWxsU3RhdGUgPSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdp
c3RlcnNUb1N0YWNrRm9yQ2FsbChleHRyYVJlZ2lzdGVyc1RvUHJlc2VydmUpOwogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKAogICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigKQEAgLTEyODgsMTEgKzEzMjYsMTEgQEAgdm9p
ZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkK
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm9FeGNlcHRpb24gPQogICAgICAg
ICAgICAgICAgICAgICBqaXQuZW1pdEV4Y2VwdGlvbkNoZWNrKENDYWxsSGVscGVyczo6SW52ZXJ0
ZWRFeGNlcHRpb25DaGVjayk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgc3Rh
dGUucmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsV2l0aFRocm93bkV4Y2VwdGlv
bigpOworICAgICAgICAgICAgICAgIHN0YXRlLnJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNr
Rm9yQ2FsbFdpdGhUaHJvd25FeGNlcHRpb24oc3BpbGxTdGF0ZSk7CiAgICAgICAgICAgICAgICAg
c3RhdGUuZW1pdEV4cGxpY2l0RXhjZXB0aW9uSGFuZGxlcigpOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIG5vRXhjZXB0aW9uLmxpbmsoJmppdCk7Ci0gICAgICAgICAgICAgICAg
c3RhdGUucmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKCk7CisgICAgICAgICAg
ICAgICAgc3RhdGUucmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKHNwaWxsU3Rh
dGUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTEzODUsNiArMTQyMywxMjQgQEAg
dm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0
ZSkKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCit2b2lkIEFjY2Vzc0Nh
c2U6OmVtaXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgR1BSUmVn
IGJhc2VGb3JHZXRHUFIpCit7CisgICAgQ0NhbGxIZWxwZXJzJiBqaXQgPSAqc3RhdGUuaml0Owor
ICAgIFZNJiB2bSA9ICpqaXQudm0oKTsKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8g
PSAqc3RhdGUuc3R1YkluZm87CisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gc3RhdGUudmFs
dWVSZWdzOworICAgIEdQUlJlZyBiYXNlR1BSID0gc3RhdGUuYmFzZUdQUjsKKyAgICBHUFJSZWcg
c2NyYXRjaEdQUiA9IHN0YXRlLnNjcmF0Y2hHUFI7CisKKyAgICAvLyBXZSBjb25zdHJ1Y3QgdGhl
IGVudmlyb25tZW50IHRoYXQgY2FuIGV4ZWN1dGUgdGhlIERPTUpJVDo6UGF0Y2hwb2ludCBoZXJl
LgorICAgIFJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBwYXRjaHBvaW50ID0gbV9yYXJl
RGF0YS0+ZG9tSklULT5jYWxsRE9NKCk7CisKKyAgICBWZWN0b3I8R1BSUmVnPiBncFNjcmF0Y2g7
CisgICAgVmVjdG9yPEZQUlJlZz4gZnBTY3JhdGNoOworICAgIFZlY3RvcjxET01KSVQ6OlZhbHVl
PiByZWdzOworCisgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRvcihzdHViSW5m
by5wYXRjaC51c2VkUmVnaXN0ZXJzKTsKKyAgICBhbGxvY2F0b3IubG9jayhiYXNlR1BSKTsKKyNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIGFsbG9jYXRvci5sb2NrKHN0YXRpY19jYXN0PEdQUlJl
Zz4oc3R1YkluZm8ucGF0Y2guYmFzZVRhZ0dQUikpOworI2VuZGlmCisgICAgYWxsb2NhdG9yLmxv
Y2sodmFsdWVSZWdzKTsKKyAgICBhbGxvY2F0b3IubG9jayhzY3JhdGNoR1BSKTsKKworICAgIEdQ
UlJlZyBwYXJhbUJhc2VHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIEdQUlJlZyBwYXJhbUdsb2Jh
bE9iamVjdEdQUiA9IEludmFsaWRHUFJSZWc7CisgICAgSlNWYWx1ZVJlZ3MgcGFyYW1WYWx1ZVJl
Z3MgPSB2YWx1ZVJlZ3M7CisgICAgR1BSUmVnIHJlbWFpbmluZ1NjcmF0Y2hHUFIgPSBJbnZhbGlk
R1BSUmVnOworCisgICAgLy8gdmFsdWVSZWdzIGFuZCBiYXNlRm9yR2V0R1BSIG1heSBiZSB0aGUg
c2FtZS4gRm9yIGV4YW1wbGUsIGluIEJhc2VsaW5lIEpJVCwgd2UgcGFzcyB0aGUgc2FtZSByZWdU
MCBmb3IgYmFzZUdQUiBhbmQgdmFsdWVSZWdzLgorICAgIC8vIEluIEZUTCwgdGhlcmUgaXMgbm8g
Y29uc3RyYWludCB0aGF0IHRoZSBiYXNlRm9yR2V0R1BSIGludGVyZmVyZXMgd2l0aCB0aGUgcmVz
dWx0LiBUbyBtYWtlIGltcGxlbWVudGF0aW9uIHNpbXBsZSBpbgorICAgIC8vIERPTUpJVDo6UGF0
Y2hwb2ludCwgRE9NSklUOjpQYXRjaHBvaW50IGFzc3VtZXMgdGhhdCByZXN1bHQgcmVnaXN0ZXJz
IGFsd2F5cyBlYXJseSBpbnRlcmZlcmUgd2l0aCBpbnB1dCByZWdpc3RlcnMsIGluIHRoaXMgY2Fz
ZSwKKyAgICAvLyBiYXNlRm9yR2V0R1BSLiBTbyB3ZSBtb3ZlIGJhc2VGb3JHZXRHUFIgdG8gdGhl
IG90aGVyIHJlZ2lzdGVyIGlmIGJhc2VGb3JHZXRHUFIgPT0gdmFsdWVSZWdzLgorICAgIGlmIChi
YXNlRm9yR2V0R1BSICE9IHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpIHsKKyAgICAgICAgcGFyYW1C
YXNlR1BSID0gYmFzZUZvckdldEdQUjsKKyAgICAgICAgaWYgKCFwYXRjaHBvaW50LT5yZXF1aXJl
R2xvYmFsT2JqZWN0KQorICAgICAgICAgICAgcmVtYWluaW5nU2NyYXRjaEdQUiA9IHNjcmF0Y2hH
UFI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhcmFtR2xvYmFsT2JqZWN0R1BSID0gc2Ny
YXRjaEdQUjsKKyAgICB9IGVsc2UgeworICAgICAgICBqaXQubW92ZSh2YWx1ZVJlZ3MucGF5bG9h
ZEdQUigpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgcGFyYW1CYXNlR1BSID0gc2NyYXRjaEdQUjsK
KyAgICAgICAgaWYgKHBhdGNocG9pbnQtPnJlcXVpcmVHbG9iYWxPYmplY3QpCisgICAgICAgICAg
ICBwYXJhbUdsb2JhbE9iamVjdEdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsK
KyAgICB9CisKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0Rm9yRE9NSklUID0gc3Ry
dWN0dXJlKCktPmdsb2JhbE9iamVjdCgpOworCisgICAgcmVncy5hcHBlbmQocGFyYW1WYWx1ZVJl
Z3MpOworICAgIGlmIChwYXRjaHBvaW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0KSB7CisgICAgICAg
IEFTU0VSVChwYXJhbUdsb2JhbE9iamVjdEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAg
cmVncy5hcHBlbmQoRE9NSklUOjpWYWx1ZShwYXJhbUdsb2JhbE9iamVjdEdQUiwgZ2xvYmFsT2Jq
ZWN0Rm9yRE9NSklUKSk7CisgICAgfQorICAgIHJlZ3MuYXBwZW5kKHBhcmFtQmFzZUdQUik7CisK
KyAgICBpZiAocGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzKSB7CisgICAgICAgIHVu
c2lnbmVkIGkgPSAwOworICAgICAgICBpZiAocmVtYWluaW5nU2NyYXRjaEdQUiAhPSBJbnZhbGlk
R1BSUmVnKSB7CisgICAgICAgICAgICBncFNjcmF0Y2guYXBwZW5kKHJlbWFpbmluZ1NjcmF0Y2hH
UFIpOworICAgICAgICAgICAgKytpOworICAgICAgICB9CisgICAgICAgIGZvciAoOyBpIDwgcGF0
Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzOyArK2kpCisgICAgICAgICAgICBncFNjcmF0
Y2guYXBwZW5kKGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKSk7CisgICAgfQorCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhdGNocG9pbnQtPm51bUZQU2NyYXRjaFJlZ2lzdGVy
czsgKytpKQorICAgICAgICBmcFNjcmF0Y2guYXBwZW5kKGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0
Y2hGUFIoKSk7CisKKyAgICAvLyBMZXQncyBzdG9yZSB0aGUgcmV1c2VkIHJlZ2lzdGVycyB0byB0
aGUgc3RhY2suIEFmdGVyIHRoYXQsIHdlIGNhbiB1c2UgYWxsb2NhdGVkIHNjcmF0Y2ggcmVnaXN0
ZXJzLgorICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJlc2VydmVkU3RhdGUgcHJlc2Vy
dmVkU3RhdGUgPQorICAgICAgICBhbGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1
c2hpbmcoaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6U3Bh
Y2VGb3JDQ2FsbCk7CisKKyAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBkYXRhTG9nKCJiYXNl
R1BSID0gIiwgYmFzZUdQUiwgIlxuIik7CisgICAgICAgIGRhdGFMb2coInZhbHVlUmVncyA9ICIs
IHZhbHVlUmVncywgIlxuIik7CisgICAgICAgIGRhdGFMb2coInNjcmF0Y2hHUFIgPSAiLCBzY3Jh
dGNoR1BSLCAiXG4iKTsKKyAgICAgICAgZGF0YUxvZygicGFyYW1CYXNlR1BSID0gIiwgcGFyYW1C
YXNlR1BSLCAiXG4iKTsKKyAgICAgICAgaWYgKHBhcmFtR2xvYmFsT2JqZWN0R1BSICE9IEludmFs
aWRHUFJSZWcpCisgICAgICAgICAgICBkYXRhTG9nKCJwYXJhbUdsb2JhbE9iamVjdEdQUiA9ICIs
IHBhcmFtR2xvYmFsT2JqZWN0R1BSLCAiXG4iKTsKKyAgICAgICAgZGF0YUxvZygicGFyYW1WYWx1
ZVJlZ3MgPSAiLCBwYXJhbVZhbHVlUmVncywgIlxuIik7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnM7ICsraSkKKyAgICAg
ICAgICAgIGRhdGFMb2coImdwU2NyYXRjaFsiLCBpLCAiXSA9ICIsIGdwU2NyYXRjaFtpXSwgIlxu
Iik7CisgICAgfQorCisgICAgaWYgKHBhdGNocG9pbnQtPnJlcXVpcmVHbG9iYWxPYmplY3QpCisg
ICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3RG
b3JET01KSVQpLCBwYXJhbUdsb2JhbE9iamVjdEdQUik7CisKKyAgICAvLyBXZSBqdXN0IHNwaWxs
IHRoZSByZWdpc3RlcnMgdXNlZCBpbiBET01KSVQ6OlBhdGNocG9pbnQgaGVyZS4gRm9yIG5vdCBz
cGlsbGVkIHJlZ2lzdGVycyBoZXJlIGV4cGxpY2l0bHksCisgICAgLy8gdGhleSBtdXN0IGJlIGlu
IHRoZSB1c2VkIHJlZ2lzdGVyIHNldCBwYXNzZWQgYnkgdGhlIGNhbGxlcnMgKEJhc2VsaW5lLCBE
RkcsIGFuZCBGVEwpIGlmIHRoZXkgbmVlZCB0byBiZSBrZXB0LgorICAgIC8vIFNvbWUgcmVnaXN0
ZXJzIGNhbiBiZSBsb2NrZWQsIGJ1dCBub3QgaW4gdGhlIHVzZWQgcmVnaXN0ZXIgc2V0LiBGb3Ig
ZXhhbXBsZSwgdGhlIGNhbGxlciBjb3VsZCBtYWtlIGJhc2VHUFIKKyAgICAvLyBzYW1lIHRvIHZh
bHVlUmVncywgYW5kIG5vdCBpbmNsdWRlIGl0IGluIHRoZSB1c2VkIHJlZ2lzdGVycyBzaW5jZSBp
dCB3aWxsIGJlIGNoYW5nZWQuCisgICAgUmVnaXN0ZXJTZXQgcmVnaXN0ZXJzVG9TcGlsbEZvckND
YWxsOworICAgIGZvciAoYXV0byYgdmFsdWUgOiByZWdzKSB7CisgICAgICAgIERPTUpJVDo6UmVn
IHJlZyA9IHZhbHVlLnJlZygpOworICAgICAgICBpZiAocmVnLmlzSlNWYWx1ZVJlZ3MoKSkKKyAg
ICAgICAgICAgIHJlZ2lzdGVyc1RvU3BpbGxGb3JDQ2FsbC5zZXQocmVnLmpzVmFsdWVSZWdzKCkp
OworICAgICAgICBlbHNlIGlmIChyZWcuaXNHUFIoKSkKKyAgICAgICAgICAgIHJlZ2lzdGVyc1Rv
U3BpbGxGb3JDQ2FsbC5zZXQocmVnLmdwcigpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
cmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLnNldChyZWcuZnByKCkpOworICAgIH0KKyAgICBmb3Ig
KEdQUlJlZyByZWcgOiBncFNjcmF0Y2gpCisgICAgICAgIHJlZ2lzdGVyc1RvU3BpbGxGb3JDQ2Fs
bC5zZXQocmVnKTsKKyAgICBmb3IgKEZQUlJlZyByZWcgOiBmcFNjcmF0Y2gpCisgICAgICAgIHJl
Z2lzdGVyc1RvU3BpbGxGb3JDQ2FsbC5zZXQocmVnKTsKKyAgICByZWdpc3RlcnNUb1NwaWxsRm9y
Q0NhbGwuZXhjbHVkZShSZWdpc3RlclNldDo6cmVnaXN0ZXJzVG9Ob3RTYXZlRm9yQ0NhbGwoKSk7
CisKKyAgICBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcyBwYXJhbXMoV1RGTW92ZShy
ZWdzKSwgV1RGTW92ZShncFNjcmF0Y2gpLCBXVEZNb3ZlKGZwU2NyYXRjaCkpOworICAgIHBhdGNo
cG9pbnQtPmdlbmVyYXRvcigpLT5ydW4oaml0LCBwYXJhbXMpOworICAgIGFsbG9jYXRvci5yZXN0
b3JlUmV1c2VkUmVnaXN0ZXJzQnlQb3BwaW5nKGppdCwgcHJlc2VydmVkU3RhdGUpOworICAgIHN0
YXRlLnN1Y2NlZWQoKTsKKworICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZXhjZXB0aW9ucyA9
IHBhcmFtcy5lbWl0U2xvd1BhdGhDYWxscyh2bSwgc3RhdGUsIHJlZ2lzdGVyc1RvU3BpbGxGb3JD
Q2FsbCwgaml0KTsKKyAgICBleGNlcHRpb25zLmxpbmsoJmppdCk7CisgICAgYWxsb2NhdG9yLnJl
c3RvcmVSZXVzZWRSZWdpc3RlcnNCeVBvcHBpbmcoaml0LCBwcmVzZXJ2ZWRTdGF0ZSk7CisgICAg
c3RhdGUuZW1pdEV4cGxpY2l0RXhjZXB0aW9uSGFuZGxlcigpOworfQorCiBQb2x5bW9ycGhpY0Fj
Y2Vzczo6UG9seW1vcnBoaWNBY2Nlc3MoKSB7IH0KIFBvbHltb3JwaGljQWNjZXNzOjp+UG9seW1v
cnBoaWNBY2Nlc3MoKSB7IH0KIApAQCAtMTY4NCwxMyArMTg0MCwxNSBAQCBBY2Nlc3NHZW5lcmF0
aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKAogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6TGFiZWwgbWFrZXNoaWZ0Q2F0Y2hIYW5kbGVyID0gaml0LmxhYmVsKCk7CiAKICAg
ICAgICAgaW50IHN0YWNrUG9pbnRlck9mZnNldCA9IGNvZGVCbG9jay0+c3RhY2tQb2ludGVyT2Zm
c2V0KCkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOworICAgICAgICBBY2Nlc3NHZW5lcmF0aW9u
U3RhdGU6OlNwaWxsU3RhdGUgc3BpbGxTdGF0ZUZvckpTR2V0dGVyU2V0dGVyID0gc3RhdGUuc3Bp
bGxTdGF0ZUZvckpTR2V0dGVyU2V0dGVyKCk7CisgICAgICAgIEFTU0VSVCghc3BpbGxTdGF0ZUZv
ckpTR2V0dGVyU2V0dGVyLmlzRW1wdHkoKSk7CiAgICAgICAgIHN0YWNrUG9pbnRlck9mZnNldCAt
PSBzdGF0ZS5wcmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0YXRlLm51bWJlck9mQnl0ZXNQcmVzZXJ2
ZWQ7Ci0gICAgICAgIHN0YWNrUG9pbnRlck9mZnNldCAtPSBzdGF0ZS5udW1iZXJPZlN0YWNrQnl0
ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24oKTsKKyAgICAgICAgc3RhY2tQb2ludGVyT2Zm
c2V0IC09IHNwaWxsU3RhdGVGb3JKU0dldHRlclNldHRlci5udW1iZXJPZlN0YWNrQnl0ZXNVc2Vk
Rm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb247CiAKICAgICAgICAgaml0LmxvYWRQdHIodm0uYWRkcmVz
c09mQ2FsbEZyYW1lRm9yQ2F0Y2goKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwogICAg
ICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHN0YWNrUG9pbnRlck9m
ZnNldCksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9p
bnRlclJlZ2lzdGVyKTsKIAotICAgICAgICBzdGF0ZS5yZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21T
dGFja0ZvckNhbGxXaXRoVGhyb3duRXhjZXB0aW9uKCk7CisgICAgICAgIHN0YXRlLnJlc3RvcmVM
aXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbFdpdGhUaHJvd25FeGNlcHRpb24oc3BpbGxTdGF0
ZUZvckpTR2V0dGVyU2V0dGVyKTsKICAgICAgICAgc3RhdGUucmVzdG9yZVNjcmF0Y2goKTsKICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGp1bXBUb09TUkV4aXRFeGNlcHRpb25IYW5kbGVyID0g
aml0Lmp1bXAoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1BvbHltb3JwaGljQWNjZXNzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9s
eW1vcnBoaWNBY2Nlc3MuaAppbmRleCA5NzBhMjM1YmZkZTMyZTYzYWY2Yjk1ZGFmZjczMjNjMmI5
NDhjNjVjLi5kMzAyMDE2MzNlZTc1OWM5NTg2MDE3ZjFlYTQ0ZmRhZjBjZjg5MjU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaApA
QCAtMjc3LDYgKzI3Nyw3IEBAIGNsYXNzIEFjY2Vzc0Nhc2UgewogICAgIAogICAgIHZvaWQgZ2Vu
ZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYpOwogICAgIHZvaWQgZW1pdEludHJpbnNp
Y0dldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmKTsKKyAgICB2b2lkIGVtaXRET01KSVRHZXR0
ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgR1BSUmVnIGJhc2VGb3JHZXRHUFIpOwogICAgIAog
ICAgIEFjY2Vzc1R5cGUgbV90eXBlIHsgTG9hZCB9OwogICAgIFN0YXRlIG1fc3RhdGUgeyBQcmlt
b3JkaWFsIH07CkBAIC00NzIsMTkgKzQ3MywyMSBAQCBzdHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0
YXRlIHsKICAgICB2b2lkIHJlc3RvcmVTY3JhdGNoKCk7CiAgICAgdm9pZCBzdWNjZWVkKCk7CiAK
LSAgICB2b2lkIGNhbGN1bGF0ZUxpdmVSZWdpc3RlcnNGb3JDYWxsQW5kRXhjZXB0aW9uSGFuZGxp
bmcoY29uc3QgUmVnaXN0ZXJTZXQmIGV4dHJhID0gUmVnaXN0ZXJTZXQoKSk7CisgICAgc3RydWN0
IFNwaWxsU3RhdGUgeworICAgICAgICBSZWdpc3RlclNldCBzcGlsbGVkUmVnaXN0ZXJzIHsgfTsK
KyAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2Vy
dmF0aW9uIHsgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIH07CiAKLSAgICB2
b2lkIHByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGNvbnN0IFJlZ2lzdGVyU2V0
JiBleHRyYSA9IFJlZ2lzdGVyU2V0KCkpOworICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiBudW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24gPT0g
c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOyB9CisgICAgfTsKIAotICAgIHZv
aWQgcmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKGJvb2wgaXNHZXR0ZXIgPSBm
YWxzZSk7Ci0gICAgdm9pZCByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGxXaXRo
VGhyb3duRXhjZXB0aW9uKCk7Ci0gICAgdm9pZCByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFj
a0ZvckNhbGwoY29uc3QgUmVnaXN0ZXJTZXQmIGRvbnRSZXN0b3JlKTsKKyAgICBjb25zdCBSZWdp
c3RlclNldCYgY2FsY3VsYXRlTGl2ZVJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRpb25IYW5kbGlu
ZygpOwogCi0gICAgY29uc3QgUmVnaXN0ZXJTZXQmIGxpdmVSZWdpc3RlcnNGb3JDYWxsKCkKLSAg
ICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fY2FsY3VsYXRlZFJlZ2lzdGVyc0ZvckNhbGxB
bmRFeGNlcHRpb25IYW5kbGluZyk7Ci0gICAgICAgIHJldHVybiBtX2xpdmVSZWdpc3RlcnNGb3JD
YWxsOwotICAgIH0KKyAgICBTcGlsbFN0YXRlIHByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tG
b3JDYWxsKGNvbnN0IFJlZ2lzdGVyU2V0JiBleHRyYSA9IFJlZ2lzdGVyU2V0KCkpOworCisgICAg
dm9pZCByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGxXaXRoVGhyb3duRXhjZXB0
aW9uKGNvbnN0IFNwaWxsU3RhdGUmKTsKKyAgICB2b2lkIHJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJv
bVN0YWNrRm9yQ2FsbChjb25zdCBTcGlsbFN0YXRlJiwgY29uc3QgUmVnaXN0ZXJTZXQmIGRvbnRS
ZXN0b3JlID0gUmVnaXN0ZXJTZXQoKSk7CisKKyAgICBjb25zdCBSZWdpc3RlclNldCYgbGl2ZVJl
Z2lzdGVyc0ZvckNhbGwoKTsKIAogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleEZvckV4
Y2VwdGlvbkhhbmRsaW5nT3JPcmlnaW5hbCgpOwogICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJ
bmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nKCkKQEAgLTQ5NSwyOSArNDk4LDMwIEBAIHN0cnVjdCBB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGUgewogICAgICAgICByZXR1cm4gbV9jYWxsU2l0ZUluZGV4Owog
ICAgIH0KIAotICAgIGNvbnN0IEhhbmRsZXJJbmZvJiBvcmlnaW5hbEV4Y2VwdGlvbkhhbmRsZXIo
KSBjb25zdDsKLSAgICB1bnNpZ25lZCBudW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQ
cmVzZXJ2YXRpb24oKSBjb25zdAotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9jYWxj
dWxhdGVkUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhhbmRsaW5nKTsKLSAgICAgICAgcmV0
dXJuIG1fbnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uOwotICAg
IH0KKyAgICBjb25zdCBIYW5kbGVySW5mbyYgb3JpZ2luYWxFeGNlcHRpb25IYW5kbGVyKCk7CiAK
ICAgICBib29sIG5lZWRzVG9SZXN0b3JlUmVnaXN0ZXJzSWZFeGNlcHRpb24oKSBjb25zdCB7IHJl
dHVybiBtX25lZWRzVG9SZXN0b3JlUmVnaXN0ZXJzSWZFeGNlcHRpb247IH0KICAgICBDYWxsU2l0
ZUluZGV4IG9yaWdpbmFsQ2FsbFNpdGVJbmRleCgpIGNvbnN0OwogICAgIAogICAgIHZvaWQgZW1p
dEV4cGxpY2l0RXhjZXB0aW9uSGFuZGxlcigpOwotICAgIAotcHJpdmF0ZToKLSAgICBjb25zdCBS
ZWdpc3RlclNldCYgbGl2ZVJlZ2lzdGVyc1RvUHJlc2VydmVBdEV4Y2VwdGlvbkhhbmRsaW5nQ2Fs
bFNpdGUoKQorCisgICAgdm9pZCBzZXRTcGlsbFN0YXRlRm9ySlNHZXR0ZXJTZXR0ZXIoU3BpbGxT
dGF0ZSYgc3BpbGxTdGF0ZSkKICAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fY2FsY3Vs
YXRlZFJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRpb25IYW5kbGluZyk7Ci0gICAgICAgIHJldHVy
biBtX2xpdmVSZWdpc3RlcnNUb1ByZXNlcnZlQXRFeGNlcHRpb25IYW5kbGluZ0NhbGxTaXRlOwor
ICAgICAgICBpZiAoIW1fc3BpbGxTdGF0ZUZvckpTR2V0dGVyU2V0dGVyLmlzRW1wdHkoKSkgewor
ICAgICAgICAgICAgQVNTRVJUKG1fc3BpbGxTdGF0ZUZvckpTR2V0dGVyU2V0dGVyLm51bWJlck9m
U3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbiA9PSBzcGlsbFN0YXRlLm51bWJl
ck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbik7CisgICAgICAgICAgICBB
U1NFUlQobV9zcGlsbFN0YXRlRm9ySlNHZXR0ZXJTZXR0ZXIuc3BpbGxlZFJlZ2lzdGVycyA9PSBz
cGlsbFN0YXRlLnNwaWxsZWRSZWdpc3RlcnMpOworICAgICAgICB9CisgICAgICAgIG1fc3BpbGxT
dGF0ZUZvckpTR2V0dGVyU2V0dGVyID0gc3BpbGxTdGF0ZTsKICAgICB9CisgICAgU3BpbGxTdGF0
ZSBzcGlsbFN0YXRlRm9ySlNHZXR0ZXJTZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX3NwaWxsU3Rh
dGVGb3JKU0dldHRlclNldHRlcjsgfQorICAgIAorcHJpdmF0ZToKKyAgICBjb25zdCBSZWdpc3Rl
clNldCYgbGl2ZVJlZ2lzdGVyc1RvUHJlc2VydmVBdEV4Y2VwdGlvbkhhbmRsaW5nQ2FsbFNpdGUo
KTsKICAgICAKICAgICBSZWdpc3RlclNldCBtX2xpdmVSZWdpc3RlcnNUb1ByZXNlcnZlQXRFeGNl
cHRpb25IYW5kbGluZ0NhbGxTaXRlOwogICAgIFJlZ2lzdGVyU2V0IG1fbGl2ZVJlZ2lzdGVyc0Zv
ckNhbGw7CiAgICAgQ2FsbFNpdGVJbmRleCBtX2NhbGxTaXRlSW5kZXggeyBDYWxsU2l0ZUluZGV4
KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgfTsKLSAgICB1bnNpZ25lZCBt
X251bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbiB7IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSB9OworICAgIFNwaWxsU3RhdGUgbV9zcGlsbFN0
YXRlRm9ySlNHZXR0ZXJTZXR0ZXI7CiAgICAgYm9vbCBtX2NhbGN1bGF0ZWRSZWdpc3RlcnNGb3JD
YWxsQW5kRXhjZXB0aW9uSGFuZGxpbmcgOiAxOwogICAgIGJvb2wgbV9uZWVkc1RvUmVzdG9yZVJl
Z2lzdGVyc0lmRXhjZXB0aW9uIDogMTsKICAgICBib29sIG1fY2FsY3VsYXRlZENhbGxTaXRlSW5k
ZXggOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdET01KSVRQ
YXRjaHBvaW50UGFyYW1zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRE9NSklU
UGF0Y2hwb2ludFBhcmFtcy5jcHAKaW5kZXggMGExMWM2NzEzNDdkNzFiZmRhMzUxOTMwZTdjYjU1
ZjFhNWVjNmYwNy4uOGVkNzdiNTJlZWNjYzUzYTA5NTQ2MTI4NmE1ODMxYWI3ZGQxNWNiMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdET01KSVRQYXRjaHBvaW50UGFy
YW1zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RPTUpJVFBhdGNocG9p
bnRQYXJhbXMuY3BwCkBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoKFNwZWN1
bGF0aXZlSklUKiBqaXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QgZnJvbSwgT3BlcmF0aW9uCiB9
CiAKICNkZWZpbmUgSlNDX0RFRklORV9DQUxMX09QRVJBVElPTlMoT3BlcmF0aW9uVHlwZSwgUmVz
dWx0VHlwZSwgLi4uKSBcCi0gICAgdm9pZCBET01KSVRQYXRjaHBvaW50UGFyYW1zOjphZGRTbG93
UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExpc3QgZnJvbSwgQ0NhbGxIZWxwZXJzJiwg
T3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIFJlc3VsdFR5cGUgcmVzdWx0LCBzdGQ6OnR1cGxlPF9f
VkFfQVJHU19fPiBhcmdzKSBjb25zdCBcCisgICAgdm9pZCBET01KSVRQYXRjaHBvaW50UGFyYW1z
OjphZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExpc3QgZnJvbSwgQ0NhbGxI
ZWxwZXJzJiwgT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIFJlc3VsdFR5cGUgcmVzdWx0LCBzdGQ6
OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBcCiAgICAgeyBcCiAgICAgICAgIGRpc3BhdGNoKG1f
aml0LCBmcm9tLCBvcGVyYXRpb24sIHJlc3VsdCwgYXJncywgc3RkOjptYWtlX2luZGV4X3NlcXVl
bmNlPHN0ZDo6dHVwbGVfc2l6ZTxkZWNsdHlwZShhcmdzKT46OnZhbHVlPigpKTsgXAogICAgIH0g
XApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdET01KSVRQYXRjaHBv
aW50UGFyYW1zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RPTUpJVFBhdGNocG9p
bnRQYXJhbXMuaAppbmRleCA0NmZkZDRiZTYwMDRmMzMxZDdhOTk2Y2ExNjZiYTYxMzAwMjA5Zjgy
Li5mYjZhYjBiMmM2ODM3MTkyYTI4YjdlNjUxNTc0YzA1NTVlMTU1ZWI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaApA
QCAtNDIsNyArNDIsNyBAQCBjbGFzcyBET01KSVRQYXRjaHBvaW50UGFyYW1zIDogcHVibGljIERP
TUpJVDo6UGF0Y2hwb2ludFBhcmFtcyB7CiAgICAgfQogCiBwcml2YXRlOgotI2RlZmluZSBKU0Nf
REVGSU5FX0NBTExfT1BFUkFUSU9OUyhPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCAuLi4pIHZv
aWQgYWRkU2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0LCBDQ2FsbEhlbHBl
cnMmLCBPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCBzdGQ6OnR1cGxlPF9fVkFfQVJHU19fPiBh
cmdzKSBjb25zdCBvdmVycmlkZTsKKyNkZWZpbmUgSlNDX0RFRklORV9DQUxMX09QRVJBVElPTlMo
T3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwgLi4uKSB2b2lkIGFkZFNsb3dQYXRoQ2FsbEltcGwo
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzJiwgT3BlcmF0aW9uVHlwZSwgUmVz
dWx0VHlwZSwgc3RkOjp0dXBsZTxfX1ZBX0FSR1NfXz4gYXJncykgb3ZlcnJpZGU7CiAgICAgRE9N
SklUX1NMT1dfUEFUSF9DQUxMUyhKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUykKICN1bmRlZiBK
U0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
b21qaXQvRE9NSklUUGF0Y2hwb2ludC5oCmluZGV4IDM4NjA4ZTI1NjlhMmFjZTY5MTBiMjg5MTkw
N2Y1YmRiOGE5NTljNDMuLmJiOWY1ZTRmOWI4N2YyMTM3NTNmYWI4YTU5ZjAwNzk4ZGY2OTBmMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUUGF0Y2hwb2lu
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUUGF0Y2hwb2ludC5o
CkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKIAog
Y2xhc3MgUGF0Y2hwb2ludFBhcmFtczsKIAotdHlwZWRlZiBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
IFBhdGNocG9pbnRHZW5lcmF0b3JGdW5jdGlvbihDQ2FsbEhlbHBlcnMmLCBjb25zdCBQYXRjaHBv
aW50UGFyYW1zJik7Cit0eXBlZGVmIENDYWxsSGVscGVyczo6SnVtcExpc3QgUGF0Y2hwb2ludEdl
bmVyYXRvckZ1bmN0aW9uKENDYWxsSGVscGVycyYsIFBhdGNocG9pbnRQYXJhbXMmKTsKIHR5cGVk
ZWYgU2hhcmVkVGFzazxQYXRjaHBvaW50R2VuZXJhdG9yRnVuY3Rpb24+IFBhdGNocG9pbnRHZW5l
cmF0b3I7CiAKIC8vIERPTUpJVCBwYXRjaHBvaW50IGlzIHRoZSB3YXkgdG8gaW5qZWN0IGFuIG9w
YXF1ZSBjb2RlIGdlbmVyYXRvciBpbnRvIERGRyBhbmQgRlRMLgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRQYXRjaHBvaW50UGFyYW1zLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaAppbmRleCBhZWVj
ZTFiN2UyOTZlZDE0YjQ2ZTRlZDY5MDg3MWQwMmEwNzY4MjM0Li5kODNiNmIwYmYxNjY0MDViZmM0
ZGM4ZTMxNTRkMTA5ZGVhMjhmMTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZG9taml0L0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaApAQCAtNTUsMTMgKzU1LDEzIEBAIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFBhdGNocG9pbnRQYXJhbXMpOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUu
Li4gQXJndW1lbnRzPgotICAgIHZvaWQgYWRkU2xvd1BhdGhDYWxsKENDYWxsSGVscGVyczo6SnVt
cExpc3QgZnJvbSwgQ0NhbGxIZWxwZXJzJiBqaXQsIEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwgUmVz
dWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpIGNvbnN0CisgICAgdm9pZCBh
ZGRTbG93UGF0aENhbGwoQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBmcm9tLCBDQ2FsbEhlbHBlcnMm
IGppdCwgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLCBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRz
Li4uIGFyZ3VtZW50cykKICAgICB7CiAgICAgICAgIGFkZFNsb3dQYXRoQ2FsbEltcGwoZnJvbSwg
aml0LCBmdW5jdGlvbiwgcmVzdWx0LCBzdGQ6Om1ha2VfdHVwbGUoYXJndW1lbnRzLi4uKSk7CiAg
ICAgfQogCiBwcml2YXRlOgotI2RlZmluZSBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUyhPcGVy
YXRpb25UeXBlLCBSZXN1bHRUeXBlLCAuLi4pIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgdm9p
ZCBhZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExpc3QsIENDYWxsSGVscGVy
cyYsIE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUsIHN0ZDo6dHVwbGU8X19WQV9BUkdTX18+IGFy
Z3MpIGNvbnN0ID0gMDsKKyNkZWZpbmUgSlNDX0RFRklORV9DQUxMX09QRVJBVElPTlMoT3BlcmF0
aW9uVHlwZSwgUmVzdWx0VHlwZSwgLi4uKSBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQg
YWRkU2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0LCBDQ2FsbEhlbHBlcnMm
LCBPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCBzdGQ6OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdz
KSA9IDA7CiAgICAgRE9NSklUX1NMT1dfUEFUSF9DQUxMUyhKU0NfREVGSU5FX0NBTExfT1BFUkFU
SU9OUykKICN1bmRlZiBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTERPTUpJVFBhdGNocG9pbnRQYXJhbXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExET01KSVRQYXRjaHBvaW50UGFyYW1zLmNwcApp
bmRleCBhYTIyNTU4NzgwNjBjNWY0ZmZlOWJlMWEzN2UzZjJjNDg1N2JiNDgxLi4xMDZlMmU1NjE5
OGI0YzFjY2U0ZDM0MTZiZWEwZTZiYjI4ZTM1NGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTERPTUpJVFBhdGNocG9pbnRQYXJhbXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5jcHAKQEAgLTUwLDcg
KzUwLDcgQEAgc3RhdGljIHZvaWQgZGlzcGF0Y2goQ0NhbGxIZWxwZXJzJiBqaXQsIEZUTDo6U3Rh
dGUqIHN0YXRlLCBjb25zdCBCMzo6U3RhY2ttYXBHZW4KIH0KIAogI2RlZmluZSBKU0NfREVGSU5F
X0NBTExfT1BFUkFUSU9OUyhPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCAuLi4pIFwKLSAgICB2
b2lkIERPTUpJVFBhdGNocG9pbnRQYXJhbXM6OmFkZFNsb3dQYXRoQ2FsbEltcGwoQ0NhbGxIZWxw
ZXJzOjpKdW1wTGlzdCBmcm9tLCBDQ2FsbEhlbHBlcnMmIGppdCwgT3BlcmF0aW9uVHlwZSBvcGVy
YXRpb24sIFJlc3VsdFR5cGUgcmVzdWx0LCBzdGQ6OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBj
b25zdCBcCisgICAgdm9pZCBET01KSVRQYXRjaHBvaW50UGFyYW1zOjphZGRTbG93UGF0aENhbGxJ
bXBsKENDYWxsSGVscGVyczo6SnVtcExpc3QgZnJvbSwgQ0NhbGxIZWxwZXJzJiBqaXQsIE9wZXJh
dGlvblR5cGUgb3BlcmF0aW9uLCBSZXN1bHRUeXBlIHJlc3VsdCwgc3RkOjp0dXBsZTxfX1ZBX0FS
R1NfXz4gYXJncykgXAogICAgIHsgXAogICAgICAgICBkaXNwYXRjaChqaXQsICZtX3N0YXRlLCBt
X3BhcmFtcywgbV9ub2RlLCBtX2V4Y2VwdGlvbnMsIGZyb20sIG9wZXJhdGlvbiwgcmVzdWx0LCBh
cmdzLCBzdGQ6Om1ha2VfaW5kZXhfc2VxdWVuY2U8c3RkOjp0dXBsZV9zaXplPGRlY2x0eXBlKGFy
Z3MpPjo6dmFsdWU+KCkpOyBcCiAgICAgfSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oCmluZGV4IDJkMTNlZWFhN2Q1ODdj
YjQ3ZTkzNzczMTI2ZmY3MDU5MzY0NDNmN2EuLjMzODdjOTA4NmUxMzY2MTI4NGY1NzhjNmNhNDQ0
MmUyNzRjMGNmZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRE9N
SklUUGF0Y2hwb2ludFBhcmFtcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
RE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIERPTUpJVFBh
dGNocG9pbnRQYXJhbXMgOiBwdWJsaWMgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zIHsKICAgICB9
CiAKIHByaXZhdGU6Ci0jZGVmaW5lIEpTQ19ERUZJTkVfQ0FMTF9PUEVSQVRJT05TKE9wZXJhdGlv
blR5cGUsIFJlc3VsdFR5cGUsIC4uLikgdm9pZCBhZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVs
cGVyczo6SnVtcExpc3QsIENDYWxsSGVscGVycyYsIE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUs
IHN0ZDo6dHVwbGU8X19WQV9BUkdTX18+IGFyZ3MpIGNvbnN0IG92ZXJyaWRlOworI2RlZmluZSBK
U0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUyhPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCAuLi4p
IHZvaWQgYWRkU2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0LCBDQ2FsbEhl
bHBlcnMmLCBPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCBzdGQ6OnR1cGxlPF9fVkFfQVJHU19f
PiBhcmdzKSBvdmVycmlkZTsKICAgICBET01KSVRfU0xPV19QQVRIX0NBTExTKEpTQ19ERUZJTkVf
Q0FMTF9PUEVSQVRJT05TKQogI3VuZGVmIEpTQ19ERUZJTkVfQ0FMTF9PUEVSQVRJT05TCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKaW5kZXggNmU4OTcxNjlkYzA4M2QwNTgzMjgyNWRkNWNiMGIxMTg1OWVi
ZjE2Mi4uYTQ1YjQwZGY1NGE5MzVlNjQxNjhlOGVjY2FhNzRjMWZiZDBhNWUzMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAKQEAgLTU1Nyw2ICs1NTcsMjIgQEAgY2xhc3MgRE9NSklUTm9kZSA6IHB1Ymxp
YyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNDOjpKU1R5cGUoTGFzdEpTQ09i
amVjdFR5cGUgKyAxKSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAorI2lmIEVO
QUJMRShKSVQpCisgICAgc3RhdGljIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IGNoZWNrRE9NSklU
Tm9kZSgpCisgICAgeworICAgICAgICBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBwYXRjaHBvaW50
ID0gRE9NSklUOjpQYXRjaHBvaW50OjpjcmVhdGUoKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0
R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1z
JiBwYXJhbXMpIHsKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZmFpbHVyZUNh
c2VzOworICAgICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChqaXQuYnJhbmNoOCgKKyAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLAorICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6QWRkcmVzcyhwYXJhbXNbMF0uZ3ByKCksIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zm
c2V0KCkpLAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTQzo6
SlNUeXBlKExhc3RKU0NPYmplY3RUeXBlICsgMSkpKSk7CisgICAgICAgICAgICByZXR1cm4gZmFp
bHVyZUNhc2VzOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CisgICAg
fQorI2VuZGlmCisKICAgICBzdGF0aWMgRE9NSklUTm9kZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBET01KSVROb2RlKiBnZXR0ZXIgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxET01KSVROb2RlPih2bS5oZWFwLCBzaXplb2YoRE9NSklU
Tm9kZSkpKSBET01KSVROb2RlKHZtLCBzdHJ1Y3R1cmUpOwpAQCAtNjA4LDIzICs2MjQsMTQgQEAg
Y2xhc3MgRE9NSklUR2V0dGVyIDogcHVibGljIERPTUpJVE5vZGUgewogI2lmIEVOQUJMRShKSVQp
CiAgICAgICAgIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IGNoZWNrRE9NKCkgb3ZlcnJpZGUKICAg
ICAgICAgewotICAgICAgICAgICAgUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9
IERPTUpJVDo6UGF0Y2hwb2ludDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICBwYXRjaHBvaW50LT5z
ZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBET01KSVQ6OlBhdGNocG9p
bnRQYXJhbXMmIHBhcmFtcykgewotICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExp
c3QgZmFpbHVyZUNhc2VzOwotICAgICAgICAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoaml0
LmJyYW5jaDgoCi0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Tm90RXF1YWwsCi0g
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhwYXJhbXNbMF0uZ3ByKCks
IEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAotICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU0M6OkpTVHlwZShMYXN0SlNDT2JqZWN0VHlwZSArIDEp
KSkpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWlsdXJlQ2FzZXM7Ci0gICAgICAgICAgICB9
KTsKLSAgICAgICAgICAgIHJldHVybiBwYXRjaHBvaW50OworICAgICAgICAgICAgcmV0dXJuIERP
TUpJVE5vZGU6OmNoZWNrRE9NSklUTm9kZSgpOwogICAgICAgICB9CiAKICAgICAgICAgUmVmPERP
TUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlkZQogICAgICAgICB7CiAg
ICAgICAgICAgICBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IERP
TUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ6OmNyZWF0ZSgpOwogICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+cmVxdWlyZUdsb2JhbE9iamVjdCA9IGZhbHNlOwotICAgICAgICAgICAgcGF0Y2hwb2ludC0+
c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgRE9NSklUOjpQYXRjaHBv
aW50UGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRv
cihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1z
KSB7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0cyA9IHBhcmFtc1swXS5qc1Zh
bHVlUmVncygpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBkb20gPSBwYXJhbXNbMV0uZ3ByKCk7
CiAKQEAgLTY2Niw2ICs2NzMsMTE1IEBAIGNsYXNzIERPTUpJVEdldHRlciA6IHB1YmxpYyBET01K
SVROb2RlIHsKICAgICB9CiB9OwogCitjbGFzcyBET01KSVRHZXR0ZXJDb21wbGV4IDogcHVibGlj
IERPTUpJVE5vZGUgeworcHVibGljOgorICAgIERPTUpJVEdldHRlckNvbXBsZXgoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAg
eworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKyAgICB0eXBlZGVmIERPTUpJVE5vZGUgQmFz
ZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFnczsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgVHlwZUluZm8oSlNDOjpKU1R5cGUoTGFzdEpTQ09iamVjdFR5cGUgKyAxKSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBET01KSVRHZXR0ZXJD
b21wbGV4KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIERPTUpJVEdldHRlckNvbXBsZXgqIGdl
dHRlciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERPTUpJVEdldHRlckNvbXBsZXg+KHZt
LmhlYXAsIHNpemVvZihET01KSVRHZXR0ZXJDb21wbGV4KSkpIERPTUpJVEdldHRlckNvbXBsZXgo
dm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGdldHRlci0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2Jh
bE9iamVjdCk7CisgICAgICAgIHJldHVybiBnZXR0ZXI7CisgICAgfQorCisgICAgY2xhc3MgRE9N
SklUTm9kZURPTUpJVCA6IHB1YmxpYyBET01KSVQ6OkdldHRlclNldHRlciB7CisgICAgcHVibGlj
OgorICAgICAgICBET01KSVROb2RlRE9NSklUKCkKKyAgICAgICAgICAgIDogRE9NSklUOjpHZXR0
ZXJTZXR0ZXIoRE9NSklUR2V0dGVyQ29tcGxleDo6Y3VzdG9tR2V0dGVyLCBudWxscHRyLCBET01K
SVROb2RlOjppbmZvKCkpCisgICAgICAgIHsKKyAgICAgICAgfQorCisjaWYgRU5BQkxFKEpJVCkK
KyAgICAgICAgUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tET00oKSBvdmVycmlkZQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gRE9NSklUTm9kZTo6Y2hlY2tET01KSVROb2RlKCk7
CisgICAgICAgIH0KKworICAgICAgICBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gY2Fs
bERPTSgpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIFJlZjxET01KSVQ6OkNhbGxE
T01QYXRjaHBvaW50PiBwYXRjaHBvaW50ID0gRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludDo6Y3Jl
YXRlKCk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAz
OworICAgICAgICAgICAgcGF0Y2hwb2ludC0+bnVtRlBTY3JhdGNoUmVnaXN0ZXJzID0gMzsKKyAg
ICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQs
IERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgSlNW
YWx1ZVJlZ3MgcmVzdWx0cyA9IHBhcmFtc1swXS5qc1ZhbHVlUmVncygpOworICAgICAgICAgICAg
ICAgIEdQUlJlZyBkb21HUFIgPSBwYXJhbXNbMl0uZ3ByKCk7CisgICAgICAgICAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNDIpLCBwYXJhbXMuZ3BTY3JhdGNoKDAp
KTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig0
MiksIHBhcmFtcy5ncFNjcmF0Y2goMSkpOworICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKDQyKSwgcGFyYW1zLmdwU2NyYXRjaCgyKSk7CisKKyAgICAg
ICAgICAgICAgICBwYXJhbXMuYWRkU2xvd1BhdGhDYWxsKGppdC5qdW1wKCksIGppdCwgc3RhdGlj
X2Nhc3Q8RW5jb2RlZEpTVmFsdWUoKikoRXhlY1N0YXRlKiwgdm9pZCopPihbXShFeGVjU3RhdGUq
IGV4ZWMsIHZvaWQqIHBvaW50ZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgICAgICAgICAgICAgICAgICBhdXRvKiBvYmplY3QgPSBzdGF0aWNfY2Fz
dDxET01KSVROb2RlKj4ocG9pbnRlcik7CisgICAgICAgICAgICAgICAgICAgIGF1dG8qIGRvbWpp
dEdldHRlckNvbXBsZXggPSBqc0R5bmFtaWNDYXN0PERPTUpJVEdldHRlckNvbXBsZXgqPihvYmpl
Y3QpOworICAgICAgICAgICAgICAgICAgICBpZiAoZG9taml0R2V0dGVyQ29tcGxleCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGRvbWppdEdldHRlckNvbXBsZXgtPm1fZW5hYmxlRXhj
ZXB0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiRE9NSklUR2V0dGVyQ29tcGxleCBzbG93IGNhbGwgZXhjZXB0aW9uIikpKSk7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcihvYmplY3QtPnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICB9KSwgcmVz
dWx0cywgZG9tR1BSKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpKdW1w
TGlzdCgpOworCisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybiBwYXRjaHBvaW50
OworICAgICAgICB9CisjZW5kaWYKKyAgICB9OworCisgICAgc3RhdGljIERPTUpJVDo6R2V0dGVy
U2V0dGVyKiBkb21KSVROb2RlR2V0dGVyU2V0dGVyKCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxET01KSVROb2RlRE9NSklUPiBncmFwaDsKKyAgICAgICAgcmV0dXJuICZn
cmFwaC5nZXQoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgeworICAgICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIERPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21K
SVQgPSBkb21KSVROb2RlR2V0dGVyU2V0dGVyKCk7CisgICAgICAgIEN1c3RvbUdldHRlclNldHRl
ciogY3VzdG9tR2V0dGVyU2V0dGVyID0gQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGRv
bUpJVC0+Z2V0dGVyKCksIGRvbUpJVC0+c2V0dGVyKCksIGRvbUpJVCk7CisgICAgICAgIHB1dERp
cmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImN1c3Rv
bUdldHRlciIpLCBjdXN0b21HZXR0ZXJTZXR0ZXIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3Ip
OworICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImVuYWJsZUV4Y2VwdGlvbiIpLCAwLCBmdW5jdGlvbkVu
YWJsZUV4Y2VwdGlvbiwgTm9JbnRyaW5zaWMsIDApOworICAgIH0KKworICAgIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRW5hYmxlRXhjZXB0aW9uKEV4ZWNTdGF0
ZSogZXhlYykKKyAgICB7CisgICAgICAgIGF1dG8qIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8RE9N
SklUR2V0dGVyQ29tcGxleCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICAgICAgaWYgKG9iamVj
dCkKKyAgICAgICAgICAgIG9iamVjdC0+bV9lbmFibGVFeGNlcHRpb24gPSB0cnVlOworICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIH0KKworICAgIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBjdXN0b21HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKKyAgICB7CisgICAgICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxET01KSVROb2Rl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgICAgICBpZiAoIXRoaXNPYmplY3Qp
CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAg
ICAgIGlmIChhdXRvKiBkb21qaXRHZXR0ZXJDb21wbGV4ID0ganNEeW5hbWljQ2FzdDxET01KSVRH
ZXR0ZXJDb21wbGV4Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpKSB7CisgICAgICAgICAg
ICBpZiAoZG9taml0R2V0dGVyQ29tcGxleC0+bV9lbmFibGVFeGNlcHRpb24pCisgICAgICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwg
Y3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJET01KSVRHZXR0ZXJDb21wbGV4IHNsb3cg
Y2FsbCBleGNlcHRpb24iKSkpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKHRoaXNPYmplY3QtPnZhbHVlKCkpKTsKKyAgICB9CisKKyAgICBib29s
IG1fZW5hYmxlRXhjZXB0aW9uIHsgZmFsc2UgfTsKK307CisKIGNvbnN0IENsYXNzSW5mbyBFbGVt
ZW50OjpzX2luZm8gPSB7ICJFbGVtZW50IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShFbGVtZW50KSB9OwogY29uc3QgQ2xhc3NJbmZvIE1hc3F1ZXJhZGVyOjpzX2luZm8g
PSB7ICJNYXNxdWVyYWRlciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
TWFzcXVlcmFkZXIpIH07CiBjb25zdCBDbGFzc0luZm8gUm9vdDo6c19pbmZvID0geyAiUm9vdCIs
ICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoUm9vdCkgfTsKQEAgLTY3Myw2
ICs3ODksNyBAQCBjb25zdCBDbGFzc0luZm8gSW1wdXJlR2V0dGVyOjpzX2luZm8gPSB7ICJJbXB1
cmVHZXR0ZXIiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVAogY29uc3QgQ2xhc3NJbmZvIEN1c3Rv
bUdldHRlcjo6c19pbmZvID0geyAiQ3VzdG9tR2V0dGVyIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JF
QVRFX01FVEhPRF9UQUJMRShDdXN0b21HZXR0ZXIpIH07CiBjb25zdCBDbGFzc0luZm8gRE9NSklU
Tm9kZTo6c19pbmZvID0geyAiRE9NSklUTm9kZSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9N
RVRIT0RfVEFCTEUoRE9NSklUTm9kZSkgfTsKIGNvbnN0IENsYXNzSW5mbyBET01KSVRHZXR0ZXI6
OnNfaW5mbyA9IHsgIkRPTUpJVEdldHRlciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoRE9NSklUR2V0dGVyKSB9OworY29uc3QgQ2xhc3NJbmZvIERPTUpJVEdldHRlckNv
bXBsZXg6OnNfaW5mbyA9IHsgIkRPTUpJVEdldHRlckNvbXBsZXgiLCAmQmFzZTo6c19pbmZvLCAw
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKERPTUpJVEdldHRlckNvbXBsZXgpIH07CiBjb25zdCBDbGFz
c0luZm8gUnVudGltZUFycmF5OjpzX2luZm8gPSB7ICJSdW50aW1lQXJyYXkiLCAmQmFzZTo6c19p
bmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFJ1bnRpbWVBcnJheSkgfTsKIGNvbnN0IENsYXNz
SW5mbyBTaW1wbGVPYmplY3Q6OnNfaW5mbyA9IHsgIlNpbXBsZU9iamVjdCIsICZCYXNlOjpzX2lu
Zm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoU2ltcGxlT2JqZWN0KSB9Owogc3RhdGljIGJvb2wg
dGVzdDI2MkFzeW5jUGFzc2VkIHsgZmFsc2UgfTsKQEAgLTcwMyw2ICs4MjAsNyBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUltcHVyZUdldHRlcihF
eGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
Q3JlYXRlQ3VzdG9tR2V0dGVyT2JqZWN0KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVET01KSVROb2RlT2JqZWN0KEV4ZWNTdGF0
ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVE
T01KSVRHZXR0ZXJPYmplY3QoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZURPTUpJVEdldHRlckNvbXBsZXhPYmplY3QoRXhlY1N0
YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0
ZUJ1aWx0aW4oRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkNyZWF0ZUdsb2JhbE9iamVjdChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0SW1wdXJlR2V0dGVyRGVsZWdhdGUoRXhl
Y1N0YXRlKik7CkBAIC05OTAsNiArMTEwOCw3IEBAIGNsYXNzIEdsb2JhbE9iamVjdCA6IHB1Ymxp
YyBKU0dsb2JhbE9iamVjdCB7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiY3JlYXRlQ3VzdG9t
R2V0dGVyT2JqZWN0IiwgZnVuY3Rpb25DcmVhdGVDdXN0b21HZXR0ZXJPYmplY3QsIDApOwogICAg
ICAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZURPTUpJVE5vZGVPYmplY3QiLCBmdW5jdGlvbkNy
ZWF0ZURPTUpJVE5vZGVPYmplY3QsIDApOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0
ZURPTUpJVEdldHRlck9iamVjdCIsIGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0LCAw
KTsKKyAgICAgICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVET01KSVRHZXR0ZXJDb21wbGV4T2Jq
ZWN0IiwgZnVuY3Rpb25DcmVhdGVET01KSVRHZXR0ZXJDb21wbGV4T2JqZWN0LCAwKTsKICAgICAg
ICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVCdWlsdGluIiwgZnVuY3Rpb25DcmVhdGVCdWlsdGlu
LCAyKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVHbG9iYWxPYmplY3QiLCBmdW5j
dGlvbkNyZWF0ZUdsb2JhbE9iamVjdCwgMCk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAic2V0
SW1wdXJlR2V0dGVyRGVsZWdhdGUiLCBmdW5jdGlvblNldEltcHVyZUdldHRlckRlbGVnYXRlLCAy
KTsKQEAgLTE1MTEsNiArMTYzMCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25DcmVhdGVET01KSVRHZXR0ZXJDb21wbGV4T2JqZWN0KEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IERPTUpJVEdldHRlckNvbXBsZXg6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgp
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGpzTnVsbCgpKTsKKyAgICBET01KSVRHZXR0
ZXJDb21wbGV4KiByZXN1bHQgPSBET01KSVRHZXR0ZXJDb21wbGV4OjpjcmVhdGUoZXhlYy0+dm0o
KSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzdHJ1Y3R1cmUpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblNldEltcHVyZUdldHRlckRlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAg
ICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bWppdC9ET01KSVRIZWxwZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSGVscGVy
cy5oCmluZGV4IGRiZTUzNjVmODZmZWNkMWJjMmU3Mjc2MTNmNzU2MDViMTZmMzgyNTIuLjE4MDZi
MmFmYTFjNDcxYzAzMDQ2MzBiODAzOGYwMzIzZjZlMzYxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbWppdC9ET01KSVRIZWxwZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0
L0RPTUpJVEhlbHBlcnMuaApAQCAtNTksNyArNTksNyBAQCB2b2lkIHRyeUxvb2tVcFdyYXBwZXJD
YWNoZShDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZmFpbHVyZUNh
cwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBXcmFwcGVkVHlwZSwgdHlwZW5hbWUgVG9KU0Z1bmN0
aW9uPgotdm9pZCB0b1dyYXBwZXIoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEpTQzo6RE9NSklU
OjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMsIEdQUlJlZyB3cmFwcGVkLCBHUFJSZWcgZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlUmVncyByZXN1bHQsIFRvSlNGdW5jdGlvbiBmdW5jdGlvbiwgSlNDOjpK
U1ZhbHVlIGdsb2JhbE9iamVjdENvbnN0YW50KQordm9pZCB0b1dyYXBwZXIoQ0NhbGxIZWxwZXJz
JiBqaXQsIEpTQzo6RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMsIEdQUlJlZyB3cmFw
cGVkLCBHUFJSZWcgZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlUmVncyByZXN1bHQsIFRvSlNGdW5jdGlv
biBmdW5jdGlvbiwgSlNDOjpKU1ZhbHVlIGdsb2JhbE9iamVjdENvbnN0YW50KQogewogICAgIEFT
U0VSVCh3cmFwcGVkICE9IHJlc3VsdC5wYXlsb2FkR1BSKCkpOwogICAgIEFTU0VSVChnbG9iYWxP
YmplY3QgIT0gcmVzdWx0LnBheWxvYWRHUFIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVE
T01KSVQuY3BwCmluZGV4IGI1MGQyNGU5YTMzYzVhM2ViNzhiOGI3MTUyZDgzODNiZWY3ZGQxMzUu
LmQ4ZjU5MmM2NGFmMWI0MmNkYjhhZWQ4NGY4Mzc1NmE1YzgyZjFhNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbWppdC9KU05vZGVET01KSVQuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyBSZWY8RE9N
SklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gY3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2VzcyhwdHJk
aWZmX3Qgb2ZmCiB7CiAgICAgUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IHBhdGNocG9p
bnQgPSBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50OjpjcmVhdGUoKTsKICAgICBwYXRjaHBvaW50
LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOwotICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRv
cihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYg
cGFyYW1zKSB7CisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMm
IGppdCwgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgSlNWYWx1
ZVJlZ3MgcmVzdWx0ID0gcGFyYW1zWzBdLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEdQUlJlZyBn
bG9iYWxPYmplY3QgPSBwYXJhbXNbMV0uZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBub2RlID0gcGFy
YW1zWzJdLmdwcigpOwpAQCAtODQsNyArODQsNyBAQCBzdGF0aWMgUmVmPERPTUpJVDo6Q2FsbERP
TVBhdGNocG9pbnQ+IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3MocHRyZGlmZl90IG9mZgog
c3RhdGljIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IGNoZWNrTm9kZSgpCiB7CiAgICAgUmVmPERP
TUpJVDo6UGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IERPTUpJVDo6UGF0Y2hwb2ludDo6Y3JlYXRl
KCk7Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKKyAgICBwYXRjaHBvaW50
LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBET01KSVQ6OlBhdGNocG9pbnRQ
YXJhbXMmIHBhcmFtcykgewogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGZhaWx1cmVD
YXNlczsKICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChET01KSVRIZWxwZXJzOjpicmFuY2hJ
Zk5vdE5vZGUoaml0LCBwYXJhbXNbMF0uZ3ByKCkpKTsKICAgICAgICAgcmV0dXJuIGZhaWx1cmVD
YXNlczsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4g
Tm9kZU5vZGVUeXBlRE9NSklUOjpjYWxsRE9NKCkKIHsKICAgICBSZWY8RE9NSklUOjpDYWxsRE9N
UGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ6OmNyZWF0
ZSgpOwogICAgIHBhdGNocG9pbnQtPnJlcXVpcmVHbG9iYWxPYmplY3QgPSBmYWxzZTsKLSAgICBw
YXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBET01K
SVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykgeworICAgIHBhdGNocG9pbnQtPnNldEdlbmVy
YXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFy
YW1zKSB7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdCA9IHBhcmFtc1swXS5qc1ZhbHVlUmVn
cygpOwogICAgICAgICBHUFJSZWcgbm9kZSA9IHBhcmFtc1sxXS5ncHIoKTsKICAgICAgICAgaml0
LmxvYWQ4KENDYWxsSGVscGVyczo6QWRkcmVzcyhub2RlLCBKU0M6OkpTQ2VsbDo6dHlwZUluZm9U
eXBlT2Zmc2V0KCkpLCByZXN1bHQucGF5bG9hZEdQUigpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
Q2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2I0ZmZjZWY3NWJmZTkwZDUwYmFi
NzQzYzA1ZDY5ZTdhODdhYzc3NC4uNjRlY2M0ZGY5MzUzOTNjMDc0YmZjNzY1MzIxNzc3MmIzMzg1
MWQ0ZSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMSBAQAorMjAxNi0xMC0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbRE9NSklUXSBVc2UgRE9NSklUOjpQYXRjaHBvaW50
IGluIElDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjMyMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHN0cmVzcy9kb21qaXQtZXhjZXB0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToK
KyAgICAgICAgKGFjY2Vzcyk6CisgICAgICAgICogc3RyZXNzL2RvbWppdC1nZXR0ZXItY29tcGxl
eC13aXRoLWluY29ycmVjdC1vYmplY3QuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cp
OgorICAgICAgICAoYWNjZXNzKToKKyAgICAgICAgKGkuc2hvdWxkVGhyb3cpOgorICAgICAgICAq
IHN0cmVzcy9kb21qaXQtZ2V0dGVyLWNvbXBsZXguanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxk
QmUpOgorICAgICAgICAoYWNjZXNzKToKKwogMjAxNi0xMC0xNSAgU2FhbSBCYXJhdGkgIDxzYmFy
YXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBBc3NlcnRpb24gZmFpbGVkIHVuZGVyIG9wZXJhdGlv
blRvTG93ZXJDYXNlIHdpdGggYSByb3BlIHdpdGggemVybyBsZW5ndGgKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL2RvbWppdC1leGNlcHRpb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9kb21qaXQt
ZXhjZXB0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5YWNiMjJiYzY3OGJkZWUwZmUyN2UxZDU1YTRhNWU0
ODk0YTc0NTEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kb21qaXQtZXhjZXB0
aW9uLmpzCkBAIC0wLDAgKzEsNjcgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0
ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBiYWQgdmFsdWU6ICR7U3RyaW5nKGFjdHVhbCl9YCk7Cit9CisKK2Z1bmN0aW9uIHNob3Vs
ZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNl
OworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJv
ciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3Nh
Z2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9
YCk7Cit9CisoZnVuY3Rpb24gKCkgeworICAgIGxldCBkb21qaXQgPSBjcmVhdGVET01KSVRHZXR0
ZXJDb21wbGV4T2JqZWN0KCk7CisgICAgZnVuY3Rpb24gYWNjZXNzKG9iamVjdCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBvYmplY3QuY3VzdG9tR2V0dGVyOworICAgIH0KKyAgICBub0lubGluZShh
Y2Nlc3MpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAgICAgIHNob3Vs
ZEJlKGFjY2Vzcyhkb21qaXQpLCA0Mik7CisgICAgZG9taml0LmVuYWJsZUV4Y2VwdGlvbigpOwor
ICAgIHNob3VsZFRocm93KCgpID0+IGFjY2Vzcyhkb21qaXQpLCBgRXJyb3I6IERPTUpJVEdldHRl
ckNvbXBsZXggc2xvdyBjYWxsIGV4Y2VwdGlvbmApOworfSgpKTsKKyhmdW5jdGlvbiAoKSB7Cisg
ICAgbGV0IGRvbWppdCA9IGNyZWF0ZURPTUpJVEdldHRlckNvbXBsZXhPYmplY3QoKTsKKyAgICBm
dW5jdGlvbiBhY2Nlc3Mob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9iamVjdC5jdXN0
b21HZXR0ZXI7CisgICAgfQorICAgIG5vSW5saW5lKGFjY2Vzcyk7CisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxZTI7ICsraSkKKyAgICAgICAgc2hvdWxkQmUoYWNjZXNzKGRvbWppdCksIDQyKTsK
KyAgICBkb21qaXQuZW5hYmxlRXhjZXB0aW9uKCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gYWNj
ZXNzKGRvbWppdCksIGBFcnJvcjogRE9NSklUR2V0dGVyQ29tcGxleCBzbG93IGNhbGwgZXhjZXB0
aW9uYCk7Cit9KCkpOworKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgZG9taml0ID0gY3JlYXRlRE9N
SklUR2V0dGVyQ29tcGxleE9iamVjdCgpOworICAgIGZ1bmN0aW9uIGFjY2VzcyhvYmplY3QpCisg
ICAgeworICAgICAgICByZXR1cm4gb2JqZWN0LmN1c3RvbUdldHRlcjsKKyAgICB9CisgICAgbm9J
bmxpbmUoYWNjZXNzKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwOyArK2kpCisgICAgICAg
IHNob3VsZEJlKGFjY2Vzcyhkb21qaXQpLCA0Mik7CisgICAgZG9taml0LmVuYWJsZUV4Y2VwdGlv
bigpOworICAgIHNob3VsZFRocm93KCgpID0+IGFjY2Vzcyhkb21qaXQpLCBgRXJyb3I6IERPTUpJ
VEdldHRlckNvbXBsZXggc2xvdyBjYWxsIGV4Y2VwdGlvbmApOworfSgpKTsKKyhmdW5jdGlvbiAo
KSB7CisgICAgbGV0IGRvbWppdCA9IGNyZWF0ZURPTUpJVEdldHRlckNvbXBsZXhPYmplY3QoKTsK
KyAgICBmdW5jdGlvbiBhY2Nlc3Mob2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9iamVj
dC5jdXN0b21HZXR0ZXI7CisgICAgfQorICAgIG5vSW5saW5lKGFjY2Vzcyk7CisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDsgKytpKQorICAgICAgICBzaG91bGRCZShhY2Nlc3MoZG9taml0KSwg
NDIpOworICAgIGRvbWppdC5lbmFibGVFeGNlcHRpb24oKTsKKyAgICBzaG91bGRUaHJvdygoKSA9
PiBhY2Nlc3MoZG9taml0KSwgYEVycm9yOiBET01KSVRHZXR0ZXJDb21wbGV4IHNsb3cgY2FsbCBl
eGNlcHRpb25gKTsKK30oKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0
dGVyLWNvbXBsZXgtd2l0aC1pbmNvcnJlY3Qtb2JqZWN0LmpzIGIvSlNUZXN0cy9zdHJlc3MvZG9t
aml0LWdldHRlci1jb21wbGV4LXdpdGgtaW5jb3JyZWN0LW9iamVjdC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
NGI4MGNjZDg4NGFjMzhkMDQzYmU2MjA4Y2I5OGU3YzIwYWY2YTMwCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvZG9taml0LWdldHRlci1jb21wbGV4LXdpdGgtaW5jb3JyZWN0LW9i
amVjdC5qcwpAQCAtMCwwICsxLDI4IEBACitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJv
ck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3Ig
PSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAg
ICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24n
KTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCit2YXIgY29t
cGxleCA9IGNyZWF0ZURPTUpJVEdldHRlckNvbXBsZXhPYmplY3QoKTsKK3ZhciBvYmplY3QgPSB7
fTsKK29iamVjdC5fX3Byb3RvX18gPSBjb21wbGV4OworZnVuY3Rpb24gYWNjZXNzKG9iamVjdCkK
K3sKKyAgICByZXR1cm4gb2JqZWN0LmN1c3RvbUdldHRlcjsKK30KK25vSW5saW5lKGFjY2Vzcyk7
Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgc2hvdWxkVGhyb3coKCkgPT4g
eworICAgICAgICBhY2Nlc3Mob2JqZWN0KTsKKyAgICB9LCBgVHlwZUVycm9yOiBUeXBlIGVycm9y
YCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLWNvbXBsZXgu
anMgYi9KU1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLWNvbXBsZXguanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTk1ZGU3ZTUyYjA2ZWYzYjI0NDc0NWRiN2M1YjhlN2NkZTY2MDAxNQotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL2RvbWppdC1nZXR0ZXItY29tcGxleC5qcwpAQCAtMCwwICsxLDE0
IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiAke1N0
cmluZyhhY3R1YWwpfWApOworfQorCit2YXIgY29tcGxleCA9IGNyZWF0ZURPTUpJVEdldHRlckNv
bXBsZXhPYmplY3QoKTsKK2Z1bmN0aW9uIGFjY2Vzcyhjb21wbGV4KQoreworICAgIHJldHVybiBj
b21wbGV4LmN1c3RvbUdldHRlcjsKK30KK25vSW5saW5lKGFjY2Vzcyk7Citmb3IgKHZhciBpID0g
MDsgaSA8IDFlNDsgKytpKSB7CisgICAgc2hvdWxkQmUoYWNjZXNzKGNvbXBsZXgpLCA0Mik7Cit9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291861</attachid>
            <date>2016-10-17 13:26:33 -0700</date>
            <delta_ts>2016-10-17 13:26:33 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-163223-20161017132301.patch</filename>
            <type>text/plain</type>
            <size>70435</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MTdkNDg2M2MwNjI0MzBiYjUxMGFmZjIxNjQ5ZTM4YzQ0NzAzZGVjLi5kYWRhZDRkYWRmZmM0MjRh
YzgxMGVmMzNmYzI1NGQ5YzVhMDY3Y2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NCBAQAorMjAxNi0xMC0xNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRE9NSklUXSBVc2UgRE9NSklUOjpQYXRjaHBvaW50IGluIElDCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyMjMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNo
IHVzZXMgRE9NSklUOjpQYXRjaHBvaW50IHRvIGlubGluZSBET00gYWNjZXNzZXMgZXZlbiBpbiBJ
QyEKKyAgICAgICAgSXQgaXMgdXNlZnVsIGZvciBCYXNlbGluZSBKSVQgY2FzZXMgYW5kIEdldEJ5
SWQgY2FzZXMgaW4gREZHIGFuZCBGVEwuCisgICAgICAgIEluIEFjY2Vzc0Nhc2UsIHdlIGNvbnN0
cnVjdCB0aGUgZW52aXJvbm1lbnQgdGhhdCBhbGxvd3MgRE9NSklUOjpQYXRjaHBvaW50CisgICAg
ICAgIHRvIGVtaXQgY29kZSBhbmQgbWFrZSBET01KSVQgYWNjZXNzb3JzIGlubGluZWQgaW4gSUMu
CisKKyAgICAgICAgVG8gYWxsb3cgRE9NSklUOjpQYXRjaHBvaW50IHRvIGVtaXQgY29kZSwgd2Ug
Y3JlYXRlIGEgbWVjaGFuaXNtIHRvIGVtaXQgY2FsbHMKKyAgICAgICAgcmVxdWlyZWQgaW4gRE9N
SklUOjpQYXRjaHBvaW50LiBUaGlzIHN5c3RlbSBpcyB1c2VmdWwgd2hlbiB3ZSBjcmVhdGUgdGhl
IHN1cGVyLQorICAgICAgICBwb2x5bW9ycGhpYyBzdXBwb3J0WzFdIGxhdGVyLiBBbmQgaW5saW5p
bmcgbWVjaGFuaXNtIGlzIHVzZWZ1bCBldmVuIGFmdGVyCisgICAgICAgIGludHJvZHVjaW5nIHN1
cGVyLXBvbHltb3JwaGljIHN1cHBvcnQgc2luY2UgaXQgY2FuIHdvcmsgZXZlbiBhZnRlciB3ZSBm
aXJlIHRoZQorICAgICAgICB3YXRjaHBvaW50IGZvciBzdXBlci1wb2x5bW9ycGhpYyBoYW5kbGlu
Zy4KKworICAgICAgICBUaGlzIHBhdGNoIGltcHJvdmVzIERyb21hZW8gZG9tLXRyYXZlcnNlIDgl
ICgyNjMuOTUgcnVucy9zIHYucy4gMjQ0LjA3IHJ1bnMvcykuCisKKyAgICAgICAgWzFdOiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjI2CisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0RPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50
UGFyYW1zLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlNsb3dQYXRoQ2FsbEdlbmVyYXRvcldp
dGhBcmd1bWVudHM6OlNsb3dQYXRoQ2FsbEdlbmVyYXRvcldpdGhBcmd1bWVudHMpOgorICAgICAg
ICAoSlNDOjpTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRoQXJndW1lbnRzOjpnZW5lcmF0ZUltcGwp
OgorICAgICAgICAoSlNDOjpET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtczo6ZW1pdFNs
b3dQYXRoQ2FsbHMpOgorICAgICAgICAqIGJ5dGVjb2RlL0RPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBv
aW50UGFyYW1zLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRE9N
SklUUGF0Y2hwb2ludFBhcmFtcy5oLgorICAgICAgICAoSlNDOjpET01KSVRBY2Nlc3NDYXNlUGF0
Y2hwb2ludFBhcmFtczo6RE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMpOgorICAgICAg
ICAoSlNDOjpET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtczo6U2xvd1BhdGhDYWxsR2Vu
ZXJhdG9yOjp+U2xvd1BhdGhDYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5
bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6
bGl2ZVJlZ2lzdGVyc0ZvckNhbGwpOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3Rh
dGU6OmxpdmVSZWdpc3RlcnNUb1ByZXNlcnZlQXRFeGNlcHRpb25IYW5kbGluZ0NhbGxTaXRlKToK
KyAgICAgICAgKEpTQzo6Y2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkFjY2Vz
c0dlbmVyYXRpb25TdGF0ZTo6Y2FsY3VsYXRlTGl2ZVJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRp
b25IYW5kbGluZyk6CisgICAgICAgIChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cmVzdG9y
ZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsV2l0aFRocm93bkV4Y2VwdGlvbik6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6cmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9t
U3RhY2tGb3JDYWxsKToKKyAgICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpjYWxs
U2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmdPck9yaWdpbmFsKToKKyAgICAgICAgKEpTQzo6
QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpvcmlnaW5hbEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAoSlNDOjpBY2Nlc3ND
YXNlOjplbWl0RE9NSklUR2V0dGVyKToKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6
OnJlZ2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNl
cnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRl
Y29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0aW9u
U3RhdGU6OlNwaWxsU3RhdGU6OmlzRW1wdHkpOgorICAgICAgICAoSlNDOjpBY2Nlc3NHZW5lcmF0
aW9uU3RhdGU6OnNldFNwaWxsU3RhdGVGb3JKU0dldHRlclNldHRlcik6CisgICAgICAgIChKU0M6
OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6c3BpbGxTdGF0ZUZvckpTR2V0dGVyU2V0dGVyKToKKyAg
ICAgICAgKEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpsaXZlUmVnaXN0ZXJzRm9yQ2FsbCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6bnVtYmVyT2ZT
dGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6QWNjZXNzR2VuZXJhdGlvblN0YXRlOjpsaXZlUmVnaXN0ZXJzVG9QcmVzZXJ2ZUF0RXhj
ZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZSk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0RPTUpJ
VFBhdGNocG9pbnRQYXJhbXMuY3BwOgorICAgICAgICAqIGRmZy9ERkdET01KSVRQYXRjaHBvaW50
UGFyYW1zLmg6CisgICAgICAgICogZG9taml0L0RPTUpJVFBhdGNocG9pbnQuaDoKKyAgICAgICAg
KiBkb21qaXQvRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oOgorICAgICAgICAoSlNDOjpET01KSVQ6
OlBhdGNocG9pbnRQYXJhbXM6OmFkZFNsb3dQYXRoQ2FsbCk6CisgICAgICAgICogZnRsL0ZUTERP
TUpJVFBhdGNocG9pbnRQYXJhbXMuY3BwOgorICAgICAgICAqIGZ0bC9GVExET01KSVRQYXRjaHBv
aW50UGFyYW1zLmg6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKFdURjo6RE9NSklUTm9k
ZTo6Y2hlY2tET01KSVROb2RlKToKKyAgICAgICAgKFdURjo6RE9NSklUR2V0dGVyQ29tcGxleDo6
RE9NSklUR2V0dGVyQ29tcGxleCk6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlckNvbXBsZXg6
OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlckNvbXBsZXg6OmNy
ZWF0ZSk6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlckNvbXBsZXg6OkRPTUpJVE5vZGVET01K
SVQ6OkRPTUpJVE5vZGVET01KSVQpOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXJDb21wbGV4
Ojpkb21KSVROb2RlR2V0dGVyU2V0dGVyKToKKyAgICAgICAgKFdURjo6RE9NSklUR2V0dGVyQ29t
cGxleDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXJDb21wbGV4
OjpmdW5jdGlvbkVuYWJsZUV4Y2VwdGlvbik6CisgICAgICAgIChXVEY6OkRPTUpJVEdldHRlckNv
bXBsZXg6OmN1c3RvbUdldHRlcik6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyQ29tcGxleE9iamVjdCk6
CisKIDIwMTYtMTAtMTcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IFVzZSB0aGUgcmVqZWN0KCkgaGVscGVyIGZ1bmN0aW9uIGZvciBjb25kaXRpb25hbGx5IHRocm93
aW5nIFR5cGVFcnJvcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTczNDJiYTA3ZTdmOGUzMjg3ODUyMGE3M2I0
MjlhZThlYWI3Y2VlMy4uYjlkNzQ5YjQyOGZjMmQwODI5NWVjNGYzMGIxNTk5ODlkNGZmYjZlZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE2LTEwLTE3ICBZdXN1a2UgU3V6dWtpICA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01KSVRdIFVzZSBET01KSVQ6OlBh
dGNocG9pbnQgaW4gSUMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MzIyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1ha2UgRE9NSklUUGF0Y2hwb2ludFBhcmFtcyBub24tY29uc3QuCisKKyAgICAgICAg
KiBkb21qaXQvRE9NSklUSGVscGVycy5oOgorICAgICAgICAoV2ViQ29yZTo6RE9NSklUSGVscGVy
czo6dG9XcmFwcGVyKToKKyAgICAgICAgKiBkb21qaXQvSlNOb2RlRE9NSklULmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3MpOgorICAgICAgICAoV2Vi
Q29yZTo6Y2hlY2tOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVOb2RlVHlwZURPTUpJVDo6
Y2FsbERPTSk6CisKIDIwMTYtMTAtMTcgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlA
c29ueS5jb20+CiAKICAgICAgICAgcHJlcHJvY2Vzc29yLnBtOiBjbC5leGUgb3V0cHV0cyBwcm9j
ZXNzaW5nIGZpbGVuYW1lcyBpZiBXaW5kb3dzIFBlcmwgaXMgdXNlZApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IDBmZGI4ZGRjZWFmNzM2ZDgzZmRiNTA4NDA3M2ZmNzM0OTcz
YmVkODQuLjRmYjg1NmQ1YWRjM2EyYjMwZTQxNmI5ZDE0ZTdmMDNlZDM4MWZhNjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIwNCw2ICsyMDQsNyBAQCBzZXQoSmF2YVNj
cmlwdENvcmVfU09VUkNFUwogICAgIGJ5dGVjb2RlL0NvbXBsZXhHZXRTdGF0dXMuY3BwCiAgICAg
Ynl0ZWNvZGUvRGF0YUZvcm1hdC5jcHAKICAgICBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAK
KyAgICBieXRlY29kZS9ET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHAKICAgICBi
eXRlY29kZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCiAgICAgYnl0ZWNvZGUvRGVm
ZXJyZWRTb3VyY2VEdW1wLmNwcAogICAgIGJ5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVlOGM3ZjliZjMwOWU4OWY3OTUyMWY0MTRk
MjYyN2I3YWIzM2FlYzIuLmJjZWNhYzcwZjg4ZTBiNDI2MzUzNzUwNTQzZjI1MjYyNjk3ZDY4MWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTE0LDYgKzIxMTQsOCBAQAogCQlF
MzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTQxQjdFOEI3QzAwODRG
MzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLzsgfTsKIAkJRTM5REE0QTcxQjdFOEI3QzAwODRG
MzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0E0
MjE0MzFENkY1ODkzMDAwN0M2MTcgLyogUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBNDIxNDIxRDZGNTg4
RjAwMDdDNjE3IC8qIFByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFM0JGRDBCQjFEQUY4MDg3MDA2NURF
QTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCRkQwQjkxREFGODA3QzAwNjVERUEy
IC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmNwcCAqLzsgfTsKKwkJRTNCRkQw
QkMxREFGODA4RTAwNjVERUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0JGRDBCQTFE
QUY4MDdDMDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaCAqLzsg
fTsKIAkJRTNDMDhFM0MxREE0MUI4MTAwMzk0NzhGIC8qIERPTUpJVFBhdGNocG9pbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzA4RTNCMURBNDFC
N0IwMDM5NDc4RiAvKiBET01KSVRQYXRjaHBvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNEMjM5QzgxQjgyOUMxQzAwQkJFRjY3IC8qIEpT
TW9kdWxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1l
bnQuY3BwICovOyB9OwogCQlFM0QyMzlDOTFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZp
cm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDQyMyw2ICs0NDI1
LDggQEAKIAkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8q
IEpTTW9kdWxlUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9k
dWxlUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQTQyMTQyMUQ2RjU4
OEYwMDA3QzYxNyAvKiBQcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNCRkQwQjkxREFGODA3QzAwNjVERUEyIC8qIERPTUpJVEFj
Y2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNCRkQwQkExREFGODA3QzAwNjVERUEyIC8qIERPTUpJVEFj
Y2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzQzA4RTNCMURBNDFCN0IwMDM5NDc4RiAvKiBET01KSVRQYXRjaHBvaW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVFBhdGNocG9pbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNDQjFFMjQxREE3NTQwQTAwRkExRTU2IC8q
IERPTUpJVFNsb3dQYXRoQ2FsbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NSklUU2xvd1BhdGhDYWxscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0Qy
MzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY4MjQsNiArNjgyOCw4IEBACiAJCQkJMEYwQjgz
QTUxNEJDRjUwNDAwODg1QjRGIC8qIENvZGVUeXBlLmggKi8sCiAJCQkJMEY2RkM3NEUxOTYxMTBB
ODAwRTFEMDJEIC8qIENvbXBsZXhHZXRTdGF0dXMuY3BwICovLAogCQkJCTBGNkZDNzRGMTk2MTEw
QTgwMEUxRDAyRCAvKiBDb21wbGV4R2V0U3RhdHVzLmggKi8sCisJCQkJRTNCRkQwQjkxREFGODA3
QzAwNjVERUEyIC8qIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmNwcCAqLywKKwkJ
CQlFM0JGRDBCQTFEQUY4MDdDMDA2NURFQTIgLyogRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQ
YXJhbXMuaCAqLywKIAkJCQk2MkUzRDVFRjFCOEQwQjczMDBCODY4QkIgLyogRGF0YUZvcm1hdC5j
cHAgKi8sCiAJCQkJMEY0MjZBNEExNDYwQ0Q2QjAwMTMxRjhGIC8qIERhdGFGb3JtYXQuaCAqLywK
IAkJCQkwRkM3MTJEQzE3Q0Q4Nzc4MDA4Q0M5M0MgLyogRGVmZXJyZWRDb21waWxhdGlvbkNhbGxi
YWNrLmNwcCAqLywKQEAgLTc1MjYsNiArNzUzMiw3IEBACiAJCQkJMEY4MzY0QjcxNjRCMEMxMTAw
NTMzMjlBIC8qIERGR0JyYW5jaERpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlE
QzUxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0J5dGVDb2RlUGFyc2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjI1NkMzNjE2MjdCMEFEMDA3RjI3ODMgLyogREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xv
d1BhdGhHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzQkZEMEJDMURBRjgwOEUwMDY1
REVBMiAvKiBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZCREI5QUQxQUIwRkJDNjAwMEI1N0U1IC8qIERGR0NhbGxDcmVhdGVEaXJlY3RBcmd1
bWVudHNTbG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5NEIxNEMz
Q0QyRjAwN0MzREIxIC8qIERGR0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZG
RkM5NTgxNEVGOTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggaW4gSGVhZGVycyAqLywKQEAg
LTk0MjIsNiArOTQyOSw3IEBACiAJCQkJRTM1RTAzNUYxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTMyNDM4
QjE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE1MEU0QjYxMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1l
QWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTNCRkQwQkIxREFGODA4NzAwNjVERUEyIC8q
IERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE1OTNDRjgyMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMTQ3RjM5Q0YxMDdFQzM3NjAwNDI3QTQ4IC8qIEludGVybmFsRnVuY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyOUQ3RDQwRUQyMTI4MjAwQjg5NjE5IC8qIEludGVy
cHJldGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0RPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFt
cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2EzZjhiYTNiZGNhNDc3NjVmY2Y4Mjk0ZWQ0MmZjNTFhZjZjZTgx
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ET01K
SVRBY2Nlc3NDYXNlUGF0Y2hwb2ludFBhcmFtcy5jcHAKQEAgLTAsMCArMSwxMjcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMuaCIKKworI2lu
Y2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJQb2x5bW9ycGhpY0FjY2Vzcy5oIgorI2lu
Y2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCisKKyNpZiBFTkFCTEUoSklUKQorCituYW1lc3Bh
Y2UgSlNDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgSnVtcFR5cGUsIHR5cGVuYW1lIEZ1bmN0aW9u
VHlwZSwgdHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgorY2xhc3Mg
U2xvd1BhdGhDYWxsR2VuZXJhdG9yV2l0aEFyZ3VtZW50cyA6IHB1YmxpYyBET01KSVRBY2Nlc3ND
YXNlUGF0Y2hwb2ludFBhcmFtczo6U2xvd1BhdGhDYWxsR2VuZXJhdG9yIHsKK3B1YmxpYzoKKyAg
ICBTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRoQXJndW1lbnRzKEp1bXBUeXBlIGZyb20sIENDYWxs
SGVscGVyczo6TGFiZWwgdG8sIEZ1bmN0aW9uVHlwZSBmdW5jdGlvbiwgUmVzdWx0VHlwZSByZXN1
bHQsIHN0ZDo6dHVwbGU8QXJndW1lbnRzLi4uPiBhcmd1bWVudHMpCisgICAgICAgIDogbV9mcm9t
KGZyb20pCisgICAgICAgICwgbV90byh0bykKKyAgICAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9u
KQorICAgICAgICAsIG1fcmVzdWx0KHJlc3VsdCkKKyAgICAgICAgLCBtX2FyZ3VtZW50cyhhcmd1
bWVudHMpCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlPHNpemVfdC4uLiBBcmd1bWVudHNJ
bmRleD4KKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGdlbmVyYXRlSW1wbChWTSYgdm0sIEFj
Y2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzQnlQYXRjaHBvaW50LCBDQ2FsbEhlbHBlcnMmIGppdCwgc3RkOjppbmRleF9zZXF1ZW5jZTxB
cmd1bWVudHNJbmRleC4uLj4pCisgICAgeworICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
IGV4Y2VwdGlvbnM7CisgICAgICAgIC8vIFdlIHNwaWxsICgxKSB0aGUgdXNlZCByZWdpc3RlcnMg
YnkgSUMgYW5kICgyKSB0aGUgdXNlZCByZWdpc3RlcnMgYnkgRE9NSklUOjpQYXRjaHBvaW50Lgor
ICAgICAgICBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxsU3RhdGUgc3BpbGxTdGF0ZSA9IHN0
YXRlLnByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKHVzZWRSZWdpc3RlcnNCeVBh
dGNocG9pbnQpOworCisgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoc3RhdGUuY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRsaW5n
T3JPcmlnaW5hbCgpLmJpdHMoKSksCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0Zvcihz
dGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQp
KSk7CisKKyAgICAgICAgaml0Lm1ha2VTcGFjZU9uU3RhY2tGb3JDQ2FsbCgpOworCisgICAgICAg
IGppdC5zdG9yZVB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgJnZtLnRvcENhbGxGcmFt
ZSk7CisKKyAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgd2UgZG8gbm90IGNoZWNrIGFueSBB
Uk0gRUFCSSAvIFNINCB0aGluZ3MgaGVyZS4KKyAgICAgICAgLy8gQnV0IGl0IGlzIE9LIGJlY2F1
c2UgYSBjb21waWxlIGVycm9yIGhhcHBlbnMgd2hlbiB5b3UgcGFzcyBKU1ZhbHVlUmVncyBhcyBh
biBhcmd1bWVudC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MzA5OQorICAgICAgICBqaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKHN0
ZDo6Z2V0PEFyZ3VtZW50c0luZGV4PihtX2FyZ3VtZW50cykuLi4pOworCisgICAgICAgIENDYWxs
SGVscGVyczo6Q2FsbCBvcGVyYXRpb25DYWxsID0gaml0LmNhbGwoKTsKKyAgICAgICAgYXV0byBm
dW5jdGlvbiA9IG1fZnVuY3Rpb247CisgICAgICAgIGppdC5hZGRMaW5rVGFzayhbPV0gKExpbmtC
dWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhvcGVyYXRp
b25DYWxsLCBGdW5jdGlvblB0cihmdW5jdGlvbikpOworICAgICAgICB9KTsKKworICAgICAgICBq
aXQuc2V0dXBSZXN1bHRzKG1fcmVzdWx0KTsKKyAgICAgICAgaml0LnJlY2xhaW1TcGFjZU9uU3Rh
Y2tGb3JDQ2FsbCgpOworCisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBub0V4Y2VwdGlvbiA9
IGppdC5lbWl0RXhjZXB0aW9uQ2hlY2soQ0NhbGxIZWxwZXJzOjpJbnZlcnRlZEV4Y2VwdGlvbkNo
ZWNrKTsKKworICAgICAgICBzdGF0ZS5yZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNh
bGxXaXRoVGhyb3duRXhjZXB0aW9uKHNwaWxsU3RhdGUpOworICAgICAgICBleGNlcHRpb25zLmFw
cGVuZChqaXQuanVtcCgpKTsKKworICAgICAgICBub0V4Y2VwdGlvbi5saW5rKCZqaXQpOworICAg
ICAgICBSZWdpc3RlclNldCBkb250UmVzdG9yZTsKKyAgICAgICAgZG9udFJlc3RvcmUuc2V0KG1f
cmVzdWx0KTsKKyAgICAgICAgc3RhdGUucmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JD
YWxsKHNwaWxsU3RhdGUsIGRvbnRSZXN0b3JlKTsKKworICAgICAgICByZXR1cm4gZXhjZXB0aW9u
czsKKyAgICB9CisKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGdlbmVyYXRlKFZNJiB2bSwg
QWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnNCeVBhdGNocG9pbnQsIENDYWxsSGVscGVycyYgaml0KSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgbV9mcm9tLmxpbmsoJmppdCk7CisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qg
ZXhjZXB0aW9ucyA9IGdlbmVyYXRlSW1wbCh2bSwgc3RhdGUsIHVzZWRSZWdpc3RlcnNCeVBhdGNo
cG9pbnQsIGppdCwgc3RkOjptYWtlX2luZGV4X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxzdGQ6
OnR1cGxlPEFyZ3VtZW50cy4uLj4+Ojp2YWx1ZT4oKSk7CisgICAgICAgIGppdC5qdW1wKCkubGlu
a1RvKG1fdG8sICZqaXQpOworICAgICAgICByZXR1cm4gZXhjZXB0aW9uczsKKyAgICB9CisKK3By
b3RlY3RlZDoKKyAgICBKdW1wVHlwZSBtX2Zyb207CisgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBt
X3RvOworICAgIEZ1bmN0aW9uVHlwZSBtX2Z1bmN0aW9uOworICAgIFJlc3VsdFR5cGUgbV9yZXN1
bHQ7CisgICAgc3RkOjp0dXBsZTxBcmd1bWVudHMuLi4+IG1fYXJndW1lbnRzOworfTsKKworI2Rl
ZmluZSBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUyhPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBl
LCAuLi4pIFwKKyAgICB2b2lkIERPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zOjphZGRT
bG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExpc3QgZnJvbSwgQ0NhbGxIZWxwZXJz
JiBqaXQsIE9wZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBSZXN1bHRUeXBlIHJlc3VsdCwgc3RkOjp0
dXBsZTxfX1ZBX0FSR1NfXz4gYXJncykgXAorICAgIHsgXAorICAgICAgICBDQ2FsbEhlbHBlcnM6
OkxhYmVsIHRvID0gaml0LmxhYmVsKCk7IFwKKyAgICAgICAgbV9nZW5lcmF0b3JzLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPFNsb3dQYXRoQ2FsbEdlbmVyYXRvcldpdGhBcmd1bWVudHM8Q0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdCwgT3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwgX19WQV9BUkdTX18+
Pihmcm9tLCB0bywgb3BlcmF0aW9uLCByZXN1bHQsIGFyZ3MpKTsgXAorICAgIH0gXAorCitET01K
SVRfU0xPV19QQVRIX0NBTExTKEpTQ19ERUZJTkVfQ0FMTF9PUEVSQVRJT05TKQorI3VuZGVmIEpT
Q19ERUZJTkVfQ0FMTF9PUEVSQVRJT05TCisKK0NDYWxsSGVscGVyczo6SnVtcExpc3QgRE9NSklU
QWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXM6OmVtaXRTbG93UGF0aENhbGxzKFZNJiB2bSwgQWNj
ZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3Rl
cnNCeVBhdGNocG9pbnQsIENDYWxsSGVscGVycyYgaml0KQoreworICAgIENDYWxsSGVscGVyczo6
SnVtcExpc3QgZXhjZXB0aW9uczsKKyAgICBmb3IgKGF1dG8mIGdlbmVyYXRvciA6IG1fZ2VuZXJh
dG9ycykKKyAgICAgICAgZXhjZXB0aW9ucy5hcHBlbmQoZ2VuZXJhdG9yLT5nZW5lcmF0ZSh2bSwg
c3RhdGUsIHVzZWRSZWdpc3RlcnNCeVBhdGNocG9pbnQsIGppdCkpOworICAgIHJldHVybiBleGNl
cHRpb25zOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0RPTUpJVEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45NThhYmE3NzY3YTYwZTQ5MGY4N2Q3MDkwNDY3MDVjM2JmMjVjOTM0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RPTUpJVEFj
Y2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKEpJVCkKKworI2luY2x1ZGUgIkRPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK3N0cnVjdCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU7CisKK2NsYXNzIERPTUpJ
VEFjY2Vzc0Nhc2VQYXRjaHBvaW50UGFyYW1zIDogcHVibGljIERPTUpJVDo6UGF0Y2hwb2ludFBh
cmFtcyB7CitwdWJsaWM6CisgICAgRE9NSklUQWNjZXNzQ2FzZVBhdGNocG9pbnRQYXJhbXMoVmVj
dG9yPERPTUpJVDo6VmFsdWU+JiYgcmVncywgVmVjdG9yPEdQUlJlZz4mJiBncFNjcmF0Y2gsIFZl
Y3RvcjxGUFJSZWc+JiYgZnBTY3JhdGNoKQorICAgICAgICA6IERPTUpJVDo6UGF0Y2hwb2ludFBh
cmFtcyhXVEZNb3ZlKHJlZ3MpLCBXVEZNb3ZlKGdwU2NyYXRjaCksIFdURk1vdmUoZnBTY3JhdGNo
KSkKKyAgICB7CisgICAgfQorCisgICAgY2xhc3MgU2xvd1BhdGhDYWxsR2VuZXJhdG9yIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgflNsb3dQYXRoQ2FsbEdlbmVyYXRvcigpIHsgfQor
ICAgICAgICB2aXJ0dWFsIENDYWxsSGVscGVyczo6SnVtcExpc3QgZ2VuZXJhdGUoVk0mLCBBY2Nl
c3NHZW5lcmF0aW9uU3RhdGUmLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVyc0J5UGF0
Y2hwb2ludCwgQ0NhbGxIZWxwZXJzJikgPSAwOworICAgIH07CisKKyAgICBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0IGVtaXRTbG93UGF0aENhbGxzKFZNJiwgQWNjZXNzR2VuZXJhdGlvblN0YXRlJiwg
Y29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnNCeVBhdGNocG9pbnQsIENDYWxsSGVscGVy
cyYpOworCitwcml2YXRlOgorI2RlZmluZSBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUyhPcGVy
YXRpb25UeXBlLCBSZXN1bHRUeXBlLCAuLi4pIHZvaWQgYWRkU2xvd1BhdGhDYWxsSW1wbChDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0LCBDQ2FsbEhlbHBlcnMmLCBPcGVyYXRpb25UeXBlLCBSZXN1bHRU
eXBlLCBzdGQ6OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBvdmVycmlkZTsKKyAgICBET01KSVRf
U0xPV19QQVRIX0NBTExTKEpTQ19ERUZJTkVfQ0FMTF9PUEVSQVRJT05TKQorI3VuZGVmIEpTQ19E
RUZJTkVfQ0FMTF9PUEVSQVRJT05TCisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0
aENhbGxHZW5lcmF0b3I+PiBtX2dlbmVyYXRvcnM7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAK
aW5kZXggOWE4YThlNTIwMDk4YTk2YWU2ZGM4NTA5ZjAyZjE1MzFhMDAxMjU2MC4uNTE0ZDVlNjIy
MzNhYTc3OTM1YTQ3NDRiNjliYTZjZmQ4Y2JhODYxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC0zMSw2ICszMSw4
IEBACiAjaW5jbHVkZSAiQmluYXJ5U3dpdGNoLmgiCiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgi
CiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRE9NSklUQWNjZXNzQ2FzZVBhdGNo
cG9pbnRQYXJhbXMuaCIKKyNpbmNsdWRlICJET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oIgogI2lu
Y2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2lu
Y2x1ZGUgIkhlYXAuaCIKQEAgLTcyLDcgKzc0LDI4IEBAIHZvaWQgQWNjZXNzR2VuZXJhdGlvblN0
YXRlOjpzdWNjZWVkKCkKICAgICBzdWNjZXNzLmFwcGVuZChqaXQtPmp1bXAoKSk7CiB9CiAKLXZv
aWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpjYWxjdWxhdGVMaXZlUmVnaXN0ZXJzRm9yQ2FsbEFu
ZEV4Y2VwdGlvbkhhbmRsaW5nKGNvbnN0IFJlZ2lzdGVyU2V0JiBleHRyYSkKK2NvbnN0IFJlZ2lz
dGVyU2V0JiBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OmxpdmVSZWdpc3RlcnNGb3JDYWxsKCkKK3sK
KyAgICBpZiAoIW1fY2FsY3VsYXRlZFJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRpb25IYW5kbGlu
ZykKKyAgICAgICAgY2FsY3VsYXRlTGl2ZVJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRpb25IYW5k
bGluZygpOworICAgIHJldHVybiBtX2xpdmVSZWdpc3RlcnNGb3JDYWxsOworfQorCitjb25zdCBS
ZWdpc3RlclNldCYgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpsaXZlUmVnaXN0ZXJzVG9QcmVzZXJ2
ZUF0RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZSgpCit7CisgICAgaWYgKCFtX2NhbGN1bGF0ZWRS
ZWdpc3RlcnNGb3JDYWxsQW5kRXhjZXB0aW9uSGFuZGxpbmcpCisgICAgICAgIGNhbGN1bGF0ZUxp
dmVSZWdpc3RlcnNGb3JDYWxsQW5kRXhjZXB0aW9uSGFuZGxpbmcoKTsKKyAgICByZXR1cm4gbV9s
aXZlUmVnaXN0ZXJzVG9QcmVzZXJ2ZUF0RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZTsKK30KKwor
c3RhdGljIFJlZ2lzdGVyU2V0IGNhbGxlZVNhdmVSZWdpc3RlcnMoKQoreworICAgIFJlZ2lzdGVy
U2V0IHJlc3VsdCA9IFJlZ2lzdGVyU2V0OjpyZWdpc3RlcnNUb05vdFNhdmVGb3JKU0NhbGwoKTsK
KyAgICByZXN1bHQuZmlsdGVyKFJlZ2lzdGVyU2V0OjpyZWdpc3RlcnNUb05vdFNhdmVGb3JDQ2Fs
bCgpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitjb25zdCBSZWdpc3RlclNldCYgQWNjZXNz
R2VuZXJhdGlvblN0YXRlOjpjYWxjdWxhdGVMaXZlUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlv
bkhhbmRsaW5nKCkKIHsKICAgICBpZiAoIW1fY2FsY3VsYXRlZFJlZ2lzdGVyc0ZvckNhbGxBbmRF
eGNlcHRpb25IYW5kbGluZykgewogICAgICAgICBtX2NhbGN1bGF0ZWRSZWdpc3RlcnNGb3JDYWxs
QW5kRXhjZXB0aW9uSGFuZGxpbmcgPSB0cnVlOwpAQCAtODMsMzUgKzEwNiwyNSBAQCB2b2lkIEFj
Y2Vzc0dlbmVyYXRpb25TdGF0ZTo6Y2FsY3VsYXRlTGl2ZVJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNl
cHRpb25IYW5kbGluZyhjbwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoSklUQ29kZTo6aXNP
cHRpbWl6aW5nSklUKGppdC0+Y29kZUJsb2NrKCktPmppdFR5cGUoKSkpOwogCiAgICAgICAgIG1f
bGl2ZVJlZ2lzdGVyc0ZvckNhbGwgPSBSZWdpc3RlclNldChtX2xpdmVSZWdpc3RlcnNUb1ByZXNl
cnZlQXRFeGNlcHRpb25IYW5kbGluZ0NhbGxTaXRlLCBhbGxvY2F0b3ItPnVzZWRSZWdpc3RlcnMo
KSk7Ci0gICAgICAgIG1fbGl2ZVJlZ2lzdGVyc0ZvckNhbGwubWVyZ2UoZXh0cmEpOwotICAgICAg
ICBtX2xpdmVSZWdpc3RlcnNGb3JDYWxsLmV4Y2x1ZGUoUmVnaXN0ZXJTZXQ6OnJlZ2lzdGVyc1Rv
Tm90U2F2ZUZvckpTQ2FsbCgpKTsKLSAgICAgICAgbV9saXZlUmVnaXN0ZXJzRm9yQ2FsbC5tZXJn
ZShleHRyYSk7CisgICAgICAgIG1fbGl2ZVJlZ2lzdGVyc0ZvckNhbGwuZXhjbHVkZShjYWxsZWVT
YXZlUmVnaXN0ZXJzKCkpOwogICAgIH0KKyAgICByZXR1cm4gbV9saXZlUmVnaXN0ZXJzRm9yQ2Fs
bDsKIH0KIAotdm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnByZXNlcnZlTGl2ZVJlZ2lzdGVy
c1RvU3RhY2tGb3JDYWxsKGNvbnN0IFJlZ2lzdGVyU2V0JiBleHRyYSkKK2F1dG8gQWNjZXNzR2Vu
ZXJhdGlvblN0YXRlOjpwcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbChjb25zdCBS
ZWdpc3RlclNldCYgZXh0cmEpIC0+IFNwaWxsU3RhdGUKIHsKLSAgICBjYWxjdWxhdGVMaXZlUmVn
aXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhhbmRsaW5nKGV4dHJhKTsKKyAgICBSZWdpc3RlclNl
dCBsaXZlUmVnaXN0ZXJzID0gbGl2ZVJlZ2lzdGVyc0ZvckNhbGwoKTsKKyAgICBsaXZlUmVnaXN0
ZXJzLm1lcmdlKGV4dHJhKTsKICAgICAKICAgICB1bnNpZ25lZCBleHRyYVN0YWNrUGFkZGluZyA9
IDA7Ci0gICAgdW5zaWduZWQgbnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2Vy
dmF0aW9uID0gU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2ZVJlZ2lzdGVyc1RvU3Rh
Y2tGb3JDYWxsKCpqaXQsIGxpdmVSZWdpc3RlcnNGb3JDYWxsKCksIGV4dHJhU3RhY2tQYWRkaW5n
KTsKLSAgICBpZiAobV9udW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRp
b24gIT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICBSRUxF
QVNFX0FTU0VSVChudW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24g
PT0gbV9udW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24pOwotICAg
IG1fbnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uID0gbnVtYmVy
T2ZTdGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uOwotfQotCi12b2lkIEFjY2Vz
c0dlbmVyYXRpb25TdGF0ZTo6cmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKGJv
b2wgaXNHZXR0ZXIpCi17Ci0gICAgUmVnaXN0ZXJTZXQgZG9udFJlc3RvcmU7Ci0gICAgaWYgKGlz
R2V0dGVyKSB7Ci0gICAgICAgIC8vIFRoaXMgaXMgdGhlIHJlc3VsdCB2YWx1ZS4gV2UgZG9uJ3Qg
d2FudCB0byBvdmVyd3JpdGUgdGhlIHJlc3VsdCB3aXRoIHdoYXQgd2Ugc3RvcmVkIHRvIHRoZSBz
dGFjay4KLSAgICAgICAgLy8gV2Ugc29tZXRpbWVzIGhhdmUgdG8gc3RvcmUgaXQgdG8gdGhlIHN0
YWNrIGp1c3QgaW4gY2FzZSB3ZSB0aHJvdyBhbiBleGNlcHRpb24gYW5kIG5lZWQgdGhlIG9yaWdp
bmFsIHZhbHVlLgotICAgICAgICBkb250UmVzdG9yZS5zZXQodmFsdWVSZWdzKTsKLSAgICB9Ci0g
ICAgcmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tGb3JDYWxsKGRvbnRSZXN0b3JlKTsKKyAg
ICB1bnNpZ25lZCBudW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24g
PSBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OnByZXNlcnZlUmVnaXN0ZXJzVG9TdGFja0ZvckNh
bGwoKmppdCwgbGl2ZVJlZ2lzdGVycywgZXh0cmFTdGFja1BhZGRpbmcpOworICAgIHJldHVybiBT
cGlsbFN0YXRlIHsKKyAgICAgICAgbGl2ZVJlZ2lzdGVycywKKyAgICAgICAgbnVtYmVyT2ZTdGFj
a0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uCisgICAgfTsKIH0KIAotdm9pZCBBY2Nl
c3NHZW5lcmF0aW9uU3RhdGU6OnJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbFdp
dGhUaHJvd25FeGNlcHRpb24oKQordm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnJlc3RvcmVM
aXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbFdpdGhUaHJvd25FeGNlcHRpb24oY29uc3QgU3Bp
bGxTdGF0ZSYgc3BpbGxTdGF0ZSkKIHsKICAgICAvLyBFdmVuIGlmIHdlJ3JlIGEgZ2V0dGVyLCB3
ZSBkb24ndCB3YW50IHRvIGlnbm9yZSB0aGUgcmVzdWx0IHZhbHVlIGxpa2Ugd2Ugbm9ybWFsbHkg
ZG8KICAgICAvLyBiZWNhdXNlIHRoZSBnZXR0ZXIgdGhyZXcsIGFuZCB0aGVyZWZvcmUsIGRpZG4n
dCByZXR1cm4gYSB2YWx1ZSB0aGF0IG1lYW5zIGFueXRoaW5nLgpAQCAtMTE5LDI1ICsxMzIsMjYg
QEAgdm9pZCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0
YWNrRm9yQ2FsbFdpdGhUaHJvd25FeGNlcHQKICAgICAvLyBpbmxpbmUgY2FjaGUuIFRoZSBzdWJ0
bGV0eSBoZXJlIGlzIGlmIHRoZSBiYXNlIGFuZCB0aGUgcmVzdWx0IGFyZSB0aGUgc2FtZSByZWdp
c3RlciwKICAgICAvLyBhbmQgdGhlIGdldHRlciB0aHJldywgd2Ugd2FudCBPU1IgZXhpdCB0byBz
ZWUgdGhlIG9yaWdpbmFsIGJhc2UgdmFsdWUsIG5vdCB0aGUgcmVzdWx0CiAgICAgLy8gb2YgdGhl
IGdldHRlciBjYWxsLgotICAgIFJlZ2lzdGVyU2V0IGRvbnRSZXN0b3JlID0gbGl2ZVJlZ2lzdGVy
c0ZvckNhbGwoKTsKKyAgICBSZWdpc3RlclNldCBkb250UmVzdG9yZSA9IHNwaWxsU3RhdGUuc3Bp
bGxlZFJlZ2lzdGVyczsKICAgICAvLyBBcyBhbiBvcHRpbWl6YXRpb24gaGVyZSwgd2Ugb25seSBu
ZWVkIHRvIHJlc3RvcmUgd2hhdCBpcyBsaXZlIGZvciBleGNlcHRpb24gaGFuZGxpbmcuCiAgICAg
Ly8gV2UgY2FuIGNvbnN0cnVjdCB0aGUgZG9udFJlc3RvcmUgc2V0IHRvIGFjY29tcGxpc2ggdGhp
cyBnb2FsIGJ5IGhhdmluZyBpdCBjb250YWluIG9ubHkKICAgICAvLyB3aGF0IGlzIGxpdmUgZm9y
IGNhbGwgYnV0IG5vdCBsaXZlIGZvciBleGNlcHRpb24gaGFuZGxpbmcuIEJ5IGlnbm9yaW5nIHRo
aW5ncyB0aGF0IGFyZQogICAgIC8vIG9ubHkgbGl2ZSBhdCB0aGUgY2FsbCBidXQgbm90IHRoZSBl
eGNlcHRpb24gaGFuZGxlciwgd2Ugd2lsbCBvbmx5IHJlc3RvcmUgdGhpbmdzIGxpdmUKICAgICAv
LyBhdCB0aGUgZXhjZXB0aW9uIGhhbmRsZXIuCiAgICAgZG9udFJlc3RvcmUuZXhjbHVkZShsaXZl
UmVnaXN0ZXJzVG9QcmVzZXJ2ZUF0RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZSgpKTsKLSAgICBy
ZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoZG9udFJlc3RvcmUpOworICAgIHJl
c3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChzcGlsbFN0YXRlLCBkb250UmVzdG9y
ZSk7CiB9CiAKLXZvaWQgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpyZXN0b3JlTGl2ZVJlZ2lzdGVy
c0Zyb21TdGFja0ZvckNhbGwoY29uc3QgUmVnaXN0ZXJTZXQmIGRvbnRSZXN0b3JlKQordm9pZCBB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGU6OnJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2Fs
bChjb25zdCBTcGlsbFN0YXRlJiBzcGlsbFN0YXRlLCBjb25zdCBSZWdpc3RlclNldCYgZG9udFJl
c3RvcmUpCiB7CiAgICAgdW5zaWduZWQgZXh0cmFTdGFja1BhZGRpbmcgPSAwOwotICAgIFNjcmF0
Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVzdG9yZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoKmpp
dCwgbGl2ZVJlZ2lzdGVyc0ZvckNhbGwoKSwgZG9udFJlc3RvcmUsIG1fbnVtYmVyT2ZTdGFja0J5
dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uLCBleHRyYVN0YWNrUGFkZGluZyk7CisgICAg
U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpyZXN0b3JlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2Fs
bCgqaml0LCBzcGlsbFN0YXRlLnNwaWxsZWRSZWdpc3RlcnMsIGRvbnRSZXN0b3JlLCBzcGlsbFN0
YXRlLm51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZhdGlvbiwgZXh0cmFT
dGFja1BhZGRpbmcpOwogfQogCiBDYWxsU2l0ZUluZGV4IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6
Y2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nT3JPcmlnaW5hbCgpCiB7Ci0gICAgUkVM
RUFTRV9BU1NFUlQobV9jYWxjdWxhdGVkUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhhbmRs
aW5nKTsKKyAgICBpZiAoIW1fY2FsY3VsYXRlZFJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRpb25I
YW5kbGluZykKKyAgICAgICAgY2FsY3VsYXRlTGl2ZVJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRp
b25IYW5kbGluZygpOwogCiAgICAgaWYgKCFtX2NhbGN1bGF0ZWRDYWxsU2l0ZUluZGV4KSB7CiAg
ICAgICAgIG1fY2FsY3VsYXRlZENhbGxTaXRlSW5kZXggPSB0cnVlOwpAQCAtMTUxLDggKzE2NSwx
MSBAQCBDYWxsU2l0ZUluZGV4IEFjY2Vzc0dlbmVyYXRpb25TdGF0ZTo6Y2FsbFNpdGVJbmRleEZv
ckV4Y2VwdGlvbkhhbmRsaW5nT3JPcmlnaW5hbAogICAgIHJldHVybiBtX2NhbGxTaXRlSW5kZXg7
CiB9CiAKLWNvbnN0IEhhbmRsZXJJbmZvJiBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6Om9yaWdpbmFs
RXhjZXB0aW9uSGFuZGxlcigpIGNvbnN0Citjb25zdCBIYW5kbGVySW5mbyYgQWNjZXNzR2VuZXJh
dGlvblN0YXRlOjpvcmlnaW5hbEV4Y2VwdGlvbkhhbmRsZXIoKQogeworICAgIGlmICghbV9jYWxj
dWxhdGVkUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhhbmRsaW5nKQorICAgICAgICBjYWxj
dWxhdGVMaXZlUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlvbkhhbmRsaW5nKCk7CisKICAgICBS
RUxFQVNFX0FTU0VSVChtX25lZWRzVG9SZXN0b3JlUmVnaXN0ZXJzSWZFeGNlcHRpb24pOwogICAg
IEhhbmRsZXJJbmZvKiBleGNlcHRpb25IYW5kbGVyID0gaml0LT5jb2RlQmxvY2soKS0+aGFuZGxl
ckZvckluZGV4KHN0dWJJbmZvLT5jYWxsU2l0ZUluZGV4LmJpdHMoKSk7CiAgICAgUkVMRUFTRV9B
U1NFUlQoZXhjZXB0aW9uSGFuZGxlcik7CkBAIC05MzIsNiArOTQ5LDE2IEBAIHZvaWQgQWNjZXNz
Q2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBpZiAobV90eXBlID09IEN1c3RvbUFj
Y2Vzc29yR2V0dGVyICYmIG1fcmFyZURhdGEtPmRvbUpJVCkgeworICAgICAgICAgICAgLy8gV2Ug
ZG8gbm90IG5lZWQgdG8gZW1pdCBDaGVja0RPTSBvcGVyYXRpb24gc2luY2Ugc3RydWN0dXJlIGNo
ZWNrIGVuc3VyZXMKKyAgICAgICAgICAgIC8vIHRoYXQgdGhlIHN0cnVjdHVyZSBvZiB0aGUgZ2l2
ZW4gYmFzZSB2YWx1ZSBpcyBzdHJ1Y3R1cmUoKSEgU28gYWxsIHdlIHNob3VsZAorICAgICAgICAg
ICAgLy8gZG8gaXMgcGVyZm9ybWluZyB0aGUgQ2hlY2tET00gdGhpbmd5IGluIElDIGNvbXBpbGlu
ZyB0aW1lIGhlcmUuCisgICAgICAgICAgICBpZiAoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpLT5p
c1N1YkNsYXNzT2YobV9yYXJlRGF0YS0+ZG9tSklULT50aGlzQ2xhc3NJbmZvKCkpKSB7CisgICAg
ICAgICAgICAgICAgZW1pdERPTUpJVEdldHRlcihzdGF0ZSwgYmFzZUZvckdldEdQUik7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAg
Ly8gU3R1ZmYgZm9yIGN1c3RvbSBnZXR0ZXJzL3NldHRlcnMuCiAgICAgICAgIENDYWxsSGVscGVy
czo6Q2FsbCBvcGVyYXRpb25DYWxsOwogCkBAIC05NDAsMTIgKzk2NywxOSBAQCB2b2lkIEFjY2Vz
c0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkNhbGwgZmFzdFBhdGhDYWxsOwogICAgICAgICBDQ2FsbEhlbHBlcnM6
OkNhbGwgc2xvd1BhdGhDYWxsOwogCi0gICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBzdWNjZXNz
OwotICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZmFpbDsKLQogICAgICAgICAvLyBUaGlzIGFs
c28gZG9lcyB0aGUgbmVjZXNzYXJ5IGNhbGN1bGF0aW9ucyBvZiB3aGV0aGVyIG9yIG5vdCB3ZSdy
ZSBhbgogICAgICAgICAvLyBleGNlcHRpb24gaGFuZGxpbmcgY2FsbCBzaXRlLgotICAgICAgICBz
dGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbCgpOworICAgICAgICBBY2Nl
c3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxsU3RhdGUgc3BpbGxTdGF0ZSA9IHN0YXRlLnByZXNlcnZl
TGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKCk7CisKKyAgICAgICAgYXV0byByZXN0b3JlTGl2
ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwgPSBbJl0oQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpT
cGlsbFN0YXRlJiBzcGlsbFN0YXRlLCBib29sIGNhbGxIYXNSZXR1cm5WYWx1ZSkgeworICAgICAg
ICAgICAgUmVnaXN0ZXJTZXQgZG9udFJlc3RvcmU7CisgICAgICAgICAgICBpZiAoY2FsbEhhc1Jl
dHVyblZhbHVlKSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgcmVzdWx0IHZhbHVl
LiBXZSBkb24ndCB3YW50IHRvIG92ZXJ3cml0ZSB0aGUgcmVzdWx0IHdpdGggd2hhdCB3ZSBzdG9y
ZWQgdG8gdGhlIHN0YWNrLgorICAgICAgICAgICAgICAgIC8vIFdlIHNvbWV0aW1lcyBoYXZlIHRv
IHN0b3JlIGl0IHRvIHRoZSBzdGFjayBqdXN0IGluIGNhc2Ugd2UgdGhyb3cgYW4gZXhjZXB0aW9u
IGFuZCBuZWVkIHRoZSBvcmlnaW5hbCB2YWx1ZS4KKyAgICAgICAgICAgICAgICBkb250UmVzdG9y
ZS5zZXQodmFsdWVSZWdzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXRlLnJlc3Rv
cmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChzcGlsbFN0YXRlLCBkb250UmVzdG9yZSk7
CisgICAgICAgIH07CiAKICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihzdGF0ZS5jYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxp
bmdPck9yaWdpbmFsKCkuYml0cygpKSwKQEAgLTk2Niw2ICsxMDAwLDggQEAgdm9pZCBBY2Nlc3ND
YXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAg
ICAgIC8vIFRoZXJlZm9yZSwgd2UgdGVtcG9yYXJpbHkgZ3JvdyB0aGUgc3RhY2sgZm9yIHRoZSBw
dXJwb3NlIG9mIHRoZSBjYWxsIGFuZCB0aGVuCiAgICAgICAgICAgICAvLyBzaHJpbmsgaXQgYWZ0
ZXIuCiAKKyAgICAgICAgICAgIHN0YXRlLnNldFNwaWxsU3RhdGVGb3JKU0dldHRlclNldHRlcihz
cGlsbFN0YXRlKTsKKwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcmFyZURhdGEtPmNh
bGxMaW5rSW5mbyk7CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5jYWxsTGlua0luZm8gPSBzdGQ6
Om1ha2VfdW5pcXVlPENhbGxMaW5rSW5mbz4oKTsKICAgICAgICAgICAgIApAQCAtMTA2NSw5ICsx
MTAxLDEwIEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25T
dGF0ZSYgc3RhdGUpCiAKICAgICAgICAgICAgIGRvbmUubGluaygmaml0KTsKIAotICAgICAgICAg
ICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigoY29kZUJsb2NrLT5zdGFj
a1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpIC0gc3RhdGUucHJlc2VydmVkUmV1
c2VkUmVnaXN0ZXJTdGF0ZS5udW1iZXJPZkJ5dGVzUHJlc2VydmVkIC0gc3RhdGUubnVtYmVyT2ZT
dGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uKCkpLAorICAgICAgICAgICAgaml0
LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigoY29kZUJsb2NrLT5zdGFja1BvaW50
ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpIC0gc3RhdGUucHJlc2VydmVkUmV1c2VkUmVn
aXN0ZXJTdGF0ZS5udW1iZXJPZkJ5dGVzUHJlc2VydmVkIC0gc3BpbGxTdGF0ZS5udW1iZXJPZlN0
YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24pLAogICAgICAgICAgICAgICAgIEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsKLSAgICAgICAgICAgIHN0YXRlLnJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9y
Q2FsbChpc0dldHRlcigpKTsKKyAgICAgICAgICAgIGJvb2wgY2FsbEhhc1JldHVyblZhbHVlID0g
aXNHZXR0ZXIoKTsKKyAgICAgICAgICAgIHJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9y
Q2FsbChzcGlsbFN0YXRlLCBjYWxsSGFzUmV0dXJuVmFsdWUpOwogCiAgICAgICAgICAgICBqaXQu
YWRkTGlua1Rhc2soCiAgICAgICAgICAgICAgICAgWz0sICZ2bV0gKExpbmtCdWZmZXImIGxpbmtC
dWZmZXIpIHsKQEAgLTExMjcsMTEgKzExNjQsMTIgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0
ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6SnVtcCBub0V4Y2VwdGlvbiA9CiAgICAgICAgICAgICAgICAgaml0LmVtaXRFeGNlcHRp
b25DaGVjayhDQ2FsbEhlbHBlcnM6OkludmVydGVkRXhjZXB0aW9uQ2hlY2spOwogCi0gICAgICAg
ICAgICBzdGF0ZS5yZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGxXaXRoVGhyb3du
RXhjZXB0aW9uKCk7CisgICAgICAgICAgICBzdGF0ZS5yZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21T
dGFja0ZvckNhbGxXaXRoVGhyb3duRXhjZXB0aW9uKHNwaWxsU3RhdGUpOwogICAgICAgICAgICAg
c3RhdGUuZW1pdEV4cGxpY2l0RXhjZXB0aW9uSGFuZGxlcigpOwogICAgICAgICAKICAgICAgICAg
ICAgIG5vRXhjZXB0aW9uLmxpbmsoJmppdCk7Ci0gICAgICAgICAgICBzdGF0ZS5yZXN0b3JlTGl2
ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoaXNHZXR0ZXIoKSk7CisgICAgICAgICAgICBib29s
IGNhbGxIYXNSZXR1cm5WYWx1ZSA9IGlzR2V0dGVyKCk7CisgICAgICAgICAgICByZXN0b3JlTGl2
ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoc3BpbGxTdGF0ZSwgY2FsbEhhc1JldHVyblZhbHVl
KTsKICAgICAgICAgfQogICAgICAgICBzdGF0ZS5zdWNjZWVkKCk7CiAgICAgICAgIHJldHVybjsK
QEAgLTEyNDgsNyArMTI4Niw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vz
c0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICAgICAgUmVnaXN0ZXJTZXQgZXh0
cmFSZWdpc3RlcnNUb1ByZXNlcnZlOwogICAgICAgICAgICAgICAgIGV4dHJhUmVnaXN0ZXJzVG9Q
cmVzZXJ2ZS5zZXQoYmFzZUdQUik7CiAgICAgICAgICAgICAgICAgZXh0cmFSZWdpc3RlcnNUb1By
ZXNlcnZlLnNldCh2YWx1ZVJlZ3MpOwotICAgICAgICAgICAgICAgIHN0YXRlLnByZXNlcnZlTGl2
ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGV4dHJhUmVnaXN0ZXJzVG9QcmVzZXJ2ZSk7CisgICAg
ICAgICAgICAgICAgQWNjZXNzR2VuZXJhdGlvblN0YXRlOjpTcGlsbFN0YXRlIHNwaWxsU3RhdGUg
PSBzdGF0ZS5wcmVzZXJ2ZUxpdmVSZWdpc3RlcnNUb1N0YWNrRm9yQ2FsbChleHRyYVJlZ2lzdGVy
c1RvUHJlc2VydmUpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGppdC5zdG9y
ZTMyKAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigKQEAg
LTEyODgsMTEgKzEzMjYsMTEgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNz
R2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1
bXAgbm9FeGNlcHRpb24gPQogICAgICAgICAgICAgICAgICAgICBqaXQuZW1pdEV4Y2VwdGlvbkNo
ZWNrKENDYWxsSGVscGVyczo6SW52ZXJ0ZWRFeGNlcHRpb25DaGVjayk7CiAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgc3RhdGUucmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tG
b3JDYWxsV2l0aFRocm93bkV4Y2VwdGlvbigpOworICAgICAgICAgICAgICAgIHN0YXRlLnJlc3Rv
cmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbFdpdGhUaHJvd25FeGNlcHRpb24oc3BpbGxT
dGF0ZSk7CiAgICAgICAgICAgICAgICAgc3RhdGUuZW1pdEV4cGxpY2l0RXhjZXB0aW9uSGFuZGxl
cigpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG5vRXhjZXB0aW9uLmxpbmso
JmppdCk7Ci0gICAgICAgICAgICAgICAgc3RhdGUucmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3Rh
Y2tGb3JDYWxsKCk7CisgICAgICAgICAgICAgICAgc3RhdGUucmVzdG9yZUxpdmVSZWdpc3RlcnNG
cm9tU3RhY2tGb3JDYWxsKHNwaWxsU3RhdGUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
QEAgLTEzODUsNiArMTQyMywxMjQgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNj
ZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCit2b2lkIEFjY2Vzc0Nhc2U6OmVtaXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJh
dGlvblN0YXRlJiBzdGF0ZSwgR1BSUmVnIGJhc2VGb3JHZXRHUFIpCit7CisgICAgQ0NhbGxIZWxw
ZXJzJiBqaXQgPSAqc3RhdGUuaml0OworICAgIFZNJiB2bSA9ICpqaXQudm0oKTsKKyAgICBTdHJ1
Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSAqc3RhdGUuc3R1YkluZm87CisgICAgSlNWYWx1ZVJl
Z3MgdmFsdWVSZWdzID0gc3RhdGUudmFsdWVSZWdzOworICAgIEdQUlJlZyBiYXNlR1BSID0gc3Rh
dGUuYmFzZUdQUjsKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHN0YXRlLnNjcmF0Y2hHUFI7CisK
KyAgICAvLyBXZSBjb25zdHJ1Y3QgdGhlIGVudmlyb25tZW50IHRoYXQgY2FuIGV4ZWN1dGUgdGhl
IERPTUpJVDo6UGF0Y2hwb2ludCBoZXJlLgorICAgIFJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBv
aW50PiBwYXRjaHBvaW50ID0gbV9yYXJlRGF0YS0+ZG9tSklULT5jYWxsRE9NKCk7CisKKyAgICBW
ZWN0b3I8R1BSUmVnPiBncFNjcmF0Y2g7CisgICAgVmVjdG9yPEZQUlJlZz4gZnBTY3JhdGNoOwor
ICAgIFZlY3RvcjxET01KSVQ6OlZhbHVlPiByZWdzOworCisgICAgU2NyYXRjaFJlZ2lzdGVyQWxs
b2NhdG9yIGFsbG9jYXRvcihzdHViSW5mby5wYXRjaC51c2VkUmVnaXN0ZXJzKTsKKyAgICBhbGxv
Y2F0b3IubG9jayhiYXNlR1BSKTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIGFsbG9jYXRv
ci5sb2NrKHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guYmFzZVRhZ0dQUikpOwor
I2VuZGlmCisgICAgYWxsb2NhdG9yLmxvY2sodmFsdWVSZWdzKTsKKyAgICBhbGxvY2F0b3IubG9j
ayhzY3JhdGNoR1BSKTsKKworICAgIEdQUlJlZyBwYXJhbUJhc2VHUFIgPSBJbnZhbGlkR1BSUmVn
OworICAgIEdQUlJlZyBwYXJhbUdsb2JhbE9iamVjdEdQUiA9IEludmFsaWRHUFJSZWc7CisgICAg
SlNWYWx1ZVJlZ3MgcGFyYW1WYWx1ZVJlZ3MgPSB2YWx1ZVJlZ3M7CisgICAgR1BSUmVnIHJlbWFp
bmluZ1NjcmF0Y2hHUFIgPSBJbnZhbGlkR1BSUmVnOworCisgICAgLy8gdmFsdWVSZWdzIGFuZCBi
YXNlRm9yR2V0R1BSIG1heSBiZSB0aGUgc2FtZS4gRm9yIGV4YW1wbGUsIGluIEJhc2VsaW5lIEpJ
VCwgd2UgcGFzcyB0aGUgc2FtZSByZWdUMCBmb3IgYmFzZUdQUiBhbmQgdmFsdWVSZWdzLgorICAg
IC8vIEluIEZUTCwgdGhlcmUgaXMgbm8gY29uc3RyYWludCB0aGF0IHRoZSBiYXNlRm9yR2V0R1BS
IGludGVyZmVyZXMgd2l0aCB0aGUgcmVzdWx0LiBUbyBtYWtlIGltcGxlbWVudGF0aW9uIHNpbXBs
ZSBpbgorICAgIC8vIERPTUpJVDo6UGF0Y2hwb2ludCwgRE9NSklUOjpQYXRjaHBvaW50IGFzc3Vt
ZXMgdGhhdCByZXN1bHQgcmVnaXN0ZXJzIGFsd2F5cyBlYXJseSBpbnRlcmZlcmUgd2l0aCBpbnB1
dCByZWdpc3RlcnMsIGluIHRoaXMgY2FzZSwKKyAgICAvLyBiYXNlRm9yR2V0R1BSLiBTbyB3ZSBt
b3ZlIGJhc2VGb3JHZXRHUFIgdG8gdGhlIG90aGVyIHJlZ2lzdGVyIGlmIGJhc2VGb3JHZXRHUFIg
PT0gdmFsdWVSZWdzLgorICAgIGlmIChiYXNlRm9yR2V0R1BSICE9IHZhbHVlUmVncy5wYXlsb2Fk
R1BSKCkpIHsKKyAgICAgICAgcGFyYW1CYXNlR1BSID0gYmFzZUZvckdldEdQUjsKKyAgICAgICAg
aWYgKCFwYXRjaHBvaW50LT5yZXF1aXJlR2xvYmFsT2JqZWN0KQorICAgICAgICAgICAgcmVtYWlu
aW5nU2NyYXRjaEdQUiA9IHNjcmF0Y2hHUFI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBh
cmFtR2xvYmFsT2JqZWN0R1BSID0gc2NyYXRjaEdQUjsKKyAgICB9IGVsc2UgeworICAgICAgICBq
aXQubW92ZSh2YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgcGFy
YW1CYXNlR1BSID0gc2NyYXRjaEdQUjsKKyAgICAgICAgaWYgKHBhdGNocG9pbnQtPnJlcXVpcmVH
bG9iYWxPYmplY3QpCisgICAgICAgICAgICBwYXJhbUdsb2JhbE9iamVjdEdQUiA9IGFsbG9jYXRv
ci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKKyAgICB9CisKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0Rm9yRE9NSklUID0gc3RydWN0dXJlKCktPmdsb2JhbE9iamVjdCgpOworCisgICAg
cmVncy5hcHBlbmQocGFyYW1WYWx1ZVJlZ3MpOworICAgIGlmIChwYXRjaHBvaW50LT5yZXF1aXJl
R2xvYmFsT2JqZWN0KSB7CisgICAgICAgIEFTU0VSVChwYXJhbUdsb2JhbE9iamVjdEdQUiAhPSBJ
bnZhbGlkR1BSUmVnKTsKKyAgICAgICAgcmVncy5hcHBlbmQoRE9NSklUOjpWYWx1ZShwYXJhbUds
b2JhbE9iamVjdEdQUiwgZ2xvYmFsT2JqZWN0Rm9yRE9NSklUKSk7CisgICAgfQorICAgIHJlZ3Mu
YXBwZW5kKHBhcmFtQmFzZUdQUik7CisKKyAgICBpZiAocGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNo
UmVnaXN0ZXJzKSB7CisgICAgICAgIHVuc2lnbmVkIGkgPSAwOworICAgICAgICBpZiAocmVtYWlu
aW5nU2NyYXRjaEdQUiAhPSBJbnZhbGlkR1BSUmVnKSB7CisgICAgICAgICAgICBncFNjcmF0Y2gu
YXBwZW5kKHJlbWFpbmluZ1NjcmF0Y2hHUFIpOworICAgICAgICAgICAgKytpOworICAgICAgICB9
CisgICAgICAgIGZvciAoOyBpIDwgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzOyAr
K2kpCisgICAgICAgICAgICBncFNjcmF0Y2guYXBwZW5kKGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0
Y2hHUFIoKSk7CisgICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhdGNocG9p
bnQtPm51bUZQU2NyYXRjaFJlZ2lzdGVyczsgKytpKQorICAgICAgICBmcFNjcmF0Y2guYXBwZW5k
KGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hGUFIoKSk7CisKKyAgICAvLyBMZXQncyBzdG9yZSB0
aGUgcmV1c2VkIHJlZ2lzdGVycyB0byB0aGUgc3RhY2suIEFmdGVyIHRoYXQsIHdlIGNhbiB1c2Ug
YWxsb2NhdGVkIHNjcmF0Y2ggcmVnaXN0ZXJzLgorICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
cjo6UHJlc2VydmVkU3RhdGUgcHJlc2VydmVkU3RhdGUgPQorICAgICAgICBhbGxvY2F0b3IucHJl
c2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoaml0LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0
b3I6OkV4dHJhU3RhY2tTcGFjZTo6U3BhY2VGb3JDQ2FsbCk7CisKKyAgICBpZiAodmVyYm9zZSkg
eworICAgICAgICBkYXRhTG9nKCJiYXNlR1BSID0gIiwgYmFzZUdQUiwgIlxuIik7CisgICAgICAg
IGRhdGFMb2coInZhbHVlUmVncyA9ICIsIHZhbHVlUmVncywgIlxuIik7CisgICAgICAgIGRhdGFM
b2coInNjcmF0Y2hHUFIgPSAiLCBzY3JhdGNoR1BSLCAiXG4iKTsKKyAgICAgICAgZGF0YUxvZygi
cGFyYW1CYXNlR1BSID0gIiwgcGFyYW1CYXNlR1BSLCAiXG4iKTsKKyAgICAgICAgaWYgKHBhcmFt
R2xvYmFsT2JqZWN0R1BSICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICBkYXRhTG9nKCJw
YXJhbUdsb2JhbE9iamVjdEdQUiA9ICIsIHBhcmFtR2xvYmFsT2JqZWN0R1BSLCAiXG4iKTsKKyAg
ICAgICAgZGF0YUxvZygicGFyYW1WYWx1ZVJlZ3MgPSAiLCBwYXJhbVZhbHVlUmVncywgIlxuIik7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXRjaHBvaW50LT5udW1HUFNjcmF0
Y2hSZWdpc3RlcnM7ICsraSkKKyAgICAgICAgICAgIGRhdGFMb2coImdwU2NyYXRjaFsiLCBpLCAi
XSA9ICIsIGdwU2NyYXRjaFtpXSwgIlxuIik7CisgICAgfQorCisgICAgaWYgKHBhdGNocG9pbnQt
PnJlcXVpcmVHbG9iYWxPYmplY3QpCisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihnbG9iYWxPYmplY3RGb3JET01KSVQpLCBwYXJhbUdsb2JhbE9iamVjdEdQUik7
CisKKyAgICAvLyBXZSBqdXN0IHNwaWxsIHRoZSByZWdpc3RlcnMgdXNlZCBpbiBET01KSVQ6OlBh
dGNocG9pbnQgaGVyZS4gRm9yIG5vdCBzcGlsbGVkIHJlZ2lzdGVycyBoZXJlIGV4cGxpY2l0bHks
CisgICAgLy8gdGhleSBtdXN0IGJlIGluIHRoZSB1c2VkIHJlZ2lzdGVyIHNldCBwYXNzZWQgYnkg
dGhlIGNhbGxlcnMgKEJhc2VsaW5lLCBERkcsIGFuZCBGVEwpIGlmIHRoZXkgbmVlZCB0byBiZSBr
ZXB0LgorICAgIC8vIFNvbWUgcmVnaXN0ZXJzIGNhbiBiZSBsb2NrZWQsIGJ1dCBub3QgaW4gdGhl
IHVzZWQgcmVnaXN0ZXIgc2V0LiBGb3IgZXhhbXBsZSwgdGhlIGNhbGxlciBjb3VsZCBtYWtlIGJh
c2VHUFIKKyAgICAvLyBzYW1lIHRvIHZhbHVlUmVncywgYW5kIG5vdCBpbmNsdWRlIGl0IGluIHRo
ZSB1c2VkIHJlZ2lzdGVycyBzaW5jZSBpdCB3aWxsIGJlIGNoYW5nZWQuCisgICAgUmVnaXN0ZXJT
ZXQgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsOworICAgIGZvciAoYXV0byYgdmFsdWUgOiByZWdz
KSB7CisgICAgICAgIERPTUpJVDo6UmVnIHJlZyA9IHZhbHVlLnJlZygpOworICAgICAgICBpZiAo
cmVnLmlzSlNWYWx1ZVJlZ3MoKSkKKyAgICAgICAgICAgIHJlZ2lzdGVyc1RvU3BpbGxGb3JDQ2Fs
bC5zZXQocmVnLmpzVmFsdWVSZWdzKCkpOworICAgICAgICBlbHNlIGlmIChyZWcuaXNHUFIoKSkK
KyAgICAgICAgICAgIHJlZ2lzdGVyc1RvU3BpbGxGb3JDQ2FsbC5zZXQocmVnLmdwcigpKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgcmVnaXN0ZXJzVG9TcGlsbEZvckNDYWxsLnNldChyZWcu
ZnByKCkpOworICAgIH0KKyAgICBmb3IgKEdQUlJlZyByZWcgOiBncFNjcmF0Y2gpCisgICAgICAg
IHJlZ2lzdGVyc1RvU3BpbGxGb3JDQ2FsbC5zZXQocmVnKTsKKyAgICBmb3IgKEZQUlJlZyByZWcg
OiBmcFNjcmF0Y2gpCisgICAgICAgIHJlZ2lzdGVyc1RvU3BpbGxGb3JDQ2FsbC5zZXQocmVnKTsK
KyAgICByZWdpc3RlcnNUb1NwaWxsRm9yQ0NhbGwuZXhjbHVkZShSZWdpc3RlclNldDo6cmVnaXN0
ZXJzVG9Ob3RTYXZlRm9yQ0NhbGwoKSk7CisKKyAgICBET01KSVRBY2Nlc3NDYXNlUGF0Y2hwb2lu
dFBhcmFtcyBwYXJhbXMoV1RGTW92ZShyZWdzKSwgV1RGTW92ZShncFNjcmF0Y2gpLCBXVEZNb3Zl
KGZwU2NyYXRjaCkpOworICAgIHBhdGNocG9pbnQtPmdlbmVyYXRvcigpLT5ydW4oaml0LCBwYXJh
bXMpOworICAgIGFsbG9jYXRvci5yZXN0b3JlUmV1c2VkUmVnaXN0ZXJzQnlQb3BwaW5nKGppdCwg
cHJlc2VydmVkU3RhdGUpOworICAgIHN0YXRlLnN1Y2NlZWQoKTsKKworICAgIENDYWxsSGVscGVy
czo6SnVtcExpc3QgZXhjZXB0aW9ucyA9IHBhcmFtcy5lbWl0U2xvd1BhdGhDYWxscyh2bSwgc3Rh
dGUsIHJlZ2lzdGVyc1RvU3BpbGxGb3JDQ2FsbCwgaml0KTsKKyAgICBleGNlcHRpb25zLmxpbmso
JmppdCk7CisgICAgYWxsb2NhdG9yLnJlc3RvcmVSZXVzZWRSZWdpc3RlcnNCeVBvcHBpbmcoaml0
LCBwcmVzZXJ2ZWRTdGF0ZSk7CisgICAgc3RhdGUuZW1pdEV4cGxpY2l0RXhjZXB0aW9uSGFuZGxl
cigpOworfQorCiBQb2x5bW9ycGhpY0FjY2Vzczo6UG9seW1vcnBoaWNBY2Nlc3MoKSB7IH0KIFBv
bHltb3JwaGljQWNjZXNzOjp+UG9seW1vcnBoaWNBY2Nlc3MoKSB7IH0KIApAQCAtMTY4NCwxMyAr
MTg0MCwxNSBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdl
bmVyYXRlKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbWFrZXNoaWZ0Q2F0Y2hIYW5k
bGVyID0gaml0LmxhYmVsKCk7CiAKICAgICAgICAgaW50IHN0YWNrUG9pbnRlck9mZnNldCA9IGNv
ZGVCbG9jay0+c3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwor
ICAgICAgICBBY2Nlc3NHZW5lcmF0aW9uU3RhdGU6OlNwaWxsU3RhdGUgc3BpbGxTdGF0ZUZvckpT
R2V0dGVyU2V0dGVyID0gc3RhdGUuc3BpbGxTdGF0ZUZvckpTR2V0dGVyU2V0dGVyKCk7CisgICAg
ICAgIEFTU0VSVCghc3BpbGxTdGF0ZUZvckpTR2V0dGVyU2V0dGVyLmlzRW1wdHkoKSk7CiAgICAg
ICAgIHN0YWNrUG9pbnRlck9mZnNldCAtPSBzdGF0ZS5wcmVzZXJ2ZWRSZXVzZWRSZWdpc3RlclN0
YXRlLm51bWJlck9mQnl0ZXNQcmVzZXJ2ZWQ7Ci0gICAgICAgIHN0YWNrUG9pbnRlck9mZnNldCAt
PSBzdGF0ZS5udW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24oKTsK
KyAgICAgICAgc3RhY2tQb2ludGVyT2Zmc2V0IC09IHNwaWxsU3RhdGVGb3JKU0dldHRlclNldHRl
ci5udW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb247CiAKICAgICAg
ICAgaml0LmxvYWRQdHIodm0uYWRkcmVzc09mQ2FsbEZyYW1lRm9yQ2F0Y2goKSwgR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIpOwogICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKHN0YWNrUG9pbnRlck9mZnNldCksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIAotICAgICAgICBzdGF0ZS5y
ZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGxXaXRoVGhyb3duRXhjZXB0aW9uKCk7
CisgICAgICAgIHN0YXRlLnJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbFdpdGhU
aHJvd25FeGNlcHRpb24oc3BpbGxTdGF0ZUZvckpTR2V0dGVyU2V0dGVyKTsKICAgICAgICAgc3Rh
dGUucmVzdG9yZVNjcmF0Y2goKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGp1bXBUb09T
UkV4aXRFeGNlcHRpb25IYW5kbGVyID0gaml0Lmp1bXAoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAppbmRleCA5NzBhMjM1YmZk
ZTMyZTYzYWY2Yjk1ZGFmZjczMjNjMmI5NDhjNjVjLi5kMzAyMDE2MzNlZTc1OWM5NTg2MDE3ZjFl
YTQ0ZmRhZjBjZjg5MjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUG9seW1vcnBoaWNBY2Nlc3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUG9seW1vcnBoaWNBY2Nlc3MuaApAQCAtMjc3LDYgKzI3Nyw3IEBAIGNsYXNzIEFjY2Vzc0Nh
c2UgewogICAgIAogICAgIHZvaWQgZ2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYp
OwogICAgIHZvaWQgZW1pdEludHJpbnNpY0dldHRlcihBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmKTsK
KyAgICB2b2lkIGVtaXRET01KSVRHZXR0ZXIoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiwgR1BSUmVn
IGJhc2VGb3JHZXRHUFIpOwogICAgIAogICAgIEFjY2Vzc1R5cGUgbV90eXBlIHsgTG9hZCB9Owog
ICAgIFN0YXRlIG1fc3RhdGUgeyBQcmltb3JkaWFsIH07CkBAIC00NzIsMTkgKzQ3MywyMSBAQCBz
dHJ1Y3QgQWNjZXNzR2VuZXJhdGlvblN0YXRlIHsKICAgICB2b2lkIHJlc3RvcmVTY3JhdGNoKCk7
CiAgICAgdm9pZCBzdWNjZWVkKCk7CiAKLSAgICB2b2lkIGNhbGN1bGF0ZUxpdmVSZWdpc3RlcnNG
b3JDYWxsQW5kRXhjZXB0aW9uSGFuZGxpbmcoY29uc3QgUmVnaXN0ZXJTZXQmIGV4dHJhID0gUmVn
aXN0ZXJTZXQoKSk7CisgICAgc3RydWN0IFNwaWxsU3RhdGUgeworICAgICAgICBSZWdpc3RlclNl
dCBzcGlsbGVkUmVnaXN0ZXJzIHsgfTsKKyAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZTdGFja0J5
dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2VydmF0aW9uIHsgc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpIH07CiAKLSAgICB2b2lkIHByZXNlcnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tG
b3JDYWxsKGNvbnN0IFJlZ2lzdGVyU2V0JiBleHRyYSA9IFJlZ2lzdGVyU2V0KCkpOworICAgICAg
ICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBudW1iZXJPZlN0YWNrQnl0ZXNVc2VkRm9y
UmVnaXN0ZXJQcmVzZXJ2YXRpb24gPT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpOyB9CisgICAgfTsKIAotICAgIHZvaWQgcmVzdG9yZUxpdmVSZWdpc3RlcnNGcm9tU3RhY2tG
b3JDYWxsKGJvb2wgaXNHZXR0ZXIgPSBmYWxzZSk7Ci0gICAgdm9pZCByZXN0b3JlTGl2ZVJlZ2lz
dGVyc0Zyb21TdGFja0ZvckNhbGxXaXRoVGhyb3duRXhjZXB0aW9uKCk7Ci0gICAgdm9pZCByZXN0
b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFja0ZvckNhbGwoY29uc3QgUmVnaXN0ZXJTZXQmIGRvbnRS
ZXN0b3JlKTsKKyAgICBjb25zdCBSZWdpc3RlclNldCYgY2FsY3VsYXRlTGl2ZVJlZ2lzdGVyc0Zv
ckNhbGxBbmRFeGNlcHRpb25IYW5kbGluZygpOwogCi0gICAgY29uc3QgUmVnaXN0ZXJTZXQmIGxp
dmVSZWdpc3RlcnNGb3JDYWxsKCkKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fY2Fs
Y3VsYXRlZFJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRpb25IYW5kbGluZyk7Ci0gICAgICAgIHJl
dHVybiBtX2xpdmVSZWdpc3RlcnNGb3JDYWxsOwotICAgIH0KKyAgICBTcGlsbFN0YXRlIHByZXNl
cnZlTGl2ZVJlZ2lzdGVyc1RvU3RhY2tGb3JDYWxsKGNvbnN0IFJlZ2lzdGVyU2V0JiBleHRyYSA9
IFJlZ2lzdGVyU2V0KCkpOworCisgICAgdm9pZCByZXN0b3JlTGl2ZVJlZ2lzdGVyc0Zyb21TdGFj
a0ZvckNhbGxXaXRoVGhyb3duRXhjZXB0aW9uKGNvbnN0IFNwaWxsU3RhdGUmKTsKKyAgICB2b2lk
IHJlc3RvcmVMaXZlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChjb25zdCBTcGlsbFN0YXRlJiwg
Y29uc3QgUmVnaXN0ZXJTZXQmIGRvbnRSZXN0b3JlID0gUmVnaXN0ZXJTZXQoKSk7CisKKyAgICBj
b25zdCBSZWdpc3RlclNldCYgbGl2ZVJlZ2lzdGVyc0ZvckNhbGwoKTsKIAogICAgIENhbGxTaXRl
SW5kZXggY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nT3JPcmlnaW5hbCgpOwogICAg
IENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nKCkKQEAgLTQ5
NSwyOSArNDk4LDMwIEBAIHN0cnVjdCBBY2Nlc3NHZW5lcmF0aW9uU3RhdGUgewogICAgICAgICBy
ZXR1cm4gbV9jYWxsU2l0ZUluZGV4OwogICAgIH0KIAotICAgIGNvbnN0IEhhbmRsZXJJbmZvJiBv
cmlnaW5hbEV4Y2VwdGlvbkhhbmRsZXIoKSBjb25zdDsKLSAgICB1bnNpZ25lZCBudW1iZXJPZlN0
YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24oKSBjb25zdAotICAgIHsKLSAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobV9jYWxjdWxhdGVkUmVnaXN0ZXJzRm9yQ2FsbEFuZEV4Y2VwdGlv
bkhhbmRsaW5nKTsKLSAgICAgICAgcmV0dXJuIG1fbnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZvclJl
Z2lzdGVyUHJlc2VydmF0aW9uOwotICAgIH0KKyAgICBjb25zdCBIYW5kbGVySW5mbyYgb3JpZ2lu
YWxFeGNlcHRpb25IYW5kbGVyKCk7CiAKICAgICBib29sIG5lZWRzVG9SZXN0b3JlUmVnaXN0ZXJz
SWZFeGNlcHRpb24oKSBjb25zdCB7IHJldHVybiBtX25lZWRzVG9SZXN0b3JlUmVnaXN0ZXJzSWZF
eGNlcHRpb247IH0KICAgICBDYWxsU2l0ZUluZGV4IG9yaWdpbmFsQ2FsbFNpdGVJbmRleCgpIGNv
bnN0OwogICAgIAogICAgIHZvaWQgZW1pdEV4cGxpY2l0RXhjZXB0aW9uSGFuZGxlcigpOwotICAg
IAotcHJpdmF0ZToKLSAgICBjb25zdCBSZWdpc3RlclNldCYgbGl2ZVJlZ2lzdGVyc1RvUHJlc2Vy
dmVBdEV4Y2VwdGlvbkhhbmRsaW5nQ2FsbFNpdGUoKQorCisgICAgdm9pZCBzZXRTcGlsbFN0YXRl
Rm9ySlNHZXR0ZXJTZXR0ZXIoU3BpbGxTdGF0ZSYgc3BpbGxTdGF0ZSkKICAgICB7Ci0gICAgICAg
IFJFTEVBU0VfQVNTRVJUKG1fY2FsY3VsYXRlZFJlZ2lzdGVyc0ZvckNhbGxBbmRFeGNlcHRpb25I
YW5kbGluZyk7Ci0gICAgICAgIHJldHVybiBtX2xpdmVSZWdpc3RlcnNUb1ByZXNlcnZlQXRFeGNl
cHRpb25IYW5kbGluZ0NhbGxTaXRlOworICAgICAgICBpZiAoIW1fc3BpbGxTdGF0ZUZvckpTR2V0
dGVyU2V0dGVyLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgQVNTRVJUKG1fc3BpbGxTdGF0ZUZv
ckpTR2V0dGVyU2V0dGVyLm51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNlcnZh
dGlvbiA9PSBzcGlsbFN0YXRlLm51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3RlclByZXNl
cnZhdGlvbik7CisgICAgICAgICAgICBBU1NFUlQobV9zcGlsbFN0YXRlRm9ySlNHZXR0ZXJTZXR0
ZXIuc3BpbGxlZFJlZ2lzdGVycyA9PSBzcGlsbFN0YXRlLnNwaWxsZWRSZWdpc3RlcnMpOworICAg
ICAgICB9CisgICAgICAgIG1fc3BpbGxTdGF0ZUZvckpTR2V0dGVyU2V0dGVyID0gc3BpbGxTdGF0
ZTsKICAgICB9CisgICAgU3BpbGxTdGF0ZSBzcGlsbFN0YXRlRm9ySlNHZXR0ZXJTZXR0ZXIoKSBj
b25zdCB7IHJldHVybiBtX3NwaWxsU3RhdGVGb3JKU0dldHRlclNldHRlcjsgfQorICAgIAorcHJp
dmF0ZToKKyAgICBjb25zdCBSZWdpc3RlclNldCYgbGl2ZVJlZ2lzdGVyc1RvUHJlc2VydmVBdEV4
Y2VwdGlvbkhhbmRsaW5nQ2FsbFNpdGUoKTsKICAgICAKICAgICBSZWdpc3RlclNldCBtX2xpdmVS
ZWdpc3RlcnNUb1ByZXNlcnZlQXRFeGNlcHRpb25IYW5kbGluZ0NhbGxTaXRlOwogICAgIFJlZ2lz
dGVyU2V0IG1fbGl2ZVJlZ2lzdGVyc0ZvckNhbGw7CiAgICAgQ2FsbFNpdGVJbmRleCBtX2NhbGxT
aXRlSW5kZXggeyBDYWxsU2l0ZUluZGV4KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSkgfTsKLSAgICB1bnNpZ25lZCBtX251bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3Rl
clByZXNlcnZhdGlvbiB7IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSB9Owor
ICAgIFNwaWxsU3RhdGUgbV9zcGlsbFN0YXRlRm9ySlNHZXR0ZXJTZXR0ZXI7CiAgICAgYm9vbCBt
X2NhbGN1bGF0ZWRSZWdpc3RlcnNGb3JDYWxsQW5kRXhjZXB0aW9uSGFuZGxpbmcgOiAxOwogICAg
IGJvb2wgbV9uZWVkc1RvUmVzdG9yZVJlZ2lzdGVyc0lmRXhjZXB0aW9uIDogMTsKICAgICBib29s
IG1fY2FsY3VsYXRlZENhbGxTaXRlSW5kZXggOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdET01KSVRQYXRjaHBvaW50UGFyYW1zLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5jcHAKaW5kZXggMGExMWM2
NzEzNDdkNzFiZmRhMzUxOTMwZTdjYjU1ZjFhNWVjNmYwNy4uOGVkNzdiNTJlZWNjYzUzYTA5NTQ2
MTI4NmE1ODMxYWI3ZGQxNWNiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdET01KSVRQYXRjaHBvaW50UGFyYW1zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuY3BwCkBAIC00MCw3ICs0MCw3IEBAIHN0
YXRpYyB2b2lkIGRpc3BhdGNoKFNwZWN1bGF0aXZlSklUKiBqaXQsIENDYWxsSGVscGVyczo6SnVt
cExpc3QgZnJvbSwgT3BlcmF0aW9uCiB9CiAKICNkZWZpbmUgSlNDX0RFRklORV9DQUxMX09QRVJB
VElPTlMoT3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwgLi4uKSBcCi0gICAgdm9pZCBET01KSVRQ
YXRjaHBvaW50UGFyYW1zOjphZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExp
c3QgZnJvbSwgQ0NhbGxIZWxwZXJzJiwgT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIFJlc3VsdFR5
cGUgcmVzdWx0LCBzdGQ6OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBjb25zdCBcCisgICAgdm9p
ZCBET01KSVRQYXRjaHBvaW50UGFyYW1zOjphZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVy
czo6SnVtcExpc3QgZnJvbSwgQ0NhbGxIZWxwZXJzJiwgT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24s
IFJlc3VsdFR5cGUgcmVzdWx0LCBzdGQ6OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBcCiAgICAg
eyBcCiAgICAgICAgIGRpc3BhdGNoKG1faml0LCBmcm9tLCBvcGVyYXRpb24sIHJlc3VsdCwgYXJn
cywgc3RkOjptYWtlX2luZGV4X3NlcXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxkZWNsdHlwZShhcmdz
KT46OnZhbHVlPigpKTsgXAogICAgIH0gXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdET01KSVRQYXRjaHBvaW50UGFyYW1zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaAppbmRleCA0NmZkZDRiZTYwMDRmMzMx
ZDdhOTk2Y2ExNjZiYTYxMzAwMjA5ZjgyLi5mYjZhYjBiMmM2ODM3MTkyYTI4YjdlNjUxNTc0YzA1
NTVlMTU1ZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RPTUpJ
VFBhdGNocG9pbnRQYXJhbXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RP
TUpJVFBhdGNocG9pbnRQYXJhbXMuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBET01KSVRQYXRj
aHBvaW50UGFyYW1zIDogcHVibGljIERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyB7CiAgICAgfQog
CiBwcml2YXRlOgotI2RlZmluZSBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUyhPcGVyYXRpb25U
eXBlLCBSZXN1bHRUeXBlLCAuLi4pIHZvaWQgYWRkU2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBl
cnM6Okp1bXBMaXN0LCBDQ2FsbEhlbHBlcnMmLCBPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCBz
dGQ6OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBjb25zdCBvdmVycmlkZTsKKyNkZWZpbmUgSlND
X0RFRklORV9DQUxMX09QRVJBVElPTlMoT3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwgLi4uKSB2
b2lkIGFkZFNsb3dQYXRoQ2FsbEltcGwoQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCwgQ0NhbGxIZWxw
ZXJzJiwgT3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwgc3RkOjp0dXBsZTxfX1ZBX0FSR1NfXz4g
YXJncykgb3ZlcnJpZGU7CiAgICAgRE9NSklUX1NMT1dfUEFUSF9DQUxMUyhKU0NfREVGSU5FX0NB
TExfT1BFUkFUSU9OUykKICN1bmRlZiBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUUGF0Y2hwb2ludC5oCmluZGV4IDM4
NjA4ZTI1NjlhMmFjZTY5MTBiMjg5MTkwN2Y1YmRiOGE5NTljNDMuLmJiOWY1ZTRmOWI4N2YyMTM3
NTNmYWI4YTU5ZjAwNzk4ZGY2OTBmMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kb21qaXQvRE9NSklUUGF0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
b21qaXQvRE9NSklUUGF0Y2hwb2ludC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgRE9NSklUIHsKIAogY2xhc3MgUGF0Y2hwb2ludFBhcmFtczsKIAotdHlwZWRl
ZiBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IFBhdGNocG9pbnRHZW5lcmF0b3JGdW5jdGlvbihDQ2Fs
bEhlbHBlcnMmLCBjb25zdCBQYXRjaHBvaW50UGFyYW1zJik7Cit0eXBlZGVmIENDYWxsSGVscGVy
czo6SnVtcExpc3QgUGF0Y2hwb2ludEdlbmVyYXRvckZ1bmN0aW9uKENDYWxsSGVscGVycyYsIFBh
dGNocG9pbnRQYXJhbXMmKTsKIHR5cGVkZWYgU2hhcmVkVGFzazxQYXRjaHBvaW50R2VuZXJhdG9y
RnVuY3Rpb24+IFBhdGNocG9pbnRHZW5lcmF0b3I7CiAKIC8vIERPTUpJVCBwYXRjaHBvaW50IGlz
IHRoZSB3YXkgdG8gaW5qZWN0IGFuIG9wYXF1ZSBjb2RlIGdlbmVyYXRvciBpbnRvIERGRyBhbmQg
RlRMLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRQYXRj
aHBvaW50UGFyYW1zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNo
cG9pbnRQYXJhbXMuaAppbmRleCBhZWVjZTFiN2UyOTZlZDE0YjQ2ZTRlZDY5MDg3MWQwMmEwNzY4
MjM0Li5kODNiNmIwYmYxNjY0MDViZmM0ZGM4ZTMxNTRkMTA5ZGVhMjhmMTA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnRQYXJhbXMu
aApAQCAtNTUsMTMgKzU1LDEzIEBAIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhdGNocG9pbnRQYXJh
bXMpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5h
bWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAgIHZvaWQgYWRkU2xvd1Bh
dGhDYWxsKENDYWxsSGVscGVyczo6SnVtcExpc3QgZnJvbSwgQ0NhbGxIZWxwZXJzJiBqaXQsIEZ1
bmN0aW9uVHlwZSBmdW5jdGlvbiwgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1
bWVudHMpIGNvbnN0CisgICAgdm9pZCBhZGRTbG93UGF0aENhbGwoQ0NhbGxIZWxwZXJzOjpKdW1w
TGlzdCBmcm9tLCBDQ2FsbEhlbHBlcnMmIGppdCwgRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLCBSZXN1
bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKICAgICB7CiAgICAgICAgIGFk
ZFNsb3dQYXRoQ2FsbEltcGwoZnJvbSwgaml0LCBmdW5jdGlvbiwgcmVzdWx0LCBzdGQ6Om1ha2Vf
dHVwbGUoYXJndW1lbnRzLi4uKSk7CiAgICAgfQogCiBwcml2YXRlOgotI2RlZmluZSBKU0NfREVG
SU5FX0NBTExfT1BFUkFUSU9OUyhPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCAuLi4pIEpTX0VY
UE9SVF9QUklWQVRFIHZpcnR1YWwgdm9pZCBhZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVy
czo6SnVtcExpc3QsIENDYWxsSGVscGVycyYsIE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUsIHN0
ZDo6dHVwbGU8X19WQV9BUkdTX18+IGFyZ3MpIGNvbnN0ID0gMDsKKyNkZWZpbmUgSlNDX0RFRklO
RV9DQUxMX09QRVJBVElPTlMoT3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwgLi4uKSBKU19FWFBP
UlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgYWRkU2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0LCBDQ2FsbEhlbHBlcnMmLCBPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCBzdGQ6
OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdzKSA9IDA7CiAgICAgRE9NSklUX1NMT1dfUEFUSF9DQUxM
UyhKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUykKICN1bmRlZiBKU0NfREVGSU5FX0NBTExfT1BF
UkFUSU9OUwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTERPTUpJ
VFBhdGNocG9pbnRQYXJhbXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExET01K
SVRQYXRjaHBvaW50UGFyYW1zLmNwcAppbmRleCBhYTIyNTU4NzgwNjBjNWY0ZmZlOWJlMWEzN2Uz
ZjJjNDg1N2JiNDgxLi4xMDZlMmU1NjE5OGI0YzFjY2U0ZDM0MTZiZWEwZTZiYjI4ZTM1NGViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTERPTUpJVFBhdGNocG9pbnRQ
YXJhbXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRE9NSklUUGF0Y2hw
b2ludFBhcmFtcy5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIHZvaWQgZGlzcGF0Y2goQ0Nh
bGxIZWxwZXJzJiBqaXQsIEZUTDo6U3RhdGUqIHN0YXRlLCBjb25zdCBCMzo6U3RhY2ttYXBHZW4K
IH0KIAogI2RlZmluZSBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUyhPcGVyYXRpb25UeXBlLCBS
ZXN1bHRUeXBlLCAuLi4pIFwKLSAgICB2b2lkIERPTUpJVFBhdGNocG9pbnRQYXJhbXM6OmFkZFNs
b3dQYXRoQ2FsbEltcGwoQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBmcm9tLCBDQ2FsbEhlbHBlcnMm
IGppdCwgT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIFJlc3VsdFR5cGUgcmVzdWx0LCBzdGQ6OnR1
cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBjb25zdCBcCisgICAgdm9pZCBET01KSVRQYXRjaHBvaW50
UGFyYW1zOjphZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExpc3QgZnJvbSwg
Q0NhbGxIZWxwZXJzJiBqaXQsIE9wZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBSZXN1bHRUeXBlIHJl
c3VsdCwgc3RkOjp0dXBsZTxfX1ZBX0FSR1NfXz4gYXJncykgXAogICAgIHsgXAogICAgICAgICBk
aXNwYXRjaChqaXQsICZtX3N0YXRlLCBtX3BhcmFtcywgbV9ub2RlLCBtX2V4Y2VwdGlvbnMsIGZy
b20sIG9wZXJhdGlvbiwgcmVzdWx0LCBhcmdzLCBzdGQ6Om1ha2VfaW5kZXhfc2VxdWVuY2U8c3Rk
Ojp0dXBsZV9zaXplPGRlY2x0eXBlKGFyZ3MpPjo6dmFsdWU+KCkpOyBcCiAgICAgfSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTERPTUpJVFBhdGNocG9pbnRQYXJh
bXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRE9NSklUUGF0Y2hwb2ludFBhcmFt
cy5oCmluZGV4IDJkMTNlZWFhN2Q1ODdjYjQ3ZTkzNzczMTI2ZmY3MDU5MzY0NDNmN2EuLjMzODdj
OTA4NmUxMzY2MTI4NGY1NzhjNmNhNDQ0MmUyNzRjMGNmZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oCkBAIC00Niw3
ICs0Niw3IEBAIGNsYXNzIERPTUpJVFBhdGNocG9pbnRQYXJhbXMgOiBwdWJsaWMgRE9NSklUOjpQ
YXRjaHBvaW50UGFyYW1zIHsKICAgICB9CiAKIHByaXZhdGU6Ci0jZGVmaW5lIEpTQ19ERUZJTkVf
Q0FMTF9PUEVSQVRJT05TKE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUsIC4uLikgdm9pZCBhZGRT
bG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExpc3QsIENDYWxsSGVscGVycyYsIE9w
ZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUsIHN0ZDo6dHVwbGU8X19WQV9BUkdTX18+IGFyZ3MpIGNv
bnN0IG92ZXJyaWRlOworI2RlZmluZSBKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUyhPcGVyYXRp
b25UeXBlLCBSZXN1bHRUeXBlLCAuLi4pIHZvaWQgYWRkU2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0LCBDQ2FsbEhlbHBlcnMmLCBPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBl
LCBzdGQ6OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBvdmVycmlkZTsKICAgICBET01KSVRfU0xP
V19QQVRIX0NBTExTKEpTQ19ERUZJTkVfQ0FMTF9PUEVSQVRJT05TKQogI3VuZGVmIEpTQ19ERUZJ
TkVfQ0FMTF9PUEVSQVRJT05TCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggNmU4OTcxNjlkYzA4
M2QwNTgzMjgyNWRkNWNiMGIxMTg1OWViZjE2Mi4uODQwMjIzNmFjOTA3NzM2Y2RmNDQ3NzMzYWVl
MGUwZWQ4ZjYyOTdjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTU1Nyw2ICs1NTcsMjIgQEAg
Y2xhc3MgRE9NSklUTm9kZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oSlNDOjpKU1R5cGUoTGFzdEpTQ09iamVjdFR5cGUgKyAxKSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOwogICAgIH0KIAorI2lmIEVOQUJMRShKSVQpCisgICAgc3RhdGljIFJlZjxET01KSVQ6
OlBhdGNocG9pbnQ+IGNoZWNrRE9NSklUTm9kZSgpCisgICAgeworICAgICAgICBSZWY8RE9NSklU
OjpQYXRjaHBvaW50PiBwYXRjaHBvaW50ID0gRE9NSklUOjpQYXRjaHBvaW50OjpjcmVhdGUoKTsK
KyAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwg
RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6SnVtcExpc3QgZmFpbHVyZUNhc2VzOworICAgICAgICAgICAgZmFpbHVyZUNhc2VzLmFw
cGVuZChqaXQuYnJhbmNoOCgKKyAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFs
LAorICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhwYXJhbXNbMF0uZ3ByKCks
IEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKEpTQzo6SlNUeXBlKExhc3RKU0NPYmplY3RUeXBlICsgMSkpKSk7
CisgICAgICAgICAgICByZXR1cm4gZmFpbHVyZUNhc2VzOworICAgICAgICB9KTsKKyAgICAgICAg
cmV0dXJuIHBhdGNocG9pbnQ7CisgICAgfQorI2VuZGlmCisKICAgICBzdGF0aWMgRE9NSklUTm9k
ZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBE
T01KSVROb2RlKiBnZXR0ZXIgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxET01KSVROb2Rl
Pih2bS5oZWFwLCBzaXplb2YoRE9NSklUTm9kZSkpKSBET01KSVROb2RlKHZtLCBzdHJ1Y3R1cmUp
OwpAQCAtNjA4LDIzICs2MjQsMTQgQEAgY2xhc3MgRE9NSklUR2V0dGVyIDogcHVibGljIERPTUpJ
VE5vZGUgewogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+
IGNoZWNrRE9NKCkgb3ZlcnJpZGUKICAgICAgICAgewotICAgICAgICAgICAgUmVmPERPTUpJVDo6
UGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IERPTUpJVDo6UGF0Y2hwb2ludDo6Y3JlYXRlKCk7Ci0g
ICAgICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0
LCBjb25zdCBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykgewotICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgZmFpbHVyZUNhc2VzOwotICAgICAgICAgICAgICAg
IGZhaWx1cmVDYXNlcy5hcHBlbmQoaml0LmJyYW5jaDgoCi0gICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6Tm90RXF1YWwsCi0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
QWRkcmVzcyhwYXJhbXNbMF0uZ3ByKCksIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAot
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU0M6OkpTVHlw
ZShMYXN0SlNDT2JqZWN0VHlwZSArIDEpKSkpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWls
dXJlQ2FzZXM7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybiBwYXRjaHBvaW50
OworICAgICAgICAgICAgcmV0dXJuIERPTUpJVE5vZGU6OmNoZWNrRE9NSklUTm9kZSgpOwogICAg
ICAgICB9CiAKICAgICAgICAgUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET00o
KSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBSZWY8RE9NSklUOjpDYWxsRE9NUGF0
Y2hwb2ludD4gcGF0Y2hwb2ludCA9IERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ6OmNyZWF0ZSgp
OwogICAgICAgICAgICAgcGF0Y2hwb2ludC0+cmVxdWlyZUdsb2JhbE9iamVjdCA9IGZhbHNlOwot
ICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAg
IHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIERPTUpJVDo6
UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mg
cmVzdWx0cyA9IHBhcmFtc1swXS5qc1ZhbHVlUmVncygpOwogICAgICAgICAgICAgICAgIEdQUlJl
ZyBkb20gPSBwYXJhbXNbMV0uZ3ByKCk7CiAKQEAgLTY2Niw2ICs2NzMsMTE1IEBAIGNsYXNzIERP
TUpJVEdldHRlciA6IHB1YmxpYyBET01KSVROb2RlIHsKICAgICB9CiB9OwogCitjbGFzcyBET01K
SVRHZXR0ZXJDb21wbGV4IDogcHVibGljIERPTUpJVE5vZGUgeworcHVibGljOgorICAgIERPTUpJ
VEdldHRlckNvbXBsZXgoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBC
YXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKyAg
ICB0eXBlZGVmIERPTUpJVE5vZGUgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNDOjpKU1R5cGUoTGFz
dEpTQ09iamVjdFR5cGUgKyAxKSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKwor
ICAgIHN0YXRpYyBET01KSVRHZXR0ZXJDb21wbGV4KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAg
IERPTUpJVEdldHRlckNvbXBsZXgqIGdldHRlciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PERPTUpJVEdldHRlckNvbXBsZXg+KHZtLmhlYXAsIHNpemVvZihET01KSVRHZXR0ZXJDb21wbGV4
KSkpIERPTUpJVEdldHRlckNvbXBsZXgodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGdldHRlci0+
ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBnZXR0ZXI7
CisgICAgfQorCisgICAgY2xhc3MgRE9NSklUTm9kZURPTUpJVCA6IHB1YmxpYyBET01KSVQ6Okdl
dHRlclNldHRlciB7CisgICAgcHVibGljOgorICAgICAgICBET01KSVROb2RlRE9NSklUKCkKKyAg
ICAgICAgICAgIDogRE9NSklUOjpHZXR0ZXJTZXR0ZXIoRE9NSklUR2V0dGVyQ29tcGxleDo6Y3Vz
dG9tR2V0dGVyLCBudWxscHRyLCBET01KSVROb2RlOjppbmZvKCkpCisgICAgICAgIHsKKyAgICAg
ICAgfQorCisjaWYgRU5BQkxFKEpJVCkKKyAgICAgICAgUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4g
Y2hlY2tET00oKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gRE9NSklU
Tm9kZTo6Y2hlY2tET01KSVROb2RlKCk7CisgICAgICAgIH0KKworICAgICAgICBSZWY8RE9NSklU
OjpDYWxsRE9NUGF0Y2hwb2ludD4gY2FsbERPTSgpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAg
ICAgICAgIFJlZlB0cjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBwYXRjaHBvaW50ID0gRE9N
SklUOjpDYWxsRE9NUGF0Y2hwb2ludDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBzdGF0aWNfYXNz
ZXJ0KEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzID49IDQsICJOdW1iZXIgb2YgcmVnaXN0ZXJz
IHNob3VsZCBiZSBsYXJnZXIgb3IgZXF1YWwgdG8gNC4iKTsKKyAgICAgICAgICAgIHBhdGNocG9p
bnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzIC0g
NDsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPm51bUZQU2NyYXRjaFJlZ2lzdGVycyA9IDM7Cisg
ICAgICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0
LCBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIEpT
VmFsdWVSZWdzIHJlc3VsdHMgPSBwYXJhbXNbMF0uanNWYWx1ZVJlZ3MoKTsKKyAgICAgICAgICAg
ICAgICBHUFJSZWcgZG9tR1BSID0gcGFyYW1zWzJdLmdwcigpOworICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnM7
ICsraSkKKyAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoNDIpLCBwYXJhbXMuZ3BTY3JhdGNoKGkpKTsKKworICAgICAgICAgICAgICAgIHBhcmFt
cy5hZGRTbG93UGF0aENhbGwoaml0Lmp1bXAoKSwgaml0LCBzdGF0aWNfY2FzdDxFbmNvZGVkSlNW
YWx1ZSgqKShFeGVjU3RhdGUqLCB2b2lkKik+KFtdKEV4ZWNTdGF0ZSogZXhlYywgdm9pZCogcG9p
bnRlcikgeworICAgICAgICAgICAgICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgICAg
ICAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
ICAgICAgICAgICAgICAgIGF1dG8qIG9iamVjdCA9IHN0YXRpY19jYXN0PERPTUpJVE5vZGUqPihw
b2ludGVyKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byogZG9taml0R2V0dGVyQ29tcGxleCA9
IGpzRHluYW1pY0Nhc3Q8RE9NSklUR2V0dGVyQ29tcGxleCo+KG9iamVjdCk7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChkb21qaXRHZXR0ZXJDb21wbGV4KSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoZG9taml0R2V0dGVyQ29tcGxleC0+bV9lbmFibGVFeGNlcHRpb24pCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlv
bihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJET01KSVRHZXR0
ZXJDb21wbGV4IHNsb3cgY2FsbCBleGNlcHRpb24iKSkpKTsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKG9i
amVjdC0+dmFsdWUoKSkpOworICAgICAgICAgICAgICAgIH0pLCByZXN1bHRzLCBkb21HUFIpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KCk7CisKKyAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuICpwYXRjaHBvaW50LmdldCgpOworICAgICAg
ICB9CisjZW5kaWYKKyAgICB9OworCisgICAgc3RhdGljIERPTUpJVDo6R2V0dGVyU2V0dGVyKiBk
b21KSVROb2RlR2V0dGVyU2V0dGVyKCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxET01KSVROb2RlRE9NSklUPiBncmFwaDsKKyAgICAgICAgcmV0dXJuICZncmFwaC5nZXQo
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgeworICAgICAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CisgICAgICAgIERPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVQgPSBkb21K
SVROb2RlR2V0dGVyU2V0dGVyKCk7CisgICAgICAgIEN1c3RvbUdldHRlclNldHRlciogY3VzdG9t
R2V0dGVyU2V0dGVyID0gQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGRvbUpJVC0+Z2V0
dGVyKCksIGRvbUpJVC0+c2V0dGVyKCksIGRvbUpJVCk7CisgICAgICAgIHB1dERpcmVjdEN1c3Rv
bUFjY2Vzc29yKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImN1c3RvbUdldHRlciIp
LCBjdXN0b21HZXR0ZXJTZXR0ZXIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IpOworICAgICAg
ICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgImVuYWJsZUV4Y2VwdGlvbiIpLCAwLCBmdW5jdGlvbkVuYWJsZUV4Y2Vw
dGlvbiwgTm9JbnRyaW5zaWMsIDApOworICAgIH0KKworICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRW5hYmxlRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYykK
KyAgICB7CisgICAgICAgIGF1dG8qIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8RE9NSklUR2V0dGVy
Q29tcGxleCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICAgICAgaWYgKG9iamVjdCkKKyAgICAg
ICAgICAgIG9iamVjdC0+bV9lbmFibGVFeGNlcHRpb24gPSB0cnVlOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIH0KKworICAgIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBjdXN0b21HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKKyAgICB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
ICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxET01KSVROb2RlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgICAgICBpZiAoIXRoaXNPYmplY3QpCisgICAgICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIGlmIChh
dXRvKiBkb21qaXRHZXR0ZXJDb21wbGV4ID0ganNEeW5hbWljQ2FzdDxET01KSVRHZXR0ZXJDb21w
bGV4Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpKSB7CisgICAgICAgICAgICBpZiAoZG9t
aml0R2V0dGVyQ29tcGxleC0+bV9lbmFibGVFeGNlcHRpb24pCisgICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJET01KSVRHZXR0ZXJDb21wbGV4IHNsb3cgY2FsbCBleGNl
cHRpb24iKSkpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKHRoaXNPYmplY3QtPnZhbHVlKCkpKTsKKyAgICB9CisKKyAgICBib29sIG1fZW5hYmxl
RXhjZXB0aW9uIHsgZmFsc2UgfTsKK307CisKIGNvbnN0IENsYXNzSW5mbyBFbGVtZW50OjpzX2lu
Zm8gPSB7ICJFbGVtZW50IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShF
bGVtZW50KSB9OwogY29uc3QgQ2xhc3NJbmZvIE1hc3F1ZXJhZGVyOjpzX2luZm8gPSB7ICJNYXNx
dWVyYWRlciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoTWFzcXVlcmFk
ZXIpIH07CiBjb25zdCBDbGFzc0luZm8gUm9vdDo6c19pbmZvID0geyAiUm9vdCIsICZCYXNlOjpz
X2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoUm9vdCkgfTsKQEAgLTY3Myw2ICs3ODksNyBA
QCBjb25zdCBDbGFzc0luZm8gSW1wdXJlR2V0dGVyOjpzX2luZm8gPSB7ICJJbXB1cmVHZXR0ZXIi
LCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVAogY29uc3QgQ2xhc3NJbmZvIEN1c3RvbUdldHRlcjo6
c19pbmZvID0geyAiQ3VzdG9tR2V0dGVyIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShDdXN0b21HZXR0ZXIpIH07CiBjb25zdCBDbGFzc0luZm8gRE9NSklUTm9kZTo6c19p
bmZvID0geyAiRE9NSklUTm9kZSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoRE9NSklUTm9kZSkgfTsKIGNvbnN0IENsYXNzSW5mbyBET01KSVRHZXR0ZXI6OnNfaW5mbyA9
IHsgIkRPTUpJVEdldHRlciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
RE9NSklUR2V0dGVyKSB9OworY29uc3QgQ2xhc3NJbmZvIERPTUpJVEdldHRlckNvbXBsZXg6OnNf
aW5mbyA9IHsgIkRPTUpJVEdldHRlckNvbXBsZXgiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKERPTUpJVEdldHRlckNvbXBsZXgpIH07CiBjb25zdCBDbGFzc0luZm8gUnVu
dGltZUFycmF5OjpzX2luZm8gPSB7ICJSdW50aW1lQXJyYXkiLCAmQmFzZTo6c19pbmZvLCAwLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKFJ1bnRpbWVBcnJheSkgfTsKIGNvbnN0IENsYXNzSW5mbyBTaW1w
bGVPYmplY3Q6OnNfaW5mbyA9IHsgIlNpbXBsZU9iamVjdCIsICZCYXNlOjpzX2luZm8sIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoU2ltcGxlT2JqZWN0KSB9Owogc3RhdGljIGJvb2wgdGVzdDI2MkFz
eW5jUGFzc2VkIHsgZmFsc2UgfTsKQEAgLTcwMyw2ICs4MjAsNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUltcHVyZUdldHRlcihFeGVjU3RhdGUq
KTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlQ3Vz
dG9tR2V0dGVyT2JqZWN0KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVET01KSVROb2RlT2JqZWN0KEV4ZWNTdGF0ZSopOwogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVET01KSVRHZXR0
ZXJPYmplY3QoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkNyZWF0ZURPTUpJVEdldHRlckNvbXBsZXhPYmplY3QoRXhlY1N0YXRlKik7CiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUJ1aWx0aW4o
RXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkNyZWF0ZUdsb2JhbE9iamVjdChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0SW1wdXJlR2V0dGVyRGVsZWdhdGUoRXhlY1N0YXRlKik7
CkBAIC05OTAsNiArMTEwOCw3IEBAIGNsYXNzIEdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0dsb2Jh
bE9iamVjdCB7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiY3JlYXRlQ3VzdG9tR2V0dGVyT2Jq
ZWN0IiwgZnVuY3Rpb25DcmVhdGVDdXN0b21HZXR0ZXJPYmplY3QsIDApOwogICAgICAgICBhZGRG
dW5jdGlvbih2bSwgImNyZWF0ZURPTUpJVE5vZGVPYmplY3QiLCBmdW5jdGlvbkNyZWF0ZURPTUpJ
VE5vZGVPYmplY3QsIDApOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZURPTUpJVEdl
dHRlck9iamVjdCIsIGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyT2JqZWN0LCAwKTsKKyAgICAg
ICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVET01KSVRHZXR0ZXJDb21wbGV4T2JqZWN0IiwgZnVu
Y3Rpb25DcmVhdGVET01KSVRHZXR0ZXJDb21wbGV4T2JqZWN0LCAwKTsKICAgICAgICAgYWRkRnVu
Y3Rpb24odm0sICJjcmVhdGVCdWlsdGluIiwgZnVuY3Rpb25DcmVhdGVCdWlsdGluLCAyKTsKICAg
ICAgICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVHbG9iYWxPYmplY3QiLCBmdW5jdGlvbkNyZWF0
ZUdsb2JhbE9iamVjdCwgMCk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAic2V0SW1wdXJlR2V0
dGVyRGVsZWdhdGUiLCBmdW5jdGlvblNldEltcHVyZUdldHRlckRlbGVnYXRlLCAyKTsKQEAgLTE1
MTEsNiArMTYzMCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3Jl
YXRlRE9NSklUR2V0dGVyT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25DcmVhdGVET01KSVRHZXR0ZXJDb21wbGV4T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IERPTUpJVEdldHRlckNvbXBsZXg6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCksIGpzTnVsbCgpKTsKKyAgICBET01KSVRHZXR0ZXJDb21wbGV4
KiByZXN1bHQgPSBET01KSVRHZXR0ZXJDb21wbGV4OjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzdHJ1Y3R1cmUpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
blNldEltcHVyZUdldHRlckRlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2tI
b2xkZXIgbG9jayhleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01K
SVRIZWxwZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSGVscGVycy5oCmluZGV4
IGRiZTUzNjVmODZmZWNkMWJjMmU3Mjc2MTNmNzU2MDViMTZmMzgyNTIuLjE4MDZiMmFmYTFjNDcx
YzAzMDQ2MzBiODAzOGYwMzIzZjZlMzYxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bWppdC9ET01KSVRIZWxwZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEhl
bHBlcnMuaApAQCAtNTksNyArNTksNyBAQCB2b2lkIHRyeUxvb2tVcFdyYXBwZXJDYWNoZShDQ2Fs
bEhlbHBlcnMmIGppdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgZmFpbHVyZUNhcwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBXcmFwcGVkVHlwZSwgdHlwZW5hbWUgVG9KU0Z1bmN0aW9uPgotdm9p
ZCB0b1dyYXBwZXIoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEpTQzo6RE9NSklUOjpQYXRjaHBv
aW50UGFyYW1zJiBwYXJhbXMsIEdQUlJlZyB3cmFwcGVkLCBHUFJSZWcgZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlUmVncyByZXN1bHQsIFRvSlNGdW5jdGlvbiBmdW5jdGlvbiwgSlNDOjpKU1ZhbHVlIGds
b2JhbE9iamVjdENvbnN0YW50KQordm9pZCB0b1dyYXBwZXIoQ0NhbGxIZWxwZXJzJiBqaXQsIEpT
Qzo6RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMsIEdQUlJlZyB3cmFwcGVkLCBHUFJS
ZWcgZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlUmVncyByZXN1bHQsIFRvSlNGdW5jdGlvbiBmdW5jdGlv
biwgSlNDOjpKU1ZhbHVlIGdsb2JhbE9iamVjdENvbnN0YW50KQogewogICAgIEFTU0VSVCh3cmFw
cGVkICE9IHJlc3VsdC5wYXlsb2FkR1BSKCkpOwogICAgIEFTU0VSVChnbG9iYWxPYmplY3QgIT0g
cmVzdWx0LnBheWxvYWRHUFIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQv
SlNOb2RlRE9NSklULmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3Bw
CmluZGV4IGI1MGQyNGU5YTMzYzVhM2ViNzhiOGI3MTUyZDgzODNiZWY3ZGQxMzUuLmQ4ZjU5MmM2
NGFmMWI0MmNkYjhhZWQ4NGY4Mzc1NmE1YzgyZjFhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9K
U05vZGVET01KSVQuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyBSZWY8RE9NSklUOjpDYWxs
RE9NUGF0Y2hwb2ludD4gY3JlYXRlQ2FsbERPTUZvck9mZnNldEFjY2VzcyhwdHJkaWZmX3Qgb2Zm
CiB7CiAgICAgUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBET01K
SVQ6OkNhbGxET01QYXRjaHBvaW50OjpjcmVhdGUoKTsKICAgICBwYXRjaHBvaW50LT5udW1HUFNj
cmF0Y2hSZWdpc3RlcnMgPSAxOwotICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7
CisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgRE9N
SklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVz
dWx0ID0gcGFyYW1zWzBdLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIEdQUlJlZyBnbG9iYWxPYmpl
Y3QgPSBwYXJhbXNbMV0uZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBub2RlID0gcGFyYW1zWzJdLmdw
cigpOwpAQCAtODQsNyArODQsNyBAQCBzdGF0aWMgUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9p
bnQ+IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3MocHRyZGlmZl90IG9mZgogc3RhdGljIFJl
ZjxET01KSVQ6OlBhdGNocG9pbnQ+IGNoZWNrTm9kZSgpCiB7CiAgICAgUmVmPERPTUpJVDo6UGF0
Y2hwb2ludD4gcGF0Y2hwb2ludCA9IERPTUpJVDo6UGF0Y2hwb2ludDo6Y3JlYXRlKCk7Ci0gICAg
cGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgRE9N
SklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKKyAgICBwYXRjaHBvaW50LT5zZXRHZW5l
cmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBh
cmFtcykgewogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsKICAg
ICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChET01KSVRIZWxwZXJzOjpicmFuY2hJZk5vdE5vZGUo
aml0LCBwYXJhbXNbMF0uZ3ByKCkpKTsKICAgICAgICAgcmV0dXJuIGZhaWx1cmVDYXNlczsKQEAg
LTE1Nyw3ICsxNTcsNyBAQCBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gTm9kZU5vZGVU
eXBlRE9NSklUOjpjYWxsRE9NKCkKIHsKICAgICBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2lu
dD4gcGF0Y2hwb2ludCA9IERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ6OmNyZWF0ZSgpOwogICAg
IHBhdGNocG9pbnQtPnJlcXVpcmVHbG9iYWxPYmplY3QgPSBmYWxzZTsKLSAgICBwYXRjaHBvaW50
LT5zZXRHZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBET01KSVQ6OlBhdGNo
cG9pbnRQYXJhbXMmIHBhcmFtcykgeworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0o
Q0NhbGxIZWxwZXJzJiBqaXQsIERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CiAg
ICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdCA9IHBhcmFtc1swXS5qc1ZhbHVlUmVncygpOwogICAg
ICAgICBHUFJSZWcgbm9kZSA9IHBhcmFtc1sxXS5ncHIoKTsKICAgICAgICAgaml0LmxvYWQ4KEND
YWxsSGVscGVyczo6QWRkcmVzcyhub2RlLCBKU0M6OkpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0
KCkpLCByZXN1bHQucGF5bG9hZEdQUigpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9n
IGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2I0ZmZjZWY3NWJmZTkwZDUwYmFiNzQzYzA1ZDY5
ZTdhODdhYzc3NC4uMTQ5NmU2Njc5ZTU3NWYzOWFkMjdjOWJhZWRkNjk1M2QyY2YyMGE5YiAxMDA2
NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxNi0xMC0xNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRE9NSklUXSBVc2UgRE9NSklUOjpQYXRjaHBvaW50IGluIElDCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyMjMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9k
b21qaXQtZXhjZXB0aW9uLWljLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAg
ICAgKGFjY2Vzcyk6CisgICAgICAgICogc3RyZXNzL2RvbWppdC1leGNlcHRpb24uanM6IEFkZGVk
LgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoYWNjZXNzKToKKyAgICAgICAgKiBzdHJl
c3MvZG9taml0LWdldHRlci1jb21wbGV4LXdpdGgtaW5jb3JyZWN0LW9iamVjdC5qczogQWRkZWQu
CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChhY2Nlc3MpOgorICAgICAgICAoaS5z
aG91bGRUaHJvdyk6CisgICAgICAgICogc3RyZXNzL2RvbWppdC1nZXR0ZXItY29tcGxleC5qczog
QWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChhY2Nlc3MpOgorICAgICAgICAq
IHN0cmVzcy9kb21qaXQtZ2V0dGVyLXRyeS1jYXRjaC1nZXR0ZXItYXMtZ2V0LWJ5LWlkLXJlZ2lz
dGVyLXJlc3RvcmF0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChi
YXIpOgorICAgICAgICAoZm9vKToKKwogMjAxNi0xMC0xNSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRp
QGFwcGxlLmNvbT4KIAogICAgICAgICBBc3NlcnRpb24gZmFpbGVkIHVuZGVyIG9wZXJhdGlvblRv
TG93ZXJDYXNlIHdpdGggYSByb3BlIHdpdGggemVybyBsZW5ndGgKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2RvbWppdC1leGNlcHRpb24taWMuanMgYi9KU1Rlc3RzL3N0cmVzcy9kb21qaXQt
ZXhjZXB0aW9uLWljLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyOGEyMjU3YTdhMjY2ODg1MTI0ZGI0Mzg1N2Jj
YzViNGNjMmRhMGMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kb21qaXQtZXhj
ZXB0aW9uLWljLmpzCkBAIC0wLDAgKzEsMzcgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwg
ZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKGBiYWQgdmFsdWU6ICR7U3RyaW5nKGFjdHVhbCl9YCk7Cit9CisKK2Z1bmN0aW9u
IHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9
IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygp
OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAg
ICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJv
ck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhl
cnJvcil9YCk7Cit9CisKKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGRvbWppdCA9IGNyZWF0ZURP
TUpJVEdldHRlckNvbXBsZXhPYmplY3QoKTsKKyAgICBmdW5jdGlvbiBhY2Nlc3Mob2JqZWN0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG9iamVjdC5jdXN0b21HZXR0ZXI7CisgICAgfQorICAgIG5v
SW5saW5lKGFjY2Vzcyk7CisgICAgbGV0IG5vcm1hbCA9IHsKKyAgICAgICAgY3VzdG9tR2V0dGVy
OiA0MgorICAgIH07CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAg
ICBzaG91bGRCZShhY2Nlc3MoZG9taml0KSwgNDIpOworICAgICAgICBzaG91bGRCZShhY2Nlc3Mo
bm9ybWFsKSwgNDIpOworICAgIH0KKyAgICBkb21qaXQuZW5hYmxlRXhjZXB0aW9uKCk7CisgICAg
c2hvdWxkVGhyb3coKCkgPT4gYWNjZXNzKGRvbWppdCksIGBFcnJvcjogRE9NSklUR2V0dGVyQ29t
cGxleCBzbG93IGNhbGwgZXhjZXB0aW9uYCk7Cit9KCkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvZG9taml0LWV4Y2VwdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL2RvbWppdC1leGNlcHRp
b24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDlhY2IyMmJjNjc4YmRlZTBmZTI3ZTFkNTVhNGE1ZTQ4OTRhNzQ1
MQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RvbWppdC1leGNlcHRpb24uanMK
QEAgLTAsMCArMSw2NyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewor
ICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJh
ZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3co
ZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAg
dmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsK
KyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdu
b3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30K
KyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGRvbWppdCA9IGNyZWF0ZURPTUpJVEdldHRlckNvbXBs
ZXhPYmplY3QoKTsKKyAgICBmdW5jdGlvbiBhY2Nlc3Mob2JqZWN0KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG9iamVjdC5jdXN0b21HZXR0ZXI7CisgICAgfQorICAgIG5vSW5saW5lKGFjY2Vzcyk7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICAgICAgc2hvdWxkQmUoYWNj
ZXNzKGRvbWppdCksIDQyKTsKKyAgICBkb21qaXQuZW5hYmxlRXhjZXB0aW9uKCk7CisgICAgc2hv
dWxkVGhyb3coKCkgPT4gYWNjZXNzKGRvbWppdCksIGBFcnJvcjogRE9NSklUR2V0dGVyQ29tcGxl
eCBzbG93IGNhbGwgZXhjZXB0aW9uYCk7Cit9KCkpOworKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQg
ZG9taml0ID0gY3JlYXRlRE9NSklUR2V0dGVyQ29tcGxleE9iamVjdCgpOworICAgIGZ1bmN0aW9u
IGFjY2VzcyhvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gb2JqZWN0LmN1c3RvbUdldHRl
cjsKKyAgICB9CisgICAgbm9JbmxpbmUoYWNjZXNzKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDFlMjsgKytpKQorICAgICAgICBzaG91bGRCZShhY2Nlc3MoZG9taml0KSwgNDIpOworICAgIGRv
bWppdC5lbmFibGVFeGNlcHRpb24oKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiBhY2Nlc3MoZG9t
aml0KSwgYEVycm9yOiBET01KSVRHZXR0ZXJDb21wbGV4IHNsb3cgY2FsbCBleGNlcHRpb25gKTsK
K30oKSk7CisoZnVuY3Rpb24gKCkgeworICAgIGxldCBkb21qaXQgPSBjcmVhdGVET01KSVRHZXR0
ZXJDb21wbGV4T2JqZWN0KCk7CisgICAgZnVuY3Rpb24gYWNjZXNzKG9iamVjdCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBvYmplY3QuY3VzdG9tR2V0dGVyOworICAgIH0KKyAgICBub0lubGluZShh
Y2Nlc3MpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTA7ICsraSkKKyAgICAgICAgc2hvdWxk
QmUoYWNjZXNzKGRvbWppdCksIDQyKTsKKyAgICBkb21qaXQuZW5hYmxlRXhjZXB0aW9uKCk7Cisg
ICAgc2hvdWxkVGhyb3coKCkgPT4gYWNjZXNzKGRvbWppdCksIGBFcnJvcjogRE9NSklUR2V0dGVy
Q29tcGxleCBzbG93IGNhbGwgZXhjZXB0aW9uYCk7Cit9KCkpOworKGZ1bmN0aW9uICgpIHsKKyAg
ICBsZXQgZG9taml0ID0gY3JlYXRlRE9NSklUR2V0dGVyQ29tcGxleE9iamVjdCgpOworICAgIGZ1
bmN0aW9uIGFjY2VzcyhvYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gb2JqZWN0LmN1c3Rv
bUdldHRlcjsKKyAgICB9CisgICAgbm9JbmxpbmUoYWNjZXNzKTsKKyAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDEwOyArK2kpCisgICAgICAgIHNob3VsZEJlKGFjY2Vzcyhkb21qaXQpLCA0Mik7Cisg
ICAgZG9taml0LmVuYWJsZUV4Y2VwdGlvbigpOworICAgIHNob3VsZFRocm93KCgpID0+IGFjY2Vz
cyhkb21qaXQpLCBgRXJyb3I6IERPTUpJVEdldHRlckNvbXBsZXggc2xvdyBjYWxsIGV4Y2VwdGlv
bmApOworfSgpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RvbWppdC1nZXR0ZXItY29t
cGxleC13aXRoLWluY29ycmVjdC1vYmplY3QuanMgYi9KU1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0
dGVyLWNvbXBsZXgtd2l0aC1pbmNvcnJlY3Qtb2JqZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0YjgwY2Nk
ODg0YWMzOGQwNDNiZTYyMDhjYjk4ZTdjMjBhZjZhMzAKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLWNvbXBsZXgtd2l0aC1pbmNvcnJlY3Qtb2JqZWN0Lmpz
CkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2Fn
ZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7
CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICgh
ZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAg
IGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK3ZhciBjb21wbGV4ID0g
Y3JlYXRlRE9NSklUR2V0dGVyQ29tcGxleE9iamVjdCgpOwordmFyIG9iamVjdCA9IHt9Oworb2Jq
ZWN0Ll9fcHJvdG9fXyA9IGNvbXBsZXg7CitmdW5jdGlvbiBhY2Nlc3Mob2JqZWN0KQoreworICAg
IHJldHVybiBvYmplY3QuY3VzdG9tR2V0dGVyOworfQorbm9JbmxpbmUoYWNjZXNzKTsKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAg
ICAgIGFjY2VzcyhvYmplY3QpOworICAgIH0sIGBUeXBlRXJyb3I6IFR5cGUgZXJyb3JgKTsKK30K
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RvbWppdC1nZXR0ZXItY29tcGxleC5qcyBiL0pT
VGVzdHMvc3RyZXNzL2RvbWppdC1nZXR0ZXItY29tcGxleC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTVkZTdl
NTJiMDZlZjNiMjQ0NzQ1ZGI3YzViOGU3Y2RlNjYwMDE1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvZG9taml0LWdldHRlci1jb21wbGV4LmpzCkBAIC0wLDAgKzEsMTQgQEAKK2Z1
bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6ICR7U3RyaW5nKGFj
dHVhbCl9YCk7Cit9CisKK3ZhciBjb21wbGV4ID0gY3JlYXRlRE9NSklUR2V0dGVyQ29tcGxleE9i
amVjdCgpOworZnVuY3Rpb24gYWNjZXNzKGNvbXBsZXgpCit7CisgICAgcmV0dXJuIGNvbXBsZXgu
Y3VzdG9tR2V0dGVyOworfQorbm9JbmxpbmUoYWNjZXNzKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MWU0OyArK2kpIHsKKyAgICBzaG91bGRCZShhY2Nlc3MoY29tcGxleCksIDQyKTsKK30KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RvbWppdC1nZXR0ZXItdHJ5LWNhdGNoLWdldHRlci1hcy1n
ZXQtYnktaWQtcmVnaXN0ZXItcmVzdG9yYXRpb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9kb21qaXQt
Z2V0dGVyLXRyeS1jYXRjaC1nZXR0ZXItYXMtZ2V0LWJ5LWlkLXJlZ2lzdGVyLXJlc3RvcmF0aW9u
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjVlYzkzY2MzMTFlNTlhNGRhMzZhNjQ4ZDI2MDM1MzAxNDMzOGQwNmMK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kb21qaXQtZ2V0dGVyLXRyeS1jYXRj
aC1nZXR0ZXItYXMtZ2V0LWJ5LWlkLXJlZ2lzdGVyLXJlc3RvcmF0aW9uLmpzCkBAIC0wLDAgKzEs
NTIgQEAKK2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFiKSB0aHJvdyBuZXcgRXJyb3Io
ImJhZCB2YWx1ZSIpOworfQorbm9JbmxpbmUoYXNzZXJ0KTsKKworbGV0IGk7Cit2YXIgbzEgPSBj
cmVhdGVET01KSVRHZXR0ZXJDb21wbGV4T2JqZWN0KCk7CitvMS54ID0gIngiOworCit2YXIgbzIg
PSB7CisgICAgY3VzdG9tR2V0dGVyOiA0MAorfQorCit2YXIgbzMgPSB7CisgICAgeDogMTAwLAor
ICAgIGN1c3RvbUdldHRlcjogImYiCit9CisKK2Z1bmN0aW9uIGJhcihpKSB7CisgICAgaWYgKGkg
PT09IC0xMDAwKQorICAgICAgICByZXR1cm4gbzE7CisKKyAgICBpZiAoaSAlIDIpCisgICAgICAg
IHJldHVybiBvMzsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBvMjsKK30KK25vSW5saW5lKGJh
cik7CisKK2Z1bmN0aW9uIGZvbyhpKSB7CisgICAgdmFyIG8gPSBiYXIoaSk7CisgICAgbGV0IHY7
CisgICAgbGV0IHYyOworICAgIGxldCB2MzsKKyAgICB0cnkgeworICAgICAgICB2MiA9IG8ueDsK
KyAgICAgICAgdiA9IG8uY3VzdG9tR2V0dGVyICsgdjI7CisgICAgfSBjYXRjaChlKSB7CisgICAg
ICAgIGFzc2VydCh2MiA9PT0gIngiKTsKKyAgICAgICAgYXNzZXJ0KG8gPT09IG8xKTsKKyAgICB9
Cit9Citub0lubGluZShmb28pOworCitmb28oaSk7Citmb3IgKGkgPSAwOyBpIDwgMTAwMDsgaSsr
KQorICAgIGZvbyhpKTsKKworbzEuZW5hYmxlRXhjZXB0aW9uKCk7CitpID0gLTEwMDA7Citmb3Ig
KGxldCBqID0gMDsgaiA8IDEwMDA7IGorKykKKyAgICBmb28oaSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>