<?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>163245</bug_id>
          
          <creation_ts>2016-10-10 14:46:49 -0700</creation_ts>
          <short_desc>[DOMJIT][JSC] Explore the way to embed nodeType into JSC::JSType in WebCore</short_desc>
          <delta_ts>2016-10-21 17:59:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>162544</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fpizlo</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1238557</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-10 14:46:49 -0700</bug_when>
    <thetext>Node.prototype.nodeType() is frequently called in Dromaeo don-query.html, but it is implemented in virtual function call.
I think we could implement it very efficiently... like, embedding this type into JSC::JSType.
In WebCore, we extend JSC::JSType in JSDOMWrapper.h. Like adding JSElementType.

Note that nodeType is frequently used in reality. Usually it is used to check whether the given object is DOM node.
For example, jQuery&apos;s $ function is like this.

		// HANDLE: $(&quot;&quot;), $(null), $(undefined), $(false)
		if ( !selector ) {
                    ...
		}

		// Method init() accepts an alternate rootjQuery
		// so migrate can support jQuery.sub (gh-2101)
		root = root || rootjQuery;

		// Handle HTML strings
		if ( typeof selector === &quot;string&quot; ) {
                    ...
		// HANDLE: $(DOMElement)
		} else if ( selector.nodeType ) {                  &lt;--------- THIS
                    ...
		// HANDLE: $(function)
		// Shortcut for document ready
		} else if ( jQuery.isFunction( selector ) ) {
                    ...
		}
                ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238560</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-10 14:54:44 -0700</bug_when>
    <thetext>The cleanest way is just putting nodeType to Node. But Node&apos;s flag it already exhausted. And we should not add a new one since it significantly enlarges the memory consumption.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239070</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-11 16:12:18 -0700</bug_when>
    <thetext>WebCore&apos;s extra JSType is very similar to NodeType. Like, JSElementType, JSNodeType, JSDocumentWrapperType etc.
So I think we have a chance to represent NodeType with JSType.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239164</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-11 21:14:53 -0700</bug_when>
    <thetext>Early evaluation with Dromaeo dom-query.html

Patched:

getElementById:Runs -&gt; [6043, 6139, 6198, 6202, 6207] runs/s
    mean: 6157.8 runs/s
    median: 6198 runs/s
    stdev: 69.86200684205961 runs/s
    min: 6043 runs/s
    max: 6207 runs/s

getElementById (not in document):Runs -&gt; [6626, 6664, 6680, 6688, 6717] runs/s
    mean: 6675 runs/s
    median: 6680 runs/s
    stdev: 33.46640106136295 runs/s
    min: 6626 runs/s
    max: 6717 runs/s

getElementsByTagName(div):Runs -&gt; [431829, 435339, 440814, 455979, 456323] runs/s
    mean: 444056.8 runs/s
    median: 440814 runs/s
    stdev: 11496.014491988084 runs/s
    min: 431829 runs/s
    max: 456323 runs/s

getElementsByTagName(p):Runs -&gt; [438485, 439710, 444404, 447107, 449263] runs/s
    mean: 443793.8 runs/s
    median: 444404 runs/s
    stdev: 4640.112250797395 runs/s
    min: 438485 runs/s
    max: 449263 runs/s

getElementsByTagName(a):Runs -&gt; [445398, 446686, 448782, 449314, 456469] runs/s
    mean: 449329.8 runs/s
    median: 448782 runs/s
    stdev: 4292.937246221991 runs/s
    min: 445398 runs/s
    max: 456469 runs/s

getElementsByTagName(*):Runs -&gt; [421789, 423986, 427341, 430128, 431760] runs/s
    mean: 427000.8 runs/s
    median: 427341 runs/s
    stdev: 4147.197210164959 runs/s
    min: 421789 runs/s
    max: 431760 runs/s

getElementsByTagName (not in document):Runs -&gt; [731858, 772983, 776813, 781652, 787752] runs/s
    mean: 770211.6 runs/s
    median: 776813 runs/s
    stdev: 22140.4954619358 runs/s
    min: 731858 runs/s
    max: 787752 runs/s

getElementsByName:Runs -&gt; [5860, 6317, 6356, 6368, 6394] runs/s
    mean: 6259 runs/s
    median: 6356 runs/s
    stdev: 224.7665455533807 runs/s
    min: 5860 runs/s
    max: 6394 runs/s

getElementsByName (not in document):Runs -&gt; [7388, 7519, 7658, 8196, 8223] runs/s
    mean: 7796.8 runs/s
    median: 7658 runs/s
    stdev: 388.7681828545128 runs/s
    min: 7388 runs/s
    max: 8223 runs/s


:Runs -&gt; [1579.8208506001133, 1626.7710342620671, 1641.1431400710333, 1666.485339816947, 1671.7244248328077] runs/s
    mean: 1637.1889579165938 runs/s
    median: 1641.1431400710333 runs/s
    stdev: 36.96702887178485 runs/s
    min: 1579.8208506001133 runs/s
    max: 1671.7244248328077 runs/s


Baseline:

getElementById:Runs -&gt; [4996, 5097, 5107, 5154, 5198] runs/s
    mean: 5110.4 runs/s
    median: 5107 runs/s
    stdev: 75.58637443349166 runs/s
    min: 4996 runs/s
    max: 5198 runs/s

getElementById (not in document):Runs -&gt; [6513, 6551, 6609, 6616, 6958] runs/s
    mean: 6649.4 runs/s
    median: 6609 runs/s
    stdev: 177.67188860368435 runs/s
    min: 6513 runs/s
    max: 6958 runs/s

getElementsByTagName(div):Runs -&gt; [371366, 373887, 374717, 384777, 390212] runs/s
    mean: 378991.8 runs/s
    median: 374717 runs/s
    stdev: 8090.845919927044 runs/s
    min: 371366 runs/s
    max: 390212 runs/s

getElementsByTagName(p):Runs -&gt; [375126, 383549, 400543, 404636, 404973] runs/s
    mean: 393765.4 runs/s
    median: 400543 runs/s
    stdev: 13615.4155757362 runs/s
    min: 375126 runs/s
    max: 404973 runs/s

getElementsByTagName(a):Runs -&gt; [369938, 407215, 409685, 410603, 416075] runs/s
    mean: 402703.2 runs/s
    median: 409685 runs/s
    stdev: 18600.215568643278 runs/s
    min: 369938 runs/s
    max: 416075 runs/s

getElementsByTagName(*):Runs -&gt; [385668, 387601, 392433, 398342, 403250] runs/s
    mean: 393458.8 runs/s
    median: 392433 runs/s
    stdev: 7344.656064105391 runs/s
    min: 385668 runs/s
    max: 403250 runs/s

getElementsByTagName (not in document):Runs -&gt; [718961, 737701, 759983, 764276, 777297] runs/s
    mean: 751643.6 runs/s
    median: 759983 runs/s
    stdev: 23182.797993339816 runs/s
    min: 718961 runs/s
    max: 777297 runs/s

getElementsByName:Runs -&gt; [5265, 5292, 5296, 5327, 5333] runs/s
    mean: 5302.6 runs/s
    median: 5296 runs/s
    stdev: 27.79028607265496 runs/s
    min: 5265 runs/s
    max: 5333 runs/s

getElementsByName (not in document):Runs -&gt; [7880, 7889, 7928, 7975, 7999] runs/s
    mean: 7934.2 runs/s
    median: 7928 runs/s
    stdev: 52.16032975355891 runs/s
    min: 7880 runs/s
    max: 7999 runs/s


:Runs -&gt; [1465.0259452526852, 1478.767959301689, 1484.6802981963529, 1493.4019246547011, 1515.541250761825] runs/s
    mean: 1487.4834756334508 runs/s
    median: 1484.6802981963529 runs/s
    stdev: 18.777815923634538 runs/s
    min: 1465.0259452526852 runs/s
    max: 1515.541250761825 runs/s</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239165</commentid>
    <comment_count>4</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-11 21:16:02 -0700</bug_when>
    <thetext>nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239200</commentid>
    <comment_count>5</comment_count>
      <attachid>291340</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-11 23:17:21 -0700</bug_when>
    <thetext>Created attachment 291340
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239201</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-11 23:19:52 -0700</bug_when>
    <thetext>Attachment 291340 did not pass style-queue:


ERROR: Source/WebCore/dom/NodeConstants.h:32:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/dom/NodeConstants.h:33:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/dom/NodeConstants.h:34:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/dom/NodeConstants.h:35:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/dom/NodeConstants.h:36:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/dom/NodeConstants.h:37:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/dom/NodeConstants.h:38:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/dom/NodeConstants.h:39:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/dom/NodeConstants.h:40:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/dom/NodeConstants.h:44:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/dom/NodeConstants.h:45:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/dom/NodeConstants.h:46:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 12 in 21 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>1239416</commentid>
    <comment_count>7</comment_count>
      <attachid>291381</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-12 12:12:14 -0700</bug_when>
    <thetext>Created attachment 291381
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239419</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-12 12:15:20 -0700</bug_when>
    <thetext>Attachment 291381 did not pass style-queue:


ERROR: Source/WebCore/dom/NodeConstants.h:32:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/dom/NodeConstants.h:33:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/dom/NodeConstants.h:34:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/dom/NodeConstants.h:35:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/dom/NodeConstants.h:36:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/dom/NodeConstants.h:37:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/dom/NodeConstants.h:38:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/dom/NodeConstants.h:39:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/dom/NodeConstants.h:40:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/dom/NodeConstants.h:44:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/dom/NodeConstants.h:45:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/dom/NodeConstants.h:46:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 12 in 25 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>1239452</commentid>
    <comment_count>9</comment_count>
      <attachid>291381</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-12 13:19:03 -0700</bug_when>
    <thetext>Comment on attachment 291381
Patch

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

This is awesome!

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:7152
&gt; +    // FIXME: patchpoint should have a way to tell this can reuse &quot;base&quot; register.
&gt; +    // Teaching DFG about DOMJIT::Patchpoint clobber information is nice.

Note that those register reuse optimizations are really only useful if you have &lt;=4 instructions in your generator.  I think you have more than that.  So, if there is an extra register-register move or an extra spill that could have been avoided by reuse, it probably won&apos;t matter that much.  On the other hand, generating correct code when registers get reused is super hard.  We often get bugs in such code in the DFG, and we usually fix them by removing the reuse.  To my knowledge, those reuse removal changes almost never cause perf regressions.  They only cause perf regressions for simple things like add/sub, hence my rule of &lt;=4 instructions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239462</commentid>
    <comment_count>10</comment_count>
      <attachid>291381</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-12 13:38:50 -0700</bug_when>
    <thetext>Comment on attachment 291381
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:7152
&gt;&gt; +    // Teaching DFG about DOMJIT::Patchpoint clobber information is nice.
&gt; 
&gt; Note that those register reuse optimizations are really only useful if you have &lt;=4 instructions in your generator.  I think you have more than that.  So, if there is an extra register-register move or an extra spill that could have been avoided by reuse, it probably won&apos;t matter that much.  On the other hand, generating correct code when registers get reused is super hard.  We often get bugs in such code in the DFG, and we usually fix them by removing the reuse.  To my knowledge, those reuse removal changes almost never cause perf regressions.  They only cause perf regressions for simple things like add/sub, hence my rule of &lt;=4 instructions.

Oh! So, in many CallDOM operations, reusing registers do not matter, nice.
And yup, reusing easily causes a bug... I&apos;ll drop this FIXME.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239477</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-12 13:50:31 -0700</bug_when>
    <thetext>Committed r207239: &lt;http://trac.webkit.org/changeset/207239&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239553</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-12 15:56:54 -0700</bug_when>
    <thetext>Oops, I missed to git-add expect.txt file.
I&apos;ll add it soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239558</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-12 16:15:32 -0700</bug_when>
    <thetext>Committed r207261: &lt;http://trac.webkit.org/changeset/207261&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243205</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-10-21 17:59:26 -0700</bug_when>
    <thetext>Hi, please check if this might have caused bug #163826, thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291340</attachid>
            <date>2016-10-11 23:17:21 -0700</date>
            <delta_ts>2016-10-12 12:12:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163245-20161011231357.patch</filename>
            <type>text/plain</type>
            <size>40316</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
