<?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>100039</bug_id>
          
          <creation_ts>2012-10-22 15:36:54 -0700</creation_ts>
          <short_desc>[CSS Exclusions] Multiple segment polygon layout does not get all segments</short_desc>
          <delta_ts>2012-10-30 18:38:15 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>89256</blocked>
    
    <blocked>91878</blocked>
    
    <blocked>100763</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Bear Travis">betravis</reporter>
          <assigned_to name="Hans Muller">giles_joplin</assigned_to>
          <cc>donggwan.kim</cc>
    
    <cc>eric</cc>
    
    <cc>giles_joplin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>747969</commentid>
    <comment_count>0</comment_count>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-10-22 15:36:54 -0700</bug_when>
    <thetext>In this test case the layout code is only seeing the rightmost leg of a &quot;U&quot; shape when layout begins.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747973</commentid>
    <comment_count>1</comment_count>
      <attachid>170002</attachid>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-10-22 15:37:46 -0700</bug_when>
    <thetext>Created attachment 170002
Test case

text layout should begin in the left leg of the &apos;U&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753552</commentid>
    <comment_count>2</comment_count>
      <attachid>171271</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-10-29 10:02:45 -0700</bug_when>
    <thetext>Created attachment 171271
Patch

This patch includes versions of the test case that can be verified with the existing layout support for shape-inside.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753557</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-29 10:06:12 -0700</bug_when>
    <thetext>Attachment 171271 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1
Source/WebCore/rendering/ExclusionPolygon.cpp:116:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/rendering/ExclusionPolygon.cpp:121:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Source/WebCore/rendering/ExclusionPolygon.cpp:127:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
Total errors found: 3 in 11 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>753577</commentid>
    <comment_count>4</comment_count>
      <attachid>171277</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-10-29 10:20:51 -0700</bug_when>
    <thetext>Created attachment 171277
Patch

Corrected check-webkit-style problems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754002</commentid>
    <comment_count>5</comment_count>
      <attachid>171277</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-10-29 23:14:08 -0700</bug_when>
    <thetext>Comment on attachment 171277
Patch

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

The patch looks great. Still have some questions.

&gt; Source/WebCore/rendering/ExclusionPolygon.cpp:112
&gt; +static bool getVertexIntersectionVertices(const EdgeIntersection&amp; intersection, FloatPoint&amp; prevVertex, FloatPoint&amp; thisVertex, FloatPoint&amp; nextVertex)

Can this be inline?

&gt; Source/WebCore/rendering/ExclusionPolygon.cpp:119
&gt; +    const ExclusionPolygon&amp; polygon = *(intersection.edge-&gt;polygon);
&gt; +    const ExclusionPolygonEdge&amp; thisEdge = *(intersection.edge);

I am not sure how EdgeIntersection is implemented. Do we want it to be RefCounted?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754413</commentid>
    <comment_count>6</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-10-30 09:05:06 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 171277 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171277&amp;action=review
&gt; 
&gt; The patch looks great. Still have some questions.
&gt; 
&gt; &gt; Source/WebCore/rendering/ExclusionPolygon.cpp:112
&gt; &gt; +static bool getVertexIntersectionVertices(const EdgeIntersection&amp; intersection, FloatPoint&amp; prevVertex, FloatPoint&amp; thisVertex, FloatPoint&amp; nextVertex)
&gt; 
&gt; Can this be inline?

Yes, given how it&apos;s used it should be inline.

&gt; 
&gt; &gt; Source/WebCore/rendering/ExclusionPolygon.cpp:119
&gt; &gt; +    const ExclusionPolygon&amp; polygon = *(intersection.edge-&gt;polygon);
&gt; &gt; +    const ExclusionPolygonEdge&amp; thisEdge = *(intersection.edge);
&gt; 
&gt; I am not sure how EdgeIntersection is implemented. Do we want it to be RefCounted?

The lifetime of the EdgeIntersections that are being referred to here are defined by the caller,
ExclusionPolygon::computeXIntersections().  In general, the EdgeIntersection objects do not 
persist longer than the main ExclusionShape entry point methods, getIncluded,ExcludedIntervals() 
and they are strictly private to the ExclusionPolygon implementation.  I don&apos;t think they need 
to be ref-counted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754432</commentid>
    <comment_count>7</comment_count>
      <attachid>171470</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-10-30 09:28:30 -0700</bug_when>
    <thetext>Created attachment 171470
Patch

Made getVertexIntersectionVertices() inline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754782</commentid>
    <comment_count>8</comment_count>
      <attachid>171546</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-10-30 16:40:29 -0700</bug_when>
    <thetext>Created attachment 171546
Patch

Renamed ExclusionPolygonEdge fields: vertex1Index =&gt; vertexIndex1, vertex2Index =&gt; vertexIndex2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754790</commentid>
    <comment_count>9</comment_count>
      <attachid>171546</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-10-30 16:44:46 -0700</bug_when>
    <thetext>Comment on attachment 171546
Patch

LGTM. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754853</commentid>
    <comment_count>10</comment_count>
      <attachid>171546</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-30 18:38:11 -0700</bug_when>
    <thetext>Comment on attachment 171546
Patch

Clearing flags on attachment: 171546

Committed r132971: &lt;http://trac.webkit.org/changeset/132971&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754854</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-30 18:38:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>170002</attachid>
            <date>2012-10-22 15:37:46 -0700</date>
            <delta_ts>2012-10-22 15:37:46 -0700</delta_ts>
            <desc>Test case</desc>
            <filename>shape-inside-multiple-segments-001.html</filename>
            <type>text/html</type>
            <size>409</size>
            <attacher name="Bear Travis">betravis</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8c3R5bGU+CiAgICBib2R5IHsKICAgICAgICBmb250OiA1MHB4LzEgQWhl
bSwgc2Fucy1zZXJpZjsKICAgICAgICBtYXJnaW46IDA7CiAgICB9CiAgICAjc2hhcGUtaW5zaWRl
IHsKICAgICAgICBjb2xvcjogZ3JlZW47CiAgICAgICAgd2lkdGg6IDI1MHB4OwogICAgICAgIGhl
aWdodDogMTAwcHg7CiAgICAgICAgLXdlYmtpdC1zaGFwZS1pbnNpZGU6IHBvbHlnb24oMCAwLCAx
MDBweCAwLCAxMDBweCAyNXB4LCAxNTBweCAyNXB4LCAxNTBweCAwLCAyNTBweCAwLCAyNTBweCAx
MDBweCwgMCAxMDBweCk7CiAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkOwogICAgfQo8L3N0
eWxlPgo8L2hlYWQ+Cjxib2R5Pgo8ZGl2IGlkPSJzaGFwZS1pbnNpZGUiPlhYWFhYWFhYWDwvZGl2
Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171271</attachid>
            <date>2012-10-29 10:02:45 -0700</date>
            <delta_ts>2012-10-29 10:20:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>24997</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyOWM2ZDk1Li5mOTI0MGQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMTAt
MjkgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGNs
dXNpb25zXSBNdWx0aXBsZSBzZWdtZW50IHBvbHlnb24gbGF5b3V0IGRvZXMgbm90IGdldCBhbGwg
c2VnbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMDAzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIHRlc3RzIGZvciBDU1MgRXhjbHVzaW9uIHNoYXBlLWluc2lkZSBwb2x5Z29ucyB3aXRo
IGhvcml6b250YWwgZWRnZXMuCisgICAgICAgIENvcnJlY3RlZCB0aGUgc2ltcGxlLXBvbHlnb24u
anMgY29kZSBmb3IgY29tcHV0aW5nIGEgcG9seWdvbidzIGluY2x1ZGVkIGludGVydmFscy4KKwor
ICAgICAgICAqIGZhc3QvZXhjbHVzaW9ucy9yZXNvdXJjZXMvc2ltcGxlLXBvbHlnb24uanM6Cisg
ICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcmVjdGls
aW5lYXItcG9seWdvbi0wMDEtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9l
eGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcmVjdGlsaW5lYXItcG9seWdvbi0w
MDEuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9z
aGFwZS1pbnNpZGUtcmVjdGlsaW5lYXItcG9seWdvbi0wMDItZXhwZWN0ZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcmVj
dGlsaW5lYXItcG9seWdvbi0wMDIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNp
b25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDA0LWV4cGVjdGVk
Lmh0bWw6CisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNp
ZGUtc2ltcGxlLXBvbHlnb24tMDA0Lmh0bWw6CisKIDIwMTItMTAtMjkgIENocmlzdG9waGUgRHVt
ZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbV0syXVtXS1RSXSBF
bmFibGUgU2hhZG93IERPTSBhdCBydW50aW1lIGlmIGNvbXBpbGVkIHdpdGggU0hBRE9XX0RPTSBz
dXBwb3J0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvcmVzb3VyY2Vz
L3NpbXBsZS1wb2x5Z29uLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3Jlc291cmNl
cy9zaW1wbGUtcG9seWdvbi5qcwppbmRleCA4MDZjYWNhLi44ZThhOThkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvcmVzb3VyY2VzL3NpbXBsZS1wb2x5Z29uLmpzCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9yZXNvdXJjZXMvc2ltcGxlLXBvbHlnb24u
anMKQEAgLTM4LDQ5ICszOCw2MCBAQCBmdW5jdGlvbiBzdWJwaXhlbFJvdW5kKGYpIHsKIH0KIAog
Ly8gUmV0dXJuIHR3byBYIGludGVyY2VwdHMgb2YgdGhlIGhvcml6b250YWwgbGluZSBhdCB5LiBX
ZSdyZSBhc3N1bWluZyB0aGF0IHRoZSBwb2x5Z29uCi0vLyAwIG9yIDIgaW50ZXJjZXB0cyBmb3Ig
YWxsIHkuT2YgY291cnNlIHRoaXMgaXNuJ3QgdHJ1ZSBmb3IgcG9seWdvbnMgaW4gZ2VuZXJhbCwK
Ky8vIGhhcyAwIG9yIDIgaW50ZXJjZXB0cyBmb3IgYWxsIHkuIE9mIGNvdXJzZSB0aGlzIGlzbid0
IHRydWUgZm9yIHBvbHlnb25zIGluIGdlbmVyYWwsCiAvLyBqdXN0IHRoZSBvbmVzIHVzZWQgYnkg
dGhlIHRlc3QgY2FzZXMgc3VwcG9ydGVkIGJ5IHRoaXMgZmlsZS4KIAogZnVuY3Rpb24gcG9seWdv
blhJbnRlcmNlcHRzKHBvbHlnb24sIHkpIHsKICAgICB2YXIgdmVydGljZXMgPSBwb2x5Z29uLnZl
cnRpY2VzOwotICAgIHZhciB2ZXJ0ZXggPSBudWxsOyAgLy8gZmlyc3QgaW50ZXJzZWN0aW5nIG5v
bi1ob3Jpem9udGFsIGVkZ2UgdmVydGV4LCB2ZXJ0ZXgueSA9PSB5Ci0gICAgdmFyIHhJbnRlcmNl
cHRzID0gW107CisgICAgdmFyIGZvdW5kWEludGVyY2VwdCA9IGZhbHNlOworICAgIHZhciBpbnRl
cmNlcHRzTWluWCwgaW50ZXJjZXB0c01heFg7CiAKLSAgICBmb3IodmFyIGkgPSAwOyBpIDwgdmVy
dGljZXMubGVuZ3RoICYmIHhJbnRlcmNlcHRzLmxlbmd0aCA8IDI7IGkrKykgeworICAgIGZvcih2
YXIgaSA9IDA7IGkgPCB2ZXJ0aWNlcy5sZW5ndGg7IGkrKykgewogICAgICAgICB2YXIgdjEgPSB2
ZXJ0aWNlc1tpXTsKICAgICAgICAgdmFyIHYyID0gdmVydGljZXNbKGkgKyAxKSAlIHZlcnRpY2Vz
Lmxlbmd0aF07CiAKLSAgICAgICAgaWYgKHZlcnRleCA9PSB2MSB8fCB2ZXJ0ZXggPT0gdjIpCisg
ICAgICAgIGlmIChNYXRoLm1heCh2MS55LCB2Mi55KSA8IHkgfHwgTWF0aC5taW4odjEueSwgdjIu
eSkgPiB5KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgdmFyIG1pblkgPSBNYXRo
Lm1pbih2MS55LCB2Mi55KTsKLSAgICAgICAgdmFyIG1heFkgPSBNYXRoLm1heCh2MS55LCB2Mi55
KTsKLQotICAgICAgICBpZiAobWF4WSA8IHkgfHwgbWluWSA+IHkpCi0gICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICBpZiAobWluWSA9PSBtYXhZKQotICAgICAgICAgICAgcmV0dXJuIFt2
MS54LCB2Mi54XTsKLQotICAgICAgICBpZiAodjEueSA9PSB5KSB7Ci0gICAgICAgICAgICB4SW50
ZXJjZXB0cy5wdXNoKHYxLngpOwotICAgICAgICAgICAgaWYgKCF2ZXJ0ZXgpCi0gICAgICAgICAg
ICAgICAgdmVydGV4ID0gdjE7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAodjIueSA9PSB5
KSB7Ci0gICAgICAgICAgICB4SW50ZXJjZXB0cy5wdXNoKHYyLngpOwotICAgICAgICAgICAgaWYg
KCF2ZXJ0ZXgpCi0gICAgICAgICAgICAgICAgdmVydGV4ID0gdjI7CisgICAgICAgIGlmICh2MS55
ID09IHkgJiYgdjIueSA9PSB5KSB7ICAvLyBob3Jpem9udGFsIGVkZ2UgCisgICAgICAgICAgICBp
ZiAoeSAhPSBwb2x5Z29uLm1heFkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgICAgIGlmICghZm91bmRYSW50ZXJjZXB0KSB7CisgICAgICAgICAgICAgICAgaW50ZXJjZXB0
c01pblggPSBNYXRoLm1pbih2MS54LCB2Mi54KTsKKyAgICAgICAgICAgICAgICBpbnRlcmNlcHRz
TWF4WCA9IE1hdGgubWF4KHYxLngsIHYyLngpOworICAgICAgICAgICAgICAgIGZvdW5kWEludGVy
Y2VwdCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBpbnRlcmNlcHRzTWluWCA9IE1hdGgubWluKHYxLngsIHYyLngsIGludGVyY2VwdHNN
aW5YKTsKKyAgICAgICAgICAgICAgICBpbnRlcmNlcHRzTWF4WCA9IE1hdGgubWF4KHYxLngsIHYy
LngsIGludGVyY2VwdHNNYXhYKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIHhJbnRlcmNlcHRzLnB1c2goICgoeSAtIHYxLnkpICogKHYyLngg
LSB2MS54KSAvICh2Mi55IC0gdjEueSkpICsgdjEueCApOworICAgICAgICAgICAgdmFyIGludGVy
Y2VwdFg7CisKKyAgICAgICAgICAgIGlmICh2MS55ID09IHkpIAorICAgICAgICAgICAgICAgIGlu
dGVyY2VwdFggPSB2MS54OworICAgICAgICAgICAgZWxzZSBpZiAodjIueSA9PSB5KSAKKyAgICAg
ICAgICAgICAgICBpbnRlcmNlcHRYID0gdjIueDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBpbnRlcmNlcHRYID0gKCh5IC0gdjEueSkgKiAodjIueCAtIHYxLngpIC8gKHYyLnkg
LSB2MS55KSkgKyB2MS54OworCisgICAgICAgICAgICBpZiAoIWZvdW5kWEludGVyY2VwdCkgewor
ICAgICAgICAgICAgICAgIGludGVyY2VwdHNNaW5YID0gaW50ZXJjZXB0c01heFggPSBpbnRlcmNl
cHRYOworICAgICAgICAgICAgICAgIGZvdW5kWEludGVyY2VwdCA9IHRydWU7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpbnRlcmNlcHRzTWluWCA9
IE1hdGgubWluKGludGVyY2VwdFgsIGludGVyY2VwdHNNaW5YKTsKKyAgICAgICAgICAgICAgICBp
bnRlcmNlcHRzTWF4WCA9IE1hdGgubWF4KGludGVyY2VwdFgsIGludGVyY2VwdHNNYXhYKTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICh4SW50ZXJjZXB0cy5sZW5n
dGggIT0gMikKKyAgICBpZiAoIWZvdW5kWEludGVyY2VwdCkKICAgICAgICAgcmV0dXJuIFtdOwog
Ci0gICAgcmV0dXJuIFtzdWJwaXhlbFJvdW5kKE1hdGgubWluLmFwcGx5KG51bGwsIHhJbnRlcmNl
cHRzKSksIE1hdGguZmxvb3IoTWF0aC5tYXguYXBwbHkobnVsbCwgeEludGVyY2VwdHMpKV07Cisg
ICAgcmV0dXJuIFtzdWJwaXhlbFJvdW5kKGludGVyY2VwdHNNaW5YKSwgTWF0aC5mbG9vcihpbnRl
cmNlcHRzTWF4WCldOwogfQogCiBmdW5jdGlvbiBwb2x5Z29uTGluZUludGVyY2VwdHMocG9seWdv
biwgeSwgbGluZUhlaWdodCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNp
b25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcmVjdGlsaW5lYXItcG9seWdvbi0wMDEtZXhw
ZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hh
cGUtaW5zaWRlLXJlY3RpbGluZWFyLXBvbHlnb24tMDAxLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc5MmQ4NwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJlY3Rp
bGluZWFyLXBvbHlnb24tMDAxLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaW1w
bGUtcG9seWdvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKQorICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1c2lvbnNF
bmFibGVkKHRydWUpOworCisgICAgLy8gUmVjdGlsaW5lYXIgcG9seWdvbiB3aXRoIHRoaXMgc2hh
cGU6CisgICAgLy8gICBYWFgKKyAgICAvLyBYWFhYWFhYCisgICAgLy8gWFhYWFhYWAorCisgICAg
dmFyIHZlcnRpY2VzID0gW3t4OjAsIHk6NTB9LCB7eDoxMDAsIHk6NTB9LCB7eDoxMDAsIHk6MH0s
IHt4OjI1MCwgeTowfSwge3g6MjUwLCB5OjUwfSwge3g6MzUwLCB5OjUwfSwge3g6MzUwLCB5OjE1
MH0sIHt4OjAsIHk6MTUwfV07CisgICAgdmFyIGxpbmVIZWlnaHQgPSA1MDsKKyAgICB2YXIgaGFz
U3VicGl4ZWxTdXBwb3J0ID0gZmFsc2U7ICAvLyBUZXN0IHJlc3VsdHMgZG8gbm90IGRlcGVuZCBv
biBzdWJwaXhlbCBsYXlvdXQuCis8L3NjcmlwdD4KKworPHN0eWxlIGlkPSJzdHlsZXNoZWV0Ij4K
KyAgICAjcG9seWdvbi1zaGFwZS1pbnNpZGUsICNwb2x5Z29uLXN2Zy1zaGFwZSB7CisgICAgICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgbGVmdDogMHB4OworICAgICAgICB0b3A6IDBw
eDsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9ImNyZWF0ZVBvbHln
b25TaGFwZUluc2lkZVRlc3RDYXNlRXhwZWN0ZWQoKSI+CisgIDxzdmcgaWQ9InBvbHlnb24tc3Zn
LXNoYXBlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPgorICA8ZGl2
IGlkPSJwb2x5Z29uLXNoYXBlLWluc2lkZSI+PC9kaXY+CisgIDxwIGlkPSJpbmZvcm1hdGl2ZS10
ZXh0Ij4KKyAgICAgIFRoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBJdCBjcmVhdGVz
IGEgcmVjdGlsaW5lYXIgcG9seWdvbmFsIHNoYXBlLWluc2lkZSBhbmQgYQorICAgICAgbWF0Y2hp
bmcgZmlsbGVkIFNWRyBwb2x5Z29uLiBUaGUgY29udGVudCBzaG91bGQganVzdCBmaWxsIHRoZSBz
aGFwZSB3aXRoIGFsdGVybmF0aW5nCisgICAgICBibGFjayBhbmQgZW1wdHkgcmVjdGFuZ2xlcyBv
biBlYWNoIGxpbmUuPC9wPgorPC9ib2R5PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yZWN0aWxpbmVh
ci1wb2x5Z29uLTAwMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWlu
c2lkZS9zaGFwZS1pbnNpZGUtcmVjdGlsaW5lYXItcG9seWdvbi0wMDEuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Yzk0NzRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcmVjdGls
aW5lYXItcG9seWdvbi0wMDEuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NpbXBsZS1wb2x5Z29u
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAg
ICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0Q1NTRXhjbHVzaW9uc0VuYWJsZWQodHJ1
ZSk7CisKKyAgICAvLyBSZWN0aWxpbmVhciBwb2x5Z29uIHdpdGggdGhpcyBzaGFwZToKKyAgICAv
LyAgIFhYWAorICAgIC8vIFhYWFhYWFgKKyAgICAvLyBYWFhYWFhYCisKKyAgICB2YXIgdmVydGlj
ZXMgPSBbe3g6MCwgeTo1MH0sIHt4OjEwMCwgeTo1MH0sIHt4OjEwMCwgeTowfSwge3g6MjUwLCB5
OjB9LCB7eDoyNTAsIHk6NTB9LCB7eDozNTAsIHk6NTB9LCB7eDozNTAsIHk6MTUwfSwge3g6MCwg
eToxNTB9XTsKKyAgICB2YXIgbGluZUhlaWdodCA9IDUwOworICAgIHZhciBoYXNTdWJwaXhlbFN1
cHBvcnQgPSBmYWxzZTsgIC8vIFRlc3QgcmVzdWx0cyBkbyBub3QgZGVwZW5kIG9uIHN1YnBpeGVs
IGxheW91dC4KKzwvc2NyaXB0PgorCis8c3R5bGUgaWQ9InN0eWxlc2hlZXQiPgorICAgICNwb2x5
Z29uLXNoYXBlLWluc2lkZSwgI3BvbHlnb24tc3ZnLXNoYXBlIHsKKyAgICAgICAgcG9zaXRpb246
IGFic29sdXRlOworICAgICAgICBsZWZ0OiAwcHg7CisgICAgICAgIHRvcDogMHB4OworICAgIH0K
Kzwvc3R5bGU+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0iY3JlYXRlUG9seWdvblNoYXBlSW5z
aWRlVGVzdENhc2UoKTsiPgorICA8c3ZnIGlkPSJwb2x5Z29uLXN2Zy1zaGFwZSIgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48L3N2Zz4KKyAgPGRpdiBpZD0icG9seWdvbi1zaGFw
ZS1pbnNpZGUiPjwvZGl2PgorICA8cCBpZD0iaW5mb3JtYXRpdmUtdGV4dCI+CisgICAgICBUaGlz
IHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udC4gSXQgY3JlYXRlcyBhIHJlY3RpbGluZWFyIHBv
bHlnb25hbCBzaGFwZS1pbnNpZGUgYW5kIGEKKyAgICAgIG1hdGNoaW5nIGZpbGxlZCBTVkcgcG9s
eWdvbi4gVGhlIGNvbnRlbnQgc2hvdWxkIGp1c3QgZmlsbCB0aGUgc2hhcGUgd2l0aCBhbHRlcm5h
dGluZworICAgICAgYmxhY2sgYW5kIGVtcHR5IHJlY3RhbmdsZXMgb24gZWFjaCBsaW5lLjwvcD4K
KzwvYm9keT4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNp
b25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcmVjdGlsaW5lYXItcG9seWdvbi0wMDItZXhw
ZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hh
cGUtaW5zaWRlLXJlY3RpbGluZWFyLXBvbHlnb24tMDAyLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzNhMzAyMwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJlY3Rp
bGluZWFyLXBvbHlnb24tMDAyLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaW1w
bGUtcG9seWdvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKQorICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1c2lvbnNF
bmFibGVkKHRydWUpOworCisgICAgLy8gUmVjdGlsaW5lYXIgcG9seWdvbiB3aXRoIHRoaXMgc2hh
cGU6CisgICAgLy8gICBYWFgKKyAgICAvLyBYWFhYWFhYCisgICAgLy8gWFhYWFhYWAorICAgIC8v
ICAgWFhYCisKKyAgICB2YXIgdmVydGljZXMgPSBbe3g6MCwgeTo1MH0sIHt4OjEwMCwgeTo1MH0s
IHt4OjEwMCwgeTowfSwge3g6MjUwLCB5OjB9LCB7eDoyNTAsIHk6NTB9LCB7eDozNTAsIHk6NTB9
LCB7eDozNTAsIHk6MTUwfSwge3g6MjUwLCB5OjE1MH0sIHt4OjI1MCwgeToyMDB9LCB7eDoxMDAs
IHk6MjAwfSwge3g6MTAwLCB5OjE1MH0sIHt4OjAsIHk6MTUwfV07CisgICAgdmFyIGxpbmVIZWln
aHQgPSA1MDsKKyAgICB2YXIgaGFzU3VicGl4ZWxTdXBwb3J0ID0gZmFsc2U7ICAvLyBUZXN0IHJl
c3VsdHMgZG8gbm90IGRlcGVuZCBvbiBzdWJwaXhlbCBsYXlvdXQuCis8L3NjcmlwdD4KKworPHN0
eWxlIGlkPSJzdHlsZXNoZWV0Ij4KKyAgICAjcG9seWdvbi1zaGFwZS1pbnNpZGUsICNwb2x5Z29u
LXN2Zy1zaGFwZSB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgbGVmdDog
MHB4OworICAgICAgICB0b3A6IDBweDsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorCis8Ym9k
eSBvbmxvYWQ9ImNyZWF0ZVBvbHlnb25TaGFwZUluc2lkZVRlc3RDYXNlRXhwZWN0ZWQoKTsiPgor
ICA8c3ZnIGlkPSJwb2x5Z29uLXN2Zy1zaGFwZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIj48L3N2Zz4KKyAgPGRpdiBpZD0icG9seWdvbi1zaGFwZS1pbnNpZGUiPjwvZGl2Pgor
ICA8cCBpZD0iaW5mb3JtYXRpdmUtdGV4dCI+CisgICAgICBUaGlzIHRlc3QgcmVxdWlyZXMgdGhl
IEFoZW0gZm9udC4gSXQgY3JlYXRlcyBhIHJlY3RpbGluZWFyIHBvbHlnb25hbCBzaGFwZS1pbnNp
ZGUgYW5kIGEKKyAgICAgIG1hdGNoaW5nIGZpbGxlZCBTVkcgcG9seWdvbi4gVGhlIGNvbnRlbnQg
c2hvdWxkIGp1c3QgZmlsbCB0aGUgc2hhcGUgd2l0aCBhbHRlcm5hdGluZworICAgICAgYmxhY2sg
YW5kIGVtcHR5IHJlY3RhbmdsZXMgb24gZWFjaCBsaW5lLjwvcD4KKzwvYm9keT4KKworPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9z
aGFwZS1pbnNpZGUtcmVjdGlsaW5lYXItcG9seWdvbi0wMDIuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJlY3RpbGluZWFyLXBvbHln
b24tMDAyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNiMzFlMgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNp
ZGUvc2hhcGUtaW5zaWRlLXJlY3RpbGluZWFyLXBvbHlnb24tMDAyLmh0bWwKQEAgLTAsMCArMSwz
NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9zaW1wbGUtcG9seWdvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENT
U0V4Y2x1c2lvbnNFbmFibGVkKHRydWUpOworCisgICAgLy8gUmVjdGlsaW5lYXIgcG9seWdvbiB3
aXRoIHRoaXMgc2hhcGU6CisgICAgLy8gICBYWFgKKyAgICAvLyBYWFhYWFhYCisgICAgLy8gWFhY
WFhYWAorICAgIC8vICAgWFhYCisgICAgdmFyIHZlcnRpY2VzID0gW3t4OjAsIHk6NTB9LCB7eDox
MDAsIHk6NTB9LCB7eDoxMDAsIHk6MH0sIHt4OjI1MCwgeTowfSwge3g6MjUwLCB5OjUwfSwge3g6
MzUwLCB5OjUwfSwge3g6MzUwLCB5OjE1MH0sIHt4OjI1MCwgeToxNTB9LCB7eDoyNTAsIHk6MjAw
fSwge3g6MTAwLCB5OjIwMH0sIHt4OjEwMCwgeToxNTB9LCB7eDowLCB5OjE1MH1dOworICAgIHZh
ciBsaW5lSGVpZ2h0ID0gNTA7CisgICAgdmFyIGhhc1N1YnBpeGVsU3VwcG9ydCA9IGZhbHNlOyAg
Ly8gVGVzdCByZXN1bHRzIGRvIG5vdCBkZXBlbmQgb24gc3VicGl4ZWwgbGF5b3V0LgorPC9zY3Jp
cHQ+CisKKzxzdHlsZSBpZD0ic3R5bGVzaGVldCI+CisgICAgI3BvbHlnb24tc2hhcGUtaW5zaWRl
LCAjcG9seWdvbi1zdmctc2hhcGUgeworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAg
ICAgIGxlZnQ6IDBweDsKKyAgICAgICAgdG9wOiAwcHg7CisgICAgfQorPC9zdHlsZT4KKzwvaGVh
ZD4KKworPGJvZHkgb25sb2FkPSJjcmVhdGVQb2x5Z29uU2hhcGVJbnNpZGVUZXN0Q2FzZSgpOyI+
CisgIDxzdmcgaWQ9InBvbHlnb24tc3ZnLXNoYXBlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciPjwvc3ZnPgorICA8ZGl2IGlkPSJwb2x5Z29uLXNoYXBlLWluc2lkZSI+PC9kaXY+
CisgIDxwIGlkPSJpbmZvcm1hdGl2ZS10ZXh0Ij4KKyAgICAgIFRoaXMgdGVzdCByZXF1aXJlcyB0
aGUgQWhlbSBmb250LiBJdCBjcmVhdGVzIGEgcmVjdGlsaW5lYXIgcG9seWdvbmFsIHNoYXBlLWlu
c2lkZSBhbmQgYQorICAgICAgbWF0Y2hpbmcgZmlsbGVkIFNWRyBwb2x5Z29uLiBUaGUgY29udGVu
dCBzaG91bGQganVzdCBmaWxsIHRoZSBzaGFwZSB3aXRoIGFsdGVybmF0aW5nCisgICAgICBibGFj
ayBhbmQgZW1wdHkgcmVjdGFuZ2xlcyBvbiBlYWNoIGxpbmUuPC9wPgorPC9ib2R5PgorCis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRl
L3NoYXBlLWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXNpbXBsZS1wb2x5
Z29uLTAwNC1leHBlY3RlZC5odG1sCmluZGV4IDU2MzhjN2MuLjdiNmNmMTMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXNp
bXBsZS1wb2x5Z29uLTAwNC1leHBlY3RlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhj
bHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXNpbXBsZS1wb2x5Z29uLTAwNC1leHBl
Y3RlZC5odG1sCkBAIC04LDcgKzgsNyBAQAogCiAgICAgLy8gQ29uY2F2ZSBhc3N5bWV0cmljIHNp
bXBsZSBwb2x5Z29uIHdpdGggaG9yaXpvbnRhbCB0b3AgYW5kIGJvdHRvbSBlZGdlcy4gIEEgdmVy
c2lvbiBvZiB0aGUgMDAxCiAgICAgLy8gaG91cmdsYXNzIHNoYXBlIHdpdGggdmVydGljYWwgZWRn
ZXMgaW4gdGhlIGNlbnRlci4KLSAgICB2YXIgdmVydGljZXMgPSBbe3g6NDAsIHk6NDB9LCB7eDo0
NDAsIHk6NDB9LCB7eDozMjAsIHk6MTYwfSwge3g6MzIwLCB5OjI0MH0sIHt4OjQ4MCwgeTo0MDB9
LCB7eDo4MCwgeTo0MDB9LCB7eDoyMDAsIHk6MjgwfSwge3g6MjAwLCB5OjIwMH1dfTsKKyAgICB2
YXIgdmVydGljZXMgPSBbe3g6NDAsIHk6NDB9LCB7eDo0NDAsIHk6NDB9LCB7eDozMjAsIHk6MTYw
fSwge3g6MzIwLCB5OjI0MH0sIHt4OjQ4MCwgeTo0MDB9LCB7eDo4MCwgeTo0MDB9LCB7eDoyMDAs
IHk6MjgwfSwge3g6MjAwLCB5OjIwMH1dOwogICAgIHZhciBsaW5lSGVpZ2h0ID0gNDA7CiAgICAg
dmFyIGhhc1N1YnBpeGVsU3VwcG9ydDsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9l
eGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDA0Lmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lk
ZS1zaW1wbGUtcG9seWdvbi0wMDQuaHRtbAppbmRleCBlNTk0ZGYwLi4xZGI1YTRkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lk
ZS1zaW1wbGUtcG9seWdvbi0wMDQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lv
bnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDQuaHRtbApAQCAt
OCw3ICs4LDcgQEAKIAogICAgIC8vIENvbmNhdmUgYXNzeW1ldHJpYyBzaW1wbGUgcG9seWdvbiB3
aXRoIGhvcml6b250YWwgdG9wIGFuZCBib3R0b20gZWRnZXMuICBBIHZlcnNpb24gb2YgdGhlIDAw
MQogICAgIC8vIGhvdXJnbGFzcyBzaGFwZSB3aXRoIHZlcnRpY2FsIGVkZ2VzIGluIHRoZSBjZW50
ZXIuCi0gICAgdmFyIHZlcnRpY2VzID0gW3t4OjQwLCB5OjQwfSwge3g6NDQwLCB5OjQwfSwge3g6
MzIwLCB5OjE2MH0sIHt4OjMyMCwgeToyNDB9LCB7eDo0ODAsIHk6NDAwfSwge3g6ODAsIHk6NDAw
fSwge3g6MjAwLCB5OjI4MH0sIHt4OjIwMCwgeToyMDB9XX07CisgICAgdmFyIHZlcnRpY2VzID0g
W3t4OjQwLCB5OjQwfSwge3g6NDQwLCB5OjQwfSwge3g6MzIwLCB5OjE2MH0sIHt4OjMyMCwgeToy
NDB9LCB7eDo0ODAsIHk6NDAwfSwge3g6ODAsIHk6NDAwfSwge3g6MjAwLCB5OjI4MH0sIHt4OjIw
MCwgeToyMDB9XTsKICAgICB2YXIgbGluZUhlaWdodCA9IDQwOwogICAgIHZhciBoYXNTdWJwaXhl
bFN1cHBvcnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwN2RlZGU5Li4wNDdlNWY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTItMTAtMjkgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5j
b20+CisKKyAgICAgICAgW0NTUyBFeGNsdXNpb25zXSBNdWx0aXBsZSBzZWdtZW50IHBvbHlnb24g
bGF5b3V0IGRvZXMgbm90IGdldCBhbGwgc2VnbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDAzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENvcnJlY3RlZCB0aGUgYWxnb3JpdGhtIGZvciBjb21w
dXRpbmcgaW5jbHVkZWQgcG9seWdvbiBpbnRlcnZhbHMgZm9yIHJlY3RpbGluZWFyIHBvbHlnb25z
LAorICAgICAgICBhbmQgcG9seWdvbnMgd2l0aCBob3Jpem9udGFsIGVkZ2VzIGluIGdlbmVyYWwu
CisKKyAgICAgICAgVGVzdHM6IGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5z
aWRlLXJlY3RpbGluZWFyLXBvbHlnb24tMDAxLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXhj
bHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJlY3RpbGluZWFyLXBvbHlnb24tMDAy
Lmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmNwcDogUmVtb3Zl
ZCBzb21lIGludGVybmFsIGRlYWQgY29kZSByZWxhdGVkIHRvIHRoZSBuby1sb25nZXItdXNlZCBz
b3J0ZWRFZGdlc01pblkgVmVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6RXhjbHVzaW9uUG9seWdv
bjo6RXhjbHVzaW9uUG9seWdvbik6IEluaXRpYWxpemUgbmV3IEV4Y2x1c2lvblBvbHlnb25FZGdl
IGVkZ2VJbmRleCBmaWVsZC4KKyAgICAgICAgKFdlYkNvcmU6OmdldFZlcnRleEludGVyc2VjdGlv
blZlcnRpY2VzKTogUmV0dXJuIHRoZSBwcmV2aW91cywgbmV4dCwgYW5kIHRhcmdldCB2ZXJ0ZXgg
aW5kaWNlcyBmb3IgYSB2ZXJ0ZXggaW50ZXJzZWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6RXhj
bHVzaW9uUG9seWdvbjo6Y29tcHV0ZVhJbnRlcnNlY3Rpb25zKTogUmVmYWN0b3JlZCB0aGUgY29y
ZSBvZiB0aGlzIG1ldGhvZCB0byBpbXByb3ZlIGhhbmRsaW5nIG9mIGhvcml6b250YWwgZWRnZXMu
CisgICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25Qb2x5Z29uOjpjb21wdXRlRWRnZUludGVyc2Vj
dGlvbnMpOiBJZ25vcmUgemVyby13aWR0aCBlZGdlcy4KKyAgICAgICAgKiByZW5kZXJpbmcvRXhj
bHVzaW9uUG9seWdvbi5oOiBSZW1vdmVkIHRoZSByaWdodFZlcnRleFkoKSBtZXRob2QsIHNpbmNl
IGl0J3Mgbm8gbG9uZ2VyIHVzZWQuCisgICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25Qb2x5Z29u
OjplZGdlQXQpOiBOZXcgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6RXhjbHVzaW9uUG9seWdv
bjo6bnVtYmVyT2ZFZGdlcyk6IE5ldyBtZXRob2QuCisgICAgICAgIChFeGNsdXNpb25Qb2x5Z29u
KTogQWRkZWQgc3VwcG9ydCBmb3IgcmV0cmlldmluZyBlZGdlcy4KKyAgICAgICAgKFdlYkNvcmU6
OkV4Y2x1c2lvblBvbHlnb25FZGdlOjp2ZXJ0ZXgxKTogVXNlIHZlcnRleDFJbmRleC4KKyAgICAg
ICAgKFdlYkNvcmU6OkV4Y2x1c2lvblBvbHlnb25FZGdlOjp2ZXJ0ZXgyKTogVXNlIHZlcnRleDJJ
bmRleC4KKyAgICAgICAgKEV4Y2x1c2lvblBvbHlnb25FZGdlKTogUmVuYW1lZCBpbmRleDEsIGlu
ZGV4MiBmaWVsZHMgdG8gdmVydGV4MUluZGV4LCB2ZXJ0ZXgySW5kZXguCisgICAgICAgIChXZWJD
b3JlOjpFeGNsdXNpb25Qb2x5Z29uRWRnZTo6cHJldmlvdXNFZGdlKTogTmV3IG1ldGhvZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV4Y2x1c2lvblBvbHlnb25FZGdlOjpuZXh0RWRnZSk6IE5ldyBtZXRo
b2QuCisKIDIwMTItMTAtMjkgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4K
IAogICAgICAgICBbUXRdIFRleHQgd2l0aCB6ZXJvIGZvbnQgc2l6ZSByZW5kZXJzIGFzIFggcHgg
c29tZXRpbWVzLCBjYXVzaW5nIGZhc3QvdGV4dC96ZXJvLWZvbnQtc2l6ZS0yLmh0bWwgdG8gZmFp
bApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uY3BwCmluZGV4
IGVhZWViYTcuLmRkMzM1MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9F
eGNsdXNpb25Qb2x5Z29uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVz
aW9uUG9seWdvbi5jcHAKQEAgLTQ3LDExICs0Nyw2IEBAIHN0cnVjdCBFZGdlSW50ZXJzZWN0aW9u
IHsKICAgICBFZGdlSW50ZXJzZWN0aW9uVHlwZSB0eXBlOwogfTsKIAotc3RhdGljIGJvb2wgY29t
cGFyZUVkZ2VNaW5ZKGNvbnN0IEV4Y2x1c2lvblBvbHlnb25FZGdlKiBlMSwgY29uc3QgRXhjbHVz
aW9uUG9seWdvbkVkZ2UqIGUyKQotewotICAgIHJldHVybiBlMS0+bWluWSgpIDwgZTItPm1pblko
KTsKLX0KLQogRXhjbHVzaW9uUG9seWdvbjo6RXhjbHVzaW9uUG9seWdvbihQYXNzT3duUHRyPFZl
Y3RvcjxGbG9hdFBvaW50PiA+IHZlcnRpY2VzLCBXaW5kUnVsZSBmaWxsUnVsZSkKICAgICA6IEV4
Y2x1c2lvblNoYXBlKCkKICAgICAsIG1fdmVydGljZXModmVydGljZXMpCkBAIC02MCw3ICs1NSw2
IEBAIEV4Y2x1c2lvblBvbHlnb246OkV4Y2x1c2lvblBvbHlnb24oUGFzc093blB0cjxWZWN0b3I8
RmxvYXRQb2ludD4gPiB2ZXJ0aWNlcywgV2luCiAgICAgdW5zaWduZWQgblZlcnRpY2VzID0gbnVt
YmVyT2ZWZXJ0aWNlcygpOwogICAgIG1fZWRnZXMucmVzaXplKG5WZXJ0aWNlcyk7CiAgICAgbV9l
bXB0eSA9IG5WZXJ0aWNlcyA8IDM7Ci0gICAgVmVjdG9yPEV4Y2x1c2lvblBvbHlnb25FZGdlKj4g
c29ydGVkRWRnZXNNaW5ZKG5WZXJ0aWNlcyk7CiAKICAgICBpZiAoblZlcnRpY2VzKQogICAgICAg
ICBtX2JvdW5kaW5nQm94LnNldExvY2F0aW9uKHZlcnRleEF0KDApKTsKQEAgLTY5LDE0ICs2Mywx
MSBAQCBFeGNsdXNpb25Qb2x5Z29uOjpFeGNsdXNpb25Qb2x5Z29uKFBhc3NPd25QdHI8VmVjdG9y
PEZsb2F0UG9pbnQ+ID4gdmVydGljZXMsIFdpbgogICAgICAgICBjb25zdCBGbG9hdFBvaW50JiB2
ZXJ0ZXggPSB2ZXJ0ZXhBdChpKTsKICAgICAgICAgbV9ib3VuZGluZ0JveC5leHRlbmQodmVydGV4
KTsKICAgICAgICAgbV9lZGdlc1tpXS5wb2x5Z29uID0gdGhpczsKLSAgICAgICAgbV9lZGdlc1tp
XS5pbmRleDEgPSBpOwotICAgICAgICBtX2VkZ2VzW2ldLmluZGV4MiA9IChpICsgMSkgJSBuVmVy
dGljZXM7Ci0KLSAgICAgICAgc29ydGVkRWRnZXNNaW5ZW2ldID0gJm1fZWRnZXNbaV07CisgICAg
ICAgIG1fZWRnZXNbaV0udmVydGV4MUluZGV4ID0gaTsKKyAgICAgICAgbV9lZGdlc1tpXS52ZXJ0
ZXgySW5kZXggPSAoaSArIDEpICUgblZlcnRpY2VzOworICAgICAgICBtX2VkZ2VzW2ldLmVkZ2VJ
bmRleCA9IGk7CiAgICAgfQogCi0gICAgc3RkOjpzb3J0KHNvcnRlZEVkZ2VzTWluWS5iZWdpbigp
LCBzb3J0ZWRFZGdlc01pblkuZW5kKCksIFdlYkNvcmU6OmNvbXBhcmVFZGdlTWluWSk7Ci0KICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9lZGdlcy5zaXplKCk7IGkrKykgewogICAgICAg
ICBFeGNsdXNpb25Qb2x5Z29uRWRnZSogZWRnZSA9ICZtX2VkZ2VzW2ldOwogICAgICAgICBtX2Vk
Z2VUcmVlLmFkZChFZGdlSW50ZXJ2YWwoZWRnZS0+bWluWSgpLCBlZGdlLT5tYXhZKCksIGVkZ2Up
KTsKQEAgLTExOCwxNSArMTA5LDI4IEBAIHN0YXRpYyBib29sIGNvbXB1dGVYSW50ZXJzZWN0aW9u
KGNvbnN0IEV4Y2x1c2lvblBvbHlnb25FZGdlKiBlZGdlUG9pbnRlciwgZmxvYXQKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotZmxvYXQgRXhjbHVzaW9uUG9seWdvbjo6cmlnaHRWZXJ0ZXhZKHVuc2ln
bmVkIGluZGV4KSBjb25zdAorc3RhdGljIGJvb2wgZ2V0VmVydGV4SW50ZXJzZWN0aW9uVmVydGlj
ZXMoY29uc3QgRWRnZUludGVyc2VjdGlvbiYgaW50ZXJzZWN0aW9uLCBGbG9hdFBvaW50JiBwcmV2
VmVydGV4LCBGbG9hdFBvaW50JiB0aGlzVmVydGV4LCBGbG9hdFBvaW50JiBuZXh0VmVydGV4KQog
ewotICAgIHVuc2lnbmVkIG5WZXJ0aWNlcyA9IG51bWJlck9mVmVydGljZXMoKTsKLSAgICBjb25z
dCBGbG9hdFBvaW50JiB2ZXJ0ZXgxID0gdmVydGV4QXQoKGluZGV4ICsgMSkgJSBuVmVydGljZXMp
OwotICAgIGNvbnN0IEZsb2F0UG9pbnQmIHZlcnRleDIgPSB2ZXJ0ZXhBdCgoaW5kZXggLSAxKSAl
IG5WZXJ0aWNlcyk7CisgICAgaWYgKGludGVyc2VjdGlvbi50eXBlICE9IFZlcnRleE1pblkgJiYg
aW50ZXJzZWN0aW9uLnR5cGUgIT0gVmVydGV4TWF4WSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgICAgIAorICAgIEFTU0VSVChpbnRlcnNlY3Rpb24uZWRnZSAmJiBpbnRlcnNl
Y3Rpb24uZWRnZS0+cG9seWdvbik7CisgICAgY29uc3QgRXhjbHVzaW9uUG9seWdvbiYgcG9seWdv
biA9ICooaW50ZXJzZWN0aW9uLmVkZ2UtPnBvbHlnb24pOworICAgIGNvbnN0IEV4Y2x1c2lvblBv
bHlnb25FZGdlJiB0aGlzRWRnZSA9ICooaW50ZXJzZWN0aW9uLmVkZ2UpOworCisgICAgaWYgKChp
bnRlcnNlY3Rpb24udHlwZSA9PSBWZXJ0ZXhNaW5ZICYmICh0aGlzRWRnZS52ZXJ0ZXgxKCkueSgp
IDwgdGhpc0VkZ2UudmVydGV4MigpLnkoKSkpIHx8IAorICAgICAgICAoaW50ZXJzZWN0aW9uLnR5
cGUgPT0gVmVydGV4TWF4WSAmJiAodGhpc0VkZ2UudmVydGV4MSgpLnkoKSA+IHRoaXNFZGdlLnZl
cnRleDIoKS55KCkpKSkgeworICAgICAgICBwcmV2VmVydGV4ID0gcG9seWdvbi52ZXJ0ZXhBdCh0
aGlzRWRnZS5wcmV2aW91c0VkZ2UoKS52ZXJ0ZXgySW5kZXgpOworICAgICAgICB0aGlzVmVydGV4
ID0gcG9seWdvbi52ZXJ0ZXhBdCh0aGlzRWRnZS52ZXJ0ZXgxSW5kZXgpOworICAgICAgICBuZXh0
VmVydGV4ID0gcG9seWdvbi52ZXJ0ZXhBdCh0aGlzRWRnZS52ZXJ0ZXgySW5kZXgpOworICAgIH0K
KyAgICBlbHNlIHsKKyAgICAgICAgcHJldlZlcnRleCA9IHBvbHlnb24udmVydGV4QXQodGhpc0Vk
Z2UudmVydGV4MUluZGV4KTsKKyAgICAgICAgdGhpc1ZlcnRleCA9IHBvbHlnb24udmVydGV4QXQo
dGhpc0VkZ2UudmVydGV4MkluZGV4KTsKKyAgICAgICAgbmV4dFZlcnRleCA9IHBvbHlnb24udmVy
dGV4QXQodGhpc0VkZ2UubmV4dEVkZ2UoKS52ZXJ0ZXgxSW5kZXgpOworICAgIH0KIAotICAgIGlm
ICh2ZXJ0ZXgxLngoKSA9PSB2ZXJ0ZXgyLngoKSkKLSAgICAgICAgcmV0dXJuIHZlcnRleDEueSgp
ID4gdmVydGV4Mi55KCkgPyB2ZXJ0ZXgxLnkoKSA6IHZlcnRleDIueSgpOwotICAgIHJldHVybiB2
ZXJ0ZXgxLngoKSA+IHZlcnRleDIueCgpID8gdmVydGV4MS55KCkgOiB2ZXJ0ZXgyLnkoKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgYXBwZW5kSW50ZXJ2YWxYKGZsb2F0IHgs
IGJvb2wgaW5zaWRlLCBWZWN0b3I8RXhjbHVzaW9uSW50ZXJ2YWw+JiByZXN1bHQpCkBAIC0xNTUs
NyArMTU5LDcgQEAgdm9pZCBFeGNsdXNpb25Qb2x5Z29uOjpjb21wdXRlWEludGVyc2VjdGlvbnMo
ZmxvYXQgeSwgVmVjdG9yPEV4Y2x1c2lvbkludGVydmFsPiYKICAgICBFZGdlSW50ZXJzZWN0aW9u
IGludGVyc2VjdGlvbjsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb3ZlcmxhcHBpbmdF
ZGdlcy5zaXplKCk7IGkrKykgewogICAgICAgICBFeGNsdXNpb25Qb2x5Z29uRWRnZSogZWRnZSA9
IHN0YXRpY19jYXN0PEV4Y2x1c2lvblBvbHlnb25FZGdlKj4ob3ZlcmxhcHBpbmdFZGdlc1tpXS5k
YXRhKCkpOwotICAgICAgICBpZiAoY29tcHV0ZVhJbnRlcnNlY3Rpb24oZWRnZSwgeSwgaW50ZXJz
ZWN0aW9uKSkKKyAgICAgICAgaWYgKGNvbXB1dGVYSW50ZXJzZWN0aW9uKGVkZ2UsIHksIGludGVy
c2VjdGlvbikgJiYgaW50ZXJzZWN0aW9uLnR5cGUgIT0gVmVydGV4WUJvdGgpCiAgICAgICAgICAg
ICBpbnRlcnNlY3Rpb25zLmFwcGVuZChpbnRlcnNlY3Rpb24pOwogICAgIH0KICAgICBpZiAoaW50
ZXJzZWN0aW9ucy5zaXplKCkgPCAyKQpAQCAtMTY5LDcgKzE3Myw2IEBAIHZvaWQgRXhjbHVzaW9u
UG9seWdvbjo6Y29tcHV0ZVhJbnRlcnNlY3Rpb25zKGZsb2F0IHksIFZlY3RvcjxFeGNsdXNpb25J
bnRlcnZhbD4mCiAKICAgICB3aGlsZSAoaW5kZXggPCBpbnRlcnNlY3Rpb25zLnNpemUoKSkgewog
ICAgICAgICBjb25zdCBFZGdlSW50ZXJzZWN0aW9uJiB0aGlzSW50ZXJzZWN0aW9uID0gaW50ZXJz
ZWN0aW9uc1tpbmRleF07Ci0KICAgICAgICAgaWYgKGluZGV4ICsgMSA8IGludGVyc2VjdGlvbnMu
c2l6ZSgpKSB7CiAgICAgICAgICAgICBjb25zdCBFZGdlSW50ZXJzZWN0aW9uJiBuZXh0SW50ZXJz
ZWN0aW9uID0gaW50ZXJzZWN0aW9uc1tpbmRleCArIDFdOwogICAgICAgICAgICAgaWYgKCh0aGlz
SW50ZXJzZWN0aW9uLnBvaW50LngoKSA9PSBuZXh0SW50ZXJzZWN0aW9uLnBvaW50LngoKSkgJiYg
KHRoaXNJbnRlcnNlY3Rpb24udHlwZSA9PSBWZXJ0ZXhNaW5ZIHx8IHRoaXNJbnRlcnNlY3Rpb24u
dHlwZSA9PSBWZXJ0ZXhNYXhZKSkgewpAQCAtMTc3LDkgKzE4MCw3IEBAIHZvaWQgRXhjbHVzaW9u
UG9seWdvbjo6Y29tcHV0ZVhJbnRlcnNlY3Rpb25zKGZsb2F0IHksIFZlY3RvcjxFeGNsdXNpb25J
bnRlcnZhbD4mCiAgICAgICAgICAgICAgICAgICAgIC8vIFNraXAgcGFpcnMgb2YgaW50ZXJzZWN0
aW9ucyB3aG9zZSB0eXBlcyBhcmUgVmVydGV4TWF4WSxWZXJ0ZXhNYXhZIGFuZCBWZXJ0ZXhNaW5Z
LFZlcnRleE1pblkuCiAgICAgICAgICAgICAgICAgICAgIGluZGV4ICs9IDI7CiAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gUmVwbGFjZSBwYWlycyBvZiBp
bnRlcnNlY3Rpb25zIHdob3NlIHR5cGVzIGFyZSBWZXJ0ZXhNaW5ZLFZlcnRleE1heFkgb3IgVmVy
dGV4TWF4WSxWZXJ0ZXhNaW5ZIHdpdGggb25lIFZlcnRleE1pblkgaW50ZXJzZWN0aW9uLgotICAg
ICAgICAgICAgICAgICAgICBpZiAobmV4dEludGVyc2VjdGlvbi50eXBlID09IFZlcnRleE1heFkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnNlY3Rpb25zW2luZGV4ICsgMV0gPSB0aGlz
SW50ZXJzZWN0aW9uOworICAgICAgICAgICAgICAgICAgICAvLyBSZXBsYWNlIHBhaXJzIG9mIGlu
dGVyc2VjdGlvbnMgd2hvc2UgdHlwZXMgYXJlIFZlcnRleE1pblksVmVydGV4TWF4WSBvciBWZXJ0
ZXhNYXhZLFZlcnRleE1pblkgd2l0aCBvbmUgaW50ZXJzZWN0aW9uLgogICAgICAgICAgICAgICAg
ICAgICBpbmRleCsrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjb250aW51
ZTsKQEAgLTE4NywyMiArMTg4LDMyIEBAIHZvaWQgRXhjbHVzaW9uUG9seWdvbjo6Y29tcHV0ZVhJ
bnRlcnNlY3Rpb25zKGZsb2F0IHksIFZlY3RvcjxFeGNsdXNpb25JbnRlcnZhbD4mCiAgICAgICAg
IH0KIAogICAgICAgICBjb25zdCBFeGNsdXNpb25Qb2x5Z29uRWRnZSYgdGhpc0VkZ2UgPSAqdGhp
c0ludGVyc2VjdGlvbi5lZGdlOwotICAgICAgICBib29sIGNyb3NzaW5nID0gIXdpbmRDb3VudDsK
KyAgICAgICAgYm9vbCBldmVuT2RkQ3Jvc3NpbmcgPSAhd2luZENvdW50OwogCiAgICAgICAgIGlm
IChmaWxsUnVsZSgpID09IFJVTEVfRVZFTk9ERCkgewogICAgICAgICAgICAgd2luZENvdW50ICs9
ICh0aGlzRWRnZS52ZXJ0ZXgyKCkueSgpID4gdGhpc0VkZ2UudmVydGV4MSgpLnkoKSkgPyAxIDog
LTE7Ci0gICAgICAgICAgICBjcm9zc2luZyA9IGNyb3NzaW5nIHx8ICF3aW5kQ291bnQ7CisgICAg
ICAgICAgICBldmVuT2RkQ3Jvc3NpbmcgPSBldmVuT2RkQ3Jvc3NpbmcgfHwgIXdpbmRDb3VudDsK
ICAgICAgICAgfQogCi0gICAgICAgIGlmICgodGhpc0ludGVyc2VjdGlvbi50eXBlID09IE5vcm1h
bCkgfHwgKHRoaXNJbnRlcnNlY3Rpb24udHlwZSA9PSBWZXJ0ZXhNaW5ZKSkgewotICAgICAgICAg
ICAgaWYgKGNyb3NzaW5nKQorICAgICAgICBpZiAoZXZlbk9kZENyb3NzaW5nKSB7CisgICAgICAg
ICAgICBib29sIGVkZ2VDcm9zc2luZyA9IGZhbHNlOworICAgICAgICAgICAgaWYgKHRoaXNJbnRl
cnNlY3Rpb24udHlwZSA9PSBOb3JtYWwgfHwgIWluc2lkZSB8fCBpbmRleCA9PSBpbnRlcnNlY3Rp
b25zLnNpemUoKSAtIDEpCisgICAgICAgICAgICAgICAgZWRnZUNyb3NzaW5nID0gdHJ1ZTsKKyAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQgcHJldlZlcnRleDsK
KyAgICAgICAgICAgICAgICBGbG9hdFBvaW50IHRoaXNWZXJ0ZXg7CisgICAgICAgICAgICAgICAg
RmxvYXRQb2ludCBuZXh0VmVydGV4OworCisgICAgICAgICAgICAgICAgaWYgKGdldFZlcnRleElu
dGVyc2VjdGlvblZlcnRpY2VzKHRoaXNJbnRlcnNlY3Rpb24sIHByZXZWZXJ0ZXgsIHRoaXNWZXJ0
ZXgsIG5leHRWZXJ0ZXgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcmV2VmVydGV4Lnko
KSA9PSB5KQorICAgICAgICAgICAgICAgICAgICAgICAgZWRnZUNyb3NzaW5nID0gICh0aGlzVmVy
dGV4LngoKSA+IHByZXZWZXJ0ZXgueCgpKSA/IG5leHRWZXJ0ZXgueSgpID4geSA6IG5leHRWZXJ0
ZXgueSgpIDwgeTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGVkZ2VDcm9zc2luZyA9IChuZXh0VmVydGV4LnkoKSAhPSB5KTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZWRnZUNyb3NzaW5nKQogICAg
ICAgICAgICAgICAgIGluc2lkZSA9IGFwcGVuZEludGVydmFsWCh0aGlzSW50ZXJzZWN0aW9uLnBv
aW50LngoKSwgaW5zaWRlLCByZXN1bHQpOwotICAgICAgICB9IGVsc2UgaWYgKHRoaXNJbnRlcnNl
Y3Rpb24udHlwZSA9PSBWZXJ0ZXhNYXhZKSB7Ci0gICAgICAgICAgICBpbnQgdmVydGV4SW5kZXgg
PSAodGhpc0VkZ2UudmVydGV4MigpLnkoKSA+IHRoaXNFZGdlLnZlcnRleDEoKS55KCkpID8gdGhp
c0VkZ2UuaW5kZXgyIDogdGhpc0VkZ2UuaW5kZXgxOwotICAgICAgICAgICAgaWYgKGNyb3NzaW5n
ICYmIHJpZ2h0VmVydGV4WSh2ZXJ0ZXhJbmRleCkgPiB5KQotICAgICAgICAgICAgICAgIGluc2lk
ZSA9IGFwcGVuZEludGVydmFsWCh0aGlzRWRnZS5tYXhYKCksIGluc2lkZSwgcmVzdWx0KTsKLSAg
ICAgICAgfSBlbHNlIGlmICh0aGlzSW50ZXJzZWN0aW9uLnR5cGUgPT0gVmVydGV4WUJvdGgpCi0g
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKEV4Y2x1c2lvbkludGVydmFsKHRoaXNFZGdlLm1pblgo
KSwgdGhpc0VkZ2UubWF4WCgpKSk7CisgICAgICAgIH0KIAogICAgICAgICBpbmRleCsrOwogICAg
IH0KQEAgLTIzNSw3ICsyNDYsOCBAQCB2b2lkIEV4Y2x1c2lvblBvbHlnb246OmNvbXB1dGVFZGdl
SW50ZXJzZWN0aW9ucyhmbG9hdCB5MSwgZmxvYXQgeTIsIFZlY3RvcjxFeGNsdQogICAgICAgICBp
ZiAoeDEgPiB4MikKICAgICAgICAgICAgIHN0ZDo6c3dhcCh4MSwgeDIpOwogCi0gICAgICAgIHJl
c3VsdC5hcHBlbmQoRXhjbHVzaW9uSW50ZXJ2YWwoeDEsIHgyKSk7CisgICAgICAgIGlmICh4MiA+
IHgxKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChFeGNsdXNpb25JbnRlcnZhbCh4MSwgeDIp
KTsKICAgICB9CiAKICAgICBzb3J0RXhjbHVzaW9uSW50ZXJ2YWxzKHJlc3VsdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uaAppbmRleCBiZTI4YTdmLi5mMTMy
ODg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmgKQEAg
LTU5LDEzICs1OSwxNSBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZWZXJ0aWNlcygp
IGNvbnN0IHsgcmV0dXJuIG1fdmVydGljZXMtPnNpemUoKTsgfQogICAgIFdpbmRSdWxlIGZpbGxS
dWxlKCkgY29uc3QgeyByZXR1cm4gbV9maWxsUnVsZTsgfQogCisgICAgY29uc3QgRXhjbHVzaW9u
UG9seWdvbkVkZ2UmIGVkZ2VBdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9lZGdl
c1tpbmRleF07IH0KKyAgICB1bnNpZ25lZCBudW1iZXJPZkVkZ2VzKCkgY29uc3QgeyByZXR1cm4g
bV9lZGdlcy5zaXplKCk7IH0KKwogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHNoYXBlTG9naWNhbEJv
dW5kaW5nQm94KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gaW50ZXJuYWxUb0xvZ2ljYWxCb3Vu
ZGluZ0JveChtX2JvdW5kaW5nQm94KTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29u
c3QgT1ZFUlJJREUgeyByZXR1cm4gbV9lbXB0eTsgfQogICAgIHZpcnR1YWwgdm9pZCBnZXRFeGNs
dWRlZEludGVydmFscyhmbG9hdCBsb2dpY2FsVG9wLCBmbG9hdCBsb2dpY2FsSGVpZ2h0LCBTZWdt
ZW50TGlzdCYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBnZXRJbmNsdWRlZElu
dGVydmFscyhmbG9hdCBsb2dpY2FsVG9wLCBmbG9hdCBsb2dpY2FsSGVpZ2h0LCBTZWdtZW50TGlz
dCYpIGNvbnN0IE9WRVJSSURFOwogCiBwcml2YXRlOgotICAgIGZsb2F0IHJpZ2h0VmVydGV4WSh1
bnNpZ25lZCkgY29uc3Q7CiAgICAgdm9pZCBjb21wdXRlWEludGVyc2VjdGlvbnMoZmxvYXQgeSwg
VmVjdG9yPEV4Y2x1c2lvbkludGVydmFsPiYpIGNvbnN0OwogICAgIHZvaWQgY29tcHV0ZUVkZ2VJ
bnRlcnNlY3Rpb25zKGZsb2F0IG1pblksIGZsb2F0IG1heFksIFZlY3RvcjxFeGNsdXNpb25JbnRl
cnZhbD4mKSBjb25zdDsKIApAQCAtODcsMTMgKzg5LDI1IEBAIHN0cnVjdCBFeGNsdXNpb25Qb2x5
Z29uRWRnZSB7CiAgICAgY29uc3QgRmxvYXRQb2ludCYgdmVydGV4MSgpIGNvbnN0CiAgICAgewog
ICAgICAgICBBU1NFUlQocG9seWdvbik7Ci0gICAgICAgIHJldHVybiBwb2x5Z29uLT52ZXJ0ZXhB
dChpbmRleDEpOworICAgICAgICByZXR1cm4gcG9seWdvbi0+dmVydGV4QXQodmVydGV4MUluZGV4
KTsKICAgICB9CiAKICAgICBjb25zdCBGbG9hdFBvaW50JiB2ZXJ0ZXgyKCkgY29uc3QKICAgICB7
CiAgICAgICAgIEFTU0VSVChwb2x5Z29uKTsKLSAgICAgICAgcmV0dXJuIHBvbHlnb24tPnZlcnRl
eEF0KGluZGV4Mik7CisgICAgICAgIHJldHVybiBwb2x5Z29uLT52ZXJ0ZXhBdCh2ZXJ0ZXgySW5k
ZXgpOworICAgIH0KKworICAgIGNvbnN0IEV4Y2x1c2lvblBvbHlnb25FZGdlJiBwcmV2aW91c0Vk
Z2UoKSBjb25zdCAKKyAgICB7IAorICAgICAgICBBU1NFUlQocG9seWdvbiAmJiBwb2x5Z29uLT5u
dW1iZXJPZkVkZ2VzKCkgPiAxKTsKKyAgICAgICAgcmV0dXJuIHBvbHlnb24tPmVkZ2VBdCgoZWRn
ZUluZGV4ICsgcG9seWdvbi0+bnVtYmVyT2ZFZGdlcygpIC0gMikgJSBwb2x5Z29uLT5udW1iZXJP
ZkVkZ2VzKCkpOworICAgIH0KKworICAgIGNvbnN0IEV4Y2x1c2lvblBvbHlnb25FZGdlJiBuZXh0
RWRnZSgpIGNvbnN0CisgICAgeyAKKyAgICAgICAgQVNTRVJUKHBvbHlnb24gJiYgcG9seWdvbi0+
bnVtYmVyT2ZFZGdlcygpID4gMSk7CisgICAgICAgIHJldHVybiBwb2x5Z29uLT5lZGdlQXQoKGVk
Z2VJbmRleCArIDEpICUgcG9seWdvbi0+bnVtYmVyT2ZFZGdlcygpKTsKICAgICB9CiAKICAgICBm
bG9hdCBtaW5YKCkgY29uc3QgeyByZXR1cm4gc3RkOjptaW4odmVydGV4MSgpLngoKSwgdmVydGV4
MigpLngoKSk7IH0KQEAgLTEwMiw4ICsxMTYsOSBAQCBzdHJ1Y3QgRXhjbHVzaW9uUG9seWdvbkVk
Z2UgewogICAgIGZsb2F0IG1heFkoKSBjb25zdCB7IHJldHVybiBzdGQ6Om1heCh2ZXJ0ZXgxKCku
eSgpLCB2ZXJ0ZXgyKCkueSgpKTsgfQogCiAgICAgY29uc3QgRXhjbHVzaW9uUG9seWdvbiogcG9s
eWdvbjsKLSAgICB1bnNpZ25lZCBpbmRleDE7Ci0gICAgdW5zaWduZWQgaW5kZXgyOworICAgIHVu
c2lnbmVkIHZlcnRleDFJbmRleDsKKyAgICB1bnNpZ25lZCB2ZXJ0ZXgySW5kZXg7CisgICAgdW5z
aWduZWQgZWRnZUluZGV4OwogfTsKIAogLy8gVGhlc2Ugc3RydWN0dXJlcyBhcmUgdXNlZCBieSBQ
T0RJbnRlcnZhbFRyZWUgZm9yIGRlYnVnZ2luZy4xCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171277</attachid>
            <date>2012-10-29 10:20:51 -0700</date>
            <delta_ts>2012-10-30 09:28:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>24903</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyOWM2ZDk1Li5mOTI0MGQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMTAt
MjkgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGNs
dXNpb25zXSBNdWx0aXBsZSBzZWdtZW50IHBvbHlnb24gbGF5b3V0IGRvZXMgbm90IGdldCBhbGwg
c2VnbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMDAzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIHRlc3RzIGZvciBDU1MgRXhjbHVzaW9uIHNoYXBlLWluc2lkZSBwb2x5Z29ucyB3aXRo
IGhvcml6b250YWwgZWRnZXMuCisgICAgICAgIENvcnJlY3RlZCB0aGUgc2ltcGxlLXBvbHlnb24u
anMgY29kZSBmb3IgY29tcHV0aW5nIGEgcG9seWdvbidzIGluY2x1ZGVkIGludGVydmFscy4KKwor
ICAgICAgICAqIGZhc3QvZXhjbHVzaW9ucy9yZXNvdXJjZXMvc2ltcGxlLXBvbHlnb24uanM6Cisg
ICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcmVjdGls
aW5lYXItcG9seWdvbi0wMDEtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9l
eGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcmVjdGlsaW5lYXItcG9seWdvbi0w
MDEuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9z
aGFwZS1pbnNpZGUtcmVjdGlsaW5lYXItcG9seWdvbi0wMDItZXhwZWN0ZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcmVj
dGlsaW5lYXItcG9seWdvbi0wMDIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNp
b25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDA0LWV4cGVjdGVk
Lmh0bWw6CisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNp
ZGUtc2ltcGxlLXBvbHlnb24tMDA0Lmh0bWw6CisKIDIwMTItMTAtMjkgIENocmlzdG9waGUgRHVt
ZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbV0syXVtXS1RSXSBF
bmFibGUgU2hhZG93IERPTSBhdCBydW50aW1lIGlmIGNvbXBpbGVkIHdpdGggU0hBRE9XX0RPTSBz
dXBwb3J0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvcmVzb3VyY2Vz
L3NpbXBsZS1wb2x5Z29uLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3Jlc291cmNl
cy9zaW1wbGUtcG9seWdvbi5qcwppbmRleCA4MDZjYWNhLi44ZThhOThkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvcmVzb3VyY2VzL3NpbXBsZS1wb2x5Z29uLmpzCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9yZXNvdXJjZXMvc2ltcGxlLXBvbHlnb24u
anMKQEAgLTM4LDQ5ICszOCw2MCBAQCBmdW5jdGlvbiBzdWJwaXhlbFJvdW5kKGYpIHsKIH0KIAog
Ly8gUmV0dXJuIHR3byBYIGludGVyY2VwdHMgb2YgdGhlIGhvcml6b250YWwgbGluZSBhdCB5LiBX
ZSdyZSBhc3N1bWluZyB0aGF0IHRoZSBwb2x5Z29uCi0vLyAwIG9yIDIgaW50ZXJjZXB0cyBmb3Ig
YWxsIHkuT2YgY291cnNlIHRoaXMgaXNuJ3QgdHJ1ZSBmb3IgcG9seWdvbnMgaW4gZ2VuZXJhbCwK
Ky8vIGhhcyAwIG9yIDIgaW50ZXJjZXB0cyBmb3IgYWxsIHkuIE9mIGNvdXJzZSB0aGlzIGlzbid0
IHRydWUgZm9yIHBvbHlnb25zIGluIGdlbmVyYWwsCiAvLyBqdXN0IHRoZSBvbmVzIHVzZWQgYnkg
dGhlIHRlc3QgY2FzZXMgc3VwcG9ydGVkIGJ5IHRoaXMgZmlsZS4KIAogZnVuY3Rpb24gcG9seWdv
blhJbnRlcmNlcHRzKHBvbHlnb24sIHkpIHsKICAgICB2YXIgdmVydGljZXMgPSBwb2x5Z29uLnZl
cnRpY2VzOwotICAgIHZhciB2ZXJ0ZXggPSBudWxsOyAgLy8gZmlyc3QgaW50ZXJzZWN0aW5nIG5v
bi1ob3Jpem9udGFsIGVkZ2UgdmVydGV4LCB2ZXJ0ZXgueSA9PSB5Ci0gICAgdmFyIHhJbnRlcmNl
cHRzID0gW107CisgICAgdmFyIGZvdW5kWEludGVyY2VwdCA9IGZhbHNlOworICAgIHZhciBpbnRl
cmNlcHRzTWluWCwgaW50ZXJjZXB0c01heFg7CiAKLSAgICBmb3IodmFyIGkgPSAwOyBpIDwgdmVy
dGljZXMubGVuZ3RoICYmIHhJbnRlcmNlcHRzLmxlbmd0aCA8IDI7IGkrKykgeworICAgIGZvcih2
YXIgaSA9IDA7IGkgPCB2ZXJ0aWNlcy5sZW5ndGg7IGkrKykgewogICAgICAgICB2YXIgdjEgPSB2
ZXJ0aWNlc1tpXTsKICAgICAgICAgdmFyIHYyID0gdmVydGljZXNbKGkgKyAxKSAlIHZlcnRpY2Vz
Lmxlbmd0aF07CiAKLSAgICAgICAgaWYgKHZlcnRleCA9PSB2MSB8fCB2ZXJ0ZXggPT0gdjIpCisg
ICAgICAgIGlmIChNYXRoLm1heCh2MS55LCB2Mi55KSA8IHkgfHwgTWF0aC5taW4odjEueSwgdjIu
eSkgPiB5KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgdmFyIG1pblkgPSBNYXRo
Lm1pbih2MS55LCB2Mi55KTsKLSAgICAgICAgdmFyIG1heFkgPSBNYXRoLm1heCh2MS55LCB2Mi55
KTsKLQotICAgICAgICBpZiAobWF4WSA8IHkgfHwgbWluWSA+IHkpCi0gICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICBpZiAobWluWSA9PSBtYXhZKQotICAgICAgICAgICAgcmV0dXJuIFt2
MS54LCB2Mi54XTsKLQotICAgICAgICBpZiAodjEueSA9PSB5KSB7Ci0gICAgICAgICAgICB4SW50
ZXJjZXB0cy5wdXNoKHYxLngpOwotICAgICAgICAgICAgaWYgKCF2ZXJ0ZXgpCi0gICAgICAgICAg
ICAgICAgdmVydGV4ID0gdjE7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAodjIueSA9PSB5
KSB7Ci0gICAgICAgICAgICB4SW50ZXJjZXB0cy5wdXNoKHYyLngpOwotICAgICAgICAgICAgaWYg
KCF2ZXJ0ZXgpCi0gICAgICAgICAgICAgICAgdmVydGV4ID0gdjI7CisgICAgICAgIGlmICh2MS55
ID09IHkgJiYgdjIueSA9PSB5KSB7ICAvLyBob3Jpem9udGFsIGVkZ2UgCisgICAgICAgICAgICBp
ZiAoeSAhPSBwb2x5Z29uLm1heFkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgICAgIGlmICghZm91bmRYSW50ZXJjZXB0KSB7CisgICAgICAgICAgICAgICAgaW50ZXJjZXB0
c01pblggPSBNYXRoLm1pbih2MS54LCB2Mi54KTsKKyAgICAgICAgICAgICAgICBpbnRlcmNlcHRz
TWF4WCA9IE1hdGgubWF4KHYxLngsIHYyLngpOworICAgICAgICAgICAgICAgIGZvdW5kWEludGVy
Y2VwdCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBpbnRlcmNlcHRzTWluWCA9IE1hdGgubWluKHYxLngsIHYyLngsIGludGVyY2VwdHNN
aW5YKTsKKyAgICAgICAgICAgICAgICBpbnRlcmNlcHRzTWF4WCA9IE1hdGgubWF4KHYxLngsIHYy
LngsIGludGVyY2VwdHNNYXhYKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIHhJbnRlcmNlcHRzLnB1c2goICgoeSAtIHYxLnkpICogKHYyLngg
LSB2MS54KSAvICh2Mi55IC0gdjEueSkpICsgdjEueCApOworICAgICAgICAgICAgdmFyIGludGVy
Y2VwdFg7CisKKyAgICAgICAgICAgIGlmICh2MS55ID09IHkpIAorICAgICAgICAgICAgICAgIGlu
dGVyY2VwdFggPSB2MS54OworICAgICAgICAgICAgZWxzZSBpZiAodjIueSA9PSB5KSAKKyAgICAg
ICAgICAgICAgICBpbnRlcmNlcHRYID0gdjIueDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBpbnRlcmNlcHRYID0gKCh5IC0gdjEueSkgKiAodjIueCAtIHYxLngpIC8gKHYyLnkg
LSB2MS55KSkgKyB2MS54OworCisgICAgICAgICAgICBpZiAoIWZvdW5kWEludGVyY2VwdCkgewor
ICAgICAgICAgICAgICAgIGludGVyY2VwdHNNaW5YID0gaW50ZXJjZXB0c01heFggPSBpbnRlcmNl
cHRYOworICAgICAgICAgICAgICAgIGZvdW5kWEludGVyY2VwdCA9IHRydWU7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpbnRlcmNlcHRzTWluWCA9
IE1hdGgubWluKGludGVyY2VwdFgsIGludGVyY2VwdHNNaW5YKTsKKyAgICAgICAgICAgICAgICBp
bnRlcmNlcHRzTWF4WCA9IE1hdGgubWF4KGludGVyY2VwdFgsIGludGVyY2VwdHNNYXhYKTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICh4SW50ZXJjZXB0cy5sZW5n
dGggIT0gMikKKyAgICBpZiAoIWZvdW5kWEludGVyY2VwdCkKICAgICAgICAgcmV0dXJuIFtdOwog
Ci0gICAgcmV0dXJuIFtzdWJwaXhlbFJvdW5kKE1hdGgubWluLmFwcGx5KG51bGwsIHhJbnRlcmNl
cHRzKSksIE1hdGguZmxvb3IoTWF0aC5tYXguYXBwbHkobnVsbCwgeEludGVyY2VwdHMpKV07Cisg
ICAgcmV0dXJuIFtzdWJwaXhlbFJvdW5kKGludGVyY2VwdHNNaW5YKSwgTWF0aC5mbG9vcihpbnRl
cmNlcHRzTWF4WCldOwogfQogCiBmdW5jdGlvbiBwb2x5Z29uTGluZUludGVyY2VwdHMocG9seWdv
biwgeSwgbGluZUhlaWdodCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNp
b25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcmVjdGlsaW5lYXItcG9seWdvbi0wMDEtZXhw
ZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hh
cGUtaW5zaWRlLXJlY3RpbGluZWFyLXBvbHlnb24tMDAxLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc5MmQ4NwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJlY3Rp
bGluZWFyLXBvbHlnb24tMDAxLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaW1w
bGUtcG9seWdvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKQorICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1c2lvbnNF
bmFibGVkKHRydWUpOworCisgICAgLy8gUmVjdGlsaW5lYXIgcG9seWdvbiB3aXRoIHRoaXMgc2hh
cGU6CisgICAgLy8gICBYWFgKKyAgICAvLyBYWFhYWFhYCisgICAgLy8gWFhYWFhYWAorCisgICAg
dmFyIHZlcnRpY2VzID0gW3t4OjAsIHk6NTB9LCB7eDoxMDAsIHk6NTB9LCB7eDoxMDAsIHk6MH0s
IHt4OjI1MCwgeTowfSwge3g6MjUwLCB5OjUwfSwge3g6MzUwLCB5OjUwfSwge3g6MzUwLCB5OjE1
MH0sIHt4OjAsIHk6MTUwfV07CisgICAgdmFyIGxpbmVIZWlnaHQgPSA1MDsKKyAgICB2YXIgaGFz
U3VicGl4ZWxTdXBwb3J0ID0gZmFsc2U7ICAvLyBUZXN0IHJlc3VsdHMgZG8gbm90IGRlcGVuZCBv
biBzdWJwaXhlbCBsYXlvdXQuCis8L3NjcmlwdD4KKworPHN0eWxlIGlkPSJzdHlsZXNoZWV0Ij4K
KyAgICAjcG9seWdvbi1zaGFwZS1pbnNpZGUsICNwb2x5Z29uLXN2Zy1zaGFwZSB7CisgICAgICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgbGVmdDogMHB4OworICAgICAgICB0b3A6IDBw
eDsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9ImNyZWF0ZVBvbHln
b25TaGFwZUluc2lkZVRlc3RDYXNlRXhwZWN0ZWQoKSI+CisgIDxzdmcgaWQ9InBvbHlnb24tc3Zn
LXNoYXBlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPgorICA8ZGl2
IGlkPSJwb2x5Z29uLXNoYXBlLWluc2lkZSI+PC9kaXY+CisgIDxwIGlkPSJpbmZvcm1hdGl2ZS10
ZXh0Ij4KKyAgICAgIFRoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBJdCBjcmVhdGVz
IGEgcmVjdGlsaW5lYXIgcG9seWdvbmFsIHNoYXBlLWluc2lkZSBhbmQgYQorICAgICAgbWF0Y2hp
bmcgZmlsbGVkIFNWRyBwb2x5Z29uLiBUaGUgY29udGVudCBzaG91bGQganVzdCBmaWxsIHRoZSBz
aGFwZSB3aXRoIGFsdGVybmF0aW5nCisgICAgICBibGFjayBhbmQgZW1wdHkgcmVjdGFuZ2xlcyBv
biBlYWNoIGxpbmUuPC9wPgorPC9ib2R5PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yZWN0aWxpbmVh
ci1wb2x5Z29uLTAwMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWlu
c2lkZS9zaGFwZS1pbnNpZGUtcmVjdGlsaW5lYXItcG9seWdvbi0wMDEuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Yzk0NzRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcmVjdGls
aW5lYXItcG9seWdvbi0wMDEuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NpbXBsZS1wb2x5Z29u
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAg
ICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0Q1NTRXhjbHVzaW9uc0VuYWJsZWQodHJ1
ZSk7CisKKyAgICAvLyBSZWN0aWxpbmVhciBwb2x5Z29uIHdpdGggdGhpcyBzaGFwZToKKyAgICAv
LyAgIFhYWAorICAgIC8vIFhYWFhYWFgKKyAgICAvLyBYWFhYWFhYCisKKyAgICB2YXIgdmVydGlj
ZXMgPSBbe3g6MCwgeTo1MH0sIHt4OjEwMCwgeTo1MH0sIHt4OjEwMCwgeTowfSwge3g6MjUwLCB5
OjB9LCB7eDoyNTAsIHk6NTB9LCB7eDozNTAsIHk6NTB9LCB7eDozNTAsIHk6MTUwfSwge3g6MCwg
eToxNTB9XTsKKyAgICB2YXIgbGluZUhlaWdodCA9IDUwOworICAgIHZhciBoYXNTdWJwaXhlbFN1
cHBvcnQgPSBmYWxzZTsgIC8vIFRlc3QgcmVzdWx0cyBkbyBub3QgZGVwZW5kIG9uIHN1YnBpeGVs
IGxheW91dC4KKzwvc2NyaXB0PgorCis8c3R5bGUgaWQ9InN0eWxlc2hlZXQiPgorICAgICNwb2x5
Z29uLXNoYXBlLWluc2lkZSwgI3BvbHlnb24tc3ZnLXNoYXBlIHsKKyAgICAgICAgcG9zaXRpb246
IGFic29sdXRlOworICAgICAgICBsZWZ0OiAwcHg7CisgICAgICAgIHRvcDogMHB4OworICAgIH0K
Kzwvc3R5bGU+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0iY3JlYXRlUG9seWdvblNoYXBlSW5z
aWRlVGVzdENhc2UoKTsiPgorICA8c3ZnIGlkPSJwb2x5Z29uLXN2Zy1zaGFwZSIgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48L3N2Zz4KKyAgPGRpdiBpZD0icG9seWdvbi1zaGFw
ZS1pbnNpZGUiPjwvZGl2PgorICA8cCBpZD0iaW5mb3JtYXRpdmUtdGV4dCI+CisgICAgICBUaGlz
IHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udC4gSXQgY3JlYXRlcyBhIHJlY3RpbGluZWFyIHBv
bHlnb25hbCBzaGFwZS1pbnNpZGUgYW5kIGEKKyAgICAgIG1hdGNoaW5nIGZpbGxlZCBTVkcgcG9s
eWdvbi4gVGhlIGNvbnRlbnQgc2hvdWxkIGp1c3QgZmlsbCB0aGUgc2hhcGUgd2l0aCBhbHRlcm5h
dGluZworICAgICAgYmxhY2sgYW5kIGVtcHR5IHJlY3RhbmdsZXMgb24gZWFjaCBsaW5lLjwvcD4K
KzwvYm9keT4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNp
b25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcmVjdGlsaW5lYXItcG9seWdvbi0wMDItZXhw
ZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hh
cGUtaW5zaWRlLXJlY3RpbGluZWFyLXBvbHlnb24tMDAyLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzNhMzAyMwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJlY3Rp
bGluZWFyLXBvbHlnb24tMDAyLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaW1w
bGUtcG9seWdvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKQorICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1c2lvbnNF
bmFibGVkKHRydWUpOworCisgICAgLy8gUmVjdGlsaW5lYXIgcG9seWdvbiB3aXRoIHRoaXMgc2hh
cGU6CisgICAgLy8gICBYWFgKKyAgICAvLyBYWFhYWFhYCisgICAgLy8gWFhYWFhYWAorICAgIC8v
ICAgWFhYCisKKyAgICB2YXIgdmVydGljZXMgPSBbe3g6MCwgeTo1MH0sIHt4OjEwMCwgeTo1MH0s
IHt4OjEwMCwgeTowfSwge3g6MjUwLCB5OjB9LCB7eDoyNTAsIHk6NTB9LCB7eDozNTAsIHk6NTB9
LCB7eDozNTAsIHk6MTUwfSwge3g6MjUwLCB5OjE1MH0sIHt4OjI1MCwgeToyMDB9LCB7eDoxMDAs
IHk6MjAwfSwge3g6MTAwLCB5OjE1MH0sIHt4OjAsIHk6MTUwfV07CisgICAgdmFyIGxpbmVIZWln
aHQgPSA1MDsKKyAgICB2YXIgaGFzU3VicGl4ZWxTdXBwb3J0ID0gZmFsc2U7ICAvLyBUZXN0IHJl
c3VsdHMgZG8gbm90IGRlcGVuZCBvbiBzdWJwaXhlbCBsYXlvdXQuCis8L3NjcmlwdD4KKworPHN0
eWxlIGlkPSJzdHlsZXNoZWV0Ij4KKyAgICAjcG9seWdvbi1zaGFwZS1pbnNpZGUsICNwb2x5Z29u
LXN2Zy1zaGFwZSB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgbGVmdDog
MHB4OworICAgICAgICB0b3A6IDBweDsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorCis8Ym9k
eSBvbmxvYWQ9ImNyZWF0ZVBvbHlnb25TaGFwZUluc2lkZVRlc3RDYXNlRXhwZWN0ZWQoKTsiPgor
ICA8c3ZnIGlkPSJwb2x5Z29uLXN2Zy1zaGFwZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIj48L3N2Zz4KKyAgPGRpdiBpZD0icG9seWdvbi1zaGFwZS1pbnNpZGUiPjwvZGl2Pgor
ICA8cCBpZD0iaW5mb3JtYXRpdmUtdGV4dCI+CisgICAgICBUaGlzIHRlc3QgcmVxdWlyZXMgdGhl
IEFoZW0gZm9udC4gSXQgY3JlYXRlcyBhIHJlY3RpbGluZWFyIHBvbHlnb25hbCBzaGFwZS1pbnNp
ZGUgYW5kIGEKKyAgICAgIG1hdGNoaW5nIGZpbGxlZCBTVkcgcG9seWdvbi4gVGhlIGNvbnRlbnQg
c2hvdWxkIGp1c3QgZmlsbCB0aGUgc2hhcGUgd2l0aCBhbHRlcm5hdGluZworICAgICAgYmxhY2sg
YW5kIGVtcHR5IHJlY3RhbmdsZXMgb24gZWFjaCBsaW5lLjwvcD4KKzwvYm9keT4KKworPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9z
aGFwZS1pbnNpZGUtcmVjdGlsaW5lYXItcG9seWdvbi0wMDIuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJlY3RpbGluZWFyLXBvbHln
b24tMDAyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNiMzFlMgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNp
ZGUvc2hhcGUtaW5zaWRlLXJlY3RpbGluZWFyLXBvbHlnb24tMDAyLmh0bWwKQEAgLTAsMCArMSwz
NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9zaW1wbGUtcG9seWdvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENT
U0V4Y2x1c2lvbnNFbmFibGVkKHRydWUpOworCisgICAgLy8gUmVjdGlsaW5lYXIgcG9seWdvbiB3
aXRoIHRoaXMgc2hhcGU6CisgICAgLy8gICBYWFgKKyAgICAvLyBYWFhYWFhYCisgICAgLy8gWFhY
WFhYWAorICAgIC8vICAgWFhYCisgICAgdmFyIHZlcnRpY2VzID0gW3t4OjAsIHk6NTB9LCB7eDox
MDAsIHk6NTB9LCB7eDoxMDAsIHk6MH0sIHt4OjI1MCwgeTowfSwge3g6MjUwLCB5OjUwfSwge3g6
MzUwLCB5OjUwfSwge3g6MzUwLCB5OjE1MH0sIHt4OjI1MCwgeToxNTB9LCB7eDoyNTAsIHk6MjAw
fSwge3g6MTAwLCB5OjIwMH0sIHt4OjEwMCwgeToxNTB9LCB7eDowLCB5OjE1MH1dOworICAgIHZh
ciBsaW5lSGVpZ2h0ID0gNTA7CisgICAgdmFyIGhhc1N1YnBpeGVsU3VwcG9ydCA9IGZhbHNlOyAg
Ly8gVGVzdCByZXN1bHRzIGRvIG5vdCBkZXBlbmQgb24gc3VicGl4ZWwgbGF5b3V0LgorPC9zY3Jp
cHQ+CisKKzxzdHlsZSBpZD0ic3R5bGVzaGVldCI+CisgICAgI3BvbHlnb24tc2hhcGUtaW5zaWRl
LCAjcG9seWdvbi1zdmctc2hhcGUgeworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAg
ICAgIGxlZnQ6IDBweDsKKyAgICAgICAgdG9wOiAwcHg7CisgICAgfQorPC9zdHlsZT4KKzwvaGVh
ZD4KKworPGJvZHkgb25sb2FkPSJjcmVhdGVQb2x5Z29uU2hhcGVJbnNpZGVUZXN0Q2FzZSgpOyI+
CisgIDxzdmcgaWQ9InBvbHlnb24tc3ZnLXNoYXBlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciPjwvc3ZnPgorICA8ZGl2IGlkPSJwb2x5Z29uLXNoYXBlLWluc2lkZSI+PC9kaXY+
CisgIDxwIGlkPSJpbmZvcm1hdGl2ZS10ZXh0Ij4KKyAgICAgIFRoaXMgdGVzdCByZXF1aXJlcyB0
aGUgQWhlbSBmb250LiBJdCBjcmVhdGVzIGEgcmVjdGlsaW5lYXIgcG9seWdvbmFsIHNoYXBlLWlu
c2lkZSBhbmQgYQorICAgICAgbWF0Y2hpbmcgZmlsbGVkIFNWRyBwb2x5Z29uLiBUaGUgY29udGVu
dCBzaG91bGQganVzdCBmaWxsIHRoZSBzaGFwZSB3aXRoIGFsdGVybmF0aW5nCisgICAgICBibGFj
ayBhbmQgZW1wdHkgcmVjdGFuZ2xlcyBvbiBlYWNoIGxpbmUuPC9wPgorPC9ib2R5PgorCis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRl
L3NoYXBlLWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXNpbXBsZS1wb2x5
Z29uLTAwNC1leHBlY3RlZC5odG1sCmluZGV4IDU2MzhjN2MuLjdiNmNmMTMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXNp
bXBsZS1wb2x5Z29uLTAwNC1leHBlY3RlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhj
bHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXNpbXBsZS1wb2x5Z29uLTAwNC1leHBl
Y3RlZC5odG1sCkBAIC04LDcgKzgsNyBAQAogCiAgICAgLy8gQ29uY2F2ZSBhc3N5bWV0cmljIHNp
bXBsZSBwb2x5Z29uIHdpdGggaG9yaXpvbnRhbCB0b3AgYW5kIGJvdHRvbSBlZGdlcy4gIEEgdmVy
c2lvbiBvZiB0aGUgMDAxCiAgICAgLy8gaG91cmdsYXNzIHNoYXBlIHdpdGggdmVydGljYWwgZWRn
ZXMgaW4gdGhlIGNlbnRlci4KLSAgICB2YXIgdmVydGljZXMgPSBbe3g6NDAsIHk6NDB9LCB7eDo0
NDAsIHk6NDB9LCB7eDozMjAsIHk6MTYwfSwge3g6MzIwLCB5OjI0MH0sIHt4OjQ4MCwgeTo0MDB9
LCB7eDo4MCwgeTo0MDB9LCB7eDoyMDAsIHk6MjgwfSwge3g6MjAwLCB5OjIwMH1dfTsKKyAgICB2
YXIgdmVydGljZXMgPSBbe3g6NDAsIHk6NDB9LCB7eDo0NDAsIHk6NDB9LCB7eDozMjAsIHk6MTYw
fSwge3g6MzIwLCB5OjI0MH0sIHt4OjQ4MCwgeTo0MDB9LCB7eDo4MCwgeTo0MDB9LCB7eDoyMDAs
IHk6MjgwfSwge3g6MjAwLCB5OjIwMH1dOwogICAgIHZhciBsaW5lSGVpZ2h0ID0gNDA7CiAgICAg
dmFyIGhhc1N1YnBpeGVsU3VwcG9ydDsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9l
eGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDA0Lmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lk
ZS1zaW1wbGUtcG9seWdvbi0wMDQuaHRtbAppbmRleCBlNTk0ZGYwLi4xZGI1YTRkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lk
ZS1zaW1wbGUtcG9seWdvbi0wMDQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lv
bnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDQuaHRtbApAQCAt
OCw3ICs4LDcgQEAKIAogICAgIC8vIENvbmNhdmUgYXNzeW1ldHJpYyBzaW1wbGUgcG9seWdvbiB3
aXRoIGhvcml6b250YWwgdG9wIGFuZCBib3R0b20gZWRnZXMuICBBIHZlcnNpb24gb2YgdGhlIDAw
MQogICAgIC8vIGhvdXJnbGFzcyBzaGFwZSB3aXRoIHZlcnRpY2FsIGVkZ2VzIGluIHRoZSBjZW50
ZXIuCi0gICAgdmFyIHZlcnRpY2VzID0gW3t4OjQwLCB5OjQwfSwge3g6NDQwLCB5OjQwfSwge3g6
MzIwLCB5OjE2MH0sIHt4OjMyMCwgeToyNDB9LCB7eDo0ODAsIHk6NDAwfSwge3g6ODAsIHk6NDAw
fSwge3g6MjAwLCB5OjI4MH0sIHt4OjIwMCwgeToyMDB9XX07CisgICAgdmFyIHZlcnRpY2VzID0g
W3t4OjQwLCB5OjQwfSwge3g6NDQwLCB5OjQwfSwge3g6MzIwLCB5OjE2MH0sIHt4OjMyMCwgeToy
NDB9LCB7eDo0ODAsIHk6NDAwfSwge3g6ODAsIHk6NDAwfSwge3g6MjAwLCB5OjI4MH0sIHt4OjIw
MCwgeToyMDB9XTsKICAgICB2YXIgbGluZUhlaWdodCA9IDQwOwogICAgIHZhciBoYXNTdWJwaXhl
bFN1cHBvcnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5MTA4MGUyLi43YjVkMjA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTItMTAtMjkgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5j
b20+CisKKyAgICAgICAgW0NTUyBFeGNsdXNpb25zXSBNdWx0aXBsZSBzZWdtZW50IHBvbHlnb24g
bGF5b3V0IGRvZXMgbm90IGdldCBhbGwgc2VnbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDAzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENvcnJlY3RlZCB0aGUgYWxnb3JpdGhtIGZvciBjb21w
dXRpbmcgaW5jbHVkZWQgcG9seWdvbiBpbnRlcnZhbHMgZm9yIHJlY3RpbGluZWFyIHBvbHlnb25z
LAorICAgICAgICBhbmQgcG9seWdvbnMgd2l0aCBob3Jpem9udGFsIGVkZ2VzIGluIGdlbmVyYWwu
CisKKyAgICAgICAgVGVzdHM6IGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5z
aWRlLXJlY3RpbGluZWFyLXBvbHlnb24tMDAxLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXhj
bHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJlY3RpbGluZWFyLXBvbHlnb24tMDAy
Lmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmNwcDogUmVtb3Zl
ZCBzb21lIGludGVybmFsIGRlYWQgY29kZSByZWxhdGVkIHRvIHRoZSBuby1sb25nZXItdXNlZCBz
b3J0ZWRFZGdlc01pblkgVmVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6RXhjbHVzaW9uUG9seWdv
bjo6RXhjbHVzaW9uUG9seWdvbik6IEluaXRpYWxpemUgbmV3IEV4Y2x1c2lvblBvbHlnb25FZGdl
IGVkZ2VJbmRleCBmaWVsZC4KKyAgICAgICAgKFdlYkNvcmU6OmdldFZlcnRleEludGVyc2VjdGlv
blZlcnRpY2VzKTogUmV0dXJuIHRoZSBwcmV2aW91cywgbmV4dCwgYW5kIHRhcmdldCB2ZXJ0ZXgg
aW5kaWNlcyBmb3IgYSB2ZXJ0ZXggaW50ZXJzZWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6RXhj
bHVzaW9uUG9seWdvbjo6Y29tcHV0ZVhJbnRlcnNlY3Rpb25zKTogUmVmYWN0b3JlZCB0aGUgY29y
ZSBvZiB0aGlzIG1ldGhvZCB0byBpbXByb3ZlIGhhbmRsaW5nIG9mIGhvcml6b250YWwgZWRnZXMu
CisgICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25Qb2x5Z29uOjpjb21wdXRlRWRnZUludGVyc2Vj
dGlvbnMpOiBJZ25vcmUgemVyby13aWR0aCBlZGdlcy4KKyAgICAgICAgKiByZW5kZXJpbmcvRXhj
bHVzaW9uUG9seWdvbi5oOiBSZW1vdmVkIHRoZSByaWdodFZlcnRleFkoKSBtZXRob2QsIHNpbmNl
IGl0J3Mgbm8gbG9uZ2VyIHVzZWQuCisgICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25Qb2x5Z29u
OjplZGdlQXQpOiBOZXcgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6RXhjbHVzaW9uUG9seWdv
bjo6bnVtYmVyT2ZFZGdlcyk6IE5ldyBtZXRob2QuCisgICAgICAgIChFeGNsdXNpb25Qb2x5Z29u
KTogQWRkZWQgc3VwcG9ydCBmb3IgcmV0cmlldmluZyBlZGdlcy4KKyAgICAgICAgKFdlYkNvcmU6
OkV4Y2x1c2lvblBvbHlnb25FZGdlOjp2ZXJ0ZXgxKTogVXNlIHZlcnRleDFJbmRleC4KKyAgICAg
ICAgKFdlYkNvcmU6OkV4Y2x1c2lvblBvbHlnb25FZGdlOjp2ZXJ0ZXgyKTogVXNlIHZlcnRleDJJ
bmRleC4KKyAgICAgICAgKEV4Y2x1c2lvblBvbHlnb25FZGdlKTogUmVuYW1lZCBpbmRleDEsIGlu
ZGV4MiBmaWVsZHMgdG8gdmVydGV4MUluZGV4LCB2ZXJ0ZXgySW5kZXguCisgICAgICAgIChXZWJD
b3JlOjpFeGNsdXNpb25Qb2x5Z29uRWRnZTo6cHJldmlvdXNFZGdlKTogTmV3IG1ldGhvZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkV4Y2x1c2lvblBvbHlnb25FZGdlOjpuZXh0RWRnZSk6IE5ldyBtZXRo
b2QuCisKIDIwMTItMTAtMjkgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgRU5BQkxFX1VTRVJTRUxFQ1RfQUxMIGZlYXR1cmUgZmxhZy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmNwcAppbmRleCBlYWVlYmE3Li5j
NWE2YWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUG9s
eWdvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24u
Y3BwCkBAIC00NywxMSArNDcsNiBAQCBzdHJ1Y3QgRWRnZUludGVyc2VjdGlvbiB7CiAgICAgRWRn
ZUludGVyc2VjdGlvblR5cGUgdHlwZTsKIH07CiAKLXN0YXRpYyBib29sIGNvbXBhcmVFZGdlTWlu
WShjb25zdCBFeGNsdXNpb25Qb2x5Z29uRWRnZSogZTEsIGNvbnN0IEV4Y2x1c2lvblBvbHlnb25F
ZGdlKiBlMikKLXsKLSAgICByZXR1cm4gZTEtPm1pblkoKSA8IGUyLT5taW5ZKCk7Ci19Ci0KIEV4
Y2x1c2lvblBvbHlnb246OkV4Y2x1c2lvblBvbHlnb24oUGFzc093blB0cjxWZWN0b3I8RmxvYXRQ
b2ludD4gPiB2ZXJ0aWNlcywgV2luZFJ1bGUgZmlsbFJ1bGUpCiAgICAgOiBFeGNsdXNpb25TaGFw
ZSgpCiAgICAgLCBtX3ZlcnRpY2VzKHZlcnRpY2VzKQpAQCAtNjAsNyArNTUsNiBAQCBFeGNsdXNp
b25Qb2x5Z29uOjpFeGNsdXNpb25Qb2x5Z29uKFBhc3NPd25QdHI8VmVjdG9yPEZsb2F0UG9pbnQ+
ID4gdmVydGljZXMsIFdpbgogICAgIHVuc2lnbmVkIG5WZXJ0aWNlcyA9IG51bWJlck9mVmVydGlj
ZXMoKTsKICAgICBtX2VkZ2VzLnJlc2l6ZShuVmVydGljZXMpOwogICAgIG1fZW1wdHkgPSBuVmVy
dGljZXMgPCAzOwotICAgIFZlY3RvcjxFeGNsdXNpb25Qb2x5Z29uRWRnZSo+IHNvcnRlZEVkZ2Vz
TWluWShuVmVydGljZXMpOwogCiAgICAgaWYgKG5WZXJ0aWNlcykKICAgICAgICAgbV9ib3VuZGlu
Z0JveC5zZXRMb2NhdGlvbih2ZXJ0ZXhBdCgwKSk7CkBAIC02OSwxNCArNjMsMTEgQEAgRXhjbHVz
aW9uUG9seWdvbjo6RXhjbHVzaW9uUG9seWdvbihQYXNzT3duUHRyPFZlY3RvcjxGbG9hdFBvaW50
PiA+IHZlcnRpY2VzLCBXaW4KICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgdmVydGV4ID0gdmVy
dGV4QXQoaSk7CiAgICAgICAgIG1fYm91bmRpbmdCb3guZXh0ZW5kKHZlcnRleCk7CiAgICAgICAg
IG1fZWRnZXNbaV0ucG9seWdvbiA9IHRoaXM7Ci0gICAgICAgIG1fZWRnZXNbaV0uaW5kZXgxID0g
aTsKLSAgICAgICAgbV9lZGdlc1tpXS5pbmRleDIgPSAoaSArIDEpICUgblZlcnRpY2VzOwotCi0g
ICAgICAgIHNvcnRlZEVkZ2VzTWluWVtpXSA9ICZtX2VkZ2VzW2ldOworICAgICAgICBtX2VkZ2Vz
W2ldLnZlcnRleDFJbmRleCA9IGk7CisgICAgICAgIG1fZWRnZXNbaV0udmVydGV4MkluZGV4ID0g
KGkgKyAxKSAlIG5WZXJ0aWNlczsKKyAgICAgICAgbV9lZGdlc1tpXS5lZGdlSW5kZXggPSBpOwog
ICAgIH0KIAotICAgIHN0ZDo6c29ydChzb3J0ZWRFZGdlc01pblkuYmVnaW4oKSwgc29ydGVkRWRn
ZXNNaW5ZLmVuZCgpLCBXZWJDb3JlOjpjb21wYXJlRWRnZU1pblkpOwotCiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fZWRnZXMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgRXhjbHVzaW9u
UG9seWdvbkVkZ2UqIGVkZ2UgPSAmbV9lZGdlc1tpXTsKICAgICAgICAgbV9lZGdlVHJlZS5hZGQo
RWRnZUludGVydmFsKGVkZ2UtPm1pblkoKSwgZWRnZS0+bWF4WSgpLCBlZGdlKSk7CkBAIC0xMTgs
MTUgKzEwOSwyNyBAQCBzdGF0aWMgYm9vbCBjb21wdXRlWEludGVyc2VjdGlvbihjb25zdCBFeGNs
dXNpb25Qb2x5Z29uRWRnZSogZWRnZVBvaW50ZXIsIGZsb2F0CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWZsb2F0IEV4Y2x1c2lvblBvbHlnb246OnJpZ2h0VmVydGV4WSh1bnNpZ25lZCBpbmRleCkg
Y29uc3QKK3N0YXRpYyBib29sIGdldFZlcnRleEludGVyc2VjdGlvblZlcnRpY2VzKGNvbnN0IEVk
Z2VJbnRlcnNlY3Rpb24mIGludGVyc2VjdGlvbiwgRmxvYXRQb2ludCYgcHJldlZlcnRleCwgRmxv
YXRQb2ludCYgdGhpc1ZlcnRleCwgRmxvYXRQb2ludCYgbmV4dFZlcnRleCkKIHsKLSAgICB1bnNp
Z25lZCBuVmVydGljZXMgPSBudW1iZXJPZlZlcnRpY2VzKCk7Ci0gICAgY29uc3QgRmxvYXRQb2lu
dCYgdmVydGV4MSA9IHZlcnRleEF0KChpbmRleCArIDEpICUgblZlcnRpY2VzKTsKLSAgICBjb25z
dCBGbG9hdFBvaW50JiB2ZXJ0ZXgyID0gdmVydGV4QXQoKGluZGV4IC0gMSkgJSBuVmVydGljZXMp
OworICAgIGlmIChpbnRlcnNlY3Rpb24udHlwZSAhPSBWZXJ0ZXhNaW5ZICYmIGludGVyc2VjdGlv
bi50eXBlICE9IFZlcnRleE1heFkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEFTU0VS
VChpbnRlcnNlY3Rpb24uZWRnZSAmJiBpbnRlcnNlY3Rpb24uZWRnZS0+cG9seWdvbik7CisgICAg
Y29uc3QgRXhjbHVzaW9uUG9seWdvbiYgcG9seWdvbiA9ICooaW50ZXJzZWN0aW9uLmVkZ2UtPnBv
bHlnb24pOworICAgIGNvbnN0IEV4Y2x1c2lvblBvbHlnb25FZGdlJiB0aGlzRWRnZSA9ICooaW50
ZXJzZWN0aW9uLmVkZ2UpOwogCi0gICAgaWYgKHZlcnRleDEueCgpID09IHZlcnRleDIueCgpKQot
ICAgICAgICByZXR1cm4gdmVydGV4MS55KCkgPiB2ZXJ0ZXgyLnkoKSA/IHZlcnRleDEueSgpIDog
dmVydGV4Mi55KCk7Ci0gICAgcmV0dXJuIHZlcnRleDEueCgpID4gdmVydGV4Mi54KCkgPyB2ZXJ0
ZXgxLnkoKSA6IHZlcnRleDIueSgpOworICAgIGlmICgoaW50ZXJzZWN0aW9uLnR5cGUgPT0gVmVy
dGV4TWluWSAmJiAodGhpc0VkZ2UudmVydGV4MSgpLnkoKSA8IHRoaXNFZGdlLnZlcnRleDIoKS55
KCkpKQorICAgICAgICB8fCAoaW50ZXJzZWN0aW9uLnR5cGUgPT0gVmVydGV4TWF4WSAmJiAodGhp
c0VkZ2UudmVydGV4MSgpLnkoKSA+IHRoaXNFZGdlLnZlcnRleDIoKS55KCkpKSkgeworICAgICAg
ICBwcmV2VmVydGV4ID0gcG9seWdvbi52ZXJ0ZXhBdCh0aGlzRWRnZS5wcmV2aW91c0VkZ2UoKS52
ZXJ0ZXgySW5kZXgpOworICAgICAgICB0aGlzVmVydGV4ID0gcG9seWdvbi52ZXJ0ZXhBdCh0aGlz
RWRnZS52ZXJ0ZXgxSW5kZXgpOworICAgICAgICBuZXh0VmVydGV4ID0gcG9seWdvbi52ZXJ0ZXhB
dCh0aGlzRWRnZS52ZXJ0ZXgySW5kZXgpOworICAgIH0gZWxzZSB7CisgICAgICAgIHByZXZWZXJ0
ZXggPSBwb2x5Z29uLnZlcnRleEF0KHRoaXNFZGdlLnZlcnRleDFJbmRleCk7CisgICAgICAgIHRo
aXNWZXJ0ZXggPSBwb2x5Z29uLnZlcnRleEF0KHRoaXNFZGdlLnZlcnRleDJJbmRleCk7CisgICAg
ICAgIG5leHRWZXJ0ZXggPSBwb2x5Z29uLnZlcnRleEF0KHRoaXNFZGdlLm5leHRFZGdlKCkudmVy
dGV4MUluZGV4KTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wg
YXBwZW5kSW50ZXJ2YWxYKGZsb2F0IHgsIGJvb2wgaW5zaWRlLCBWZWN0b3I8RXhjbHVzaW9uSW50
ZXJ2YWw+JiByZXN1bHQpCkBAIC0xNTUsNyArMTU4LDcgQEAgdm9pZCBFeGNsdXNpb25Qb2x5Z29u
Ojpjb21wdXRlWEludGVyc2VjdGlvbnMoZmxvYXQgeSwgVmVjdG9yPEV4Y2x1c2lvbkludGVydmFs
PiYKICAgICBFZGdlSW50ZXJzZWN0aW9uIGludGVyc2VjdGlvbjsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgb3ZlcmxhcHBpbmdFZGdlcy5zaXplKCk7IGkrKykgewogICAgICAgICBFeGNs
dXNpb25Qb2x5Z29uRWRnZSogZWRnZSA9IHN0YXRpY19jYXN0PEV4Y2x1c2lvblBvbHlnb25FZGdl
Kj4ob3ZlcmxhcHBpbmdFZGdlc1tpXS5kYXRhKCkpOwotICAgICAgICBpZiAoY29tcHV0ZVhJbnRl
cnNlY3Rpb24oZWRnZSwgeSwgaW50ZXJzZWN0aW9uKSkKKyAgICAgICAgaWYgKGNvbXB1dGVYSW50
ZXJzZWN0aW9uKGVkZ2UsIHksIGludGVyc2VjdGlvbikgJiYgaW50ZXJzZWN0aW9uLnR5cGUgIT0g
VmVydGV4WUJvdGgpCiAgICAgICAgICAgICBpbnRlcnNlY3Rpb25zLmFwcGVuZChpbnRlcnNlY3Rp
b24pOwogICAgIH0KICAgICBpZiAoaW50ZXJzZWN0aW9ucy5zaXplKCkgPCAyKQpAQCAtMTY5LDcg
KzE3Miw2IEBAIHZvaWQgRXhjbHVzaW9uUG9seWdvbjo6Y29tcHV0ZVhJbnRlcnNlY3Rpb25zKGZs
b2F0IHksIFZlY3RvcjxFeGNsdXNpb25JbnRlcnZhbD4mCiAKICAgICB3aGlsZSAoaW5kZXggPCBp
bnRlcnNlY3Rpb25zLnNpemUoKSkgewogICAgICAgICBjb25zdCBFZGdlSW50ZXJzZWN0aW9uJiB0
aGlzSW50ZXJzZWN0aW9uID0gaW50ZXJzZWN0aW9uc1tpbmRleF07Ci0KICAgICAgICAgaWYgKGlu
ZGV4ICsgMSA8IGludGVyc2VjdGlvbnMuc2l6ZSgpKSB7CiAgICAgICAgICAgICBjb25zdCBFZGdl
SW50ZXJzZWN0aW9uJiBuZXh0SW50ZXJzZWN0aW9uID0gaW50ZXJzZWN0aW9uc1tpbmRleCArIDFd
OwogICAgICAgICAgICAgaWYgKCh0aGlzSW50ZXJzZWN0aW9uLnBvaW50LngoKSA9PSBuZXh0SW50
ZXJzZWN0aW9uLnBvaW50LngoKSkgJiYgKHRoaXNJbnRlcnNlY3Rpb24udHlwZSA9PSBWZXJ0ZXhN
aW5ZIHx8IHRoaXNJbnRlcnNlY3Rpb24udHlwZSA9PSBWZXJ0ZXhNYXhZKSkgewpAQCAtMTc3LDkg
KzE3OSw3IEBAIHZvaWQgRXhjbHVzaW9uUG9seWdvbjo6Y29tcHV0ZVhJbnRlcnNlY3Rpb25zKGZs
b2F0IHksIFZlY3RvcjxFeGNsdXNpb25JbnRlcnZhbD4mCiAgICAgICAgICAgICAgICAgICAgIC8v
IFNraXAgcGFpcnMgb2YgaW50ZXJzZWN0aW9ucyB3aG9zZSB0eXBlcyBhcmUgVmVydGV4TWF4WSxW
ZXJ0ZXhNYXhZIGFuZCBWZXJ0ZXhNaW5ZLFZlcnRleE1pblkuCiAgICAgICAgICAgICAgICAgICAg
IGluZGV4ICs9IDI7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgLy8gUmVwbGFjZSBwYWlycyBvZiBpbnRlcnNlY3Rpb25zIHdob3NlIHR5cGVzIGFyZSBWZXJ0
ZXhNaW5ZLFZlcnRleE1heFkgb3IgVmVydGV4TWF4WSxWZXJ0ZXhNaW5ZIHdpdGggb25lIFZlcnRl
eE1pblkgaW50ZXJzZWN0aW9uLgotICAgICAgICAgICAgICAgICAgICBpZiAobmV4dEludGVyc2Vj
dGlvbi50eXBlID09IFZlcnRleE1heFkpCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnNl
Y3Rpb25zW2luZGV4ICsgMV0gPSB0aGlzSW50ZXJzZWN0aW9uOworICAgICAgICAgICAgICAgICAg
ICAvLyBSZXBsYWNlIHBhaXJzIG9mIGludGVyc2VjdGlvbnMgd2hvc2UgdHlwZXMgYXJlIFZlcnRl
eE1pblksVmVydGV4TWF4WSBvciBWZXJ0ZXhNYXhZLFZlcnRleE1pblkgd2l0aCBvbmUgaW50ZXJz
ZWN0aW9uLgogICAgICAgICAgICAgICAgICAgICBpbmRleCsrOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE4NywyMiArMTg3LDMyIEBAIHZvaWQgRXhj
bHVzaW9uUG9seWdvbjo6Y29tcHV0ZVhJbnRlcnNlY3Rpb25zKGZsb2F0IHksIFZlY3RvcjxFeGNs
dXNpb25JbnRlcnZhbD4mCiAgICAgICAgIH0KIAogICAgICAgICBjb25zdCBFeGNsdXNpb25Qb2x5
Z29uRWRnZSYgdGhpc0VkZ2UgPSAqdGhpc0ludGVyc2VjdGlvbi5lZGdlOwotICAgICAgICBib29s
IGNyb3NzaW5nID0gIXdpbmRDb3VudDsKKyAgICAgICAgYm9vbCBldmVuT2RkQ3Jvc3NpbmcgPSAh
d2luZENvdW50OwogCiAgICAgICAgIGlmIChmaWxsUnVsZSgpID09IFJVTEVfRVZFTk9ERCkgewog
ICAgICAgICAgICAgd2luZENvdW50ICs9ICh0aGlzRWRnZS52ZXJ0ZXgyKCkueSgpID4gdGhpc0Vk
Z2UudmVydGV4MSgpLnkoKSkgPyAxIDogLTE7Ci0gICAgICAgICAgICBjcm9zc2luZyA9IGNyb3Nz
aW5nIHx8ICF3aW5kQ291bnQ7CisgICAgICAgICAgICBldmVuT2RkQ3Jvc3NpbmcgPSBldmVuT2Rk
Q3Jvc3NpbmcgfHwgIXdpbmRDb3VudDsKICAgICAgICAgfQogCi0gICAgICAgIGlmICgodGhpc0lu
dGVyc2VjdGlvbi50eXBlID09IE5vcm1hbCkgfHwgKHRoaXNJbnRlcnNlY3Rpb24udHlwZSA9PSBW
ZXJ0ZXhNaW5ZKSkgewotICAgICAgICAgICAgaWYgKGNyb3NzaW5nKQorICAgICAgICBpZiAoZXZl
bk9kZENyb3NzaW5nKSB7CisgICAgICAgICAgICBib29sIGVkZ2VDcm9zc2luZyA9IGZhbHNlOwor
ICAgICAgICAgICAgaWYgKHRoaXNJbnRlcnNlY3Rpb24udHlwZSA9PSBOb3JtYWwgfHwgIWluc2lk
ZSB8fCBpbmRleCA9PSBpbnRlcnNlY3Rpb25zLnNpemUoKSAtIDEpCisgICAgICAgICAgICAgICAg
ZWRnZUNyb3NzaW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
IEZsb2F0UG9pbnQgcHJldlZlcnRleDsKKyAgICAgICAgICAgICAgICBGbG9hdFBvaW50IHRoaXNW
ZXJ0ZXg7CisgICAgICAgICAgICAgICAgRmxvYXRQb2ludCBuZXh0VmVydGV4OworCisgICAgICAg
ICAgICAgICAgaWYgKGdldFZlcnRleEludGVyc2VjdGlvblZlcnRpY2VzKHRoaXNJbnRlcnNlY3Rp
b24sIHByZXZWZXJ0ZXgsIHRoaXNWZXJ0ZXgsIG5leHRWZXJ0ZXgpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChwcmV2VmVydGV4LnkoKSA9PSB5KQorICAgICAgICAgICAgICAgICAgICAgICAg
ZWRnZUNyb3NzaW5nID0gICh0aGlzVmVydGV4LngoKSA+IHByZXZWZXJ0ZXgueCgpKSA/IG5leHRW
ZXJ0ZXgueSgpID4geSA6IG5leHRWZXJ0ZXgueSgpIDwgeTsKKyAgICAgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgZWRnZUNyb3NzaW5nID0gKG5leHRWZXJ0ZXgu
eSgpICE9IHkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmIChlZGdlQ3Jvc3NpbmcpCiAgICAgICAgICAgICAgICAgaW5zaWRlID0gYXBwZW5kSW50ZXJ2
YWxYKHRoaXNJbnRlcnNlY3Rpb24ucG9pbnQueCgpLCBpbnNpZGUsIHJlc3VsdCk7Ci0gICAgICAg
IH0gZWxzZSBpZiAodGhpc0ludGVyc2VjdGlvbi50eXBlID09IFZlcnRleE1heFkpIHsKLSAgICAg
ICAgICAgIGludCB2ZXJ0ZXhJbmRleCA9ICh0aGlzRWRnZS52ZXJ0ZXgyKCkueSgpID4gdGhpc0Vk
Z2UudmVydGV4MSgpLnkoKSkgPyB0aGlzRWRnZS5pbmRleDIgOiB0aGlzRWRnZS5pbmRleDE7Ci0g
ICAgICAgICAgICBpZiAoY3Jvc3NpbmcgJiYgcmlnaHRWZXJ0ZXhZKHZlcnRleEluZGV4KSA+IHkp
Ci0gICAgICAgICAgICAgICAgaW5zaWRlID0gYXBwZW5kSW50ZXJ2YWxYKHRoaXNFZGdlLm1heFgo
KSwgaW5zaWRlLCByZXN1bHQpOwotICAgICAgICB9IGVsc2UgaWYgKHRoaXNJbnRlcnNlY3Rpb24u
dHlwZSA9PSBWZXJ0ZXhZQm90aCkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoRXhjbHVzaW9u
SW50ZXJ2YWwodGhpc0VkZ2UubWluWCgpLCB0aGlzRWRnZS5tYXhYKCkpKTsKKyAgICAgICAgfQog
CiAgICAgICAgIGluZGV4Kys7CiAgICAgfQpAQCAtMjM1LDcgKzI0NSw4IEBAIHZvaWQgRXhjbHVz
aW9uUG9seWdvbjo6Y29tcHV0ZUVkZ2VJbnRlcnNlY3Rpb25zKGZsb2F0IHkxLCBmbG9hdCB5Miwg
VmVjdG9yPEV4Y2x1CiAgICAgICAgIGlmICh4MSA+IHgyKQogICAgICAgICAgICAgc3RkOjpzd2Fw
KHgxLCB4Mik7CiAKLSAgICAgICAgcmVzdWx0LmFwcGVuZChFeGNsdXNpb25JbnRlcnZhbCh4MSwg
eDIpKTsKKyAgICAgICAgaWYgKHgyID4geDEpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKEV4
Y2x1c2lvbkludGVydmFsKHgxLCB4MikpOwogICAgIH0KIAogICAgIHNvcnRFeGNsdXNpb25JbnRl
cnZhbHMocmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNs
dXNpb25Qb2x5Z29uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdv
bi5oCmluZGV4IGJlMjhhN2YuLmNmMDdmNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0V4Y2x1c2lvblBvbHlnb24uaApAQCAtNTksMTMgKzU5LDE1IEBAIHB1YmxpYzoKICAgICB1bnNp
Z25lZCBudW1iZXJPZlZlcnRpY2VzKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0aWNlcy0+c2l6ZSgp
OyB9CiAgICAgV2luZFJ1bGUgZmlsbFJ1bGUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGxSdWxlOyB9
CiAKKyAgICBjb25zdCBFeGNsdXNpb25Qb2x5Z29uRWRnZSYgZWRnZUF0KHVuc2lnbmVkIGluZGV4
KSBjb25zdCB7IHJldHVybiBtX2VkZ2VzW2luZGV4XTsgfQorICAgIHVuc2lnbmVkIG51bWJlck9m
RWRnZXMoKSBjb25zdCB7IHJldHVybiBtX2VkZ2VzLnNpemUoKTsgfQorCiAgICAgdmlydHVhbCBG
bG9hdFJlY3Qgc2hhcGVMb2dpY2FsQm91bmRpbmdCb3goKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biBpbnRlcm5hbFRvTG9naWNhbEJvdW5kaW5nQm94KG1fYm91bmRpbmdCb3gpOyB9CiAgICAgdmly
dHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2VtcHR5OyB9CiAg
ICAgdmlydHVhbCB2b2lkIGdldEV4Y2x1ZGVkSW50ZXJ2YWxzKGZsb2F0IGxvZ2ljYWxUb3AsIGZs
b2F0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0JikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGdldEluY2x1ZGVkSW50ZXJ2YWxzKGZsb2F0IGxvZ2ljYWxUb3AsIGZsb2F0IGxv
Z2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0JikgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZhdGU6Ci0g
ICAgZmxvYXQgcmlnaHRWZXJ0ZXhZKHVuc2lnbmVkKSBjb25zdDsKICAgICB2b2lkIGNvbXB1dGVY
SW50ZXJzZWN0aW9ucyhmbG9hdCB5LCBWZWN0b3I8RXhjbHVzaW9uSW50ZXJ2YWw+JikgY29uc3Q7
CiAgICAgdm9pZCBjb21wdXRlRWRnZUludGVyc2VjdGlvbnMoZmxvYXQgbWluWSwgZmxvYXQgbWF4
WSwgVmVjdG9yPEV4Y2x1c2lvbkludGVydmFsPiYpIGNvbnN0OwogCkBAIC04NywxMyArODksMjUg
QEAgc3RydWN0IEV4Y2x1c2lvblBvbHlnb25FZGdlIHsKICAgICBjb25zdCBGbG9hdFBvaW50JiB2
ZXJ0ZXgxKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChwb2x5Z29uKTsKLSAgICAgICAg
cmV0dXJuIHBvbHlnb24tPnZlcnRleEF0KGluZGV4MSk7CisgICAgICAgIHJldHVybiBwb2x5Z29u
LT52ZXJ0ZXhBdCh2ZXJ0ZXgxSW5kZXgpOwogICAgIH0KIAogICAgIGNvbnN0IEZsb2F0UG9pbnQm
IHZlcnRleDIoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKHBvbHlnb24pOwotICAgICAg
ICByZXR1cm4gcG9seWdvbi0+dmVydGV4QXQoaW5kZXgyKTsKKyAgICAgICAgcmV0dXJuIHBvbHln
b24tPnZlcnRleEF0KHZlcnRleDJJbmRleCk7CisgICAgfQorCisgICAgY29uc3QgRXhjbHVzaW9u
UG9seWdvbkVkZ2UmIHByZXZpb3VzRWRnZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQo
cG9seWdvbiAmJiBwb2x5Z29uLT5udW1iZXJPZkVkZ2VzKCkgPiAxKTsKKyAgICAgICAgcmV0dXJu
IHBvbHlnb24tPmVkZ2VBdCgoZWRnZUluZGV4ICsgcG9seWdvbi0+bnVtYmVyT2ZFZGdlcygpIC0g
MikgJSBwb2x5Z29uLT5udW1iZXJPZkVkZ2VzKCkpOworICAgIH0KKworICAgIGNvbnN0IEV4Y2x1
c2lvblBvbHlnb25FZGdlJiBuZXh0RWRnZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQo
cG9seWdvbiAmJiBwb2x5Z29uLT5udW1iZXJPZkVkZ2VzKCkgPiAxKTsKKyAgICAgICAgcmV0dXJu
IHBvbHlnb24tPmVkZ2VBdCgoZWRnZUluZGV4ICsgMSkgJSBwb2x5Z29uLT5udW1iZXJPZkVkZ2Vz
KCkpOwogICAgIH0KIAogICAgIGZsb2F0IG1pblgoKSBjb25zdCB7IHJldHVybiBzdGQ6Om1pbih2
ZXJ0ZXgxKCkueCgpLCB2ZXJ0ZXgyKCkueCgpKTsgfQpAQCAtMTAyLDggKzExNiw5IEBAIHN0cnVj
dCBFeGNsdXNpb25Qb2x5Z29uRWRnZSB7CiAgICAgZmxvYXQgbWF4WSgpIGNvbnN0IHsgcmV0dXJu
IHN0ZDo6bWF4KHZlcnRleDEoKS55KCksIHZlcnRleDIoKS55KCkpOyB9CiAKICAgICBjb25zdCBF
eGNsdXNpb25Qb2x5Z29uKiBwb2x5Z29uOwotICAgIHVuc2lnbmVkIGluZGV4MTsKLSAgICB1bnNp
Z25lZCBpbmRleDI7CisgICAgdW5zaWduZWQgdmVydGV4MUluZGV4OworICAgIHVuc2lnbmVkIHZl
cnRleDJJbmRleDsKKyAgICB1bnNpZ25lZCBlZGdlSW5kZXg7CiB9OwogCiAvLyBUaGVzZSBzdHJ1
Y3R1cmVzIGFyZSB1c2VkIGJ5IFBPREludGVydmFsVHJlZSBmb3IgZGVidWdnaW5nLjEK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171470</attachid>
            <date>2012-10-30 09:28:30 -0700</date>
            <delta_ts>2012-10-30 16:40:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>24879</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3NzNkZTg5Li45NTgxMTBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMTAt
MjkgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGNs
dXNpb25zXSBNdWx0aXBsZSBzZWdtZW50IHBvbHlnb24gbGF5b3V0IGRvZXMgbm90IGdldCBhbGwg
c2VnbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMDAzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIHRlc3RzIGZvciBDU1MgRXhjbHVzaW9uIHNoYXBlLWluc2lkZSBwb2x5Z29ucyB3aXRo
IGhvcml6b250YWwgZWRnZXMuCisgICAgICAgIENvcnJlY3RlZCB0aGUgc2ltcGxlLXBvbHlnb24u
anMgY29kZSBmb3IgY29tcHV0aW5nIGEgcG9seWdvbidzIGluY2x1ZGVkIGludGVydmFscy4KKwor
ICAgICAgICAqIGZhc3QvZXhjbHVzaW9ucy9yZXNvdXJjZXMvc2ltcGxlLXBvbHlnb24uanM6Cisg
ICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcmVjdGls
aW5lYXItcG9seWdvbi0wMDEtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9l
eGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcmVjdGlsaW5lYXItcG9seWdvbi0w
MDEuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9z
aGFwZS1pbnNpZGUtcmVjdGlsaW5lYXItcG9seWdvbi0wMDItZXhwZWN0ZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcmVj
dGlsaW5lYXItcG9seWdvbi0wMDIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNp
b25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDA0LWV4cGVjdGVk
Lmh0bWw6CisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNp
ZGUtc2ltcGxlLXBvbHlnb24tMDA0Lmh0bWw6CisKIDIwMTItMTAtMzAgQ2hyaXMgRmxlaXphY2gg
IDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBTdXBwb3J0IGVtYmVkZGVkIFNW
RyBvYmplY3RzIGluIEFYIHRyZWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVz
aW9ucy9yZXNvdXJjZXMvc2ltcGxlLXBvbHlnb24uanMgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1
c2lvbnMvcmVzb3VyY2VzL3NpbXBsZS1wb2x5Z29uLmpzCmluZGV4IDgwNmNhY2EuLjhlOGE5OGQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9yZXNvdXJjZXMvc2ltcGxl
LXBvbHlnb24uanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3Jlc291cmNlcy9z
aW1wbGUtcG9seWdvbi5qcwpAQCAtMzgsNDkgKzM4LDYwIEBAIGZ1bmN0aW9uIHN1YnBpeGVsUm91
bmQoZikgewogfQogCiAvLyBSZXR1cm4gdHdvIFggaW50ZXJjZXB0cyBvZiB0aGUgaG9yaXpvbnRh
bCBsaW5lIGF0IHkuIFdlJ3JlIGFzc3VtaW5nIHRoYXQgdGhlIHBvbHlnb24KLS8vIDAgb3IgMiBp
bnRlcmNlcHRzIGZvciBhbGwgeS5PZiBjb3Vyc2UgdGhpcyBpc24ndCB0cnVlIGZvciBwb2x5Z29u
cyBpbiBnZW5lcmFsLAorLy8gaGFzIDAgb3IgMiBpbnRlcmNlcHRzIGZvciBhbGwgeS4gT2YgY291
cnNlIHRoaXMgaXNuJ3QgdHJ1ZSBmb3IgcG9seWdvbnMgaW4gZ2VuZXJhbCwKIC8vIGp1c3QgdGhl
IG9uZXMgdXNlZCBieSB0aGUgdGVzdCBjYXNlcyBzdXBwb3J0ZWQgYnkgdGhpcyBmaWxlLgogCiBm
dW5jdGlvbiBwb2x5Z29uWEludGVyY2VwdHMocG9seWdvbiwgeSkgewogICAgIHZhciB2ZXJ0aWNl
cyA9IHBvbHlnb24udmVydGljZXM7Ci0gICAgdmFyIHZlcnRleCA9IG51bGw7ICAvLyBmaXJzdCBp
bnRlcnNlY3Rpbmcgbm9uLWhvcml6b250YWwgZWRnZSB2ZXJ0ZXgsIHZlcnRleC55ID09IHkKLSAg
ICB2YXIgeEludGVyY2VwdHMgPSBbXTsKKyAgICB2YXIgZm91bmRYSW50ZXJjZXB0ID0gZmFsc2U7
CisgICAgdmFyIGludGVyY2VwdHNNaW5YLCBpbnRlcmNlcHRzTWF4WDsKIAotICAgIGZvcih2YXIg
aSA9IDA7IGkgPCB2ZXJ0aWNlcy5sZW5ndGggJiYgeEludGVyY2VwdHMubGVuZ3RoIDwgMjsgaSsr
KSB7CisgICAgZm9yKHZhciBpID0gMDsgaSA8IHZlcnRpY2VzLmxlbmd0aDsgaSsrKSB7CiAgICAg
ICAgIHZhciB2MSA9IHZlcnRpY2VzW2ldOwogICAgICAgICB2YXIgdjIgPSB2ZXJ0aWNlc1soaSAr
IDEpICUgdmVydGljZXMubGVuZ3RoXTsKIAotICAgICAgICBpZiAodmVydGV4ID09IHYxIHx8IHZl
cnRleCA9PSB2MikKKyAgICAgICAgaWYgKE1hdGgubWF4KHYxLnksIHYyLnkpIDwgeSB8fCBNYXRo
Lm1pbih2MS55LCB2Mi55KSA+IHkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICB2
YXIgbWluWSA9IE1hdGgubWluKHYxLnksIHYyLnkpOwotICAgICAgICB2YXIgbWF4WSA9IE1hdGgu
bWF4KHYxLnksIHYyLnkpOwotCi0gICAgICAgIGlmIChtYXhZIDwgeSB8fCBtaW5ZID4geSkKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChtaW5ZID09IG1heFkpCi0gICAgICAg
ICAgICByZXR1cm4gW3YxLngsIHYyLnhdOwotCi0gICAgICAgIGlmICh2MS55ID09IHkpIHsKLSAg
ICAgICAgICAgIHhJbnRlcmNlcHRzLnB1c2godjEueCk7Ci0gICAgICAgICAgICBpZiAoIXZlcnRl
eCkKLSAgICAgICAgICAgICAgICB2ZXJ0ZXggPSB2MTsKLSAgICAgICAgfQotICAgICAgICBlbHNl
IGlmICh2Mi55ID09IHkpIHsKLSAgICAgICAgICAgIHhJbnRlcmNlcHRzLnB1c2godjIueCk7Ci0g
ICAgICAgICAgICBpZiAoIXZlcnRleCkKLSAgICAgICAgICAgICAgICB2ZXJ0ZXggPSB2MjsKKyAg
ICAgICAgaWYgKHYxLnkgPT0geSAmJiB2Mi55ID09IHkpIHsgIC8vIGhvcml6b250YWwgZWRnZSAK
KyAgICAgICAgICAgIGlmICh5ICE9IHBvbHlnb24ubWF4WSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICAgICAgaWYgKCFmb3VuZFhJbnRlcmNlcHQpIHsKKyAgICAgICAgICAg
ICAgICBpbnRlcmNlcHRzTWluWCA9IE1hdGgubWluKHYxLngsIHYyLngpOworICAgICAgICAgICAg
ICAgIGludGVyY2VwdHNNYXhYID0gTWF0aC5tYXgodjEueCwgdjIueCk7CisgICAgICAgICAgICAg
ICAgZm91bmRYSW50ZXJjZXB0ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgIGludGVyY2VwdHNNaW5YID0gTWF0aC5taW4odjEueCwgdjIu
eCwgaW50ZXJjZXB0c01pblgpOworICAgICAgICAgICAgICAgIGludGVyY2VwdHNNYXhYID0gTWF0
aC5tYXgodjEueCwgdjIueCwgaW50ZXJjZXB0c01heFgpOworICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgeEludGVyY2VwdHMucHVzaCggKCh5IC0g
djEueSkgKiAodjIueCAtIHYxLngpIC8gKHYyLnkgLSB2MS55KSkgKyB2MS54ICk7CisgICAgICAg
ICAgICB2YXIgaW50ZXJjZXB0WDsKKworICAgICAgICAgICAgaWYgKHYxLnkgPT0geSkgCisgICAg
ICAgICAgICAgICAgaW50ZXJjZXB0WCA9IHYxLng7CisgICAgICAgICAgICBlbHNlIGlmICh2Mi55
ID09IHkpIAorICAgICAgICAgICAgICAgIGludGVyY2VwdFggPSB2Mi54OworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIGludGVyY2VwdFggPSAoKHkgLSB2MS55KSAqICh2Mi54IC0g
djEueCkgLyAodjIueSAtIHYxLnkpKSArIHYxLng7CisKKyAgICAgICAgICAgIGlmICghZm91bmRY
SW50ZXJjZXB0KSB7CisgICAgICAgICAgICAgICAgaW50ZXJjZXB0c01pblggPSBpbnRlcmNlcHRz
TWF4WCA9IGludGVyY2VwdFg7CisgICAgICAgICAgICAgICAgZm91bmRYSW50ZXJjZXB0ID0gdHJ1
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlu
dGVyY2VwdHNNaW5YID0gTWF0aC5taW4oaW50ZXJjZXB0WCwgaW50ZXJjZXB0c01pblgpOworICAg
ICAgICAgICAgICAgIGludGVyY2VwdHNNYXhYID0gTWF0aC5tYXgoaW50ZXJjZXB0WCwgaW50ZXJj
ZXB0c01heFgpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHhJ
bnRlcmNlcHRzLmxlbmd0aCAhPSAyKQorICAgIGlmICghZm91bmRYSW50ZXJjZXB0KQogICAgICAg
ICByZXR1cm4gW107CiAKLSAgICByZXR1cm4gW3N1YnBpeGVsUm91bmQoTWF0aC5taW4uYXBwbHko
bnVsbCwgeEludGVyY2VwdHMpKSwgTWF0aC5mbG9vcihNYXRoLm1heC5hcHBseShudWxsLCB4SW50
ZXJjZXB0cykpXTsKKyAgICByZXR1cm4gW3N1YnBpeGVsUm91bmQoaW50ZXJjZXB0c01pblgpLCBN
YXRoLmZsb29yKGludGVyY2VwdHNNYXhYKV07CiB9CiAKIGZ1bmN0aW9uIHBvbHlnb25MaW5lSW50
ZXJjZXB0cyhwb2x5Z29uLCB5LCBsaW5lSGVpZ2h0KSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yZWN0aWxpbmVhci1w
b2x5Z29uLTAwMS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3No
YXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcmVjdGlsaW5lYXItcG9seWdvbi0wMDEtZXhwZWN0ZWQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzkyZDg3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtcmVjdGlsaW5lYXItcG9seWdvbi0wMDEtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsx
LDM3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3NpbXBsZS1wb2x5Z29uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0
Q1NTRXhjbHVzaW9uc0VuYWJsZWQodHJ1ZSk7CisKKyAgICAvLyBSZWN0aWxpbmVhciBwb2x5Z29u
IHdpdGggdGhpcyBzaGFwZToKKyAgICAvLyAgIFhYWAorICAgIC8vIFhYWFhYWFgKKyAgICAvLyBY
WFhYWFhYCisKKyAgICB2YXIgdmVydGljZXMgPSBbe3g6MCwgeTo1MH0sIHt4OjEwMCwgeTo1MH0s
IHt4OjEwMCwgeTowfSwge3g6MjUwLCB5OjB9LCB7eDoyNTAsIHk6NTB9LCB7eDozNTAsIHk6NTB9
LCB7eDozNTAsIHk6MTUwfSwge3g6MCwgeToxNTB9XTsKKyAgICB2YXIgbGluZUhlaWdodCA9IDUw
OworICAgIHZhciBoYXNTdWJwaXhlbFN1cHBvcnQgPSBmYWxzZTsgIC8vIFRlc3QgcmVzdWx0cyBk
byBub3QgZGVwZW5kIG9uIHN1YnBpeGVsIGxheW91dC4KKzwvc2NyaXB0PgorCis8c3R5bGUgaWQ9
InN0eWxlc2hlZXQiPgorICAgICNwb2x5Z29uLXNoYXBlLWluc2lkZSwgI3BvbHlnb24tc3ZnLXNo
YXBlIHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICBsZWZ0OiAwcHg7Cisg
ICAgICAgIHRvcDogMHB4OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9h
ZD0iY3JlYXRlUG9seWdvblNoYXBlSW5zaWRlVGVzdENhc2VFeHBlY3RlZCgpIj4KKyAgPHN2ZyBp
ZD0icG9seWdvbi1zdmctc2hhcGUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+
PC9zdmc+CisgIDxkaXYgaWQ9InBvbHlnb24tc2hhcGUtaW5zaWRlIj48L2Rpdj4KKyAgPHAgaWQ9
ImluZm9ybWF0aXZlLXRleHQiPgorICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZv
bnQuIEl0IGNyZWF0ZXMgYSByZWN0aWxpbmVhciBwb2x5Z29uYWwgc2hhcGUtaW5zaWRlIGFuZCBh
CisgICAgICBtYXRjaGluZyBmaWxsZWQgU1ZHIHBvbHlnb24uIFRoZSBjb250ZW50IHNob3VsZCBq
dXN0IGZpbGwgdGhlIHNoYXBlIHdpdGggYWx0ZXJuYXRpbmcKKyAgICAgIGJsYWNrIGFuZCBlbXB0
eSByZWN0YW5nbGVzIG9uIGVhY2ggbGluZS48L3A+Cis8L2JvZHk+CisKKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5z
aWRlLXJlY3RpbGluZWFyLXBvbHlnb24tMDAxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1
c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yZWN0aWxpbmVhci1wb2x5Z29uLTAwMS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljOTQ3NGYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBl
LWluc2lkZS1yZWN0aWxpbmVhci1wb2x5Z29uLTAwMS5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
c2ltcGxlLXBvbHlnb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93Lmlu
dGVybmFscykKKyAgICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRDU1NFeGNsdXNp
b25zRW5hYmxlZCh0cnVlKTsKKworICAgIC8vIFJlY3RpbGluZWFyIHBvbHlnb24gd2l0aCB0aGlz
IHNoYXBlOgorICAgIC8vICAgWFhYCisgICAgLy8gWFhYWFhYWAorICAgIC8vIFhYWFhYWFgKKwor
ICAgIHZhciB2ZXJ0aWNlcyA9IFt7eDowLCB5OjUwfSwge3g6MTAwLCB5OjUwfSwge3g6MTAwLCB5
OjB9LCB7eDoyNTAsIHk6MH0sIHt4OjI1MCwgeTo1MH0sIHt4OjM1MCwgeTo1MH0sIHt4OjM1MCwg
eToxNTB9LCB7eDowLCB5OjE1MH1dOworICAgIHZhciBsaW5lSGVpZ2h0ID0gNTA7CisgICAgdmFy
IGhhc1N1YnBpeGVsU3VwcG9ydCA9IGZhbHNlOyAgLy8gVGVzdCByZXN1bHRzIGRvIG5vdCBkZXBl
bmQgb24gc3VicGl4ZWwgbGF5b3V0LgorPC9zY3JpcHQ+CisKKzxzdHlsZSBpZD0ic3R5bGVzaGVl
dCI+CisgICAgI3BvbHlnb24tc2hhcGUtaW5zaWRlLCAjcG9seWdvbi1zdmctc2hhcGUgeworICAg
ICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIGxlZnQ6IDBweDsKKyAgICAgICAgdG9w
OiAwcHg7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJjcmVhdGVQ
b2x5Z29uU2hhcGVJbnNpZGVUZXN0Q2FzZSgpOyI+CisgIDxzdmcgaWQ9InBvbHlnb24tc3ZnLXNo
YXBlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPgorICA8ZGl2IGlk
PSJwb2x5Z29uLXNoYXBlLWluc2lkZSI+PC9kaXY+CisgIDxwIGlkPSJpbmZvcm1hdGl2ZS10ZXh0
Ij4KKyAgICAgIFRoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBJdCBjcmVhdGVzIGEg
cmVjdGlsaW5lYXIgcG9seWdvbmFsIHNoYXBlLWluc2lkZSBhbmQgYQorICAgICAgbWF0Y2hpbmcg
ZmlsbGVkIFNWRyBwb2x5Z29uLiBUaGUgY29udGVudCBzaG91bGQganVzdCBmaWxsIHRoZSBzaGFw
ZSB3aXRoIGFsdGVybmF0aW5nCisgICAgICBibGFjayBhbmQgZW1wdHkgcmVjdGFuZ2xlcyBvbiBl
YWNoIGxpbmUuPC9wPgorPC9ib2R5PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yZWN0aWxpbmVhci1w
b2x5Z29uLTAwMi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3No
YXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcmVjdGlsaW5lYXItcG9seWdvbi0wMDItZXhwZWN0ZWQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2EzMDIzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtcmVjdGlsaW5lYXItcG9seWdvbi0wMDItZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsx
LDM4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3NpbXBsZS1wb2x5Z29uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0
Q1NTRXhjbHVzaW9uc0VuYWJsZWQodHJ1ZSk7CisKKyAgICAvLyBSZWN0aWxpbmVhciBwb2x5Z29u
IHdpdGggdGhpcyBzaGFwZToKKyAgICAvLyAgIFhYWAorICAgIC8vIFhYWFhYWFgKKyAgICAvLyBY
WFhYWFhYCisgICAgLy8gICBYWFgKKworICAgIHZhciB2ZXJ0aWNlcyA9IFt7eDowLCB5OjUwfSwg
e3g6MTAwLCB5OjUwfSwge3g6MTAwLCB5OjB9LCB7eDoyNTAsIHk6MH0sIHt4OjI1MCwgeTo1MH0s
IHt4OjM1MCwgeTo1MH0sIHt4OjM1MCwgeToxNTB9LCB7eDoyNTAsIHk6MTUwfSwge3g6MjUwLCB5
OjIwMH0sIHt4OjEwMCwgeToyMDB9LCB7eDoxMDAsIHk6MTUwfSwge3g6MCwgeToxNTB9XTsKKyAg
ICB2YXIgbGluZUhlaWdodCA9IDUwOworICAgIHZhciBoYXNTdWJwaXhlbFN1cHBvcnQgPSBmYWxz
ZTsgIC8vIFRlc3QgcmVzdWx0cyBkbyBub3QgZGVwZW5kIG9uIHN1YnBpeGVsIGxheW91dC4KKzwv
c2NyaXB0PgorCis8c3R5bGUgaWQ9InN0eWxlc2hlZXQiPgorICAgICNwb2x5Z29uLXNoYXBlLWlu
c2lkZSwgI3BvbHlnb24tc3ZnLXNoYXBlIHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwor
ICAgICAgICBsZWZ0OiAwcHg7CisgICAgICAgIHRvcDogMHB4OworICAgIH0KKzwvc3R5bGU+Cis8
L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0iY3JlYXRlUG9seWdvblNoYXBlSW5zaWRlVGVzdENhc2VF
eHBlY3RlZCgpOyI+CisgIDxzdmcgaWQ9InBvbHlnb24tc3ZnLXNoYXBlIiB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPgorICA8ZGl2IGlkPSJwb2x5Z29uLXNoYXBlLWlu
c2lkZSI+PC9kaXY+CisgIDxwIGlkPSJpbmZvcm1hdGl2ZS10ZXh0Ij4KKyAgICAgIFRoaXMgdGVz
dCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBJdCBjcmVhdGVzIGEgcmVjdGlsaW5lYXIgcG9seWdv
bmFsIHNoYXBlLWluc2lkZSBhbmQgYQorICAgICAgbWF0Y2hpbmcgZmlsbGVkIFNWRyBwb2x5Z29u
LiBUaGUgY29udGVudCBzaG91bGQganVzdCBmaWxsIHRoZSBzaGFwZSB3aXRoIGFsdGVybmF0aW5n
CisgICAgICBibGFjayBhbmQgZW1wdHkgcmVjdGFuZ2xlcyBvbiBlYWNoIGxpbmUuPC9wPgorPC9i
b2R5PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMv
c2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yZWN0aWxpbmVhci1wb2x5Z29uLTAwMi5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcmVj
dGlsaW5lYXItcG9seWdvbi0wMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi41Y2IzMWUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNp
b25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcmVjdGlsaW5lYXItcG9seWdvbi0wMDIuaHRt
bApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NpbXBsZS1wb2x5Z29uLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMu
c2V0dGluZ3Muc2V0Q1NTRXhjbHVzaW9uc0VuYWJsZWQodHJ1ZSk7CisKKyAgICAvLyBSZWN0aWxp
bmVhciBwb2x5Z29uIHdpdGggdGhpcyBzaGFwZToKKyAgICAvLyAgIFhYWAorICAgIC8vIFhYWFhY
WFgKKyAgICAvLyBYWFhYWFhYCisgICAgLy8gICBYWFgKKyAgICB2YXIgdmVydGljZXMgPSBbe3g6
MCwgeTo1MH0sIHt4OjEwMCwgeTo1MH0sIHt4OjEwMCwgeTowfSwge3g6MjUwLCB5OjB9LCB7eDoy
NTAsIHk6NTB9LCB7eDozNTAsIHk6NTB9LCB7eDozNTAsIHk6MTUwfSwge3g6MjUwLCB5OjE1MH0s
IHt4OjI1MCwgeToyMDB9LCB7eDoxMDAsIHk6MjAwfSwge3g6MTAwLCB5OjE1MH0sIHt4OjAsIHk6
MTUwfV07CisgICAgdmFyIGxpbmVIZWlnaHQgPSA1MDsKKyAgICB2YXIgaGFzU3VicGl4ZWxTdXBw
b3J0ID0gZmFsc2U7ICAvLyBUZXN0IHJlc3VsdHMgZG8gbm90IGRlcGVuZCBvbiBzdWJwaXhlbCBs
YXlvdXQuCis8L3NjcmlwdD4KKworPHN0eWxlIGlkPSJzdHlsZXNoZWV0Ij4KKyAgICAjcG9seWdv
bi1zaGFwZS1pbnNpZGUsICNwb2x5Z29uLXN2Zy1zaGFwZSB7CisgICAgICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKKyAgICAgICAgbGVmdDogMHB4OworICAgICAgICB0b3A6IDBweDsKKyAgICB9Cis8
L3N0eWxlPgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9ImNyZWF0ZVBvbHlnb25TaGFwZUluc2lk
ZVRlc3RDYXNlKCk7Ij4KKyAgPHN2ZyBpZD0icG9seWdvbi1zdmctc2hhcGUiIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PC9zdmc+CisgIDxkaXYgaWQ9InBvbHlnb24tc2hhcGUt
aW5zaWRlIj48L2Rpdj4KKyAgPHAgaWQ9ImluZm9ybWF0aXZlLXRleHQiPgorICAgICAgVGhpcyB0
ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIEl0IGNyZWF0ZXMgYSByZWN0aWxpbmVhciBwb2x5
Z29uYWwgc2hhcGUtaW5zaWRlIGFuZCBhCisgICAgICBtYXRjaGluZyBmaWxsZWQgU1ZHIHBvbHln
b24uIFRoZSBjb250ZW50IHNob3VsZCBqdXN0IGZpbGwgdGhlIHNoYXBlIHdpdGggYWx0ZXJuYXRp
bmcKKyAgICAgIGJsYWNrIGFuZCBlbXB0eSByZWN0YW5nbGVzIG9uIGVhY2ggbGluZS48L3A+Cis8
L2JvZHk+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9u
cy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXNpbXBsZS1wb2x5Z29uLTAwNC1leHBlY3RlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNp
ZGUtc2ltcGxlLXBvbHlnb24tMDA0LWV4cGVjdGVkLmh0bWwKaW5kZXggNTYzOGM3Yy4uN2I2Y2Yx
MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9z
aGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDA0LWV4cGVjdGVkLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBv
bHlnb24tMDA0LWV4cGVjdGVkLmh0bWwKQEAgLTgsNyArOCw3IEBACiAKICAgICAvLyBDb25jYXZl
IGFzc3ltZXRyaWMgc2ltcGxlIHBvbHlnb24gd2l0aCBob3Jpem9udGFsIHRvcCBhbmQgYm90dG9t
IGVkZ2VzLiAgQSB2ZXJzaW9uIG9mIHRoZSAwMDEKICAgICAvLyBob3VyZ2xhc3Mgc2hhcGUgd2l0
aCB2ZXJ0aWNhbCBlZGdlcyBpbiB0aGUgY2VudGVyLgotICAgIHZhciB2ZXJ0aWNlcyA9IFt7eDo0
MCwgeTo0MH0sIHt4OjQ0MCwgeTo0MH0sIHt4OjMyMCwgeToxNjB9LCB7eDozMjAsIHk6MjQwfSwg
e3g6NDgwLCB5OjQwMH0sIHt4OjgwLCB5OjQwMH0sIHt4OjIwMCwgeToyODB9LCB7eDoyMDAsIHk6
MjAwfV19OworICAgIHZhciB2ZXJ0aWNlcyA9IFt7eDo0MCwgeTo0MH0sIHt4OjQ0MCwgeTo0MH0s
IHt4OjMyMCwgeToxNjB9LCB7eDozMjAsIHk6MjQwfSwge3g6NDgwLCB5OjQwMH0sIHt4OjgwLCB5
OjQwMH0sIHt4OjIwMCwgeToyODB9LCB7eDoyMDAsIHk6MjAwfV07CiAgICAgdmFyIGxpbmVIZWln
aHQgPSA0MDsKICAgICB2YXIgaGFzU3VicGl4ZWxTdXBwb3J0OwogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1zaW1wbGUt
cG9seWdvbi0wMDQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNp
ZGUvc2hhcGUtaW5zaWRlLXNpbXBsZS1wb2x5Z29uLTAwNC5odG1sCmluZGV4IGU1OTRkZjAuLjFk
YjVhNGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNp
ZGUvc2hhcGUtaW5zaWRlLXNpbXBsZS1wb2x5Z29uLTAwNC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXNpbXBsZS1wb2x5Z29u
LTAwNC5odG1sCkBAIC04LDcgKzgsNyBAQAogCiAgICAgLy8gQ29uY2F2ZSBhc3N5bWV0cmljIHNp
bXBsZSBwb2x5Z29uIHdpdGggaG9yaXpvbnRhbCB0b3AgYW5kIGJvdHRvbSBlZGdlcy4gIEEgdmVy
c2lvbiBvZiB0aGUgMDAxCiAgICAgLy8gaG91cmdsYXNzIHNoYXBlIHdpdGggdmVydGljYWwgZWRn
ZXMgaW4gdGhlIGNlbnRlci4KLSAgICB2YXIgdmVydGljZXMgPSBbe3g6NDAsIHk6NDB9LCB7eDo0
NDAsIHk6NDB9LCB7eDozMjAsIHk6MTYwfSwge3g6MzIwLCB5OjI0MH0sIHt4OjQ4MCwgeTo0MDB9
LCB7eDo4MCwgeTo0MDB9LCB7eDoyMDAsIHk6MjgwfSwge3g6MjAwLCB5OjIwMH1dfTsKKyAgICB2
YXIgdmVydGljZXMgPSBbe3g6NDAsIHk6NDB9LCB7eDo0NDAsIHk6NDB9LCB7eDozMjAsIHk6MTYw
fSwge3g6MzIwLCB5OjI0MH0sIHt4OjQ4MCwgeTo0MDB9LCB7eDo4MCwgeTo0MDB9LCB7eDoyMDAs
IHk6MjgwfSwge3g6MjAwLCB5OjIwMH1dOwogICAgIHZhciBsaW5lSGVpZ2h0ID0gNDA7CiAgICAg
dmFyIGhhc1N1YnBpeGVsU3VwcG9ydDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDBlODA2Y2YuLjdjODM4OWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMi0xMC0yOSAgSGFucyBNdWxsZXIgIDxo
bXVsbGVyQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNdIE11bHRpcGxlIHNl
Z21lbnQgcG9seWdvbiBsYXlvdXQgZG9lcyBub3QgZ2V0IGFsbCBzZWdtZW50cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMDM5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29ycmVjdGVkIHRoZSBhbGdv
cml0aG0gZm9yIGNvbXB1dGluZyBpbmNsdWRlZCBwb2x5Z29uIGludGVydmFscyBmb3IgcmVjdGls
aW5lYXIgcG9seWdvbnMsCisgICAgICAgIGFuZCBwb2x5Z29ucyB3aXRoIGhvcml6b250YWwgZWRn
ZXMgaW4gZ2VuZXJhbC4KKworICAgICAgICBUZXN0czogZmFzdC9leGNsdXNpb25zL3NoYXBlLWlu
c2lkZS9zaGFwZS1pbnNpZGUtcmVjdGlsaW5lYXItcG9seWdvbi0wMDEuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcmVjdGlsaW5l
YXItcG9seWdvbi0wMDIuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHln
b24uY3BwOiBSZW1vdmVkIHNvbWUgaW50ZXJuYWwgZGVhZCBjb2RlIHJlbGF0ZWQgdG8gdGhlIG5v
LWxvbmdlci11c2VkIHNvcnRlZEVkZ2VzTWluWSBWZWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpF
eGNsdXNpb25Qb2x5Z29uOjpFeGNsdXNpb25Qb2x5Z29uKTogSW5pdGlhbGl6ZSBuZXcgRXhjbHVz
aW9uUG9seWdvbkVkZ2UgZWRnZUluZGV4IGZpZWxkLgorICAgICAgICAoV2ViQ29yZTo6Z2V0VmVy
dGV4SW50ZXJzZWN0aW9uVmVydGljZXMpOiBSZXR1cm4gdGhlIHByZXZpb3VzLCBuZXh0LCBhbmQg
dGFyZ2V0IHZlcnRleCBpbmRpY2VzIGZvciBhIHZlcnRleCBpbnRlcnNlY3Rpb24uCisgICAgICAg
IChXZWJDb3JlOjpFeGNsdXNpb25Qb2x5Z29uOjpjb21wdXRlWEludGVyc2VjdGlvbnMpOiBSZWZh
Y3RvcmVkIHRoZSBjb3JlIG9mIHRoaXMgbWV0aG9kIHRvIGltcHJvdmUgaGFuZGxpbmcgb2YgaG9y
aXpvbnRhbCBlZGdlcy4KKyAgICAgICAgKFdlYkNvcmU6OkV4Y2x1c2lvblBvbHlnb246OmNvbXB1
dGVFZGdlSW50ZXJzZWN0aW9ucyk6IElnbm9yZSB6ZXJvLXdpZHRoIGVkZ2VzLgorICAgICAgICAq
IHJlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmg6IFJlbW92ZWQgdGhlIHJpZ2h0VmVydGV4WSgp
IG1ldGhvZCwgc2luY2UgaXQncyBubyBsb25nZXIgdXNlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4
Y2x1c2lvblBvbHlnb246OmVkZ2VBdCk6IE5ldyBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpF
eGNsdXNpb25Qb2x5Z29uOjpudW1iZXJPZkVkZ2VzKTogTmV3IG1ldGhvZC4KKyAgICAgICAgKEV4
Y2x1c2lvblBvbHlnb24pOiBBZGRlZCBzdXBwb3J0IGZvciByZXRyaWV2aW5nIGVkZ2VzLgorICAg
ICAgICAoV2ViQ29yZTo6RXhjbHVzaW9uUG9seWdvbkVkZ2U6OnZlcnRleDEpOiBVc2UgdmVydGV4
MUluZGV4LgorICAgICAgICAoV2ViQ29yZTo6RXhjbHVzaW9uUG9seWdvbkVkZ2U6OnZlcnRleDIp
OiBVc2UgdmVydGV4MkluZGV4LgorICAgICAgICAoRXhjbHVzaW9uUG9seWdvbkVkZ2UpOiBSZW5h
bWVkIGluZGV4MSwgaW5kZXgyIGZpZWxkcyB0byB2ZXJ0ZXgxSW5kZXgsIHZlcnRleDJJbmRleC4K
KyAgICAgICAgKFdlYkNvcmU6OkV4Y2x1c2lvblBvbHlnb25FZGdlOjpwcmV2aW91c0VkZ2UpOiBO
ZXcgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6RXhjbHVzaW9uUG9seWdvbkVkZ2U6Om5leHRF
ZGdlKTogTmV3IG1ldGhvZC4KKwogMjAxMi0xMC0yOSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgogCiAgICAgICAgIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgc2hvdWxkIHJl
dHVybiBhIFJldGFpblB0cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4
Y2x1c2lvblBvbHlnb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBv
bHlnb24uY3BwCmluZGV4IGVhZWViYTcuLjM0ZWYxODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5jcHAKQEAgLTQ3LDExICs0Nyw2IEBAIHN0cnVjdCBF
ZGdlSW50ZXJzZWN0aW9uIHsKICAgICBFZGdlSW50ZXJzZWN0aW9uVHlwZSB0eXBlOwogfTsKIAot
c3RhdGljIGJvb2wgY29tcGFyZUVkZ2VNaW5ZKGNvbnN0IEV4Y2x1c2lvblBvbHlnb25FZGdlKiBl
MSwgY29uc3QgRXhjbHVzaW9uUG9seWdvbkVkZ2UqIGUyKQotewotICAgIHJldHVybiBlMS0+bWlu
WSgpIDwgZTItPm1pblkoKTsKLX0KLQogRXhjbHVzaW9uUG9seWdvbjo6RXhjbHVzaW9uUG9seWdv
bihQYXNzT3duUHRyPFZlY3RvcjxGbG9hdFBvaW50PiA+IHZlcnRpY2VzLCBXaW5kUnVsZSBmaWxs
UnVsZSkKICAgICA6IEV4Y2x1c2lvblNoYXBlKCkKICAgICAsIG1fdmVydGljZXModmVydGljZXMp
CkBAIC02MCw3ICs1NSw2IEBAIEV4Y2x1c2lvblBvbHlnb246OkV4Y2x1c2lvblBvbHlnb24oUGFz
c093blB0cjxWZWN0b3I8RmxvYXRQb2ludD4gPiB2ZXJ0aWNlcywgV2luCiAgICAgdW5zaWduZWQg
blZlcnRpY2VzID0gbnVtYmVyT2ZWZXJ0aWNlcygpOwogICAgIG1fZWRnZXMucmVzaXplKG5WZXJ0
aWNlcyk7CiAgICAgbV9lbXB0eSA9IG5WZXJ0aWNlcyA8IDM7Ci0gICAgVmVjdG9yPEV4Y2x1c2lv
blBvbHlnb25FZGdlKj4gc29ydGVkRWRnZXNNaW5ZKG5WZXJ0aWNlcyk7CiAKICAgICBpZiAoblZl
cnRpY2VzKQogICAgICAgICBtX2JvdW5kaW5nQm94LnNldExvY2F0aW9uKHZlcnRleEF0KDApKTsK
QEAgLTY5LDE0ICs2MywxMSBAQCBFeGNsdXNpb25Qb2x5Z29uOjpFeGNsdXNpb25Qb2x5Z29uKFBh
c3NPd25QdHI8VmVjdG9yPEZsb2F0UG9pbnQ+ID4gdmVydGljZXMsIFdpbgogICAgICAgICBjb25z
dCBGbG9hdFBvaW50JiB2ZXJ0ZXggPSB2ZXJ0ZXhBdChpKTsKICAgICAgICAgbV9ib3VuZGluZ0Jv
eC5leHRlbmQodmVydGV4KTsKICAgICAgICAgbV9lZGdlc1tpXS5wb2x5Z29uID0gdGhpczsKLSAg
ICAgICAgbV9lZGdlc1tpXS5pbmRleDEgPSBpOwotICAgICAgICBtX2VkZ2VzW2ldLmluZGV4MiA9
IChpICsgMSkgJSBuVmVydGljZXM7Ci0KLSAgICAgICAgc29ydGVkRWRnZXNNaW5ZW2ldID0gJm1f
ZWRnZXNbaV07CisgICAgICAgIG1fZWRnZXNbaV0udmVydGV4MUluZGV4ID0gaTsKKyAgICAgICAg
bV9lZGdlc1tpXS52ZXJ0ZXgySW5kZXggPSAoaSArIDEpICUgblZlcnRpY2VzOworICAgICAgICBt
X2VkZ2VzW2ldLmVkZ2VJbmRleCA9IGk7CiAgICAgfQogCi0gICAgc3RkOjpzb3J0KHNvcnRlZEVk
Z2VzTWluWS5iZWdpbigpLCBzb3J0ZWRFZGdlc01pblkuZW5kKCksIFdlYkNvcmU6OmNvbXBhcmVF
ZGdlTWluWSk7Ci0KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9lZGdlcy5zaXplKCk7
IGkrKykgewogICAgICAgICBFeGNsdXNpb25Qb2x5Z29uRWRnZSogZWRnZSA9ICZtX2VkZ2VzW2ld
OwogICAgICAgICBtX2VkZ2VUcmVlLmFkZChFZGdlSW50ZXJ2YWwoZWRnZS0+bWluWSgpLCBlZGdl
LT5tYXhZKCksIGVkZ2UpKTsKQEAgLTExOCwxNSArMTA5LDI3IEBAIHN0YXRpYyBib29sIGNvbXB1
dGVYSW50ZXJzZWN0aW9uKGNvbnN0IEV4Y2x1c2lvblBvbHlnb25FZGdlKiBlZGdlUG9pbnRlciwg
ZmxvYXQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotZmxvYXQgRXhjbHVzaW9uUG9seWdvbjo6cmln
aHRWZXJ0ZXhZKHVuc2lnbmVkIGluZGV4KSBjb25zdAorc3RhdGljIGlubGluZSBib29sIGdldFZl
cnRleEludGVyc2VjdGlvblZlcnRpY2VzKGNvbnN0IEVkZ2VJbnRlcnNlY3Rpb24mIGludGVyc2Vj
dGlvbiwgRmxvYXRQb2ludCYgcHJldlZlcnRleCwgRmxvYXRQb2ludCYgdGhpc1ZlcnRleCwgRmxv
YXRQb2ludCYgbmV4dFZlcnRleCkKIHsKLSAgICB1bnNpZ25lZCBuVmVydGljZXMgPSBudW1iZXJP
ZlZlcnRpY2VzKCk7Ci0gICAgY29uc3QgRmxvYXRQb2ludCYgdmVydGV4MSA9IHZlcnRleEF0KChp
bmRleCArIDEpICUgblZlcnRpY2VzKTsKLSAgICBjb25zdCBGbG9hdFBvaW50JiB2ZXJ0ZXgyID0g
dmVydGV4QXQoKGluZGV4IC0gMSkgJSBuVmVydGljZXMpOworICAgIGlmIChpbnRlcnNlY3Rpb24u
dHlwZSAhPSBWZXJ0ZXhNaW5ZICYmIGludGVyc2VjdGlvbi50eXBlICE9IFZlcnRleE1heFkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEFTU0VSVChpbnRlcnNlY3Rpb24uZWRnZSAmJiBp
bnRlcnNlY3Rpb24uZWRnZS0+cG9seWdvbik7CisgICAgY29uc3QgRXhjbHVzaW9uUG9seWdvbiYg
cG9seWdvbiA9ICooaW50ZXJzZWN0aW9uLmVkZ2UtPnBvbHlnb24pOworICAgIGNvbnN0IEV4Y2x1
c2lvblBvbHlnb25FZGdlJiB0aGlzRWRnZSA9ICooaW50ZXJzZWN0aW9uLmVkZ2UpOwogCi0gICAg
aWYgKHZlcnRleDEueCgpID09IHZlcnRleDIueCgpKQotICAgICAgICByZXR1cm4gdmVydGV4MS55
KCkgPiB2ZXJ0ZXgyLnkoKSA/IHZlcnRleDEueSgpIDogdmVydGV4Mi55KCk7Ci0gICAgcmV0dXJu
IHZlcnRleDEueCgpID4gdmVydGV4Mi54KCkgPyB2ZXJ0ZXgxLnkoKSA6IHZlcnRleDIueSgpOwor
ICAgIGlmICgoaW50ZXJzZWN0aW9uLnR5cGUgPT0gVmVydGV4TWluWSAmJiAodGhpc0VkZ2UudmVy
dGV4MSgpLnkoKSA8IHRoaXNFZGdlLnZlcnRleDIoKS55KCkpKQorICAgICAgICB8fCAoaW50ZXJz
ZWN0aW9uLnR5cGUgPT0gVmVydGV4TWF4WSAmJiAodGhpc0VkZ2UudmVydGV4MSgpLnkoKSA+IHRo
aXNFZGdlLnZlcnRleDIoKS55KCkpKSkgeworICAgICAgICBwcmV2VmVydGV4ID0gcG9seWdvbi52
ZXJ0ZXhBdCh0aGlzRWRnZS5wcmV2aW91c0VkZ2UoKS52ZXJ0ZXgySW5kZXgpOworICAgICAgICB0
aGlzVmVydGV4ID0gcG9seWdvbi52ZXJ0ZXhBdCh0aGlzRWRnZS52ZXJ0ZXgxSW5kZXgpOworICAg
ICAgICBuZXh0VmVydGV4ID0gcG9seWdvbi52ZXJ0ZXhBdCh0aGlzRWRnZS52ZXJ0ZXgySW5kZXgp
OworICAgIH0gZWxzZSB7CisgICAgICAgIHByZXZWZXJ0ZXggPSBwb2x5Z29uLnZlcnRleEF0KHRo
aXNFZGdlLnZlcnRleDFJbmRleCk7CisgICAgICAgIHRoaXNWZXJ0ZXggPSBwb2x5Z29uLnZlcnRl
eEF0KHRoaXNFZGdlLnZlcnRleDJJbmRleCk7CisgICAgICAgIG5leHRWZXJ0ZXggPSBwb2x5Z29u
LnZlcnRleEF0KHRoaXNFZGdlLm5leHRFZGdlKCkudmVydGV4MUluZGV4KTsKKyAgICB9CisKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgYXBwZW5kSW50ZXJ2YWxYKGZsb2F0IHgs
IGJvb2wgaW5zaWRlLCBWZWN0b3I8RXhjbHVzaW9uSW50ZXJ2YWw+JiByZXN1bHQpCkBAIC0xNTUs
NyArMTU4LDcgQEAgdm9pZCBFeGNsdXNpb25Qb2x5Z29uOjpjb21wdXRlWEludGVyc2VjdGlvbnMo
ZmxvYXQgeSwgVmVjdG9yPEV4Y2x1c2lvbkludGVydmFsPiYKICAgICBFZGdlSW50ZXJzZWN0aW9u
IGludGVyc2VjdGlvbjsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb3ZlcmxhcHBpbmdF
ZGdlcy5zaXplKCk7IGkrKykgewogICAgICAgICBFeGNsdXNpb25Qb2x5Z29uRWRnZSogZWRnZSA9
IHN0YXRpY19jYXN0PEV4Y2x1c2lvblBvbHlnb25FZGdlKj4ob3ZlcmxhcHBpbmdFZGdlc1tpXS5k
YXRhKCkpOwotICAgICAgICBpZiAoY29tcHV0ZVhJbnRlcnNlY3Rpb24oZWRnZSwgeSwgaW50ZXJz
ZWN0aW9uKSkKKyAgICAgICAgaWYgKGNvbXB1dGVYSW50ZXJzZWN0aW9uKGVkZ2UsIHksIGludGVy
c2VjdGlvbikgJiYgaW50ZXJzZWN0aW9uLnR5cGUgIT0gVmVydGV4WUJvdGgpCiAgICAgICAgICAg
ICBpbnRlcnNlY3Rpb25zLmFwcGVuZChpbnRlcnNlY3Rpb24pOwogICAgIH0KICAgICBpZiAoaW50
ZXJzZWN0aW9ucy5zaXplKCkgPCAyKQpAQCAtMTY5LDcgKzE3Miw2IEBAIHZvaWQgRXhjbHVzaW9u
UG9seWdvbjo6Y29tcHV0ZVhJbnRlcnNlY3Rpb25zKGZsb2F0IHksIFZlY3RvcjxFeGNsdXNpb25J
bnRlcnZhbD4mCiAKICAgICB3aGlsZSAoaW5kZXggPCBpbnRlcnNlY3Rpb25zLnNpemUoKSkgewog
ICAgICAgICBjb25zdCBFZGdlSW50ZXJzZWN0aW9uJiB0aGlzSW50ZXJzZWN0aW9uID0gaW50ZXJz
ZWN0aW9uc1tpbmRleF07Ci0KICAgICAgICAgaWYgKGluZGV4ICsgMSA8IGludGVyc2VjdGlvbnMu
c2l6ZSgpKSB7CiAgICAgICAgICAgICBjb25zdCBFZGdlSW50ZXJzZWN0aW9uJiBuZXh0SW50ZXJz
ZWN0aW9uID0gaW50ZXJzZWN0aW9uc1tpbmRleCArIDFdOwogICAgICAgICAgICAgaWYgKCh0aGlz
SW50ZXJzZWN0aW9uLnBvaW50LngoKSA9PSBuZXh0SW50ZXJzZWN0aW9uLnBvaW50LngoKSkgJiYg
KHRoaXNJbnRlcnNlY3Rpb24udHlwZSA9PSBWZXJ0ZXhNaW5ZIHx8IHRoaXNJbnRlcnNlY3Rpb24u
dHlwZSA9PSBWZXJ0ZXhNYXhZKSkgewpAQCAtMTc3LDkgKzE3OSw3IEBAIHZvaWQgRXhjbHVzaW9u
UG9seWdvbjo6Y29tcHV0ZVhJbnRlcnNlY3Rpb25zKGZsb2F0IHksIFZlY3RvcjxFeGNsdXNpb25J
bnRlcnZhbD4mCiAgICAgICAgICAgICAgICAgICAgIC8vIFNraXAgcGFpcnMgb2YgaW50ZXJzZWN0
aW9ucyB3aG9zZSB0eXBlcyBhcmUgVmVydGV4TWF4WSxWZXJ0ZXhNYXhZIGFuZCBWZXJ0ZXhNaW5Z
LFZlcnRleE1pblkuCiAgICAgICAgICAgICAgICAgICAgIGluZGV4ICs9IDI7CiAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gUmVwbGFjZSBwYWlycyBvZiBp
bnRlcnNlY3Rpb25zIHdob3NlIHR5cGVzIGFyZSBWZXJ0ZXhNaW5ZLFZlcnRleE1heFkgb3IgVmVy
dGV4TWF4WSxWZXJ0ZXhNaW5ZIHdpdGggb25lIFZlcnRleE1pblkgaW50ZXJzZWN0aW9uLgotICAg
ICAgICAgICAgICAgICAgICBpZiAobmV4dEludGVyc2VjdGlvbi50eXBlID09IFZlcnRleE1heFkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnNlY3Rpb25zW2luZGV4ICsgMV0gPSB0aGlz
SW50ZXJzZWN0aW9uOworICAgICAgICAgICAgICAgICAgICAvLyBSZXBsYWNlIHBhaXJzIG9mIGlu
dGVyc2VjdGlvbnMgd2hvc2UgdHlwZXMgYXJlIFZlcnRleE1pblksVmVydGV4TWF4WSBvciBWZXJ0
ZXhNYXhZLFZlcnRleE1pblkgd2l0aCBvbmUgaW50ZXJzZWN0aW9uLgogICAgICAgICAgICAgICAg
ICAgICBpbmRleCsrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjb250aW51
ZTsKQEAgLTE4NywyMiArMTg3LDMyIEBAIHZvaWQgRXhjbHVzaW9uUG9seWdvbjo6Y29tcHV0ZVhJ
bnRlcnNlY3Rpb25zKGZsb2F0IHksIFZlY3RvcjxFeGNsdXNpb25JbnRlcnZhbD4mCiAgICAgICAg
IH0KIAogICAgICAgICBjb25zdCBFeGNsdXNpb25Qb2x5Z29uRWRnZSYgdGhpc0VkZ2UgPSAqdGhp
c0ludGVyc2VjdGlvbi5lZGdlOwotICAgICAgICBib29sIGNyb3NzaW5nID0gIXdpbmRDb3VudDsK
KyAgICAgICAgYm9vbCBldmVuT2RkQ3Jvc3NpbmcgPSAhd2luZENvdW50OwogCiAgICAgICAgIGlm
IChmaWxsUnVsZSgpID09IFJVTEVfRVZFTk9ERCkgewogICAgICAgICAgICAgd2luZENvdW50ICs9
ICh0aGlzRWRnZS52ZXJ0ZXgyKCkueSgpID4gdGhpc0VkZ2UudmVydGV4MSgpLnkoKSkgPyAxIDog
LTE7Ci0gICAgICAgICAgICBjcm9zc2luZyA9IGNyb3NzaW5nIHx8ICF3aW5kQ291bnQ7CisgICAg
ICAgICAgICBldmVuT2RkQ3Jvc3NpbmcgPSBldmVuT2RkQ3Jvc3NpbmcgfHwgIXdpbmRDb3VudDsK
ICAgICAgICAgfQogCi0gICAgICAgIGlmICgodGhpc0ludGVyc2VjdGlvbi50eXBlID09IE5vcm1h
bCkgfHwgKHRoaXNJbnRlcnNlY3Rpb24udHlwZSA9PSBWZXJ0ZXhNaW5ZKSkgewotICAgICAgICAg
ICAgaWYgKGNyb3NzaW5nKQorICAgICAgICBpZiAoZXZlbk9kZENyb3NzaW5nKSB7CisgICAgICAg
ICAgICBib29sIGVkZ2VDcm9zc2luZyA9IGZhbHNlOworICAgICAgICAgICAgaWYgKHRoaXNJbnRl
cnNlY3Rpb24udHlwZSA9PSBOb3JtYWwgfHwgIWluc2lkZSB8fCBpbmRleCA9PSBpbnRlcnNlY3Rp
b25zLnNpemUoKSAtIDEpCisgICAgICAgICAgICAgICAgZWRnZUNyb3NzaW5nID0gdHJ1ZTsKKyAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQgcHJldlZlcnRleDsK
KyAgICAgICAgICAgICAgICBGbG9hdFBvaW50IHRoaXNWZXJ0ZXg7CisgICAgICAgICAgICAgICAg
RmxvYXRQb2ludCBuZXh0VmVydGV4OworCisgICAgICAgICAgICAgICAgaWYgKGdldFZlcnRleElu
dGVyc2VjdGlvblZlcnRpY2VzKHRoaXNJbnRlcnNlY3Rpb24sIHByZXZWZXJ0ZXgsIHRoaXNWZXJ0
ZXgsIG5leHRWZXJ0ZXgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcmV2VmVydGV4Lnko
KSA9PSB5KQorICAgICAgICAgICAgICAgICAgICAgICAgZWRnZUNyb3NzaW5nID0gICh0aGlzVmVy
dGV4LngoKSA+IHByZXZWZXJ0ZXgueCgpKSA/IG5leHRWZXJ0ZXgueSgpID4geSA6IG5leHRWZXJ0
ZXgueSgpIDwgeTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICAgICAgZWRnZUNyb3NzaW5nID0gKG5leHRWZXJ0ZXgueSgpICE9IHkpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChlZGdlQ3Jvc3NpbmcpCiAgICAg
ICAgICAgICAgICAgaW5zaWRlID0gYXBwZW5kSW50ZXJ2YWxYKHRoaXNJbnRlcnNlY3Rpb24ucG9p
bnQueCgpLCBpbnNpZGUsIHJlc3VsdCk7Ci0gICAgICAgIH0gZWxzZSBpZiAodGhpc0ludGVyc2Vj
dGlvbi50eXBlID09IFZlcnRleE1heFkpIHsKLSAgICAgICAgICAgIGludCB2ZXJ0ZXhJbmRleCA9
ICh0aGlzRWRnZS52ZXJ0ZXgyKCkueSgpID4gdGhpc0VkZ2UudmVydGV4MSgpLnkoKSkgPyB0aGlz
RWRnZS5pbmRleDIgOiB0aGlzRWRnZS5pbmRleDE7Ci0gICAgICAgICAgICBpZiAoY3Jvc3Npbmcg
JiYgcmlnaHRWZXJ0ZXhZKHZlcnRleEluZGV4KSA+IHkpCi0gICAgICAgICAgICAgICAgaW5zaWRl
ID0gYXBwZW5kSW50ZXJ2YWxYKHRoaXNFZGdlLm1heFgoKSwgaW5zaWRlLCByZXN1bHQpOwotICAg
ICAgICB9IGVsc2UgaWYgKHRoaXNJbnRlcnNlY3Rpb24udHlwZSA9PSBWZXJ0ZXhZQm90aCkKLSAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoRXhjbHVzaW9uSW50ZXJ2YWwodGhpc0VkZ2UubWluWCgp
LCB0aGlzRWRnZS5tYXhYKCkpKTsKKyAgICAgICAgfQogCiAgICAgICAgIGluZGV4Kys7CiAgICAg
fQpAQCAtMjM1LDcgKzI0NSw4IEBAIHZvaWQgRXhjbHVzaW9uUG9seWdvbjo6Y29tcHV0ZUVkZ2VJ
bnRlcnNlY3Rpb25zKGZsb2F0IHkxLCBmbG9hdCB5MiwgVmVjdG9yPEV4Y2x1CiAgICAgICAgIGlm
ICh4MSA+IHgyKQogICAgICAgICAgICAgc3RkOjpzd2FwKHgxLCB4Mik7CiAKLSAgICAgICAgcmVz
dWx0LmFwcGVuZChFeGNsdXNpb25JbnRlcnZhbCh4MSwgeDIpKTsKKyAgICAgICAgaWYgKHgyID4g
eDEpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKEV4Y2x1c2lvbkludGVydmFsKHgxLCB4Mikp
OwogICAgIH0KIAogICAgIHNvcnRFeGNsdXNpb25JbnRlcnZhbHMocmVzdWx0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5oCmluZGV4IGJlMjhhN2YuLmNmMDdm
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uaApAQCAt
NTksMTMgKzU5LDE1IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBudW1iZXJPZlZlcnRpY2VzKCkg
Y29uc3QgeyByZXR1cm4gbV92ZXJ0aWNlcy0+c2l6ZSgpOyB9CiAgICAgV2luZFJ1bGUgZmlsbFJ1
bGUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGxSdWxlOyB9CiAKKyAgICBjb25zdCBFeGNsdXNpb25Q
b2x5Z29uRWRnZSYgZWRnZUF0KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX2VkZ2Vz
W2luZGV4XTsgfQorICAgIHVuc2lnbmVkIG51bWJlck9mRWRnZXMoKSBjb25zdCB7IHJldHVybiBt
X2VkZ2VzLnNpemUoKTsgfQorCiAgICAgdmlydHVhbCBGbG9hdFJlY3Qgc2hhcGVMb2dpY2FsQm91
bmRpbmdCb3goKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBpbnRlcm5hbFRvTG9naWNhbEJvdW5k
aW5nQm94KG1fYm91bmRpbmdCb3gpOyB9CiAgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiBtX2VtcHR5OyB9CiAgICAgdmlydHVhbCB2b2lkIGdldEV4Y2x1
ZGVkSW50ZXJ2YWxzKGZsb2F0IGxvZ2ljYWxUb3AsIGZsb2F0IGxvZ2ljYWxIZWlnaHQsIFNlZ21l
bnRMaXN0JikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGdldEluY2x1ZGVkSW50
ZXJ2YWxzKGZsb2F0IGxvZ2ljYWxUb3AsIGZsb2F0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0
JikgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZhdGU6Ci0gICAgZmxvYXQgcmlnaHRWZXJ0ZXhZKHVu
c2lnbmVkKSBjb25zdDsKICAgICB2b2lkIGNvbXB1dGVYSW50ZXJzZWN0aW9ucyhmbG9hdCB5LCBW
ZWN0b3I8RXhjbHVzaW9uSW50ZXJ2YWw+JikgY29uc3Q7CiAgICAgdm9pZCBjb21wdXRlRWRnZUlu
dGVyc2VjdGlvbnMoZmxvYXQgbWluWSwgZmxvYXQgbWF4WSwgVmVjdG9yPEV4Y2x1c2lvbkludGVy
dmFsPiYpIGNvbnN0OwogCkBAIC04NywxMyArODksMjUgQEAgc3RydWN0IEV4Y2x1c2lvblBvbHln
b25FZGdlIHsKICAgICBjb25zdCBGbG9hdFBvaW50JiB2ZXJ0ZXgxKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIEFTU0VSVChwb2x5Z29uKTsKLSAgICAgICAgcmV0dXJuIHBvbHlnb24tPnZlcnRleEF0
KGluZGV4MSk7CisgICAgICAgIHJldHVybiBwb2x5Z29uLT52ZXJ0ZXhBdCh2ZXJ0ZXgxSW5kZXgp
OwogICAgIH0KIAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHZlcnRleDIoKSBjb25zdAogICAgIHsK
ICAgICAgICAgQVNTRVJUKHBvbHlnb24pOwotICAgICAgICByZXR1cm4gcG9seWdvbi0+dmVydGV4
QXQoaW5kZXgyKTsKKyAgICAgICAgcmV0dXJuIHBvbHlnb24tPnZlcnRleEF0KHZlcnRleDJJbmRl
eCk7CisgICAgfQorCisgICAgY29uc3QgRXhjbHVzaW9uUG9seWdvbkVkZ2UmIHByZXZpb3VzRWRn
ZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQocG9seWdvbiAmJiBwb2x5Z29uLT5udW1i
ZXJPZkVkZ2VzKCkgPiAxKTsKKyAgICAgICAgcmV0dXJuIHBvbHlnb24tPmVkZ2VBdCgoZWRnZUlu
ZGV4ICsgcG9seWdvbi0+bnVtYmVyT2ZFZGdlcygpIC0gMikgJSBwb2x5Z29uLT5udW1iZXJPZkVk
Z2VzKCkpOworICAgIH0KKworICAgIGNvbnN0IEV4Y2x1c2lvblBvbHlnb25FZGdlJiBuZXh0RWRn
ZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQocG9seWdvbiAmJiBwb2x5Z29uLT5udW1i
ZXJPZkVkZ2VzKCkgPiAxKTsKKyAgICAgICAgcmV0dXJuIHBvbHlnb24tPmVkZ2VBdCgoZWRnZUlu
ZGV4ICsgMSkgJSBwb2x5Z29uLT5udW1iZXJPZkVkZ2VzKCkpOwogICAgIH0KIAogICAgIGZsb2F0
IG1pblgoKSBjb25zdCB7IHJldHVybiBzdGQ6Om1pbih2ZXJ0ZXgxKCkueCgpLCB2ZXJ0ZXgyKCku
eCgpKTsgfQpAQCAtMTAyLDggKzExNiw5IEBAIHN0cnVjdCBFeGNsdXNpb25Qb2x5Z29uRWRnZSB7
CiAgICAgZmxvYXQgbWF4WSgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bWF4KHZlcnRleDEoKS55KCks
IHZlcnRleDIoKS55KCkpOyB9CiAKICAgICBjb25zdCBFeGNsdXNpb25Qb2x5Z29uKiBwb2x5Z29u
OwotICAgIHVuc2lnbmVkIGluZGV4MTsKLSAgICB1bnNpZ25lZCBpbmRleDI7CisgICAgdW5zaWdu
ZWQgdmVydGV4MUluZGV4OworICAgIHVuc2lnbmVkIHZlcnRleDJJbmRleDsKKyAgICB1bnNpZ25l
ZCBlZGdlSW5kZXg7CiB9OwogCiAvLyBUaGVzZSBzdHJ1Y3R1cmVzIGFyZSB1c2VkIGJ5IFBPRElu
dGVydmFsVHJlZSBmb3IgZGVidWdnaW5nLjEK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171546</attachid>
            <date>2012-10-30 16:40:29 -0700</date>
            <delta_ts>2012-10-30 18:38:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>24936</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2MjAzZWI5Li43ODM5YmZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMTAt
MjkgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGNs
dXNpb25zXSBNdWx0aXBsZSBzZWdtZW50IHBvbHlnb24gbGF5b3V0IGRvZXMgbm90IGdldCBhbGwg
c2VnbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMDAzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIHRlc3RzIGZvciBDU1MgRXhjbHVzaW9uIHNoYXBlLWluc2lkZSBwb2x5Z29ucyB3aXRo
IGhvcml6b250YWwgZWRnZXMuCisgICAgICAgIENvcnJlY3RlZCB0aGUgc2ltcGxlLXBvbHlnb24u
anMgY29kZSBmb3IgY29tcHV0aW5nIGEgcG9seWdvbidzIGluY2x1ZGVkIGludGVydmFscy4KKwor
ICAgICAgICAqIGZhc3QvZXhjbHVzaW9ucy9yZXNvdXJjZXMvc2ltcGxlLXBvbHlnb24uanM6Cisg
ICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcmVjdGls
aW5lYXItcG9seWdvbi0wMDEtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9l
eGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcmVjdGlsaW5lYXItcG9seWdvbi0w
MDEuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9z
aGFwZS1pbnNpZGUtcmVjdGlsaW5lYXItcG9seWdvbi0wMDItZXhwZWN0ZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcmVj
dGlsaW5lYXItcG9seWdvbi0wMDIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNp
b25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDA0LWV4cGVjdGVk
Lmh0bWw6CisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNp
ZGUtc2ltcGxlLXBvbHlnb24tMDA0Lmh0bWw6CisKIDIwMTItMTAtMzAgIFZpbmNlbnQgU2NoZWli
ICA8c2NoZWliQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFVucmV2aWV3ZWQ6
IEFkZGl0aW9uYWwgd2ViZ2wgdGVzdCBzdXBwcmVzc2lvbiB0byBnbyBhbG9uZyB3aXRoIGVhcmxp
ZXIgb25lcy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9yZXNvdXJj
ZXMvc2ltcGxlLXBvbHlnb24uanMgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvcmVzb3Vy
Y2VzL3NpbXBsZS1wb2x5Z29uLmpzCmluZGV4IDgwNmNhY2EuLjhlOGE5OGQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9yZXNvdXJjZXMvc2ltcGxlLXBvbHlnb24uanMK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3Jlc291cmNlcy9zaW1wbGUtcG9seWdv
bi5qcwpAQCAtMzgsNDkgKzM4LDYwIEBAIGZ1bmN0aW9uIHN1YnBpeGVsUm91bmQoZikgewogfQog
CiAvLyBSZXR1cm4gdHdvIFggaW50ZXJjZXB0cyBvZiB0aGUgaG9yaXpvbnRhbCBsaW5lIGF0IHku
IFdlJ3JlIGFzc3VtaW5nIHRoYXQgdGhlIHBvbHlnb24KLS8vIDAgb3IgMiBpbnRlcmNlcHRzIGZv
ciBhbGwgeS5PZiBjb3Vyc2UgdGhpcyBpc24ndCB0cnVlIGZvciBwb2x5Z29ucyBpbiBnZW5lcmFs
LAorLy8gaGFzIDAgb3IgMiBpbnRlcmNlcHRzIGZvciBhbGwgeS4gT2YgY291cnNlIHRoaXMgaXNu
J3QgdHJ1ZSBmb3IgcG9seWdvbnMgaW4gZ2VuZXJhbCwKIC8vIGp1c3QgdGhlIG9uZXMgdXNlZCBi
eSB0aGUgdGVzdCBjYXNlcyBzdXBwb3J0ZWQgYnkgdGhpcyBmaWxlLgogCiBmdW5jdGlvbiBwb2x5
Z29uWEludGVyY2VwdHMocG9seWdvbiwgeSkgewogICAgIHZhciB2ZXJ0aWNlcyA9IHBvbHlnb24u
dmVydGljZXM7Ci0gICAgdmFyIHZlcnRleCA9IG51bGw7ICAvLyBmaXJzdCBpbnRlcnNlY3Rpbmcg
bm9uLWhvcml6b250YWwgZWRnZSB2ZXJ0ZXgsIHZlcnRleC55ID09IHkKLSAgICB2YXIgeEludGVy
Y2VwdHMgPSBbXTsKKyAgICB2YXIgZm91bmRYSW50ZXJjZXB0ID0gZmFsc2U7CisgICAgdmFyIGlu
dGVyY2VwdHNNaW5YLCBpbnRlcmNlcHRzTWF4WDsKIAotICAgIGZvcih2YXIgaSA9IDA7IGkgPCB2
ZXJ0aWNlcy5sZW5ndGggJiYgeEludGVyY2VwdHMubGVuZ3RoIDwgMjsgaSsrKSB7CisgICAgZm9y
KHZhciBpID0gMDsgaSA8IHZlcnRpY2VzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgIHZhciB2MSA9
IHZlcnRpY2VzW2ldOwogICAgICAgICB2YXIgdjIgPSB2ZXJ0aWNlc1soaSArIDEpICUgdmVydGlj
ZXMubGVuZ3RoXTsKIAotICAgICAgICBpZiAodmVydGV4ID09IHYxIHx8IHZlcnRleCA9PSB2MikK
KyAgICAgICAgaWYgKE1hdGgubWF4KHYxLnksIHYyLnkpIDwgeSB8fCBNYXRoLm1pbih2MS55LCB2
Mi55KSA+IHkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICB2YXIgbWluWSA9IE1h
dGgubWluKHYxLnksIHYyLnkpOwotICAgICAgICB2YXIgbWF4WSA9IE1hdGgubWF4KHYxLnksIHYy
LnkpOwotCi0gICAgICAgIGlmIChtYXhZIDwgeSB8fCBtaW5ZID4geSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgIGlmIChtaW5ZID09IG1heFkpCi0gICAgICAgICAgICByZXR1cm4g
W3YxLngsIHYyLnhdOwotCi0gICAgICAgIGlmICh2MS55ID09IHkpIHsKLSAgICAgICAgICAgIHhJ
bnRlcmNlcHRzLnB1c2godjEueCk7Ci0gICAgICAgICAgICBpZiAoIXZlcnRleCkKLSAgICAgICAg
ICAgICAgICB2ZXJ0ZXggPSB2MTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmICh2Mi55ID09
IHkpIHsKLSAgICAgICAgICAgIHhJbnRlcmNlcHRzLnB1c2godjIueCk7Ci0gICAgICAgICAgICBp
ZiAoIXZlcnRleCkKLSAgICAgICAgICAgICAgICB2ZXJ0ZXggPSB2MjsKKyAgICAgICAgaWYgKHYx
LnkgPT0geSAmJiB2Mi55ID09IHkpIHsgIC8vIGhvcml6b250YWwgZWRnZSAKKyAgICAgICAgICAg
IGlmICh5ICE9IHBvbHlnb24ubWF4WSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICAgICAgaWYgKCFmb3VuZFhJbnRlcmNlcHQpIHsKKyAgICAgICAgICAgICAgICBpbnRlcmNl
cHRzTWluWCA9IE1hdGgubWluKHYxLngsIHYyLngpOworICAgICAgICAgICAgICAgIGludGVyY2Vw
dHNNYXhYID0gTWF0aC5tYXgodjEueCwgdjIueCk7CisgICAgICAgICAgICAgICAgZm91bmRYSW50
ZXJjZXB0ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgIGludGVyY2VwdHNNaW5YID0gTWF0aC5taW4odjEueCwgdjIueCwgaW50ZXJjZXB0
c01pblgpOworICAgICAgICAgICAgICAgIGludGVyY2VwdHNNYXhYID0gTWF0aC5tYXgodjEueCwg
djIueCwgaW50ZXJjZXB0c01heFgpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgeEludGVyY2VwdHMucHVzaCggKCh5IC0gdjEueSkgKiAodjIu
eCAtIHYxLngpIC8gKHYyLnkgLSB2MS55KSkgKyB2MS54ICk7CisgICAgICAgICAgICB2YXIgaW50
ZXJjZXB0WDsKKworICAgICAgICAgICAgaWYgKHYxLnkgPT0geSkgCisgICAgICAgICAgICAgICAg
aW50ZXJjZXB0WCA9IHYxLng7CisgICAgICAgICAgICBlbHNlIGlmICh2Mi55ID09IHkpIAorICAg
ICAgICAgICAgICAgIGludGVyY2VwdFggPSB2Mi54OworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIGludGVyY2VwdFggPSAoKHkgLSB2MS55KSAqICh2Mi54IC0gdjEueCkgLyAodjIu
eSAtIHYxLnkpKSArIHYxLng7CisKKyAgICAgICAgICAgIGlmICghZm91bmRYSW50ZXJjZXB0KSB7
CisgICAgICAgICAgICAgICAgaW50ZXJjZXB0c01pblggPSBpbnRlcmNlcHRzTWF4WCA9IGludGVy
Y2VwdFg7CisgICAgICAgICAgICAgICAgZm91bmRYSW50ZXJjZXB0ID0gdHJ1ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGludGVyY2VwdHNNaW5Y
ID0gTWF0aC5taW4oaW50ZXJjZXB0WCwgaW50ZXJjZXB0c01pblgpOworICAgICAgICAgICAgICAg
IGludGVyY2VwdHNNYXhYID0gTWF0aC5tYXgoaW50ZXJjZXB0WCwgaW50ZXJjZXB0c01heFgpOwor
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHhJbnRlcmNlcHRzLmxl
bmd0aCAhPSAyKQorICAgIGlmICghZm91bmRYSW50ZXJjZXB0KQogICAgICAgICByZXR1cm4gW107
CiAKLSAgICByZXR1cm4gW3N1YnBpeGVsUm91bmQoTWF0aC5taW4uYXBwbHkobnVsbCwgeEludGVy
Y2VwdHMpKSwgTWF0aC5mbG9vcihNYXRoLm1heC5hcHBseShudWxsLCB4SW50ZXJjZXB0cykpXTsK
KyAgICByZXR1cm4gW3N1YnBpeGVsUm91bmQoaW50ZXJjZXB0c01pblgpLCBNYXRoLmZsb29yKGlu
dGVyY2VwdHNNYXhYKV07CiB9CiAKIGZ1bmN0aW9uIHBvbHlnb25MaW5lSW50ZXJjZXB0cyhwb2x5
Z29uLCB5LCBsaW5lSGVpZ2h0KSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1
c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yZWN0aWxpbmVhci1wb2x5Z29uLTAwMS1l
eHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9z
aGFwZS1pbnNpZGUtcmVjdGlsaW5lYXItcG9seWdvbi0wMDEtZXhwZWN0ZWQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzkyZDg3Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcmVj
dGlsaW5lYXItcG9seWdvbi0wMDEtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Np
bXBsZS1wb2x5Z29uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0Q1NTRXhjbHVzaW9u
c0VuYWJsZWQodHJ1ZSk7CisKKyAgICAvLyBSZWN0aWxpbmVhciBwb2x5Z29uIHdpdGggdGhpcyBz
aGFwZToKKyAgICAvLyAgIFhYWAorICAgIC8vIFhYWFhYWFgKKyAgICAvLyBYWFhYWFhYCisKKyAg
ICB2YXIgdmVydGljZXMgPSBbe3g6MCwgeTo1MH0sIHt4OjEwMCwgeTo1MH0sIHt4OjEwMCwgeTow
fSwge3g6MjUwLCB5OjB9LCB7eDoyNTAsIHk6NTB9LCB7eDozNTAsIHk6NTB9LCB7eDozNTAsIHk6
MTUwfSwge3g6MCwgeToxNTB9XTsKKyAgICB2YXIgbGluZUhlaWdodCA9IDUwOworICAgIHZhciBo
YXNTdWJwaXhlbFN1cHBvcnQgPSBmYWxzZTsgIC8vIFRlc3QgcmVzdWx0cyBkbyBub3QgZGVwZW5k
IG9uIHN1YnBpeGVsIGxheW91dC4KKzwvc2NyaXB0PgorCis8c3R5bGUgaWQ9InN0eWxlc2hlZXQi
PgorICAgICNwb2x5Z29uLXNoYXBlLWluc2lkZSwgI3BvbHlnb24tc3ZnLXNoYXBlIHsKKyAgICAg
ICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICBsZWZ0OiAwcHg7CisgICAgICAgIHRvcDog
MHB4OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0iY3JlYXRlUG9s
eWdvblNoYXBlSW5zaWRlVGVzdENhc2VFeHBlY3RlZCgpIj4KKyAgPHN2ZyBpZD0icG9seWdvbi1z
dmctc2hhcGUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PC9zdmc+CisgIDxk
aXYgaWQ9InBvbHlnb24tc2hhcGUtaW5zaWRlIj48L2Rpdj4KKyAgPHAgaWQ9ImluZm9ybWF0aXZl
LXRleHQiPgorICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIEl0IGNyZWF0
ZXMgYSByZWN0aWxpbmVhciBwb2x5Z29uYWwgc2hhcGUtaW5zaWRlIGFuZCBhCisgICAgICBtYXRj
aGluZyBmaWxsZWQgU1ZHIHBvbHlnb24uIFRoZSBjb250ZW50IHNob3VsZCBqdXN0IGZpbGwgdGhl
IHNoYXBlIHdpdGggYWx0ZXJuYXRpbmcKKyAgICAgIGJsYWNrIGFuZCBlbXB0eSByZWN0YW5nbGVz
IG9uIGVhY2ggbGluZS48L3A+Cis8L2JvZHk+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJlY3RpbGlu
ZWFyLXBvbHlnb24tMDAxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUt
aW5zaWRlL3NoYXBlLWluc2lkZS1yZWN0aWxpbmVhci1wb2x5Z29uLTAwMS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljOTQ3NGYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yZWN0
aWxpbmVhci1wb2x5Z29uLTAwMS5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2ltcGxlLXBvbHln
b24uanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRDU1NFeGNsdXNpb25zRW5hYmxlZCh0
cnVlKTsKKworICAgIC8vIFJlY3RpbGluZWFyIHBvbHlnb24gd2l0aCB0aGlzIHNoYXBlOgorICAg
IC8vICAgWFhYCisgICAgLy8gWFhYWFhYWAorICAgIC8vIFhYWFhYWFgKKworICAgIHZhciB2ZXJ0
aWNlcyA9IFt7eDowLCB5OjUwfSwge3g6MTAwLCB5OjUwfSwge3g6MTAwLCB5OjB9LCB7eDoyNTAs
IHk6MH0sIHt4OjI1MCwgeTo1MH0sIHt4OjM1MCwgeTo1MH0sIHt4OjM1MCwgeToxNTB9LCB7eDow
LCB5OjE1MH1dOworICAgIHZhciBsaW5lSGVpZ2h0ID0gNTA7CisgICAgdmFyIGhhc1N1YnBpeGVs
U3VwcG9ydCA9IGZhbHNlOyAgLy8gVGVzdCByZXN1bHRzIGRvIG5vdCBkZXBlbmQgb24gc3VicGl4
ZWwgbGF5b3V0LgorPC9zY3JpcHQ+CisKKzxzdHlsZSBpZD0ic3R5bGVzaGVldCI+CisgICAgI3Bv
bHlnb24tc2hhcGUtaW5zaWRlLCAjcG9seWdvbi1zdmctc2hhcGUgeworICAgICAgICBwb3NpdGlv
bjogYWJzb2x1dGU7CisgICAgICAgIGxlZnQ6IDBweDsKKyAgICAgICAgdG9wOiAwcHg7CisgICAg
fQorPC9zdHlsZT4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJjcmVhdGVQb2x5Z29uU2hhcGVJ
bnNpZGVUZXN0Q2FzZSgpOyI+CisgIDxzdmcgaWQ9InBvbHlnb24tc3ZnLXNoYXBlIiB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPgorICA8ZGl2IGlkPSJwb2x5Z29uLXNo
YXBlLWluc2lkZSI+PC9kaXY+CisgIDxwIGlkPSJpbmZvcm1hdGl2ZS10ZXh0Ij4KKyAgICAgIFRo
aXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBJdCBjcmVhdGVzIGEgcmVjdGlsaW5lYXIg
cG9seWdvbmFsIHNoYXBlLWluc2lkZSBhbmQgYQorICAgICAgbWF0Y2hpbmcgZmlsbGVkIFNWRyBw
b2x5Z29uLiBUaGUgY29udGVudCBzaG91bGQganVzdCBmaWxsIHRoZSBzaGFwZSB3aXRoIGFsdGVy
bmF0aW5nCisgICAgICBibGFjayBhbmQgZW1wdHkgcmVjdGFuZ2xlcyBvbiBlYWNoIGxpbmUuPC9w
PgorPC9ib2R5PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1
c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yZWN0aWxpbmVhci1wb2x5Z29uLTAwMi1l
eHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9z
aGFwZS1pbnNpZGUtcmVjdGlsaW5lYXItcG9seWdvbi0wMDItZXhwZWN0ZWQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2EzMDIzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcmVj
dGlsaW5lYXItcG9seWdvbi0wMDItZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Np
bXBsZS1wb2x5Z29uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0Q1NTRXhjbHVzaW9u
c0VuYWJsZWQodHJ1ZSk7CisKKyAgICAvLyBSZWN0aWxpbmVhciBwb2x5Z29uIHdpdGggdGhpcyBz
aGFwZToKKyAgICAvLyAgIFhYWAorICAgIC8vIFhYWFhYWFgKKyAgICAvLyBYWFhYWFhYCisgICAg
Ly8gICBYWFgKKworICAgIHZhciB2ZXJ0aWNlcyA9IFt7eDowLCB5OjUwfSwge3g6MTAwLCB5OjUw
fSwge3g6MTAwLCB5OjB9LCB7eDoyNTAsIHk6MH0sIHt4OjI1MCwgeTo1MH0sIHt4OjM1MCwgeTo1
MH0sIHt4OjM1MCwgeToxNTB9LCB7eDoyNTAsIHk6MTUwfSwge3g6MjUwLCB5OjIwMH0sIHt4OjEw
MCwgeToyMDB9LCB7eDoxMDAsIHk6MTUwfSwge3g6MCwgeToxNTB9XTsKKyAgICB2YXIgbGluZUhl
aWdodCA9IDUwOworICAgIHZhciBoYXNTdWJwaXhlbFN1cHBvcnQgPSBmYWxzZTsgIC8vIFRlc3Qg
cmVzdWx0cyBkbyBub3QgZGVwZW5kIG9uIHN1YnBpeGVsIGxheW91dC4KKzwvc2NyaXB0PgorCis8
c3R5bGUgaWQ9InN0eWxlc2hlZXQiPgorICAgICNwb2x5Z29uLXNoYXBlLWluc2lkZSwgI3BvbHln
b24tc3ZnLXNoYXBlIHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICBsZWZ0
OiAwcHg7CisgICAgICAgIHRvcDogMHB4OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+CisKKzxi
b2R5IG9ubG9hZD0iY3JlYXRlUG9seWdvblNoYXBlSW5zaWRlVGVzdENhc2VFeHBlY3RlZCgpOyI+
CisgIDxzdmcgaWQ9InBvbHlnb24tc3ZnLXNoYXBlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciPjwvc3ZnPgorICA8ZGl2IGlkPSJwb2x5Z29uLXNoYXBlLWluc2lkZSI+PC9kaXY+
CisgIDxwIGlkPSJpbmZvcm1hdGl2ZS10ZXh0Ij4KKyAgICAgIFRoaXMgdGVzdCByZXF1aXJlcyB0
aGUgQWhlbSBmb250LiBJdCBjcmVhdGVzIGEgcmVjdGlsaW5lYXIgcG9seWdvbmFsIHNoYXBlLWlu
c2lkZSBhbmQgYQorICAgICAgbWF0Y2hpbmcgZmlsbGVkIFNWRyBwb2x5Z29uLiBUaGUgY29udGVu
dCBzaG91bGQganVzdCBmaWxsIHRoZSBzaGFwZSB3aXRoIGFsdGVybmF0aW5nCisgICAgICBibGFj
ayBhbmQgZW1wdHkgcmVjdGFuZ2xlcyBvbiBlYWNoIGxpbmUuPC9wPgorPC9ib2R5PgorCis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRl
L3NoYXBlLWluc2lkZS1yZWN0aWxpbmVhci1wb2x5Z29uLTAwMi5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcmVjdGlsaW5lYXItcG9s
eWdvbi0wMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2IzMWUy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWlu
c2lkZS9zaGFwZS1pbnNpZGUtcmVjdGlsaW5lYXItcG9seWdvbi0wMDIuaHRtbApAQCAtMCwwICsx
LDM3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3NpbXBsZS1wb2x5Z29uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0
Q1NTRXhjbHVzaW9uc0VuYWJsZWQodHJ1ZSk7CisKKyAgICAvLyBSZWN0aWxpbmVhciBwb2x5Z29u
IHdpdGggdGhpcyBzaGFwZToKKyAgICAvLyAgIFhYWAorICAgIC8vIFhYWFhYWFgKKyAgICAvLyBY
WFhYWFhYCisgICAgLy8gICBYWFgKKyAgICB2YXIgdmVydGljZXMgPSBbe3g6MCwgeTo1MH0sIHt4
OjEwMCwgeTo1MH0sIHt4OjEwMCwgeTowfSwge3g6MjUwLCB5OjB9LCB7eDoyNTAsIHk6NTB9LCB7
eDozNTAsIHk6NTB9LCB7eDozNTAsIHk6MTUwfSwge3g6MjUwLCB5OjE1MH0sIHt4OjI1MCwgeToy
MDB9LCB7eDoxMDAsIHk6MjAwfSwge3g6MTAwLCB5OjE1MH0sIHt4OjAsIHk6MTUwfV07CisgICAg
dmFyIGxpbmVIZWlnaHQgPSA1MDsKKyAgICB2YXIgaGFzU3VicGl4ZWxTdXBwb3J0ID0gZmFsc2U7
ICAvLyBUZXN0IHJlc3VsdHMgZG8gbm90IGRlcGVuZCBvbiBzdWJwaXhlbCBsYXlvdXQuCis8L3Nj
cmlwdD4KKworPHN0eWxlIGlkPSJzdHlsZXNoZWV0Ij4KKyAgICAjcG9seWdvbi1zaGFwZS1pbnNp
ZGUsICNwb2x5Z29uLXN2Zy1zaGFwZSB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAg
ICAgICAgbGVmdDogMHB4OworICAgICAgICB0b3A6IDBweDsKKyAgICB9Cis8L3N0eWxlPgorPC9o
ZWFkPgorCis8Ym9keSBvbmxvYWQ9ImNyZWF0ZVBvbHlnb25TaGFwZUluc2lkZVRlc3RDYXNlKCk7
Ij4KKyAgPHN2ZyBpZD0icG9seWdvbi1zdmctc2hhcGUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyI+PC9zdmc+CisgIDxkaXYgaWQ9InBvbHlnb24tc2hhcGUtaW5zaWRlIj48L2Rp
dj4KKyAgPHAgaWQ9ImluZm9ybWF0aXZlLXRleHQiPgorICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVz
IHRoZSBBaGVtIGZvbnQuIEl0IGNyZWF0ZXMgYSByZWN0aWxpbmVhciBwb2x5Z29uYWwgc2hhcGUt
aW5zaWRlIGFuZCBhCisgICAgICBtYXRjaGluZyBmaWxsZWQgU1ZHIHBvbHlnb24uIFRoZSBjb250
ZW50IHNob3VsZCBqdXN0IGZpbGwgdGhlIHNoYXBlIHdpdGggYWx0ZXJuYXRpbmcKKyAgICAgIGJs
YWNrIGFuZCBlbXB0eSByZWN0YW5nbGVzIG9uIGVhY2ggbGluZS48L3A+Cis8L2JvZHk+CisKKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNp
ZGUvc2hhcGUtaW5zaWRlLXNpbXBsZS1wb2x5Z29uLTAwNC1leHBlY3RlZC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBv
bHlnb24tMDA0LWV4cGVjdGVkLmh0bWwKaW5kZXggNTYzOGM3Yy4uN2I2Y2YxMyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUt
c2ltcGxlLXBvbHlnb24tMDA0LWV4cGVjdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9l
eGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtc2ltcGxlLXBvbHlnb24tMDA0LWV4
cGVjdGVkLmh0bWwKQEAgLTgsNyArOCw3IEBACiAKICAgICAvLyBDb25jYXZlIGFzc3ltZXRyaWMg
c2ltcGxlIHBvbHlnb24gd2l0aCBob3Jpem9udGFsIHRvcCBhbmQgYm90dG9tIGVkZ2VzLiAgQSB2
ZXJzaW9uIG9mIHRoZSAwMDEKICAgICAvLyBob3VyZ2xhc3Mgc2hhcGUgd2l0aCB2ZXJ0aWNhbCBl
ZGdlcyBpbiB0aGUgY2VudGVyLgotICAgIHZhciB2ZXJ0aWNlcyA9IFt7eDo0MCwgeTo0MH0sIHt4
OjQ0MCwgeTo0MH0sIHt4OjMyMCwgeToxNjB9LCB7eDozMjAsIHk6MjQwfSwge3g6NDgwLCB5OjQw
MH0sIHt4OjgwLCB5OjQwMH0sIHt4OjIwMCwgeToyODB9LCB7eDoyMDAsIHk6MjAwfV19OworICAg
IHZhciB2ZXJ0aWNlcyA9IFt7eDo0MCwgeTo0MH0sIHt4OjQ0MCwgeTo0MH0sIHt4OjMyMCwgeTox
NjB9LCB7eDozMjAsIHk6MjQwfSwge3g6NDgwLCB5OjQwMH0sIHt4OjgwLCB5OjQwMH0sIHt4OjIw
MCwgeToyODB9LCB7eDoyMDAsIHk6MjAwfV07CiAgICAgdmFyIGxpbmVIZWlnaHQgPSA0MDsKICAg
ICB2YXIgaGFzU3VicGl4ZWxTdXBwb3J0OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1zaW1wbGUtcG9seWdvbi0wMDQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5z
aWRlLXNpbXBsZS1wb2x5Z29uLTAwNC5odG1sCmluZGV4IGU1OTRkZjAuLjFkYjVhNGQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5z
aWRlLXNpbXBsZS1wb2x5Z29uLTAwNC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVz
aW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXNpbXBsZS1wb2x5Z29uLTAwNC5odG1sCkBA
IC04LDcgKzgsNyBAQAogCiAgICAgLy8gQ29uY2F2ZSBhc3N5bWV0cmljIHNpbXBsZSBwb2x5Z29u
IHdpdGggaG9yaXpvbnRhbCB0b3AgYW5kIGJvdHRvbSBlZGdlcy4gIEEgdmVyc2lvbiBvZiB0aGUg
MDAxCiAgICAgLy8gaG91cmdsYXNzIHNoYXBlIHdpdGggdmVydGljYWwgZWRnZXMgaW4gdGhlIGNl
bnRlci4KLSAgICB2YXIgdmVydGljZXMgPSBbe3g6NDAsIHk6NDB9LCB7eDo0NDAsIHk6NDB9LCB7
eDozMjAsIHk6MTYwfSwge3g6MzIwLCB5OjI0MH0sIHt4OjQ4MCwgeTo0MDB9LCB7eDo4MCwgeTo0
MDB9LCB7eDoyMDAsIHk6MjgwfSwge3g6MjAwLCB5OjIwMH1dfTsKKyAgICB2YXIgdmVydGljZXMg
PSBbe3g6NDAsIHk6NDB9LCB7eDo0NDAsIHk6NDB9LCB7eDozMjAsIHk6MTYwfSwge3g6MzIwLCB5
OjI0MH0sIHt4OjQ4MCwgeTo0MDB9LCB7eDo4MCwgeTo0MDB9LCB7eDoyMDAsIHk6MjgwfSwge3g6
MjAwLCB5OjIwMH1dOwogICAgIHZhciBsaW5lSGVpZ2h0ID0gNDA7CiAgICAgdmFyIGhhc1N1YnBp
eGVsU3VwcG9ydDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGI0OGUwOGYuLmRmMWUxZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMSBAQAorMjAxMi0xMC0yOSAgSGFucyBNdWxsZXIgIDxobXVsbGVyQGFkb2Jl
LmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNdIE11bHRpcGxlIHNlZ21lbnQgcG9seWdv
biBsYXlvdXQgZG9lcyBub3QgZ2V0IGFsbCBzZWdtZW50cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMDM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29ycmVjdGVkIHRoZSBhbGdvcml0aG0gZm9yIGNv
bXB1dGluZyBpbmNsdWRlZCBwb2x5Z29uIGludGVydmFscyBmb3IgcmVjdGlsaW5lYXIgcG9seWdv
bnMsCisgICAgICAgIGFuZCBwb2x5Z29ucyB3aXRoIGhvcml6b250YWwgZWRnZXMgaW4gZ2VuZXJh
bC4KKworICAgICAgICBUZXN0czogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1p
bnNpZGUtcmVjdGlsaW5lYXItcG9seWdvbi0wMDEuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9l
eGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcmVjdGlsaW5lYXItcG9seWdvbi0w
MDIuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uY3BwOiBSZW1v
dmVkIHNvbWUgaW50ZXJuYWwgZGVhZCBjb2RlIHJlbGF0ZWQgdG8gdGhlIG5vLWxvbmdlci11c2Vk
IHNvcnRlZEVkZ2VzTWluWSBWZWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25Qb2x5
Z29uOjpFeGNsdXNpb25Qb2x5Z29uKTogSW5pdGlhbGl6ZSBuZXcgRXhjbHVzaW9uUG9seWdvbkVk
Z2UgZWRnZUluZGV4IGZpZWxkLgorICAgICAgICAoV2ViQ29yZTo6Z2V0VmVydGV4SW50ZXJzZWN0
aW9uVmVydGljZXMpOiBSZXR1cm4gdGhlIHByZXZpb3VzLCBuZXh0LCBhbmQgdGFyZ2V0IHZlcnRl
eCBpbmRpY2VzIGZvciBhIHZlcnRleCBpbnRlcnNlY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpF
eGNsdXNpb25Qb2x5Z29uOjpjb21wdXRlWEludGVyc2VjdGlvbnMpOiBSZWZhY3RvcmVkIHRoZSBj
b3JlIG9mIHRoaXMgbWV0aG9kIHRvIGltcHJvdmUgaGFuZGxpbmcgb2YgaG9yaXpvbnRhbCBlZGdl
cy4KKyAgICAgICAgKFdlYkNvcmU6OkV4Y2x1c2lvblBvbHlnb246OmNvbXB1dGVFZGdlSW50ZXJz
ZWN0aW9ucyk6IElnbm9yZSB6ZXJvLXdpZHRoIGVkZ2VzLgorICAgICAgICAqIHJlbmRlcmluZy9F
eGNsdXNpb25Qb2x5Z29uLmg6IFJlbW92ZWQgdGhlIHJpZ2h0VmVydGV4WSgpIG1ldGhvZCwgc2lu
Y2UgaXQncyBubyBsb25nZXIgdXNlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV4Y2x1c2lvblBvbHln
b246OmVkZ2VBdCk6IE5ldyBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25Qb2x5
Z29uOjpudW1iZXJPZkVkZ2VzKTogTmV3IG1ldGhvZC4KKyAgICAgICAgKEV4Y2x1c2lvblBvbHln
b24pOiBBZGRlZCBzdXBwb3J0IGZvciByZXRyaWV2aW5nIGVkZ2VzLgorICAgICAgICAoV2ViQ29y
ZTo6RXhjbHVzaW9uUG9seWdvbkVkZ2U6OnZlcnRleDEpOiBVc2UgdmVydGV4MUluZGV4LgorICAg
ICAgICAoV2ViQ29yZTo6RXhjbHVzaW9uUG9seWdvbkVkZ2U6OnZlcnRleDIpOiBVc2UgdmVydGV4
MkluZGV4LgorICAgICAgICAoRXhjbHVzaW9uUG9seWdvbkVkZ2UpOiBSZW5hbWVkIGluZGV4MSwg
aW5kZXgyIGZpZWxkcyB0byB2ZXJ0ZXgxSW5kZXgsIHZlcnRleDJJbmRleC4KKyAgICAgICAgKFdl
YkNvcmU6OkV4Y2x1c2lvblBvbHlnb25FZGdlOjpwcmV2aW91c0VkZ2UpOiBOZXcgbWV0aG9kLgor
ICAgICAgICAoV2ViQ29yZTo6RXhjbHVzaW9uUG9seWdvbkVkZ2U6Om5leHRFZGdlKTogTmV3IG1l
dGhvZC4KKwogMjAxMi0xMC0yNiAgQWxleGFuZHJ1IENoaWN1bGl0YSAgPGFjaGljdUBhZG9iZS5j
b20+CiAKICAgICAgICAgW0NTUyBTaGFkZXJzXSBBZGQgdGhlIFZhbGlkYXRlZEN1c3RvbUZpbHRl
ck9wZXJhdGlvbiBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4
Y2x1c2lvblBvbHlnb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBv
bHlnb24uY3BwCmluZGV4IGVhZWViYTcuLjk2MTIyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5jcHAKQEAgLTQ3LDExICs0Nyw2IEBAIHN0cnVjdCBF
ZGdlSW50ZXJzZWN0aW9uIHsKICAgICBFZGdlSW50ZXJzZWN0aW9uVHlwZSB0eXBlOwogfTsKIAot
c3RhdGljIGJvb2wgY29tcGFyZUVkZ2VNaW5ZKGNvbnN0IEV4Y2x1c2lvblBvbHlnb25FZGdlKiBl
MSwgY29uc3QgRXhjbHVzaW9uUG9seWdvbkVkZ2UqIGUyKQotewotICAgIHJldHVybiBlMS0+bWlu
WSgpIDwgZTItPm1pblkoKTsKLX0KLQogRXhjbHVzaW9uUG9seWdvbjo6RXhjbHVzaW9uUG9seWdv
bihQYXNzT3duUHRyPFZlY3RvcjxGbG9hdFBvaW50PiA+IHZlcnRpY2VzLCBXaW5kUnVsZSBmaWxs
UnVsZSkKICAgICA6IEV4Y2x1c2lvblNoYXBlKCkKICAgICAsIG1fdmVydGljZXModmVydGljZXMp
CkBAIC02MCw3ICs1NSw2IEBAIEV4Y2x1c2lvblBvbHlnb246OkV4Y2x1c2lvblBvbHlnb24oUGFz
c093blB0cjxWZWN0b3I8RmxvYXRQb2ludD4gPiB2ZXJ0aWNlcywgV2luCiAgICAgdW5zaWduZWQg
blZlcnRpY2VzID0gbnVtYmVyT2ZWZXJ0aWNlcygpOwogICAgIG1fZWRnZXMucmVzaXplKG5WZXJ0
aWNlcyk7CiAgICAgbV9lbXB0eSA9IG5WZXJ0aWNlcyA8IDM7Ci0gICAgVmVjdG9yPEV4Y2x1c2lv
blBvbHlnb25FZGdlKj4gc29ydGVkRWRnZXNNaW5ZKG5WZXJ0aWNlcyk7CiAKICAgICBpZiAoblZl
cnRpY2VzKQogICAgICAgICBtX2JvdW5kaW5nQm94LnNldExvY2F0aW9uKHZlcnRleEF0KDApKTsK
QEAgLTY5LDE0ICs2MywxMSBAQCBFeGNsdXNpb25Qb2x5Z29uOjpFeGNsdXNpb25Qb2x5Z29uKFBh
c3NPd25QdHI8VmVjdG9yPEZsb2F0UG9pbnQ+ID4gdmVydGljZXMsIFdpbgogICAgICAgICBjb25z
dCBGbG9hdFBvaW50JiB2ZXJ0ZXggPSB2ZXJ0ZXhBdChpKTsKICAgICAgICAgbV9ib3VuZGluZ0Jv
eC5leHRlbmQodmVydGV4KTsKICAgICAgICAgbV9lZGdlc1tpXS5wb2x5Z29uID0gdGhpczsKLSAg
ICAgICAgbV9lZGdlc1tpXS5pbmRleDEgPSBpOwotICAgICAgICBtX2VkZ2VzW2ldLmluZGV4MiA9
IChpICsgMSkgJSBuVmVydGljZXM7Ci0KLSAgICAgICAgc29ydGVkRWRnZXNNaW5ZW2ldID0gJm1f
ZWRnZXNbaV07CisgICAgICAgIG1fZWRnZXNbaV0udmVydGV4SW5kZXgxID0gaTsKKyAgICAgICAg
bV9lZGdlc1tpXS52ZXJ0ZXhJbmRleDIgPSAoaSArIDEpICUgblZlcnRpY2VzOworICAgICAgICBt
X2VkZ2VzW2ldLmVkZ2VJbmRleCA9IGk7CiAgICAgfQogCi0gICAgc3RkOjpzb3J0KHNvcnRlZEVk
Z2VzTWluWS5iZWdpbigpLCBzb3J0ZWRFZGdlc01pblkuZW5kKCksIFdlYkNvcmU6OmNvbXBhcmVF
ZGdlTWluWSk7Ci0KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9lZGdlcy5zaXplKCk7
IGkrKykgewogICAgICAgICBFeGNsdXNpb25Qb2x5Z29uRWRnZSogZWRnZSA9ICZtX2VkZ2VzW2ld
OwogICAgICAgICBtX2VkZ2VUcmVlLmFkZChFZGdlSW50ZXJ2YWwoZWRnZS0+bWluWSgpLCBlZGdl
LT5tYXhZKCksIGVkZ2UpKTsKQEAgLTExOCwxNSArMTA5LDI3IEBAIHN0YXRpYyBib29sIGNvbXB1
dGVYSW50ZXJzZWN0aW9uKGNvbnN0IEV4Y2x1c2lvblBvbHlnb25FZGdlKiBlZGdlUG9pbnRlciwg
ZmxvYXQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotZmxvYXQgRXhjbHVzaW9uUG9seWdvbjo6cmln
aHRWZXJ0ZXhZKHVuc2lnbmVkIGluZGV4KSBjb25zdAorc3RhdGljIGlubGluZSBib29sIGdldFZl
cnRleEludGVyc2VjdGlvblZlcnRpY2VzKGNvbnN0IEVkZ2VJbnRlcnNlY3Rpb24mIGludGVyc2Vj
dGlvbiwgRmxvYXRQb2ludCYgcHJldlZlcnRleCwgRmxvYXRQb2ludCYgdGhpc1ZlcnRleCwgRmxv
YXRQb2ludCYgbmV4dFZlcnRleCkKIHsKLSAgICB1bnNpZ25lZCBuVmVydGljZXMgPSBudW1iZXJP
ZlZlcnRpY2VzKCk7Ci0gICAgY29uc3QgRmxvYXRQb2ludCYgdmVydGV4MSA9IHZlcnRleEF0KChp
bmRleCArIDEpICUgblZlcnRpY2VzKTsKLSAgICBjb25zdCBGbG9hdFBvaW50JiB2ZXJ0ZXgyID0g
dmVydGV4QXQoKGluZGV4IC0gMSkgJSBuVmVydGljZXMpOworICAgIGlmIChpbnRlcnNlY3Rpb24u
dHlwZSAhPSBWZXJ0ZXhNaW5ZICYmIGludGVyc2VjdGlvbi50eXBlICE9IFZlcnRleE1heFkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEFTU0VSVChpbnRlcnNlY3Rpb24uZWRnZSAmJiBp
bnRlcnNlY3Rpb24uZWRnZS0+cG9seWdvbik7CisgICAgY29uc3QgRXhjbHVzaW9uUG9seWdvbiYg
cG9seWdvbiA9ICooaW50ZXJzZWN0aW9uLmVkZ2UtPnBvbHlnb24pOworICAgIGNvbnN0IEV4Y2x1
c2lvblBvbHlnb25FZGdlJiB0aGlzRWRnZSA9ICooaW50ZXJzZWN0aW9uLmVkZ2UpOwogCi0gICAg
aWYgKHZlcnRleDEueCgpID09IHZlcnRleDIueCgpKQotICAgICAgICByZXR1cm4gdmVydGV4MS55
KCkgPiB2ZXJ0ZXgyLnkoKSA/IHZlcnRleDEueSgpIDogdmVydGV4Mi55KCk7Ci0gICAgcmV0dXJu
IHZlcnRleDEueCgpID4gdmVydGV4Mi54KCkgPyB2ZXJ0ZXgxLnkoKSA6IHZlcnRleDIueSgpOwor
ICAgIGlmICgoaW50ZXJzZWN0aW9uLnR5cGUgPT0gVmVydGV4TWluWSAmJiAodGhpc0VkZ2UudmVy
dGV4MSgpLnkoKSA8IHRoaXNFZGdlLnZlcnRleDIoKS55KCkpKQorICAgICAgICB8fCAoaW50ZXJz
ZWN0aW9uLnR5cGUgPT0gVmVydGV4TWF4WSAmJiAodGhpc0VkZ2UudmVydGV4MSgpLnkoKSA+IHRo
aXNFZGdlLnZlcnRleDIoKS55KCkpKSkgeworICAgICAgICBwcmV2VmVydGV4ID0gcG9seWdvbi52
ZXJ0ZXhBdCh0aGlzRWRnZS5wcmV2aW91c0VkZ2UoKS52ZXJ0ZXhJbmRleDIpOworICAgICAgICB0
aGlzVmVydGV4ID0gcG9seWdvbi52ZXJ0ZXhBdCh0aGlzRWRnZS52ZXJ0ZXhJbmRleDEpOworICAg
ICAgICBuZXh0VmVydGV4ID0gcG9seWdvbi52ZXJ0ZXhBdCh0aGlzRWRnZS52ZXJ0ZXhJbmRleDIp
OworICAgIH0gZWxzZSB7CisgICAgICAgIHByZXZWZXJ0ZXggPSBwb2x5Z29uLnZlcnRleEF0KHRo
aXNFZGdlLnZlcnRleEluZGV4MSk7CisgICAgICAgIHRoaXNWZXJ0ZXggPSBwb2x5Z29uLnZlcnRl
eEF0KHRoaXNFZGdlLnZlcnRleEluZGV4Mik7CisgICAgICAgIG5leHRWZXJ0ZXggPSBwb2x5Z29u
LnZlcnRleEF0KHRoaXNFZGdlLm5leHRFZGdlKCkudmVydGV4SW5kZXgxKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgYXBwZW5kSW50ZXJ2YWxYKGZsb2F0IHgs
IGJvb2wgaW5zaWRlLCBWZWN0b3I8RXhjbHVzaW9uSW50ZXJ2YWw+JiByZXN1bHQpCkBAIC0xNTUs
NyArMTU4LDcgQEAgdm9pZCBFeGNsdXNpb25Qb2x5Z29uOjpjb21wdXRlWEludGVyc2VjdGlvbnMo
ZmxvYXQgeSwgVmVjdG9yPEV4Y2x1c2lvbkludGVydmFsPiYKICAgICBFZGdlSW50ZXJzZWN0aW9u
IGludGVyc2VjdGlvbjsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb3ZlcmxhcHBpbmdF
ZGdlcy5zaXplKCk7IGkrKykgewogICAgICAgICBFeGNsdXNpb25Qb2x5Z29uRWRnZSogZWRnZSA9
IHN0YXRpY19jYXN0PEV4Y2x1c2lvblBvbHlnb25FZGdlKj4ob3ZlcmxhcHBpbmdFZGdlc1tpXS5k
YXRhKCkpOwotICAgICAgICBpZiAoY29tcHV0ZVhJbnRlcnNlY3Rpb24oZWRnZSwgeSwgaW50ZXJz
ZWN0aW9uKSkKKyAgICAgICAgaWYgKGNvbXB1dGVYSW50ZXJzZWN0aW9uKGVkZ2UsIHksIGludGVy
c2VjdGlvbikgJiYgaW50ZXJzZWN0aW9uLnR5cGUgIT0gVmVydGV4WUJvdGgpCiAgICAgICAgICAg
ICBpbnRlcnNlY3Rpb25zLmFwcGVuZChpbnRlcnNlY3Rpb24pOwogICAgIH0KICAgICBpZiAoaW50
ZXJzZWN0aW9ucy5zaXplKCkgPCAyKQpAQCAtMTY5LDcgKzE3Miw2IEBAIHZvaWQgRXhjbHVzaW9u
UG9seWdvbjo6Y29tcHV0ZVhJbnRlcnNlY3Rpb25zKGZsb2F0IHksIFZlY3RvcjxFeGNsdXNpb25J
bnRlcnZhbD4mCiAKICAgICB3aGlsZSAoaW5kZXggPCBpbnRlcnNlY3Rpb25zLnNpemUoKSkgewog
ICAgICAgICBjb25zdCBFZGdlSW50ZXJzZWN0aW9uJiB0aGlzSW50ZXJzZWN0aW9uID0gaW50ZXJz
ZWN0aW9uc1tpbmRleF07Ci0KICAgICAgICAgaWYgKGluZGV4ICsgMSA8IGludGVyc2VjdGlvbnMu
c2l6ZSgpKSB7CiAgICAgICAgICAgICBjb25zdCBFZGdlSW50ZXJzZWN0aW9uJiBuZXh0SW50ZXJz
ZWN0aW9uID0gaW50ZXJzZWN0aW9uc1tpbmRleCArIDFdOwogICAgICAgICAgICAgaWYgKCh0aGlz
SW50ZXJzZWN0aW9uLnBvaW50LngoKSA9PSBuZXh0SW50ZXJzZWN0aW9uLnBvaW50LngoKSkgJiYg
KHRoaXNJbnRlcnNlY3Rpb24udHlwZSA9PSBWZXJ0ZXhNaW5ZIHx8IHRoaXNJbnRlcnNlY3Rpb24u
dHlwZSA9PSBWZXJ0ZXhNYXhZKSkgewpAQCAtMTc3LDkgKzE3OSw3IEBAIHZvaWQgRXhjbHVzaW9u
UG9seWdvbjo6Y29tcHV0ZVhJbnRlcnNlY3Rpb25zKGZsb2F0IHksIFZlY3RvcjxFeGNsdXNpb25J
bnRlcnZhbD4mCiAgICAgICAgICAgICAgICAgICAgIC8vIFNraXAgcGFpcnMgb2YgaW50ZXJzZWN0
aW9ucyB3aG9zZSB0eXBlcyBhcmUgVmVydGV4TWF4WSxWZXJ0ZXhNYXhZIGFuZCBWZXJ0ZXhNaW5Z
LFZlcnRleE1pblkuCiAgICAgICAgICAgICAgICAgICAgIGluZGV4ICs9IDI7CiAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gUmVwbGFjZSBwYWlycyBvZiBp
bnRlcnNlY3Rpb25zIHdob3NlIHR5cGVzIGFyZSBWZXJ0ZXhNaW5ZLFZlcnRleE1heFkgb3IgVmVy
dGV4TWF4WSxWZXJ0ZXhNaW5ZIHdpdGggb25lIFZlcnRleE1pblkgaW50ZXJzZWN0aW9uLgotICAg
ICAgICAgICAgICAgICAgICBpZiAobmV4dEludGVyc2VjdGlvbi50eXBlID09IFZlcnRleE1heFkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnNlY3Rpb25zW2luZGV4ICsgMV0gPSB0aGlz
SW50ZXJzZWN0aW9uOworICAgICAgICAgICAgICAgICAgICAvLyBSZXBsYWNlIHBhaXJzIG9mIGlu
dGVyc2VjdGlvbnMgd2hvc2UgdHlwZXMgYXJlIFZlcnRleE1pblksVmVydGV4TWF4WSBvciBWZXJ0
ZXhNYXhZLFZlcnRleE1pblkgd2l0aCBvbmUgaW50ZXJzZWN0aW9uLgogICAgICAgICAgICAgICAg
ICAgICBpbmRleCsrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjb250aW51
ZTsKQEAgLTE4NywyMiArMTg3LDMyIEBAIHZvaWQgRXhjbHVzaW9uUG9seWdvbjo6Y29tcHV0ZVhJ
bnRlcnNlY3Rpb25zKGZsb2F0IHksIFZlY3RvcjxFeGNsdXNpb25JbnRlcnZhbD4mCiAgICAgICAg
IH0KIAogICAgICAgICBjb25zdCBFeGNsdXNpb25Qb2x5Z29uRWRnZSYgdGhpc0VkZ2UgPSAqdGhp
c0ludGVyc2VjdGlvbi5lZGdlOwotICAgICAgICBib29sIGNyb3NzaW5nID0gIXdpbmRDb3VudDsK
KyAgICAgICAgYm9vbCBldmVuT2RkQ3Jvc3NpbmcgPSAhd2luZENvdW50OwogCiAgICAgICAgIGlm
IChmaWxsUnVsZSgpID09IFJVTEVfRVZFTk9ERCkgewogICAgICAgICAgICAgd2luZENvdW50ICs9
ICh0aGlzRWRnZS52ZXJ0ZXgyKCkueSgpID4gdGhpc0VkZ2UudmVydGV4MSgpLnkoKSkgPyAxIDog
LTE7Ci0gICAgICAgICAgICBjcm9zc2luZyA9IGNyb3NzaW5nIHx8ICF3aW5kQ291bnQ7CisgICAg
ICAgICAgICBldmVuT2RkQ3Jvc3NpbmcgPSBldmVuT2RkQ3Jvc3NpbmcgfHwgIXdpbmRDb3VudDsK
ICAgICAgICAgfQogCi0gICAgICAgIGlmICgodGhpc0ludGVyc2VjdGlvbi50eXBlID09IE5vcm1h
bCkgfHwgKHRoaXNJbnRlcnNlY3Rpb24udHlwZSA9PSBWZXJ0ZXhNaW5ZKSkgewotICAgICAgICAg
ICAgaWYgKGNyb3NzaW5nKQorICAgICAgICBpZiAoZXZlbk9kZENyb3NzaW5nKSB7CisgICAgICAg
ICAgICBib29sIGVkZ2VDcm9zc2luZyA9IGZhbHNlOworICAgICAgICAgICAgaWYgKHRoaXNJbnRl
cnNlY3Rpb24udHlwZSA9PSBOb3JtYWwgfHwgIWluc2lkZSB8fCBpbmRleCA9PSBpbnRlcnNlY3Rp
b25zLnNpemUoKSAtIDEpCisgICAgICAgICAgICAgICAgZWRnZUNyb3NzaW5nID0gdHJ1ZTsKKyAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQgcHJldlZlcnRleDsK
KyAgICAgICAgICAgICAgICBGbG9hdFBvaW50IHRoaXNWZXJ0ZXg7CisgICAgICAgICAgICAgICAg
RmxvYXRQb2ludCBuZXh0VmVydGV4OworCisgICAgICAgICAgICAgICAgaWYgKGdldFZlcnRleElu
dGVyc2VjdGlvblZlcnRpY2VzKHRoaXNJbnRlcnNlY3Rpb24sIHByZXZWZXJ0ZXgsIHRoaXNWZXJ0
ZXgsIG5leHRWZXJ0ZXgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcmV2VmVydGV4Lnko
KSA9PSB5KQorICAgICAgICAgICAgICAgICAgICAgICAgZWRnZUNyb3NzaW5nID0gICh0aGlzVmVy
dGV4LngoKSA+IHByZXZWZXJ0ZXgueCgpKSA/IG5leHRWZXJ0ZXgueSgpID4geSA6IG5leHRWZXJ0
ZXgueSgpIDwgeTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICAgICAgZWRnZUNyb3NzaW5nID0gKG5leHRWZXJ0ZXgueSgpICE9IHkpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChlZGdlQ3Jvc3NpbmcpCiAgICAg
ICAgICAgICAgICAgaW5zaWRlID0gYXBwZW5kSW50ZXJ2YWxYKHRoaXNJbnRlcnNlY3Rpb24ucG9p
bnQueCgpLCBpbnNpZGUsIHJlc3VsdCk7Ci0gICAgICAgIH0gZWxzZSBpZiAodGhpc0ludGVyc2Vj
dGlvbi50eXBlID09IFZlcnRleE1heFkpIHsKLSAgICAgICAgICAgIGludCB2ZXJ0ZXhJbmRleCA9
ICh0aGlzRWRnZS52ZXJ0ZXgyKCkueSgpID4gdGhpc0VkZ2UudmVydGV4MSgpLnkoKSkgPyB0aGlz
RWRnZS5pbmRleDIgOiB0aGlzRWRnZS5pbmRleDE7Ci0gICAgICAgICAgICBpZiAoY3Jvc3Npbmcg
JiYgcmlnaHRWZXJ0ZXhZKHZlcnRleEluZGV4KSA+IHkpCi0gICAgICAgICAgICAgICAgaW5zaWRl
ID0gYXBwZW5kSW50ZXJ2YWxYKHRoaXNFZGdlLm1heFgoKSwgaW5zaWRlLCByZXN1bHQpOwotICAg
ICAgICB9IGVsc2UgaWYgKHRoaXNJbnRlcnNlY3Rpb24udHlwZSA9PSBWZXJ0ZXhZQm90aCkKLSAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoRXhjbHVzaW9uSW50ZXJ2YWwodGhpc0VkZ2UubWluWCgp
LCB0aGlzRWRnZS5tYXhYKCkpKTsKKyAgICAgICAgfQogCiAgICAgICAgIGluZGV4Kys7CiAgICAg
fQpAQCAtMjM1LDcgKzI0NSw4IEBAIHZvaWQgRXhjbHVzaW9uUG9seWdvbjo6Y29tcHV0ZUVkZ2VJ
bnRlcnNlY3Rpb25zKGZsb2F0IHkxLCBmbG9hdCB5MiwgVmVjdG9yPEV4Y2x1CiAgICAgICAgIGlm
ICh4MSA+IHgyKQogICAgICAgICAgICAgc3RkOjpzd2FwKHgxLCB4Mik7CiAKLSAgICAgICAgcmVz
dWx0LmFwcGVuZChFeGNsdXNpb25JbnRlcnZhbCh4MSwgeDIpKTsKKyAgICAgICAgaWYgKHgyID4g
eDEpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKEV4Y2x1c2lvbkludGVydmFsKHgxLCB4Mikp
OwogICAgIH0KIAogICAgIHNvcnRFeGNsdXNpb25JbnRlcnZhbHMocmVzdWx0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5oCmluZGV4IGJlMjhhN2YuLjhjMDNk
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uaApAQCAt
NTksMTMgKzU5LDE1IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBudW1iZXJPZlZlcnRpY2VzKCkg
Y29uc3QgeyByZXR1cm4gbV92ZXJ0aWNlcy0+c2l6ZSgpOyB9CiAgICAgV2luZFJ1bGUgZmlsbFJ1
bGUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGxSdWxlOyB9CiAKKyAgICBjb25zdCBFeGNsdXNpb25Q
b2x5Z29uRWRnZSYgZWRnZUF0KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX2VkZ2Vz
W2luZGV4XTsgfQorICAgIHVuc2lnbmVkIG51bWJlck9mRWRnZXMoKSBjb25zdCB7IHJldHVybiBt
X2VkZ2VzLnNpemUoKTsgfQorCiAgICAgdmlydHVhbCBGbG9hdFJlY3Qgc2hhcGVMb2dpY2FsQm91
bmRpbmdCb3goKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBpbnRlcm5hbFRvTG9naWNhbEJvdW5k
aW5nQm94KG1fYm91bmRpbmdCb3gpOyB9CiAgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiBtX2VtcHR5OyB9CiAgICAgdmlydHVhbCB2b2lkIGdldEV4Y2x1
ZGVkSW50ZXJ2YWxzKGZsb2F0IGxvZ2ljYWxUb3AsIGZsb2F0IGxvZ2ljYWxIZWlnaHQsIFNlZ21l
bnRMaXN0JikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGdldEluY2x1ZGVkSW50
ZXJ2YWxzKGZsb2F0IGxvZ2ljYWxUb3AsIGZsb2F0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0
JikgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZhdGU6Ci0gICAgZmxvYXQgcmlnaHRWZXJ0ZXhZKHVu
c2lnbmVkKSBjb25zdDsKICAgICB2b2lkIGNvbXB1dGVYSW50ZXJzZWN0aW9ucyhmbG9hdCB5LCBW
ZWN0b3I8RXhjbHVzaW9uSW50ZXJ2YWw+JikgY29uc3Q7CiAgICAgdm9pZCBjb21wdXRlRWRnZUlu
dGVyc2VjdGlvbnMoZmxvYXQgbWluWSwgZmxvYXQgbWF4WSwgVmVjdG9yPEV4Y2x1c2lvbkludGVy
dmFsPiYpIGNvbnN0OwogCkBAIC04NywxMyArODksMjUgQEAgc3RydWN0IEV4Y2x1c2lvblBvbHln
b25FZGdlIHsKICAgICBjb25zdCBGbG9hdFBvaW50JiB2ZXJ0ZXgxKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIEFTU0VSVChwb2x5Z29uKTsKLSAgICAgICAgcmV0dXJuIHBvbHlnb24tPnZlcnRleEF0
KGluZGV4MSk7CisgICAgICAgIHJldHVybiBwb2x5Z29uLT52ZXJ0ZXhBdCh2ZXJ0ZXhJbmRleDEp
OwogICAgIH0KIAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHZlcnRleDIoKSBjb25zdAogICAgIHsK
ICAgICAgICAgQVNTRVJUKHBvbHlnb24pOwotICAgICAgICByZXR1cm4gcG9seWdvbi0+dmVydGV4
QXQoaW5kZXgyKTsKKyAgICAgICAgcmV0dXJuIHBvbHlnb24tPnZlcnRleEF0KHZlcnRleEluZGV4
Mik7CisgICAgfQorCisgICAgY29uc3QgRXhjbHVzaW9uUG9seWdvbkVkZ2UmIHByZXZpb3VzRWRn
ZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQocG9seWdvbiAmJiBwb2x5Z29uLT5udW1i
ZXJPZkVkZ2VzKCkgPiAxKTsKKyAgICAgICAgcmV0dXJuIHBvbHlnb24tPmVkZ2VBdCgoZWRnZUlu
ZGV4ICsgcG9seWdvbi0+bnVtYmVyT2ZFZGdlcygpIC0gMikgJSBwb2x5Z29uLT5udW1iZXJPZkVk
Z2VzKCkpOworICAgIH0KKworICAgIGNvbnN0IEV4Y2x1c2lvblBvbHlnb25FZGdlJiBuZXh0RWRn
ZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQocG9seWdvbiAmJiBwb2x5Z29uLT5udW1i
ZXJPZkVkZ2VzKCkgPiAxKTsKKyAgICAgICAgcmV0dXJuIHBvbHlnb24tPmVkZ2VBdCgoZWRnZUlu
ZGV4ICsgMSkgJSBwb2x5Z29uLT5udW1iZXJPZkVkZ2VzKCkpOwogICAgIH0KIAogICAgIGZsb2F0
IG1pblgoKSBjb25zdCB7IHJldHVybiBzdGQ6Om1pbih2ZXJ0ZXgxKCkueCgpLCB2ZXJ0ZXgyKCku
eCgpKTsgfQpAQCAtMTAyLDggKzExNiw5IEBAIHN0cnVjdCBFeGNsdXNpb25Qb2x5Z29uRWRnZSB7
CiAgICAgZmxvYXQgbWF4WSgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bWF4KHZlcnRleDEoKS55KCks
IHZlcnRleDIoKS55KCkpOyB9CiAKICAgICBjb25zdCBFeGNsdXNpb25Qb2x5Z29uKiBwb2x5Z29u
OwotICAgIHVuc2lnbmVkIGluZGV4MTsKLSAgICB1bnNpZ25lZCBpbmRleDI7CisgICAgdW5zaWdu
ZWQgdmVydGV4SW5kZXgxOworICAgIHVuc2lnbmVkIHZlcnRleEluZGV4MjsKKyAgICB1bnNpZ25l
ZCBlZGdlSW5kZXg7CiB9OwogCiAvLyBUaGVzZSBzdHJ1Y3R1cmVzIGFyZSB1c2VkIGJ5IFBPRElu
dGVydmFsVHJlZSBmb3IgZGVidWdnaW5nLjEK
</data>

          </attachment>
      

    </bug>

</bugzilla>