<?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>78409</bug_id>
          
          <creation_ts>2012-02-10 21:46:15 -0800</creation_ts>
          <short_desc>Move special __proto__ property to Object.prototype</short_desc>
          <delta_ts>2012-02-20 13:54:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>erights</cc>
    
    <cc>jwalden+bwo</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>554572</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-02-10 21:46:15 -0800</bug_when>
    <thetext>Re-implement this as a regular accessor property.  This has three key benefits:
1) It makes it possible for objects to be given properties named __proto__.
2) Object.prototype.__proto__ can be deleted, preventing object prototypes from being changed.
3) This largely removes the magic used the implement __proto__, it can just be made a regular accessor property.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554588</commentid>
    <comment_count>1</comment_count>
      <attachid>126622</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-02-11 01:02:17 -0800</bug_when>
    <thetext>Created attachment 126622
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554597</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-11 01:40:59 -0800</bug_when>
    <thetext>Attachment 126622 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

Source/JavaScriptCore/runtime/Structure.h:149:  is__proto__ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 1 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554600</commentid>
    <comment_count>3</comment_count>
      <attachid>126622</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-11 02:21:24 -0800</bug_when>
    <thetext>Comment on attachment 126622
Patch

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

New failing tests:
fast/js/cyclic-prototypes.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554638</commentid>
    <comment_count>4</comment_count>
      <attachid>126622</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-02-11 09:43:56 -0800</bug_when>
    <thetext>Comment on attachment 126622
Patch

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

Waiting for answers to questions before r+/-ing

&gt; Source/JavaScriptCore/parser/Parser.cpp:-777
&gt; -        failIfTrueWithMessage(*name == m_globalData-&gt;propertyNames-&gt;underscoreProto, &quot;Cannot name a function __proto__&quot;);

Removing this should break tests -- i recall it hosing initialization of program code, but maybe i&apos;m wrong?  I suppose global initialization is now purely putDirect, so maybe this is okay?

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:210
&gt; +    protoAccessor-&gt;setGetter(exec-&gt;globalData(), JSFunction::create(exec, this, 0, Identifier(), globalFuncProtoGetter));
&gt; +    protoAccessor-&gt;setSetter(exec-&gt;globalData(), JSFunction::create(exec, this, 0, Identifier(), globalFuncProtoSetter));

So the decision was anonymous functions?

&gt; Source/JavaScriptCore/runtime/JSObject.cpp:222
&gt; -    structure()-&gt;setHasGetterSetterProperties(true);
&gt; +    structure()-&gt;setHasGetterSetterProperties(propertyName == globalData.propertyNames-&gt;underscoreProto);

I don&apos;t get this change at all -- it seems to drop the getter/setter existence in all cases but the one where we&apos;re setting __proto__ - this probably passes tests because all test objects probably have the object prototype so this has poisoned everything.  If it doesn&apos;t impact performance (presumably the case seeing as you&apos;ve put this up for review :D )  I don&apos;t see any reason __proto__ needs t be special cased.

&gt; Source/JavaScriptCore/runtime/JSObject.h:107
&gt; +        JS_EXPORT_PRIVATE static bool allowsAccessFrom(JSObject*, ExecState*);

This is a fairly generic name -- i can imagine in future we&apos;d want this name to be used for cross-origin checks, etc, will that still be okay then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554670</commentid>
    <comment_count>5</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-02-11 12:35:11 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; Source/JavaScriptCore/parser/Parser.cpp:-777
&gt; &gt; -        failIfTrueWithMessage(*name == m_globalData-&gt;propertyNames-&gt;underscoreProto, &quot;Cannot name a function __proto__&quot;);
&gt; 
&gt; Removing this should break tests -- i recall it hosing initialization of program code, but maybe i&apos;m wrong?  I suppose global initialization is now purely putDirect, so maybe this is okay?

Yes - see the changes in the patch to LayoutTests/fast/js/parser-syntax-check-expected.txt – these now work.  And I think it makes sense this way, now that we basically no longer need there to be anything magic about __proto__.  (Except, possibly, for object literal behaviour... but even there I wonder if it is really required for web compatibility...)

&gt; &gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:210
&gt; &gt; +    protoAccessor-&gt;setGetter(exec-&gt;globalData(), JSFunction::create(exec, this, 0, Identifier(), globalFuncProtoGetter));
&gt; &gt; +    protoAccessor-&gt;setSetter(exec-&gt;globalData(), JSFunction::create(exec, this, 0, Identifier(), globalFuncProtoSetter));
&gt; 
&gt; So the decision was anonymous functions?

There is no consensus on the ECMA list at the minute.  This change would be a step in the right direction whichever way the committee goes, since this moves __proto__ to the Object Prototype and makes in configurable (there seems to be agreement on both of these changes).

The only real outstanding question is whether this should cleanly be specified as an accessor, or whether we&apos;ll adopt Firefox&apos;s evil-magic-data-property hack.  There doesn&apos;t seem to be a broad base of support for the latter.  If the spec does go that way, we&apos;d have three options: (1) reintroduce some evil hack into the object prototype classes (2) keep it as an accessor, add a new attribute to let the accessor masquerade as a data descriptor for getOwnPropertyDescriptor, or (3) don&apos;t follow the spec – it&apos;ll only be a normative-optional annex anyway, and we should ask serious questions before adopting such a bad de-jure spec.  But I don&apos;t think it needs get to this point – I think we should just resist any spec that demands this be an ugly hack.

&gt; &gt; Source/JavaScriptCore/runtime/JSObject.cpp:222
&gt; &gt; -    structure()-&gt;setHasGetterSetterProperties(true);
&gt; &gt; +    structure()-&gt;setHasGetterSetterProperties(propertyName == globalData.propertyNames-&gt;underscoreProto);
&gt; 
&gt; I don&apos;t get this change at all -- it seems to drop the getter/setter existence in all cases but the one where we&apos;re setting __proto__ - this probably passes tests because all test objects probably have the object prototype so this has poisoned everything.  If it doesn&apos;t impact performance (presumably the case seeing as you&apos;ve put this up for review :D )  I don&apos;t see any reason __proto__ needs t be special cased.

Please see the changes in Structure.h – I&apos;m now separately tracking whether the object had any accessors at all, and whether it has any accessors other than __proto__.  This means that hasGetterSetterProperties() returns the right thing (true for Object.prototype, due to __proto__), but JSValue::put can still be optimized (checking a combination of hasGetterSetterPropertiesExcludingProto(), and testing whether the identifier is __proto__).

&gt; &gt; Source/JavaScriptCore/runtime/JSObject.h:107
&gt; &gt; +        JS_EXPORT_PRIVATE static bool allowsAccessFrom(JSObject*, ExecState*);
&gt; 
&gt; This is a fairly generic name -- i can imagine in future we&apos;d want this name to be used for cross-origin checks, etc, will that still be okay then?

Yes! – this is the cross-origin check! – see changes in JSDOMWindowBase. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554759</commentid>
    <comment_count>6</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-02-11 18:49:26 -0800</bug_when>
    <thetext>Fixed in r107498</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554825</commentid>
    <comment_count>7</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-02-12 10:48:30 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Fixed in r107498

It made two tests fail, could you check https://bugs.webkit.org/show_bug.cgi?id=78434 ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555439</commentid>
    <comment_count>8</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-02-13 11:55:34 -0800</bug_when>
    <thetext>Temporarily reverted in r107544, I think there is probably a trivial bug here – the cross-domain check in the accessor likely needs to test against the caller&apos;s security origin, rather than the callee&apos;s.

Also, should probably fix https://bugs.webkit.org/show_bug.cgi?id=78438 at the same time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560268</commentid>
    <comment_count>9</comment_count>
      <attachid>127828</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-02-20 09:49:47 -0800</bug_when>
    <thetext>Created attachment 127828
Fix layout test regressions.

The cross origin access check wasn&apos;t working properly in the last patch, since it is only overridden in the window object we need to explicitly apply the check to the object we with to access&apos;s global object.  To prevent this error in the future, I moved the &apos;virtual&apos; trap to check this from the ClassInfo table onto the GlobalObject&apos;s method table.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560274</commentid>
    <comment_count>10</comment_count>
      <attachid>127828</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-20 10:22:11 -0800</bug_when>
    <thetext>Comment on attachment 127828
Fix layout test regressions.

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

New failing tests:
fast/js/cyclic-prototypes.html
fast/dom/Window/window-custom-prototype.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560342</commentid>
    <comment_count>11</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-02-20 13:52:10 -0800</bug_when>
    <thetext>Fixed in r 108259, r 108260.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560345</commentid>
    <comment_count>12</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-02-20 13:54:45 -0800</bug_when>
    <thetext>*** Bug 78438 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126622</attachid>
            <date>2012-02-11 01:02:17 -0800</date>
            <delta_ts>2012-02-20 09:49:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>78409.patch</filename>
            <type>text/plain</type>
            <size>38427</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA3NDczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBA
CisyMDEyLTAyLTEwICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBNb3ZlIHNwZWNpYWwgX19wcm90b19fIHByb3BlcnR5IHRvIE9iamVjdC5wcm90
b3R5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4
NDA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmUt
aW1wbGVtZW50IHRoaXMgYXMgYSByZWd1bGFyIGFjY2Vzc29yIHByb3BlcnR5LiAgVGhpcyBoYXMg
dGhyZWUga2V5IGJlbmVmaXRzOgorICAgICAgICAxKSBJdCBtYWtlcyBpdCBwb3NzaWJsZSBmb3Ig
b2JqZWN0cyB0byBiZSBnaXZlbiBwcm9wZXJ0aWVzIG5hbWVkIF9fcHJvdG9fXy4KKyAgICAgICAg
MikgT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gY2FuIGJlIGRlbGV0ZWQsIHByZXZlbnRpbmcg
b2JqZWN0IHByb3RvdHlwZXMgZnJvbSBiZWluZyBjaGFuZ2VkLgorICAgICAgICAzKSBUaGlzIGxh
cmdlbHkgcmVtb3ZlcyB0aGUgbWFnaWMgdXNlZCB0aGUgaW1wbGVtZW50IF9fcHJvdG9fXywgaXQg
Y2FuIGp1c3QgYmUgbWFkZSBhIHJlZ3VsYXIgYWNjZXNzb3IgcHJvcGVydHkuCisKKyAgICAgICAg
KiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6OjpwYXJzZUZ1bmN0aW9uSW5mbyk6
CisgICAgICAgICAgICAtIE5vIG5lZWQgdG8gcHJvaGliaXQgZnVuY3Rpb25zIG5hbWVkIF9fcHJv
dG9fXy4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OnJlc2V0KToKKyAgICAgICAgICAgIC0gQWRkIF9fcHJvdG9fXyBh
Y2Nlc3NvciB0byBPYmplY3QucHJvdG90eXBlLgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jUHJvdG9HZXR0ZXIp
OgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jUHJvdG9TZXR0ZXIpOgorICAgICAgICAgICAgLSBE
ZWZpbml0aW9uIG9mIHRoZSBfX3Byb3RvX18gYWNjZXNzb3IgZnVuY3Rpb25zLgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgICAgIC0gRGVjbGFy
YXRpb24gb2YgdGhlIF9fcHJvdG9fXyBhY2Nlc3NvciBmdW5jdGlvbnMuCisgICAgICAgICogcnVu
dGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXQpOgorICAgICAg
ICAgICAgLSBSZW1vdmUgdGhlIHNwZWNpYWwgaGFuZGxpbmcgZm9yIF9fcHJvdG9fXywgdGhlcmUg
aXMgc3RpbGwgYSBjaGVjayB0byBhbGxvdyBmb3IgYSBmYXN0IGd1YXJkIGZvciBhY2Nlc3NvcnMg
ZXhjbHVkaW5nIF9fcHJvdG9fXy4KKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEFj
Y2Vzc29yKToKKyAgICAgICAgICAgIC0gVHJhY2sgb24gdGhlIHN0cnVjdHVyZSB3aGV0aGVyIGFu
IG9iamVjdCBjb250YWlucyBhY2Nlc3NvcnMgb3RoZXIgdGhhbiBvbmUgZm9yIF9fcHJvdG9fXy4K
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgICAg
IC0gTm8gbmVlZCB0byBwcm9oaWJpdCBkZWZpbml0aW9uIG9mIG93biBwcm9wZXJ0aWVzIG5hbWVk
IF9fcHJvdG9fXy4KKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjppbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAgICAgLSBSZW1v
dmUgdGhlIHNwZWNpYWwgaGFuZGxpbmcgZm9yIF9fcHJvdG9fXy4KKyAgICAgICAgKEpTQzo6SlNW
YWx1ZTo6Z2V0KToKKyAgICAgICAgICAgIC0gUmVtb3ZlIHRoZSBzcGVjaWFsIGhhbmRsaW5nIGZv
ciBfX3Byb3RvX18uCisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5jcHA6CisgICAgICAgIChK
U0M6OkpTU3RyaW5nOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAgICAgLSBSZW1vdmUg
dGhlIHNwZWNpYWwgaGFuZGxpbmcgZm9yIF9fcHJvdG9fXy4KKyAgICAgICAgKiBydW50aW1lL0pT
VmFsdWUuaDoKKyAgICAgICAgKEpTVmFsdWUpOgorICAgICAgICAgICAgLSBNYWRlIHN5bnRoZXNp
emVQcm90b3R5cGUgcHVibGljICh0aGlzIG1heSBiZSBuZWVkZWQgYnkgdGhlIF9fcHJvdG9fXyBn
ZXR0ZXIpLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mKToKKyAgICAgICAgICAgIC0g
UGVyZm9ybSB0aGUgc2VjdXJpdHkgY2hlY2sgJiBjYWxsIHByb3RvdHlwZSgpIGRpcmVjdGx5Lgor
ICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
OjpTdHJ1Y3R1cmUpOgorICAgICAgICAgICAgLSBBZGRlZCAnRXhjbHVkaW5nUHJvdG8nIHZhcmlh
bnQgb2YgdGhlICdoYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzJyBzdGF0ZS4KKyAgICAgICAgKiBy
dW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Omhhc0dldHRlclNl
dHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90byk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6
c2V0SGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyk6CisgICAgICAgIChTdHJ1Y3R1cmUpOgorICAg
ICAgICAgICAgLSBBZGRlZCAnRXhjbHVkaW5nUHJvdG8nIHZhcmlhbnQgb2YgdGhlICdoYXNHZXR0
ZXJTZXR0ZXJQcm9wZXJ0aWVzJyBzdGF0ZS4KKwogMjAxMi0wMi0xMCAgVmluZWV0IENoYXVkaGFy
eSAgPHJnZjc0OEBtb3Rvcm9sYS5jb20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcyNzU2CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCShyZXZpc2lvbiAxMDc0NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3NCw3ICs3NzQsNiBAQCB0ZW1w
bGF0ZSA8RnVuY3Rpb25SZXF1aXJlbWVudHMgcmVxdWlyZW1lCiAgICAgZnVuY3Rpb25TY29wZS0+
c2V0SXNGdW5jdGlvbigpOwogICAgIGlmIChtYXRjaChJREVOVCkpIHsKICAgICAgICAgbmFtZSA9
IG1fdG9rZW4ubV9kYXRhLmlkZW50OwotICAgICAgICBmYWlsSWZUcnVlV2l0aE1lc3NhZ2UoKm5h
bWUgPT0gbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8sICJDYW5u
b3QgbmFtZSBhIGZ1bmN0aW9uIF9fcHJvdG9fXyIpOwogICAgICAgICBuZXh0KCk7CiAgICAgICAg
IGlmICghbmFtZUlzSW5Db250YWluaW5nU2NvcGUpCiAgICAgICAgICAgICBmYWlsSWZGYWxzZUlm
U3RyaWN0KGZ1bmN0aW9uU2NvcGUtPmRlY2xhcmVWYXJpYWJsZShuYW1lKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAkocmV2aXNpb24gMTA3NDY5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg5LDYgKzg5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdHlwZWRlZiBi
b29sICgqR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yRnVuY3Rpb25QdHIpKEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgICAg
ICBHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JGdW5jdGlvblB0ciBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3I7CisKKyAgICAgICAgdHlwZWRlZiBib29sICgqQWxsb3dzQWNjZXNzRnJvbUZ1bmN0aW9u
UHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSopOworICAgICAgICBBbGxvd3NBY2Nlc3NGcm9tRnVu
Y3Rpb25QdHIgYWxsb3dzQWNjZXNzRnJvbTsKICAgICB9OwogCiAjZGVmaW5lIENSRUFURV9NRU1C
RVJfQ0hFQ0tFUihtZW1iZXIpIFwKQEAgLTEzMCw2ICsxMzMsNyBAQCBzdHJ1Y3QgTWVtYmVyQ2hl
Y2sjI21lbWJlciB7IFwKICAgICAgICAgJkNsYXNzTmFtZTo6cHV0RGlyZWN0VmlydHVhbCwgXAog
ICAgICAgICAmQ2xhc3NOYW1lOjpkZWZpbmVPd25Qcm9wZXJ0eSwgXAogICAgICAgICAmQ2xhc3NO
YW1lOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsIFwKKyAgICAgICAgJkNsYXNzTmFtZTo6YWxs
b3dzQWNjZXNzRnJvbSwgXAogICAgIH0sIFwKICAgICBzaXplb2YoQ2xhc3NOYW1lKSwgXAogICAg
IENsYXNzTmFtZTo6VHlwZWRBcnJheVN0b3JhZ2VUeXBlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHJldmlzaW9uIDEwNzQ2OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw2ICsx
OTEsMTIgQEAgdm9pZCBKU0NlbGw6OnB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QqLAogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCitib29sIEpTQ2VsbDo6YWxsb3dzQWNjZXNzRnJvbShK
U09iamVjdCosIEV4ZWNTdGF0ZSopCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCiBib29sIEpTQ2VsbDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJiwg
Ym9vbCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAxMDc0NjkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDYgKzE2MSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19BU1NF
UlQgdm9pZCBwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAg
ICAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYsIGJv
b2wgc2hvdWxkVGhyb3cpOwogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlE
ZXNjcmlwdG9yJik7CisgICAgICAgIHN0YXRpYyBib29sIGFsbG93c0FjY2Vzc0Zyb20oSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IENsYXNzSW5m
byogbV9jbGFzc0luZm87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAxMDc0NjkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIw
NSw2ICsyMDUsMTAgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90bwog
ICAgIG1fY2FsbEZ1bmN0aW9uLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGNhbGxGdW5j
dGlvbik7CiAgICAgbV9hcHBseUZ1bmN0aW9uLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMs
IGFwcGx5RnVuY3Rpb24pOwogICAgIG1fb2JqZWN0UHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxE
YXRhKCksIHRoaXMsIE9iamVjdFByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIHRoaXMsIE9iamVjdFBy
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywganNOdWxs
KCkpKSk7CisgICAgR2V0dGVyU2V0dGVyKiBwcm90b0FjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpj
cmVhdGUoZXhlYyk7CisgICAgcHJvdG9BY2Nlc3Nvci0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERh
dGEoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsIElkZW50aWZpZXIoKSwgZ2xv
YmFsRnVuY1Byb3RvR2V0dGVyKSk7CisgICAgcHJvdG9BY2Nlc3Nvci0+c2V0U2V0dGVyKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIDAsIElkZW50aWZp
ZXIoKSwgZ2xvYmFsRnVuY1Byb3RvU2V0dGVyKSk7CisgICAgbV9vYmplY3RQcm90b3R5cGUtPnB1
dERpcmVjdEFjY2Vzc29yKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LnVuZGVyc2NvcmVQcm90bywgcHJvdG9BY2Nlc3NvciwgQWNjZXNzb3IgfCBEb250RW51bSk7CiAg
ICAgbV9mdW5jdGlvblByb3RvdHlwZS0+c3RydWN0dXJlKCktPnNldFByb3RvdHlwZVdpdGhvdXRU
cmFuc2l0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwog
CiAgICAgbV9lbXB0eU9iamVjdFN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlz
LCBtX29iamVjdFByb3RvdHlwZS0+aW5oZXJpdG9ySUQoZXhlYy0+Z2xvYmFsRGF0YSgpKSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9u
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuY3BwCShyZXZpc2lvbiAxMDc0NjkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcxNCw0ICs3MTQsNDEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9i
YWxGdW5jVAogICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwogfQogCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b0dldHRlcihFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgaWYgKCFleGVjLT50aGlzVmFsdWUoKS5pc09iamVjdCgpKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnRoaXNWYWx1ZSgpLnN5bnRoZXNpemVQcm90b3R5
cGUoZXhlYykpOworCisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBhc09iamVjdChleGVjLT50
aGlzVmFsdWUoKSk7CisgICAgaWYgKCF0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5hbGxvd3NB
Y2Nlc3NGcm9tKHRoaXNPYmplY3QsIGV4ZWMpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzT2Jq
ZWN0LT5wcm90b3R5cGUoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xv
YmFsRnVuY1Byb3RvU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHZhbHVl
ID0gZXhlYy0+YXJndW1lbnQoMCk7CisKKyAgICAvLyBTZXR0aW5nIF9fcHJvdG9fXyBvZiBhIHBy
aW1pdGl2ZSBzaG91bGQgaGF2ZSBubyBlZmZlY3QuCisgICAgaWYgKCFleGVjLT50aGlzVmFsdWUo
KS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworCisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBhc09iamVjdChleGVjLT50aGlzVmFs
dWUoKSk7CisgICAgaWYgKCF0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5hbGxvd3NBY2Nlc3NG
cm9tKHRoaXNPYmplY3QsIGV4ZWMpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworCisgICAgLy8gU2V0dGluZyBfX3Byb3RvX18gdG8gYSBub24tb2JqZWN0
LCBub24tbnVsbCB2YWx1ZSBpcyBzaWxlbnRseSBpZ25vcmVkIHRvIG1hdGNoIE1vemlsbGEuCisg
ICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpICYmICF2YWx1ZS5pc051bGwoKSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIGlmICghdGhpc09iamVj
dC0+aXNFeHRlbnNpYmxlKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CisKKyAgICBpZiAoIXRoaXNPYmplY3QtPnNldFByb3RvdHlwZVdpdGhDeWNsZUNo
ZWNrKGV4ZWMtPmdsb2JhbERhdGEoKSwgdmFsdWUpKQorICAgICAgICB0aHJvd0Vycm9yKGV4ZWMs
IGNyZWF0ZUVycm9yKGV4ZWMsICJjeWNsaWMgX19wcm90b19fIHZhbHVlIikpOworCisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1
bmN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgJKHJldmlzaW9uIDEwNzQ2OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDYgKzQ4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXNjYXBlKEV4ZWNTdGF0ZSopOwogICAgIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1VuZXNjYXBlKEV4ZWNTdGF0ZSopOwogICAg
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9yKEV4
ZWNTdGF0ZSopOworICAgIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1By
b3RvR2V0dGVyKEV4ZWNTdGF0ZSopOworICAgIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2xvYmFsRnVuY1Byb3RvU2V0dGVyKEV4ZWNTdGF0ZSopOwogCiAgICAgc3RhdGljIGNvbnN0IGRv
dWJsZSBtYW50aXNzYU92ZXJmbG93TG93ZXJCb3VuZCA9IDkwMDcxOTkyNTQ3NDA5OTIuMDsKICAg
ICBkb3VibGUgcGFyc2VJbnRPdmVyZmxvdyhjb25zdCBMQ2hhciosIGludCBsZW5ndGgsIGludCBy
YWRpeCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3Bw
CShyZXZpc2lvbiAxMDc0NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMiwzMyArMTMyLDE5IEBAIHZvaWQgSlNPYmpl
Y3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGEKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFs
dWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpc09iamVjdCkpOwogICAg
IEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKIAotICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQcm90bykg
ewotICAgICAgICAvLyBTZXR0aW5nIF9fcHJvdG9fXyB0byBhIG5vbi1vYmplY3QsIG5vbi1udWxs
IHZhbHVlIGlzIHNpbGVudGx5IGlnbm9yZWQgdG8gbWF0Y2ggTW96aWxsYS4KLSAgICAgICAgaWYg
KCF2YWx1ZS5pc09iamVjdCgpICYmICF2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICBpZiAoIXRoaXNPYmplY3QtPmlzRXh0ZW5zaWJsZSgpKSB7Ci0gICAgICAg
ICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgaWYgKCF0aGlz
T2JqZWN0LT5zZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhnbG9iYWxEYXRhLCB2YWx1ZSkpCi0g
ICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsICJjeWNsaWMgX19w
cm90b19fIHZhbHVlIikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgLy8gQ2hlY2sg
aWYgdGhlcmUgYXJlIGFueSBzZXR0ZXJzIG9yIGdldHRlcnMgaW4gdGhlIHByb3RvdHlwZSBjaGFp
bgogICAgIEpTVmFsdWUgcHJvdG90eXBlOwotICAgIGZvciAoSlNPYmplY3QqIG9iaiA9IHRoaXNP
YmplY3Q7ICFvYmotPnN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCk7IG9i
aiA9IGFzT2JqZWN0KHByb3RvdHlwZSkpIHsKLSAgICAgICAgcHJvdG90eXBlID0gb2JqLT5wcm90
b3R5cGUoKTsKLSAgICAgICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkgewotICAgICAgICAgICAg
aWYgKCF0aGlzT2JqZWN0LT5wdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlUHV0PihnbG9iYWxEYXRh
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90LCBnZXRKU0Z1bmN0aW9uKHZhbHVlKSkgJiYg
c2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwotICAgICAgICAgICAgcmV0
dXJuOworICAgIGlmIChwcm9wZXJ0eU5hbWUgIT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnVuZGVy
c2NvcmVQcm90bykgeworICAgICAgICBmb3IgKEpTT2JqZWN0KiBvYmogPSB0aGlzT2JqZWN0OyAh
b2JqLT5zdHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3Rv
KCk7IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlwZSkpIHsKKyAgICAgICAgICAgIHByb3RvdHlwZSA9
IG9iai0+cHJvdG90eXBlKCk7CisgICAgICAgICAgICBpZiAocHJvdG90eXBlLmlzTnVsbCgpKSB7
CisgICAgICAgICAgICAgICAgaWYgKCF0aGlzT2JqZWN0LT5wdXREaXJlY3RJbnRlcm5hbDxQdXRN
b2RlUHV0PihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90LCBnZXRKU0Z1
bmN0aW9uKHZhbHVlKSkgJiYgc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVy
cm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9Ci0gICAgCisKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgIEpTQ2VsbCogc3Bl
Y2lmaWNWYWx1ZTsKICAgICBpZiAoKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQoZ2xvYmFs
RGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSAhPSBXVEY6Om5v
dEZvdW5kKSAmJiBhdHRyaWJ1dGVzICYgUmVhZE9ubHkpIHsKQEAgLTIxNSwxMCArMjAxLDE0IEBA
IHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QKICAgICBvYmplY3QtPnB1
dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4oZXhlYy0+Z2xvYmFsRGF0
YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzbG90LCBnZXRKU0Z1bmN0aW9u
KHZhbHVlKSk7CiB9CiAKK2Jvb2wgSlNPYmplY3Q6OmFsbG93c0FjY2Vzc0Zyb20oSlNPYmplY3Qq
LCBFeGVjU3RhdGUqKQoreworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIEpTT2JqZWN0Ojpw
dXREaXJlY3RBY2Nlc3NvcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsK
ICAgICBBU1NFUlQodmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSAmJiAoYXR0cmlidXRlcyAmIEFjY2Vz
c29yKSk7Ci0gICAgQVNTRVJUKHByb3BlcnR5TmFtZSAhPSBnbG9iYWxEYXRhLnByb3BlcnR5TmFt
ZXMtPnVuZGVyc2NvcmVQcm90byk7CiAKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICBw
dXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KGdsb2JhbERhdGEsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QsIGdldEpTRnVuY3Rpb24odmFsdWUp
KTsKQEAgLTIyOSw3ICsyMTksNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RBY2Nlc3NvcihK
U0dsb2JhCiAgICAgaWYgKHNsb3QudHlwZSgpICE9IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVy
dHkpCiAgICAgICAgIHNldFN0cnVjdHVyZShnbG9iYWxEYXRhLCBTdHJ1Y3R1cmU6OmF0dHJpYnV0
ZUNoYW5nZVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwg
YXR0cmlidXRlcykpOwogCi0gICAgc3RydWN0dXJlKCktPnNldEhhc0dldHRlclNldHRlclByb3Bl
cnRpZXModHJ1ZSk7CisgICAgc3RydWN0dXJlKCktPnNldEhhc0dldHRlclNldHRlclByb3BlcnRp
ZXMocHJvcGVydHlOYW1lID09IGdsb2JhbERhdGEucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVBy
b3RvKTsKIH0KIAogYm9vbCBKU09iamVjdDo6aGFzUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0CkBAIC02MjksMTEgKzYxOSw2IEBA
IHN0YXRpYyBib29sIHB1dERlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGUKIAogYm9vbCBKU09iamVj
dDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKIHsKLSAgICAvLyBfX3Byb3RvX18gaXMgbWFnaWM7
IHdlIGRvbid0IGN1cnJlbnRseSBzdXBwb3J0IHNldHRpbmcgaXQgYXMgYSByZWd1bGFyIHByb3Bl
cnR5LgotICAgIC8vIFNpbGVudCBmaWx0ZXIgb3V0IGNhbGxzIHRvIHNldCBfX3Byb3RvX18gYXQg
YW4gZWFybHkgc3RhZ2U7IHByZXRlbmQgYWxsIGlzIG9rYXkuCi0gICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLQogICAgIC8vIElmIHdlIGhhdmUgYSBuZXcgcHJvcGVydHkgd2UgY2FuIGp1c3Qg
cHV0IGl0IG9uIG5vcm1hbGx5CiAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGN1cnJlbnQ7CiAgICAg
aWYgKCFvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgY3VycmVudCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTA3NDY5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDYg
KzEwNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGFsbG93c0FjY2Vzc0Zyb20oSlNPYmplY3QqLCBF
eGVjU3RhdGUqKTsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwdXQo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUpOwpAQCAtNTUwLDEyICs1NTEsNiBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNP
YmplY3Q6OmlubGluZUdldE93CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIC8v
IG5vbi1zdGFuZGFyZCBOZXRzY2FwZSBleHRlbnNpb24KLSAgICBpZiAocHJvcGVydHlOYW1lID09
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pIHsKLSAgICAgICAgc2xvdC5z
ZXRWYWx1ZShwcm90b3R5cGUoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQogICAg
IHJldHVybiBmYWxzZTsKIH0KIApAQCAtODAzLDggKzc5OCw2IEBAIGlubGluZSBKU1ZhbHVlIEpT
VmFsdWU6OmdldChFeGVjU3RhdGUqIGUKIHsKICAgICBpZiAoVU5MSUtFTFkoIWlzQ2VsbCgpKSkg
ewogICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0gc3ludGhlc2l6ZVByb3RvdHlwZShleGVj
KTsKLSAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudW5k
ZXJzY29yZVByb3RvKQotICAgICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICAgICAgaWYg
KCFwcm90b3R5cGUtPmdldFByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQog
ICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgIHJldHVybiBzbG90Lmdl
dFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuY3BwCShyZXZpc2lvbiAxMDc0NjkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MywxMCAr
MjUzLDYgQEAgYm9vbCBKU1N0cmluZzo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbAogICAgIC8v
IFRoaXMgZnVuY3Rpb24gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IEpTVmFsdWU6OmdldC4KICAg
ICBpZiAodGhpc09iamVjdC0+Z2V0U3RyaW5nUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFt
ZSwgc2xvdCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0g
ZXhlYy0+cHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQcm90bykgewotICAgICAgICBzbG90LnNl
dFZhbHVlKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+c3RyaW5nUHJvdG90eXBlKCkpOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9CiAgICAgc2xvdC5zZXRCYXNlKHRoaXNPYmplY3Qp
OwogICAgIEpTT2JqZWN0KiBvYmplY3Q7CiAgICAgZm9yIChKU1ZhbHVlIHByb3RvdHlwZSA9IGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+c3RyaW5nUHJvdG90eXBlKCk7ICFwcm90b3R5cGUu
aXNOdWxsKCk7IHByb3RvdHlwZSA9IG9iamVjdC0+cHJvdG90eXBlKCkpIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHJldmlzaW9uIDEwNzQ2OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAt
MjM0LDYgKzIzNCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGNoYXIqIGRlc2NyaXB0
aW9uKCk7CiAKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHN5bnRoZXNpemVQ
cm90b3R5cGUoRXhlY1N0YXRlKikgY29uc3Q7CisKICAgICBwcml2YXRlOgogICAgICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVD4gSlNWYWx1ZShXcml0ZUJhcnJpZXJCYXNlPFQ+KTsKIApAQCAtMjQ2LDcg
KzI0OCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU09i
amVjdCogdG9PYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCopIGNvbnN0
OwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdG9UaGlzT2JqZWN0U2xvd0Nh
c2UoRXhlY1N0YXRlKikgY29uc3Q7CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmpl
Y3QqIHN5bnRoZXNpemVQcm90b3R5cGUoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIEpTT2Jq
ZWN0KiBzeW50aGVzaXplT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0OwogCiAjaWYgVVNFKEpTVkFM
VUUzMl82NCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0
cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDEwNzQ2OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTM4LDExICsxMzgsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25z
dAogewogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlcXVlc3RlZCBw
cm90b3R5cGUgb2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBhbiBvYmplY3QuIikpOwotICAgICAgICAK
LSAgICAvLyBUaGlzIHVzZXMgSlNWYWx1ZTo6Z2V0KCkgaW5zdGVhZCBvZiBkaXJlY3RseSBhY2Nl
c3NpbmcgdGhlIHByb3RvdHlwZSBmcm9tIHRoZSBvYmplY3QKLSAgICAvLyAodXNpbmcgSlNPYmpl
Y3Q6OnByb3RvdHlwZSgpKSBpbiBvcmRlciB0byBhbGxvdyBvYmplY3RzIHRvIG92ZXJyaWRlIHRo
ZSBiZWhhdmlvciwgc3VjaAotICAgIC8vIGFzIHJldHVybmluZyBqc1VuZGVmaW5lZCgpIGZvciBj
cm9zcy1vcmlnaW4gYWNjZXNzLgotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+YXJn
dW1lbnQoMCkuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8p
KTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpOwor
CisgICAgaWYgKCFvYmplY3QtPm1ldGhvZFRhYmxlKCktPmFsbG93c0FjY2Vzc0Zyb20ob2JqZWN0
LCBleGVjKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
KworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0LT5wcm90b3R5cGUoKSk7CiB9CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAxMDc0NjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjcsNiArMTY3LDcgQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYQog
ICAgICwgbV9kaWN0aW9uYXJ5S2luZChOb25lRGljdGlvbmFyeUtpbmQpCiAgICAgLCBtX2lzUGlu
bmVkUHJvcGVydHlUYWJsZShmYWxzZSkKICAgICAsIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGll
cyhmYWxzZSkKKyAgICAsIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3Rv
KGZhbHNlKQogICAgICwgbV9oYXNOb25FbnVtZXJhYmxlUHJvcGVydGllcyhmYWxzZSkKICAgICAs
IG1fYXR0cmlidXRlc0luUHJldmlvdXMoMCkKICAgICAsIG1fc3BlY2lmaWNGdW5jdGlvblRocmFz
aENvdW50KDApCkBAIC0xODgsNiArMTg5LDcgQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9i
YWxEYXRhJiBnbG9iYQogICAgICwgbV9kaWN0aW9uYXJ5S2luZChOb25lRGljdGlvbmFyeUtpbmQp
CiAgICAgLCBtX2lzUGlubmVkUHJvcGVydHlUYWJsZShmYWxzZSkKICAgICAsIG1faGFzR2V0dGVy
U2V0dGVyUHJvcGVydGllcyhmYWxzZSkKKyAgICAsIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGll
c0V4Y2x1ZGluZ1Byb3RvKGZhbHNlKQogICAgICwgbV9oYXNOb25FbnVtZXJhYmxlUHJvcGVydGll
cyhmYWxzZSkKICAgICAsIG1fYXR0cmlidXRlc0luUHJldmlvdXMoMCkKICAgICAsIG1fc3BlY2lm
aWNGdW5jdGlvblRocmFzaENvdW50KDApCkBAIC0yMDcsNiArMjA5LDcgQEAgU3RydWN0dXJlOjpT
dHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYQogICAgICwgbV9kaWN0aW9uYXJ5S2luZChwcmV2
aW91cy0+bV9kaWN0aW9uYXJ5S2luZCkKICAgICAsIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKGZh
bHNlKQogICAgICwgbV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKHByZXZpb3VzLT5tX2hhc0dl
dHRlclNldHRlclByb3BlcnRpZXMpCisgICAgLCBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXNF
eGNsdWRpbmdQcm90byhwcmV2aW91cy0+bV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVk
aW5nUHJvdG8pCiAgICAgLCBtX2hhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzKHByZXZpb3VzLT5t
X2hhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzKQogICAgICwgbV9hdHRyaWJ1dGVzSW5QcmV2aW91
cygwKQogICAgICwgbV9zcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQocHJldmlvdXMtPm1fc3Bl
Y2lmaWNGdW5jdGlvblRocmFzaENvdW50KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDEwNzQ2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsNyArMTQ1LDEz
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBoYXNHZXR0ZXJT
ZXR0ZXJQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0
aWVzOyB9Ci0gICAgICAgIHZvaWQgc2V0SGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhib29sIGhh
c0dldHRlclNldHRlclByb3BlcnRpZXMpIHsgbV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzID0g
aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllczsgfQorICAgICAgICBib29sIGhhc0dldHRlclNldHRl
clByb3BlcnRpZXNFeGNsdWRpbmdQcm90bygpIGNvbnN0IHsgcmV0dXJuIG1faGFzR2V0dGVyU2V0
dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvOyB9CisgICAgICAgIHZvaWQgc2V0SGFzR2V0dGVy
U2V0dGVyUHJvcGVydGllcyhib29sIGlzX19wcm90b19fKQorICAgICAgICB7CisgICAgICAgICAg
ICBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMgPSB0cnVlOworICAgICAgICAgICAgaWYgKCFp
c19fcHJvdG9fXykKKyAgICAgICAgICAgICAgICBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXNF
eGNsdWRpbmdQcm90byA9IHRydWU7CisgICAgICAgIH0KIAogICAgICAgICBib29sIGhhc05vbkVu
dW1lcmFibGVQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNOb25FbnVtZXJhYmxlUHJv
cGVydGllczsgfQogICAgICAgICAKQEAgLTI4Miw2ICsyODgsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdW5zaWduZWQgbV9kaWN0aW9uYXJ5S2luZCA6IDI7CiAgICAgICAgIGJvb2wgbV9p
c1Bpbm5lZFByb3BlcnR5VGFibGUgOiAxOwogICAgICAgICBib29sIG1faGFzR2V0dGVyU2V0dGVy
UHJvcGVydGllcyA6IDE7CisgICAgICAgIGJvb2wgbV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVz
RXhjbHVkaW5nUHJvdG8gOiAxOwogICAgICAgICBib29sIG1faGFzTm9uRW51bWVyYWJsZVByb3Bl
cnRpZXMgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2F0dHJpYnV0ZXNJblByZXZpb3VzIDogNzsK
ICAgICAgICAgdW5zaWduZWQgbV9zcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQgOiAyOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkocmV2aXNpb24gMTA3NDc1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMDItMTEgIEdhdmluIEJhcnJh
Y2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgc3BlY2lhbCBf
X3Byb3RvX18gcHJvcGVydHkgdG8gT2JqZWN0LnByb3RvdHlwZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0MDkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZS1pbXBsZW1lbnQgdGhpcyBhcyBhIHJlZ3Vs
YXIgYWNjZXNzb3IgcHJvcGVydHkuICBUaGlzIGhhcyB0aHJlZSBrZXkgYmVuZWZpdHM6CisgICAg
ICAgIDEpIEl0IG1ha2VzIGl0IHBvc3NpYmxlIGZvciBvYmplY3RzIHRvIGJlIGdpdmVuIHByb3Bl
cnRpZXMgbmFtZWQgX19wcm90b19fLgorICAgICAgICAyKSBPYmplY3QucHJvdG90eXBlLl9fcHJv
dG9fXyBjYW4gYmUgZGVsZXRlZCwgcHJldmVudGluZyBvYmplY3QgcHJvdG90eXBlcyBmcm9tIGJl
aW5nIGNoYW5nZWQuCisgICAgICAgIDMpIFRoaXMgbGFyZ2VseSByZW1vdmVzIHRoZSBtYWdpYyB1
c2VkIHRoZSBpbXBsZW1lbnQgX19wcm90b19fLCBpdCBjYW4ganVzdCBiZSBtYWRlIGEgcmVndWxh
ciBhY2Nlc3NvciBwcm9wZXJ0eS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmFsbG93c0FjY2Vz
c0Zyb20pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICAgICAtIGV4cG9zZSBhbGxvd3NB
Y2Nlc3NGcm9tIGNoZWNrIHRvIEpTQy4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0Jhc2UuaDoKKyAgICAgICAgKEpTRE9NV2luZG93QmFzZSk6CisgICAgICAgICAgICAtIGV4cG9z
ZSBhbGxvd3NBY2Nlc3NGcm9tIGNoZWNrIHRvIEpTQy4KKwogMjAxMi0wMi0xMSAgU2hlcmlmZiBC
b3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjEwNzQzNS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmNwcAkocmV2aXNpb24gMTA3NDY5KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIs
NiArOTIsMTEgQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnByaW50RXJyb3JNZXNzYWdlKAogICAg
IHByaW50RXJyb3JNZXNzYWdlRm9yRnJhbWUoaW1wbCgpLT5mcmFtZSgpLCBtZXNzYWdlKTsKIH0K
IAorYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OmFsbG93c0FjY2Vzc0Zyb20oSlNPYmplY3QqIHRoaXNP
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNET01X
aW5kb3dCYXNlKj4odGhpc09iamVjdCktPmFsbG93c0FjY2Vzc0Zyb20oZXhlYyk7Cit9CisKIGJv
b2wgSlNET01XaW5kb3dCYXNlOjpzdXBwb3J0c1Byb2ZpbGluZyhjb25zdCBKU0dsb2JhbE9iamVj
dCogb2JqZWN0KQogewogI2lmICFFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgfHwgIUVOQUJM
RShJTlNQRUNUT1IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0Jhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuaAkocmV2aXNpb24gMTA3NDY5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1Byb2ZpbGluZyhj
b25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgICAgIHN0YXRpYyBib29sIHN1cHBvcnRz
UmljaFNvdXJjZUluZm8oY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgICAgICBzdGF0
aWMgYm9vbCBzaG91bGRJbnRlcnJ1cHRTY3JpcHQoY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCop
OwotCisgICAgICAgIHN0YXRpYyBib29sIGFsbG93c0FjY2Vzc0Zyb20oSlNDOjpKU09iamVjdCos
IEpTQzo6RXhlY1N0YXRlKik7CisgICAgICAgIAogICAgICAgICBib29sIGFsbG93c0FjY2Vzc0Zy
b20oSlNDOjpFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgYm9vbCBhbGxvd3NBY2Nlc3NGcm9t
Tm9FcnJvck1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgYm9vbCBhbGxv
d3NBY2Nlc3NGcm9tKEpTQzo6RXhlY1N0YXRlKiwgU3RyaW5nJiBtZXNzYWdlKSBjb25zdDsKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDEwNzQ3MykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEyLTAyLTEwICBHYXZpbiBCYXJyYWNsb3VnaCAg
PGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHNwZWNpYWwgX19wcm90b19f
IHByb3BlcnR5IHRvIE9iamVjdC5wcm90b3R5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NDA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmUtaW1wbGVtZW50IHRoaXMgYXMgYSByZWd1bGFyIGFjY2Vz
c29yIHByb3BlcnR5LiAgVGhpcyBoYXMgdGhyZWUga2V5IGJlbmVmaXRzOgorICAgICAgICAxKSBJ
dCBtYWtlcyBpdCBwb3NzaWJsZSBmb3Igb2JqZWN0cyB0byBiZSBnaXZlbiBwcm9wZXJ0aWVzIG5h
bWVkIF9fcHJvdG9fXy4KKyAgICAgICAgMikgT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gY2Fu
IGJlIGRlbGV0ZWQsIHByZXZlbnRpbmcgb2JqZWN0IHByb3RvdHlwZXMgZnJvbSBiZWluZyBjaGFu
Z2VkLgorICAgICAgICAzKSBUaGlzIGxhcmdlbHkgcmVtb3ZlcyB0aGUgbWFnaWMgdXNlZCB0aGUg
aW1wbGVtZW50IF9fcHJvdG9fXywgaXQgY2FuIGp1c3QgYmUgbWFkZSBhIHJlZ3VsYXIgYWNjZXNz
b3IgcHJvcGVydHkuCisKKyAgICAgICAgKiBmYXN0L2pzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5h
bWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2pzL2N5Y2xpYy1wcm90b3R5cGVzLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2pzL3BhcnNlci1zeW50YXgtY2hlY2stZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGZhc3QvanMvcHJldmVudEV4dGVuc2lvbnMtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGZhc3QvanMvcHJvdG90eXBlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICAg
ICAtIFVwZGF0ZSByZXN1bHRzCisgICAgICAgICogZmFzdC9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0
LWdldE93blByb3BlcnR5TmFtZXMuanM6CisgICAgICAgICAgICAtIF9fcHJvdG9fXyBpcyBub3cg
YSBwcm9wZXJ0eSBvZiBPYmplY3QgUHJvdG90eXBlLgorICAgICAgICAqIGZhc3QvanMvc2NyaXB0
LXRlc3RzL2N5Y2xpYy1wcm90b3R5cGVzLmpzOgorICAgICAgICAgICAgLSBzZXR0aW5nIGFuIG9i
amVjdCdzIHByb3RvdHlwZSB0byBudWxsIHJlbW92ZXMgX19wcm90b19fIHNldHRlciwgZnV0dXJl
IHVzYWdlIHdvbid0IHNldCBwcm90b3R5cGUuCisgICAgICAgICogZmFzdC9qcy9zY3JpcHQtdGVz
dHMvcGFyc2VyLXN5bnRheC1jaGVjay5qczoKKyAgICAgICAgICAgIC0gQWxsb3cgZnVuY3Rpb25z
IG5hbWVkIF9fcHJvdG9fXworICAgICAgICAqIGZhc3QvanMvc2NyaXB0LXRlc3RzL3ByZXZlbnRF
eHRlbnNpb25zLmpzOgorICAgICAgICAgICAgLSBTZXR0aW5nIF9fcHJvdG9fXyBzaG91bGQgbm90
IHRocm93LgorICAgICAgICAqIGZhc3QvanMvc2NyaXB0LXRlc3RzL3Byb3RvdHlwZXMuanM6Cisg
ICAgICAgICAgICAtIE9iamVjdHMgbWF5IGNvbnRhaW5lZCBvd24gcHJvcGVydGllcyBuYW1lZCBf
X3Byb3RvX18sIGFkZCBuZXcgdGVzdCBjYXNlcy4KKwogMjAxMi0wMi0xMCAgRWR3YXJkIE8nQ29u
bm9yICA8ZW9jb25ub3JAYXBwbGUuY29tPgogCiAgICAgICAgIENoYW5nZSB2YWx1ZXMgZm9yIFdF
QktJVF9LRVlGUkFNRVNfUlVMRSwgV0VCS0lUX0tFWUZSQU1FX1JVTEUKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvanMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMDc0NjkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL09i
amVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
NDEsNyArNDEsNyBAQCBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoZGVjb2RlVVJJCiBQ
QVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoZW5jb2RlVVJJKSBpcyBbJ2xlbmd0aCcsICdu
YW1lJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhlbmNvZGVVUklDb21wb25lbnQp
IGlzIFsnbGVuZ3RoJywgJ25hbWUnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKE9i
amVjdCkgaXMgWydjcmVhdGUnLCAnZGVmaW5lUHJvcGVydGllcycsICdkZWZpbmVQcm9wZXJ0eScs
ICdmcmVlemUnLCAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJywgJ2dldE93blByb3BlcnR5TmFt
ZXMnLCAnZ2V0UHJvdG90eXBlT2YnLCAnaXNFeHRlbnNpYmxlJywgJ2lzRnJvemVuJywgJ2lzU2Vh
bGVkJywgJ2tleXMnLCAnbGVuZ3RoJywgJ25hbWUnLCAncHJldmVudEV4dGVuc2lvbnMnLCAncHJv
dG90eXBlJywgJ3NlYWwnXQotUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKE9iamVjdC5w
cm90b3R5cGUpIGlzIFsnX19kZWZpbmVHZXR0ZXJfXycsICdfX2RlZmluZVNldHRlcl9fJywgJ19f
bG9va3VwR2V0dGVyX18nLCAnX19sb29rdXBTZXR0ZXJfXycsICdjb25zdHJ1Y3RvcicsICdoYXNP
d25Qcm9wZXJ0eScsICdpc1Byb3RvdHlwZU9mJywgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJywgJ3Rv
TG9jYWxlU3RyaW5nJywgJ3RvU3RyaW5nJywgJ3ZhbHVlT2YnXQorUEFTUyBnZXRTb3J0ZWRPd25Q
cm9wZXJ0eU5hbWVzKE9iamVjdC5wcm90b3R5cGUpIGlzIFsnX19kZWZpbmVHZXR0ZXJfXycsICdf
X2RlZmluZVNldHRlcl9fJywgJ19fbG9va3VwR2V0dGVyX18nLCAnX19sb29rdXBTZXR0ZXJfXycs
ICdfX3Byb3RvX18nLCAnY29uc3RydWN0b3InLCAnaGFzT3duUHJvcGVydHknLCAnaXNQcm90b3R5
cGVPZicsICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsICd0b0xvY2FsZVN0cmluZycsICd0b1N0cmlu
ZycsICd2YWx1ZU9mJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhGdW5jdGlvbikg
aXMgWydsZW5ndGgnLCAnbmFtZScsICdwcm90b3R5cGUnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9w
ZXJ0eU5hbWVzKEZ1bmN0aW9uLnByb3RvdHlwZSkgaXMgWydhcHBseScsICdiaW5kJywgJ2NhbGwn
LCAnY29uc3RydWN0b3InLCAnbGVuZ3RoJywgJ25hbWUnLCAndG9TdHJpbmcnXQogUEFTUyBnZXRT
b3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKEFycmF5KSBpcyBbJ2lzQXJyYXknLCAnbGVuZ3RoJywgJ25h
bWUnLCAncHJvdG90eXBlJ10KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvY3ljbGljLXByb3Rv
dHlwZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvY3lj
bGljLXByb3RvdHlwZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMDc0NjkpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2pzL2N5Y2xpYy1wcm90b3R5cGVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMyw3ICszLDEwIEBAIFRoaXMgdGVzdCBtYWtlcyBzdXJlIHdlIGRvbid0IGhhbmcgd2hl
biAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIG8xLl9fcHJvdG9fXyA9IG8z
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogY3ljbGljIF9fcHJvdG9fXyB2YWx1ZS4KK1BBU1MgbzEu
X19wcm90b19fID0gbzM7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogY3ljbGljIF9fcHJvdG9fXyB2
YWx1ZS4KK1BBU1MgKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8xLCAnX19wcm90b19fJykgaXMg
ZmFsc2UKK1BBU1MgKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8xLCAnX19wcm90b19fJykgaXMg
dHJ1ZQorUEFTUyBPYmplY3QuZ2V0UHJvdG90eXBlT2YobzEpIGlzIG51bGwKIFBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9qcy9wYXJzZXItc3ludGF4LWNoZWNrLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2pzL3BhcnNlci1zeW50YXgtY2hlY2stZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAxMDc0NjkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3BhcnNlci1zeW50YXgtY2hlY2st
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01NDEsMTQgKzU0MSwxNCBAQCBQQVNTIElu
dmFsaWQ6ICJmb3IodmFyIGEsYiAndGhpcyBzaG91bGRuCiBQQVNTIEludmFsaWQ6ICJmdW5jdGlv
biBmKCkgeyBmb3IodmFyIGEsYiAndGhpcyBzaG91bGRuJ3QgYmUgYWxsb3dlZCcgZmFsc2UgOyAp
IDsgfSIKIFBBU1MgSW52YWxpZDogImZvcih2YXIgYSxiICciCiBQQVNTIEludmFsaWQ6ICJmdW5j
dGlvbiBmKCkgeyBmb3IodmFyIGEsYiAnIH0iCi1QQVNTIEludmFsaWQ6ICJmdW5jdGlvbiBfX3By
b3RvX18oKXt9IgotUEFTUyBJbnZhbGlkOiAiZnVuY3Rpb24gZigpIHsgZnVuY3Rpb24gX19wcm90
b19fKCl7fSB9IgotUEFTUyBJbnZhbGlkOiAiKGZ1bmN0aW9uIF9fcHJvdG9fXygpe30pIgotUEFT
UyBJbnZhbGlkOiAiZnVuY3Rpb24gZigpIHsgKGZ1bmN0aW9uIF9fcHJvdG9fXygpe30pIH0iCi1Q
QVNTIEludmFsaWQ6ICIndXNlIHN0cmljdCc7IGZ1bmN0aW9uIF9fcHJvdG9fXygpe30iCi1QQVNT
IEludmFsaWQ6ICJmdW5jdGlvbiBmKCkgeyAndXNlIHN0cmljdCc7IGZ1bmN0aW9uIF9fcHJvdG9f
Xygpe30gfSIKLVBBU1MgSW52YWxpZDogIid1c2Ugc3RyaWN0JzsgKGZ1bmN0aW9uIF9fcHJvdG9f
Xygpe30pIgotUEFTUyBJbnZhbGlkOiAiZnVuY3Rpb24gZigpIHsgJ3VzZSBzdHJpY3QnOyAoZnVu
Y3Rpb24gX19wcm90b19fKCl7fSkgfSIKK1BBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIF9fcHJvdG9f
Xygpe30iCitQQVNTIFZhbGlkOiAgICJmdW5jdGlvbiBmKCkgeyBmdW5jdGlvbiBfX3Byb3RvX18o
KXt9IH0iCitQQVNTIFZhbGlkOiAgICIoZnVuY3Rpb24gX19wcm90b19fKCl7fSkiCitQQVNTIFZh
bGlkOiAgICJmdW5jdGlvbiBmKCkgeyAoZnVuY3Rpb24gX19wcm90b19fKCl7fSkgfSIKK1BBU1Mg
VmFsaWQ6ICAgIid1c2Ugc3RyaWN0JzsgZnVuY3Rpb24gX19wcm90b19fKCl7fSIKK1BBU1MgVmFs
aWQ6ICAgImZ1bmN0aW9uIGYoKSB7ICd1c2Ugc3RyaWN0JzsgZnVuY3Rpb24gX19wcm90b19fKCl7
fSB9IgorUEFTUyBWYWxpZDogICAiJ3VzZSBzdHJpY3QnOyAoZnVuY3Rpb24gX19wcm90b19fKCl7
fSkiCitQQVNTIFZhbGlkOiAgICJmdW5jdGlvbiBmKCkgeyAndXNlIHN0cmljdCc7IChmdW5jdGlv
biBfX3Byb3RvX18oKXt9KSB9IgogUEFTUyBWYWxpZDogICAiaWYgKDApICRmb287ICIKIFBBU1Mg
VmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7IGlmICgwKSAkZm9vOyAgfSIKIFBBU1MgVmFsaWQ6ICAg
ImlmICgwKSBfZm9vOyAiCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3ByZXZlbnRFeHRlbnNp
b25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3ByZXZl
bnRFeHRlbnNpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTA3NDY5KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9qcy9wcmV2ZW50RXh0ZW5zaW9ucy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTEyLDcgKzEyLDcgQEAgUEFTUyB0ZXN0KHNlYWwob2JqKCkpKSBpcyAiKGE6MSkoYjo0KVMi
CiBQQVNTIHRlc3QoZnJlZXplKG9iaigpKSkgaXMgIihhOjEpKGI6MilTRiIKIFBBU1MgT2JqZWN0
LnByZXZlbnRFeHRlbnNpb25zKE1hdGguc2luKSBpcyBNYXRoLnNpbgogUEFTUyB2YXIgbyA9IHt9
OyBPYmplY3QucHJldmVudEV4dGVuc2lvbnMobyk7IG8uX19wcm90b19fID0geyBuZXdQcm9wOiAi
U2hvdWxkIG5vdCBzZWUgdGhpcyIgfTsgby5uZXdQcm9wOyBpcyB1bmRlZmluZWQuCi1QQVNTICJ1
c2Ugc3RyaWN0IjsgdmFyIG8gPSB7fTsgT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKG8pOyBvLl9f
cHJvdG9fXyA9IHsgbmV3UHJvcDogIlNob3VsZCBub3Qgc2VlIHRoaXMiIH07IHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHku
LgorUEFTUyAidXNlIHN0cmljdCI7IHZhciBvID0ge307IE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9u
cyhvKTsgby5fX3Byb3RvX18gPSB7IG5ld1Byb3A6ICJTaG91bGQgbm90IHNlZSB0aGlzIiB9OyBv
Lm5ld1Byb3A7IGlzIHVuZGVmaW5lZC4KIFBBU1MgT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKE1h
dGgpOyBNYXRoLnNxcnQoNCkgaXMgMgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQog
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3Byb3RvdHlwZXMtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcHJvdG90eXBlcy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDEwNzQ2OSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcHJvdG90eXBlcy1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUzLDEwICs1MywxNCBAQCBQQVNTIE9iamVjdC5fX3By
b3RvX18uaXNQcm90b3R5cGVPZihBcnJhCiBQQVNTIE9iamVjdC5fX3Byb3RvX18uaXNQcm90b3R5
cGVPZihEYXRlKSBpcyB0cnVlCiBQQVNTIE9iamVjdC5fX3Byb3RvX18uaXNQcm90b3R5cGVPZihO
dW1iZXIpIGlzIHRydWUKIFBBU1MgT2JqZWN0Ll9fcHJvdG9fXy5pc1Byb3RvdHlwZU9mKFN0cmlu
ZykgaXMgdHJ1ZQotUEFTUyB2YXIgd2FzU2V0ID0gZmFsc2U7IHZhciBvID0geyB9OyBvLl9fZGVm
aW5lR2V0dGVyX18oIl9fcHJvdG9fXyIsIGZ1bmN0aW9uKCkgeyB3YXNTZXQgPSB0cnVlIH0pOyBv
Ll9fcHJvdG9fXzsgd2FzU2V0OyBpcyBmYWxzZQotUEFTUyB2YXIgd2FzU2V0ID0gZmFsc2U7IHZh
ciBvID0geyB9OyBvLl9fZGVmaW5lU2V0dGVyX18oIl9fcHJvdG9fXyIsIGZ1bmN0aW9uKCkgeyB3
YXNTZXQgPSB0cnVlIH0pOyBvLl9fcHJvdG9fXyA9IHt9OyB3YXNTZXQ7IGlzIGZhbHNlCi1QQVNT
IHZhciB3YXNTZXQgPSBmYWxzZTsgdmFyIG8gPSB7IH07IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShv
LCAiX19wcm90b19fIiwgeyAiZ2V0IjogZnVuY3Rpb24oKSB7IHdhc1NldCA9IHRydWUgfSB9KTsg
by5fX3Byb3RvX187IHdhc1NldDsgaXMgZmFsc2UKK1BBU1MgdmFyIHdhc1NldCA9IGZhbHNlOyB2
YXIgbyA9IHsgfTsgby5fX2RlZmluZUdldHRlcl9fKCJfX3Byb3RvX18iLCBmdW5jdGlvbigpIHsg
d2FzU2V0ID0gdHJ1ZSB9KTsgby5fX3Byb3RvX187IHdhc1NldDsgaXMgdHJ1ZQorUEFTUyB2YXIg
d2FzU2V0ID0gZmFsc2U7IHZhciBvID0geyB9OyBvLl9fZGVmaW5lU2V0dGVyX18oIl9fcHJvdG9f
XyIsIGZ1bmN0aW9uKCkgeyB3YXNTZXQgPSB0cnVlIH0pOyBvLl9fcHJvdG9fXyA9IHt9OyB3YXNT
ZXQ7IGlzIHRydWUKK1BBU1MgdmFyIHdhc1NldCA9IGZhbHNlOyB2YXIgbyA9IHsgfTsgT2JqZWN0
LmRlZmluZVByb3BlcnR5KG8sICJfX3Byb3RvX18iLCB7ICJnZXQiOiBmdW5jdGlvbigpIHsgd2Fz
U2V0ID0gdHJ1ZSB9IH0pOyBvLl9fcHJvdG9fXzsgd2FzU2V0OyBpcyB0cnVlCiBQQVNTIHZhciB3
YXNTZXQgPSBmYWxzZTsgdmFyIG8gPSB7IH07IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCAiX19w
cm90b19fIiwgeyAiX19wcm90b19fIjogZnVuY3Rpb24oeCkgeyB3YXNTZXQgPSB0cnVlIH0gfSk7
IG8uX19wcm90b19fID0ge307IHdhc1NldDsgaXMgZmFsc2UKK1BBU1MgdmFyIG8gPSB7fTsgby5f
X3Byb3RvX18gPSB7IHg6dHJ1ZSB9OyBvLnggaXMgdHJ1ZQorUEFTUyB2YXIgbyA9IHt9OyBvLl9f
cHJvdG9fXyA9IHsgeDp0cnVlIH07IG8uaGFzT3duUHJvcGVydHkoJ19fcHJvdG9fXycpIGlzIGZh
bHNlCitQQVNTIHZhciBvID0ge307IG8uX19wcm90b19fID0geyB4OnRydWUgfTsgby54IGlzIHVu
ZGVmaW5lZC4KK1BBU1MgdmFyIG8gPSB7fTsgby5fX3Byb3RvX18gPSB7IHg6dHJ1ZSB9OyBvLmhh
c093blByb3BlcnR5KCdfX3Byb3RvX18nKSBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvc2Ny
aXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVz
LmpzCShyZXZpc2lvbiAxMDc0NjkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0
cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5qcwkod29ya2luZyBjb3B5KQpAQCAtNDksNyAr
NDksNyBAQCB2YXIgZXhwZWN0ZWRQcm9wZXJ0eU5hbWVzU2V0ID0gewogICAgICJlbmNvZGVVUklD
b21wb25lbnQiOiAiWydsZW5ndGgnLCAnbmFtZSddIiwKIC8vIEJ1aWx0LWluIEVDTUEgb2JqZWN0
cwogICAgICJPYmplY3QiOiAiWydjcmVhdGUnLCAnZGVmaW5lUHJvcGVydGllcycsICdkZWZpbmVQ
cm9wZXJ0eScsICdmcmVlemUnLCAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJywgJ2dldE93blBy
b3BlcnR5TmFtZXMnLCAnZ2V0UHJvdG90eXBlT2YnLCAnaXNFeHRlbnNpYmxlJywgJ2lzRnJvemVu
JywgJ2lzU2VhbGVkJywgJ2tleXMnLCAnbGVuZ3RoJywgJ25hbWUnLCAncHJldmVudEV4dGVuc2lv
bnMnLCAncHJvdG90eXBlJywgJ3NlYWwnXSIsCi0gICAgIk9iamVjdC5wcm90b3R5cGUiOiAiWydf
X2RlZmluZUdldHRlcl9fJywgJ19fZGVmaW5lU2V0dGVyX18nLCAnX19sb29rdXBHZXR0ZXJfXycs
ICdfX2xvb2t1cFNldHRlcl9fJywgJ2NvbnN0cnVjdG9yJywgJ2hhc093blByb3BlcnR5JywgJ2lz
UHJvdG90eXBlT2YnLCAncHJvcGVydHlJc0VudW1lcmFibGUnLCAndG9Mb2NhbGVTdHJpbmcnLCAn
dG9TdHJpbmcnLCAndmFsdWVPZiddIiwKKyAgICAiT2JqZWN0LnByb3RvdHlwZSI6ICJbJ19fZGVm
aW5lR2V0dGVyX18nLCAnX19kZWZpbmVTZXR0ZXJfXycsICdfX2xvb2t1cEdldHRlcl9fJywgJ19f
bG9va3VwU2V0dGVyX18nLCAnX19wcm90b19fJywgJ2NvbnN0cnVjdG9yJywgJ2hhc093blByb3Bl
cnR5JywgJ2lzUHJvdG90eXBlT2YnLCAncHJvcGVydHlJc0VudW1lcmFibGUnLCAndG9Mb2NhbGVT
dHJpbmcnLCAndG9TdHJpbmcnLCAndmFsdWVPZiddIiwKICAgICAiRnVuY3Rpb24iOiAiWydsZW5n
dGgnLCAnbmFtZScsICdwcm90b3R5cGUnXSIsCiAgICAgIkZ1bmN0aW9uLnByb3RvdHlwZSI6ICJb
J2FwcGx5JywgJ2JpbmQnLCAnY2FsbCcsICdjb25zdHJ1Y3RvcicsICdsZW5ndGgnLCAnbmFtZScs
ICd0b1N0cmluZyddIiwKICAgICAiQXJyYXkiOiAiWydpc0FycmF5JywgJ2xlbmd0aCcsICduYW1l
JywgJ3Byb3RvdHlwZSddIiwKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3Rz
L2N5Y2xpYy1wcm90b3R5cGVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMv
c2NyaXB0LXRlc3RzL2N5Y2xpYy1wcm90b3R5cGVzLmpzCShyZXZpc2lvbiAxMDc0NjkpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9jeWNsaWMtcHJvdG90eXBlcy5qcwkod29y
a2luZyBjb3B5KQpAQCAtNiw2ICs2LDEzIEBAIG8yLl9fcHJvdG9fXyA9IG8xOwogdmFyIG8zID0g
eyBwMzogMyB9OwogbzMuX19wcm90b19fID0gbzI7CiAKLW8xLl9fcHJvdG9fXyA9IG51bGw7ICAv
LyBqdXN0IGZvciBzYW5pdHkncyBzYWtlCisvLyBUcnkgdG8gY3JlYXRlIGEgY3ljbGljYWwgcHJv
dG90eXBlIGNoYWluLgorc2hvdWxkVGhyb3coIm8xLl9fcHJvdG9fXyA9IG8zOyIpOwogCi1zaG91
bGRUaHJvdygibzEuX19wcm90b19fID0gbzMiKTsKKy8vIFRoaXMgY2hhbmdlcyBiZWhhdmlvdXIs
IHNpbmNlIF9fcHJvdG9fXyBpcyBhbiBhY2Nlc3NvciBvbiBPYmplY3QucHJvdG90eXBlLgorbzEu
X19wcm90b19fID0gbnVsbDsKKworc2hvdWxkQmVGYWxzZSgiKHt9KS5oYXNPd25Qcm9wZXJ0eS5j
YWxsKG8xLCAnX19wcm90b19fJykiKTsKK28xLl9fcHJvdG9fXyA9IG8zOworc2hvdWxkQmVUcnVl
KCIoe30pLmhhc093blByb3BlcnR5LmNhbGwobzEsICdfX3Byb3RvX18nKSIpOworc2hvdWxkQmUo
Ik9iamVjdC5nZXRQcm90b3R5cGVPZihvMSkiLCAibnVsbCIpOwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9qcy9zY3JpcHQtdGVzdHMvcGFyc2VyLXN5bnRheC1jaGVjay5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9wYXJzZXItc3ludGF4LWNoZWNrLmpz
CShyZXZpc2lvbiAxMDc0NjkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9w
YXJzZXItc3ludGF4LWNoZWNrLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zNDcsMTAgKzM0NywxMCBA
QCBpbnZhbGlkKCJMOiBMMTogTDI6IEwzOiBMNDogTDogOyIpOwogaW52YWxpZCgiZm9yKHZhciBh
LGIgJ3RoaXMgc2hvdWxkblwndCBiZSBhbGxvd2VkJyBmYWxzZSA7ICkgOyIpOwogaW52YWxpZCgi
Zm9yKHZhciBhLGIgJyIpOwogCi1pbnZhbGlkKCJmdW5jdGlvbiBfX3Byb3RvX18oKXt9IikKLWlu
dmFsaWQoIihmdW5jdGlvbiBfX3Byb3RvX18oKXt9KSIpCi1pbnZhbGlkKCIndXNlIHN0cmljdCc7
IGZ1bmN0aW9uIF9fcHJvdG9fXygpe30iKQotaW52YWxpZCgiJ3VzZSBzdHJpY3QnOyAoZnVuY3Rp
b24gX19wcm90b19fKCl7fSkiKQordmFsaWQoImZ1bmN0aW9uIF9fcHJvdG9fXygpe30iKQordmFs
aWQoIihmdW5jdGlvbiBfX3Byb3RvX18oKXt9KSIpCit2YWxpZCgiJ3VzZSBzdHJpY3QnOyBmdW5j
dGlvbiBfX3Byb3RvX18oKXt9IikKK3ZhbGlkKCIndXNlIHN0cmljdCc7IChmdW5jdGlvbiBfX3By
b3RvX18oKXt9KSIpCiAKIHZhbGlkKCJpZiAoMCkgJGZvbzsgIikKIHZhbGlkKCJpZiAoMCkgX2Zv
bzsgIikKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3ByZXZlbnRFeHRl
bnNpb25zLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3Rz
L3ByZXZlbnRFeHRlbnNpb25zLmpzCShyZXZpc2lvbiAxMDc0NjkpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2pzL3NjcmlwdC10ZXN0cy9wcmV2ZW50RXh0ZW5zaW9ucy5qcwkod29ya2luZyBjb3B5KQpA
QCAtNjksNyArNjksNyBAQCBzaG91bGRCZSgndGVzdChmcmVlemUob2JqKCkpKScsICciKGE6MSko
CiBzaG91bGRCZSgnT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKE1hdGguc2luKScsICdNYXRoLnNp
bicpOwogCiBzaG91bGRCZVVuZGVmaW5lZCgndmFyIG8gPSB7fTsgT2JqZWN0LnByZXZlbnRFeHRl
bnNpb25zKG8pOyBvLl9fcHJvdG9fXyA9IHsgbmV3UHJvcDogIlNob3VsZCBub3Qgc2VlIHRoaXMi
IH07IG8ubmV3UHJvcDsnKTsKLXNob3VsZFRocm93KCcidXNlIHN0cmljdCI7IHZhciBvID0ge307
IE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyhvKTsgby5fX3Byb3RvX18gPSB7IG5ld1Byb3A6ICJT
aG91bGQgbm90IHNlZSB0aGlzIiB9OycpOworc2hvdWxkQmVVbmRlZmluZWQoJyJ1c2Ugc3RyaWN0
IjsgdmFyIG8gPSB7fTsgT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKG8pOyBvLl9fcHJvdG9fXyA9
IHsgbmV3UHJvcDogIlNob3VsZCBub3Qgc2VlIHRoaXMiIH07IG8ubmV3UHJvcDsnKTsKIAogLy8g
Y2hlY2sgdGhhdCB3ZSBjYW4gc3RpbGwgYWNjZXNzIHN0YXRpYyBwcm9wZXJ0aWVzIG9uIGFuIG9i
amVjdCBhZnRlciBjYWxsaW5nIHByZXZlbnRFeHRlbnNpb25zLgogc2hvdWxkQmUoJ09iamVjdC5w
cmV2ZW50RXh0ZW5zaW9ucyhNYXRoKTsgTWF0aC5zcXJ0KDQpJywgJzInKTsKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3Byb3RvdHlwZXMuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvcHJvdG90eXBlcy5qcwkocmV2aXNpb24g
MTA3NDY5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvcHJvdG90eXBlcy5q
cwkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsMTQgQEAgc2hvdWxkQmVUcnVlKCJPYmplY3Qu
X19wcm90b19fLmlzUHJvdG90eQogc2hvdWxkQmVUcnVlKCJPYmplY3QuX19wcm90b19fLmlzUHJv
dG90eXBlT2YoTnVtYmVyKSIpOwogc2hvdWxkQmVUcnVlKCJPYmplY3QuX19wcm90b19fLmlzUHJv
dG90eXBlT2YoU3RyaW5nKSIpOwogCi1zaG91bGRCZUZhbHNlKCJ2YXIgd2FzU2V0ID0gZmFsc2U7
IHZhciBvID0geyB9OyBvLl9fZGVmaW5lR2V0dGVyX18oXCJfX3Byb3RvX19cIiwgZnVuY3Rpb24o
KSB7IHdhc1NldCA9IHRydWUgfSk7IG8uX19wcm90b19fOyB3YXNTZXQ7Iik7Ci1zaG91bGRCZUZh
bHNlKCJ2YXIgd2FzU2V0ID0gZmFsc2U7IHZhciBvID0geyB9OyBvLl9fZGVmaW5lU2V0dGVyX18o
XCJfX3Byb3RvX19cIiwgZnVuY3Rpb24oKSB7IHdhc1NldCA9IHRydWUgfSk7IG8uX19wcm90b19f
ID0ge307IHdhc1NldDsiKTsKLXNob3VsZEJlRmFsc2UoInZhciB3YXNTZXQgPSBmYWxzZTsgdmFy
IG8gPSB7IH07IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBcIl9fcHJvdG9fX1wiLCB7IFwiZ2V0
XCI6IGZ1bmN0aW9uKCkgeyB3YXNTZXQgPSB0cnVlIH0gfSk7IG8uX19wcm90b19fOyB3YXNTZXQ7
Iik7CitzaG91bGRCZVRydWUoInZhciB3YXNTZXQgPSBmYWxzZTsgdmFyIG8gPSB7IH07IG8uX19k
ZWZpbmVHZXR0ZXJfXyhcIl9fcHJvdG9fX1wiLCBmdW5jdGlvbigpIHsgd2FzU2V0ID0gdHJ1ZSB9
KTsgby5fX3Byb3RvX187IHdhc1NldDsiKTsKK3Nob3VsZEJlVHJ1ZSgidmFyIHdhc1NldCA9IGZh
bHNlOyB2YXIgbyA9IHsgfTsgby5fX2RlZmluZVNldHRlcl9fKFwiX19wcm90b19fXCIsIGZ1bmN0
aW9uKCkgeyB3YXNTZXQgPSB0cnVlIH0pOyBvLl9fcHJvdG9fXyA9IHt9OyB3YXNTZXQ7Iik7Citz
aG91bGRCZVRydWUoInZhciB3YXNTZXQgPSBmYWxzZTsgdmFyIG8gPSB7IH07IE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShvLCBcIl9fcHJvdG9fX1wiLCB7IFwiZ2V0XCI6IGZ1bmN0aW9uKCkgeyB3YXNT
ZXQgPSB0cnVlIH0gfSk7IG8uX19wcm90b19fOyB3YXNTZXQ7Iik7CiBzaG91bGRCZUZhbHNlKCJ2
YXIgd2FzU2V0ID0gZmFsc2U7IHZhciBvID0geyB9OyBPYmplY3QuZGVmaW5lUHJvcGVydHkobywg
XCJfX3Byb3RvX19cIiwgeyBcIl9fcHJvdG9fX1wiOiBmdW5jdGlvbih4KSB7IHdhc1NldCA9IHRy
dWUgfSB9KTsgby5fX3Byb3RvX18gPSB7fTsgd2FzU2V0OyIpOworCisvLyBEZWxldGluZyBPYmpl
Y3QucHJvdG90eXBlLl9fcHJvdG9fXyByZW1vdmVzIHRoZSBhYmlsaXR5IHRvIHNldCB0aGUgb2Jq
ZWN0J3MgcHJvdG90eXBlLgorc2hvdWxkQmVUcnVlKCJ2YXIgbyA9IHt9OyBvLl9fcHJvdG9fXyA9
IHsgeDp0cnVlIH07IG8ueCIpOworc2hvdWxkQmVGYWxzZSgidmFyIG8gPSB7fTsgby5fX3Byb3Rv
X18gPSB7IHg6dHJ1ZSB9OyBvLmhhc093blByb3BlcnR5KCdfX3Byb3RvX18nKSIpOworZGVsZXRl
IE9iamVjdC5wcm90b3R5cGUuX19wcm90b19fOworc2hvdWxkQmVVbmRlZmluZWQoInZhciBvID0g
e307IG8uX19wcm90b19fID0geyB4OnRydWUgfTsgby54Iik7CitzaG91bGRCZVRydWUoInZhciBv
ID0ge307IG8uX19wcm90b19fID0geyB4OnRydWUgfTsgby5oYXNPd25Qcm9wZXJ0eSgnX19wcm90
b19fJykiKTsK
</data>
<flag name="review"
          id="128479"
          type_id="1"
          status="+"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="128483"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127828</attachid>
            <date>2012-02-20 09:49:47 -0800</date>
            <delta_ts>2012-02-20 10:25:09 -0800</delta_ts>
            <desc>Fix layout test regressions.</desc>
            <filename>78409.2.patch</filename>
            <type>text/plain</type>
            <size>47859</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA3OTU3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBA
CisyMDEyLTAyLTE2ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBNb3ZlIHNwZWNpYWwgX19wcm90b19fIHByb3BlcnR5IHRvIE9iamVjdC5wcm90
b3R5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4
NDA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmUt
aW1wbGVtZW50IHRoaXMgYXMgYSByZWd1bGFyIGFjY2Vzc29yIHByb3BlcnR5LiAgVGhpcyBoYXMg
dGhyZWUga2V5IGJlbmVmaXRzOgorICAgICAgICAxKSBJdCBtYWtlcyBpdCBwb3NzaWJsZSBmb3Ig
b2JqZWN0cyB0byBiZSBnaXZlbiBwcm9wZXJ0aWVzIG5hbWVkIF9fcHJvdG9fXy4KKyAgICAgICAg
MikgT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gY2FuIGJlIGRlbGV0ZWQsIHByZXZlbnRpbmcg
b2JqZWN0IHByb3RvdHlwZXMgZnJvbSBiZWluZyBjaGFuZ2VkLgorICAgICAgICAzKSBUaGlzIGxh
cmdlbHkgcmVtb3ZlcyB0aGUgbWFnaWMgdXNlZCB0aGUgaW1wbGVtZW50IF9fcHJvdG9fXywgaXQg
Y2FuIGp1c3QgYmUgbWFkZSBhIHJlZ3VsYXIgYWNjZXNzb3IgcHJvcGVydHkuCisKKyAgICAgICAg
KiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6OjpwYXJzZUZ1bmN0aW9uSW5mbyk6
CisgICAgICAgICAgICAtIE5vIG5lZWQgdG8gcHJvaGliaXQgZnVuY3Rpb25zIG5hbWVkIF9fcHJv
dG9fXy4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OnJlc2V0KToKKyAgICAgICAgICAgIC0gQWRkIF9fcHJvdG9fXyBh
Y2Nlc3NvciB0byBPYmplY3QucHJvdG90eXBlLgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxP
YmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jUHJvdG9HZXR0ZXIp
OgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jUHJvdG9TZXR0ZXIpOgorICAgICAgICAgICAgLSBE
ZWZpbml0aW9uIG9mIHRoZSBfX3Byb3RvX18gYWNjZXNzb3IgZnVuY3Rpb25zLgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgICAgIC0gRGVjbGFy
YXRpb24gb2YgdGhlIF9fcHJvdG9fXyBhY2Nlc3NvciBmdW5jdGlvbnMuCisgICAgICAgICogcnVu
dGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXQpOgorICAgICAg
ICAgICAgLSBSZW1vdmUgdGhlIHNwZWNpYWwgaGFuZGxpbmcgZm9yIF9fcHJvdG9fXywgdGhlcmUg
aXMgc3RpbGwgYSBjaGVjayB0byBhbGxvdyBmb3IgYSBmYXN0IGd1YXJkIGZvciBhY2Nlc3NvcnMg
ZXhjbHVkaW5nIF9fcHJvdG9fXy4KKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEFj
Y2Vzc29yKToKKyAgICAgICAgICAgIC0gVHJhY2sgb24gdGhlIHN0cnVjdHVyZSB3aGV0aGVyIGFu
IG9iamVjdCBjb250YWlucyBhY2Nlc3NvcnMgb3RoZXIgdGhhbiBvbmUgZm9yIF9fcHJvdG9fXy4K
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgICAg
IC0gTm8gbmVlZCB0byBwcm9oaWJpdCBkZWZpbml0aW9uIG9mIG93biBwcm9wZXJ0aWVzIG5hbWVk
IF9fcHJvdG9fXy4KKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjppbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAgICAgLSBSZW1v
dmUgdGhlIHNwZWNpYWwgaGFuZGxpbmcgZm9yIF9fcHJvdG9fXy4KKyAgICAgICAgKEpTQzo6SlNW
YWx1ZTo6Z2V0KToKKyAgICAgICAgICAgIC0gUmVtb3ZlIHRoZSBzcGVjaWFsIGhhbmRsaW5nIGZv
ciBfX3Byb3RvX18uCisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5jcHA6CisgICAgICAgIChK
U0M6OkpTU3RyaW5nOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAgICAgLSBSZW1vdmUg
dGhlIHNwZWNpYWwgaGFuZGxpbmcgZm9yIF9fcHJvdG9fXy4KKyAgICAgICAgKiBydW50aW1lL0pT
VmFsdWUuaDoKKyAgICAgICAgKEpTVmFsdWUpOgorICAgICAgICAgICAgLSBNYWRlIHN5bnRoZXNp
emVQcm90b3R5cGUgcHVibGljICh0aGlzIG1heSBiZSBuZWVkZWQgYnkgdGhlIF9fcHJvdG9fXyBn
ZXR0ZXIpLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mKToKKyAgICAgICAgICAgIC0g
UGVyZm9ybSB0aGUgc2VjdXJpdHkgY2hlY2sgJiBjYWxsIHByb3RvdHlwZSgpIGRpcmVjdGx5Lgor
ICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
OjpTdHJ1Y3R1cmUpOgorICAgICAgICAgICAgLSBBZGRlZCAnRXhjbHVkaW5nUHJvdG8nIHZhcmlh
bnQgb2YgdGhlICdoYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzJyBzdGF0ZS4KKyAgICAgICAgKiBy
dW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Omhhc0dldHRlclNl
dHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90byk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6
c2V0SGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyk6CisgICAgICAgIChTdHJ1Y3R1cmUpOgorICAg
ICAgICAgICAgLSBBZGRlZCAnRXhjbHVkaW5nUHJvdG8nIHZhcmlhbnQgb2YgdGhlICdoYXNHZXR0
ZXJTZXR0ZXJQcm9wZXJ0aWVzJyBzdGF0ZS4KKwogMjAxMi0wMi0xNSAgR2F2aW4gQmFycmFjbG91
Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgTnVtZXJvdXMgdHJpdmlhbCBi
dWdzIGluIE9iamVjdC5kZWZpbmVQcm9wZXJ0eQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDEwNzk1NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDAsMTAgKzE0MCwxMCBAQCBDYWxsRnJhbWUqIENhbGxGcmFtZTo6dHJ1ZUNhbGxl
ckZyYW1lKCkKICAgICAvLwogICAgIC8vIG1hY2hpbmVDYWxsZXIgLT4gVGhlIGNhbGxlciBhY2Nv
cmRpbmcgdG8gdGhlIG1hY2hpbmUsIHdoaWNoIG1heSBiZSB6ZXJvIG9yCiAgICAgLy8gICAgbW9y
ZSBmcmFtZXMgYWJvdmUgdGhlIHRydWUgY2FsbGVyIGR1ZSB0byBpbmxpbmluZy4KLSAgICAKKwog
ICAgIC8vIEFtIEkgYW4gaW5saW5lIGNhbGwgZnJhbWU/IElmIHNvLCB3ZSdyZSBkb25lLgotICAg
IGlmIChpc0lubGluZUNhbGxGcmFtZSgpKQotICAgICAgICByZXR1cm4gY2FsbGVyRnJhbWUoKTsK
KyAgICBpZiAoaXNJbmxpbmVDYWxsRnJhbWUoKSB8fCAhaGFzUmV0dXJuUEMoKSkKKyAgICAgICAg
cmV0dXJuIGNhbGxlckZyYW1lKCktPnJlbW92ZUhvc3RDYWxsRnJhbWVGbGFnKCk7CiAgICAgCiAg
ICAgLy8gSSBhbSBhIG1hY2hpbmUgY2FsbCBmcmFtZSwgc28gdGhlIHF1ZXN0aW9uIGlzOiBpcyBt
eSBjYWxsZXIgYSBtYWNoaW5lIGNhbGwgZnJhbWUKICAgICAvLyB0aGF0IGhhcyBpbmxpbmVzIG9y
IGEgbWFjaGluZSBjYWxsIGZyYW1lIHRoYXQgZG9lc24ndD8KQEAgLTE1NCw5ICsxNTQsOSBAQCBD
YWxsRnJhbWUqIENhbGxGcmFtZTo6dHJ1ZUNhbGxlckZyYW1lKCkKICAgICAKICAgICAvLyBGaWd1
cmUgb3V0IGhvdyB3ZSB3YW50IHRvIGdldCB0aGUgY3VycmVudCBjb2RlIGxvY2F0aW9uLgogICAg
IGlmIChoYXNIb3N0Q2FsbEZyYW1lRmxhZygpIHx8IHJldHVybkFkZHJlc3NJc0luQ3RpVHJhbXBv
bGluZShyZXR1cm5QQygpKSkKLSAgICAgICAgcmV0dXJuIG1hY2hpbmVDYWxsZXItPnRydWVDYWxs
RnJhbWVGcm9tVk1Db2RlKCk7CisgICAgICAgIHJldHVybiBtYWNoaW5lQ2FsbGVyLT50cnVlQ2Fs
bEZyYW1lRnJvbVZNQ29kZSgpLT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxhZygpOwogICAgIAotICAg
IHJldHVybiBtYWNoaW5lQ2FsbGVyLT50cnVlQ2FsbEZyYW1lKHJldHVyblBDKCkpOworICAgIHJl
dHVybiBtYWNoaW5lQ2FsbGVyLT50cnVlQ2FsbEZyYW1lKHJldHVyblBDKCkpLT5yZW1vdmVIb3N0
Q2FsbEZyYW1lRmxhZygpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDEwNzk1NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTAzLDYgKzEwMyw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKIAogICAgICAgICBDYWxsRnJhbWUq
IGNhbGxlckZyYW1lKCkgY29uc3QgeyByZXR1cm4gdGhpc1tSZWdpc3RlckZpbGU6OkNhbGxlckZy
YW1lXS5jYWxsRnJhbWUoKTsgfQogI2lmIEVOQUJMRShKSVQpCisgICAgICAgIGJvb2wgaGFzUmV0
dXJuUEMoKSBjb25zdCB7IHJldHVybiB0aGlzW1JlZ2lzdGVyRmlsZTo6UmV0dXJuUENdLnZQQygp
OyB9CiAgICAgICAgIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuUEMoKSBjb25zdCB7IHJldHVybiBS
ZXR1cm5BZGRyZXNzUHRyKHRoaXNbUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQ10udlBDKCkpOyB9CiAj
ZW5kaWYKICAgICAgICAgQWJzdHJhY3RQQyBhYnN0cmFjdFJldHVyblBDKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSkgeyByZXR1cm4gQWJzdHJhY3RQQyhnbG9iYWxEYXRhLCB0aGlzKTsgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAkocmV2aXNpb24gMTA3OTU1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03NzQsNyArNzc0LDYgQEAgdGVtcGxhdGUgPEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJl
cXVpcmVtZQogICAgIGZ1bmN0aW9uU2NvcGUtPnNldElzRnVuY3Rpb24oKTsKICAgICBpZiAobWF0
Y2goSURFTlQpKSB7CiAgICAgICAgIG5hbWUgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKLSAgICAg
ICAgZmFpbElmVHJ1ZVdpdGhNZXNzYWdlKCpuYW1lID09IG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlO
YW1lcy0+dW5kZXJzY29yZVByb3RvLCAiQ2Fubm90IG5hbWUgYSBmdW5jdGlvbiBfX3Byb3RvX18i
KTsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBpZiAoIW5hbWVJc0luQ29udGFpbmluZ1Njb3Bl
KQogICAgICAgICAgICAgZmFpbElmRmFsc2VJZlN0cmljdChmdW5jdGlvblNjb3BlLT5kZWNsYXJl
VmFyaWFibGUobmFtZSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMTA3OTU1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
OCw3ICs3OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gSlNHbG9iYWxP
YmplY3Q6OnNfaW5mbyA9IHsgIkdsb2JhbE9iamVjdCIsICZKU1ZhcmlhYmxlT2JqZWN0OjpzX2lu
Zm8sIDAsIEV4ZWNTdGF0ZTo6Z2xvYmFsT2JqZWN0VGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNHbG9iYWxPYmplY3QpIH07CiAKLWNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTR2xv
YmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmc3VwcG9ydHNQcm9maWxp
bmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0IH07Citj
b25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0dsb2JhbE9iamVjdDo6c19nbG9iYWxPYmpl
Y3RNZXRob2RUYWJsZSA9IHsgJmFsbG93c0FjY2Vzc0Zyb20sICZzdXBwb3J0c1Byb2ZpbGluZywg
JnN1cHBvcnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQgfTsKIAogLyog
U291cmNlIGZvciBKU0dsb2JhbE9iamVjdC5sdXQuaAogQGJlZ2luIGdsb2JhbE9iamVjdFRhYmxl
CkBAIC0yMDUsNiArMjA1LDEwIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUg
cHJvdG8KICAgICBtX2NhbGxGdW5jdGlvbi5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBj
YWxsRnVuY3Rpb24pOwogICAgIG1fYXBwbHlGdW5jdGlvbi5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgp
LCB0aGlzLCBhcHBseUZ1bmN0aW9uKTsKICAgICBtX29iamVjdFByb3RvdHlwZS5zZXQoZXhlYy0+
Z2xvYmFsRGF0YSgpLCB0aGlzLCBPYmplY3RQcm90b3R5cGU6OmNyZWF0ZShleGVjLCB0aGlzLCBP
YmplY3RQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMs
IGpzTnVsbCgpKSkpOworICAgIEdldHRlclNldHRlciogcHJvdG9BY2Nlc3NvciA9IEdldHRlclNl
dHRlcjo6Y3JlYXRlKGV4ZWMpOworICAgIHByb3RvQWNjZXNzb3ItPnNldEdldHRlcihleGVjLT5n
bG9iYWxEYXRhKCksIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzLCAwLCBJZGVudGlmaWVy
KCksIGdsb2JhbEZ1bmNQcm90b0dldHRlcikpOworICAgIHByb3RvQWNjZXNzb3ItPnNldFNldHRl
cihleGVjLT5nbG9iYWxEYXRhKCksIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCB0aGlzLCAwLCBJ
ZGVudGlmaWVyKCksIGdsb2JhbEZ1bmNQcm90b1NldHRlcikpOworICAgIG1fb2JqZWN0UHJvdG90
eXBlLT5wdXREaXJlY3RBY2Nlc3NvcihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8sIHByb3RvQWNjZXNzb3IsIEFjY2Vzc29yIHwgRG9udEVu
dW0pOwogICAgIG1fZnVuY3Rpb25Qcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5cGVX
aXRob3V0VHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG1fb2JqZWN0UHJvdG90eXBlLmdl
dCgpKTsKIAogICAgIG1fZW1wdHlPYmplY3RTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUtPmluaGVyaXRvcklEKGV4ZWMtPmdsb2JhbERhdGEo
KSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCShyZXZpc2lvbiAxMDc5NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHR5cGVkZWYgVmVjdG9yPEV4ZWNTdGF0ZSosIDE2PiBFeGVjU3RhdGVT
dGFjazsKICAgICAKICAgICBzdHJ1Y3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgeworICAgICAg
ICB0eXBlZGVmIGJvb2wgKCpBbGxvd3NBY2Nlc3NGcm9tRnVuY3Rpb25QdHIpKGNvbnN0IEpTR2xv
YmFsT2JqZWN0KiwgRXhlY1N0YXRlKik7CisgICAgICAgIEFsbG93c0FjY2Vzc0Zyb21GdW5jdGlv
blB0ciBhbGxvd3NBY2Nlc3NGcm9tOworCiAgICAgICAgIHR5cGVkZWYgYm9vbCAoKlN1cHBvcnRz
UHJvZmlsaW5nRnVuY3Rpb25QdHIpKGNvbnN0IEpTR2xvYmFsT2JqZWN0Kik7IAogICAgICAgICBT
dXBwb3J0c1Byb2ZpbGluZ0Z1bmN0aW9uUHRyIHN1cHBvcnRzUHJvZmlsaW5nOwogCkBAIC0yNzks
NiArMjgyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgY29uc3QgR2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUqIGdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9n
bG9iYWxPYmplY3RNZXRob2RUYWJsZTsgfQogCisgICAgICAgIHN0YXRpYyBib29sIGFsbG93c0Fj
Y2Vzc0Zyb20oY29uc3QgSlNHbG9iYWxPYmplY3QqLCBFeGVjU3RhdGUqKSB7IHJldHVybiB0cnVl
OyB9CiAgICAgICAgIHN0YXRpYyBib29sIHN1cHBvcnRzUHJvZmlsaW5nKGNvbnN0IEpTR2xvYmFs
T2JqZWN0KikgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNS
aWNoU291cmNlSW5mbyhjb25zdCBKU0dsb2JhbE9iamVjdCopIHsgcmV0dXJuIHRydWU7IH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0RnVuY3Rpb25zLmNwcAkocmV2aXNpb24gMTA3OTU1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MTQsNCArNzE0LDQwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xv
YmFsRnVuY1QKICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKIH0KIAorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9HZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjKQoreworICAgIGlmICghZXhlYy0+dGhpc1ZhbHVlKCkuaXNPYmplY3QoKSkKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT50aGlzVmFsdWUoKS5zeW50aGVzaXplUHJvdG90
eXBlKGV4ZWMpKTsKKworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gYXNPYmplY3QoZXhlYy0+
dGhpc1ZhbHVlKCkpOworICAgIGlmICghdGhpc09iamVjdC0+YWxsb3dzQWNjZXNzRnJvbShleGVj
LT50cnVlQ2FsbGVyRnJhbWUoKSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3QtPnBy
b3RvdHlwZSgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5j
UHJvdG9TZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdmFsdWUgPSBleGVj
LT5hcmd1bWVudCgwKTsKKworICAgIC8vIFNldHRpbmcgX19wcm90b19fIG9mIGEgcHJpbWl0aXZl
IHNob3VsZCBoYXZlIG5vIGVmZmVjdC4KKyAgICBpZiAoIWV4ZWMtPnRoaXNWYWx1ZSgpLmlzT2Jq
ZWN0KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisK
KyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGFzT2JqZWN0KGV4ZWMtPnRoaXNWYWx1ZSgpKTsK
KyAgICBpZiAoIXRoaXNPYmplY3QtPmFsbG93c0FjY2Vzc0Zyb20oZXhlYy0+dHJ1ZUNhbGxlckZy
YW1lKCkpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwor
CisgICAgLy8gU2V0dGluZyBfX3Byb3RvX18gdG8gYSBub24tb2JqZWN0LCBub24tbnVsbCB2YWx1
ZSBpcyBzaWxlbnRseSBpZ25vcmVkIHRvIG1hdGNoIE1vemlsbGEuCisgICAgaWYgKCF2YWx1ZS5p
c09iamVjdCgpICYmICF2YWx1ZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIGlmICghdGhpc09iamVjdC0+aXNFeHRlbnNpYmxl
KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOworCisgICAgaWYgKCF0
aGlzT2JqZWN0LT5zZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhleGVjLT5nbG9iYWxEYXRhKCks
IHZhbHVlKSkKKyAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiY3lj
bGljIF9fcHJvdG9fXyB2YWx1ZSIpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaAko
cmV2aXNpb24gMTA3OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNF
c2NhcGUoRXhlY1N0YXRlKik7CiAgICAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9i
YWxGdW5jVW5lc2NhcGUoRXhlY1N0YXRlKik7CiAgICAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKik7CisgICAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9HZXR0ZXIoRXhlY1N0YXRlKik7Cisg
ICAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9TZXR0ZXIoRXhl
Y1N0YXRlKik7CiAKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIG1hbnRpc3NhT3ZlcmZsb3dMb3dl
ckJvdW5kID0gOTAwNzE5OTI1NDc0MDk5Mi4wOwogICAgIGRvdWJsZSBwYXJzZUludE92ZXJmbG93
KGNvbnN0IExDaGFyKiwgaW50IGxlbmd0aCwgaW50IHJhZGl4KTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDEwNzk1NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTMyLDMzICsxMzIsMTkgQEAgdm9pZCBKU09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YQogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkg
PT0gSGVhcDo6aGVhcCh0aGlzT2JqZWN0KSk7CiAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
ID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwogCi0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKSB7Ci0gICAgICAgIC8vIFNldHRpbmcgX19w
cm90b19fIHRvIGEgbm9uLW9iamVjdCwgbm9uLW51bGwgdmFsdWUgaXMgc2lsZW50bHkgaWdub3Jl
ZCB0byBtYXRjaCBNb3ppbGxhLgotICAgICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkgJiYgIXZh
bHVlLmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghdGhpc09i
amVjdC0+aXNFeHRlbnNpYmxlKCkpIHsKLSAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9k
ZSgpKQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFk
b25seVByb3BlcnR5V3JpdGVFcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgICAgIAotICAgICAgICBpZiAoIXRoaXNPYmplY3QtPnNldFByb3RvdHlwZVdpdGhD
eWNsZUNoZWNrKGdsb2JhbERhdGEsIHZhbHVlKSkKLSAgICAgICAgICAgIHRocm93RXJyb3IoZXhl
YywgY3JlYXRlRXJyb3IoZXhlYywgImN5Y2xpYyBfX3Byb3RvX18gdmFsdWUiKSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KICAgICAvLyBDaGVjayBpZiB0aGVyZSBhcmUgYW55IHNldHRlcnMg
b3IgZ2V0dGVycyBpbiB0aGUgcHJvdG90eXBlIGNoYWluCiAgICAgSlNWYWx1ZSBwcm90b3R5cGU7
Ci0gICAgZm9yIChKU09iamVjdCogb2JqID0gdGhpc09iamVjdDsgIW9iai0+c3RydWN0dXJlKCkt
Pmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKTsgb2JqID0gYXNPYmplY3QocHJvdG90eXBlKSkg
ewotICAgICAgICBwcm90b3R5cGUgPSBvYmotPnByb3RvdHlwZSgpOwotICAgICAgICBpZiAocHJv
dG90eXBlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBpZiAoIXRoaXNPYmplY3QtPnB1dERpcmVj
dEludGVybmFsPFB1dE1vZGVQdXQ+KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAs
IHNsb3QsIGdldEpTRnVuY3Rpb24odmFsdWUpKSAmJiBzbG90LmlzU3RyaWN0TW9kZSgpKQotICAg
ICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgaWYgKHByb3BlcnR5TmFt
ZSAhPSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKSB7CisgICAgICAgIGZv
ciAoSlNPYmplY3QqIG9iaiA9IHRoaXNPYmplY3Q7ICFvYmotPnN0cnVjdHVyZSgpLT5oYXNHZXR0
ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8oKTsgb2JqID0gYXNPYmplY3QocHJvdG90
eXBlKSkgeworICAgICAgICAgICAgcHJvdG90eXBlID0gb2JqLT5wcm90b3R5cGUoKTsKKyAgICAg
ICAgICAgIGlmIChwcm90b3R5cGUuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXRo
aXNPYmplY3QtPnB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KGdsb2JhbERhdGEsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QsIGdldEpTRnVuY3Rpb24odmFsdWUpKSAmJiBzbG90Lmlz
U3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBT
dHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHVuc2ln
bmVkIGF0dHJpYnV0ZXM7CiAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwogICAgIGlmICgodGhp
c09iamVjdC0+c3RydWN0dXJlKCktPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJp
YnV0ZXMsIHNwZWNpZmljVmFsdWUpICE9IFdURjo6bm90Rm91bmQpICYmIGF0dHJpYnV0ZXMgJiBS
ZWFkT25seSkgewpAQCAtMjE2LDEwICsyMDIsMzEgQEAgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0
VmlydHVhbChKU09iamVjdAogICAgIG9iamVjdC0+cHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURl
ZmluZU93blByb3BlcnR5PihleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgdmFsdWUs
IGF0dHJpYnV0ZXMsIHNsb3QsIGdldEpTRnVuY3Rpb24odmFsdWUpKTsKIH0KIAorYm9vbCBKU09i
amVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2soSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICBKU1ZhbHVlIGNoZWNrRm9yID0gdGhpczsKKyAg
ICBpZiAodGhpcy0+aXNHbG9iYWxPYmplY3QoKSkKKyAgICAgICAgY2hlY2tGb3IgPSBzdGF0aWNf
Y2FzdDxKU0dsb2JhbE9iamVjdCo+KHRoaXMpLT5nbG9iYWxFeGVjKCktPnRoaXNWYWx1ZSgpOwor
CisgICAgSlNWYWx1ZSBuZXh0UHJvdG90eXBlID0gcHJvdG90eXBlOworICAgIHdoaWxlIChuZXh0
UHJvdG90eXBlICYmIG5leHRQcm90b3R5cGUuaXNPYmplY3QoKSkgeworICAgICAgICBpZiAobmV4
dFByb3RvdHlwZSA9PSBjaGVja0ZvcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgbmV4dFByb3RvdHlwZSA9IGFzT2JqZWN0KG5leHRQcm90b3R5cGUpLT5wcm90b3R5cGUoKTsK
KyAgICB9CisgICAgc2V0UHJvdG90eXBlKGdsb2JhbERhdGEsIHByb3RvdHlwZSk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgSlNPYmplY3Q6OmFsbG93c0FjY2Vzc0Zyb20oRXhlY1N0YXRl
KiBleGVjKQoreworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBpc0dsb2JhbFRo
aXMoKSA/IHN0YXRpY19jYXN0PEpTR2xvYmFsVGhpcyo+KHRoaXMpLT51bndyYXBwZWRPYmplY3Qo
KSA6IHRoaXMtPmdsb2JhbE9iamVjdCgpOworICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlKCktPmFsbG93c0FjY2Vzc0Zyb20oZ2xvYmFsT2JqZWN0LCBleGVj
KTsKK30KKwogdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0QWNjZXNzb3IoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgQVNTRVJUKHZhbHVlLmlzR2V0dGVyU2V0dGVy
KCkgJiYgKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwotICAgIEFTU0VSVChwcm9wZXJ0eU5hbWUg
IT0gZ2xvYmFsRGF0YS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pOwogCiAgICAgUHV0
UHJvcGVydHlTbG90IHNsb3Q7CiAgICAgcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93
blByb3BlcnR5PihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBz
bG90LCBnZXRKU0Z1bmN0aW9uKHZhbHVlKSk7CkBAIC0yMzAsNyArMjM3LDcgQEAgdm9pZCBKU09i
amVjdDo6cHV0RGlyZWN0QWNjZXNzb3IoSlNHbG9iYQogICAgIGlmIChzbG90LnR5cGUoKSAhPSBQ
dXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KQogICAgICAgICBzZXRTdHJ1Y3R1cmUoZ2xvYmFs
RGF0YSwgU3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0
cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpKTsKIAotICAgIHN0cnVjdHVyZSgp
LT5zZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKHRydWUpOworICAgIHN0cnVjdHVyZSgpLT5z
ZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKHByb3BlcnR5TmFtZSA9PSBnbG9iYWxEYXRhLnBy
b3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90byk7CiB9CiAKIGJvb2wgSlNPYmplY3Q6Omhhc1By
b3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBj
b25zdApAQCAtNjMyLDExICs2MzksNiBAQCBzdGF0aWMgYm9vbCBwdXREZXNjcmlwdG9yKEV4ZWNT
dGF0ZSogZXhlCiAKIGJvb2wgSlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7Ci0g
ICAgLy8gX19wcm90b19fIGlzIG1hZ2ljOyB3ZSBkb24ndCBjdXJyZW50bHkgc3VwcG9ydCBzZXR0
aW5nIGl0IGFzIGEgcmVndWxhciBwcm9wZXJ0eS4KLSAgICAvLyBTaWxlbnQgZmlsdGVyIG91dCBj
YWxscyB0byBzZXQgX19wcm90b19fIGF0IGFuIGVhcmx5IHN0YWdlOyBwcmV0ZW5kIGFsbCBpcyBv
a2F5LgotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnVuZGVy
c2NvcmVQcm90bykKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KICAgICAvLyBJZiB3ZSBoYXZlIGEg
bmV3IHByb3BlcnR5IHdlIGNhbiBqdXN0IHB1dCBpdCBvbiBub3JtYWxseQogICAgIFByb3BlcnR5
RGVzY3JpcHRvciBjdXJyZW50OwogICAgIGlmICghb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnQp
KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlz
aW9uIDEwNzk1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNSw2ICsxMDUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJv
cGVydHlEZXNjcmlwdG9yJik7CiAKKyAgICAgICAgYm9vbCBhbGxvd3NBY2Nlc3NGcm9tKEV4ZWNT
dGF0ZSopOworCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dChKU0Nl
bGwqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUs
IFB1dFByb3BlcnR5U2xvdCYpOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9p
ZCBwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSk7CiAKQEAgLTQ4NiwxOSArNDg4LDYgQEAgaW5saW5lIEpTVmFsdWUgSlNPYmplY3Q6
OnByb3RvdHlwZSgpIGNvbgogICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90eXBl
KCk7CiB9CiAKLWlubGluZSBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVj
ayhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQotewotICAgIEpT
VmFsdWUgbmV4dFByb3RvdHlwZVZhbHVlID0gcHJvdG90eXBlOwotICAgIHdoaWxlIChuZXh0UHJv
dG90eXBlVmFsdWUgJiYgbmV4dFByb3RvdHlwZVZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAg
SlNPYmplY3QqIG5leHRQcm90b3R5cGUgPSBhc09iamVjdChuZXh0UHJvdG90eXBlVmFsdWUpLT51
bndyYXBwZWRPYmplY3QoKTsKLSAgICAgICAgaWYgKG5leHRQcm90b3R5cGUgPT0gdGhpcykKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbmV4dFByb3RvdHlwZVZhbHVlID0gbmV4
dFByb3RvdHlwZS0+cHJvdG90eXBlKCk7Ci0gICAgfQotICAgIHNldFByb3RvdHlwZShnbG9iYWxE
YXRhLCBwcm90b3R5cGUpOwotICAgIHJldHVybiB0cnVlOwotfQotCiBpbmxpbmUgdm9pZCBKU09i
amVjdDo6c2V0UHJvdG90eXBlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90
b3R5cGUpCiB7CiAgICAgQVNTRVJUKHByb3RvdHlwZSk7CkBAIC01NTAsMTIgKzUzOSw2IEBAIEFM
V0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6aW5saW5lR2V0T3cKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCi0gICAgLy8gbm9uLXN0YW5kYXJkIE5ldHNjYXBlIGV4dGVuc2lvbgotICAg
IGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQcm90
bykgewotICAgICAgICBzbG90LnNldFZhbHVlKHByb3RvdHlwZSgpKTsKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC04MDMsOCArNzg2LDYg
QEAgaW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6Z2V0KEV4ZWNTdGF0ZSogZQogewogICAgIGlmIChV
TkxJS0VMWSghaXNDZWxsKCkpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBzeW50
aGVzaXplUHJvdG90eXBlKGV4ZWMpOwotICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pCi0gICAgICAgICAgICByZXR1cm4gcHJv
dG90eXBlOwogICAgICAgICBpZiAoIXByb3RvdHlwZS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHBy
b3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAg
ICAgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAJKHJldmlzaW9uIDEwNzk1
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjUzLDEwICsyNTMsNiBAQCBib29sIEpTU3RyaW5nOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNDZWxsCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBzaG91bGQgb25seSBiZSBjYWxsZWQg
YnkgSlNWYWx1ZTo6Z2V0LgogICAgIGlmICh0aGlzT2JqZWN0LT5nZXRTdHJpbmdQcm9wZXJ0eVNs
b3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
aWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3Rv
KSB7Ci0gICAgICAgIHNsb3Quc2V0VmFsdWUoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5z
dHJpbmdQcm90b3R5cGUoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KICAgICBzbG90
LnNldEJhc2UodGhpc09iamVjdCk7CiAgICAgSlNPYmplY3QqIG9iamVjdDsKICAgICBmb3IgKEpT
VmFsdWUgcHJvdG90eXBlID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5zdHJpbmdQcm90
b3R5cGUoKTsgIXByb3RvdHlwZS5pc051bGwoKTsgcHJvdG90eXBlID0gb2JqZWN0LT5wcm90b3R5
cGUoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkocmV2
aXNpb24gMTA3OTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzQsNiArMjM0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgY2hhciogZGVzY3JpcHRpb24oKTsKIAorICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBK
U09iamVjdCogc3ludGhlc2l6ZVByb3RvdHlwZShFeGVjU3RhdGUqKSBjb25zdDsKKwogICAgIHBy
aXZhdGU6CiAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBKU1ZhbHVlKFdyaXRlQmFycmllckJh
c2U8VD4pOwogCkBAIC0yNDYsNyArMjQ4LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0b09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSosIEpT
R2xvYmFsT2JqZWN0KikgY29uc3Q7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0
KiB0b1RoaXNPYmplY3RTbG93Q2FzZShFeGVjU3RhdGUqKSBjb25zdDsKIAotICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBKU09iamVjdCogc3ludGhlc2l6ZVByb3RvdHlwZShFeGVjU3RhdGUqKSBj
b25zdDsKICAgICAgICAgSlNPYmplY3QqIHN5bnRoZXNpemVPYmplY3QoRXhlY1N0YXRlKikgY29u
c3Q7CiAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTA3OTU2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsMTEgKzEzOCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdENvbnN0CiB7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09i
amVjdCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJv
cihleGVjLCAiUmVxdWVzdGVkIHByb3RvdHlwZSBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIG9i
amVjdC4iKSk7Ci0gICAgICAgIAotICAgIC8vIFRoaXMgdXNlcyBKU1ZhbHVlOjpnZXQoKSBpbnN0
ZWFkIG9mIGRpcmVjdGx5IGFjY2Vzc2luZyB0aGUgcHJvdG90eXBlIGZyb20gdGhlIG9iamVjdAot
ICAgIC8vICh1c2luZyBKU09iamVjdDo6cHJvdG90eXBlKCkpIGluIG9yZGVyIHRvIGFsbG93IG9i
amVjdHMgdG8gb3ZlcnJpZGUgdGhlIGJlaGF2aW9yLCBzdWNoCi0gICAgLy8gYXMgcmV0dXJuaW5n
IGpzVW5kZWZpbmVkKCkgZm9yIGNyb3NzLW9yaWdpbiBhY2Nlc3MuCi0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShleGVjLT5hcmd1bWVudCgwKS5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1l
cygpLnVuZGVyc2NvcmVQcm90bykpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChl
eGVjLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFvYmplY3QtPmFsbG93c0FjY2Vzc0Zyb20oZXhl
Yy0+dHJ1ZUNhbGxlckZyYW1lKCkpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0LT5wcm90b3R5
cGUoKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0
b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAxMDc5NTYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjcsNiArMTY3LDcgQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxE
YXRhJiBnbG9iYQogICAgICwgbV9kaWN0aW9uYXJ5S2luZChOb25lRGljdGlvbmFyeUtpbmQpCiAg
ICAgLCBtX2lzUGlubmVkUHJvcGVydHlUYWJsZShmYWxzZSkKICAgICAsIG1faGFzR2V0dGVyU2V0
dGVyUHJvcGVydGllcyhmYWxzZSkKKyAgICAsIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4
Y2x1ZGluZ1Byb3RvKGZhbHNlKQogICAgICwgbV9oYXNOb25FbnVtZXJhYmxlUHJvcGVydGllcyhm
YWxzZSkKICAgICAsIG1fYXR0cmlidXRlc0luUHJldmlvdXMoMCkKICAgICAsIG1fc3BlY2lmaWNG
dW5jdGlvblRocmFzaENvdW50KDApCkBAIC0xODgsNiArMTg5LDcgQEAgU3RydWN0dXJlOjpTdHJ1
Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYQogICAgICwgbV9kaWN0aW9uYXJ5S2luZChOb25lRGlj
dGlvbmFyeUtpbmQpCiAgICAgLCBtX2lzUGlubmVkUHJvcGVydHlUYWJsZShmYWxzZSkKICAgICAs
IG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhmYWxzZSkKKyAgICAsIG1faGFzR2V0dGVyU2V0
dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKGZhbHNlKQogICAgICwgbV9oYXNOb25FbnVtZXJh
YmxlUHJvcGVydGllcyhmYWxzZSkKICAgICAsIG1fYXR0cmlidXRlc0luUHJldmlvdXMoMCkKICAg
ICAsIG1fc3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50KDApCkBAIC0yMDcsNiArMjA5LDcgQEAg
U3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYQogICAgICwgbV9kaWN0aW9u
YXJ5S2luZChwcmV2aW91cy0+bV9kaWN0aW9uYXJ5S2luZCkKICAgICAsIG1faXNQaW5uZWRQcm9w
ZXJ0eVRhYmxlKGZhbHNlKQogICAgICwgbV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKHByZXZp
b3VzLT5tX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMpCisgICAgLCBtX2hhc0dldHRlclNldHRl
clByb3BlcnRpZXNFeGNsdWRpbmdQcm90byhwcmV2aW91cy0+bV9oYXNHZXR0ZXJTZXR0ZXJQcm9w
ZXJ0aWVzRXhjbHVkaW5nUHJvdG8pCiAgICAgLCBtX2hhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVz
KHByZXZpb3VzLT5tX2hhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzKQogICAgICwgbV9hdHRyaWJ1
dGVzSW5QcmV2aW91cygwKQogICAgICwgbV9zcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQocHJl
dmlvdXMtPm1fc3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50KQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDEwNzk1NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDUsNyArMTQ1LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICAgICAgYm9v
bCBoYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNHZXR0ZXJT
ZXR0ZXJQcm9wZXJ0aWVzOyB9Ci0gICAgICAgIHZvaWQgc2V0SGFzR2V0dGVyU2V0dGVyUHJvcGVy
dGllcyhib29sIGhhc0dldHRlclNldHRlclByb3BlcnRpZXMpIHsgbV9oYXNHZXR0ZXJTZXR0ZXJQ
cm9wZXJ0aWVzID0gaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllczsgfQorICAgICAgICBib29sIGhh
c0dldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90bygpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvOyB9CisgICAgICAgIHZvaWQg
c2V0SGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhib29sIGlzX19wcm90b19fKQorICAgICAgICB7
CisgICAgICAgICAgICBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMgPSB0cnVlOworICAgICAg
ICAgICAgaWYgKCFpc19fcHJvdG9fXykKKyAgICAgICAgICAgICAgICBtX2hhc0dldHRlclNldHRl
clByb3BlcnRpZXNFeGNsdWRpbmdQcm90byA9IHRydWU7CisgICAgICAgIH0KIAogICAgICAgICBi
b29sIGhhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNOb25F
bnVtZXJhYmxlUHJvcGVydGllczsgfQogICAgICAgICAKQEAgLTI4Miw2ICsyODgsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgbV9kaWN0aW9uYXJ5S2luZCA6IDI7CiAgICAg
ICAgIGJvb2wgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUgOiAxOwogICAgICAgICBib29sIG1faGFz
R2V0dGVyU2V0dGVyUHJvcGVydGllcyA6IDE7CisgICAgICAgIGJvb2wgbV9oYXNHZXR0ZXJTZXR0
ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8gOiAxOwogICAgICAgICBib29sIG1faGFzTm9uRW51
bWVyYWJsZVByb3BlcnRpZXMgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2F0dHJpYnV0ZXNJblBy
ZXZpb3VzIDogNzsKICAgICAgICAgdW5zaWduZWQgbV9zcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291
bnQgOiAyOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA3OTU1KQorKysgU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMDItMTYg
IEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIE1v
dmUgc3BlY2lhbCBfX3Byb3RvX18gcHJvcGVydHkgdG8gT2JqZWN0LnByb3RvdHlwZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0MDkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZS1pbXBsZW1lbnQgdGhp
cyBhcyBhIHJlZ3VsYXIgYWNjZXNzb3IgcHJvcGVydHkuICBUaGlzIGhhcyB0aHJlZSBrZXkgYmVu
ZWZpdHM6CisgICAgICAgIDEpIEl0IG1ha2VzIGl0IHBvc3NpYmxlIGZvciBvYmplY3RzIHRvIGJl
IGdpdmVuIHByb3BlcnRpZXMgbmFtZWQgX19wcm90b19fLgorICAgICAgICAyKSBPYmplY3QucHJv
dG90eXBlLl9fcHJvdG9fXyBjYW4gYmUgZGVsZXRlZCwgcHJldmVudGluZyBvYmplY3QgcHJvdG90
eXBlcyBmcm9tIGJlaW5nIGNoYW5nZWQuCisgICAgICAgIDMpIFRoaXMgbGFyZ2VseSByZW1vdmVz
IHRoZSBtYWdpYyB1c2VkIHRoZSBpbXBsZW1lbnQgX19wcm90b19fLCBpdCBjYW4ganVzdCBiZSBt
YWRlIGEgcmVndWxhciBhY2Nlc3NvciBwcm9wZXJ0eS4KKworICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6
OmFsbG93c0FjY2Vzc0Zyb20pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICAgICAtIGV4
cG9zZSBhbGxvd3NBY2Nlc3NGcm9tIGNoZWNrIHRvIEpTQy4KKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuaDoKKyAgICAgICAgKEpTRE9NV2luZG93QmFzZSk6CisgICAgICAg
ICAgICAtIGV4cG9zZSBhbGxvd3NBY2Nlc3NGcm9tIGNoZWNrIHRvIEpTQy4KKwogMjAxMi0wMi0x
NiAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUm9sbCBvdXQgcjEw
Nzg4NwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuY3BwCShyZXZpc2lvbiAxMDc5NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY29uc3QgQ2xhc3NJbmZvIEpTRE9NV2luZG93QmFzZTo6c19pbmZv
ID0geyAiV2luZG93IiwgJkpTRE9NR2xvYmFsT2JqZWN0OjpzX2luZm8sIDAsIDAsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNET01XaW5kb3dCYXNlKSB9OwogCi1jb25zdCBHbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSBKU0RPTVdpbmRvd0Jhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZz
dXBwb3J0c1Byb2ZpbGluZywgJnN1cHBvcnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJbnRlcnJ1
cHRTY3JpcHQgfTsKK2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTRE9NV2luZG93QmFz
ZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJmFsbG93c0FjY2Vzc0Zyb20sICZzdXBw
b3J0c1Byb2ZpbGluZywgJnN1cHBvcnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJbnRlcnJ1cHRT
Y3JpcHQgfTsKIAogSlNET01XaW5kb3dCYXNlOjpKU0RPTVdpbmRvd0Jhc2UoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxET01XaW5kb3c+
IHdpbmRvdywgSlNET01XaW5kb3dTaGVsbCogc2hlbGwpCiAgICAgOiBKU0RPTUdsb2JhbE9iamVj
dChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIHNoZWxsLT53b3JsZCgpLCAmc19nbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSkKQEAgLTkyLDYgKzkyLDM0IEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpwcmlu
dEVycm9yTWVzc2FnZSgKICAgICBwcmludEVycm9yTWVzc2FnZUZvckZyYW1lKGltcGwoKS0+ZnJh
bWUoKSwgbWVzc2FnZSk7CiB9CiAKKy8vIFRoaXMgbWV0aG9kIGNoZWNrcyB3aGV0aGVyIGFjY2Vz
c3MgdG8gKnRoaXMqIGdsb2JhbCBvYmplY3QgaXMgcGVybWl0dGVkIGZyb20KKy8vIHRoZSBnaXZl
biBjb250ZXh0OyB0aGlzIGRpZmZlcnMgZnJvbSBhbGxvd3NBY2Nlc3NGcm9tUHJpdmF0ZSwgc2lu
Y2UgdGhhdAorLy8gbWV0aG9kIGNoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBjb250ZXh0IGlzIHBl
cm1pdHRlZCB0byBhY2Nlc3MgdGhlIGN1cnJlbnQKKy8vIHdpbmRvdyB0aGUgc2hlbGwgaXMgcmVm
ZXJlbmNpbmcgKHdoaWNoIG1heSBjb21lIGZyb20gYSBkaWZmZXJlbnQgc2VjdXJpdHkKKy8vIG9y
aWdpbiB0byB0aGlzIGdsb2JhbCBvYmplY3QpLgorYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OmFsbG93
c0FjY2Vzc0Zyb20oY29uc3QgSlNHbG9iYWxPYmplY3QqIHRoaXNPYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICBKU0dsb2JhbE9iamVjdCogb3RoZXJPYmplY3QgPSBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCk7CisKKyAgICBjb25zdCBKU0RPTVdpbmRvdyogb3JpZ2luV2luZG93ID0g
YXNKU0RPTVdpbmRvdyhvdGhlck9iamVjdCk7CisgICAgY29uc3QgSlNET01XaW5kb3cqIHRhcmdl
dFdpbmRvdyA9IGFzSlNET01XaW5kb3codGhpc09iamVjdCk7CisKKyAgICBpZiAob3JpZ2luV2lu
ZG93ID09IHRhcmdldFdpbmRvdykKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjb25zdCBT
ZWN1cml0eU9yaWdpbiogb3JpZ2luU2VjdXJpdHlPcmlnaW4gPSBvcmlnaW5XaW5kb3ctPmltcGwo
KS0+c2VjdXJpdHlPcmlnaW4oKTsKKyAgICBjb25zdCBTZWN1cml0eU9yaWdpbiogdGFyZ2V0U2Vj
dXJpdHlPcmlnaW4gPSB0YXJnZXRXaW5kb3ctPmltcGwoKS0+c2VjdXJpdHlPcmlnaW4oKTsKKwor
ICAgIGlmIChvcmlnaW5TZWN1cml0eU9yaWdpbi0+Y2FuQWNjZXNzKHRhcmdldFNlY3VyaXR5T3Jp
Z2luKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICB0YXJnZXRXaW5kb3ctPnByaW50RXJy
b3JNZXNzYWdlKHRhcmdldFdpbmRvdy0+Y3Jvc3NEb21haW5BY2Nlc3NFcnJvck1lc3NhZ2Uob3Ro
ZXJPYmplY3QpKTsKKyAgICByZXR1cm4gZmFsc2U7CisKKworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBKU0RPTVdpbmRvd0Jhc2UqPih0aGlzT2JqZWN0KS0+YWxsb3dzQWNjZXNzRnJvbShl
eGVjKTsKK30KKwogYm9vbCBKU0RPTVdpbmRvd0Jhc2U6OnN1cHBvcnRzUHJvZmlsaW5nKGNvbnN0
IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCiB7CiAjaWYgIUVOQUJMRShKQVZBU0NSSVBUX0RFQlVH
R0VSKSB8fCAhRU5BQkxFKElOU1BFQ1RPUikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCShyZXZpc2lvbiAxMDc5NTUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjMs
NyArNjMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBib29sIHN1cHBv
cnRzUHJvZmlsaW5nKGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICAgICAgc3RhdGlj
IGJvb2wgc3VwcG9ydHNSaWNoU291cmNlSW5mbyhjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7
CiAgICAgICAgIHN0YXRpYyBib29sIHNob3VsZEludGVycnVwdFNjcmlwdChjb25zdCBKU0M6OkpT
R2xvYmFsT2JqZWN0Kik7Ci0KKyAgICAgICAgc3RhdGljIGJvb2wgYWxsb3dzQWNjZXNzRnJvbShj
b25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqKTsKKyAgICAgICAgCiAg
ICAgICAgIGJvb2wgYWxsb3dzQWNjZXNzRnJvbShKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0OwogICAg
ICAgICBib29sIGFsbG93c0FjY2Vzc0Zyb21Ob0Vycm9yTWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSop
IGNvbnN0OwogICAgICAgICBib29sIGFsbG93c0FjY2Vzc0Zyb20oSlNDOjpFeGVjU3RhdGUqLCBT
dHJpbmcmIG1lc3NhZ2UpIGNvbnN0OwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTA3OTU3KQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTIt
MDItMTYgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAg
ICAgIE1vdmUgc3BlY2lhbCBfX3Byb3RvX18gcHJvcGVydHkgdG8gT2JqZWN0LnByb3RvdHlwZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0MDkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZS1pbXBsZW1l
bnQgdGhpcyBhcyBhIHJlZ3VsYXIgYWNjZXNzb3IgcHJvcGVydHkuICBUaGlzIGhhcyB0aHJlZSBr
ZXkgYmVuZWZpdHM6CisgICAgICAgIDEpIEl0IG1ha2VzIGl0IHBvc3NpYmxlIGZvciBvYmplY3Rz
IHRvIGJlIGdpdmVuIHByb3BlcnRpZXMgbmFtZWQgX19wcm90b19fLgorICAgICAgICAyKSBPYmpl
Y3QucHJvdG90eXBlLl9fcHJvdG9fXyBjYW4gYmUgZGVsZXRlZCwgcHJldmVudGluZyBvYmplY3Qg
cHJvdG90eXBlcyBmcm9tIGJlaW5nIGNoYW5nZWQuCisgICAgICAgIDMpIFRoaXMgbGFyZ2VseSBy
ZW1vdmVzIHRoZSBtYWdpYyB1c2VkIHRoZSBpbXBsZW1lbnQgX19wcm90b19fLCBpdCBjYW4ganVz
dCBiZSBtYWRlIGEgcmVndWxhciBhY2Nlc3NvciBwcm9wZXJ0eS4KKworICAgICAgICAqIGZhc3Qv
anMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZh
c3QvanMvY3ljbGljLXByb3RvdHlwZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvanMv
cGFyc2VyLXN5bnRheC1jaGVjay1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9qcy9wcmV2
ZW50RXh0ZW5zaW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9qcy9wcm90b3R5cGVz
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgICAgIC0gVXBkYXRlIHJlc3VsdHMKKyAgICAgICAgKiBm
YXN0L2pzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5qczoKKyAgICAg
ICAgICAgIC0gX19wcm90b19fIGlzIG5vdyBhIHByb3BlcnR5IG9mIE9iamVjdCBQcm90b3R5cGUu
CisgICAgICAgICogZmFzdC9qcy9zY3JpcHQtdGVzdHMvY3ljbGljLXByb3RvdHlwZXMuanM6Cisg
ICAgICAgICAgICAtIHNldHRpbmcgYW4gb2JqZWN0J3MgcHJvdG90eXBlIHRvIG51bGwgcmVtb3Zl
cyBfX3Byb3RvX18gc2V0dGVyLCBmdXR1cmUgdXNhZ2Ugd29uJ3Qgc2V0IHByb3RvdHlwZS4KKyAg
ICAgICAgKiBmYXN0L2pzL3NjcmlwdC10ZXN0cy9wYXJzZXItc3ludGF4LWNoZWNrLmpzOgorICAg
ICAgICAgICAgLSBBbGxvdyBmdW5jdGlvbnMgbmFtZWQgX19wcm90b19fCisgICAgICAgICogZmFz
dC9qcy9zY3JpcHQtdGVzdHMvcHJldmVudEV4dGVuc2lvbnMuanM6CisgICAgICAgICAgICAtIFNl
dHRpbmcgX19wcm90b19fIHNob3VsZCBub3QgdGhyb3cuCisgICAgICAgICogZmFzdC9qcy9zY3Jp
cHQtdGVzdHMvcHJvdG90eXBlcy5qczoKKyAgICAgICAgICAgIC0gT2JqZWN0cyBtYXkgY29udGFp
bmVkIG93biBwcm9wZXJ0aWVzIG5hbWVkIF9fcHJvdG9fXywgYWRkIG5ldyB0ZXN0IGNhc2VzLgor
CiAyMDEyLTAyLTE1ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
IAogICAgICAgICBOdW1lcm91cyB0cml2aWFsIGJ1Z3MgaW4gT2JqZWN0LmRlZmluZVByb3BlcnR5
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS93cmFwcGVyLWNsYXNzZXMtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3dyYXBwZXItY2xhc3Nlcy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDEwNzk1NSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3dyYXBw
ZXItY2xhc3Nlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE4LDcgKzE4LDcgQEAg
UEFTUyBqc1dyYXBwZXJDbGFzcyhkb2N1bWVudC5pbXBsZW1lbnRhdAogUEFTUyBqc1dyYXBwZXJD
bGFzcyhkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5fX3Byb3RvX18pIGlzICdET01JbXBsZW1lbnRh
dGlvblByb3RvdHlwZScKIFBBU1MganNXcmFwcGVyQ2xhc3MoZG9jdW1lbnQuaW1wbGVtZW50YXRp
b24uY29uc3RydWN0b3IpIGlzICdET01JbXBsZW1lbnRhdGlvbkNvbnN0cnVjdG9yJwogUEFTUyBq
c1dyYXBwZXJDbGFzcyhyb290LmF0dHJpYnV0ZXMpIGlzICdOYW1lZE5vZGVNYXAnCi1GQUlMIGpz
V3JhcHBlckNsYXNzKHJvb3QuYXR0cmlidXRlcy5fX3Byb3RvX18pIHNob3VsZCBiZSBOYW1lZE5v
ZGVNYXBQcm90b3R5cGUuIFdhcyBPYmplY3QuCitQQVNTIGpzV3JhcHBlckNsYXNzKHJvb3QuYXR0
cmlidXRlcy5fX3Byb3RvX18pIGlzICdOYW1lZE5vZGVNYXBQcm90b3R5cGUnCiBGQUlMIGpzV3Jh
cHBlckNsYXNzKHJvb3QuYXR0cmlidXRlcy5jb25zdHJ1Y3Rvcikgc2hvdWxkIGJlIE5hbWVkTm9k
ZU1hcENvbnN0cnVjdG9yLiBXYXMgRnVuY3Rpb24uCiBQQVNTIGpzV3JhcHBlckNsYXNzKGRvY3Vt
ZW50LmNyZWF0ZU5vZGVJdGVyYXRvcihyb290LCAwLCBudWxsLCBmYWxzZSkpIGlzICdOb2RlSXRl
cmF0b3InCiBQQVNTIGpzV3JhcHBlckNsYXNzKGRvY3VtZW50LmNyZWF0ZU5vZGVJdGVyYXRvcihy
b290LCAwLCBudWxsLCBmYWxzZSkuX19wcm90b19fKSBpcyAnTm9kZUl0ZXJhdG9yUHJvdG90eXBl
JwpAQCAtMTM1LDEzICsxMzUsMTMgQEAgUEFTUyBqc1dyYXBwZXJDbGFzcyh3aW5kb3cuY29uc3Ry
dWN0b3IpIAogSFRNTCBET00KIAogUEFTUyBqc1dyYXBwZXJDbGFzcyhyb290LmNoaWxkcmVuKSBp
cyAnSFRNTENvbGxlY3Rpb24nCi1GQUlMIGpzV3JhcHBlckNsYXNzKHJvb3QuY2hpbGRyZW4uX19w
cm90b19fKSBzaG91bGQgYmUgSFRNTENvbGxlY3Rpb25Qcm90b3R5cGUuIFdhcyBPYmplY3QuCitQ
QVNTIGpzV3JhcHBlckNsYXNzKHJvb3QuY2hpbGRyZW4uX19wcm90b19fKSBpcyAnSFRNTENvbGxl
Y3Rpb25Qcm90b3R5cGUnCiBGQUlMIGpzV3JhcHBlckNsYXNzKHJvb3QuY2hpbGRyZW4uY29uc3Ry
dWN0b3IpIHNob3VsZCBiZSBIVE1MQ29sbGVjdGlvbkNvbnN0cnVjdG9yLiBXYXMgRnVuY3Rpb24u
CiBQQVNTIGpzV3JhcHBlckNsYXNzKGRvY3VtZW50KSBpcyAnSFRNTERvY3VtZW50JwogUEFTUyBq
c1dyYXBwZXJDbGFzcyhkb2N1bWVudC5fX3Byb3RvX18pIGlzICdIVE1MRG9jdW1lbnRQcm90b3R5
cGUnCiBQQVNTIGpzV3JhcHBlckNsYXNzKGRvY3VtZW50LmNvbnN0cnVjdG9yKSBpcyAnSFRNTERv
Y3VtZW50Q29uc3RydWN0b3InCiBQQVNTIGpzV3JhcHBlckNsYXNzKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3NlbGVjdCcpLm9wdGlvbnMpIGlzICdIVE1MT3B0aW9uc0NvbGxlY3Rpb24nCi1GQUlM
IGpzV3JhcHBlckNsYXNzKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NlbGVjdCcpLm9wdGlvbnMu
X19wcm90b19fKSBzaG91bGQgYmUgSFRNTE9wdGlvbnNDb2xsZWN0aW9uUHJvdG90eXBlLiBXYXMg
SFRNTENvbGxlY3Rpb25Qcm90b3R5cGUuCitQQVNTIGpzV3JhcHBlckNsYXNzKGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ3NlbGVjdCcpLm9wdGlvbnMuX19wcm90b19fKSBpcyAnSFRNTE9wdGlvbnND
b2xsZWN0aW9uUHJvdG90eXBlJwogUEFTUyBqc1dyYXBwZXJDbGFzcyhkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdzZWxlY3QnKS5vcHRpb25zLmNvbnN0cnVjdG9yKSBpcyAnSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uQ29uc3RydWN0b3InCiAKIEhUTUwgRWxlbWVudHMKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL1dpbmRvdy93aW5kb3ctY3VzdG9tLXByb3RvdHlwZS1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1jdXN0b20tcHJvdG90
eXBlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTA3OTU1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vV2luZG93L3dpbmRvdy1jdXN0b20tcHJvdG90eXBlLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtOSwxMiArOSwxMiBAQCBQQVNTIF9fcHJvdG9fXyA9IDE7IF9fcHJvdG9fXyBpcyBv
cmlnaW5hCiBQQVNTIF9fcHJvdG9fXyA9ICdhIHN0cmluZyc7IF9fcHJvdG9fXyBpcyBvcmlnaW5h
bFdpbmRvd1Byb3RvdHlwZQogUEFTUyBfX3Byb3RvX18gPSBhbm90aGVyT2JqZWN0OyBfX3Byb3Rv
X18gaXMgYW5vdGhlck9iamVjdAogUEFTUyBhbm90aGVyT2JqZWN0Ll9fcHJvdG9fXyA9IHdpbmRv
dzsgX19wcm90b19fIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogY3ljbGljIF9fcHJvdG9fXyB2YWx1
ZS4KLVBBU1MgX19wcm90b19fID0gbnVsbDsgX19wcm90b19fIGlzIG51bGwKLVBBU1MgX19wcm90
b19fID0gMTsgX19wcm90b19fIGlzIG51bGwKLVBBU1MgX19wcm90b19fID0gJ2Egc3RyaW5nJzsg
X19wcm90b19fIGlzIG51bGwKK1BBU1MgX19wcm90b19fID0gMTsgX19wcm90b19fIGlzIGFub3Ro
ZXJPYmplY3QKK1BBU1MgX19wcm90b19fID0gJ2Egc3RyaW5nJzsgX19wcm90b19fIGlzIGFub3Ro
ZXJPYmplY3QKIFBBU1MgX19wcm90b19fID0gYW5vdGhlck9iamVjdDsgX19wcm90b19fIGlzIGFu
b3RoZXJPYmplY3QKIFBBU1MgX19wcm90b19fID0gb3JpZ2luYWxXaW5kb3dQcm90b3R5cGU7IF9f
cHJvdG9fXyBpcyBvcmlnaW5hbFdpbmRvd1Byb3RvdHlwZQogUEFTUyBhbm90aGVyT2JqZWN0Ll9f
cHJvdG9fXyA9IHdpbmRvdzsgYW5vdGhlck9iamVjdC5fX3Byb3RvX18gaXMgd2luZG93CitQQVNT
IF9fcHJvdG9fXyA9IG51bGw7IF9fcHJvdG9fXyBpcyBudWxsCiBQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L1dpbmRvdy9zY3JpcHQtdGVzdHMvd2luZG93LWN1c3RvbS1wcm90b3R5cGUuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3NjcmlwdC10ZXN0cy93aW5kb3ctY3Vz
dG9tLXByb3RvdHlwZS5qcwkocmV2aXNpb24gMTA3OTU1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vV2luZG93L3NjcmlwdC10ZXN0cy93aW5kb3ctY3VzdG9tLXByb3RvdHlwZS5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMTAsOSArMTAsOSBAQCBzaG91bGRCZSgiX19wcm90b19fID0gMTsgX19wcm90
b19fIiwgIm9yCiBzaG91bGRCZSgiX19wcm90b19fID0gJ2Egc3RyaW5nJzsgX19wcm90b19fIiwg
Im9yaWdpbmFsV2luZG93UHJvdG90eXBlIik7CiBzaG91bGRCZSgiX19wcm90b19fID0gYW5vdGhl
ck9iamVjdDsgX19wcm90b19fIiwgImFub3RoZXJPYmplY3QiKTsKIHNob3VsZFRocm93KCJhbm90
aGVyT2JqZWN0Ll9fcHJvdG9fXyA9IHdpbmRvdzsgX19wcm90b19fIiwgIidFcnJvcjogY3ljbGlj
IF9fcHJvdG9fXyB2YWx1ZSciKTsKLXNob3VsZEJlKCJfX3Byb3RvX18gPSBudWxsOyBfX3Byb3Rv
X18iLCAibnVsbCIpOwotc2hvdWxkQmUoIl9fcHJvdG9fXyA9IDE7IF9fcHJvdG9fXyIsICJudWxs
Iik7Ci1zaG91bGRCZSgiX19wcm90b19fID0gJ2Egc3RyaW5nJzsgX19wcm90b19fIiwgIm51bGwi
KTsKK3Nob3VsZEJlKCJfX3Byb3RvX18gPSAxOyBfX3Byb3RvX18iLCAiYW5vdGhlck9iamVjdCIp
Oworc2hvdWxkQmUoIl9fcHJvdG9fXyA9ICdhIHN0cmluZyc7IF9fcHJvdG9fXyIsICJhbm90aGVy
T2JqZWN0Iik7CiBzaG91bGRCZSgiX19wcm90b19fID0gYW5vdGhlck9iamVjdDsgX19wcm90b19f
IiwgImFub3RoZXJPYmplY3QiKTsKIHNob3VsZEJlKCJfX3Byb3RvX18gPSBvcmlnaW5hbFdpbmRv
d1Byb3RvdHlwZTsgX19wcm90b19fIiwgIm9yaWdpbmFsV2luZG93UHJvdG90eXBlIik7CiBzaG91
bGRCZSgiYW5vdGhlck9iamVjdC5fX3Byb3RvX18gPSB3aW5kb3c7IGFub3RoZXJPYmplY3QuX19w
cm90b19fIiwgIndpbmRvdyIpOworc2hvdWxkQmUoIl9fcHJvdG9fXyA9IG51bGw7IF9fcHJvdG9f
XyIsICJudWxsIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL09iamVjdC1nZXRPd25Qcm9w
ZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pz
L09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTA3OTU1
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgUEFTUyBnZXRTb3J0ZWRP
d25Qcm9wZXJ0eU5hbWVzKGRlY29kZVVSSQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVz
KGVuY29kZVVSSSkgaXMgWydsZW5ndGgnLCAnbmFtZSddCiBQQVNTIGdldFNvcnRlZE93blByb3Bl
cnR5TmFtZXMoZW5jb2RlVVJJQ29tcG9uZW50KSBpcyBbJ2xlbmd0aCcsICduYW1lJ10KIFBBU1Mg
Z2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhPYmplY3QpIGlzIFsnY3JlYXRlJywgJ2RlZmluZVBy
b3BlcnRpZXMnLCAnZGVmaW5lUHJvcGVydHknLCAnZnJlZXplJywgJ2dldE93blByb3BlcnR5RGVz
Y3JpcHRvcicsICdnZXRPd25Qcm9wZXJ0eU5hbWVzJywgJ2dldFByb3RvdHlwZU9mJywgJ2lzRXh0
ZW5zaWJsZScsICdpc0Zyb3plbicsICdpc1NlYWxlZCcsICdrZXlzJywgJ2xlbmd0aCcsICduYW1l
JywgJ3ByZXZlbnRFeHRlbnNpb25zJywgJ3Byb3RvdHlwZScsICdzZWFsJ10KLVBBU1MgZ2V0U29y
dGVkT3duUHJvcGVydHlOYW1lcyhPYmplY3QucHJvdG90eXBlKSBpcyBbJ19fZGVmaW5lR2V0dGVy
X18nLCAnX19kZWZpbmVTZXR0ZXJfXycsICdfX2xvb2t1cEdldHRlcl9fJywgJ19fbG9va3VwU2V0
dGVyX18nLCAnY29uc3RydWN0b3InLCAnaGFzT3duUHJvcGVydHknLCAnaXNQcm90b3R5cGVPZics
ICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsICd0b0xvY2FsZVN0cmluZycsICd0b1N0cmluZycsICd2
YWx1ZU9mJ10KK1BBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhPYmplY3QucHJvdG90eXBl
KSBpcyBbJ19fZGVmaW5lR2V0dGVyX18nLCAnX19kZWZpbmVTZXR0ZXJfXycsICdfX2xvb2t1cEdl
dHRlcl9fJywgJ19fbG9va3VwU2V0dGVyX18nLCAnX19wcm90b19fJywgJ2NvbnN0cnVjdG9yJywg
J2hhc093blByb3BlcnR5JywgJ2lzUHJvdG90eXBlT2YnLCAncHJvcGVydHlJc0VudW1lcmFibGUn
LCAndG9Mb2NhbGVTdHJpbmcnLCAndG9TdHJpbmcnLCAndmFsdWVPZiddCiBQQVNTIGdldFNvcnRl
ZE93blByb3BlcnR5TmFtZXMoRnVuY3Rpb24pIGlzIFsnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90
eXBlJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhGdW5jdGlvbi5wcm90b3R5cGUp
IGlzIFsnYXBwbHknLCAnYmluZCcsICdjYWxsJywgJ2NvbnN0cnVjdG9yJywgJ2xlbmd0aCcsICdu
YW1lJywgJ3RvU3RyaW5nJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhBcnJheSkg
aXMgWydpc0FycmF5JywgJ2xlbmd0aCcsICduYW1lJywgJ3Byb3RvdHlwZSddCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2pzL2N5Y2xpYy1wcm90b3R5cGVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2N5Y2xpYy1wcm90b3R5cGVzLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMTA3OTU1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9jeWNsaWMtcHJvdG90eXBl
cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMsNyArMywxMCBAQCBUaGlzIHRlc3Qg
bWFrZXMgc3VyZSB3ZSBkb24ndCBoYW5nIHdoZW4gCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CiAKIAotUEFTUyBvMS5fX3Byb3RvX18gPSBvMyB0aHJldyBleGNlcHRpb24gRXJyb3I6IGN5Y2xp
YyBfX3Byb3RvX18gdmFsdWUuCitQQVNTIG8xLl9fcHJvdG9fXyA9IG8zOyB0aHJldyBleGNlcHRp
b24gRXJyb3I6IGN5Y2xpYyBfX3Byb3RvX18gdmFsdWUuCitQQVNTICh7fSkuaGFzT3duUHJvcGVy
dHkuY2FsbChvMSwgJ19fcHJvdG9fXycpIGlzIGZhbHNlCitQQVNTICh7fSkuaGFzT3duUHJvcGVy
dHkuY2FsbChvMSwgJ19fcHJvdG9fXycpIGlzIHRydWUKK1BBU1MgT2JqZWN0LmdldFByb3RvdHlw
ZU9mKG8xKSBpcyBudWxsCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1Qg
Q09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcGFyc2VyLXN5bnRheC1jaGVjay1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9wYXJzZXItc3lu
dGF4LWNoZWNrLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTA3OTU1KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9qcy9wYXJzZXItc3ludGF4LWNoZWNrLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNTQxLDE0ICs1NDEsMTQgQEAgUEFTUyBJbnZhbGlkOiAiZm9yKHZhciBhLGIgJ3RoaXMgc2hv
dWxkbgogUEFTUyBJbnZhbGlkOiAiZnVuY3Rpb24gZigpIHsgZm9yKHZhciBhLGIgJ3RoaXMgc2hv
dWxkbid0IGJlIGFsbG93ZWQnIGZhbHNlIDsgKSA7IH0iCiBQQVNTIEludmFsaWQ6ICJmb3IodmFy
IGEsYiAnIgogUEFTUyBJbnZhbGlkOiAiZnVuY3Rpb24gZigpIHsgZm9yKHZhciBhLGIgJyB9Igot
UEFTUyBJbnZhbGlkOiAiZnVuY3Rpb24gX19wcm90b19fKCl7fSIKLVBBU1MgSW52YWxpZDogImZ1
bmN0aW9uIGYoKSB7IGZ1bmN0aW9uIF9fcHJvdG9fXygpe30gfSIKLVBBU1MgSW52YWxpZDogIihm
dW5jdGlvbiBfX3Byb3RvX18oKXt9KSIKLVBBU1MgSW52YWxpZDogImZ1bmN0aW9uIGYoKSB7IChm
dW5jdGlvbiBfX3Byb3RvX18oKXt9KSB9IgotUEFTUyBJbnZhbGlkOiAiJ3VzZSBzdHJpY3QnOyBm
dW5jdGlvbiBfX3Byb3RvX18oKXt9IgotUEFTUyBJbnZhbGlkOiAiZnVuY3Rpb24gZigpIHsgJ3Vz
ZSBzdHJpY3QnOyBmdW5jdGlvbiBfX3Byb3RvX18oKXt9IH0iCi1QQVNTIEludmFsaWQ6ICIndXNl
IHN0cmljdCc7IChmdW5jdGlvbiBfX3Byb3RvX18oKXt9KSIKLVBBU1MgSW52YWxpZDogImZ1bmN0
aW9uIGYoKSB7ICd1c2Ugc3RyaWN0JzsgKGZ1bmN0aW9uIF9fcHJvdG9fXygpe30pIH0iCitQQVNT
IFZhbGlkOiAgICJmdW5jdGlvbiBfX3Byb3RvX18oKXt9IgorUEFTUyBWYWxpZDogICAiZnVuY3Rp
b24gZigpIHsgZnVuY3Rpb24gX19wcm90b19fKCl7fSB9IgorUEFTUyBWYWxpZDogICAiKGZ1bmN0
aW9uIF9fcHJvdG9fXygpe30pIgorUEFTUyBWYWxpZDogICAiZnVuY3Rpb24gZigpIHsgKGZ1bmN0
aW9uIF9fcHJvdG9fXygpe30pIH0iCitQQVNTIFZhbGlkOiAgICIndXNlIHN0cmljdCc7IGZ1bmN0
aW9uIF9fcHJvdG9fXygpe30iCitQQVNTIFZhbGlkOiAgICJmdW5jdGlvbiBmKCkgeyAndXNlIHN0
cmljdCc7IGZ1bmN0aW9uIF9fcHJvdG9fXygpe30gfSIKK1BBU1MgVmFsaWQ6ICAgIid1c2Ugc3Ry
aWN0JzsgKGZ1bmN0aW9uIF9fcHJvdG9fXygpe30pIgorUEFTUyBWYWxpZDogICAiZnVuY3Rpb24g
ZigpIHsgJ3VzZSBzdHJpY3QnOyAoZnVuY3Rpb24gX19wcm90b19fKCl7fSkgfSIKIFBBU1MgVmFs
aWQ6ICAgImlmICgwKSAkZm9vOyAiCiBQQVNTIFZhbGlkOiAgICJmdW5jdGlvbiBmKCkgeyBpZiAo
MCkgJGZvbzsgIH0iCiBQQVNTIFZhbGlkOiAgICJpZiAoMCkgX2ZvbzsgIgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9qcy9wcmV2ZW50RXh0ZW5zaW9ucy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9wcmV2ZW50RXh0ZW5zaW9ucy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDEwNzk1NikKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcHJldmVudEV4dGVuc2lvbnMt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMSw4ICsxMSw4IEBAIFBBU1MgdGVzdChw
cmV2ZW50RXh0ZW5zaW9ucyhvYmooKSkpIGlzICIKIFBBU1MgdGVzdChzZWFsKG9iaigpKSkgaXMg
IihhOjEpKGI6NClTIgogUEFTUyB0ZXN0KGZyZWV6ZShvYmooKSkpIGlzICIoYToxKShiOjIpU0Yi
CiBQQVNTIE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyhNYXRoLnNpbikgaXMgTWF0aC5zaW4KLVBB
U1MgdmFyIG8gPSB7fTsgT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKG8pOyBvLl9fcHJvdG9fXyA9
IHsgbmV3UHJvcDogIlNob3VsZCBub3Qgc2VlIHRoaXMiIH07IG8ubmV3UHJvcDsgaXMgdW5kZWZp
bmVkLgotUEFTUyAidXNlIHN0cmljdCI7IHZhciBvID0ge307IE9iamVjdC5wcmV2ZW50RXh0ZW5z
aW9ucyhvKTsgby5fX3Byb3RvX18gPSB7IG5ld1Byb3A6ICJTaG91bGQgbm90IHNlZSB0aGlzIiB9
OyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRv
bmx5IHByb3BlcnR5Li4KK1BBU1MgdmFyIG8gPSB7fTsgT2JqZWN0LnByZXZlbnRFeHRlbnNpb25z
KG8pOyBvLl9fcHJvdG9fXyA9IHsgbmV3UHJvcDogIlNob3VsZCBub3Qgc2VlIHRoaXMiIH07IG8u
bmV3UHJvcDsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0
byByZWFkb25seSBwcm9wZXJ0eS4uCitQQVNTICJ1c2Ugc3RyaWN0IjsgdmFyIG8gPSB7fTsgT2Jq
ZWN0LnByZXZlbnRFeHRlbnNpb25zKG8pOyBvLl9fcHJvdG9fXyA9IHsgbmV3UHJvcDogIlNob3Vs
ZCBub3Qgc2VlIHRoaXMiIH07IG8ubmV3UHJvcDsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
QXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4uCiBQQVNTIE9iamVjdC5w
cmV2ZW50RXh0ZW5zaW9ucyhNYXRoKTsgTWF0aC5zcXJ0KDQpIGlzIDIKIFBBU1MgdmFyIGFyciA9
IE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyhbXSk7IGFyclswXSA9IDQyOyBhcnJbMF0gaXMgdW5k
ZWZpbmVkLgogUEFTUyB2YXIgYXJyID0gT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKFtdKTsgYXJy
WzBdID0gNDI7IGFyci5sZW5ndGggaXMgMApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9wcm90
b3R5cGVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3By
b3RvdHlwZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMDc5NTUpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2pzL3Byb3RvdHlwZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01MywxMCAr
NTMsMTQgQEAgUEFTUyBPYmplY3QuX19wcm90b19fLmlzUHJvdG90eXBlT2YoQXJyYQogUEFTUyBP
YmplY3QuX19wcm90b19fLmlzUHJvdG90eXBlT2YoRGF0ZSkgaXMgdHJ1ZQogUEFTUyBPYmplY3Qu
X19wcm90b19fLmlzUHJvdG90eXBlT2YoTnVtYmVyKSBpcyB0cnVlCiBQQVNTIE9iamVjdC5fX3By
b3RvX18uaXNQcm90b3R5cGVPZihTdHJpbmcpIGlzIHRydWUKLVBBU1MgdmFyIHdhc1NldCA9IGZh
bHNlOyB2YXIgbyA9IHsgfTsgby5fX2RlZmluZUdldHRlcl9fKCJfX3Byb3RvX18iLCBmdW5jdGlv
bigpIHsgd2FzU2V0ID0gdHJ1ZSB9KTsgby5fX3Byb3RvX187IHdhc1NldDsgaXMgZmFsc2UKLVBB
U1MgdmFyIHdhc1NldCA9IGZhbHNlOyB2YXIgbyA9IHsgfTsgby5fX2RlZmluZVNldHRlcl9fKCJf
X3Byb3RvX18iLCBmdW5jdGlvbigpIHsgd2FzU2V0ID0gdHJ1ZSB9KTsgby5fX3Byb3RvX18gPSB7
fTsgd2FzU2V0OyBpcyBmYWxzZQotUEFTUyB2YXIgd2FzU2V0ID0gZmFsc2U7IHZhciBvID0geyB9
OyBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgIl9fcHJvdG9fXyIsIHsgImdldCI6IGZ1bmN0aW9u
KCkgeyB3YXNTZXQgPSB0cnVlIH0gfSk7IG8uX19wcm90b19fOyB3YXNTZXQ7IGlzIGZhbHNlCitQ
QVNTIHZhciB3YXNTZXQgPSBmYWxzZTsgdmFyIG8gPSB7IH07IG8uX19kZWZpbmVHZXR0ZXJfXygi
X19wcm90b19fIiwgZnVuY3Rpb24oKSB7IHdhc1NldCA9IHRydWUgfSk7IG8uX19wcm90b19fOyB3
YXNTZXQ7IGlzIHRydWUKK1BBU1MgdmFyIHdhc1NldCA9IGZhbHNlOyB2YXIgbyA9IHsgfTsgby5f
X2RlZmluZVNldHRlcl9fKCJfX3Byb3RvX18iLCBmdW5jdGlvbigpIHsgd2FzU2V0ID0gdHJ1ZSB9
KTsgby5fX3Byb3RvX18gPSB7fTsgd2FzU2V0OyBpcyB0cnVlCitQQVNTIHZhciB3YXNTZXQgPSBm
YWxzZTsgdmFyIG8gPSB7IH07IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCAiX19wcm90b19fIiwg
eyAiZ2V0IjogZnVuY3Rpb24oKSB7IHdhc1NldCA9IHRydWUgfSB9KTsgby5fX3Byb3RvX187IHdh
c1NldDsgaXMgdHJ1ZQogUEFTUyB2YXIgd2FzU2V0ID0gZmFsc2U7IHZhciBvID0geyB9OyBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkobywgIl9fcHJvdG9fXyIsIHsgIl9fcHJvdG9fXyI6IGZ1bmN0aW9u
KHgpIHsgd2FzU2V0ID0gdHJ1ZSB9IH0pOyBvLl9fcHJvdG9fXyA9IHt9OyB3YXNTZXQ7IGlzIGZh
bHNlCitQQVNTIHZhciBvID0ge307IG8uX19wcm90b19fID0geyB4OnRydWUgfTsgby54IGlzIHRy
dWUKK1BBU1MgdmFyIG8gPSB7fTsgby5fX3Byb3RvX18gPSB7IHg6dHJ1ZSB9OyBvLmhhc093blBy
b3BlcnR5KCdfX3Byb3RvX18nKSBpcyBmYWxzZQorUEFTUyB2YXIgbyA9IHt9OyBvLl9fcHJvdG9f
XyA9IHsgeDp0cnVlIH07IG8ueCBpcyB1bmRlZmluZWQuCitQQVNTIHZhciBvID0ge307IG8uX19w
cm90b19fID0geyB4OnRydWUgfTsgby5oYXNPd25Qcm9wZXJ0eSgnX19wcm90b19fJykgaXMgdHJ1
ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0T3duUHJvcGVydHlO
YW1lcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9P
YmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5qcwkocmV2aXNpb24gMTA3OTU1KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgdmFyIGV4cGVjdGVkUHJvcGVydHlOYW1l
c1NldCA9IHsKICAgICAiZW5jb2RlVVJJQ29tcG9uZW50IjogIlsnbGVuZ3RoJywgJ25hbWUnXSIs
CiAvLyBCdWlsdC1pbiBFQ01BIG9iamVjdHMKICAgICAiT2JqZWN0IjogIlsnY3JlYXRlJywgJ2Rl
ZmluZVByb3BlcnRpZXMnLCAnZGVmaW5lUHJvcGVydHknLCAnZnJlZXplJywgJ2dldE93blByb3Bl
cnR5RGVzY3JpcHRvcicsICdnZXRPd25Qcm9wZXJ0eU5hbWVzJywgJ2dldFByb3RvdHlwZU9mJywg
J2lzRXh0ZW5zaWJsZScsICdpc0Zyb3plbicsICdpc1NlYWxlZCcsICdrZXlzJywgJ2xlbmd0aCcs
ICduYW1lJywgJ3ByZXZlbnRFeHRlbnNpb25zJywgJ3Byb3RvdHlwZScsICdzZWFsJ10iLAotICAg
ICJPYmplY3QucHJvdG90eXBlIjogIlsnX19kZWZpbmVHZXR0ZXJfXycsICdfX2RlZmluZVNldHRl
cl9fJywgJ19fbG9va3VwR2V0dGVyX18nLCAnX19sb29rdXBTZXR0ZXJfXycsICdjb25zdHJ1Y3Rv
cicsICdoYXNPd25Qcm9wZXJ0eScsICdpc1Byb3RvdHlwZU9mJywgJ3Byb3BlcnR5SXNFbnVtZXJh
YmxlJywgJ3RvTG9jYWxlU3RyaW5nJywgJ3RvU3RyaW5nJywgJ3ZhbHVlT2YnXSIsCisgICAgIk9i
amVjdC5wcm90b3R5cGUiOiAiWydfX2RlZmluZUdldHRlcl9fJywgJ19fZGVmaW5lU2V0dGVyX18n
LCAnX19sb29rdXBHZXR0ZXJfXycsICdfX2xvb2t1cFNldHRlcl9fJywgJ19fcHJvdG9fXycsICdj
b25zdHJ1Y3RvcicsICdoYXNPd25Qcm9wZXJ0eScsICdpc1Byb3RvdHlwZU9mJywgJ3Byb3BlcnR5
SXNFbnVtZXJhYmxlJywgJ3RvTG9jYWxlU3RyaW5nJywgJ3RvU3RyaW5nJywgJ3ZhbHVlT2YnXSIs
CiAgICAgIkZ1bmN0aW9uIjogIlsnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90eXBlJ10iLAogICAg
ICJGdW5jdGlvbi5wcm90b3R5cGUiOiAiWydhcHBseScsICdiaW5kJywgJ2NhbGwnLCAnY29uc3Ry
dWN0b3InLCAnbGVuZ3RoJywgJ25hbWUnLCAndG9TdHJpbmcnXSIsCiAgICAgIkFycmF5IjogIlsn
aXNBcnJheScsICdsZW5ndGgnLCAnbmFtZScsICdwcm90b3R5cGUnXSIsCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9jeWNsaWMtcHJvdG90eXBlcy5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9jeWNsaWMtcHJvdG90eXBlcy5q
cwkocmV2aXNpb24gMTA3OTU1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMv
Y3ljbGljLXByb3RvdHlwZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTYsNiArNiwxMyBAQCBvMi5f
X3Byb3RvX18gPSBvMTsKIHZhciBvMyA9IHsgcDM6IDMgfTsKIG8zLl9fcHJvdG9fXyA9IG8yOwog
Ci1vMS5fX3Byb3RvX18gPSBudWxsOyAgLy8ganVzdCBmb3Igc2FuaXR5J3Mgc2FrZQorLy8gVHJ5
IHRvIGNyZWF0ZSBhIGN5Y2xpY2FsIHByb3RvdHlwZSBjaGFpbi4KK3Nob3VsZFRocm93KCJvMS5f
X3Byb3RvX18gPSBvMzsiKTsKIAotc2hvdWxkVGhyb3coIm8xLl9fcHJvdG9fXyA9IG8zIik7Cisv
LyBUaGlzIGNoYW5nZXMgYmVoYXZpb3VyLCBzaW5jZSBfX3Byb3RvX18gaXMgYW4gYWNjZXNzb3Ig
b24gT2JqZWN0LnByb3RvdHlwZS4KK28xLl9fcHJvdG9fXyA9IG51bGw7CisKK3Nob3VsZEJlRmFs
c2UoIih7fSkuaGFzT3duUHJvcGVydHkuY2FsbChvMSwgJ19fcHJvdG9fXycpIik7CitvMS5fX3By
b3RvX18gPSBvMzsKK3Nob3VsZEJlVHJ1ZSgiKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8xLCAn
X19wcm90b19fJykiKTsKK3Nob3VsZEJlKCJPYmplY3QuZ2V0UHJvdG90eXBlT2YobzEpIiwgIm51
bGwiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3BhcnNlci1zeW50
YXgtY2hlY2suanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVz
dHMvcGFyc2VyLXN5bnRheC1jaGVjay5qcwkocmV2aXNpb24gMTA3OTU1KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvcGFyc2VyLXN5bnRheC1jaGVjay5qcwkod29ya2luZyBj
b3B5KQpAQCAtMzQ3LDEwICszNDcsMTAgQEAgaW52YWxpZCgiTDogTDE6IEwyOiBMMzogTDQ6IEw6
IDsiKTsKIGludmFsaWQoImZvcih2YXIgYSxiICd0aGlzIHNob3VsZG5cJ3QgYmUgYWxsb3dlZCcg
ZmFsc2UgOyApIDsiKTsKIGludmFsaWQoImZvcih2YXIgYSxiICciKTsKIAotaW52YWxpZCgiZnVu
Y3Rpb24gX19wcm90b19fKCl7fSIpCi1pbnZhbGlkKCIoZnVuY3Rpb24gX19wcm90b19fKCl7fSki
KQotaW52YWxpZCgiJ3VzZSBzdHJpY3QnOyBmdW5jdGlvbiBfX3Byb3RvX18oKXt9IikKLWludmFs
aWQoIid1c2Ugc3RyaWN0JzsgKGZ1bmN0aW9uIF9fcHJvdG9fXygpe30pIikKK3ZhbGlkKCJmdW5j
dGlvbiBfX3Byb3RvX18oKXt9IikKK3ZhbGlkKCIoZnVuY3Rpb24gX19wcm90b19fKCl7fSkiKQor
dmFsaWQoIid1c2Ugc3RyaWN0JzsgZnVuY3Rpb24gX19wcm90b19fKCl7fSIpCit2YWxpZCgiJ3Vz
ZSBzdHJpY3QnOyAoZnVuY3Rpb24gX19wcm90b19fKCl7fSkiKQogCiB2YWxpZCgiaWYgKDApICRm
b287ICIpCiB2YWxpZCgiaWYgKDApIF9mb287ICIpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pz
L3NjcmlwdC10ZXN0cy9wcmV2ZW50RXh0ZW5zaW9ucy5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9wcmV2ZW50RXh0ZW5zaW9ucy5qcwkocmV2aXNpb24g
MTA3OTU2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvcHJldmVudEV4dGVu
c2lvbnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTY5LDggKzY5LDggQEAgc2hvdWxkQmUoJ3Rlc3Qo
ZnJlZXplKG9iaigpKSknLCAnIihhOjEpKAogLy8gY2hlY2sgdGhhdCB3ZSBjYW4gcHJldmVudEV4
dGVuc2lvbnMgb24gYSBob3N0IGZ1bmN0aW9uLgogc2hvdWxkQmUoJ09iamVjdC5wcmV2ZW50RXh0
ZW5zaW9ucyhNYXRoLnNpbiknLCAnTWF0aC5zaW4nKTsKIAotc2hvdWxkQmVVbmRlZmluZWQoJ3Zh
ciBvID0ge307IE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyhvKTsgby5fX3Byb3RvX18gPSB7IG5l
d1Byb3A6ICJTaG91bGQgbm90IHNlZSB0aGlzIiB9OyBvLm5ld1Byb3A7Jyk7Ci1zaG91bGRUaHJv
dygnInVzZSBzdHJpY3QiOyB2YXIgbyA9IHt9OyBPYmplY3QucHJldmVudEV4dGVuc2lvbnMobyk7
IG8uX19wcm90b19fID0geyBuZXdQcm9wOiAiU2hvdWxkIG5vdCBzZWUgdGhpcyIgfTsnKTsKK3No
b3VsZFRocm93KCd2YXIgbyA9IHt9OyBPYmplY3QucHJldmVudEV4dGVuc2lvbnMobyk7IG8uX19w
cm90b19fID0geyBuZXdQcm9wOiAiU2hvdWxkIG5vdCBzZWUgdGhpcyIgfTsgby5uZXdQcm9wOycp
Oworc2hvdWxkVGhyb3coJyJ1c2Ugc3RyaWN0IjsgdmFyIG8gPSB7fTsgT2JqZWN0LnByZXZlbnRF
eHRlbnNpb25zKG8pOyBvLl9fcHJvdG9fXyA9IHsgbmV3UHJvcDogIlNob3VsZCBub3Qgc2VlIHRo
aXMiIH07IG8ubmV3UHJvcDsnKTsKIAogLy8gY2hlY2sgdGhhdCB3ZSBjYW4gc3RpbGwgYWNjZXNz
IHN0YXRpYyBwcm9wZXJ0aWVzIG9uIGFuIG9iamVjdCBhZnRlciBjYWxsaW5nIHByZXZlbnRFeHRl
bnNpb25zLgogc2hvdWxkQmUoJ09iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyhNYXRoKTsgTWF0aC5z
cXJ0KDQpJywgJzInKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3By
b3RvdHlwZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVz
dHMvcHJvdG90eXBlcy5qcwkocmV2aXNpb24gMTA3OTU1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9q
cy9zY3JpcHQtdGVzdHMvcHJvdG90eXBlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUs
MTQgQEAgc2hvdWxkQmVUcnVlKCJPYmplY3QuX19wcm90b19fLmlzUHJvdG90eQogc2hvdWxkQmVU
cnVlKCJPYmplY3QuX19wcm90b19fLmlzUHJvdG90eXBlT2YoTnVtYmVyKSIpOwogc2hvdWxkQmVU
cnVlKCJPYmplY3QuX19wcm90b19fLmlzUHJvdG90eXBlT2YoU3RyaW5nKSIpOwogCi1zaG91bGRC
ZUZhbHNlKCJ2YXIgd2FzU2V0ID0gZmFsc2U7IHZhciBvID0geyB9OyBvLl9fZGVmaW5lR2V0dGVy
X18oXCJfX3Byb3RvX19cIiwgZnVuY3Rpb24oKSB7IHdhc1NldCA9IHRydWUgfSk7IG8uX19wcm90
b19fOyB3YXNTZXQ7Iik7Ci1zaG91bGRCZUZhbHNlKCJ2YXIgd2FzU2V0ID0gZmFsc2U7IHZhciBv
ID0geyB9OyBvLl9fZGVmaW5lU2V0dGVyX18oXCJfX3Byb3RvX19cIiwgZnVuY3Rpb24oKSB7IHdh
c1NldCA9IHRydWUgfSk7IG8uX19wcm90b19fID0ge307IHdhc1NldDsiKTsKLXNob3VsZEJlRmFs
c2UoInZhciB3YXNTZXQgPSBmYWxzZTsgdmFyIG8gPSB7IH07IE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShvLCBcIl9fcHJvdG9fX1wiLCB7IFwiZ2V0XCI6IGZ1bmN0aW9uKCkgeyB3YXNTZXQgPSB0cnVl
IH0gfSk7IG8uX19wcm90b19fOyB3YXNTZXQ7Iik7CitzaG91bGRCZVRydWUoInZhciB3YXNTZXQg
PSBmYWxzZTsgdmFyIG8gPSB7IH07IG8uX19kZWZpbmVHZXR0ZXJfXyhcIl9fcHJvdG9fX1wiLCBm
dW5jdGlvbigpIHsgd2FzU2V0ID0gdHJ1ZSB9KTsgby5fX3Byb3RvX187IHdhc1NldDsiKTsKK3No
b3VsZEJlVHJ1ZSgidmFyIHdhc1NldCA9IGZhbHNlOyB2YXIgbyA9IHsgfTsgby5fX2RlZmluZVNl
dHRlcl9fKFwiX19wcm90b19fXCIsIGZ1bmN0aW9uKCkgeyB3YXNTZXQgPSB0cnVlIH0pOyBvLl9f
cHJvdG9fXyA9IHt9OyB3YXNTZXQ7Iik7CitzaG91bGRCZVRydWUoInZhciB3YXNTZXQgPSBmYWxz
ZTsgdmFyIG8gPSB7IH07IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBcIl9fcHJvdG9fX1wiLCB7
IFwiZ2V0XCI6IGZ1bmN0aW9uKCkgeyB3YXNTZXQgPSB0cnVlIH0gfSk7IG8uX19wcm90b19fOyB3
YXNTZXQ7Iik7CiBzaG91bGRCZUZhbHNlKCJ2YXIgd2FzU2V0ID0gZmFsc2U7IHZhciBvID0geyB9
OyBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgXCJfX3Byb3RvX19cIiwgeyBcIl9fcHJvdG9fX1wi
OiBmdW5jdGlvbih4KSB7IHdhc1NldCA9IHRydWUgfSB9KTsgby5fX3Byb3RvX18gPSB7fTsgd2Fz
U2V0OyIpOworCisvLyBEZWxldGluZyBPYmplY3QucHJvdG90eXBlLl9fcHJvdG9fXyByZW1vdmVz
IHRoZSBhYmlsaXR5IHRvIHNldCB0aGUgb2JqZWN0J3MgcHJvdG90eXBlLgorc2hvdWxkQmVUcnVl
KCJ2YXIgbyA9IHt9OyBvLl9fcHJvdG9fXyA9IHsgeDp0cnVlIH07IG8ueCIpOworc2hvdWxkQmVG
YWxzZSgidmFyIG8gPSB7fTsgby5fX3Byb3RvX18gPSB7IHg6dHJ1ZSB9OyBvLmhhc093blByb3Bl
cnR5KCdfX3Byb3RvX18nKSIpOworZGVsZXRlIE9iamVjdC5wcm90b3R5cGUuX19wcm90b19fOwor
c2hvdWxkQmVVbmRlZmluZWQoInZhciBvID0ge307IG8uX19wcm90b19fID0geyB4OnRydWUgfTsg
by54Iik7CitzaG91bGRCZVRydWUoInZhciBvID0ge307IG8uX19wcm90b19fID0geyB4OnRydWUg
fTsgby5oYXNPd25Qcm9wZXJ0eSgnX19wcm90b19fJykiKTsK
</data>
<flag name="review"
          id="130060"
          type_id="1"
          status="+"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="130063"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>