Y2E5YjY1MmM4OGQ2NzRlMDUyZDI1ZWU0ZDQyNWIwNGM5NmFhNTJkLi4wODI3MGY1YzI3NWRhODI0
ZjdkZDkwYTQ1MzVkZDk4NmU0MzhjYWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwzMSBAQAogMjAxNi0xMC0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBbRE9NSklUXVtKU0NdIEV4cGxvcmUgdGhlIHdheSB0byBlbWJlZCBu
b2RlVHlwZSBpbnRvIEpTQzo6SlNUeXBlIGluIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzI0NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0ZXIpOgorICAg
ICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBo
YXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NKToKKyAgICAg
ICAgKiBkb21qaXQvRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaDogQ29waWVkIGZyb20gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRHZXR0ZXJTZXR0ZXIuaC4KKyAgICAgICAgKEpT
Qzo6RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludDo6Y3JlYXRlKToKKyAgICAgICAgKiBkb21qaXQv
RE9NSklUR2V0dGVyU2V0dGVyLmg6CisgICAgICAgICogZG9taml0L0RPTUpJVFBhdGNocG9pbnQu
aDoKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxET00pOgorICAgICAgICAqIGpzYy5jcHA6
CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRh
dGE6OnBlcmZvcm1Bc3NlcnRpb25zKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5oOgorCisyMDE2LTEwLTExICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCiAgICAgICAgIFtET01KSVRdIERP
TUpJVDo6UGF0Y2hwb2ludCBzaG91bGQgaGF2ZSBhIHdheSB0byByZWNlaXZlIGNvbnN0YW50IGZv
bGRlZCBhcmd1bWVudHMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MzIyNAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTAwZTE3M2IxNjI3ZDE4N2E0MmI2NjBjOGU5
MGUzZDcwZTE4ZDU3ZC4uZGRkOTYzYzE4YWQxZmVhNDQ1Y2VkNTc3ZWNlZWQ2NzMyODdhMjQ2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMxIEBACiAyMDE2LTEwLTExICBZdXN1a2UgU3V6dWtpICA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCisgICAgICAgIFtET01KSVRdW0pTQ10gRXhwbG9yZSB0
aGUgd2F5IHRvIGVtYmVkIG5vZGVUeXBlIGludG8gSlNDOjpKU1R5cGUgaW4gV2ViQ29yZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjQ1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XcmFw
cGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTTm9kZTo6bm9kZVR5cGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2V0SlNUeXBlRm9yTm9kZSk6CisgICAgICAg
IChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgICogZG9tL05vZGUuaWRsOgorICAgICAgICAqIGRv
bS9Ob2RlQ29uc3RhbnRzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21q
aXQvRE9NSklUR2V0dGVyU2V0dGVyLmguCisgICAgICAgICogZG9taml0L0pTTm9kZURPTUpJVC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGVGaXJzdENoaWxkRE9NSklUOjpjYWxsRE9NKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGVMYXN0Q2hpbGRET01KSVQ6OmNhbGxET00pOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZU5leHRTaWJsaW5nRE9NSklUOjpjYWxsRE9NKToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6OmNhbGxET00pOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZVBhcmVudE5vZGVET01KSVQ6OmNhbGxET00pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZU5vZGVU
eXBlRE9NSklUOjpjaGVja0RPTSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTm9kZVR5cGVET01K
SVQ6OmNhbGxET00pOgorCisyMDE2LTEwLTExICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorCiAgICAgICAgIFtET01KSVRdIERPTUpJVDo6UGF0Y2hwb2ludCBzaG91bGQg
aGF2ZSBhIHdheSB0byByZWNlaXZlIGNvbnN0YW50IGZvbGRlZCBhcmd1bWVudHMKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzIyNAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhlN2JlNjcyZjQxOGJiYmM2NDMyNTMwYWU2YmU2NmJi
ODJjZmFkOGMuLjhmMTc2NDFhMmNjYzZjM2Y1ZTc5NTM0YjAzNWFlM2Q3ZmZhMThkYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDk2LDYgKzIwOTYsNyBAQAogCQlFMzNGNTA4
NTFCODQzN0EwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzRjUwODMxQjg0MzdBMDAw
NDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzNGNTA4NzFCODQ0OUVGMDA0MTM4NTYg
LyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0Y1MDg2MUI4NDQ5RUYwMDQxMzg1NiAvKiBK
U0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oICovOyB9OwogCQlFMzU0NjIyQjFCNjA2
NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0
cnVjdEFiaWxpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlFMzU1NUI4QTFEQUUwM0E1MDBGMzY5MjEgLyogRE9NSklUQ2FsbERPTVBhdGNocG9p
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTU1
Qjg5MURBRTAzQTIwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTVGMzUyMUI3REM4
NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NUYzNTAxQjdEQzg1MzAwQzUwREM1IC8q
IE1vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAgKi87IH07CiAJCUUzNTVGMzUzMUI3REM4NTMwMEM1
MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTVGMzUxMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVM
b2FkZXJQcm90b3R5cGUuaCAqLzsgfTsKIAkJRTM1RTAzNUYxQjdBQjQzRTAwNzNBRDJBIC8qIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzVFMDM1RDFCN0FCNDNFMDA3M0FEMkEgLyogSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCAqLzsgfTsKQEAgLTQzOTksNiArNDQwMCw3IEBA
CiAJCUUzM0Y1MDg2MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVj
dG9yLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ludGVybmFsUHJv
bWlzZUNvbnN0cnVjdG9yLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzNG
NTA4ODFCODQ0QTFBMDA0MTM4NTYgLyogSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuanMgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBJbnRlcm5hbFByb21pc2VDb25z
dHJ1Y3Rvci5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NDYyMkExQjYwNjVE
MTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFiaWxpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29uc3RydWN0QWJpbGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFMzU1NUI4OTFEQUUwM0EyMDBGMzY5MjEgLyogRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSklUQ2FsbERPTVBhdGNocG9pbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NUYzNTAxQjdEQzg1MzAwQzUwREM1
IC8qIE1vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMzU1RjM1MTFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyUHJvdG90
eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUxvYWRlclByb3Rv
dHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzVFMDM1RDFCN0FCNDNFMDA3
M0FEMkEgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MTk1LDYgKzcxOTcsNyBAQAogCQlF
M0ZGNzUyRDFEOUNFOUVBMDBDN0UxNkQgLyogZG9taml0ICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlFMzU1NUI4OTFEQUUwM0EyMDBGMzY5MjEgLyogRE9N
SklUQ2FsbERPTVBhdGNocG9pbnQuaCAqLywKIAkJCQlFM0ZGNzUyRjFEOUNFQTEyMDBDN0UxNkQg
LyogRE9NSklUR2V0dGVyU2V0dGVyLmggKi8sCiAJCQkJRTNDMDhFM0IxREE0MUI3QjAwMzk0NzhG
IC8qIERPTUpJVFBhdGNocG9pbnQuaCAqLywKIAkJCQlFMzdBRDgzQTFEQTQ5MjgwMDBGM0Q0MTIg
LyogRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oICovLApAQCAtODA3Miw2ICs4MDc1LDcgQEAKIAkJ
CQlBN0MxRUFGMDE3OTg3QUI2MDAyOTlEQjIgLyogQ0xvb3BTdGFja0lubGluZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMThDNDI3MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1N0cmluZy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODZFODU1MzkxMTFCOTk2ODAwMUFGNTFFIC8qIEpTU3RyaW5nQnVpbGRl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM1NTVCOEExREFFMDNBNTAwRjM2OTIxIC8qIERPTUpJ
VENhbGxET01QYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MEVDMEVDMzFBQTBEN0RB
MDBCNkFBRkEgLyogSlNTdHJpbmdJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwNzBB
NDcxRDU0M0E4QjAwNkU3MjMyIC8qIENlbGxDb250YWluZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTI2MDBCNUE3MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CmluZGV4IDg5M2I4MjQ3NzI5Yjg2MWMxNmQ4MDFlYTMxZTZhNzg2YWY5ZjJmNTcuLjQzYWViMWU1
NDgzYzZiODk3ZmZiNzJiZDU5YjZiYjliMzI1NDgwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yNjg5LDggKzI2ODksMTIgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKGludCByZXN1bHRPcGVyYW5k
LCBjb25zdCBHZXRCeUlkVmFyaWFudCYKIAogICAgIC8vIFdlIGRvIG5vdCBuZWVkIHRvIGVtaXQg
Q2hlY2tDZWxsIHRoaW5neSBoZXJlLiBXaGVuIHRoZSBjdXN0b20gYWNjZXNzb3IgaXMgcmVwbGFj
ZWQgdG8gZGlmZmVyZW50IG9uZSwgU3RydWN0dXJlIHRyYW5zaXRpb24gb2NjdXJzLgogICAgIGFk
ZFRvR3JhcGgoQ2hlY2tET00sIE9wSW5mbyhkb21KSVQpLCBPcEluZm8oZG9tSklULT50aGlzQ2xh
c3NJbmZvKCkpLCB0aGlzTm9kZSk7Ci0gICAgTm9kZSogZ2xvYmFsT2JqZWN0ID0gYWRkVG9HcmFw
aChHZXRHbG9iYWxPYmplY3QsIHRoaXNOb2RlKTsKLSAgICBhZGRWYXJBcmdDaGlsZChnbG9iYWxP
YmplY3QpOyAvLyBHbG9iYWxPYmplY3Qgb2YgdGhpc05vZGUgaXMgYWx3YXlzIHVzZWQgdG8gY3Jl
YXRlIGEgRE9NV3JhcHBlci4KKworICAgIFJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBw
YXRjaHBvaW50ID0gZG9tSklULT5jYWxsRE9NKCk7CisgICAgaWYgKHBhdGNocG9pbnQtPnJlcXVp
cmVHbG9iYWxPYmplY3QpIHsKKyAgICAgICAgTm9kZSogZ2xvYmFsT2JqZWN0ID0gYWRkVG9HcmFw
aChHZXRHbG9iYWxPYmplY3QsIHRoaXNOb2RlKTsKKyAgICAgICAgYWRkVmFyQXJnQ2hpbGQoZ2xv
YmFsT2JqZWN0KTsgLy8gR2xvYmFsT2JqZWN0IG9mIHRoaXNOb2RlIGlzIGFsd2F5cyB1c2VkIHRv
IGNyZWF0ZSBhIERPTVdyYXBwZXIuCisgICAgfQogICAgIGFkZFZhckFyZ0NoaWxkKHRoaXNOb2Rl
KTsKICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBhZGRUb0dyYXBoKE5v
ZGU6OlZhckFyZywgQ2FsbERPTSwgT3BJbmZvKGRvbUpJVCksIE9wSW5mbyhwcmVkaWN0aW9uKSkp
OwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAKaW5kZXggMTQ0ZjI2NTIzMzU4OTNmYjFkMjcxMjkwYTZkY2Q5ZmYzMTllMmIwYy4u
NDk3NTBkNmY1ODdlOTRlZjhhMGU5MzRjOGFjNzU4NDE2YmRmNTJmNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNzAzLDEwICsxNzAzLDE0IEBA
IGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgZml4RWRnZTxD
ZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBj
YXNlIENhbGxET006Ci0gICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obV9ncmFwaC52
YXJBcmdDaGlsZChub2RlLCAwKSk7IC8vIEdsb2JhbE9iamVjdC4KLSAgICAgICAgICAgIGZpeEVk
Z2U8Q2VsbFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7IC8vIERPTS4KKyAgICAg
ICAgY2FzZSBDYWxsRE9NOiB7CisgICAgICAgICAgICBpbnQgY2hpbGRJbmRleCA9IDA7CisgICAg
ICAgICAgICBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IG5vZGUt
PmRvbUpJVCgpLT5jYWxsRE9NKCk7CisgICAgICAgICAgICBpZiAocGF0Y2hwb2ludC0+cmVxdWly
ZUdsb2JhbE9iamVjdCkKKyAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obV9n
cmFwaC52YXJBcmdDaGlsZChub2RlLCBjaGlsZEluZGV4KyspKTsgLy8gR2xvYmFsT2JqZWN0Lgor
ICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIGNo
aWxkSW5kZXgrKykpOyAvLyBET00uCiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogCiAj
aWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhl
cmUgdG8gZW5zdXJlIHRoYXQgbm9ib2R5IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcg
b3Bjb2Rlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKaW5kZXggOGRmNTE0MDg4ZTMyZWFjYjM1ZjkyYzJjZTI1NzNhOGY2MWE4MGFhMi4uN2I1
Y2E1ODU5Y2U2ZDVkNjk1YThhZWRhYTQxZDlhZjJlNDAzNGUyNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTcxMzAsMjEgKzcxMzAs
MzAgQEAgc3RhdGljIHZvaWQgYWxsb2NhdGVUZW1wb3JhcnlSZWdpc3RlcnNGb3JQYXRjaHBvaW50
KFNwZWN1bGF0aXZlSklUKiBqaXQsIFZlY3RvcjwKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUNhbGxET00oTm9kZSogbm9kZSkKIHsKLSAgICBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBw
YXRjaHBvaW50ID0gbm9kZS0+ZG9tSklUKCktPmNhbGxET00oKTsKKyAgICBSZWY8RE9NSklUOjpD
YWxsRE9NUGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IG5vZGUtPmRvbUpJVCgpLT5jYWxsRE9NKCk7
CiAKICAgICBWZWN0b3I8R1BSUmVnPiBncFNjcmF0Y2g7CiAgICAgVmVjdG9yPEZQUlJlZz4gZnBT
Y3JhdGNoOwogICAgIFZlY3RvcjxET01KSVQ6OlZhbHVlPiByZWdzOwogCisgICAgSlNWYWx1ZVJl
Z3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgIHJlZ3MuYXBwZW5kKHJlc3VsdC5yZWdzKCkp
OworCisgICAgaW50IGNoaWxkSW5kZXggPSAwOworCisgICAgT3B0aW9uYWw8U3BlY3VsYXRlQ2Vs
bE9wZXJhbmQ+IGdsb2JhbE9iamVjdDsKKyAgICBpZiAocGF0Y2hwb2ludC0+cmVxdWlyZUdsb2Jh
bE9iamVjdCkgeworICAgICAgICBFZGdlJiBnbG9iYWxPYmplY3RFZGdlID0gbV9qaXQuZ3JhcGgo
KS52YXJBcmdDaGlsZChub2RlLCBjaGlsZEluZGV4KyspOworICAgICAgICBnbG9iYWxPYmplY3Qg
PSBTcGVjdWxhdGVDZWxsT3BlcmFuZCh0aGlzLCBnbG9iYWxPYmplY3RFZGdlKTsKKyAgICAgICAg
cmVncy5hcHBlbmQoRE9NSklUOjpWYWx1ZShnbG9iYWxPYmplY3QtPmdwcigpLCBtX3N0YXRlLmZv
ck5vZGUoZ2xvYmFsT2JqZWN0RWRnZSkudmFsdWUoKSkpOworICAgIH0KKwogICAgIC8vIEZJWE1F
OiBwYXRjaHBvaW50IHNob3VsZCBoYXZlIGEgd2F5IHRvIHRlbGwgdGhpcyBjYW4gcmV1c2UgImJh
c2UiIHJlZ2lzdGVyLgogICAgIC8vIFRlYWNoaW5nIERGRyBhYm91dCBET01KSVQ6OlBhdGNocG9p
bnQgY2xvYmJlciBpbmZvcm1hdGlvbiBpcyBuaWNlLgotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGdsb2JhbE9iamVjdCh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsK
LSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJn
Q2hpbGQobm9kZSwgMSkpOwotICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsK
KyAgICBFZGdlJiBiYXNlRWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgY2hp
bGRJbmRleCsrKTsKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIGJhc2VFZGdl
KTsKKyAgICByZWdzLmFwcGVuZChET01KSVQ6OlZhbHVlKGJhc2UuZ3ByKCksIG1fc3RhdGUuZm9y
Tm9kZShiYXNlRWRnZSkudmFsdWUoKSkpOwogCi0gICAgcmVncy5hcHBlbmQocmVzdWx0LnJlZ3Mo
KSk7Ci0gICAgcmVncy5hcHBlbmQoRE9NSklUOjpWYWx1ZShnbG9iYWxPYmplY3QuZ3ByKCksIG1f
c3RhdGUuZm9yTm9kZShtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDApKS52YWx1ZSgp
KSk7Ci0gICAgcmVncy5hcHBlbmQoRE9NSklUOjpWYWx1ZShiYXNlLmdwcigpLCBtX3N0YXRlLmZv
ck5vZGUobV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAxKSkudmFsdWUoKSkpOwogI2lm
IFVTRShKU1ZBTFVFNjQpCiAgICAgcmVncy5hcHBlbmQoc3RhdGljX2Nhc3Q8R1BSUmVnPihHUFJJ
bmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKICAgICByZWdzLmFwcGVuZChzdGF0aWNfY2FzdDxHUFJS
ZWc+KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZkNjJlMTZkZmI5MGE3NWEzZGU3NDBmNjAzZWM2ZTE4ZTllMTg2ZDQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBv
aW50LmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUg
IkRPTUpJVFBhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJSZWdpc3RlclNldC5oIgorCituYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERPTUpJVCB7CisKK2NsYXNzIENhbGxET01QYXRjaHBvaW50IDog
cHVibGljIFBhdGNocG9pbnQgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8Q2FsbERPTVBhdGNo
cG9pbnQ+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWxs
RE9NUGF0Y2hwb2ludCgpKTsKKyAgICB9CisKKyAgICAvLyBUbyBsb29rIHVwIERPTVdyYXBwZXIg
Y2FjaGUsIEdsb2JhbE9iamVjdCBpcyByZXF1aXJlZC4KKyAgICBib29sIHJlcXVpcmVHbG9iYWxP
YmplY3QgeyB0cnVlIH07CisKK3ByaXZhdGU6CisgICAgQ2FsbERPTVBhdGNocG9pbnQoKSA9IGRl
ZmF1bHQ7Cit9OworCit9IH0KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZG9taml0L0RPTUpJVEdldHRlclNldHRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RvbWppdC9ET01KSVRHZXR0ZXJTZXR0ZXIuaAppbmRleCBjMWU3MzkzYzgwNzQxNDU3M2Q0NmRm
MjNkYzk3MjBiM2JkMDBmNDNlLi40NGM0MzIyOGYzYjdiZDAyYWQ4ZjJlOTBhNmI2NDk3NmNmMjM2
NTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEdldHRl
clNldHRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUR2V0dGVy
U2V0dGVyLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJE
T01KSVRQYXRjaHBvaW50LmgiCisjaW5jbHVkZSAiRE9NSklUQ2FsbERPTVBhdGNocG9pbnQuaCIK
ICNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJQdXRQcm9wZXJ0eVNsb3QuaCIK
ICNpbmNsdWRlICJTcGVjdWxhdGVkVHlwZS5oIgpAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBHZXR0
ZXJTZXR0ZXIgewogICAgIGNvbnN0IENsYXNzSW5mbyogdGhpc0NsYXNzSW5mbygpIGNvbnN0IHsg
cmV0dXJuIG1fdGhpc0NsYXNzSW5mbzsgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICB2aXJ0dWFs
IFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IGNhbGxET00oKSA9IDA7CisgICAgdmlydHVhbCBSZWY8
RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gY2FsbERPTSgpID0gMDsKICAgICB2aXJ0dWFsIFJl
ZjxET01KSVQ6OlBhdGNocG9pbnQ+IGNoZWNrRE9NKCkgPSAwOwogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUUGF0Y2hwb2ludC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRQYXRjaHBvaW50LmgKaW5kZXggMmZkYzA5
OTAxMGQ5NmNhNWQzMDMxODhiY2JjMzc4MjI3ODg4ZTliNi4uMzg2MDhlMjU2OWEyYWNlNjkxMGIy
ODkxOTA3ZjViZGI4YTk1OWM0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rv
bWppdC9ET01KSVRQYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWpp
dC9ET01KSVRQYXRjaHBvaW50LmgKQEAgLTYyLDkgKzYyLDEwIEBAIGNsYXNzIFBhdGNocG9pbnQg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGF0Y2hwb2ludD4gewogICAgIHVpbnQ4X3Qg
bnVtR1BTY3JhdGNoUmVnaXN0ZXJzIHsgMCB9OwogICAgIHVpbnQ4X3QgbnVtRlBTY3JhdGNoUmVn
aXN0ZXJzIHsgMCB9OwogCi1wcml2YXRlOgorcHJvdGVjdGVkOgogICAgIFBhdGNocG9pbnQoKSA9
IGRlZmF1bHQ7CiAKK3ByaXZhdGU6CiAgICAgUmVmUHRyPFBhdGNocG9pbnRHZW5lcmF0b3I+IG1f
Z2VuZXJhdG9yOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCmluZGV4IDZlNzk3MTczYzFjNjM2ZjYyMzc3ZWViNDIyYjczMmYxNGFmMWMzNTAu
LmM3OWI5ODBkYzcyOWJkZjk1NzY1NTM4YzEwYTJjNzAyN2MxY2Y4ZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTg3NjksMTMgKzg3Njks
MjUgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgIHZvaWQgY29tcGlsZUNhbGxET00oKQog
ICAgIHsKLSAgICAgICAgTFZhbHVlIGdsb2JhbE9iamVjdCA9IGxvd0NlbGwobV9ncmFwaC52YXJB
cmdDaGlsZChtX25vZGUsIDApKTsKLSAgICAgICAgTFZhbHVlIGNlbGwgPSBsb3dDZWxsKG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxKSk7CisgICAgICAgIFJlZlB0cjxET01KSVQ6OkNhbGxE
T01QYXRjaHBvaW50PiBkb21KSVQgPSBtX25vZGUtPmRvbUpJVCgpLT5jYWxsRE9NKCk7CisgICAg
ICAgIGludCBjaGlsZEluZGV4ID0gMDsKKworICAgICAgICBMVmFsdWUgZ2xvYmFsT2JqZWN0Owor
ICAgICAgICBKU1ZhbHVlIGdsb2JhbE9iamVjdENvbnN0YW50OworICAgICAgICBpZiAoZG9tSklU
LT5yZXF1aXJlR2xvYmFsT2JqZWN0KSB7CisgICAgICAgICAgICBFZGdlJiBnbG9iYWxPYmplY3RF
ZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIGNoaWxkSW5kZXgrKyk7CisgICAgICAg
ICAgICBnbG9iYWxPYmplY3QgPSBsb3dDZWxsKGdsb2JhbE9iamVjdEVkZ2UpOworICAgICAgICAg
ICAgZ2xvYmFsT2JqZWN0Q29uc3RhbnQgPSBtX3N0YXRlLmZvck5vZGUoZ2xvYmFsT2JqZWN0RWRn
ZSkudmFsdWUoKTsKKyAgICAgICAgfQorCisgICAgICAgIEVkZ2UmIGJhc2VFZGdlID0gbV9ncmFw
aC52YXJBcmdDaGlsZChtX25vZGUsIGNoaWxkSW5kZXgrKyk7CisgICAgICAgIExWYWx1ZSBiYXNl
ID0gbG93Q2VsbChiYXNlRWRnZSk7CisgICAgICAgIEpTVmFsdWUgYmFzZUNvbnN0YW50ID0gbV9z
dGF0ZS5mb3JOb2RlKGJhc2VFZGdlKS52YWx1ZSgpOwogCi0gICAgICAgIFJlZlB0cjxET01KSVQ6
OlBhdGNocG9pbnQ+IGRvbUpJVCA9IG1fbm9kZS0+ZG9tSklUKCktPmNhbGxET00oKTsKICAgICAg
ICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7
Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihnbG9iYWxPYmplY3QpOwot
ICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoY2VsbCk7CisgICAgICAgIGlm
IChkb21KSVQtPnJlcXVpcmVHbG9iYWxPYmplY3QpCisgICAgICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmRTb21lUmVnaXN0ZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBw
ZW5kU29tZVJlZ2lzdGVyKGJhc2UpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV90YWdN
YXNrLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwogICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmQobV90YWdUeXBlTnVtYmVyLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2Vw
dGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRp
b25zKHBhdGNocG9pbnQpOwpAQCAtODc4Niw4ICs4Nzk4LDYgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKIAogICAgICAgICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAgTm9kZSog
bm9kZSA9IG1fbm9kZTsKLSAgICAgICAgSlNWYWx1ZSBjaGlsZDFDb25zdGFudCA9IG1fc3RhdGUu
Zm9yTm9kZShtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCkpLnZhbHVlKCk7Ci0gICAgICAg
IEpTVmFsdWUgY2hpbGQyQ29uc3RhbnQgPSBtX3N0YXRlLmZvck5vZGUobV9ncmFwaC52YXJBcmdD
aGlsZChtX25vZGUsIDEpKS52YWx1ZSgpOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0
b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3Jh
dGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKQEAgLTg3OTgsOSArODgwOCwxMSBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IHBhdGNo
cG9pbnQgc2hvdWxkIGhhdmUgYSB3YXkgdG8gdGVsbCB0aGlzIGNhbiByZXVzZSAiYmFzZSIgcmVn
aXN0ZXIuCiAgICAgICAgICAgICAgICAgLy8gVGVhY2hpbmcgREZHIGFib3V0IERPTUpJVDo6UGF0
Y2hwb2ludCBjbG9iYmVyIGluZm9ybWF0aW9uIGlzIG5pY2UuCisgICAgICAgICAgICAgICAgaW50
IGNoaWxkSW5kZXggPSAxOwogICAgICAgICAgICAgICAgIHJlZ3MuYXBwZW5kKEpTVmFsdWVSZWdz
KHBhcmFtc1swXS5ncHIoKSkpOwotICAgICAgICAgICAgICAgIHJlZ3MuYXBwZW5kKERPTUpJVDo6
VmFsdWUocGFyYW1zWzFdLmdwcigpLCBjaGlsZDFDb25zdGFudCkpOwotICAgICAgICAgICAgICAg
IHJlZ3MuYXBwZW5kKERPTUpJVDo6VmFsdWUocGFyYW1zWzJdLmdwcigpLCBjaGlsZDJDb25zdGFu
dCkpOworICAgICAgICAgICAgICAgIGlmIChkb21KSVQtPnJlcXVpcmVHbG9iYWxPYmplY3QpCisg
ICAgICAgICAgICAgICAgICAgIHJlZ3MuYXBwZW5kKERPTUpJVDo6VmFsdWUocGFyYW1zW2NoaWxk
SW5kZXgrK10uZ3ByKCksIGdsb2JhbE9iamVjdENvbnN0YW50KSk7CisgICAgICAgICAgICAgICAg
cmVncy5hcHBlbmQoRE9NSklUOjpWYWx1ZShwYXJhbXNbY2hpbGRJbmRleCsrXS5ncHIoKSwgYmFz
ZUNvbnN0YW50KSk7CiAKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZG9tSklULT5udW1HUFNjcmF0Y2hSZWdpc3RlcnM7ICsraSkKICAgICAgICAgICAgICAgICAgICAg
Z3BTY3JhdGNoLmFwcGVuZChwYXJhbXMuZ3BTY3JhdGNoKGkpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAK
aW5kZXggNDI0YjRiOTc5MTlmYTlmYTQzMGUwZDE4YTk4MDJlZjE3NzViOWIxOS4uMjc0MTJkMzcy
MzczMGNhNzVjM2I5YzVhZjg4ZWQxZWE3M2ZlYTQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAg
LTYyMCwxMiArNjIwLDEzIEBAIGNsYXNzIERPTUpJVEdldHRlciA6IHB1YmxpYyBET01KSVROb2Rl
IHsKICAgICAgICAgICAgIHJldHVybiBwYXRjaHBvaW50OwogICAgICAgICB9CiAKLSAgICAgICAg
UmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gY2FsbERPTSgpIG92ZXJyaWRlCisgICAgICAgIFJlZjxE
T01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBjYWxsRE9NKCkgb3ZlcnJpZGUKICAgICAgICAgewot
ICAgICAgICAgICAgUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IERPTUpJVDo6
UGF0Y2hwb2ludDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBSZWY8RE9NSklUOjpDYWxsRE9NUGF0
Y2hwb2ludD4gcGF0Y2hwb2ludCA9IERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ6OmNyZWF0ZSgp
OworICAgICAgICAgICAgcGF0Y2hwb2ludC0+cmVxdWlyZUdsb2JhbE9iamVjdCA9IGZhbHNlOwog
ICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAg
ICAgICBKU1ZhbHVlUmVncyByZXN1bHRzID0gcGFyYW1zWzBdLmpzVmFsdWVSZWdzKCk7Ci0gICAg
ICAgICAgICAgICAgR1BSUmVnIGRvbSA9IHBhcmFtc1syXS5ncHIoKTsKKyAgICAgICAgICAgICAg
ICBHUFJSZWcgZG9tID0gcGFyYW1zWzFdLmdwcigpOwogCiAgICAgICAgICAgICAgICAgcGFyYW1z
LmFkZFNsb3dQYXRoQ2FsbChqaXQuanVtcCgpLCBqaXQsIHN0YXRpY19jYXN0PEVuY29kZWRKU1Zh
bHVlKCopKEV4ZWNTdGF0ZSosIHZvaWQqKT4oW10oRXhlY1N0YXRlKiwgdm9pZCogcG9pbnRlcikg
ewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHN0
YXRpY19jYXN0PERPTUpJVEdldHRlcio+KHBvaW50ZXIpLT52YWx1ZSgpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4IGRmYTlhYTk5NzU5OGYzZDQzYmY5
YWUzNjAzNDhhZWMwZjVmNzkzY2MuLmUxOWY0ZTI5NTljZDFhYmY0MmRlMzk3ZDhlOWEzODc4Nzc0
YTVhZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCkBAIC0x
NjEsMTYgKzE2MSwxNiBAQCB2b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKFZNJiB2bSkKICAg
ICBTVEFUSUNfQVNTRVJUKEpTRnVuY3Rpb25UeXBlID09IDIzKTsKICAgICBTVEFUSUNfQVNTRVJU
KEFycmF5VHlwZSA9PSAzMSk7CiAgICAgU1RBVElDX0FTU0VSVChEZXJpdmVkQXJyYXlUeXBlID09
IDMyKTsKLSAgICBTVEFUSUNfQVNTRVJUKFByb3h5T2JqZWN0VHlwZSA9PSAxMTYpOwotICAgIFNU
QVRJQ19BU1NFUlQoSW50OEFycmF5VHlwZSA9PSAxMDApOwotICAgIFNUQVRJQ19BU1NFUlQoSW50
MTZBcnJheVR5cGUgPT0gMTAxKTsKLSAgICBTVEFUSUNfQVNTRVJUKEludDMyQXJyYXlUeXBlID09
IDEwMik7Ci0gICAgU1RBVElDX0FTU0VSVChVaW50OEFycmF5VHlwZSA9PSAxMDMpOwotICAgIFNU
QVRJQ19BU1NFUlQoVWludDhDbGFtcGVkQXJyYXlUeXBlID09IDEwNCk7Ci0gICAgU1RBVElDX0FT
U0VSVChVaW50MTZBcnJheVR5cGUgPT0gMTA1KTsKLSAgICBTVEFUSUNfQVNTRVJUKFVpbnQzMkFy
cmF5VHlwZSA9PSAxMDYpOwotICAgIFNUQVRJQ19BU1NFUlQoRmxvYXQzMkFycmF5VHlwZSA9PSAx
MDcpOwotICAgIFNUQVRJQ19BU1NFUlQoRmxvYXQ2NEFycmF5VHlwZSA9PSAxMDgpOworICAgIFNU
QVRJQ19BU1NFUlQoUHJveHlPYmplY3RUeXBlID09IDQ5KTsKKyAgICBTVEFUSUNfQVNTRVJUKElu
dDhBcnJheVR5cGUgPT0gMzMpOworICAgIFNUQVRJQ19BU1NFUlQoSW50MTZBcnJheVR5cGUgPT0g
MzQpOworICAgIFNUQVRJQ19BU1NFUlQoSW50MzJBcnJheVR5cGUgPT0gMzUpOworICAgIFNUQVRJ
Q19BU1NFUlQoVWludDhBcnJheVR5cGUgPT0gMzYpOworICAgIFNUQVRJQ19BU1NFUlQoVWludDhD
bGFtcGVkQXJyYXlUeXBlID09IDM3KTsKKyAgICBTVEFUSUNfQVNTRVJUKFVpbnQxNkFycmF5VHlw
ZSA9PSAzOCk7CisgICAgU1RBVElDX0FTU0VSVChVaW50MzJBcnJheVR5cGUgPT0gMzkpOworICAg
IFNUQVRJQ19BU1NFUlQoRmxvYXQzMkFycmF5VHlwZSA9PSA0MCk7CisgICAgU1RBVElDX0FTU0VS
VChGbG9hdDY0QXJyYXlUeXBlID09IDQxKTsKICAgICBTVEFUSUNfQVNTRVJUKE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQgPT0gMSk7CiAgICAgU1RBVElDX0FTU0VSVChJbXBsZW1lbnRzRGVmYXVsdEhh
c0luc3RhbmNlID09IDIpOwogICAgIFNUQVRJQ19BU1NFUlQoRmlyc3RDb25zdGFudFJlZ2lzdGVy
SW5kZXggPT0gMHg0MDAwMDAwMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggZmIwYzQ3MDQ1ZTY3NGVhMjhlZDVlZDZh
NTFhNmY4OTA5NTk0OWNlMi4uMDAyYTYzYzI5MzVjMzE0OGVmNDI1N2Q3NjM4ODAwNWUzYjI1Yjdj
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQpAQCAtMzUwLDE5ICszNTAsMTkgQEAgY29uc3QgRmluYWxPYmplY3RUeXBlID0g
MjEKIGNvbnN0IEpTRnVuY3Rpb25UeXBlID0gMjMKIGNvbnN0IEFycmF5VHlwZSA9IDMxCiBjb25z
dCBEZXJpdmVkQXJyYXlUeXBlID0gMzIKLWNvbnN0IFByb3h5T2JqZWN0VHlwZSA9IDExNgorY29u
c3QgUHJveHlPYmplY3RUeXBlID0gNDkKIAogIyBUaGUgdHlwZWQgYXJyYXkgdHlwZXMgbmVlZCB0
byBiZSBudW1iZXJlZCBpbiBhIHBhcnRpY3VsYXIgb3JkZXIgYmVjYXVzZSBvZiB0aGUgbWFudWFs
bHkgd3JpdHRlbgogIyBzd2l0Y2ggc3RhdGVtZW50IGluIGdldF9ieV92YWwgYW5kIHB1dF9ieV92
YWwuCi1jb25zdCBJbnQ4QXJyYXlUeXBlID0gMTAwCi1jb25zdCBJbnQxNkFycmF5VHlwZSA9IDEw
MQotY29uc3QgSW50MzJBcnJheVR5cGUgPSAxMDIKLWNvbnN0IFVpbnQ4QXJyYXlUeXBlID0gMTAz
Ci1jb25zdCBVaW50OENsYW1wZWRBcnJheVR5cGUgPSAxMDQKLWNvbnN0IFVpbnQxNkFycmF5VHlw
ZSA9IDEwNQotY29uc3QgVWludDMyQXJyYXlUeXBlID0gMTA2Ci1jb25zdCBGbG9hdDMyQXJyYXlU
eXBlID0gMTA3Ci1jb25zdCBGbG9hdDY0QXJyYXlUeXBlID0gMTA4Citjb25zdCBJbnQ4QXJyYXlU
eXBlID0gMzMKK2NvbnN0IEludDE2QXJyYXlUeXBlID0gMzQKK2NvbnN0IEludDMyQXJyYXlUeXBl
ID0gMzUKK2NvbnN0IFVpbnQ4QXJyYXlUeXBlID0gMzYKK2NvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5
VHlwZSA9IDM3Citjb25zdCBVaW50MTZBcnJheVR5cGUgPSAzOAorY29uc3QgVWludDMyQXJyYXlU
eXBlID0gMzkKK2NvbnN0IEZsb2F0MzJBcnJheVR5cGUgPSA0MAorY29uc3QgRmxvYXQ2NEFycmF5
VHlwZSA9IDQxCiAKIGNvbnN0IEZpcnN0QXJyYXlUeXBlID0gSW50OEFycmF5VHlwZQogY29uc3Qg
TGFzdEFycmF5VHlwZSA9IEZsb2F0NjRBcnJheVR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNUeXBlLmgKaW5kZXggMDEwZTkwNDdiN2VkZWE2NjQ0OGZiOTcxZTNkNGVlOTZiZjA4Y2I5
OC4uYWEyNDdjYjU2OTZhZGEwYjJlM2VlZmM4ODU2YTQ2NjlmNzAyZjgzNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKQEAgLTY1LDcgKzY1LDcgQEAgZW51bSBKU1R5cGUg
OiB1aW50OF90IHsKICAgICBBcnJheVR5cGUsCiAgICAgRGVyaXZlZEFycmF5VHlwZSwKIAotICAg
IEludDhBcnJheVR5cGUgPSAxMDAsCisgICAgSW50OEFycmF5VHlwZSwKICAgICBJbnQxNkFycmF5
VHlwZSwKICAgICBJbnQzMkFycmF5VHlwZSwKICAgICBVaW50OEFycmF5VHlwZSwKQEAgLTg3LDgg
Kzg3LDEwIEBAIGVudW0gSlNUeXBlIDogdWludDhfdCB7CiAgICAgSlNTZXRUeXBlLAogCiAgICAg
TGFzdEpTQ09iamVjdFR5cGUgPSBKU1NldFR5cGUsCisgICAgTWF4SlNUeXBlID0gMGIxMTExMTEx
MSwKIH07CiAKLUNPTVBJTEVfQVNTRVJUKHNpemVvZihKU1R5cGUpID09IHNpemVvZih1aW50OF90
KSwgc2l6ZW9mX2pzdHlwZV9pc19vbmVfYnl0ZSk7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihKU1R5
cGUpID09IHNpemVvZih1aW50OF90KSwgInNpemVvZihKU1R5cGUpIGlzIG9uZSBieXRlLiIpOwor
c3RhdGljX2Fzc2VydChMYXN0SlNDT2JqZWN0VHlwZSA8IDEyOCwgIlRoZSBoaWdoZXN0IGJpdCBp
cyByZXNlcnZlZCBmb3IgZW1iZWRkZXIncyBleHRlbnNpb24uIik7CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGRjMWQzMWU2YzQ1OTgwMjI4ZGJhNzEzYjlmZDJjM2MwOGI1ODE4MzMuLjUzYzIx
ZDk1NzI1YzI4MDRmMDA2NzliM2M2NTVjMjAwODA0OGNjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYxNDMsNiArNjE0Myw3
IEBACiAJCUUxRkY4RjZEMTgwREI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3Ry
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRjhG
NkIxODBEQjVCRTAwMTMyNjc0IC8qIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmggKi87IH07CiAJ
CUUzMTUwRUE2MURBNzIxOTAwMDE5NDAxMiAvKiBKU05vZGVET01KSVQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBRkE5NjQxREE2RTkwODAwMjg2
MUJEIC8qIEpTTm9kZURPTUpJVC5jcHAgKi87IH07CiAJCUUzMTUwRUE3MURBNzIxOTMwMDE5NDAx
MiAvKiBET01KSVRIZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzE1MEVBNTFEQTcyMThEMDAxOTQwMTIgLyogRE9NSklUSGVscGVycy5oICov
OyB9OworCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNvbnN0YW50cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMDQ5OTMxREFEQzA0
NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzg4Mzg5ODFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0
TW9kdWxlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3Bw
ICovOyB9OwogCQlFMzg4Mzg5OTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5
NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi87IH07CiAJCUUzQjJG
MEVCMUQ3RjRDOUQwMEIwQzlEMSAvKiBMb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCMkYwRTMxRDdGMzVFQzAw
QjBDOUQxIC8qIExvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAgKi87IH07CkBAIC0xMzc4NCw2ICsx
Mzc4NSw3IEBACiAJCUUzQjJGMEU3MUQ3RjM1RUMwMEIwQzlEMSAvKiBMb2FkYWJsZVNjcmlwdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2FkYWJsZVNjcmlwdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0IyRjBFODFEN0YzNUVDMDBCMEM5RDEgLyogTG9h
ZGFibGVTY3JpcHRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9h
ZGFibGVTY3JpcHRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNCMkYw
RTkxRDdGM0QzQzAwQjBDOUQxIC8qIExvYWRhYmxlU2NyaXB0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvYWRhYmxlU2NyaXB0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm9kZUNvbnN0YW50cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0ZBMzg2MTFENzE2RTc2MDBBQTU5NTAgLyogUGVu
ZGluZ1NjcmlwdENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQZW5k
aW5nU2NyaXB0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0MDFDMjc0
MTdDRTUzRUMwMEM0MUEzNSAvKiBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQwMUUwQTMxQzNDMEI4MzAwRjM0RDEwIC8qIFN0
eWxlQ2hhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlQ2hhbmdl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzI3NSw2ICsyMzI3Nyw3IEBACiAJ
CQkJNjNEN0IzMkMwRTc4Q0QzRjAwRjc2MTdDIC8qIE5vZGVSZW5kZXJTdHlsZS5oICovLAogCQkJ
CUU0MzEwNUI3MTY3NTBGMEMwMERCMkZCOCAvKiBOb2RlVHJhdmVyc2FsLmNwcCAqLywKIAkJCQlF
NDMxMDVCQTE2NzUwRjE2MDBEQjJGQjggLyogTm9kZVRyYXZlcnNhbC5oICovLAorCQkJCUUzRDA0
OTkzMURBREMwNDUwMDcxOEYzQyAvKiBOb2RlQ29uc3RhbnRzLmggKi8sCiAJCQkJOTM4MkFBQjEw
RDhDMzg2MTAwRjM1N0E2IC8qIE5vZGVXaXRoSW5kZXguaCAqLywKIAkJCQlFNDZCNDFGODFDQjI0
RTcwMDA4RjExREUgLyogTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uLmggKi8sCiAJCQkJODM2OUU1
OEYxQUZERDAzMDAwODdERjY4IC8qIE5vbkRvY3VtZW50VHlwZUNoaWxkTm9kZS5pZGwgKi8sCkBA
IC0yNTg0Nyw2ICsyNTg1MCw3IEBACiAJCQkJNTEwNThBRTIxRDY3QzIyOTAwOUE1MzhDIC8qIE1v
Y2tHYW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVFQTNENkRGMUM4NTlEN0Yw
MDMwMEJCQiAvKiBNb2NrTWVkaWFFbmRwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGMkIw
MTMxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNvbnN0YW50cy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGMkIwMTUxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tNZWRp
YVNvdXJjZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3RDZBNEY0MUJFRDVGODgwMDE3
NDE0NiAvKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdE
NkE0RjAxQkVDRjJEMjAwMTc0MTQ2IC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlLmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3Jh
cHBlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKaW5kZXgg
MDA5ZjZkZjA3ZWViMTE2MjAwMThiODMyNWI5MGVjNTIyNzMxMWZkYy4uMThjNjY3MTQxMzVkZDQy
NmIyMzk5N2E1YWU3MTVjZjM1NjkwYmQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XcmFwcGVyLmgKQEAgLTIyLDYgKzIyLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiSlNET01HbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJOb2RlQ29uc3RhbnRzLmgiCiAjaW5j
bHVkZSA8cnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0yOSwxMCArMzAsMjUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSlNET01X
aW5kb3c7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCi1zdGF0aWMgY29uc3QgdWlu
dDhfdCBKU0RPTVdyYXBwZXJUeXBlID0gSlNDOjpMYXN0SlNDT2JqZWN0VHlwZSArIDE7Ci1zdGF0
aWMgY29uc3QgdWludDhfdCBKU05vZGVUeXBlID0gSlNDOjpMYXN0SlNDT2JqZWN0VHlwZSArIDI7
Ci1zdGF0aWMgY29uc3QgdWludDhfdCBKU0RvY3VtZW50V3JhcHBlclR5cGUgPSBKU0M6Okxhc3RK
U0NPYmplY3RUeXBlICsgMzsKLXN0YXRpYyBjb25zdCB1aW50OF90IEpTRWxlbWVudFR5cGUgPSBK
U0M6Okxhc3RKU0NPYmplY3RUeXBlICsgNDsKKy8vIFdlIGVuY29kZSBOb2RlIHR5cGUgaW50byBK
U1R5cGUuIFRoZSBmb3JtYXQgaXMgdGhlIGZvbGxvd2luZy4KKy8vIG9mZnNldCB8IDcgfCA2IDUg
NCB8IDMgMiAxIDAgIHwKKy8vIHZhbHVlICB8IDEgfCBLaW5kICB8IE5vZGVUeXBlIHwKK3N0YXRp
YyBjb25zdCB1aW50OF90IEpTTm9kZVR5cGVNYXNrICAgICAgICAgICAgICAgICAgPSAwYjAwMDAx
MTExOworCitzdGF0aWMgY29uc3QgdWludDhfdCBKU0RPTVdyYXBwZXJUeXBlICAgICAgICAgICAg
ICAgID0gMGIxMDAwMDAwMDsKK3N0YXRpYyBjb25zdCB1aW50OF90IEpTTm9kZVR5cGUgICAgICAg
ICAgICAgICAgICAgICAgPSAwYjEwMDEwMDAwOworc3RhdGljIGNvbnN0IHVpbnQ4X3QgSlNUZXh0
Tm9kZVR5cGUgICAgICAgICAgICAgICAgICA9IEpTTm9kZVR5cGUgfCBOb2RlQ29uc3RhbnRzOjpU
RVhUX05PREU7CitzdGF0aWMgY29uc3QgdWludDhfdCBKU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbk5v
ZGVUeXBlID0gSlNOb2RlVHlwZSB8IE5vZGVDb25zdGFudHM6OlBST0NFU1NJTkdfSU5TVFJVQ1RJ
T05fTk9ERTsKK3N0YXRpYyBjb25zdCB1aW50OF90IEpTRG9jdW1lbnRUeXBlTm9kZVR5cGUgICAg
ICAgICAgPSBKU05vZGVUeXBlIHwgTm9kZUNvbnN0YW50czo6RE9DVU1FTlRfVFlQRV9OT0RFOwor
c3RhdGljIGNvbnN0IHVpbnQ4X3QgSlNEb2N1bWVudEZyYWdtZW50Tm9kZVR5cGUgICAgICA9IEpT
Tm9kZVR5cGUgfCBOb2RlQ29uc3RhbnRzOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOworc3RhdGlj
IGNvbnN0IHVpbnQ4X3QgSlNEb2N1bWVudFdyYXBwZXJUeXBlICAgICAgICAgICA9IEpTTm9kZVR5
cGUgfCBOb2RlQ29uc3RhbnRzOjpET0NVTUVOVF9OT0RFOworc3RhdGljIGNvbnN0IHVpbnQ4X3Qg
SlNDb21tZW50Tm9kZVR5cGUgICAgICAgICAgICAgICA9IEpTTm9kZVR5cGUgfCBOb2RlQ29uc3Rh
bnRzOjpDT01NRU5UX05PREU7CitzdGF0aWMgY29uc3QgdWludDhfdCBKU0NEQVRBU2VjdGlvbk5v
ZGVUeXBlICAgICAgICAgID0gSlNOb2RlVHlwZSB8IE5vZGVDb25zdGFudHM6OkNEQVRBX1NFQ1RJ
T05fTk9ERTsKK3N0YXRpYyBjb25zdCB1aW50OF90IEpTQXR0ck5vZGVUeXBlICAgICAgICAgICAg
ICAgICAgPSBKU05vZGVUeXBlIHwgTm9kZUNvbnN0YW50czo6QVRUUklCVVRFX05PREU7CitzdGF0
aWMgY29uc3QgdWludDhfdCBKU0VsZW1lbnRUeXBlICAgICAgICAgICAgICAgICAgID0gMGIxMDEw
MDAwMCB8IE5vZGVDb25zdGFudHM6OkVMRU1FTlRfTk9ERTsKKworc3RhdGljX2Fzc2VydChKU0RP
TVdyYXBwZXJUeXBlID4gSlNDOjpMYXN0SlNDT2JqZWN0VHlwZSwgIkpTQzo6SlNUeXBlIG9mZmVy
cyB0aGUgaGlnaGVzdCBiaXQuIik7CitzdGF0aWNfYXNzZXJ0KE5vZGVDb25zdGFudHM6Okxhc3RO
b2RlVHlwZSA8IEpTTm9kZVR5cGVNYXNrLCAiTm9kZVR5cGUgc2hvdWxkIGJlIHJlcHJlc2VudGVk
IGluIDRiaXQuIik7CiAKIGNsYXNzIEpTRE9NT2JqZWN0IDogcHVibGljIEpTQzo6SlNEZXN0cnVj
dGlibGVPYmplY3QgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9k
ZUN1c3RvbS5jcHAKaW5kZXggYzgzMTllYWY2NmZlMjNhYjAyZGQyNmFhNzI0MzdhMDBlNzU0YmVh
Mi4uNWFkZGI0ZWI3NTA0NTI0OWQ4OTM5Nzk2ZGIyNGEwMDAwMGViZmE5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCkBAIC0xMTAsNiArMTEwLDExIEBA
IGJvb2wgSlNOb2RlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxl
PEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2CiAgICAgcmV0dXJuIGlzUmVhY2hhYmxlRnJvbURPTSgm
anNOb2RlLT53cmFwcGVkKCksIHZpc2l0b3IpOwogfQogCitKU1ZhbHVlIEpTTm9kZTo6bm9kZVR5
cGUoRXhlY1N0YXRlJikgY29uc3QKK3sKKyAgICByZXR1cm4ganNOdW1iZXIoc3RhdGljX2Nhc3Q8
dWludDhfdD4odHlwZSgpKSAmIEpTTm9kZVR5cGVNYXNrKTsKK30KKwogSlNWYWx1ZSBKU05vZGU6
Omluc2VydEJlZm9yZShFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIFZNJiB2bSA9IHN0YXRlLnZt
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCmluZGV4IDg4YzFkYmE0ZDNkZjhlMzQ1ZDUwN2EyYzU5NDIyNDI1YWI4MDZlMTkuLjFh
YzhjMWYzNDk5Y2Q4ZWZlODk2YzM1MjZiNjUyMTE2OTkzODQzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xMTcwLDYg
KzExNzAsNDAgQEAgc3ViIEdlbmVyYXRlRGljdGlvbmFyaWVzSW1wbGVtZW50YXRpb25Db250ZW50
CiAgICAgcmV0dXJuICRyZXN1bHQ7CiB9CiAKK3N1YiBHZXRKU1R5cGVGb3JOb2RlCit7CisgICAg
bXkgKCRjb2RlR2VuZXJhdG9yLCAkaW50ZXJmYWNlKSA9IEBfOworCisgICAgaWYgKCRjb2RlR2Vu
ZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiRG9jdW1lbnQiKSkgeworICAg
ICAgICByZXR1cm4gIkpTRG9jdW1lbnRXcmFwcGVyVHlwZSI7CisgICAgfQorICAgIGlmICgkY29k
ZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIkRvY3VtZW50RnJhZ21l
bnQiKSkgeworICAgICAgICByZXR1cm4gIkpTRG9jdW1lbnRGcmFnbWVudE5vZGVUeXBlIjsKKyAg
ICB9CisgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNl
LCAiRG9jdW1lbnRUeXBlIikpIHsKKyAgICAgICAgcmV0dXJuICJKU0RvY3VtZW50VHlwZU5vZGVU
eXBlIjsKKyAgICB9CisgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgk
aW50ZXJmYWNlLCAiUHJvY2Vzc2luZ0luc3RydWN0aW9uIikpIHsKKyAgICAgICAgcmV0dXJuICJK
U1Byb2Nlc3NpbmdJbnN0cnVjdGlvbk5vZGVUeXBlIjsKKyAgICB9CisgICAgaWYgKCRjb2RlR2Vu
ZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiQ0RBVEFTZWN0aW9uIikpIHsK
KyAgICAgICAgcmV0dXJuICJKU0NEQVRBU2VjdGlvbk5vZGVUeXBlIjsKKyAgICB9CisgICAgaWYg
KCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiQXR0ciIpKSB7
CisgICAgICAgIHJldHVybiAiSlNBdHRyTm9kZVR5cGUiOworICAgIH0KKyAgICBpZiAoJGNvZGVH
ZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJDb21tZW50IikpIHsKKyAg
ICAgICAgcmV0dXJuICJKU0NvbW1lbnROb2RlVHlwZSI7CisgICAgfQorICAgIGlmICgkY29kZUdl
bmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIlRleHQiKSkgeworICAgICAg
ICByZXR1cm4gIkpTVGV4dE5vZGVUeXBlIjsKKyAgICB9CisgICAgaWYgKCRjb2RlR2VuZXJhdG9y
LT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiRWxlbWVudCIpKSB7CisgICAgICAgIHJl
dHVybiAiSlNFbGVtZW50VHlwZSI7CisgICAgfQorICAgIHJldHVybiAiSlNOb2RlVHlwZSI7Cit9
CisKIHN1YiBHZW5lcmF0ZUhlYWRlcgogewogICAgIG15ICgkb2JqZWN0LCAkaW50ZXJmYWNlLCAk
ZW51bWVyYXRpb25zLCAkZGljdGlvbmFyaWVzKSA9IEBfOwpAQCAtMTM2OCwxMiArMTQwMiw5IEBA
IHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAge1xuIik7
CiAgICAgaWYgKElzRE9NR2xvYmFsT2JqZWN0KCRpbnRlcmZhY2UpKSB7CiAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Okdsb2JhbE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTtcbiIpOwotICAgIH0gZWxzaWYgKCRjb2Rl
R2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiRG9jdW1lbnQiKSkgewot
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlND
OjpKU1R5cGUoSlNEb2N1bWVudFdyYXBwZXJUeXBlKSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
O1xuIik7Ci0gICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRp
bnRlcmZhY2UsICJFbGVtZW50IikpIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6SlNUeXBlKEpTRWxlbWVudFR5cGUpLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7XG4iKTsKICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5o
ZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIk5vZGUiKSkgewotICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpKU1R5cGUoSlNOb2RlVHlw
ZSksIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTtcbiIpOworICAgICAgICBteSAkdHlwZSA9IEdl
dEpTVHlwZUZvck5vZGUoJGNvZGVHZW5lcmF0b3IsICRpbnRlcmZhY2UpOworICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpKU1R5cGUoJHR5
cGUpLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7XG4iKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7XG4iKTsKICAgICB9CkBAIC0xNjcxLDcg
KzE3MDIsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgJGRvbUpJVENsYXNzTmFtZSgpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiI2lmIEVOQUJMRShKSVQpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgp
IG92ZXJyaWRlO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIFJl
ZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gY2FsbERPTSgpIG92ZXJyaWRlO1xuIik7CisgICAg
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERP
TVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlkZTtcbiIpOwogICAgICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiNlbmRpZlxuIik7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAifTtcblxuIik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmlkbAppbmRleCA2ZjI3NDJmODNh
MzAyN2IwNjFkNWYwMmQwOWVjYjRhNTI2NmNhZGFmLi4yZDVkYjhiN2RkNWExNjc1NGEzODQxMjRi
YTE0NzZmNTU0ZmY4MDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaWRsCkBAIC00Niw3ICs0Niw3IEBACiAgICAg
Ly8gRklYTUU6IHRoZSBzcGVjIHNheXMgdGhpcyBjYW4gYWxzbyByYWlzZSBvbiByZXRyaWV2YWwu
CiAgICAgW1NldHRlck1heVRocm93TGVnYWN5RXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5n
PyBub2RlVmFsdWU7CiAKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgbm9k
ZVR5cGU7CisgICAgW0RPTUpJVCwgQ3VzdG9tR2V0dGVyXSByZWFkb25seSBhdHRyaWJ1dGUgdW5z
aWduZWQgc2hvcnQgbm9kZVR5cGU7CiAgICAgW0RPTUpJVF0gcmVhZG9ubHkgYXR0cmlidXRlIE5v
ZGU/IHBhcmVudE5vZGU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5vZGVMaXN0IGNoaWxkTm9k
ZXM7CiAgICAgW0RPTUpJVF0gcmVhZG9ubHkgYXR0cmlidXRlIE5vZGU/IGZpcnN0Q2hpbGQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZUNvbnN0YW50cy5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVDb25zdGFudHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYmJkYzc4MTI0NWEwZDU4OWIx
MTVjYTMzMjgxM2NiNzljYWE2MjVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGVDb25zdGFudHMuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RydWN0IE5vZGVDb25zdGFudHMgeworICAgIGVudW0gTm9kZVR5cGUgeworICAg
ICAgICBFTEVNRU5UX05PREUgPSAxLAorICAgICAgICBBVFRSSUJVVEVfTk9ERSA9IDIsCisgICAg
ICAgIFRFWFRfTk9ERSA9IDMsCisgICAgICAgIENEQVRBX1NFQ1RJT05fTk9ERSA9IDQsCisgICAg
ICAgIFBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERSA9IDcsCisgICAgICAgIENPTU1FTlRfTk9E
RSA9IDgsCisgICAgICAgIERPQ1VNRU5UX05PREUgPSA5LAorICAgICAgICBET0NVTUVOVF9UWVBF
X05PREUgPSAxMCwKKyAgICAgICAgRE9DVU1FTlRfRlJBR01FTlRfTk9ERSA9IDExLAorICAgIH07
CisKKyAgICBlbnVtIERlcHJlY2F0ZWROb2RlVHlwZSB7CisgICAgICAgIEVOVElUWV9SRUZFUkVO
Q0VfTk9ERSA9IDUsCisgICAgICAgIEVOVElUWV9OT0RFID0gNiwKKyAgICAgICAgTk9UQVRJT05f
Tk9ERSA9IDEyLAorICAgIH07CisKKyAgICBzdGF0aWMgY29uc3QgdWludDhfdCBMYXN0Tm9kZVR5
cGUgPSBOT1RBVElPTl9OT0RFOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6Tm9kZVR5
cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU05vZGVET01KSVQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5jcHAKaW5kZXggYTc5ZjA5NTEyNmQ0
NWZmYmJhZjg0NTBiNmY4ZDgwYTA1ODk1ZmY0YS4uYjUwZDI0ZTlhMzNjNWEzZWI3OGI4YjcxNTJk
ODM4M2JlZjdkZDEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9taml0L0pTTm9kZURP
TUpJVC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5jcHAKQEAg
LTUwLDkgKzUwLDkgQEAgRW5jb2RlZEpTVmFsdWUgdG9XcmFwcGVyU2xvdyhKU0M6OkV4ZWNTdGF0
ZSogZXhlYywgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgV3JhcHBlZE5vZGU+Ci1zdGF0aWMgUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gY3JlYXRl
Q2FsbERPTUZvck9mZnNldEFjY2VzcyhwdHJkaWZmX3Qgb2Zmc2V0LCBJc0NvbnRhaW5lckd1YXJk
UmVxdWlyZW1lbnQgaXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50KQorc3RhdGljIFJlZjxET01K
SVQ6OkNhbGxET01QYXRjaHBvaW50PiBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzKHB0cmRp
ZmZfdCBvZmZzZXQsIElzQ29udGFpbmVyR3VhcmRSZXF1aXJlbWVudCBpc0NvbnRhaW5lckd1YXJk
UmVxdWlyZW1lbnQpCiB7Ci0gICAgUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9
IERPTUpJVDo6UGF0Y2hwb2ludDo6Y3JlYXRlKCk7CisgICAgUmVmPERPTUpJVDo6Q2FsbERPTVBh
dGNocG9pbnQ+IHBhdGNocG9pbnQgPSBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50OjpjcmVhdGUo
KTsKICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOwogICAgIHBhdGNo
cG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IERPTUpJVDo6
UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdCA9
IHBhcmFtc1swXS5qc1ZhbHVlUmVncygpOwpAQCAtOTgsNyArOTgsNyBAQCBSZWY8RE9NSklUOjpQ
YXRjaHBvaW50PiBOb2RlRmlyc3RDaGlsZERPTUpJVDo6Y2hlY2tET00oKQogICAgIHJldHVybiBj
aGVja05vZGUoKTsKIH0KIAotUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZUZpcnN0Q2hpbGRE
T01KSVQ6OmNhbGxET00oKQorUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVGaXJz
dENoaWxkRE9NSklUOjpjYWxsRE9NKCkKIHsKICAgICByZXR1cm4gY3JlYXRlQ2FsbERPTUZvck9m
ZnNldEFjY2VzczxOb2RlPihDQVNUX09GRlNFVChOb2RlKiwgQ29udGFpbmVyTm9kZSopICsgQ29u
dGFpbmVyTm9kZTo6Zmlyc3RDaGlsZE1lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVx
dWlyZW1lbnQ6OlJlcXVpcmVkKTsKIH0KQEAgLTEwOSw3ICsxMDksNyBAQCBSZWY8RE9NSklUOjpQ
YXRjaHBvaW50PiBOb2RlTGFzdENoaWxkRE9NSklUOjpjaGVja0RPTSgpCiAgICAgcmV0dXJuIGNo
ZWNrTm9kZSgpOwogfQogCi1SZWY8RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlTGFzdENoaWxkRE9N
SklUOjpjYWxsRE9NKCkKK1JlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBOb2RlTGFzdENo
aWxkRE9NSklUOjpjYWxsRE9NKCkKIHsKICAgICByZXR1cm4gY3JlYXRlQ2FsbERPTUZvck9mZnNl
dEFjY2VzczxOb2RlPihDQVNUX09GRlNFVChOb2RlKiwgQ29udGFpbmVyTm9kZSopICsgQ29udGFp
bmVyTm9kZTo6bGFzdENoaWxkTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1aXJl
bWVudDo6UmVxdWlyZWQpOwogfQpAQCAtMTIwLDcgKzEyMCw3IEBAIFJlZjxET01KSVQ6OlBhdGNo
cG9pbnQ+IE5vZGVOZXh0U2libGluZ0RPTUpJVDo6Y2hlY2tET00oKQogICAgIHJldHVybiBjaGVj
a05vZGUoKTsKIH0KIAotUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZU5leHRTaWJsaW5nRE9N
SklUOjpjYWxsRE9NKCkKK1JlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBOb2RlTmV4dFNp
YmxpbmdET01KSVQ6OmNhbGxET00oKQogewogICAgIHJldHVybiBjcmVhdGVDYWxsRE9NRm9yT2Zm
c2V0QWNjZXNzPE5vZGU+KE5vZGU6Om5leHRTaWJsaW5nTWVtb3J5T2Zmc2V0KCksIElzQ29udGFp
bmVyR3VhcmRSZXF1aXJlbWVudDo6Tm90UmVxdWlyZWQpOwogfQpAQCAtMTMxLDcgKzEzMSw3IEBA
IFJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6OmNoZWNr
RE9NKCkKICAgICByZXR1cm4gY2hlY2tOb2RlKCk7CiB9CiAKLVJlZjxET01KSVQ6OlBhdGNocG9p
bnQ+IE5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6OmNhbGxET00oKQorUmVmPERPTUpJVDo6Q2Fs
bERPTVBhdGNocG9pbnQ+IE5vZGVQcmV2aW91c1NpYmxpbmdET01KSVQ6OmNhbGxET00oKQogewog
ICAgIHJldHVybiBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KE5vZGU6OnByZXZp
b3VzU2libGluZ01lbW9yeU9mZnNldCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6Ok5v
dFJlcXVpcmVkKTsKIH0KQEAgLTE0MiwxMSArMTQyLDMyIEBAIFJlZjxET01KSVQ6OlBhdGNocG9p
bnQ+IE5vZGVQYXJlbnROb2RlRE9NSklUOjpjaGVja0RPTSgpCiAgICAgcmV0dXJuIGNoZWNrTm9k
ZSgpOwogfQogCi1SZWY8RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlUGFyZW50Tm9kZURPTUpJVDo6
Y2FsbERPTSgpCitSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gTm9kZVBhcmVudE5vZGVE
T01KSVQ6OmNhbGxET00oKQogewogICAgIHJldHVybiBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNj
ZXNzPENvbnRhaW5lck5vZGU+KE5vZGU6OnBhcmVudE5vZGVNZW1vcnlPZmZzZXQoKSwgSXNDb250
YWluZXJHdWFyZFJlcXVpcmVtZW50OjpOb3RSZXF1aXJlZCk7CiB9CiAKKy8vIE5vZGUjbm9kZVR5
cGUuCitSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlTm9kZVR5cGVET01KSVQ6OmNoZWNrRE9N
KCkKK3sKKyAgICByZXR1cm4gY2hlY2tOb2RlKCk7Cit9CisKK1JlZjxET01KSVQ6OkNhbGxET01Q
YXRjaHBvaW50PiBOb2RlTm9kZVR5cGVET01KSVQ6OmNhbGxET00oKQoreworICAgIFJlZjxET01K
SVQ6OkNhbGxET01QYXRjaHBvaW50PiBwYXRjaHBvaW50ID0gRE9NSklUOjpDYWxsRE9NUGF0Y2hw
b2ludDo6Y3JlYXRlKCk7CisgICAgcGF0Y2hwb2ludC0+cmVxdWlyZUdsb2JhbE9iamVjdCA9IGZh
bHNlOworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0oQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0IERPTUpJVDo6UGF0Y2hwb2ludFBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgIEpTVmFs
dWVSZWdzIHJlc3VsdCA9IHBhcmFtc1swXS5qc1ZhbHVlUmVncygpOworICAgICAgICBHUFJSZWcg
bm9kZSA9IHBhcmFtc1sxXS5ncHIoKTsKKyAgICAgICAgaml0LmxvYWQ4KENDYWxsSGVscGVyczo6
QWRkcmVzcyhub2RlLCBKU0M6OkpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCByZXN1bHQu
cGF5bG9hZEdQUigpKTsKKyAgICAgICAgaml0LmFuZDMyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKEpTTm9kZVR5cGVNYXNrKSwgcmVzdWx0LnBheWxvYWRHUFIoKSk7CisgICAgICAgIGppdC5i
b3hJbnQzMihyZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQpOworICAgICAgICByZXR1cm4gQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCgpOworICAgIH0pOworICAgIHJldHVybiBwYXRjaHBvaW50Owor
fQorCiB9CiAKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291381</attachid>
            <date>2016-10-12 12:12:14 -0700</date>
            <delta_ts>2016-10-12 13:19:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163245-20161012120850.patch</filename>
            <type>text/plain</type>
            <size>50476</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
Y2E5YjY1MmM4OGQ2NzRlMDUyZDI1ZWU0ZDQyNWIwNGM5NmFhNTJkLi5hODVhMGUwNzUxNTljZmQz
NDBkZTI3Y2VhOTZmOGFhYTkzOTA3ZDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAxNi0xMC0xMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRE9NSklUXVtKU0NdIEV4cGxvcmUgdGhlIHdheSB0byBlbWJlZCBu
b2RlVHlwZSBpbnRvIEpTQzo6SlNUeXBlIGluIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzI0NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHJlc2VydmUgdGhlIGhpZ2hlc3QgYml0IG9m
IEpTQzo6SlNUeXBlIGZvciBleHRlbnNpb25zIG91dCBzaWRlIEpTQy4KKyAgICAgICAgSlNDIGRv
ZXMgbm90IHVzZSBKU1R5cGUgYml0cyBzbyBtYW55OiBvbmx5IDUyIHR5cGVzIGFyZSBkZWZpbmVk
LgorCisgICAgICAgIEFuZCB3ZSBleHRlbmQgQ2FsbERPTSBwYXRjaHBvaW50IHRvIGNsYWltIHRo
YXQgaXQgZG9lcyBub3QgcmVxdWlyZSBhIGdsb2JhbCBvYmplY3QuCisgICAgICAgIFRoaXMgZ2xv
YmFsIG9iamVjdCBpcyB1c2VkIHRvIGdlbmVyYXRlIERPTSB3cmFwcGVyLiBIb3dldmVyLCBub2Rl
VHlwZSBkb2VzIG5vdCByZXF1aXJlCisgICAgICAgIGl0IHNpbmNlIGl0IGp1c3QgcmV0dXJucyBp
bnRlZ2VyLiBJbiB0aGUgZnV0dXJlLCB3ZSB3aWxsIGV4dGVuZCB0byBDYWxsRE9NIHRvIGNsYWlt
CisgICAgICAgIGl0cyByZXN1bHQgdHlwZS4gQW5kIGF0IHRoYXQgdGltZSwgd2UgY2FuIGRlY2lk
ZSB0aGlzIGNvbmRpdGlvbiBhdXRvbWF0aWNhbGx5IGFjY29yZGluZworICAgICAgICB0byB0aGUg
cmVzdWx0IHR5cGUuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVEdldHRlcik6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgICogZGZnL0RG
R05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNDaGVja0RPTVBhdGNocG9pbnQp
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNoZWNrRE9NUGF0Y2hwb2ludCk6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2FsbERPTVBhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpE
Rkc6Ok5vZGU6OmNhbGxET01QYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpo
YXNET01KSVQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmRvbUpJVCk6IERl
bGV0ZWQuCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET00pOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tET00pOgorICAgICAgICAqIGRvbWppdC9E
T01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZG9taml0L0RPTUpJVEdldHRlclNldHRlci5oLgorICAgICAgICAoSlNDOjpET01KSVQ6OkNh
bGxET01QYXRjaHBvaW50OjpjcmVhdGUpOgorICAgICAgICAqIGRvbWppdC9ET01KSVRHZXR0ZXJT
ZXR0ZXIuaDoKKyAgICAgICAgKiBkb21qaXQvRE9NSklUUGF0Y2hwb2ludC5oOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlQ2hlY2tET00pOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlQ2FsbERPTSk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKiBs
bGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6cGVyZm9ybUFz
c2VydGlvbnMpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisKIDIwMTYtMTAtMTEgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0RPTUpJVF0gRE9NSklUOjpQYXRjaHBv
aW50IHNob3VsZCBoYXZlIGEgd2F5IHRvIHJlY2VpdmUgY29uc3RhbnQgZm9sZGVkIGFyZ3VtZW50
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IGEwMGUxNzNiMTYyN2QxODdhNDJiNjYwYzhlOTBlM2Q3MGUxOGQ1N2Qu
LjczNDdhYjg4ZDUxMmIwYTlmZGNkYTBjMWJkZDM5MzAyNTdiMGY4YWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw1NSBAQAorMjAxNi0xMC0xMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KKworICAgICAgICBbRE9NSklUXVtKU0NdIEV4cGxvcmUgdGhlIHdheSB0byBlbWJl
ZCBub2RlVHlwZSBpbnRvIEpTQzo6SlNUeXBlIGluIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzI0NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vZGUubm9kZVR5cGUgYWNjZXNzb3IgaXMg
c28gZnJlcXVlbnRseSBjYWxsZWQuIEZvciBleGFtcGxlLCBqUXVlcnkncyAkIGZ1bmN0aW9uIHVz
ZXMKKyAgICAgICAgdGhpcyB0byBkaXN0aW5ndWlzaCBET00gb2JqZWN0cyBmcm9tIHRoZSBvdGhl
ciBKUyBvYmplY3RzLiBTbyBldmVyeSB0aW1lIHlvdSBjYWxsIGAkKGRvbSlgLAorICAgICAgICBu
b2RlVHlwZSBhY2Nlc3NvciBpcyBjYWxsZWQuIEluIGFkZGl0aW9uIHRvIHRoYXQsIGpRdWVyeSdz
IHByZXYsIG5leHQsIHBhcmVudCBldGMuIGFsc28gdXNlcworICAgICAgICB0aGlzIGBub2RlVHlw
ZWAuIEFuZCBFbWJlci5qcyBhbHNvIHVzZXMgaXQuIEFuZCAuLi4gU28gdGhpcyBmdW5jdGlvbiBp
cyBzdXBlciBjcml0aWNhbCBmb3IgRE9NCisgICAgICAgIHBlcmZvcm1hbmNlLgorCisgICAgICAg
IFRoZSBjaGFsbGVuZ2UgaXMgdGhhdCB0aGVyZSBpcyBubyByb29tIGZvciBwdXR0aW5nIE5vZGVU
eXBlIGludG8gQysrIE5vZGUgY2xhc3MuIE5vZGUgY2xhc3MKKyAgICAgICAgaGFzIDMyYml0IGZp
ZWxkIHRvIHN0b3JlIHNvbWUgZGF0YS4gSG93ZXZlciwgdGhlc2UgYml0cyBhcmUgYWxyZWFkeSBl
eGhhdXN0ZWQuIEV4dGVuZGluZworICAgICAgICBOb2RlIGNsYXNzIGlzIHVuYWNjZXB0YWJsZSBz
aW5jZSBpdCBzaWduaWZpY2FudGx5IGVubGFyZ2VzIG1lbW9yeSBjb25zdW1wdGlvbiBvZiBXZWJL
aXQgKE5vZGUKKyAgICAgICAgaXMgZXZlcnl3aGVyZSEpLiBVbmZvcnR1bmF0ZWx5LCBjdXJyZW50
IE5vZGU6Om5vZGVUeXBlIGlzIGltcGxlbWVudGVkIGFzIHZpcnR1YWwgZnVuY3Rpb24KKyAgICAg
ICAgZXZlbiB0aG91Z2ggdGhpcyBmdW5jdGlvbiBpcyBmcmVxdWVudGx5IGNhbGxlZCBmcm9tIEpT
IHdvcmxkLgorCisgICAgICAgIEludGVyZXN0aW5nbHksIHdlIGFscmVhZHkgc3RvcmUgc29tZSBk
dXBsaWNhdGUgZGF0YSBpbiBKU09iamVjdCwgSlNDOjpKU1R5cGUuIFdlYkNvcmUgYWxyZWFkeQor
ICAgICAgICBleHRlbmRzIGl0IHdpdGggSlNFbGVtZW50VHlwZSwgSlNOb2RlVHlwZSwgYW5kIEpT
RG9jdW1lbnRXcmFwcGVyVHlwZS4gQW5kIHRoZXNlIHR5cGVzIGFyZQorICAgICAgICBjb3JyZXNw
b25kaW5nIHRvIGEgc3BlY2lmaWMgTm9kZVR5cGUuIEZvciBleGFtcGxlLCBKU0VsZW1lbnRUeXBl
IHNob3VsZCBoYXZlIEVMRU1FTlRfTk9ERSB0eXBlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZnVy
dGhlciBleHRlbmRzIHRoaXMgSlNDOjpKU1R5cGUgaW4gV2ViQ29yZSBzaWRlIHNhZmVseS4gQW5k
IGF0IHRoYXQgdGltZSwgd2UKKyAgICAgICAgZW1iZWQgTm9kZVR5cGUgYml0cyBpbnRvIEpTQzo6
SlNUeXBlLiBUaGlzIGRlc2lnbiBvZmZlcnMgc2lnbmlmaWNhbnRseSBmYXN0ZXIgbm9kZVR5cGUK
KyAgICAgICAgaW1wbGVtZW50YXRpb24uIEZ1cnRoZXJtb3JlLCBpdCBtYWtlcyBET01KSVQgZWFz
eSBmb3Igbm9kZVR5cGUgYWNjZXNzb3IuCisKKyAgICAgICAgRXZlbiB3aXRob3V0IHRoZSBJQyBj
aGFuZ2VbMV0sIERyb21hZW8gZG9tLXF1ZXJ5IHNob3dzIDggLSAxMCUgaW1wcm92ZW1lbnQsCisg
ICAgICAgIDE0NTIuOTYgcnVucy9zIHZzIDE1NzguNTYgcnVucy9zLiBXZSBjYW4gZXhwZWN0IHRo
YXQgdGhpcyBpbXByb3ZlbWVudCB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlCisgICAgICAgIG90aGVy
IGJlbmNobWFya3MgLyByZWFsIGFwcGxpY2F0aW9ucyB3aGVuIHRoZSBJQyBjaGFuZ2UgaXMgbGFu
ZGVkLgorCisgICAgICAgIFsxXTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MzIyNgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTTm9kZUN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlOjpub2RlVHlw
ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAg
ICAgIChHZXRKU1R5cGVGb3JOb2RlKToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAg
ICAgKiBkb20vTm9kZS5pZGw6CisgICAgICAgICogZG9tL05vZGVDb25zdGFudHMuaDogQ29waWVk
IGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRHZXR0ZXJTZXR0ZXIuaC4K
KyAgICAgICAgKiBkb21qaXQvSlNOb2RlRE9NSklULmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUZpcnN0
Q2hpbGRET01KSVQ6OmNhbGxET00pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxhc3RDaGlsZERP
TUpJVDo6Y2FsbERPTSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTmV4dFNpYmxpbmdET01KSVQ6
OmNhbGxET00pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVByZXZpb3VzU2libGluZ0RPTUpJVDo6
Y2FsbERPTSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUGFyZW50Tm9kZURPTUpJVDo6Y2FsbERP
TSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTm9kZVR5cGVET01KSVQ6OmNoZWNrRE9NKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGVOb2RlVHlwZURPTUpJVDo6Y2FsbERPTSk6CisKIDIwMTYtMTAt
MTEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0RP
TUpJVF0gRE9NSklUOjpQYXRjaHBvaW50IHNob3VsZCBoYXZlIGEgd2F5IHRvIHJlY2VpdmUgY29u
c3RhbnQgZm9sZGVkIGFyZ3VtZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4
ZTdiZTY3MmY0MThiYmJjNjQzMjUzMGFlNmJlNjZiYjgyY2ZhZDhjLi44ZjE3NjQxYTJjY2M2YzNm
NWU3OTUzNGIwMzVhZTNkN2ZmYTE4ZGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMjA5Niw2ICsyMDk2LDcgQEAKIAkJRTMzRjUwODUxQjg0MzdBMDAwNDEzODU2IC8qIEpTSW50
ZXJuYWxQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzM0Y1MDgzMUI4NDM3QTAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlz
ZURlZmVycmVkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRTMzRjUwODcxQjg0NDlFRjAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzNGNTA4NjFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rv
ci5sdXQuaCAqLzsgfTsKIAkJRTM1NDYyMkIxQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFi
aWxpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
NTQ2MjJBMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmlsaXR5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM1NTVCOEExREFFMDNBNTAw
RjM2OTIxIC8qIERPTUpJVENhbGxET01QYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU1NUI4OTFEQUUwM0EyMDBGMzY5MjEgLyogRE9N
SklUQ2FsbERPTVBhdGNocG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzU1RjM1MjFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVy
UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzNTVGMzUwMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUuY3Bw
ICovOyB9OwogCQlFMzU1RjM1MzFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyUHJvdG90
eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU1
RjM1MTFCN0RDODUzMDBDNTBEQzUgLyogTW9kdWxlTG9hZGVyUHJvdG90eXBlLmggKi87IH07CiAJ
CUUzNUUwMzVGMUI3QUI0M0UwMDczQUQyQSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmpl
Y3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1
RTAzNUQxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5j
cHAgKi87IH07CkBAIC00Mzk5LDYgKzQ0MDAsNyBAQAogCQlFMzNGNTA4NjFCODQ0OUVGMDA0MTM4
NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzRjUwODgxQjg0NEExQTAwNDEzODU2IC8qIElu
dGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2Ny
aXB0OyBwYXRoID0gSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuanM7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzNTQ2MjJBMUI2MDY1RDEwMDU0NTM4NiAvKiBDb25zdHJ1Y3RBYmls
aXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0cnVjdEFiaWxpdHku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1NTVCODkxREFFMDNBMjAwRjM2OTIx
IC8qIERPTUpJVENhbGxET01QYXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERPTUpJVENhbGxET01QYXRjaHBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzNTVGMzUwMUI3REM4NTMwMEM1MERDNSAvKiBNb2R1bGVMb2FkZXJQcm90b3R5cGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kdWxlTG9hZGVyUHJv
dG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NUYzNTExQjdEQzg1
MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlclByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNb2R1bGVMb2FkZXJQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM1RTAzNUQxQjdBQjQzRTAwNzNBRDJBIC8qIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbk9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNzE5NSw2ICs3MTk3LDcgQEAKIAkJRTNGRjc1MkQxRDlDRTlFQTAwQzdFMTZEIC8q
IGRvbWppdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
RTM1NTVCODkxREFFMDNBMjAwRjM2OTIxIC8qIERPTUpJVENhbGxET01QYXRjaHBvaW50LmggKi8s
CiAJCQkJRTNGRjc1MkYxRDlDRUExMjAwQzdFMTZEIC8qIERPTUpJVEdldHRlclNldHRlci5oICov
LAogCQkJCUUzQzA4RTNCMURBNDFCN0IwMDM5NDc4RiAvKiBET01KSVRQYXRjaHBvaW50LmggKi8s
CiAJCQkJRTM3QUQ4M0ExREE0OTI4MDAwRjNENDEyIC8qIERPTUpJVFBhdGNocG9pbnRQYXJhbXMu
aCAqLywKQEAgLTgwNzIsNiArODA3NSw3IEBACiAJCQkJQTdDMUVBRjAxNzk4N0FCNjAwMjk5REIy
IC8qIENMb29wU3RhY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQyNzBFMTZG
NUNEMDBCMzQ0NjAgLyogSlNTdHJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTg1NTM5MTEx
Qjk5NjgwMDFBRjUxRSAvKiBKU1N0cmluZ0J1aWxkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUz
NTU1QjhBMURBRTAzQTUwMEYzNjkyMSAvKiBET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNzBFQzBFQzMxQUEwRDdEQTAwQjZBQUZBIC8qIEpTU3RyaW5nSXRlcmF0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMDcwQTQ3MUQ1NDNBOEIwMDZFNzIzMiAvKiBDZWxs
Q29udGFpbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjAwQjVBNzE1MkJBQUE3MDA5MUVFNUYg
LyogSlNTdHJpbmdKb2luZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA4OTNiODI0NzcyOWI4NjFjMTZk
ODAxZWEzMWU2YTc4NmFmOWYyZjU3Li5iZThkM2YwMjc2ZjQ1Mjg3MWI3NTU0OGEwYjM3YjVlYzhj
M2I5MGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcApAQCAtMjY4NywxMiArMjY4NywxOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVET01KSVRHZXR0ZXIoaW50IHJlc3VsdE9wZXJhbmQsIGNvbnN0IEdldEJ5SWRWYXJpYW50Jgog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJ
bmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQuc3RydWN0dXJlU2V0KCkpKSwgdGhp
c05vZGUpOwogCisgICAgUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tET01QYXRjaHBvaW50
ID0gZG9tSklULT5jaGVja0RPTSgpOworICAgIG1fZ3JhcGgubV9kb21KSVRQYXRjaHBvaW50cy5h
cHBlbmQoY2hlY2tET01QYXRjaHBvaW50LnB0cigpKTsKICAgICAvLyBXZSBkbyBub3QgbmVlZCB0
byBlbWl0IENoZWNrQ2VsbCB0aGluZ3kgaGVyZS4gV2hlbiB0aGUgY3VzdG9tIGFjY2Vzc29yIGlz
IHJlcGxhY2VkIHRvIGRpZmZlcmVudCBvbmUsIFN0cnVjdHVyZSB0cmFuc2l0aW9uIG9jY3Vycy4K
LSAgICBhZGRUb0dyYXBoKENoZWNrRE9NLCBPcEluZm8oZG9tSklUKSwgT3BJbmZvKGRvbUpJVC0+
dGhpc0NsYXNzSW5mbygpKSwgdGhpc05vZGUpOwotICAgIE5vZGUqIGdsb2JhbE9iamVjdCA9IGFk
ZFRvR3JhcGgoR2V0R2xvYmFsT2JqZWN0LCB0aGlzTm9kZSk7Ci0gICAgYWRkVmFyQXJnQ2hpbGQo
Z2xvYmFsT2JqZWN0KTsgLy8gR2xvYmFsT2JqZWN0IG9mIHRoaXNOb2RlIGlzIGFsd2F5cyB1c2Vk
IHRvIGNyZWF0ZSBhIERPTVdyYXBwZXIuCisgICAgYWRkVG9HcmFwaChDaGVja0RPTSwgT3BJbmZv
KGNoZWNrRE9NUGF0Y2hwb2ludC5wdHIoKSksIE9wSW5mbyhkb21KSVQtPnRoaXNDbGFzc0luZm8o
KSksIHRoaXNOb2RlKTsKKworICAgIFJlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBjYWxs
RE9NUGF0Y2hwb2ludCA9IGRvbUpJVC0+Y2FsbERPTSgpOworICAgIG1fZ3JhcGgubV9kb21KSVRQ
YXRjaHBvaW50cy5hcHBlbmQoY2FsbERPTVBhdGNocG9pbnQucHRyKCkpOworICAgIGlmIChjYWxs
RE9NUGF0Y2hwb2ludC0+cmVxdWlyZUdsb2JhbE9iamVjdCkgeworICAgICAgICBOb2RlKiBnbG9i
YWxPYmplY3QgPSBhZGRUb0dyYXBoKEdldEdsb2JhbE9iamVjdCwgdGhpc05vZGUpOworICAgICAg
ICBhZGRWYXJBcmdDaGlsZChnbG9iYWxPYmplY3QpOyAvLyBHbG9iYWxPYmplY3Qgb2YgdGhpc05v
ZGUgaXMgYWx3YXlzIHVzZWQgdG8gY3JlYXRlIGEgRE9NV3JhcHBlci4KKyAgICB9CiAgICAgYWRk
VmFyQXJnQ2hpbGQodGhpc05vZGUpOwotICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3Bl
cmFuZCksIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBDYWxsRE9NLCBPcEluZm8oZG9tSklUKSwg
T3BJbmZvKHByZWRpY3Rpb24pKSk7CisgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVy
YW5kKSwgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIENhbGxET00sIE9wSW5mbyhjYWxsRE9NUGF0
Y2hwb2ludC5wdHIoKSksIE9wSW5mbyhwcmVkaWN0aW9uKSkpOwogICAgIHJldHVybiB0cnVlOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCAx
NDRmMjY1MjMzNTg5M2ZiMWQyNzEyOTBhNmRjZDlmZjMxOWUyYjBjLi41NmNiNTdhODcxZjQwMzZh
ZWYyMTI5ZWRkNWE3MDZlNTVjODA3YmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAKQEAgLTE3MDMsMTAgKzE3MDMsMTQgQEAgY2xhc3MgRml4dXBQaGFz
ZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGNhc2UgQ2FsbERPTToKLSAg
ICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUs
IDApKTsgLy8gR2xvYmFsT2JqZWN0LgotICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihtX2dy
YXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsgLy8gRE9NLgorICAgICAgICBjYXNlIENhbGxET006
IHsKKyAgICAgICAgICAgIGludCBjaGlsZEluZGV4ID0gMDsKKyAgICAgICAgICAgIERPTUpJVDo6
Q2FsbERPTVBhdGNocG9pbnQqIHBhdGNocG9pbnQgPSBub2RlLT5jYWxsRE9NUGF0Y2hwb2ludCgp
OworICAgICAgICAgICAgaWYgKHBhdGNocG9pbnQtPnJlcXVpcmVHbG9iYWxPYmplY3QpCisgICAg
ICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9k
ZSwgY2hpbGRJbmRleCsrKSk7IC8vIEdsb2JhbE9iamVjdC4KKyAgICAgICAgICAgIGZpeEVkZ2U8
Q2VsbFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCBjaGlsZEluZGV4KyspKTsgLy8gRE9N
LgogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KIAogI2lmICFBU1NFUlRfRElTQUJMRUQK
ICAgICAgICAgLy8gSGF2ZSB0aGVzZSBuby1vcCBjYXNlcyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5v
Ym9keSBmb3JnZXRzIHRvIGFkZCBoYW5kbGVycyBmb3IgbmV3IG9wY29kZXMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggNmJhMjVkOTQwYmJiZGY5NDE1NmQxOWE3ZmMyYzBj
ZjgxOTVjZDkyYi4uOTIzZjYxNWM0NzI1MzUyMGJiMmFiYjZhOGM3NjAxODg3MmY1MzYxOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtOTA0LDYgKzkwNCw3IEBAIGNsYXNz
IEdyYXBoIDogcHVibGljIHZpcnR1YWwgU2Nhbm5hYmxlIHsKICAgICBIYXNoTWFwPENvZGVCbG9j
ayosIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUtpbGxzPj4gbV9ieXRlY29kZUtpbGxzOwogICAg
IEhhc2hTZXQ8c3RkOjpwYWlyPEpTT2JqZWN0KiwgUHJvcGVydHlPZmZzZXQ+PiBtX3NhZmVUb0xv
YWQ7CiAgICAgSGFzaE1hcDxQcm9wZXJ0eVR5cGVLZXksIEluZmVycmVkVHlwZTo6RGVzY3JpcHRv
cj4gbV9pbmZlcnJlZFR5cGVzOworICAgIFZlY3RvcjxSZWZQdHI8RE9NSklUOjpQYXRjaHBvaW50
Pj4gbV9kb21KSVRQYXRjaHBvaW50czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RG9taW5hdG9ycz4g
bV9kb21pbmF0b3JzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQcmVQb3N0TnVtYmVyaW5nPiBtX3By
ZVBvc3ROdW1iZXJpbmc7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5hdHVyYWxMb29wcz4gbV9uYXR1
cmFsTG9vcHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDQyMzdhNTI2MjQ5
OTIxZDAzZmNiYTZmODhiYjA2NTZhN2U2YjE3ZjAuLmIxNTlmODY5M2JhN2IzNzJkODJmM2M0MGE1
YjM4ODVkNGVkYTViZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC01OSw3
ICs1OSw4IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIERPTUpJVCB7Ci1jbGFzcyBH
ZXR0ZXJTZXR0ZXI7CitjbGFzcyBQYXRjaHBvaW50OworY2xhc3MgQ2FsbERPTVBhdGNocG9pbnQ7
CiB9CiAKIG5hbWVzcGFjZSBQcm9maWxlciB7CkBAIC0yMzE0LDE1ICsyMzE1LDI2IEBAIHN0cnVj
dCBOb2RlIHsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPEJhc2ljQmxvY2tMb2NhdGlvbio+
KCk7CiAgICAgfQogCi0gICAgYm9vbCBoYXNET01KSVQoKSBjb25zdAorICAgIGJvb2wgaGFzQ2hl
Y2tET01QYXRjaHBvaW50KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBvcCgpID09IENo
ZWNrRE9NIHx8IG9wKCkgPT0gQ2FsbERPTTsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gQ2hlY2tE
T007CisgICAgfQorCisgICAgRE9NSklUOjpQYXRjaHBvaW50KiBjaGVja0RPTVBhdGNocG9pbnQo
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0NoZWNrRE9NUGF0Y2hwb2ludCgpKTsKKyAgICAg
ICAgcmV0dXJuIG1fb3BJbmZvLmFzPERPTUpJVDo6UGF0Y2hwb2ludCo+KCk7CisgICAgfQorCisg
ICAgYm9vbCBoYXNDYWxsRE9NUGF0Y2hwb2ludCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gb3AoKSA9PSBDYWxsRE9NOwogICAgIH0KIAotICAgIERPTUpJVDo6R2V0dGVyU2V0dGVyKiBk
b21KSVQoKQorICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIGNhbGxET01QYXRjaHBvaW50
KCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChoYXNET01KSVQoKSk7Ci0gICAgICAgIHJldHVybiBt
X29wSW5mby5hczxET01KSVQ6OkdldHRlclNldHRlcio+KCk7CisgICAgICAgIEFTU0VSVChoYXND
YWxsRE9NUGF0Y2hwb2ludCgpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPERPTUpJVDo6
Q2FsbERPTVBhdGNocG9pbnQqPigpOwogICAgIH0KIAogICAgIGJvb2wgaGFzQ2xhc3NJbmZvKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKaW5kZXggOGRmNTE0MDg4ZTMyZWFjYjM1ZjkyYzJjZTI1NzNhOGY2MWE4MGFhMi4uMGFmNWY3
OGE3YmM1MjkxYjU3ZWVlMTkxMzRiMzdmN2U2MjU5YjNiOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTcxMzAsMjkgKzcxMzAsMzMg
QEAgc3RhdGljIHZvaWQgYWxsb2NhdGVUZW1wb3JhcnlSZWdpc3RlcnNGb3JQYXRjaHBvaW50KFNw
ZWN1bGF0aXZlSklUKiBqaXQsIFZlY3RvcjwKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUNhbGxET00oTm9kZSogbm9kZSkKIHsKLSAgICBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBwYXRj
aHBvaW50ID0gbm9kZS0+ZG9tSklUKCktPmNhbGxET00oKTsKKyAgICBET01KSVQ6OkNhbGxET01Q
YXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2FsbERPTVBhdGNocG9pbnQoKTsKIAogICAg
IFZlY3RvcjxHUFJSZWc+IGdwU2NyYXRjaDsKICAgICBWZWN0b3I8RlBSUmVnPiBmcFNjcmF0Y2g7
CiAgICAgVmVjdG9yPERPTUpJVDo6VmFsdWU+IHJlZ3M7CiAKLSAgICAvLyBGSVhNRTogcGF0Y2hw
b2ludCBzaG91bGQgaGF2ZSBhIHdheSB0byB0ZWxsIHRoaXMgY2FuIHJldXNlICJiYXNlIiByZWdp
c3Rlci4KLSAgICAvLyBUZWFjaGluZyBERkcgYWJvdXQgRE9NSklUOjpQYXRjaHBvaW50IGNsb2Ji
ZXIgaW5mb3JtYXRpb24gaXMgbmljZS4KLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBnbG9iYWxP
YmplY3QodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAwKSk7Ci0gICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5v
ZGUsIDEpKTsKICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7Ci0KICAgICBy
ZWdzLmFwcGVuZChyZXN1bHQucmVncygpKTsKLSAgICByZWdzLmFwcGVuZChET01KSVQ6OlZhbHVl
KGdsb2JhbE9iamVjdC5ncHIoKSwgbV9zdGF0ZS5mb3JOb2RlKG1faml0LmdyYXBoKCkudmFyQXJn
Q2hpbGQobm9kZSwgMCkpLnZhbHVlKCkpKTsKLSAgICByZWdzLmFwcGVuZChET01KSVQ6OlZhbHVl
KGJhc2UuZ3ByKCksIG1fc3RhdGUuZm9yTm9kZShtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5v
ZGUsIDEpKS52YWx1ZSgpKSk7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICByZWdzLmFwcGVuZChz
dGF0aWNfY2FzdDxHUFJSZWc+KEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgIHJlZ3Mu
YXBwZW5kKHN0YXRpY19jYXN0PEdQUlJlZz4oR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVy
KSk7Ci0jZW5kaWYKKworICAgIGludCBjaGlsZEluZGV4ID0gMDsKKworICAgIE9wdGlvbmFsPFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kPiBnbG9iYWxPYmplY3Q7CisgICAgaWYgKHBhdGNocG9pbnQtPnJl
cXVpcmVHbG9iYWxPYmplY3QpIHsKKyAgICAgICAgRWRnZSYgZ2xvYmFsT2JqZWN0RWRnZSA9IG1f
aml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgY2hpbGRJbmRleCsrKTsKKyAgICAgICAgZ2xv
YmFsT2JqZWN0ID0gU3BlY3VsYXRlQ2VsbE9wZXJhbmQodGhpcywgZ2xvYmFsT2JqZWN0RWRnZSk7
CisgICAgICAgIHJlZ3MuYXBwZW5kKERPTUpJVDo6VmFsdWUoZ2xvYmFsT2JqZWN0LT5ncHIoKSwg
bV9zdGF0ZS5mb3JOb2RlKGdsb2JhbE9iamVjdEVkZ2UpLnZhbHVlKCkpKTsKKyAgICB9CisKKyAg
ICAvLyBGSVhNRTogcGF0Y2hwb2ludCBzaG91bGQgaGF2ZSBhIHdheSB0byB0ZWxsIHRoaXMgY2Fu
IHJldXNlICJiYXNlIiByZWdpc3Rlci4KKyAgICAvLyBUZWFjaGluZyBERkcgYWJvdXQgRE9NSklU
OjpQYXRjaHBvaW50IGNsb2JiZXIgaW5mb3JtYXRpb24gaXMgbmljZS4KKyAgICBFZGdlJiBiYXNl
RWRnZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgY2hpbGRJbmRleCsrKTsKKyAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIGJhc2VFZGdlKTsKKyAgICByZWdzLmFw
cGVuZChET01KSVQ6OlZhbHVlKGJhc2UuZ3ByKCksIG1fc3RhdGUuZm9yTm9kZShiYXNlRWRnZSku
dmFsdWUoKSkpOwogCiAgICAgVmVjdG9yPEdQUlRlbXBvcmFyeT4gZ3BUZW1wcmFyaWVzOwogICAg
IFZlY3RvcjxGUFJUZW1wb3Jhcnk+IGZwVGVtcHJhcmllczsKLSAgICBhbGxvY2F0ZVRlbXBvcmFy
eVJlZ2lzdGVyc0ZvclBhdGNocG9pbnQodGhpcywgZ3BUZW1wcmFyaWVzLCBmcFRlbXByYXJpZXMs
IGdwU2NyYXRjaCwgZnBTY3JhdGNoLCBwYXRjaHBvaW50LmdldCgpKTsKKyAgICBhbGxvY2F0ZVRl
bXBvcmFyeVJlZ2lzdGVyc0ZvclBhdGNocG9pbnQodGhpcywgZ3BUZW1wcmFyaWVzLCBmcFRlbXBy
YXJpZXMsIGdwU2NyYXRjaCwgZnBTY3JhdGNoLCAqcGF0Y2hwb2ludCk7CiAgICAgRE9NSklUUGF0
Y2hwb2ludFBhcmFtcyBwYXJhbXModGhpcywgV1RGTW92ZShyZWdzKSwgV1RGTW92ZShncFNjcmF0
Y2gpLCBXVEZNb3ZlKGZwU2NyYXRjaCkpOwogICAgIHBhdGNocG9pbnQtPmdlbmVyYXRvcigpLT5y
dW4obV9qaXQsIHBhcmFtcyk7CiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQucmVncygpLCBub2Rl
KTsKQEAgLTcxNjEsNyArNzE2NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxs
RE9NKE5vZGUqIG5vZGUpCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tET00oTm9k
ZSogbm9kZSkKIHsKICAgICAvLyBGSVhNRTogV2UgY2FuIGFkZCB0aGUgZmFsbGJhY2sgaW1wbGVt
ZW50YXRpb24gdGhhdCBpbmxpbmVzIGpzRHluYW1pY0Nhc3QgdGhpbmdzIGhlcmUuCi0gICAgUmVm
PERPTUpJVDo6UGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IG5vZGUtPmRvbUpJVCgpLT5jaGVja0RP
TSgpOworICAgIERPTUpJVDo6UGF0Y2hwb2ludCogcGF0Y2hwb2ludCA9IG5vZGUtPmNoZWNrRE9N
UGF0Y2hwb2ludCgpOwogCiAgICAgVmVjdG9yPEdQUlJlZz4gZ3BTY3JhdGNoOwogICAgIFZlY3Rv
cjxGUFJSZWc+IGZwU2NyYXRjaDsKQEAgLTcxNzMsNyArNzE3Nyw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVDaGVja0RPTShOb2RlKiBub2RlKQogCiAgICAgVmVjdG9yPEdQUlRlbXBv
cmFyeT4gZ3BUZW1wcmFyaWVzOwogICAgIFZlY3RvcjxGUFJUZW1wb3Jhcnk+IGZwVGVtcHJhcmll
czsKLSAgICBhbGxvY2F0ZVRlbXBvcmFyeVJlZ2lzdGVyc0ZvclBhdGNocG9pbnQodGhpcywgZ3BU
ZW1wcmFyaWVzLCBmcFRlbXByYXJpZXMsIGdwU2NyYXRjaCwgZnBTY3JhdGNoLCBwYXRjaHBvaW50
LmdldCgpKTsKKyAgICBhbGxvY2F0ZVRlbXBvcmFyeVJlZ2lzdGVyc0ZvclBhdGNocG9pbnQodGhp
cywgZ3BUZW1wcmFyaWVzLCBmcFRlbXByYXJpZXMsIGdwU2NyYXRjaCwgZnBTY3JhdGNoLCAqcGF0
Y2hwb2ludCk7CiAKICAgICBET01KSVRQYXRjaHBvaW50UGFyYW1zIHBhcmFtcyh0aGlzLCBXVEZN
b3ZlKHJlZ3MpLCBXVEZNb3ZlKGdwU2NyYXRjaCksIFdURk1vdmUoZnBTY3JhdGNoKSk7CiAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBmYWlsdXJlQ2FzZXMgPSBwYXRjaHBvaW50LT5nZW5lcmF0
b3IoKS0+cnVuKG1faml0LCBwYXJhbXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RvbWppdC9ET01KSVRDYWxsRE9NUGF0Y2hwb2ludC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5NTgyMGM1
YTU5ZDYzZGVkYTQyZjgzZDRmOGI0Nzg1Y2M5YTgzYTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVENhbGxET01QYXRjaHBvaW50LmgKQEAgLTAs
MCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkRPTUpJVFBhdGNo
cG9pbnQuaCIKKyNpbmNsdWRlICJSZWdpc3RlclNldC5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERPTUpJVCB7CisKK2NsYXNzIENhbGxET01QYXRjaHBvaW50IDogcHVibGljIFBhdGNo
cG9pbnQgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8Q2FsbERPTVBhdGNocG9pbnQ+IGNyZWF0
ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWxsRE9NUGF0Y2hwb2lu
dCgpKTsKKyAgICB9CisKKyAgICAvLyBUbyBsb29rIHVwIERPTVdyYXBwZXIgY2FjaGUsIEdsb2Jh
bE9iamVjdCBpcyByZXF1aXJlZC4KKyAgICAvLyBGSVhNRTogTGF0ZXIsIHdlIHdpbGwgZXh0ZW5k
IHRoaXMgcGF0Y2hwb2ludCB0byByZXByZXNlbnQgdGhlIHJlc3VsdCB0eXBlIGJ5IERPTUpJVDo6
U2lnbmF0dXJlLgorICAgIC8vIEFuZCBhZnRlciB0aGF0LCB3ZSB3aWxsIGF1dG9tYXRpY2FsbHkg
cGFzcyBhIGdsb2JhbCBvYmplY3Qgd2hlbiB0aGUgcmVzdWx0IHR5cGUgaW5jbHVkZXMgYSBET00g
d3JhcHBlciB0aGluZy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYyOTgwCisgICAgYm9vbCByZXF1aXJlR2xvYmFsT2JqZWN0IHsgdHJ1ZSB9OworCitw
cml2YXRlOgorICAgIENhbGxET01QYXRjaHBvaW50KCkgPSBkZWZhdWx0OworfTsKKworfSB9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRH
ZXR0ZXJTZXR0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUR2V0dGVy
U2V0dGVyLmgKaW5kZXggYzFlNzM5M2M4MDc0MTQ1NzNkNDZkZjIzZGM5NzIwYjNiZDAwZjQzZS4u
NDRjNDMyMjhmM2I3YmQwMmFkOGYyZTkwYTZiNjQ5NzZjZjIzNjU1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRHZXR0ZXJTZXR0ZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEdldHRlclNldHRlci5oCkBAIC0yNSw3ICsy
NSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRE9NSklUUGF0Y2hwb2ludC5oIgor
I2luY2x1ZGUgIkRPTUpJVENhbGxET01QYXRjaHBvaW50LmgiCiAjaW5jbHVkZSAiUHJvcGVydHlT
bG90LmgiCiAjaW5jbHVkZSAiUHV0UHJvcGVydHlTbG90LmgiCiAjaW5jbHVkZSAiU3BlY3VsYXRl
ZFR5cGUuaCIKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgR2V0dGVyU2V0dGVyIHsKICAgICBjb25z
dCBDbGFzc0luZm8qIHRoaXNDbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiBtX3RoaXNDbGFzc0lu
Zm87IH0KIAogI2lmIEVOQUJMRShKSVQpCi0gICAgdmlydHVhbCBSZWY8RE9NSklUOjpQYXRjaHBv
aW50PiBjYWxsRE9NKCkgPSAwOworICAgIHZpcnR1YWwgUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNo
cG9pbnQ+IGNhbGxET00oKSA9IDA7CiAgICAgdmlydHVhbCBSZWY8RE9NSklUOjpQYXRjaHBvaW50
PiBjaGVja0RPTSgpID0gMDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZG9taml0L0RPTUpJVFBhdGNocG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
b21qaXQvRE9NSklUUGF0Y2hwb2ludC5oCmluZGV4IDJmZGMwOTkwMTBkOTZjYTVkMzAzMTg4YmNi
YzM3ODIyNzg4OGU5YjYuLjM4NjA4ZTI1NjlhMmFjZTY5MTBiMjg5MTkwN2Y1YmRiOGE5NTljNDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUUGF0Y2hwb2lu
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUUGF0Y2hwb2ludC5o
CkBAIC02Miw5ICs2MiwxMCBAQCBjbGFzcyBQYXRjaHBvaW50IDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFBhdGNocG9pbnQ+IHsKICAgICB1aW50OF90IG51bUdQU2NyYXRjaFJlZ2lzdGVy
cyB7IDAgfTsKICAgICB1aW50OF90IG51bUZQU2NyYXRjaFJlZ2lzdGVycyB7IDAgfTsKIAotcHJp
dmF0ZToKK3Byb3RlY3RlZDoKICAgICBQYXRjaHBvaW50KCkgPSBkZWZhdWx0OwogCitwcml2YXRl
OgogICAgIFJlZlB0cjxQYXRjaHBvaW50R2VuZXJhdG9yPiBtX2dlbmVyYXRvcjsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA2ZTc5
NzE3M2MxYzYzNmY2MjM3N2VlYjQyMmI3MzJmMTRhZjFjMzUwLi44MzVhZGQ0ODQxZWJmNjA3MzRi
OTc1ZWY1ZTQyODE0NjRjMTJmYmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCkBAIC04NzI0LDcgKzg3MjQsNyBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgIHsKICAgICAgICAgTFZhbHVlIGNlbGwgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQx
KCkpOwogCi0gICAgICAgIFJlZlB0cjxET01KSVQ6OlBhdGNocG9pbnQ+IGRvbUpJVCA9IG1fbm9k
ZS0+ZG9tSklUKCktPmNoZWNrRE9NKCk7CisgICAgICAgIERPTUpJVDo6UGF0Y2hwb2ludCogZG9t
SklUID0gbV9ub2RlLT5jaGVja0RPTVBhdGNocG9pbnQoKTsKIAogICAgICAgICBQYXRjaHBvaW50
VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KFZvaWQpOwogICAgICAgICBwYXRj
aHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoY2VsbCk7CkBAIC04NzY5LDEzICs4NzY5LDI1IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICB2b2lkIGNvbXBpbGVDYWxsRE9NKCkKICAgICB7
Ci0gICAgICAgIExWYWx1ZSBnbG9iYWxPYmplY3QgPSBsb3dDZWxsKG1fZ3JhcGgudmFyQXJnQ2hp
bGQobV9ub2RlLCAwKSk7Ci0gICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX2dyYXBoLnZh
ckFyZ0NoaWxkKG1fbm9kZSwgMSkpOworICAgICAgICBET01KSVQ6OkNhbGxET01QYXRjaHBvaW50
KiBkb21KSVQgPSBtX25vZGUtPmNhbGxET01QYXRjaHBvaW50KCk7CisgICAgICAgIGludCBjaGls
ZEluZGV4ID0gMDsKKworICAgICAgICBMVmFsdWUgZ2xvYmFsT2JqZWN0OworICAgICAgICBKU1Zh
bHVlIGdsb2JhbE9iamVjdENvbnN0YW50OworICAgICAgICBpZiAoZG9tSklULT5yZXF1aXJlR2xv
YmFsT2JqZWN0KSB7CisgICAgICAgICAgICBFZGdlJiBnbG9iYWxPYmplY3RFZGdlID0gbV9ncmFw
aC52YXJBcmdDaGlsZChtX25vZGUsIGNoaWxkSW5kZXgrKyk7CisgICAgICAgICAgICBnbG9iYWxP
YmplY3QgPSBsb3dDZWxsKGdsb2JhbE9iamVjdEVkZ2UpOworICAgICAgICAgICAgZ2xvYmFsT2Jq
ZWN0Q29uc3RhbnQgPSBtX3N0YXRlLmZvck5vZGUoZ2xvYmFsT2JqZWN0RWRnZSkudmFsdWUoKTsK
KyAgICAgICAgfQorCisgICAgICAgIEVkZ2UmIGJhc2VFZGdlID0gbV9ncmFwaC52YXJBcmdDaGls
ZChtX25vZGUsIGNoaWxkSW5kZXgrKyk7CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChi
YXNlRWRnZSk7CisgICAgICAgIEpTVmFsdWUgYmFzZUNvbnN0YW50ID0gbV9zdGF0ZS5mb3JOb2Rl
KGJhc2VFZGdlKS52YWx1ZSgpOwogCi0gICAgICAgIFJlZlB0cjxET01KSVQ6OlBhdGNocG9pbnQ+
IGRvbUpJVCA9IG1fbm9kZS0+ZG9tSklUKCktPmNhbGxET00oKTsKICAgICAgICAgUGF0Y2hwb2lu
dFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7Ci0gICAgICAgIHBh
dGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihnbG9iYWxPYmplY3QpOwotICAgICAgICBwYXRj
aHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoY2VsbCk7CisgICAgICAgIGlmIChkb21KSVQtPnJl
cXVpcmVHbG9iYWxPYmplY3QpCisgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVn
aXN0ZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lz
dGVyKGJhc2UpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV90YWdNYXNrLCBWYWx1ZVJl
cDo6cmVnKEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmQobV90YWdUeXBlTnVtYmVyLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OnRhZ1R5cGVOdW1i
ZXJSZWdpc3RlcikpOwogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4g
ZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9p
bnQpOwpAQCAtODc4Niw4ICs4Nzk4LDYgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAg
ICBTdGF0ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKICAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9k
ZTsKLSAgICAgICAgSlNWYWx1ZSBjaGlsZDFDb25zdGFudCA9IG1fc3RhdGUuZm9yTm9kZShtX2dy
YXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCkpLnZhbHVlKCk7Ci0gICAgICAgIEpTVmFsdWUgY2hp
bGQyQ29uc3RhbnQgPSBtX3N0YXRlLmZvck5vZGUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUs
IDEpKS52YWx1ZSgpOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAg
ICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJV
c2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKQEAgLTg3OTgsOSArODgwOCwxMSBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IHBhdGNocG9pbnQgc2hvdWxk
IGhhdmUgYSB3YXkgdG8gdGVsbCB0aGlzIGNhbiByZXVzZSAiYmFzZSIgcmVnaXN0ZXIuCiAgICAg
ICAgICAgICAgICAgLy8gVGVhY2hpbmcgREZHIGFib3V0IERPTUpJVDo6UGF0Y2hwb2ludCBjbG9i
YmVyIGluZm9ybWF0aW9uIGlzIG5pY2UuCisgICAgICAgICAgICAgICAgaW50IGNoaWxkSW5kZXgg
PSAxOwogICAgICAgICAgICAgICAgIHJlZ3MuYXBwZW5kKEpTVmFsdWVSZWdzKHBhcmFtc1swXS5n
cHIoKSkpOwotICAgICAgICAgICAgICAgIHJlZ3MuYXBwZW5kKERPTUpJVDo6VmFsdWUocGFyYW1z
WzFdLmdwcigpLCBjaGlsZDFDb25zdGFudCkpOwotICAgICAgICAgICAgICAgIHJlZ3MuYXBwZW5k
KERPTUpJVDo6VmFsdWUocGFyYW1zWzJdLmdwcigpLCBjaGlsZDJDb25zdGFudCkpOworICAgICAg
ICAgICAgICAgIGlmIChkb21KSVQtPnJlcXVpcmVHbG9iYWxPYmplY3QpCisgICAgICAgICAgICAg
ICAgICAgIHJlZ3MuYXBwZW5kKERPTUpJVDo6VmFsdWUocGFyYW1zW2NoaWxkSW5kZXgrK10uZ3By
KCksIGdsb2JhbE9iamVjdENvbnN0YW50KSk7CisgICAgICAgICAgICAgICAgcmVncy5hcHBlbmQo
RE9NSklUOjpWYWx1ZShwYXJhbXNbY2hpbGRJbmRleCsrXS5ncHIoKSwgYmFzZUNvbnN0YW50KSk7
CiAKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZG9tSklULT5udW1H
UFNjcmF0Y2hSZWdpc3RlcnM7ICsraSkKICAgICAgICAgICAgICAgICAgICAgZ3BTY3JhdGNoLmFw
cGVuZChwYXJhbXMuZ3BTY3JhdGNoKGkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggNDI0YjRi
OTc5MTlmYTlmYTQzMGUwZDE4YTk4MDJlZjE3NzViOWIxOS4uMjc0MTJkMzcyMzczMGNhNzVjM2I5
YzVhZjg4ZWQxZWE3M2ZlYTQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTYyMCwxMiArNjIw
LDEzIEBAIGNsYXNzIERPTUpJVEdldHRlciA6IHB1YmxpYyBET01KSVROb2RlIHsKICAgICAgICAg
ICAgIHJldHVybiBwYXRjaHBvaW50OwogICAgICAgICB9CiAKLSAgICAgICAgUmVmPERPTUpJVDo6
UGF0Y2hwb2ludD4gY2FsbERPTSgpIG92ZXJyaWRlCisgICAgICAgIFJlZjxET01KSVQ6OkNhbGxE
T01QYXRjaHBvaW50PiBjYWxsRE9NKCkgb3ZlcnJpZGUKICAgICAgICAgewotICAgICAgICAgICAg
UmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IERPTUpJVDo6UGF0Y2hwb2ludDo6
Y3JlYXRlKCk7CisgICAgICAgICAgICBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gcGF0
Y2hwb2ludCA9IERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ6OmNyZWF0ZSgpOworICAgICAgICAg
ICAgcGF0Y2hwb2ludC0+cmVxdWlyZUdsb2JhbE9iamVjdCA9IGZhbHNlOwogICAgICAgICAgICAg
cGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgRE9N
SklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBKU1ZhbHVl
UmVncyByZXN1bHRzID0gcGFyYW1zWzBdLmpzVmFsdWVSZWdzKCk7Ci0gICAgICAgICAgICAgICAg
R1BSUmVnIGRvbSA9IHBhcmFtc1syXS5ncHIoKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgZG9t
ID0gcGFyYW1zWzFdLmdwcigpOwogCiAgICAgICAgICAgICAgICAgcGFyYW1zLmFkZFNsb3dQYXRo
Q2FsbChqaXQuanVtcCgpLCBqaXQsIHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKCopKEV4ZWNT
dGF0ZSosIHZvaWQqKT4oW10oRXhlY1N0YXRlKiwgdm9pZCogcG9pbnRlcikgewogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHN0YXRpY19jYXN0PERP
TUpJVEdldHRlcio+KHBvaW50ZXIpLT52YWx1ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludERhdGEuY3BwCmluZGV4IGRmYTlhYTk5NzU5OGYzZDQzYmY5YWUzNjAzNDhhZWMw
ZjVmNzkzY2MuLmUxOWY0ZTI5NTljZDFhYmY0MmRlMzk3ZDhlOWEzODc4Nzc0YTVhZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCkBAIC0xNjEsMTYgKzE2MSwx
NiBAQCB2b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKFZNJiB2bSkKICAgICBTVEFUSUNfQVNT
RVJUKEpTRnVuY3Rpb25UeXBlID09IDIzKTsKICAgICBTVEFUSUNfQVNTRVJUKEFycmF5VHlwZSA9
PSAzMSk7CiAgICAgU1RBVElDX0FTU0VSVChEZXJpdmVkQXJyYXlUeXBlID09IDMyKTsKLSAgICBT
VEFUSUNfQVNTRVJUKFByb3h5T2JqZWN0VHlwZSA9PSAxMTYpOwotICAgIFNUQVRJQ19BU1NFUlQo
SW50OEFycmF5VHlwZSA9PSAxMDApOwotICAgIFNUQVRJQ19BU1NFUlQoSW50MTZBcnJheVR5cGUg
PT0gMTAxKTsKLSAgICBTVEFUSUNfQVNTRVJUKEludDMyQXJyYXlUeXBlID09IDEwMik7Ci0gICAg
U1RBVElDX0FTU0VSVChVaW50OEFycmF5VHlwZSA9PSAxMDMpOwotICAgIFNUQVRJQ19BU1NFUlQo
VWludDhDbGFtcGVkQXJyYXlUeXBlID09IDEwNCk7Ci0gICAgU1RBVElDX0FTU0VSVChVaW50MTZB
cnJheVR5cGUgPT0gMTA1KTsKLSAgICBTVEFUSUNfQVNTRVJUKFVpbnQzMkFycmF5VHlwZSA9PSAx
MDYpOwotICAgIFNUQVRJQ19BU1NFUlQoRmxvYXQzMkFycmF5VHlwZSA9PSAxMDcpOwotICAgIFNU
QVRJQ19BU1NFUlQoRmxvYXQ2NEFycmF5VHlwZSA9PSAxMDgpOworICAgIFNUQVRJQ19BU1NFUlQo
UHJveHlPYmplY3RUeXBlID09IDQ5KTsKKyAgICBTVEFUSUNfQVNTRVJUKEludDhBcnJheVR5cGUg
PT0gMzMpOworICAgIFNUQVRJQ19BU1NFUlQoSW50MTZBcnJheVR5cGUgPT0gMzQpOworICAgIFNU
QVRJQ19BU1NFUlQoSW50MzJBcnJheVR5cGUgPT0gMzUpOworICAgIFNUQVRJQ19BU1NFUlQoVWlu
dDhBcnJheVR5cGUgPT0gMzYpOworICAgIFNUQVRJQ19BU1NFUlQoVWludDhDbGFtcGVkQXJyYXlU
eXBlID09IDM3KTsKKyAgICBTVEFUSUNfQVNTRVJUKFVpbnQxNkFycmF5VHlwZSA9PSAzOCk7Cisg
ICAgU1RBVElDX0FTU0VSVChVaW50MzJBcnJheVR5cGUgPT0gMzkpOworICAgIFNUQVRJQ19BU1NF
UlQoRmxvYXQzMkFycmF5VHlwZSA9PSA0MCk7CisgICAgU1RBVElDX0FTU0VSVChGbG9hdDY0QXJy
YXlUeXBlID09IDQxKTsKICAgICBTVEFUSUNfQVNTRVJUKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQg
PT0gMSk7CiAgICAgU1RBVElDX0FTU0VSVChJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlID09
IDIpOwogICAgIFNUQVRJQ19BU1NFUlQoRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPT0gMHg0
MDAwMDAwMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20KaW5kZXggZmIwYzQ3MDQ1ZTY3NGVhMjhlZDVlZDZhNTFhNmY4OTA5NTk0
OWNlMi4uMDAyYTYzYzI5MzVjMzE0OGVmNDI1N2Q3NjM4ODAwNWUzYjI1YjdjMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpA
QCAtMzUwLDE5ICszNTAsMTkgQEAgY29uc3QgRmluYWxPYmplY3RUeXBlID0gMjEKIGNvbnN0IEpT
RnVuY3Rpb25UeXBlID0gMjMKIGNvbnN0IEFycmF5VHlwZSA9IDMxCiBjb25zdCBEZXJpdmVkQXJy
YXlUeXBlID0gMzIKLWNvbnN0IFByb3h5T2JqZWN0VHlwZSA9IDExNgorY29uc3QgUHJveHlPYmpl
Y3RUeXBlID0gNDkKIAogIyBUaGUgdHlwZWQgYXJyYXkgdHlwZXMgbmVlZCB0byBiZSBudW1iZXJl
ZCBpbiBhIHBhcnRpY3VsYXIgb3JkZXIgYmVjYXVzZSBvZiB0aGUgbWFudWFsbHkgd3JpdHRlbgog
IyBzd2l0Y2ggc3RhdGVtZW50IGluIGdldF9ieV92YWwgYW5kIHB1dF9ieV92YWwuCi1jb25zdCBJ
bnQ4QXJyYXlUeXBlID0gMTAwCi1jb25zdCBJbnQxNkFycmF5VHlwZSA9IDEwMQotY29uc3QgSW50
MzJBcnJheVR5cGUgPSAxMDIKLWNvbnN0IFVpbnQ4QXJyYXlUeXBlID0gMTAzCi1jb25zdCBVaW50
OENsYW1wZWRBcnJheVR5cGUgPSAxMDQKLWNvbnN0IFVpbnQxNkFycmF5VHlwZSA9IDEwNQotY29u
c3QgVWludDMyQXJyYXlUeXBlID0gMTA2Ci1jb25zdCBGbG9hdDMyQXJyYXlUeXBlID0gMTA3Ci1j
b25zdCBGbG9hdDY0QXJyYXlUeXBlID0gMTA4Citjb25zdCBJbnQ4QXJyYXlUeXBlID0gMzMKK2Nv
bnN0IEludDE2QXJyYXlUeXBlID0gMzQKK2NvbnN0IEludDMyQXJyYXlUeXBlID0gMzUKK2NvbnN0
IFVpbnQ4QXJyYXlUeXBlID0gMzYKK2NvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5VHlwZSA9IDM3Citj
b25zdCBVaW50MTZBcnJheVR5cGUgPSAzOAorY29uc3QgVWludDMyQXJyYXlUeXBlID0gMzkKK2Nv
bnN0IEZsb2F0MzJBcnJheVR5cGUgPSA0MAorY29uc3QgRmxvYXQ2NEFycmF5VHlwZSA9IDQxCiAK
IGNvbnN0IEZpcnN0QXJyYXlUeXBlID0gSW50OEFycmF5VHlwZQogY29uc3QgTGFzdEFycmF5VHlw
ZSA9IEZsb2F0NjRBcnJheVR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgK
aW5kZXggMDEwZTkwNDdiN2VkZWE2NjQ0OGZiOTcxZTNkNGVlOTZiZjA4Y2I5OC4uYWEyNDdjYjU2
OTZhZGEwYjJlM2VlZmM4ODU2YTQ2NjlmNzAyZjgzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNUeXBlLmgKQEAgLTY1LDcgKzY1LDcgQEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsK
ICAgICBBcnJheVR5cGUsCiAgICAgRGVyaXZlZEFycmF5VHlwZSwKIAotICAgIEludDhBcnJheVR5
cGUgPSAxMDAsCisgICAgSW50OEFycmF5VHlwZSwKICAgICBJbnQxNkFycmF5VHlwZSwKICAgICBJ
bnQzMkFycmF5VHlwZSwKICAgICBVaW50OEFycmF5VHlwZSwKQEAgLTg3LDggKzg3LDEwIEBAIGVu
dW0gSlNUeXBlIDogdWludDhfdCB7CiAgICAgSlNTZXRUeXBlLAogCiAgICAgTGFzdEpTQ09iamVj
dFR5cGUgPSBKU1NldFR5cGUsCisgICAgTWF4SlNUeXBlID0gMGIxMTExMTExMSwKIH07CiAKLUNP
TVBJTEVfQVNTRVJUKHNpemVvZihKU1R5cGUpID09IHNpemVvZih1aW50OF90KSwgc2l6ZW9mX2pz
dHlwZV9pc19vbmVfYnl0ZSk7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihKU1R5cGUpID09IHNpemVv
Zih1aW50OF90KSwgInNpemVvZihKU1R5cGUpIGlzIG9uZSBieXRlLiIpOworc3RhdGljX2Fzc2Vy
dChMYXN0SlNDT2JqZWN0VHlwZSA8IDEyOCwgIlRoZSBoaWdoZXN0IGJpdCBpcyByZXNlcnZlZCBm
b3IgZW1iZWRkZXIncyBleHRlbnNpb24uIik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRj
MWQzMWU2YzQ1OTgwMjI4ZGJhNzEzYjlmZDJjM2MwOGI1ODE4MzMuLjUzYzIxZDk1NzI1YzI4MDRm
MDA2NzliM2M2NTVjMjAwODA0OGNjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYxNDMsNiArNjE0Myw3IEBACiAJCUUxRkY4
RjZEMTgwREI1QkUwMDEzMjY3NCAvKiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRjhGNkIxODBEQjVCRTAw
MTMyNjc0IC8qIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmggKi87IH07CiAJCUUzMTUwRUE2MURB
NzIxOTAwMDE5NDAxMiAvKiBKU05vZGVET01KSVQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBRkE5NjQxREE2RTkwODAwMjg2MUJEIC8qIEpTTm9k
ZURPTUpJVC5jcHAgKi87IH07CiAJCUUzMTUwRUE3MURBNzIxOTMwMDE5NDAxMiAvKiBET01KSVRI
ZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzE1MEVBNTFEQTcyMThEMDAxOTQwMTIgLyogRE9NSklUSGVscGVycy5oICovOyB9OworCQlFMzc3
RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8q
IE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlFMzg4Mzg5ODFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODgz
ODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwICovOyB9OwogCQlF
Mzg4Mzg5OTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg4Mzg5NTFCQUQxNDVGMDBE
NjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi87IH07CiAJCUUzQjJGMEVCMUQ3RjRDOUQw
MEIwQzlEMSAvKiBMb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNCMkYwRTMxRDdGMzVFQzAwQjBDOUQxIC8qIExv
YWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAgKi87IH07CkBAIC0xMzc4NCw2ICsxMzc4NSw3IEBACiAJ
CUUzQjJGMEU3MUQ3RjM1RUMwMEIwQzlEMSAvKiBMb2FkYWJsZVNjcmlwdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBMb2FkYWJsZVNjcmlwdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFM0IyRjBFODFEN0YzNUVDMDBCMEM5RDEgLyogTG9hZGFibGVTY3JpcHRD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9hZGFibGVTY3JpcHRD
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNCMkYwRTkxRDdGM0QzQzAw
QjBDOUQxIC8qIExvYWRhYmxlU2NyaXB0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IExvYWRhYmxlU2NyaXB0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm9kZUNvbnN0YW50cy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFM0ZBMzg2MTFENzE2RTc2MDBBQTU5NTAgLyogUGVuZGluZ1NjcmlwdENs
aWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQZW5kaW5nU2NyaXB0Q2xp
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0MDFDMjc0MTdDRTUzRUMwMEM0
MUEzNSAvKiBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTQwMUUwQTMxQzNDMEI4MzAwRjM0RDEwIC8qIFN0eWxlQ2hhbmdlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlQ2hhbmdlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzI3NSw2ICsyMzI3Nyw3IEBACiAJCQkJNjNEN0IzMkMw
RTc4Q0QzRjAwRjc2MTdDIC8qIE5vZGVSZW5kZXJTdHlsZS5oICovLAogCQkJCUU0MzEwNUI3MTY3
NTBGMEMwMERCMkZCOCAvKiBOb2RlVHJhdmVyc2FsLmNwcCAqLywKIAkJCQlFNDMxMDVCQTE2NzUw
RjE2MDBEQjJGQjggLyogTm9kZVRyYXZlcnNhbC5oICovLAorCQkJCUUzRDA0OTkzMURBREMwNDUw
MDcxOEYzQyAvKiBOb2RlQ29uc3RhbnRzLmggKi8sCiAJCQkJOTM4MkFBQjEwRDhDMzg2MTAwRjM1
N0E2IC8qIE5vZGVXaXRoSW5kZXguaCAqLywKIAkJCQlFNDZCNDFGODFDQjI0RTcwMDA4RjExREUg
LyogTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uLmggKi8sCiAJCQkJODM2OUU1OEYxQUZERDAzMDAw
ODdERjY4IC8qIE5vbkRvY3VtZW50VHlwZUNoaWxkTm9kZS5pZGwgKi8sCkBAIC0yNTg0Nyw2ICsy
NTg1MCw3IEBACiAJCQkJNTEwNThBRTIxRDY3QzIyOTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkUHJv
dmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVFQTNENkRGMUM4NTlEN0YwMDMwMEJCQiAvKiBN
b2NrTWVkaWFFbmRwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGMkIwMTMxODIwNTQwNjAw
RjJCNDI0IC8qIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNvbnN0YW50cy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0RGMkIwMTUxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tNZWRpYVNvdXJjZVByaXZh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3RDZBNEY0MUJFRDVGODgwMDE3NDE0NiAvKiBNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdENkE0RjAxQkVDRjJE
MjAwMTc0MTQ2IC8qIE1vY2tSZWFsdGltZU1lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKaW5kZXggMDA5ZjZkZjA3ZWVi
MTE2MjAwMThiODMyNWI5MGVjNTIyNzMxMWZkYy4uMThjNjY3MTQxMzVkZDQyNmIyMzk5N2E1YWU3
MTVjZjM1NjkwYmQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVy
LmgKQEAgLTIyLDYgKzIyLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSlNET01HbG9i
YWxPYmplY3QuaCIKKyNpbmNsdWRlICJOb2RlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSA8cnVudGlt
ZS9KU0Rlc3RydWN0aWJsZU9iamVjdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yOSwx
MCArMzAsMjUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSlNET01XaW5kb3c7CiBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCi1zdGF0aWMgY29uc3QgdWludDhfdCBKU0RPTVdy
YXBwZXJUeXBlID0gSlNDOjpMYXN0SlNDT2JqZWN0VHlwZSArIDE7Ci1zdGF0aWMgY29uc3QgdWlu
dDhfdCBKU05vZGVUeXBlID0gSlNDOjpMYXN0SlNDT2JqZWN0VHlwZSArIDI7Ci1zdGF0aWMgY29u
c3QgdWludDhfdCBKU0RvY3VtZW50V3JhcHBlclR5cGUgPSBKU0M6Okxhc3RKU0NPYmplY3RUeXBl
ICsgMzsKLXN0YXRpYyBjb25zdCB1aW50OF90IEpTRWxlbWVudFR5cGUgPSBKU0M6Okxhc3RKU0NP
YmplY3RUeXBlICsgNDsKKy8vIFdlIGVuY29kZSBOb2RlIHR5cGUgaW50byBKU1R5cGUuIFRoZSBm
b3JtYXQgaXMgdGhlIGZvbGxvd2luZy4KKy8vIG9mZnNldCB8IDcgfCA2IDUgNCB8IDMgMiAxIDAg
IHwKKy8vIHZhbHVlICB8IDEgfCBLaW5kICB8IE5vZGVUeXBlIHwKK3N0YXRpYyBjb25zdCB1aW50
OF90IEpTTm9kZVR5cGVNYXNrICAgICAgICAgICAgICAgICAgPSAwYjAwMDAxMTExOworCitzdGF0
aWMgY29uc3QgdWludDhfdCBKU0RPTVdyYXBwZXJUeXBlICAgICAgICAgICAgICAgID0gMGIxMDAw
MDAwMDsKK3N0YXRpYyBjb25zdCB1aW50OF90IEpTTm9kZVR5cGUgICAgICAgICAgICAgICAgICAg
ICAgPSAwYjEwMDEwMDAwOworc3RhdGljIGNvbnN0IHVpbnQ4X3QgSlNUZXh0Tm9kZVR5cGUgICAg
ICAgICAgICAgICAgICA9IEpTTm9kZVR5cGUgfCBOb2RlQ29uc3RhbnRzOjpURVhUX05PREU7Citz
dGF0aWMgY29uc3QgdWludDhfdCBKU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbk5vZGVUeXBlID0gSlNO
b2RlVHlwZSB8IE5vZGVDb25zdGFudHM6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERTsKK3N0
YXRpYyBjb25zdCB1aW50OF90IEpTRG9jdW1lbnRUeXBlTm9kZVR5cGUgICAgICAgICAgPSBKU05v
ZGVUeXBlIHwgTm9kZUNvbnN0YW50czo6RE9DVU1FTlRfVFlQRV9OT0RFOworc3RhdGljIGNvbnN0
IHVpbnQ4X3QgSlNEb2N1bWVudEZyYWdtZW50Tm9kZVR5cGUgICAgICA9IEpTTm9kZVR5cGUgfCBO
b2RlQ29uc3RhbnRzOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOworc3RhdGljIGNvbnN0IHVpbnQ4
X3QgSlNEb2N1bWVudFdyYXBwZXJUeXBlICAgICAgICAgICA9IEpTTm9kZVR5cGUgfCBOb2RlQ29u
c3RhbnRzOjpET0NVTUVOVF9OT0RFOworc3RhdGljIGNvbnN0IHVpbnQ4X3QgSlNDb21tZW50Tm9k
ZVR5cGUgICAgICAgICAgICAgICA9IEpTTm9kZVR5cGUgfCBOb2RlQ29uc3RhbnRzOjpDT01NRU5U
X05PREU7CitzdGF0aWMgY29uc3QgdWludDhfdCBKU0NEQVRBU2VjdGlvbk5vZGVUeXBlICAgICAg
ICAgID0gSlNOb2RlVHlwZSB8IE5vZGVDb25zdGFudHM6OkNEQVRBX1NFQ1RJT05fTk9ERTsKK3N0
YXRpYyBjb25zdCB1aW50OF90IEpTQXR0ck5vZGVUeXBlICAgICAgICAgICAgICAgICAgPSBKU05v
ZGVUeXBlIHwgTm9kZUNvbnN0YW50czo6QVRUUklCVVRFX05PREU7CitzdGF0aWMgY29uc3QgdWlu
dDhfdCBKU0VsZW1lbnRUeXBlICAgICAgICAgICAgICAgICAgID0gMGIxMDEwMDAwMCB8IE5vZGVD
b25zdGFudHM6OkVMRU1FTlRfTk9ERTsKKworc3RhdGljX2Fzc2VydChKU0RPTVdyYXBwZXJUeXBl
ID4gSlNDOjpMYXN0SlNDT2JqZWN0VHlwZSwgIkpTQzo6SlNUeXBlIG9mZmVycyB0aGUgaGlnaGVz
dCBiaXQuIik7CitzdGF0aWNfYXNzZXJ0KE5vZGVDb25zdGFudHM6Okxhc3ROb2RlVHlwZSA8IEpT
Tm9kZVR5cGVNYXNrLCAiTm9kZVR5cGUgc2hvdWxkIGJlIHJlcHJlc2VudGVkIGluIDRiaXQuIik7
CiAKIGNsYXNzIEpTRE9NT2JqZWN0IDogcHVibGljIEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Qg
ewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2Rl
Q3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaAppbmRl
eCBhYjYzNjFjNjUzZWUxODZlMDc0YmNlMjM1MmQ1MmNiYjg2ZjcxM2YwLi4xZThhOGMxMTkzNmI2
ZjU1ZmE3Y2VkZGEyODlmNTY1YmEyNjYyZDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU05vZGVDdXN0b20uaApAQCAtODUsNCArODUsOSBAQCBBTFdBWVNfSU5MSU5FIEpTTm9kZSog
anNOb2RlQ2FzdChKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIHZhbHVlLmFzQ2VsbCgp
LT50eXBlKCkgPj0gSlNOb2RlVHlwZSA/IEpTQzo6anNDYXN0PEpTTm9kZSo+KHZhbHVlKSA6IG51
bGxwdHI7CiB9CiAKK0FMV0FZU19JTkxJTkUgSlNDOjpKU1ZhbHVlIEpTTm9kZTo6bm9kZVR5cGUo
SlNDOjpFeGVjU3RhdGUmKSBjb25zdAoreworICAgIHJldHVybiBKU0M6OmpzTnVtYmVyKHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KHR5cGUoKSkgJiBKU05vZGVUeXBlTWFzayk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KaW5kZXggODhjMWRiYTRkM2RmOGUzNDVkNTA3YTJjNTk0MjI0MjVh
YjgwNmUxOS4uMWFjOGMxZjM0OTljZDhlZmU4OTZjMzUyNmI2NTIxMTY5OTM4NDMwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
QEAgLTExNzAsNiArMTE3MCw0MCBAQCBzdWIgR2VuZXJhdGVEaWN0aW9uYXJpZXNJbXBsZW1lbnRh
dGlvbkNvbnRlbnQKICAgICByZXR1cm4gJHJlc3VsdDsKIH0KIAorc3ViIEdldEpTVHlwZUZvck5v
ZGUKK3sKKyAgICBteSAoJGNvZGVHZW5lcmF0b3IsICRpbnRlcmZhY2UpID0gQF87CisKKyAgICBp
ZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJEb2N1bWVu
dCIpKSB7CisgICAgICAgIHJldHVybiAiSlNEb2N1bWVudFdyYXBwZXJUeXBlIjsKKyAgICB9Cisg
ICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiRG9j
dW1lbnRGcmFnbWVudCIpKSB7CisgICAgICAgIHJldHVybiAiSlNEb2N1bWVudEZyYWdtZW50Tm9k
ZVR5cGUiOworICAgIH0KKyAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNl
KCRpbnRlcmZhY2UsICJEb2N1bWVudFR5cGUiKSkgeworICAgICAgICByZXR1cm4gIkpTRG9jdW1l
bnRUeXBlTm9kZVR5cGUiOworICAgIH0KKyAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRz
SW50ZXJmYWNlKCRpbnRlcmZhY2UsICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24iKSkgeworICAgICAg
ICByZXR1cm4gIkpTUHJvY2Vzc2luZ0luc3RydWN0aW9uTm9kZVR5cGUiOworICAgIH0KKyAgICBp
ZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJDREFUQVNl
Y3Rpb24iKSkgeworICAgICAgICByZXR1cm4gIkpTQ0RBVEFTZWN0aW9uTm9kZVR5cGUiOworICAg
IH0KKyAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2Us
ICJBdHRyIikpIHsKKyAgICAgICAgcmV0dXJuICJKU0F0dHJOb2RlVHlwZSI7CisgICAgfQorICAg
IGlmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIkNvbW1l
bnQiKSkgeworICAgICAgICByZXR1cm4gIkpTQ29tbWVudE5vZGVUeXBlIjsKKyAgICB9CisgICAg
aWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiVGV4dCIp
KSB7CisgICAgICAgIHJldHVybiAiSlNUZXh0Tm9kZVR5cGUiOworICAgIH0KKyAgICBpZiAoJGNv
ZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJFbGVtZW50IikpIHsK
KyAgICAgICAgcmV0dXJuICJKU0VsZW1lbnRUeXBlIjsKKyAgICB9CisgICAgcmV0dXJuICJKU05v
ZGVUeXBlIjsKK30KKwogc3ViIEdlbmVyYXRlSGVhZGVyCiB7CiAgICAgbXkgKCRvYmplY3QsICRp
bnRlcmZhY2UsICRlbnVtZXJhdGlvbnMsICRkaWN0aW9uYXJpZXMpID0gQF87CkBAIC0xMzY4LDEy
ICsxNDAyLDkgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICB7XG4iKTsKICAgICBpZiAoSXNET01HbG9iYWxPYmplY3QoJGludGVyZmFjZSkpIHsKICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6
R2xvYmFsT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpO1xuIik7Ci0gICAgfSBl
bHNpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJEb2N1
bWVudCIpKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVybiBK
U0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpU
eXBlSW5mbyhKU0M6OkpTVHlwZShKU0RvY3VtZW50V3JhcHBlclR5cGUpLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7XG4iKTsKLSAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJ
bnRlcmZhY2UoJGludGVyZmFjZSwgIkVsZW1lbnQiKSkgewotICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpKU1R5cGUoSlNFbGVtZW50VHlw
ZSksIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTtcbiIpOwogICAgIH0gZWxzaWYgKCRjb2RlR2Vu
ZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiTm9kZSIpKSB7Ci0gICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6OkpTVHlw
ZShKU05vZGVUeXBlKSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpO1xuIik7CisgICAgICAgIG15
ICR0eXBlID0gR2V0SlNUeXBlRm9yTm9kZSgkY29kZUdlbmVyYXRvciwgJGludGVyZmFjZSk7Cisg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6
OkpTVHlwZSgkdHlwZSksIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTtcbiIpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVybiBKU0M6OlN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5m
byhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTtcbiIpOwogICAgIH0K
QEAgLTE2NzEsNyArMTcwMiw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICAkZG9tSklUQ2xhc3NOYW1lKCk7XG4iKTsKICAgICAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjaWYgRU5BQkxFKEpJVClcbiIpOwogICAgICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBSZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+
IGNoZWNrRE9NKCkgb3ZlcnJpZGU7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBjYWxsRE9NKCkgb3ZlcnJpZGU7
XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgUmVmPEpTQzo6RE9N
SklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gY2FsbERPTSgpIG92ZXJyaWRlO1xuIik7CiAgICAgICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlmXG4iKTsKICAgICAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICJ9O1xuXG4iKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaWRsCmluZGV4
IDZmMjc0MmY4M2EzMDI3YjA2MWQ1ZjAyZDA5ZWNiNGE1MjY2Y2FkYWYuLjJkNWRiOGI3ZGQ1YTE2
NzU0YTM4NDEyNGJhMTQ3NmY1NTRmZjgwMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwKQEAgLTQ2LDcgKzQ2
LDcgQEAKICAgICAvLyBGSVhNRTogdGhlIHNwZWMgc2F5cyB0aGlzIGNhbiBhbHNvIHJhaXNlIG9u
IHJldHJpZXZhbC4KICAgICBbU2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIGF0dHJpYnV0
ZSBET01TdHJpbmc/IG5vZGVWYWx1ZTsKIAotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25l
ZCBzaG9ydCBub2RlVHlwZTsKKyAgICBbRE9NSklULCBDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0
dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCBub2RlVHlwZTsKICAgICBbRE9NSklUXSByZWFkb25seSBh
dHRyaWJ1dGUgTm9kZT8gcGFyZW50Tm9kZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9kZUxp
c3QgY2hpbGROb2RlczsKICAgICBbRE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUgTm9kZT8gZmly
c3RDaGlsZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlQ29uc3RhbnRzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZUNvbnN0YW50cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViYmRjNzgx
MjQ1YTBkNTg5YjExNWNhMzMyODEzY2I3OWNhYTYyNWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZUNvbnN0YW50cy5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgTm9kZUNvbnN0YW50cyB7CisgICAgZW51bSBOb2Rl
VHlwZSB7CisgICAgICAgIEVMRU1FTlRfTk9ERSA9IDEsCisgICAgICAgIEFUVFJJQlVURV9OT0RF
ID0gMiwKKyAgICAgICAgVEVYVF9OT0RFID0gMywKKyAgICAgICAgQ0RBVEFfU0VDVElPTl9OT0RF
ID0gNCwKKyAgICAgICAgUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFID0gNywKKyAgICAgICAg
Q09NTUVOVF9OT0RFID0gOCwKKyAgICAgICAgRE9DVU1FTlRfTk9ERSA9IDksCisgICAgICAgIERP
Q1VNRU5UX1RZUEVfTk9ERSA9IDEwLAorICAgICAgICBET0NVTUVOVF9GUkFHTUVOVF9OT0RFID0g
MTEsCisgICAgfTsKKworICAgIGVudW0gRGVwcmVjYXRlZE5vZGVUeXBlIHsKKyAgICAgICAgRU5U
SVRZX1JFRkVSRU5DRV9OT0RFID0gNSwKKyAgICAgICAgRU5USVRZX05PREUgPSA2LAorICAgICAg
ICBOT1RBVElPTl9OT0RFID0gMTIsCisgICAgfTsKKworICAgIHN0YXRpYyBjb25zdCB1aW50OF90
IExhc3ROb2RlVHlwZSA9IE5PVEFUSU9OX05PREU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlOjpOb2RlVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0pTTm9kZURP
TUpJVC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcAppbmRleCBh
NzlmMDk1MTI2ZDQ1ZmZiYmFmODQ1MGI2ZjhkODBhMDU4OTVmZjRhLi5iNTBkMjRlOWEzM2M1YTNl
Yjc4YjhiNzE1MmQ4MzgzYmVmN2RkMTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb21q
aXQvSlNOb2RlRE9NSklULmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9N
SklULmNwcApAQCAtNTAsOSArNTAsOSBAQCBFbmNvZGVkSlNWYWx1ZSB0b1dyYXBwZXJTbG93KEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBXcmFwcGVkTm9kZT4KLXN0YXRpYyBSZWY8RE9NSklUOjpQYXRjaHBv
aW50PiBjcmVhdGVDYWxsRE9NRm9yT2Zmc2V0QWNjZXNzKHB0cmRpZmZfdCBvZmZzZXQsIElzQ29u
dGFpbmVyR3VhcmRSZXF1aXJlbWVudCBpc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQpCitzdGF0
aWMgUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRB
Y2Nlc3MocHRyZGlmZl90IG9mZnNldCwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50IGlzQ29u
dGFpbmVyR3VhcmRSZXF1aXJlbWVudCkKIHsKLSAgICBSZWY8RE9NSklUOjpQYXRjaHBvaW50PiBw
YXRjaHBvaW50ID0gRE9NSklUOjpQYXRjaHBvaW50OjpjcmVhdGUoKTsKKyAgICBSZWY8RE9NSklU
OjpDYWxsRE9NUGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9IERPTUpJVDo6Q2FsbERPTVBhdGNocG9p
bnQ6OmNyZWF0ZSgpOwogICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7
CiAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgSlNWYWx1ZVJl
Z3MgcmVzdWx0ID0gcGFyYW1zWzBdLmpzVmFsdWVSZWdzKCk7CkBAIC05OCw3ICs5OCw3IEBAIFJl
ZjxET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVGaXJzdENoaWxkRE9NSklUOjpjaGVja0RPTSgpCiAg
ICAgcmV0dXJuIGNoZWNrTm9kZSgpOwogfQogCi1SZWY8RE9NSklUOjpQYXRjaHBvaW50PiBOb2Rl
Rmlyc3RDaGlsZERPTUpJVDo6Y2FsbERPTSgpCitSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2lu
dD4gTm9kZUZpcnN0Q2hpbGRET01KSVQ6OmNhbGxET00oKQogewogICAgIHJldHVybiBjcmVhdGVD
YWxsRE9NRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KENBU1RfT0ZGU0VUKE5vZGUqLCBDb250YWluZXJO
b2RlKikgKyBDb250YWluZXJOb2RlOjpmaXJzdENoaWxkTWVtb3J5T2Zmc2V0KCksIElzQ29udGFp
bmVyR3VhcmRSZXF1aXJlbWVudDo6UmVxdWlyZWQpOwogfQpAQCAtMTA5LDcgKzEwOSw3IEBAIFJl
ZjxET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVMYXN0Q2hpbGRET01KSVQ6OmNoZWNrRE9NKCkKICAg
ICByZXR1cm4gY2hlY2tOb2RlKCk7CiB9CiAKLVJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVM
YXN0Q2hpbGRET01KSVQ6OmNhbGxET00oKQorUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+
IE5vZGVMYXN0Q2hpbGRET01KSVQ6OmNhbGxET00oKQogewogICAgIHJldHVybiBjcmVhdGVDYWxs
RE9NRm9yT2Zmc2V0QWNjZXNzPE5vZGU+KENBU1RfT0ZGU0VUKE5vZGUqLCBDb250YWluZXJOb2Rl
KikgKyBDb250YWluZXJOb2RlOjpsYXN0Q2hpbGRNZW1vcnlPZmZzZXQoKSwgSXNDb250YWluZXJH
dWFyZFJlcXVpcmVtZW50OjpSZXF1aXJlZCk7CiB9CkBAIC0xMjAsNyArMTIwLDcgQEAgUmVmPERP
TUpJVDo6UGF0Y2hwb2ludD4gTm9kZU5leHRTaWJsaW5nRE9NSklUOjpjaGVja0RPTSgpCiAgICAg
cmV0dXJuIGNoZWNrTm9kZSgpOwogfQogCi1SZWY8RE9NSklUOjpQYXRjaHBvaW50PiBOb2RlTmV4
dFNpYmxpbmdET01KSVQ6OmNhbGxET00oKQorUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+
IE5vZGVOZXh0U2libGluZ0RPTUpJVDo6Y2FsbERPTSgpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUNh
bGxET01Gb3JPZmZzZXRBY2Nlc3M8Tm9kZT4oTm9kZTo6bmV4dFNpYmxpbmdNZW1vcnlPZmZzZXQo
KSwgSXNDb250YWluZXJHdWFyZFJlcXVpcmVtZW50OjpOb3RSZXF1aXJlZCk7CiB9CkBAIC0xMzEs
NyArMTMxLDcgQEAgUmVmPERPTUpJVDo6UGF0Y2hwb2ludD4gTm9kZVByZXZpb3VzU2libGluZ0RP
TUpJVDo6Y2hlY2tET00oKQogICAgIHJldHVybiBjaGVja05vZGUoKTsKIH0KIAotUmVmPERPTUpJ
VDo6UGF0Y2hwb2ludD4gTm9kZVByZXZpb3VzU2libGluZ0RPTUpJVDo6Y2FsbERPTSgpCitSZWY8
RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gTm9kZVByZXZpb3VzU2libGluZ0RPTUpJVDo6Y2Fs
bERPTSgpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUNhbGxET01Gb3JPZmZzZXRBY2Nlc3M8Tm9kZT4o
Tm9kZTo6cHJldmlvdXNTaWJsaW5nTWVtb3J5T2Zmc2V0KCksIElzQ29udGFpbmVyR3VhcmRSZXF1
aXJlbWVudDo6Tm90UmVxdWlyZWQpOwogfQpAQCAtMTQyLDExICsxNDIsMzIgQEAgUmVmPERPTUpJ
VDo6UGF0Y2hwb2ludD4gTm9kZVBhcmVudE5vZGVET01KSVQ6OmNoZWNrRE9NKCkKICAgICByZXR1
cm4gY2hlY2tOb2RlKCk7CiB9CiAKLVJlZjxET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVQYXJlbnRO
b2RlRE9NSklUOjpjYWxsRE9NKCkKK1JlZjxET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBOb2Rl
UGFyZW50Tm9kZURPTUpJVDo6Y2FsbERPTSgpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUNhbGxET01G
b3JPZmZzZXRBY2Nlc3M8Q29udGFpbmVyTm9kZT4oTm9kZTo6cGFyZW50Tm9kZU1lbW9yeU9mZnNl
dCgpLCBJc0NvbnRhaW5lckd1YXJkUmVxdWlyZW1lbnQ6Ok5vdFJlcXVpcmVkKTsKIH0KIAorLy8g
Tm9kZSNub2RlVHlwZS4KK1JlZjxET01KSVQ6OlBhdGNocG9pbnQ+IE5vZGVOb2RlVHlwZURPTUpJ
VDo6Y2hlY2tET00oKQoreworICAgIHJldHVybiBjaGVja05vZGUoKTsKK30KKworUmVmPERPTUpJ
VDo6Q2FsbERPTVBhdGNocG9pbnQ+IE5vZGVOb2RlVHlwZURPTUpJVDo6Y2FsbERPTSgpCit7Cisg
ICAgUmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBET01KSVQ6OkNh
bGxET01QYXRjaHBvaW50OjpjcmVhdGUoKTsKKyAgICBwYXRjaHBvaW50LT5yZXF1aXJlR2xvYmFs
T2JqZWN0ID0gZmFsc2U7CisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgRE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMpIHsKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0ID0gcGFyYW1zWzBdLmpzVmFsdWVSZWdzKCk7CisgICAg
ICAgIEdQUlJlZyBub2RlID0gcGFyYW1zWzFdLmdwcigpOworICAgICAgICBqaXQubG9hZDgoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKG5vZGUsIEpTQzo6SlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQo
KSksIHJlc3VsdC5wYXlsb2FkR1BSKCkpOworICAgICAgICBqaXQuYW5kMzIoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoSlNOb2RlVHlwZU1hc2spLCByZXN1bHQucGF5bG9hZEdQUigpKTsKKyAg
ICAgICAgaml0LmJveEludDMyKHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3VsdCk7CisgICAgICAg
IHJldHVybiBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KCk7CisgICAgfSk7CisgICAgcmV0dXJuIHBh
dGNocG9pbnQ7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMGFjYTcyZmUyOWExYWRmNzlkYWRi
OThmYmU2NDkxZGQ4ODkzMmRhZS4uOTVkNzVlMzgyZjk2MTkwZWVjN2M3ZjA1YjNiZWZkZWUxZjli
NTgwNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE2LTEwLTEyICBZdXN1a2UgU3V6dWtpICA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01KSVRdW0pTQ10gRXhwbG9yZSB0
aGUgd2F5IHRvIGVtYmVkIG5vZGVUeXBlIGludG8gSlNDOjpKU1R5cGUgaW4gV2ViQ29yZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMjQ1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9kb20vZG9t
aml0LWFjY2Vzc29yLW5vZGUtdHlwZS5odG1sOiBBZGRlZC4KKwogMjAxNi0xMC0xMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEVuYWJsZSBV
UkxQYXJzZXIgYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWpp
dC1hY2Nlc3Nvci1ub2RlLXR5cGUuaHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNj
ZXNzb3Itbm9kZS10eXBlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjE4N2VmZTE5Y2NmODAxZjJjYmM5NDRh
YTdmNWJiM2FjZTlkYTVkYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9k
b21qaXQtYWNjZXNzb3Itbm9kZS10eXBlLmh0bWwKQEAgLTAsMCArMSw1NSBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpZnJhbWUgaWQ9InhtbGZy
YW1lIiBvbmxvYWQ9ImZyYW1lTG9hZGVkKCkiIHN0eWxlPSJoZWlnaHQ6MHB4IiBzcmM9ImRhdGE6
YXBwbGljYXRpb24veGh0bWwreG1sLDw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04
Jz8+PGJvZHkvPiI+PC9pZnJhbWU+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgRE9NSklU
IG5vZGVUeXBlIGFjY2Vzc29yIHdvcmtzLicpOworCitpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK3ZhciB0YXJnZXQgPSBudWxsOwordmFy
IHJlc3VsdCA9IG51bGw7CitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICB2YXIgeG1sRG9jdW1l
bnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgneG1sZnJhbWUnKS5jb250ZW50RG9jdW1lbnQ7
CisgICAgdmFyIHRhcmdldHMgPSBbCisgICAgICAgIFtkb2N1bWVudC5ib2R5LCBOb2RlLkVMRU1F
TlRfTk9ERV0sCisgICAgICAgIFtkb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGUoJ0NvY29hJyksIE5v
ZGUuQVRUUklCVVRFX05PREVdLAorICAgICAgICBbZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ0Nv
Y29hJyksIE5vZGUuVEVYVF9OT0RFXSwKKyAgICAgICAgW3htbERvY3VtZW50LmNyZWF0ZUNEQVRB
U2VjdGlvbigndGVzdCcpLCBOb2RlLkNEQVRBX1NFQ1RJT05fTk9ERV0sCisgICAgICAgIFt4bWxE
b2N1bWVudC5jcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oJ3RhcmdldCcsICd0ZXN0JyksIE5v
ZGUuUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFXSwKKyAgICAgICAgW2RvY3VtZW50LmNyZWF0
ZUNvbW1lbnQoJ0NvY29hJyksIE5vZGUuQ09NTUVOVF9OT0RFXSwKKyAgICAgICAgW2RvY3VtZW50
LCBOb2RlLkRPQ1VNRU5UX05PREVdLAorICAgICAgICBbZG9jdW1lbnQuZG9jdHlwZSwgTm9kZS5E
T0NVTUVOVF9UWVBFX05PREVdLAorICAgICAgICBbZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFn
bWVudCgpLCBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREVdLAorICAgIF07CisKKyAgICBmb3Ig
KFt0YXJnZXQsIHJlc3VsdF0gb2YgdGFyZ2V0cykgeworICAgICAgICB2YXIgdGV4dCA9IGAKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHRlc3Qke3Jlc3VsdH0oZWxlbWVudCwgcmVzdWx0KQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQubm9kZVR5cGUgIT09IHJlc3VsdCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIGA7Cisg
ICAgICAgIHNob3VsZEJlVHJ1ZShgKCR7dGV4dH0pKHRhcmdldCwgJHtyZXN1bHR9KWApOworICAg
IH0KKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Cit9CitmdW5jdGlvbiBmcmFtZUxvYWRlZCgpCit7CisgICAgcnVuVGVzdCgpOwor
fQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="314521"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>