<?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>68622</bug_id>
          
          <creation_ts>2011-09-22 08:46:47 -0700</creation_ts>
          <short_desc>Add unit test for CCLayerSorter</short_desc>
          <delta_ts>2011-09-29 10:04:51 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Iain Merrick">husky</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>enne</cc>
    
    <cc>husky</cc>
    
    <cc>jamesr</cc>
    
    <cc>shawnsingh</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>471583</commentid>
    <comment_count>0</comment_count>
    <who name="Iain Merrick">husky</who>
    <bug_when>2011-09-22 08:46:47 -0700</bug_when>
    <thetext>Add unit test for CCLayerSorter</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471585</commentid>
    <comment_count>1</comment_count>
      <attachid>108338</attachid>
    <who name="Iain Merrick">husky</who>
    <bug_when>2011-09-22 08:50:17 -0700</bug_when>
    <thetext>Created attachment 108338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471590</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-22 08:54:30 -0700</bug_when>
    <thetext>Attachment 108338 did not pass style-queue:

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

Source/WebKit/chromium/tests/CCLayerSorterTest.cpp:74:  Extra space after ( in function call  [whitespace/parens] [4]
Source/WebKit/chromium/tests/CCLayerSorterTest.cpp:75:  Extra space after ( in function call  [whitespace/parens] [4]
Source/WebKit/chromium/tests/CCLayerSorterTest.cpp:80:  Extra space after ( in function call  [whitespace/parens] [4]
Source/WebKit/chromium/tests/CCLayerSorterTest.cpp:81:  Extra space after ( in function call  [whitespace/parens] [4]
Source/WebKit/chromium/tests/CCLayerSorterTest.cpp:96:  Extra space after ( in function call  [whitespace/parens] [4]
Source/WebKit/chromium/tests/CCLayerSorterTest.cpp:97:  Extra space after ( in function call  [whitespace/parens] [4]
Source/WebKit/chromium/tests/CCLayerSorterTest.cpp:131:  Extra space after ( in function call  [whitespace/parens] [4]
Source/WebKit/chromium/tests/CCLayerSorterTest.cpp:132:  Extra space after ( in function call  [whitespace/parens] [4]
Source/WebKit/chromium/tests/CCLayerSorterTest.cpp:136:  Extra space after ( in function call  [whitespace/parens] [4]
Source/WebKit/chromium/tests/CCLayerSorterTest.cpp:139:  Extra space after ( in function call  [whitespace/parens] [4]
Source/WebKit/chromium/tests/CCLayerSorterTest.cpp:143:  Extra space after ( in function call  [whitespace/parens] [4]
Source/WebKit/chromium/tests/CCLayerSorterTest.cpp:144:  Extra space after ( in function call  [whitespace/parens] [4]
Total errors found: 12 in 6 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>471592</commentid>
    <comment_count>3</comment_count>
    <who name="Iain Merrick">husky</who>
    <bug_when>2011-09-22 08:56:16 -0700</bug_when>
    <thetext>No tests for the topological sort yet, that can come next.

Another thing that might be worth doing in a future patch is unifying the edgeEdgeTest function with findIntersection (in FloatPoint.h). They&apos;re almost identical except that findIntersection projects the lines to infinity, but we require an intersection that&apos;s inside both line segments. But the only extra code we need for that is pointInColinearEdge.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471599</commentid>
    <comment_count>4</comment_count>
    <who name="Iain Merrick">husky</who>
    <bug_when>2011-09-22 09:02:15 -0700</bug_when>
    <thetext>Re style errors: I added spaces to make the constants readable. Happy to remove them if that error can be suppressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473072</commentid>
    <comment_count>5</comment_count>
      <attachid>108657</attachid>
    <who name="Iain Merrick">husky</who>
    <bug_when>2011-09-26 06:02:50 -0700</bug_when>
    <thetext>Created attachment 108657
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473650</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-26 19:59:46 -0700</bug_when>
    <thetext>Vangelis, since you wrote the sorter originally would you mind reviewing this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473688</commentid>
    <comment_count>7</comment_count>
      <attachid>108657</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-09-26 22:58:34 -0700</bug_when>
    <thetext>Comment on attachment 108657
Patch

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

Looks good (other than test comment)!  Thanks for taking care of it.

&gt; Source/WebKit/chromium/tests/CCLayerSorterTest.cpp:117
&gt; +    //  : ----A----/-

Intersecting layers don&apos;t currently get sorted consistently.  Ideally this test should use non-intersecting layers which could be achieved by spreading A and B a bit more on the X axis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473986</commentid>
    <comment_count>8</comment_count>
    <who name="Iain Merrick">husky</who>
    <bug_when>2011-09-27 09:37:01 -0700</bug_when>
    <thetext>Sure, I&apos;ll make that change.

It looked to me as if intersecting layers actually *are* sorted consistently, at least in certain cases, which is why I tried it out in the test. I guess intersecting layers are basically cycles, so it depends whether we want to set any requirements on how cycles are broken (and it seems OK to leave it undefined for now).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474024</commentid>
    <comment_count>9</comment_count>
      <attachid>108862</attachid>
    <who name="Iain Merrick">husky</who>
    <bug_when>2011-09-27 10:07:46 -0700</bug_when>
    <thetext>Created attachment 108862
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474076</commentid>
    <comment_count>10</comment_count>
      <attachid>108862</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-09-27 10:56:49 -0700</bug_when>
    <thetext>Comment on attachment 108862
Patch

Looks good. (unofficial) R+ from me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474089</commentid>
    <comment_count>11</comment_count>
      <attachid>108862</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-27 11:09:11 -0700</bug_when>
    <thetext>Comment on attachment 108862
Patch

R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474638</commentid>
    <comment_count>12</comment_count>
      <attachid>108862</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-28 03:30:02 -0700</bug_when>
    <thetext>Comment on attachment 108862
Patch

Rejecting attachment 108862 from commit-queue.

husky@google.com does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474640</commentid>
    <comment_count>13</comment_count>
    <who name="Iain Merrick">husky</who>
    <bug_when>2011-09-28 03:32:16 -0700</bug_when>
    <thetext>Oops, guess I need commit-queue? instead of commit-queue+. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475382</commentid>
    <comment_count>14</comment_count>
    <who name="Iain Merrick">husky</who>
    <bug_when>2011-09-29 05:12:17 -0700</bug_when>
    <thetext>James, could you please commit-queue+ this for me? Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475476</commentid>
    <comment_count>15</comment_count>
      <attachid>108862</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-09-29 09:51:05 -0700</bug_when>
    <thetext>Comment on attachment 108862
Patch

Any WebKit committer can set cq+ for a reviewed patch.  There are several WebKit committers in the LON office, so in the future it&apos;ll probably be faster for you to ask one of them rather than wait for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475492</commentid>
    <comment_count>16</comment_count>
      <attachid>108862</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-29 10:04:47 -0700</bug_when>
    <thetext>Comment on attachment 108862
Patch

Clearing flags on attachment: 108862

Committed r96337: &lt;http://trac.webkit.org/changeset/96337&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475493</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-29 10:04:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108338</attachid>
            <date>2011-09-22 08:50:17 -0700</date>
            <delta_ts>2011-09-26 06:02:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68622-20110922165015.patch</filename>
            <type>text/plain</type>
            <size>18917</size>
            <attacher name="Iain Merrick">husky</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1NzE5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDktMjIgIElhaW4gTWVy
cmljayAgPGh1c2t5QGdvb2dsZS5jb20+CisKKyAgICAgICAgQWRkIHVuaXQgdGVzdCBmb3IgQ0NM
YXllclNvcnRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Njg2MjIKKworICAgICAgICBNaW5vciByZWZhY3RvcmluZyBmb3IgdGVzdGFiaWxpdHk6Cisg
ICAgICAgIC0gTWFkZSBwb2ludEluVHJpYW5nbGUgcHVibGljLgorICAgICAgICAtIEFkZGVkIExh
eWVyU2hhcGUgdG8gZGVjb3VwbGUgTGF5ZXJJbnRlcnNlY3RvciBhbmQgR3JhcGhOb2RlLgorICAg
ICAgICAtIEFkZGVkIGEgcHVibGljIHdyYXBwZXIgZnVuY3Rpb24gZm9yIExheWVySW50ZXJzZWN0
b3IuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyU29ydGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJTb3J0ZXI6OnBvaW50SW5UcmlhbmdsZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyU29ydGVyOjpjYWxjdWxhdGVaRGlmZik6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyU29ydGVyOjpMYXllckludGVyc2VjdG9yOjpMYXllckludGVyc2VjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJTb3J0ZXI6OkxheWVySW50ZXJzZWN0b3I6OmdvKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJTb3J0ZXI6OkxheWVySW50ZXJzZWN0b3I6OmNoZWNrWkRpZmYp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclNvcnRlcjo6TGF5ZXJJbnRlcnNlY3Rvcjo6bGF5
ZXJaRnJvbVByb2plY3RlZFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJTb3J0ZXI6
OmNoZWNrT3ZlcmxhcCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyU29ydGVyOjpMYXllclNo
YXBlOjpMYXllclNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJTb3J0ZXI6OmNyZWF0
ZUdyYXBoTm9kZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJTb3J0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJTb3J0ZXI6OkxheWVyU2hh
cGU6OkxheWVyU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclNvcnRlcjo6R3JhcGhO
b2RlOjpHcmFwaE5vZGUpOgorCiAyMDExLTA5LTIyICBBbHBoYSBMYW0gIDxoY2xhbUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgRGVmaW5lIGV4cG9ydCBzeW1ib2wgY29ycmVjdGx5IGR1ZSB0byBy
ZW5hbWUgb2YgcGFnZVNjYWxlRmFjdG9yIHRvCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyU29ydGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyU29ydGVy
LmNwcAkocmV2aXNpb24gOTU3MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyU29ydGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTAg
KzQ1LDEwIEBAIHN0YXRpYyBXVEZMb2dDaGFubmVsIExvZ0NDTGF5ZXJTb3J0ZXIgPSAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCBwb2ludEluVHJpYW5nbGUoY29uc3QgRmxv
YXRQb2ludCYgcG9pbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRQ
b2ludCYgYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBi
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIGMpCitib29s
IENDTGF5ZXJTb3J0ZXI6OnBvaW50SW5UcmlhbmdsZShjb25zdCBGbG9hdFBvaW50JiBwb2ludCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIGEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYg
YykKIHsKICAgICAvLyBBbGdvcml0aG0gZnJvbSBodHRwOi8vd3d3LmJsYWNrcGF3bi5jb20vdGV4
dHMvcG9pbnRpbnBvbHkvZGVmYXVsdC5odG1sCiAgICAgZmxvYXQgeDAgPSBjLngoKSAtIGEueCgp
OwpAQCAtMTQzLDkgKzE0MywxNiBAQCBzdGF0aWMgYm9vbCBlZGdlRWRnZVRlc3QoY29uc3QgRmxv
YXRQb2luCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUNDTGF5ZXJTb3J0ZXI6OkxheWVySW50ZXJz
ZWN0b3I6OkxheWVySW50ZXJzZWN0b3IoR3JhcGhOb2RlKiBub2RlQSwgR3JhcGhOb2RlKiBub2Rl
QiwgZmxvYXQgZWFybHlFeGl0VGhyZXNob2xkKQotICAgIDogbm9kZUEobm9kZUEpCi0gICAgLCBu
b2RlQihub2RlQikKK2Zsb2F0IENDTGF5ZXJTb3J0ZXI6OmNhbGN1bGF0ZVpEaWZmKGNvbnN0IExh
eWVyU2hhcGUmIGxheWVyQSwgY29uc3QgTGF5ZXJTaGFwZSYgbGF5ZXJCLCBmbG9hdCBlYXJseUV4
aXRUaHJlc2hvbGQpCit7CisgICAgTGF5ZXJJbnRlcnNlY3RvciBpbnRlcnNlY3RvcihsYXllckEs
IGxheWVyQiwgZWFybHlFeGl0VGhyZXNob2xkKTsKKyAgICBpbnRlcnNlY3Rvci5nbygpOworICAg
IHJldHVybiBpbnRlcnNlY3Rvci56RGlmZjsKK30KKworQ0NMYXllclNvcnRlcjo6TGF5ZXJJbnRl
cnNlY3Rvcjo6TGF5ZXJJbnRlcnNlY3Rvcihjb25zdCBMYXllclNoYXBlJiBsYXllckEsIGNvbnN0
IExheWVyU2hhcGUmIGxheWVyQiwgZmxvYXQgZWFybHlFeGl0VGhyZXNob2xkKQorICAgIDogbGF5
ZXJBKGxheWVyQSkKKyAgICAsIGxheWVyQihsYXllckIpCiAgICAgLCB6RGlmZigwKQogICAgICwg
ZWFybHlFeGl0VGhyZXNob2xkKGVhcmx5RXhpdFRocmVzaG9sZCkKIHsKQEAgLTE1MywxMyArMTYw
LDEyIEBAIENDTGF5ZXJTb3J0ZXI6OkxheWVySW50ZXJzZWN0b3I6OkxheWVySW4KIAogdm9pZCBD
Q0xheWVyU29ydGVyOjpMYXllckludGVyc2VjdG9yOjpnbygpCiB7Ci0gICAgKHRyaWFuZ2xlVHJp
YW5nbGVUZXN0KG5vZGVBLT5jMSwgbm9kZUEtPmMyLCBub2RlQS0+YzMsIG5vZGVCLT5jMSwgbm9k
ZUItPmMyLCBub2RlQi0+YzMpCi0gICAgIHx8IHRyaWFuZ2xlVHJpYW5nbGVUZXN0KG5vZGVBLT5j
Mywgbm9kZUEtPmM0LCBub2RlQS0+YzEsIG5vZGVCLT5jMSwgbm9kZUItPmMyLCBub2RlQi0+YzMp
Ci0gICAgIHx8IHRyaWFuZ2xlVHJpYW5nbGVUZXN0KG5vZGVBLT5jMSwgbm9kZUEtPmMyLCBub2Rl
QS0+YzMsIG5vZGVCLT5jMywgbm9kZUItPmM0LCBub2RlQi0+YzEpCi0gICAgIHx8IHRyaWFuZ2xl
VHJpYW5nbGVUZXN0KG5vZGVBLT5jMywgbm9kZUEtPmM0LCBub2RlQS0+YzEsIG5vZGVCLT5jMywg
bm9kZUItPmM0LCBub2RlQi0+YzEpKTsKKyAgICAodHJpYW5nbGVUcmlhbmdsZVRlc3QobGF5ZXJB
LmMxLCBsYXllckEuYzIsIGxheWVyQS5jMywgbGF5ZXJCLmMxLCBsYXllckIuYzIsIGxheWVyQi5j
MykKKyAgICAgfHwgdHJpYW5nbGVUcmlhbmdsZVRlc3QobGF5ZXJBLmMzLCBsYXllckEuYzQsIGxh
eWVyQS5jMSwgbGF5ZXJCLmMxLCBsYXllckIuYzIsIGxheWVyQi5jMykKKyAgICAgfHwgdHJpYW5n
bGVUcmlhbmdsZVRlc3QobGF5ZXJBLmMxLCBsYXllckEuYzIsIGxheWVyQS5jMywgbGF5ZXJCLmMz
LCBsYXllckIuYzQsIGxheWVyQi5jMSkKKyAgICAgfHwgdHJpYW5nbGVUcmlhbmdsZVRlc3QobGF5
ZXJBLmMzLCBsYXllckEuYzQsIGxheWVyQS5jMSwgbGF5ZXJCLmMzLCBsYXllckIuYzQsIGxheWVy
Qi5jMSkpOwogfQogCi0KIC8vIENoZWNrcyBpZiBzZWdtZW50IHBxIGludGVyc2VjdHMgYW55IG9m
IHRoZSBzaWRlcyBvZiB0cmlhbmdsZSBhYmMuCiBib29sIENDTGF5ZXJTb3J0ZXI6OkxheWVySW50
ZXJzZWN0b3I6OmVkZ2VUcmlhbmdsZVRlc3QoY29uc3QgRmxvYXRQb2ludCYgcCwgY29uc3QgRmxv
YXRQb2ludCYgcSwgY29uc3QgRmxvYXRQb2ludCYgYSwgY29uc3QgRmxvYXRQb2ludCYgYiwgY29u
c3QgRmxvYXRQb2ludCYgYykKIHsKQEAgLTIwNCw4ICsyMTAsOCBAQCBib29sIENDTGF5ZXJTb3J0
ZXI6OkxheWVySW50ZXJzZWN0b3I6OnRyCiAvLyBvdGhlciBpbnRlcnNlY3Rpb24gcG9pbnRzLgog
Ym9vbCBDQ0xheWVyU29ydGVyOjpMYXllckludGVyc2VjdG9yOjpjaGVja1pEaWZmKGNvbnN0IEZs
b2F0UG9pbnQmIHApCiB7Ci0gICAgZmxvYXQgemEgPSBsYXllclpGcm9tUHJvamVjdGVkUG9pbnQo
bm9kZUEsIHApOwotICAgIGZsb2F0IHpiID0gbGF5ZXJaRnJvbVByb2plY3RlZFBvaW50KG5vZGVC
LCBwKTsKKyAgICBmbG9hdCB6YSA9IGxheWVyWkZyb21Qcm9qZWN0ZWRQb2ludChsYXllckEsIHAp
OworICAgIGZsb2F0IHpiID0gbGF5ZXJaRnJvbVByb2plY3RlZFBvaW50KGxheWVyQiwgcCk7CiAK
ICAgICBmbG9hdCBkaWZmID0gemEgLSB6YjsKICAgICBmbG9hdCBhYnNEaWZmID0gZmFic2YoZGlm
Zik7CkBAIC0yMjUsMTcgKzIzMSwxNyBAQCBib29sIENDTGF5ZXJTb3J0ZXI6OkxheWVySW50ZXJz
ZWN0b3I6OmNoCiAvLyB0byBwb2ludCBwIHdoaWNoIGxpZXMgb24gdGhlIHogPSAwIHBsYW5lLiBJ
dCBkb2VzIGl0IGJ5IGNvbXB1dGluZyB0aGUKIC8vIGludGVyc2VjdGlvbiBvZiBhIGxpbmUgc3Rh
cnRpbmcgZnJvbSBwIGFsb25nIHRoZSBaIGF4aXMgYW5kIHRoZSBwbGFuZQogLy8gb2YgdGhlIGxh
eWVyLgotZmxvYXQgQ0NMYXllclNvcnRlcjo6TGF5ZXJJbnRlcnNlY3Rvcjo6bGF5ZXJaRnJvbVBy
b2plY3RlZFBvaW50KEdyYXBoTm9kZSogbGF5ZXIsIGNvbnN0IEZsb2F0UG9pbnQmIHApCitmbG9h
dCBDQ0xheWVyU29ydGVyOjpMYXllckludGVyc2VjdG9yOjpsYXllclpGcm9tUHJvamVjdGVkUG9p
bnQoY29uc3QgTGF5ZXJTaGFwZSYgbGF5ZXIsIGNvbnN0IEZsb2F0UG9pbnQmIHApCiB7CiAgICAg
Y29uc3QgRmxvYXRQb2ludDNEIHpBeGlzKDAsIDAsIDEpOwotICAgIEZsb2F0UG9pbnQzRCB3ID0g
RmxvYXRQb2ludDNEKHAueCgpLCBwLnkoKSwgMCkgLSBsYXllci0+b3JpZ2luOworICAgIEZsb2F0
UG9pbnQzRCB3ID0gRmxvYXRQb2ludDNEKHAueCgpLCBwLnkoKSwgMCkgLSBsYXllci5vcmlnaW47
CiAKLSAgICBmbG9hdCBkID0gbGF5ZXItPm5vcm1hbC5kb3QoekF4aXMpOwotICAgIGZsb2F0IG4g
PSAtbGF5ZXItPm5vcm1hbC5kb3Qodyk7CisgICAgZmxvYXQgZCA9IGxheWVyLm5vcm1hbC5kb3Qo
ekF4aXMpOworICAgIGZsb2F0IG4gPSAtbGF5ZXIubm9ybWFsLmRvdCh3KTsKIAogICAgIC8vIENo
ZWNrIGlmIGxheWVyIGlzIHBhcmFsbGVsIHRvIHRoZSB6ID0gMCBheGlzCiAgICAgaWYgKCFkKQot
ICAgICAgICByZXR1cm4gbGF5ZXItPm9yaWdpbi56KCk7CisgICAgICAgIHJldHVybiBsYXllci5v
cmlnaW4ueigpOwogCiAgICAgLy8gVGhlIGludGVyc2VjdGlvbiBwb2ludCB3b3VsZCBiZSBnaXZl
biBieToKICAgICAvLyBwICsgKG4gLyBkKSAqIHUgIGJ1dCBzaW5jZSB3ZSBhcmUgb25seSBpbnRl
cmVzdGVkIGluIHRoZSAKQEAgLTI0Myw3ICsyNDksNiBAQCBmbG9hdCBDQ0xheWVyU29ydGVyOjpM
YXllckludGVyc2VjdG9yOjpsCiAgICAgcmV0dXJuIG4gLyBkOwogfQogCi0KIENDTGF5ZXJTb3J0
ZXI6OkNDTGF5ZXJTb3J0ZXIoKQogICAgIDogbV96UmFuZ2UoMCkKIHsKQEAgLTI1MSwyMyArMjU2
LDMyIEBAIENDTGF5ZXJTb3J0ZXI6OkNDTGF5ZXJTb3J0ZXIoKQogCiBDQ0xheWVyU29ydGVyOjpB
QkNvbXBhcmVSZXN1bHQgQ0NMYXllclNvcnRlcjo6Y2hlY2tPdmVybGFwKEdyYXBoTm9kZSogYSwg
R3JhcGhOb2RlKiBiKQogewotICAgIGlmICghYS0+Ym91bmRpbmdCb3guaW50ZXJzZWN0cyhiLT5i
b3VuZGluZ0JveCkpCisgICAgaWYgKCFhLT5zaGFwZS5ib3VuZGluZ0JveC5pbnRlcnNlY3RzKGIt
PnNoYXBlLmJvdW5kaW5nQm94KSkKICAgICAgICAgcmV0dXJuIE5vbmU7CiAKICAgICAvLyBNYWtl
IHRoZSBlYXJseSBleGl0IHRocmVzaG9sZCBwcm9wb3J0aW9uYWwgdG8gdGhlIHRvdGFsIFogcmFu
Z2UuCiAgICAgZmxvYXQgZXhpdFRocmVzaG9sZCA9IG1felJhbmdlICogMC4wMTsKKyAgICBmbG9h
dCB6RGlmZiA9IGNhbGN1bGF0ZVpEaWZmKGEtPnNoYXBlLCBiLT5zaGFwZSwgZXhpdFRocmVzaG9s
ZCk7CiAKLSAgICBMYXllckludGVyc2VjdG9yIGludGVyc2VjdG9yKGEsIGIsIGV4aXRUaHJlc2hv
bGQpOwotICAgIGludGVyc2VjdG9yLmdvKCk7Ci0KLSAgICBpZiAoaW50ZXJzZWN0b3IuekRpZmYg
PiAwKQorICAgIGlmICh6RGlmZiA+IDApCiAgICAgICAgIHJldHVybiBCQmVmb3JlQTsKLSAgICBp
ZiAoaW50ZXJzZWN0b3IuekRpZmYgPCAwKQorICAgIGlmICh6RGlmZiA8IDApCiAgICAgICAgIHJl
dHVybiBBQmVmb3JlQjsKIAogICAgIHJldHVybiBOb25lOwogfQogCitDQ0xheWVyU29ydGVyOjpM
YXllclNoYXBlOjpMYXllclNoYXBlKGNvbnN0IEZsb2F0UG9pbnQzRCYgcDEsIGNvbnN0IEZsb2F0
UG9pbnQzRCYgcDIsIGNvbnN0IEZsb2F0UG9pbnQzRCYgcDMsIGNvbnN0IEZsb2F0UG9pbnQzRCYg
cDQpCisgICAgOiBub3JtYWwoKHAyIC0gcDEpLmNyb3NzKHAzIC0gcDEpKQorICAgICwgYzEoRmxv
YXRQb2ludChwMS54KCksIHAxLnkoKSkpCisgICAgLCBjMihGbG9hdFBvaW50KHAyLngoKSwgcDIu
eSgpKSkKKyAgICAsIGMzKEZsb2F0UG9pbnQocDMueCgpLCBwMy55KCkpKQorICAgICwgYzQoRmxv
YXRQb2ludChwNC54KCksIHA0LnkoKSkpCisgICAgLCBvcmlnaW4ocDEpCit7CisgICAgYm91bmRp
bmdCb3guZml0VG9Qb2ludHMoYzEsIGMyLCBjMywgYzQpOworfQorCiB2b2lkIENDTGF5ZXJTb3J0
ZXI6OmNyZWF0ZUdyYXBoTm9kZXMoTGF5ZXJMaXN0OjppdGVyYXRvciBmaXJzdCwgTGF5ZXJMaXN0
OjppdGVyYXRvciBsYXN0KQogewogI2lmICFkZWZpbmVkKCBOREVCVUcgKQpAQCAtMzAyLDEzICsz
MTYsNyBAQCB2b2lkIENDTGF5ZXJTb3J0ZXI6OmNyZWF0ZUdyYXBoTm9kZXMoTGF5CiAgICAgICAg
IEZsb2F0UG9pbnQzRCBjMiA9IGRyYXdUcmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQb2ludDNEKGxh
eWVyV2lkdGgsIGxheWVySGVpZ2h0LCAwKSk7CiAgICAgICAgIEZsb2F0UG9pbnQzRCBjMyA9IGRy
YXdUcmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQb2ludDNEKGxheWVyV2lkdGgsIC1sYXllckhlaWdo
dCwgMCkpOwogICAgICAgICBGbG9hdFBvaW50M0QgYzQgPSBkcmF3VHJhbnNmb3JtLm1hcFBvaW50
KEZsb2F0UG9pbnQzRCgtbGF5ZXJXaWR0aCwgLWxheWVySGVpZ2h0LCAwKSk7Ci0gICAgICAgIG5v
ZGUubm9ybWFsID0gKGMyIC0gYzEpLmNyb3NzKGMzIC0gYzEpOwotICAgICAgICBub2RlLmMxID0g
RmxvYXRQb2ludChjMS54KCksIGMxLnkoKSk7Ci0gICAgICAgIG5vZGUuYzIgPSBGbG9hdFBvaW50
KGMyLngoKSwgYzIueSgpKTsKLSAgICAgICAgbm9kZS5jMyA9IEZsb2F0UG9pbnQoYzMueCgpLCBj
My55KCkpOwotICAgICAgICBub2RlLmM0ID0gRmxvYXRQb2ludChjNC54KCksIGM0LnkoKSk7Ci0g
ICAgICAgIG5vZGUub3JpZ2luID0gYzE7Ci0gICAgICAgIG5vZGUuYm91bmRpbmdCb3guZml0VG9Q
b2ludHMobm9kZS5jMSwgbm9kZS5jMiwgbm9kZS5jMywgbm9kZS5jNCk7CisgICAgICAgIG5vZGUu
c2hhcGUgPSBMYXllclNoYXBlKGMxLCBjMiwgYzMsIGM0KTsKICAgICAKICAgICAgICAgbWF4WiA9
IG1heChjNC56KCksIG1heChjMy56KCksIG1heChjMi56KCksIG1heChtYXhaLCBjMS56KCkpKSkp
OwogICAgICAgICBtaW5aID0gbWluKGM0LnooKSwgbWluKGMzLnooKSwgbWluKGMyLnooKSwgbWlu
KG1pblosIGMxLnooKSkpKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyU29ydGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclNvcnRlci5oCShyZXZpc2lv
biA5NTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJTb3J0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTYgKzQyLDMxIEBAIHB1Ymxp
YzoKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8Q0NMYXllckltcGw+ID4gTGF5ZXJMaXN0Owog
CiAgICAgdm9pZCBzb3J0KExheWVyTGlzdDo6aXRlcmF0b3IgZmlyc3QsIExheWVyTGlzdDo6aXRl
cmF0b3IgbGFzdCk7CisKKyAgICAvLyBIZWxwZXIgbWV0aG9kcywgcHVibGljIGZvciB1bml0IHRl
c3RpbmcuCisgICAgc3RhdGljIGJvb2wgcG9pbnRJblRyaWFuZ2xlKGNvbnN0IEZsb2F0UG9pbnQm
LCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQm
KTsKKworICAgIC8vIEhvbGRzIHZhcmlvdXMgdXNlZnVsIHByb3BlcnRpZXMgZGVyaXZlZCBmcm9t
IGEgbGF5ZXIncyAzRCBvdXRsaW5lLgorICAgIHN0cnVjdCBMYXllclNoYXBlIHsKKyAgICAgICAg
TGF5ZXJTaGFwZSgpIHsgfQorICAgICAgICBMYXllclNoYXBlKGNvbnN0IEZsb2F0UG9pbnQzRCYs
IGNvbnN0IEZsb2F0UG9pbnQzRCYsIGNvbnN0IEZsb2F0UG9pbnQzRCYsIGNvbnN0IEZsb2F0UG9p
bnQzRCYpOworCisgICAgICAgIEZsb2F0UG9pbnQzRCBub3JtYWw7CisgICAgICAgIEZsb2F0UG9p
bnQgYzEsIGMyLCBjMywgYzQ7CisgICAgICAgIEZsb2F0UG9pbnQzRCBvcmlnaW47CisgICAgICAg
IEZsb2F0UmVjdCBib3VuZGluZ0JveDsKKyAgICB9OworCisgICAgc3RhdGljIGZsb2F0IGNhbGN1
bGF0ZVpEaWZmKGNvbnN0IExheWVyU2hhcGUmLCBjb25zdCBMYXllclNoYXBlJiwgZmxvYXQgZWFy
bHlFeGl0VGhyZXNob2xkKTsKKwogcHJpdmF0ZToKICAgICBzdHJ1Y3QgR3JhcGhFZGdlOwogCiAg
ICAgc3RydWN0IEdyYXBoTm9kZSB7Ci0gICAgICAgIEdyYXBoTm9kZShDQ0xheWVySW1wbCogY2Ns
YXllcikgOiBsYXllcihjY2xheWVyKSB7IH07CisgICAgICAgIGV4cGxpY2l0IEdyYXBoTm9kZShD
Q0xheWVySW1wbCogY2NsYXllcikgOiBsYXllcihjY2xheWVyKSB7IH0KKwogICAgICAgICBDQ0xh
eWVySW1wbCogbGF5ZXI7Ci0gICAgICAgIEZsb2F0UG9pbnQgYzEsIGMyLCBjMywgYzQ7Ci0gICAg
ICAgIEZsb2F0UG9pbnQzRCBub3JtYWw7Ci0gICAgICAgIEZsb2F0UG9pbnQzRCBvcmlnaW47Ci0g
ICAgICAgIEZsb2F0UmVjdCBib3VuZGluZ0JveDsKKyAgICAgICAgTGF5ZXJTaGFwZSBzaGFwZTsK
ICAgICAgICAgVmVjdG9yPEdyYXBoRWRnZSo+IGluY29taW5nOwogICAgICAgICBWZWN0b3I8R3Jh
cGhFZGdlKj4gb3V0Z29pbmc7CiAgICAgfTsKQEAgLTY0LDE4ICs3OSwxOCBAQCBwcml2YXRlOgog
ICAgIH07CiAKICAgICBzdHJ1Y3QgTGF5ZXJJbnRlcnNlY3RvciB7Ci0gICAgICAgIExheWVySW50
ZXJzZWN0b3IoR3JhcGhOb2RlKiwgR3JhcGhOb2RlKiwgZmxvYXQpOworICAgICAgICBMYXllcklu
dGVyc2VjdG9yKGNvbnN0IExheWVyU2hhcGUmLCBjb25zdCBMYXllclNoYXBlJiwgZmxvYXQpOwog
CiAgICAgICAgIHZvaWQgZ28oKTsKIAotICAgICAgICBmbG9hdCBsYXllclpGcm9tUHJvamVjdGVk
UG9pbnQoR3JhcGhOb2RlKiwgY29uc3QgRmxvYXRQb2ludCYpOworICAgICAgICBmbG9hdCBsYXll
clpGcm9tUHJvamVjdGVkUG9pbnQoY29uc3QgTGF5ZXJTaGFwZSYsIGNvbnN0IEZsb2F0UG9pbnQm
KTsKICAgICAgICAgYm9vbCB0cmlhbmdsZVRyaWFuZ2xlVGVzdChjb25zdCBGbG9hdFBvaW50Jiwg
Y29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50Jiwg
Y29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmKTsKICAgICAgICAgYm9vbCBlZGdl
VHJpYW5nbGVUZXN0KGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3Qg
RmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50Jik7CiAgICAg
ICAgIGJvb2wgY2hlY2taRGlmZihjb25zdCBGbG9hdFBvaW50Jik7CiAKICAgICAgICAgRmxvYXRQ
b2ludCBpbnRlcnNlY3Rpb25Qb2ludDsKLSAgICAgICAgR3JhcGhOb2RlKiBub2RlQTsKLSAgICAg
ICAgR3JhcGhOb2RlKiBub2RlQjsKKyAgICAgICAgY29uc3QgTGF5ZXJTaGFwZSYgbGF5ZXJBOwor
ICAgICAgICBjb25zdCBMYXllclNoYXBlJiBsYXllckI7CiAgICAgICAgIGZsb2F0IHpEaWZmOwog
ICAgICAgICBmbG9hdCBlYXJseUV4aXRUaHJlc2hvbGQ7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5NTcxOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDktMjIg
IElhaW4gTWVycmljayAgPGh1c2t5QGdvb2dsZS5jb20+CisKKyAgICAgICAgQWRkIHVuaXQgdGVz
dCBmb3IgQ0NMYXllclNvcnRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Njg2MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYktpdC5neXBpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJTb3J0ZXJU
ZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKwogMjAxMS0wOS0yMiAg
U2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZC4gIFJvbGxlZCBERVBTLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBp
CShyZXZpc2lvbiA5NTcwNykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkJ
KHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDcgQEAKICAgICAgICAgJ3dlYmtpdF91bml0dGVz
dF9maWxlcyc6IFsKICAgICAgICAgICAgICd0ZXN0cy9BcmVuYVRlc3RIZWxwZXJzLmgnLAogICAg
ICAgICAgICAgJ3Rlc3RzL0Fzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LmNwcCcsCisgICAgICAgICAg
ICAndGVzdHMvQ0NMYXllclNvcnRlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NUaHJlYWRUYXNrVGVz
dC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDVGhyZWFkVGVzdC5jcHAnLApJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyU29ydGVyVGVzdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyU29ydGVyVGVzdC5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJTb3J0
ZXJUZXN0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNjAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisg
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgImNjL0NDTGF5ZXJTb3J0ZXIuaCIKKwor
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitu
YW1lc3BhY2UgeworCitURVNUKENDTGF5ZXJTb3J0ZXJUZXN0LCBQb2ludEluVHJpYW5nbGUpCit7
CisgICAgRmxvYXRQb2ludCBhKDEwLjAsIDEwLjApOworICAgIEZsb2F0UG9pbnQgYigzMC4wLCAx
MC4wKTsKKyAgICBGbG9hdFBvaW50IGMoMjAuMCwgMjAuMCk7CisKKyAgICAvLyBQb2ludCBpbiB0
aGUgY2VudGVyIGlzIGluIHRoZSB0cmlhbmdsZS4KKyAgICBFWFBFQ1RfVFJVRShDQ0xheWVyU29y
dGVyOjpwb2ludEluVHJpYW5nbGUoRmxvYXRQb2ludCgyMC4wLCAxNS4wKSwgYSwgYiwgYykpOwor
CisgICAgLy8gUGVybXV0aW5nIHRoZSBjb3JuZXJzIGRvZXNuJ3QgY2hhbmdlIHRoZSByZXN1bHQu
CisgICAgRVhQRUNUX1RSVUUoQ0NMYXllclNvcnRlcjo6cG9pbnRJblRyaWFuZ2xlKEZsb2F0UG9p
bnQoMjAuMCwgMTUuMCksIGEsIGMsIGIpKTsKKyAgICBFWFBFQ1RfVFJVRShDQ0xheWVyU29ydGVy
Ojpwb2ludEluVHJpYW5nbGUoRmxvYXRQb2ludCgyMC4wLCAxNS4wKSwgYiwgYSwgYykpOworICAg
IEVYUEVDVF9UUlVFKENDTGF5ZXJTb3J0ZXI6OnBvaW50SW5UcmlhbmdsZShGbG9hdFBvaW50KDIw
LjAsIDE1LjApLCBiLCBjLCBhKSk7CisgICAgRVhQRUNUX1RSVUUoQ0NMYXllclNvcnRlcjo6cG9p
bnRJblRyaWFuZ2xlKEZsb2F0UG9pbnQoMjAuMCwgMTUuMCksIGMsIGEsIGIpKTsKKyAgICBFWFBF
Q1RfVFJVRShDQ0xheWVyU29ydGVyOjpwb2ludEluVHJpYW5nbGUoRmxvYXRQb2ludCgyMC4wLCAx
NS4wKSwgYywgYiwgYSkpOworCisgICAgLy8gUG9pbnRzIG9uIHRoZSBlZGdlcyBhcmUgbm90IGlu
IHRoZSB0cmlhbmdsZS4KKyAgICBFWFBFQ1RfRkFMU0UoQ0NMYXllclNvcnRlcjo6cG9pbnRJblRy
aWFuZ2xlKEZsb2F0UG9pbnQoMjAuMCwgMTAuMCksIGEsIGIsIGMpKTsKKyAgICBFWFBFQ1RfRkFM
U0UoQ0NMYXllclNvcnRlcjo6cG9pbnRJblRyaWFuZ2xlKEZsb2F0UG9pbnQoMTUuMCwgMTUuMCks
IGEsIGIsIGMpKTsKKyAgICBFWFBFQ1RfRkFMU0UoQ0NMYXllclNvcnRlcjo6cG9pbnRJblRyaWFu
Z2xlKEZsb2F0UG9pbnQoMjUuMCwgMTUuMCksIGEsIGIsIGMpKTsKKworICAgIC8vIFBvaW50cyBq
dXN0IGluc2lkZSB0aGUgZWRnZXMgYXJlIGluIHRoZSB0cmlhbmdsZS4KKyAgICBFWFBFQ1RfVFJV
RShDQ0xheWVyU29ydGVyOjpwb2ludEluVHJpYW5nbGUoRmxvYXRQb2ludCgyMC4wLCAxMC4wMSks
IGEsIGIsIGMpKTsKKyAgICBFWFBFQ1RfVFJVRShDQ0xheWVyU29ydGVyOjpwb2ludEluVHJpYW5n
bGUoRmxvYXRQb2ludCgxNS4wMSwgMTUuMCksIGEsIGIsIGMpKTsKKyAgICBFWFBFQ1RfVFJVRShD
Q0xheWVyU29ydGVyOjpwb2ludEluVHJpYW5nbGUoRmxvYXRQb2ludCgyNC45OSwgMTUuMCksIGEs
IGIsIGMpKTsKKworICAgIC8vIFplcm8tYXJlYSB0cmlhbmdsZSBkb2Vzbid0IGludGVyc2VjdCBh
bnkgcG9pbnQuCisgICAgRVhQRUNUX0ZBTFNFKENDTGF5ZXJTb3J0ZXI6OnBvaW50SW5Ucmlhbmds
ZShGbG9hdFBvaW50KDE1LjAsIDEwLjApLCBhLCBiLCBGbG9hdFBvaW50KDIwLjAsIDEwLjApKSk7
Cit9CisKK1RFU1QoQ0NMYXllclNvcnRlclRlc3QsIENhbGN1bGF0ZVpEaWZmKQoreworICAgIC8v
IFRoaXMgc2hvdWxkIGJlIGJpZ2dlciB0aGFuIHRoZSByYW5nZSBvZiB6IHZhbHVlcyB1c2VkLgor
ICAgIGNvbnN0IGZsb2F0IHRocmVzaG9sZCA9IDEwLjA7CisKKyAgICAvLyBUcml2aWFsIHRlc3Qs
IHdpdGggb25lIGxheWVyIGRpcmVjdGx5IG9ic2N1cmluZyB0aGUgb3RoZXIuCisKKyAgICBDQ0xh
eWVyU29ydGVyOjpMYXllclNoYXBlIGZyb250KAorICAgICAgICBGbG9hdFBvaW50M0QoLTEuMCwg
IDEuMCwgNS4wKSwKKyAgICAgICAgRmxvYXRQb2ludDNEKCAxLjAsICAxLjAsIDUuMCksCisgICAg
ICAgIEZsb2F0UG9pbnQzRCggMS4wLCAtMS4wLCA1LjApLAorICAgICAgICBGbG9hdFBvaW50M0Qo
LTEuMCwgLTEuMCwgNS4wKSk7CisKKyAgICBDQ0xheWVyU29ydGVyOjpMYXllclNoYXBlIGJhY2so
CisgICAgICAgIEZsb2F0UG9pbnQzRCgtMS4wLCAgMS4wLCA0LjApLAorICAgICAgICBGbG9hdFBv
aW50M0QoIDEuMCwgIDEuMCwgNC4wKSwKKyAgICAgICAgRmxvYXRQb2ludDNEKCAxLjAsIC0xLjAs
IDQuMCksCisgICAgICAgIEZsb2F0UG9pbnQzRCgtMS4wLCAtMS4wLCA0LjApKTsKKworICAgIEVY
UEVDVF9HVChDQ0xheWVyU29ydGVyOjpjYWxjdWxhdGVaRGlmZihmcm9udCwgYmFjaywgdGhyZXNo
b2xkKSwgMC4wKTsKKyAgICBFWFBFQ1RfTFQoQ0NMYXllclNvcnRlcjo6Y2FsY3VsYXRlWkRpZmYo
YmFjaywgZnJvbnQsIHRocmVzaG9sZCksIDAuMCk7CisKKyAgICAvLyBXaGVuIGNvbXBhcmluZyBh
IGxheWVyIHdpdGggaXRzZWxmLCB6RGlmZiBpcyBhbHdheXMgMC4KKyAgICBFWFBFQ1RfRVEoQ0NM
YXllclNvcnRlcjo6Y2FsY3VsYXRlWkRpZmYoZnJvbnQsIGZyb250LCB0aHJlc2hvbGQpLCAwLjAp
OworICAgIEVYUEVDVF9FUShDQ0xheWVyU29ydGVyOjpjYWxjdWxhdGVaRGlmZihiYWNrLCBiYWNr
LCB0aHJlc2hvbGQpLCAwLjApOworCisgICAgLy8gU2FtZSBhZ2FpbiBidXQgd2l0aCB0d28gbGF5
ZXJzIHRoYXQgaW50ZXJzZWN0IG9ubHkgYXQgb25lIHBvaW50ICgwLDApLgorICAgIC8vIFRoaXMg
KmRvZXMqIGNvdW50IGFzIG9ic2N1cmluZywgc28gd2Ugc2hvdWxkIGdldCB0aGUgc2FtZSByZXN1
bHRzLgorCisgICAgZnJvbnQgPSBDQ0xheWVyU29ydGVyOjpMYXllclNoYXBlKAorICAgICAgICBG
bG9hdFBvaW50M0QoLTEuMCwgIDAuMCwgNS4wKSwKKyAgICAgICAgRmxvYXRQb2ludDNEKCAwLjAs
ICAwLjAsIDUuMCksCisgICAgICAgIEZsb2F0UG9pbnQzRCggMC4wLCAtMS4wLCA1LjApLAorICAg
ICAgICBGbG9hdFBvaW50M0QoLTEuMCwgLTEuMCwgNS4wKSk7CisKKyAgICBiYWNrID0gQ0NMYXll
clNvcnRlcjo6TGF5ZXJTaGFwZSgKKyAgICAgICAgRmxvYXRQb2ludDNEKDAuMCwgMS4wLCA0LjAp
LAorICAgICAgICBGbG9hdFBvaW50M0QoMS4wLCAxLjAsIDQuMCksCisgICAgICAgIEZsb2F0UG9p
bnQzRCgxLjAsIDAuMCwgNC4wKSwKKyAgICAgICAgRmxvYXRQb2ludDNEKDAuMCwgMC4wLCA0LjAp
KTsKKworICAgIEVYUEVDVF9HVChDQ0xheWVyU29ydGVyOjpjYWxjdWxhdGVaRGlmZihmcm9udCwg
YmFjaywgdGhyZXNob2xkKSwgMC4wKTsKKyAgICBFWFBFQ1RfTFQoQ0NMYXllclNvcnRlcjo6Y2Fs
Y3VsYXRlWkRpZmYoYmFjaywgZnJvbnQsIHRocmVzaG9sZCksIDAuMCk7CisgICAgRVhQRUNUX0VR
KENDTGF5ZXJTb3J0ZXI6OmNhbGN1bGF0ZVpEaWZmKGZyb250LCBmcm9udCwgdGhyZXNob2xkKSwg
MC4wKTsKKyAgICBFWFBFQ1RfRVEoQ0NMYXllclNvcnRlcjo6Y2FsY3VsYXRlWkRpZmYoYmFjaywg
YmFjaywgdGhyZXNob2xkKSwgMC4wKTsKKworICAgIC8vIFRyaWNraWVyIHRlc3Qgd2l0aCBsYXll
cnMgYXQgYW4gYW5nbGUuCisgICAgLy8KKyAgICAvLyAgIC14IC4gLiAuIC4gMCAuIC4gLiAuICt4
CisgICAgLy8gLXogICAgICAgICAgICAgLworICAgIC8vICA6ICAgICAgICAgICAtLy0tLS1CLS0t
LQorICAgIC8vICAwICAgICAgICAgICBDCisgICAgLy8gIDogLS0tLUEtLS0tLy0KKyAgICAvLyAr
eiAgICAgICAgIC8KKyAgICAvLworICAgIC8vIEMgaXMgaW4gZnJvbnQgb2YgQSBhbmQgYmVoaW5k
IEIgKG5vdCB3aGF0IHlvdSdkIGV4cGVjdCBieSBjb21wYXJpbmcgY2VudGVycykuCisgICAgLy8g
VGhlIHNtYWxsIGludGVyc2VjdGlvbnMgYXJlIGlnbm9yZWQgYmVjYXVzZSB0aGV5J3JlIGJlbG93
IHRoZSB0aHJlc2hvbGQuCisgICAgLy8gQSBhbmQgQiBkb24ndCBvdmVybGFwLCBzbyB0aGV5J3Jl
IGluY29tcGFyYWJsZSAoekRpZmYgPSAwKS4KKworICAgIGNvbnN0IGZsb2F0IHlIaSA9IDEwLjA7
CisgICAgY29uc3QgZmxvYXQgeUxvID0gLTEwLjA7CisgICAgY29uc3QgZmxvYXQgekEgPSAxLjA7
CisgICAgY29uc3QgZmxvYXQgekIgPSAtMS4wOworCisgICAgQ0NMYXllclNvcnRlcjo6TGF5ZXJT
aGFwZSBsYXllckEoCisgICAgICAgIEZsb2F0UG9pbnQzRCgtMTAuMCwgeUhpLCB6QSksCisgICAg
ICAgIEZsb2F0UG9pbnQzRCggLTAuMSwgeUhpLCB6QSksCisgICAgICAgIEZsb2F0UG9pbnQzRCgg
LTAuMSwgeUxvLCB6QSksCisgICAgICAgIEZsb2F0UG9pbnQzRCgtMTAuMCwgeUxvLCB6QSkpOwor
CisgICAgQ0NMYXllclNvcnRlcjo6TGF5ZXJTaGFwZSBsYXllckIoCisgICAgICAgIEZsb2F0UG9p
bnQzRCggMC4xLCB5SGksIHpCKSwKKyAgICAgICAgRmxvYXRQb2ludDNEKDEwLjAsIHlIaSwgekIp
LAorICAgICAgICBGbG9hdFBvaW50M0QoMTAuMCwgeUxvLCB6QiksCisgICAgICAgIEZsb2F0UG9p
bnQzRCggMC4xLCB5TG8sIHpCKSk7CisKKyAgICBDQ0xheWVyU29ydGVyOjpMYXllclNoYXBlIGxh
eWVyQygKKyAgICAgICAgRmxvYXRQb2ludDNEKC01LjAsIHlIaSwgIDUuMCksCisgICAgICAgIEZs
b2F0UG9pbnQzRCggNS4wLCB5SGksIC01LjApLAorICAgICAgICBGbG9hdFBvaW50M0QoIDUuMCwg
eUxvLCAtNS4wKSwKKyAgICAgICAgRmxvYXRQb2ludDNEKC01LjAsIHlMbywgIDUuMCkpOworCisg
ICAgRVhQRUNUX0VRKENDTGF5ZXJTb3J0ZXI6OmNhbGN1bGF0ZVpEaWZmKGxheWVyQSwgbGF5ZXJB
LCB0aHJlc2hvbGQpLCAwLjApOworICAgIEVYUEVDVF9FUShDQ0xheWVyU29ydGVyOjpjYWxjdWxh
dGVaRGlmZihsYXllckEsIGxheWVyQiwgdGhyZXNob2xkKSwgMC4wKTsKKyAgICBFWFBFQ1RfTFQo
Q0NMYXllclNvcnRlcjo6Y2FsY3VsYXRlWkRpZmYobGF5ZXJBLCBsYXllckMsIHRocmVzaG9sZCks
IDAuMCk7CisKKyAgICBFWFBFQ1RfRVEoQ0NMYXllclNvcnRlcjo6Y2FsY3VsYXRlWkRpZmYobGF5
ZXJCLCBsYXllckEsIHRocmVzaG9sZCksIDAuMCk7CisgICAgRVhQRUNUX0VRKENDTGF5ZXJTb3J0
ZXI6OmNhbGN1bGF0ZVpEaWZmKGxheWVyQiwgbGF5ZXJCLCB0aHJlc2hvbGQpLCAwLjApOworICAg
IEVYUEVDVF9HVChDQ0xheWVyU29ydGVyOjpjYWxjdWxhdGVaRGlmZihsYXllckIsIGxheWVyQywg
dGhyZXNob2xkKSwgMC4wKTsKKworICAgIEVYUEVDVF9HVChDQ0xheWVyU29ydGVyOjpjYWxjdWxh
dGVaRGlmZihsYXllckMsIGxheWVyQSwgdGhyZXNob2xkKSwgMC4wKTsKKyAgICBFWFBFQ1RfTFQo
Q0NMYXllclNvcnRlcjo6Y2FsY3VsYXRlWkRpZmYobGF5ZXJDLCBsYXllckIsIHRocmVzaG9sZCks
IDAuMCk7CisgICAgRVhQRUNUX0VRKENDTGF5ZXJTb3J0ZXI6OmNhbGN1bGF0ZVpEaWZmKGxheWVy
QywgbGF5ZXJDLCB0aHJlc2hvbGQpLCAwLjApOworfQorCit9IC8vIG5hbWVzcGFjZQoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyU29ydGVy
VGVzdC5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108657</attachid>
            <date>2011-09-26 06:02:50 -0700</date>
            <delta_ts>2011-09-27 10:07:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68622-20110926140248.patch</filename>
            <type>text/plain</type>
            <size>18929</size>
            <attacher name="Iain Merrick">husky</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1OTQ0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDktMjYgIElhaW4gTWVy
cmljayAgPGh1c2t5QGdvb2dsZS5jb20+CisKKyAgICAgICAgQWRkIHVuaXQgdGVzdCBmb3IgQ0NM
YXllclNvcnRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Njg2MjIKKworICAgICAgICBNaW5vciByZWZhY3RvcmluZyBmb3IgdGVzdGFiaWxpdHk6Cisg
ICAgICAgIC0gTWFkZSBwb2ludEluVHJpYW5nbGUgcHVibGljLgorICAgICAgICAtIEFkZGVkIExh
eWVyU2hhcGUgdG8gZGVjb3VwbGUgTGF5ZXJJbnRlcnNlY3RvciBhbmQgR3JhcGhOb2RlLgorICAg
ICAgICAtIEFkZGVkIGEgcHVibGljIHdyYXBwZXIgZnVuY3Rpb24gZm9yIExheWVySW50ZXJzZWN0
b3IuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyU29ydGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJTb3J0ZXI6OnBvaW50SW5UcmlhbmdsZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyU29ydGVyOjpjYWxjdWxhdGVaRGlmZik6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyU29ydGVyOjpMYXllckludGVyc2VjdG9yOjpMYXllckludGVyc2VjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJTb3J0ZXI6OkxheWVySW50ZXJzZWN0b3I6OmdvKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJTb3J0ZXI6OkxheWVySW50ZXJzZWN0b3I6OmNoZWNrWkRpZmYp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclNvcnRlcjo6TGF5ZXJJbnRlcnNlY3Rvcjo6bGF5
ZXJaRnJvbVByb2plY3RlZFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJTb3J0ZXI6
OmNoZWNrT3ZlcmxhcCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyU29ydGVyOjpMYXllclNo
YXBlOjpMYXllclNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJTb3J0ZXI6OmNyZWF0
ZUdyYXBoTm9kZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJTb3J0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJTb3J0ZXI6OkxheWVyU2hh
cGU6OkxheWVyU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclNvcnRlcjo6R3JhcGhO
b2RlOjpHcmFwaE5vZGUpOgorCiAyMDExLTA5LTI2ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW0V4dGVuc2lvbnMgQVBJXSBh
bGxvdyByZXNvdXJjZXMgdG8gaG9vayBvbiBjbGljayBvbiByZXNvdXJjZSBsaW5rcwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclNvcnRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclNvcnRlci5jcHAJKHJldmlzaW9uIDk1OTQ0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclNvcnRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDEwICs0NSwxMCBAQCBzdGF0aWMgV1RGTG9nQ2hhbm5lbCBMb2dD
Q0xheWVyU29ydGVyID0gCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgcG9p
bnRJblRyaWFuZ2xlKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgRmxvYXRQb2ludCYgYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBGbG9hdFBvaW50JiBjKQorYm9vbCBDQ0xheWVyU29ydGVyOjpwb2ludEluVHJpYW5nbGUoY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBGbG9hdFBvaW50JiBhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgRmxvYXRQb2ludCYgYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEZsb2F0UG9pbnQmIGMpCiB7CiAgICAgLy8gQWxnb3JpdGhtIGZyb20gaHR0cDov
L3d3dy5ibGFja3Bhd24uY29tL3RleHRzL3BvaW50aW5wb2x5L2RlZmF1bHQuaHRtbAogICAgIGZs
b2F0IHgwID0gYy54KCkgLSBhLngoKTsKQEAgLTE0Myw5ICsxNDMsMTYgQEAgc3RhdGljIGJvb2wg
ZWRnZUVkZ2VUZXN0KGNvbnN0IEZsb2F0UG9pbgogICAgIHJldHVybiB0cnVlOwogfQogCi1DQ0xh
eWVyU29ydGVyOjpMYXllckludGVyc2VjdG9yOjpMYXllckludGVyc2VjdG9yKEdyYXBoTm9kZSog
bm9kZUEsIEdyYXBoTm9kZSogbm9kZUIsIGZsb2F0IGVhcmx5RXhpdFRocmVzaG9sZCkKLSAgICA6
IG5vZGVBKG5vZGVBKQotICAgICwgbm9kZUIobm9kZUIpCitmbG9hdCBDQ0xheWVyU29ydGVyOjpj
YWxjdWxhdGVaRGlmZihjb25zdCBMYXllclNoYXBlJiBsYXllckEsIGNvbnN0IExheWVyU2hhcGUm
IGxheWVyQiwgZmxvYXQgZWFybHlFeGl0VGhyZXNob2xkKQoreworICAgIExheWVySW50ZXJzZWN0
b3IgaW50ZXJzZWN0b3IobGF5ZXJBLCBsYXllckIsIGVhcmx5RXhpdFRocmVzaG9sZCk7CisgICAg
aW50ZXJzZWN0b3IuZ28oKTsKKyAgICByZXR1cm4gaW50ZXJzZWN0b3IuekRpZmY7Cit9CisKK0ND
TGF5ZXJTb3J0ZXI6OkxheWVySW50ZXJzZWN0b3I6OkxheWVySW50ZXJzZWN0b3IoY29uc3QgTGF5
ZXJTaGFwZSYgbGF5ZXJBLCBjb25zdCBMYXllclNoYXBlJiBsYXllckIsIGZsb2F0IGVhcmx5RXhp
dFRocmVzaG9sZCkKKyAgICA6IGxheWVyQShsYXllckEpCisgICAgLCBsYXllckIobGF5ZXJCKQog
ICAgICwgekRpZmYoMCkKICAgICAsIGVhcmx5RXhpdFRocmVzaG9sZChlYXJseUV4aXRUaHJlc2hv
bGQpCiB7CkBAIC0xNTMsMTMgKzE2MCwxMiBAQCBDQ0xheWVyU29ydGVyOjpMYXllckludGVyc2Vj
dG9yOjpMYXllckluCiAKIHZvaWQgQ0NMYXllclNvcnRlcjo6TGF5ZXJJbnRlcnNlY3Rvcjo6Z28o
KQogewotICAgICh0cmlhbmdsZVRyaWFuZ2xlVGVzdChub2RlQS0+YzEsIG5vZGVBLT5jMiwgbm9k
ZUEtPmMzLCBub2RlQi0+YzEsIG5vZGVCLT5jMiwgbm9kZUItPmMzKQotICAgICB8fCB0cmlhbmds
ZVRyaWFuZ2xlVGVzdChub2RlQS0+YzMsIG5vZGVBLT5jNCwgbm9kZUEtPmMxLCBub2RlQi0+YzEs
IG5vZGVCLT5jMiwgbm9kZUItPmMzKQotICAgICB8fCB0cmlhbmdsZVRyaWFuZ2xlVGVzdChub2Rl
QS0+YzEsIG5vZGVBLT5jMiwgbm9kZUEtPmMzLCBub2RlQi0+YzMsIG5vZGVCLT5jNCwgbm9kZUIt
PmMxKQotICAgICB8fCB0cmlhbmdsZVRyaWFuZ2xlVGVzdChub2RlQS0+YzMsIG5vZGVBLT5jNCwg
bm9kZUEtPmMxLCBub2RlQi0+YzMsIG5vZGVCLT5jNCwgbm9kZUItPmMxKSk7CisgICAgKHRyaWFu
Z2xlVHJpYW5nbGVUZXN0KGxheWVyQS5jMSwgbGF5ZXJBLmMyLCBsYXllckEuYzMsIGxheWVyQi5j
MSwgbGF5ZXJCLmMyLCBsYXllckIuYzMpCisgICAgIHx8IHRyaWFuZ2xlVHJpYW5nbGVUZXN0KGxh
eWVyQS5jMywgbGF5ZXJBLmM0LCBsYXllckEuYzEsIGxheWVyQi5jMSwgbGF5ZXJCLmMyLCBsYXll
ckIuYzMpCisgICAgIHx8IHRyaWFuZ2xlVHJpYW5nbGVUZXN0KGxheWVyQS5jMSwgbGF5ZXJBLmMy
LCBsYXllckEuYzMsIGxheWVyQi5jMywgbGF5ZXJCLmM0LCBsYXllckIuYzEpCisgICAgIHx8IHRy
aWFuZ2xlVHJpYW5nbGVUZXN0KGxheWVyQS5jMywgbGF5ZXJBLmM0LCBsYXllckEuYzEsIGxheWVy
Qi5jMywgbGF5ZXJCLmM0LCBsYXllckIuYzEpKTsKIH0KIAotCiAvLyBDaGVja3MgaWYgc2VnbWVu
dCBwcSBpbnRlcnNlY3RzIGFueSBvZiB0aGUgc2lkZXMgb2YgdHJpYW5nbGUgYWJjLgogYm9vbCBD
Q0xheWVyU29ydGVyOjpMYXllckludGVyc2VjdG9yOjplZGdlVHJpYW5nbGVUZXN0KGNvbnN0IEZs
b2F0UG9pbnQmIHAsIGNvbnN0IEZsb2F0UG9pbnQmIHEsIGNvbnN0IEZsb2F0UG9pbnQmIGEsIGNv
bnN0IEZsb2F0UG9pbnQmIGIsIGNvbnN0IEZsb2F0UG9pbnQmIGMpCiB7CkBAIC0yMDQsOCArMjEw
LDggQEAgYm9vbCBDQ0xheWVyU29ydGVyOjpMYXllckludGVyc2VjdG9yOjp0cgogLy8gb3RoZXIg
aW50ZXJzZWN0aW9uIHBvaW50cy4KIGJvb2wgQ0NMYXllclNvcnRlcjo6TGF5ZXJJbnRlcnNlY3Rv
cjo6Y2hlY2taRGlmZihjb25zdCBGbG9hdFBvaW50JiBwKQogewotICAgIGZsb2F0IHphID0gbGF5
ZXJaRnJvbVByb2plY3RlZFBvaW50KG5vZGVBLCBwKTsKLSAgICBmbG9hdCB6YiA9IGxheWVyWkZy
b21Qcm9qZWN0ZWRQb2ludChub2RlQiwgcCk7CisgICAgZmxvYXQgemEgPSBsYXllclpGcm9tUHJv
amVjdGVkUG9pbnQobGF5ZXJBLCBwKTsKKyAgICBmbG9hdCB6YiA9IGxheWVyWkZyb21Qcm9qZWN0
ZWRQb2ludChsYXllckIsIHApOwogCiAgICAgZmxvYXQgZGlmZiA9IHphIC0gemI7CiAgICAgZmxv
YXQgYWJzRGlmZiA9IGZhYnNmKGRpZmYpOwpAQCAtMjI1LDE3ICsyMzEsMTcgQEAgYm9vbCBDQ0xh
eWVyU29ydGVyOjpMYXllckludGVyc2VjdG9yOjpjaAogLy8gdG8gcG9pbnQgcCB3aGljaCBsaWVz
IG9uIHRoZSB6ID0gMCBwbGFuZS4gSXQgZG9lcyBpdCBieSBjb21wdXRpbmcgdGhlCiAvLyBpbnRl
cnNlY3Rpb24gb2YgYSBsaW5lIHN0YXJ0aW5nIGZyb20gcCBhbG9uZyB0aGUgWiBheGlzIGFuZCB0
aGUgcGxhbmUKIC8vIG9mIHRoZSBsYXllci4KLWZsb2F0IENDTGF5ZXJTb3J0ZXI6OkxheWVySW50
ZXJzZWN0b3I6OmxheWVyWkZyb21Qcm9qZWN0ZWRQb2ludChHcmFwaE5vZGUqIGxheWVyLCBjb25z
dCBGbG9hdFBvaW50JiBwKQorZmxvYXQgQ0NMYXllclNvcnRlcjo6TGF5ZXJJbnRlcnNlY3Rvcjo6
bGF5ZXJaRnJvbVByb2plY3RlZFBvaW50KGNvbnN0IExheWVyU2hhcGUmIGxheWVyLCBjb25zdCBG
bG9hdFBvaW50JiBwKQogewogICAgIGNvbnN0IEZsb2F0UG9pbnQzRCB6QXhpcygwLCAwLCAxKTsK
LSAgICBGbG9hdFBvaW50M0QgdyA9IEZsb2F0UG9pbnQzRChwLngoKSwgcC55KCksIDApIC0gbGF5
ZXItPm9yaWdpbjsKKyAgICBGbG9hdFBvaW50M0QgdyA9IEZsb2F0UG9pbnQzRChwLngoKSwgcC55
KCksIDApIC0gbGF5ZXIub3JpZ2luOwogCi0gICAgZmxvYXQgZCA9IGxheWVyLT5ub3JtYWwuZG90
KHpBeGlzKTsKLSAgICBmbG9hdCBuID0gLWxheWVyLT5ub3JtYWwuZG90KHcpOworICAgIGZsb2F0
IGQgPSBsYXllci5ub3JtYWwuZG90KHpBeGlzKTsKKyAgICBmbG9hdCBuID0gLWxheWVyLm5vcm1h
bC5kb3Qodyk7CiAKICAgICAvLyBDaGVjayBpZiBsYXllciBpcyBwYXJhbGxlbCB0byB0aGUgeiA9
IDAgYXhpcwogICAgIGlmICghZCkKLSAgICAgICAgcmV0dXJuIGxheWVyLT5vcmlnaW4ueigpOwor
ICAgICAgICByZXR1cm4gbGF5ZXIub3JpZ2luLnooKTsKIAogICAgIC8vIFRoZSBpbnRlcnNlY3Rp
b24gcG9pbnQgd291bGQgYmUgZ2l2ZW4gYnk6CiAgICAgLy8gcCArIChuIC8gZCkgKiB1ICBidXQg
c2luY2Ugd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgCkBAIC0yNDMsNyArMjQ5LDYgQEAg
ZmxvYXQgQ0NMYXllclNvcnRlcjo6TGF5ZXJJbnRlcnNlY3Rvcjo6bAogICAgIHJldHVybiBuIC8g
ZDsKIH0KIAotCiBDQ0xheWVyU29ydGVyOjpDQ0xheWVyU29ydGVyKCkKICAgICA6IG1felJhbmdl
KDApCiB7CkBAIC0yNTEsMjMgKzI1NiwzMiBAQCBDQ0xheWVyU29ydGVyOjpDQ0xheWVyU29ydGVy
KCkKIAogQ0NMYXllclNvcnRlcjo6QUJDb21wYXJlUmVzdWx0IENDTGF5ZXJTb3J0ZXI6OmNoZWNr
T3ZlcmxhcChHcmFwaE5vZGUqIGEsIEdyYXBoTm9kZSogYikKIHsKLSAgICBpZiAoIWEtPmJvdW5k
aW5nQm94LmludGVyc2VjdHMoYi0+Ym91bmRpbmdCb3gpKQorICAgIGlmICghYS0+c2hhcGUuYm91
bmRpbmdCb3guaW50ZXJzZWN0cyhiLT5zaGFwZS5ib3VuZGluZ0JveCkpCiAgICAgICAgIHJldHVy
biBOb25lOwogCiAgICAgLy8gTWFrZSB0aGUgZWFybHkgZXhpdCB0aHJlc2hvbGQgcHJvcG9ydGlv
bmFsIHRvIHRoZSB0b3RhbCBaIHJhbmdlLgogICAgIGZsb2F0IGV4aXRUaHJlc2hvbGQgPSBtX3pS
YW5nZSAqIDAuMDE7CisgICAgZmxvYXQgekRpZmYgPSBjYWxjdWxhdGVaRGlmZihhLT5zaGFwZSwg
Yi0+c2hhcGUsIGV4aXRUaHJlc2hvbGQpOwogCi0gICAgTGF5ZXJJbnRlcnNlY3RvciBpbnRlcnNl
Y3RvcihhLCBiLCBleGl0VGhyZXNob2xkKTsKLSAgICBpbnRlcnNlY3Rvci5nbygpOwotCi0gICAg
aWYgKGludGVyc2VjdG9yLnpEaWZmID4gMCkKKyAgICBpZiAoekRpZmYgPiAwKQogICAgICAgICBy
ZXR1cm4gQkJlZm9yZUE7Ci0gICAgaWYgKGludGVyc2VjdG9yLnpEaWZmIDwgMCkKKyAgICBpZiAo
ekRpZmYgPCAwKQogICAgICAgICByZXR1cm4gQUJlZm9yZUI7CiAKICAgICByZXR1cm4gTm9uZTsK
IH0KIAorQ0NMYXllclNvcnRlcjo6TGF5ZXJTaGFwZTo6TGF5ZXJTaGFwZShjb25zdCBGbG9hdFBv
aW50M0QmIHAxLCBjb25zdCBGbG9hdFBvaW50M0QmIHAyLCBjb25zdCBGbG9hdFBvaW50M0QmIHAz
LCBjb25zdCBGbG9hdFBvaW50M0QmIHA0KQorICAgIDogbm9ybWFsKChwMiAtIHAxKS5jcm9zcyhw
MyAtIHAxKSkKKyAgICAsIGMxKEZsb2F0UG9pbnQocDEueCgpLCBwMS55KCkpKQorICAgICwgYzIo
RmxvYXRQb2ludChwMi54KCksIHAyLnkoKSkpCisgICAgLCBjMyhGbG9hdFBvaW50KHAzLngoKSwg
cDMueSgpKSkKKyAgICAsIGM0KEZsb2F0UG9pbnQocDQueCgpLCBwNC55KCkpKQorICAgICwgb3Jp
Z2luKHAxKQoreworICAgIGJvdW5kaW5nQm94LmZpdFRvUG9pbnRzKGMxLCBjMiwgYzMsIGM0KTsK
K30KKwogdm9pZCBDQ0xheWVyU29ydGVyOjpjcmVhdGVHcmFwaE5vZGVzKExheWVyTGlzdDo6aXRl
cmF0b3IgZmlyc3QsIExheWVyTGlzdDo6aXRlcmF0b3IgbGFzdCkKIHsKICNpZiAhZGVmaW5lZCgg
TkRFQlVHICkKQEAgLTMwMiwxMyArMzE2LDcgQEAgdm9pZCBDQ0xheWVyU29ydGVyOjpjcmVhdGVH
cmFwaE5vZGVzKExheQogICAgICAgICBGbG9hdFBvaW50M0QgYzIgPSBkcmF3VHJhbnNmb3JtLm1h
cFBvaW50KEZsb2F0UG9pbnQzRChsYXllcldpZHRoLCBsYXllckhlaWdodCwgMCkpOwogICAgICAg
ICBGbG9hdFBvaW50M0QgYzMgPSBkcmF3VHJhbnNmb3JtLm1hcFBvaW50KEZsb2F0UG9pbnQzRChs
YXllcldpZHRoLCAtbGF5ZXJIZWlnaHQsIDApKTsKICAgICAgICAgRmxvYXRQb2ludDNEIGM0ID0g
ZHJhd1RyYW5zZm9ybS5tYXBQb2ludChGbG9hdFBvaW50M0QoLWxheWVyV2lkdGgsIC1sYXllckhl
aWdodCwgMCkpOwotICAgICAgICBub2RlLm5vcm1hbCA9IChjMiAtIGMxKS5jcm9zcyhjMyAtIGMx
KTsKLSAgICAgICAgbm9kZS5jMSA9IEZsb2F0UG9pbnQoYzEueCgpLCBjMS55KCkpOwotICAgICAg
ICBub2RlLmMyID0gRmxvYXRQb2ludChjMi54KCksIGMyLnkoKSk7Ci0gICAgICAgIG5vZGUuYzMg
PSBGbG9hdFBvaW50KGMzLngoKSwgYzMueSgpKTsKLSAgICAgICAgbm9kZS5jNCA9IEZsb2F0UG9p
bnQoYzQueCgpLCBjNC55KCkpOwotICAgICAgICBub2RlLm9yaWdpbiA9IGMxOwotICAgICAgICBu
b2RlLmJvdW5kaW5nQm94LmZpdFRvUG9pbnRzKG5vZGUuYzEsIG5vZGUuYzIsIG5vZGUuYzMsIG5v
ZGUuYzQpOworICAgICAgICBub2RlLnNoYXBlID0gTGF5ZXJTaGFwZShjMSwgYzIsIGMzLCBjNCk7
CiAgICAgCiAgICAgICAgIG1heFogPSBtYXgoYzQueigpLCBtYXgoYzMueigpLCBtYXgoYzIueigp
LCBtYXgobWF4WiwgYzEueigpKSkpKTsKICAgICAgICAgbWluWiA9IG1pbihjNC56KCksIG1pbihj
My56KCksIG1pbihjMi56KCksIG1pbihtaW5aLCBjMS56KCkpKSkpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclNvcnRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJTb3J0ZXIuaAkocmV2aXNpb24gOTU5NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyU29ydGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDE2ICs0MiwzMSBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPENDTGF5
ZXJJbXBsPiA+IExheWVyTGlzdDsKIAogICAgIHZvaWQgc29ydChMYXllckxpc3Q6Oml0ZXJhdG9y
IGZpcnN0LCBMYXllckxpc3Q6Oml0ZXJhdG9yIGxhc3QpOworCisgICAgLy8gSGVscGVyIG1ldGhv
ZHMsIHB1YmxpYyBmb3IgdW5pdCB0ZXN0aW5nLgorICAgIHN0YXRpYyBib29sIHBvaW50SW5Ucmlh
bmdsZShjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9p
bnQmLCBjb25zdCBGbG9hdFBvaW50Jik7CisKKyAgICAvLyBIb2xkcyB2YXJpb3VzIHVzZWZ1bCBw
cm9wZXJ0aWVzIGRlcml2ZWQgZnJvbSBhIGxheWVyJ3MgM0Qgb3V0bGluZS4KKyAgICBzdHJ1Y3Qg
TGF5ZXJTaGFwZSB7CisgICAgICAgIExheWVyU2hhcGUoKSB7IH0KKyAgICAgICAgTGF5ZXJTaGFw
ZShjb25zdCBGbG9hdFBvaW50M0QmLCBjb25zdCBGbG9hdFBvaW50M0QmLCBjb25zdCBGbG9hdFBv
aW50M0QmLCBjb25zdCBGbG9hdFBvaW50M0QmKTsKKworICAgICAgICBGbG9hdFBvaW50M0Qgbm9y
bWFsOworICAgICAgICBGbG9hdFBvaW50IGMxLCBjMiwgYzMsIGM0OworICAgICAgICBGbG9hdFBv
aW50M0Qgb3JpZ2luOworICAgICAgICBGbG9hdFJlY3QgYm91bmRpbmdCb3g7CisgICAgfTsKKwor
ICAgIHN0YXRpYyBmbG9hdCBjYWxjdWxhdGVaRGlmZihjb25zdCBMYXllclNoYXBlJiwgY29uc3Qg
TGF5ZXJTaGFwZSYsIGZsb2F0IGVhcmx5RXhpdFRocmVzaG9sZCk7CisKIHByaXZhdGU6CiAgICAg
c3RydWN0IEdyYXBoRWRnZTsKIAogICAgIHN0cnVjdCBHcmFwaE5vZGUgewotICAgICAgICBHcmFw
aE5vZGUoQ0NMYXllckltcGwqIGNjbGF5ZXIpIDogbGF5ZXIoY2NsYXllcikgeyB9OworICAgICAg
ICBleHBsaWNpdCBHcmFwaE5vZGUoQ0NMYXllckltcGwqIGNjbGF5ZXIpIDogbGF5ZXIoY2NsYXll
cikgeyB9CisKICAgICAgICAgQ0NMYXllckltcGwqIGxheWVyOwotICAgICAgICBGbG9hdFBvaW50
IGMxLCBjMiwgYzMsIGM0OwotICAgICAgICBGbG9hdFBvaW50M0Qgbm9ybWFsOwotICAgICAgICBG
bG9hdFBvaW50M0Qgb3JpZ2luOwotICAgICAgICBGbG9hdFJlY3QgYm91bmRpbmdCb3g7CisgICAg
ICAgIExheWVyU2hhcGUgc2hhcGU7CiAgICAgICAgIFZlY3RvcjxHcmFwaEVkZ2UqPiBpbmNvbWlu
ZzsKICAgICAgICAgVmVjdG9yPEdyYXBoRWRnZSo+IG91dGdvaW5nOwogICAgIH07CkBAIC02NCwx
OCArNzksMTggQEAgcHJpdmF0ZToKICAgICB9OwogCiAgICAgc3RydWN0IExheWVySW50ZXJzZWN0
b3IgewotICAgICAgICBMYXllckludGVyc2VjdG9yKEdyYXBoTm9kZSosIEdyYXBoTm9kZSosIGZs
b2F0KTsKKyAgICAgICAgTGF5ZXJJbnRlcnNlY3Rvcihjb25zdCBMYXllclNoYXBlJiwgY29uc3Qg
TGF5ZXJTaGFwZSYsIGZsb2F0KTsKIAogICAgICAgICB2b2lkIGdvKCk7CiAKLSAgICAgICAgZmxv
YXQgbGF5ZXJaRnJvbVByb2plY3RlZFBvaW50KEdyYXBoTm9kZSosIGNvbnN0IEZsb2F0UG9pbnQm
KTsKKyAgICAgICAgZmxvYXQgbGF5ZXJaRnJvbVByb2plY3RlZFBvaW50KGNvbnN0IExheWVyU2hh
cGUmLCBjb25zdCBGbG9hdFBvaW50Jik7CiAgICAgICAgIGJvb2wgdHJpYW5nbGVUcmlhbmdsZVRl
c3QoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50
JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50
Jik7CiAgICAgICAgIGJvb2wgZWRnZVRyaWFuZ2xlVGVzdChjb25zdCBGbG9hdFBvaW50JiwgY29u
c3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JiwgY29u
c3QgRmxvYXRQb2ludCYpOwogICAgICAgICBib29sIGNoZWNrWkRpZmYoY29uc3QgRmxvYXRQb2lu
dCYpOwogCiAgICAgICAgIEZsb2F0UG9pbnQgaW50ZXJzZWN0aW9uUG9pbnQ7Ci0gICAgICAgIEdy
YXBoTm9kZSogbm9kZUE7Ci0gICAgICAgIEdyYXBoTm9kZSogbm9kZUI7CisgICAgICAgIGNvbnN0
IExheWVyU2hhcGUmIGxheWVyQTsKKyAgICAgICAgY29uc3QgTGF5ZXJTaGFwZSYgbGF5ZXJCOwog
ICAgICAgICBmbG9hdCB6RGlmZjsKICAgICAgICAgZmxvYXQgZWFybHlFeGl0VGhyZXNob2xkOwog
ICAgIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gOTU5NDQpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE0IEBACisyMDExLTA5LTI2ICBJYWluIE1lcnJpY2sgIDxodXNreUBnb29nbGUuY29tPgor
CisgICAgICAgIEFkZCB1bml0IHRlc3QgZm9yIENDTGF5ZXJTb3J0ZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NjIyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAg
KiB0ZXN0cy9DQ0xheWVyU29ydGVyVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
VEVTVCk6CisKIDIwMTEtMDktMjQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBBbHdheXMgZW5hYmxlIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkJKHJldmlzaW9uIDk1OTQ0KQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtNTQsNiAr
NTQsNyBAQAogICAgICAgICAnd2Via2l0X3VuaXR0ZXN0X2ZpbGVzJzogWwogICAgICAgICAgICAg
J3Rlc3RzL0FyZW5hVGVzdEhlbHBlcnMuaCcsCiAgICAgICAgICAgICAndGVzdHMvQXNzb2NpYXRl
ZFVSTExvYWRlclRlc3QuY3BwJywKKyAgICAgICAgICAgICd0ZXN0cy9DQ0xheWVyU29ydGVyVGVz
dC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwJywKICAg
ICAgICAgICAgICd0ZXN0cy9DQ1RocmVhZFRhc2tUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVz
dHMvQ0NUaHJlYWRUZXN0LmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJTb3J0ZXJUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJTb3J0ZXJUZXN0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclNvcnRlclRlc3QuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aW5jbHVkZSAiY2MvQ0NMYXllclNvcnRlci5oIgorCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSB7CisKK1RFU1QoQ0NMYXll
clNvcnRlclRlc3QsIFBvaW50SW5UcmlhbmdsZSkKK3sKKyAgICBGbG9hdFBvaW50IGEoMTAuMCwg
MTAuMCk7CisgICAgRmxvYXRQb2ludCBiKDMwLjAsIDEwLjApOworICAgIEZsb2F0UG9pbnQgYygy
MC4wLCAyMC4wKTsKKworICAgIC8vIFBvaW50IGluIHRoZSBjZW50ZXIgaXMgaW4gdGhlIHRyaWFu
Z2xlLgorICAgIEVYUEVDVF9UUlVFKENDTGF5ZXJTb3J0ZXI6OnBvaW50SW5UcmlhbmdsZShGbG9h
dFBvaW50KDIwLjAsIDE1LjApLCBhLCBiLCBjKSk7CisKKyAgICAvLyBQZXJtdXRpbmcgdGhlIGNv
cm5lcnMgZG9lc24ndCBjaGFuZ2UgdGhlIHJlc3VsdC4KKyAgICBFWFBFQ1RfVFJVRShDQ0xheWVy
U29ydGVyOjpwb2ludEluVHJpYW5nbGUoRmxvYXRQb2ludCgyMC4wLCAxNS4wKSwgYSwgYywgYikp
OworICAgIEVYUEVDVF9UUlVFKENDTGF5ZXJTb3J0ZXI6OnBvaW50SW5UcmlhbmdsZShGbG9hdFBv
aW50KDIwLjAsIDE1LjApLCBiLCBhLCBjKSk7CisgICAgRVhQRUNUX1RSVUUoQ0NMYXllclNvcnRl
cjo6cG9pbnRJblRyaWFuZ2xlKEZsb2F0UG9pbnQoMjAuMCwgMTUuMCksIGIsIGMsIGEpKTsKKyAg
ICBFWFBFQ1RfVFJVRShDQ0xheWVyU29ydGVyOjpwb2ludEluVHJpYW5nbGUoRmxvYXRQb2ludCgy
MC4wLCAxNS4wKSwgYywgYSwgYikpOworICAgIEVYUEVDVF9UUlVFKENDTGF5ZXJTb3J0ZXI6OnBv
aW50SW5UcmlhbmdsZShGbG9hdFBvaW50KDIwLjAsIDE1LjApLCBjLCBiLCBhKSk7CisKKyAgICAv
LyBQb2ludHMgb24gdGhlIGVkZ2VzIGFyZSBub3QgaW4gdGhlIHRyaWFuZ2xlLgorICAgIEVYUEVD
VF9GQUxTRShDQ0xheWVyU29ydGVyOjpwb2ludEluVHJpYW5nbGUoRmxvYXRQb2ludCgyMC4wLCAx
MC4wKSwgYSwgYiwgYykpOworICAgIEVYUEVDVF9GQUxTRShDQ0xheWVyU29ydGVyOjpwb2ludElu
VHJpYW5nbGUoRmxvYXRQb2ludCgxNS4wLCAxNS4wKSwgYSwgYiwgYykpOworICAgIEVYUEVDVF9G
QUxTRShDQ0xheWVyU29ydGVyOjpwb2ludEluVHJpYW5nbGUoRmxvYXRQb2ludCgyNS4wLCAxNS4w
KSwgYSwgYiwgYykpOworCisgICAgLy8gUG9pbnRzIGp1c3QgaW5zaWRlIHRoZSBlZGdlcyBhcmUg
aW4gdGhlIHRyaWFuZ2xlLgorICAgIEVYUEVDVF9UUlVFKENDTGF5ZXJTb3J0ZXI6OnBvaW50SW5U
cmlhbmdsZShGbG9hdFBvaW50KDIwLjAsIDEwLjAxKSwgYSwgYiwgYykpOworICAgIEVYUEVDVF9U
UlVFKENDTGF5ZXJTb3J0ZXI6OnBvaW50SW5UcmlhbmdsZShGbG9hdFBvaW50KDE1LjAxLCAxNS4w
KSwgYSwgYiwgYykpOworICAgIEVYUEVDVF9UUlVFKENDTGF5ZXJTb3J0ZXI6OnBvaW50SW5Ucmlh
bmdsZShGbG9hdFBvaW50KDI0Ljk5LCAxNS4wKSwgYSwgYiwgYykpOworCisgICAgLy8gWmVyby1h
cmVhIHRyaWFuZ2xlIGRvZXNuJ3QgaW50ZXJzZWN0IGFueSBwb2ludC4KKyAgICBFWFBFQ1RfRkFM
U0UoQ0NMYXllclNvcnRlcjo6cG9pbnRJblRyaWFuZ2xlKEZsb2F0UG9pbnQoMTUuMCwgMTAuMCks
IGEsIGIsIEZsb2F0UG9pbnQoMjAuMCwgMTAuMCkpKTsKK30KKworVEVTVChDQ0xheWVyU29ydGVy
VGVzdCwgQ2FsY3VsYXRlWkRpZmYpCit7CisgICAgLy8gVGhpcyBzaG91bGQgYmUgYmlnZ2VyIHRo
YW4gdGhlIHJhbmdlIG9mIHogdmFsdWVzIHVzZWQuCisgICAgY29uc3QgZmxvYXQgdGhyZXNob2xk
ID0gMTAuMDsKKworICAgIC8vIFRyaXZpYWwgdGVzdCwgd2l0aCBvbmUgbGF5ZXIgZGlyZWN0bHkg
b2JzY3VyaW5nIHRoZSBvdGhlci4KKworICAgIENDTGF5ZXJTb3J0ZXI6OkxheWVyU2hhcGUgZnJv
bnQoCisgICAgICAgIEZsb2F0UG9pbnQzRCgtMS4wLCAxLjAsIDUuMCksCisgICAgICAgIEZsb2F0
UG9pbnQzRCgxLjAsIDEuMCwgNS4wKSwKKyAgICAgICAgRmxvYXRQb2ludDNEKDEuMCwgLTEuMCwg
NS4wKSwKKyAgICAgICAgRmxvYXRQb2ludDNEKC0xLjAsIC0xLjAsIDUuMCkpOworCisgICAgQ0NM
YXllclNvcnRlcjo6TGF5ZXJTaGFwZSBiYWNrKAorICAgICAgICBGbG9hdFBvaW50M0QoLTEuMCwg
MS4wLCA0LjApLAorICAgICAgICBGbG9hdFBvaW50M0QoMS4wLCAxLjAsIDQuMCksCisgICAgICAg
IEZsb2F0UG9pbnQzRCgxLjAsIC0xLjAsIDQuMCksCisgICAgICAgIEZsb2F0UG9pbnQzRCgtMS4w
LCAtMS4wLCA0LjApKTsKKworICAgIEVYUEVDVF9HVChDQ0xheWVyU29ydGVyOjpjYWxjdWxhdGVa
RGlmZihmcm9udCwgYmFjaywgdGhyZXNob2xkKSwgMC4wKTsKKyAgICBFWFBFQ1RfTFQoQ0NMYXll
clNvcnRlcjo6Y2FsY3VsYXRlWkRpZmYoYmFjaywgZnJvbnQsIHRocmVzaG9sZCksIDAuMCk7CisK
KyAgICAvLyBXaGVuIGNvbXBhcmluZyBhIGxheWVyIHdpdGggaXRzZWxmLCB6RGlmZiBpcyBhbHdh
eXMgMC4KKyAgICBFWFBFQ1RfRVEoQ0NMYXllclNvcnRlcjo6Y2FsY3VsYXRlWkRpZmYoZnJvbnQs
IGZyb250LCB0aHJlc2hvbGQpLCAwLjApOworICAgIEVYUEVDVF9FUShDQ0xheWVyU29ydGVyOjpj
YWxjdWxhdGVaRGlmZihiYWNrLCBiYWNrLCB0aHJlc2hvbGQpLCAwLjApOworCisgICAgLy8gU2Ft
ZSBhZ2FpbiBidXQgd2l0aCB0d28gbGF5ZXJzIHRoYXQgaW50ZXJzZWN0IG9ubHkgYXQgb25lIHBv
aW50ICgwLDApLgorICAgIC8vIFRoaXMgKmRvZXMqIGNvdW50IGFzIG9ic2N1cmluZywgc28gd2Ug
c2hvdWxkIGdldCB0aGUgc2FtZSByZXN1bHRzLgorCisgICAgZnJvbnQgPSBDQ0xheWVyU29ydGVy
OjpMYXllclNoYXBlKAorICAgICAgICBGbG9hdFBvaW50M0QoLTEuMCwgMC4wLCA1LjApLAorICAg
ICAgICBGbG9hdFBvaW50M0QoMC4wLCAwLjAsIDUuMCksCisgICAgICAgIEZsb2F0UG9pbnQzRCgw
LjAsIC0xLjAsIDUuMCksCisgICAgICAgIEZsb2F0UG9pbnQzRCgtMS4wLCAtMS4wLCA1LjApKTsK
KworICAgIGJhY2sgPSBDQ0xheWVyU29ydGVyOjpMYXllclNoYXBlKAorICAgICAgICBGbG9hdFBv
aW50M0QoMC4wLCAxLjAsIDQuMCksCisgICAgICAgIEZsb2F0UG9pbnQzRCgxLjAsIDEuMCwgNC4w
KSwKKyAgICAgICAgRmxvYXRQb2ludDNEKDEuMCwgMC4wLCA0LjApLAorICAgICAgICBGbG9hdFBv
aW50M0QoMC4wLCAwLjAsIDQuMCkpOworCisgICAgRVhQRUNUX0dUKENDTGF5ZXJTb3J0ZXI6OmNh
bGN1bGF0ZVpEaWZmKGZyb250LCBiYWNrLCB0aHJlc2hvbGQpLCAwLjApOworICAgIEVYUEVDVF9M
VChDQ0xheWVyU29ydGVyOjpjYWxjdWxhdGVaRGlmZihiYWNrLCBmcm9udCwgdGhyZXNob2xkKSwg
MC4wKTsKKyAgICBFWFBFQ1RfRVEoQ0NMYXllclNvcnRlcjo6Y2FsY3VsYXRlWkRpZmYoZnJvbnQs
IGZyb250LCB0aHJlc2hvbGQpLCAwLjApOworICAgIEVYUEVDVF9FUShDQ0xheWVyU29ydGVyOjpj
YWxjdWxhdGVaRGlmZihiYWNrLCBiYWNrLCB0aHJlc2hvbGQpLCAwLjApOworCisgICAgLy8gVHJp
Y2tpZXIgdGVzdCB3aXRoIGxheWVycyBhdCBhbiBhbmdsZS4KKyAgICAvLworICAgIC8vICAgLXgg
LiAuIC4gLiAwIC4gLiAuIC4gK3gKKyAgICAvLyAteiAgICAgICAgICAgICAvCisgICAgLy8gIDog
ICAgICAgICAgIC0vLS0tLUItLS0tCisgICAgLy8gIDAgICAgICAgICAgIEMKKyAgICAvLyAgOiAt
LS0tQS0tLS0vLQorICAgIC8vICt6ICAgICAgICAgLworICAgIC8vCisgICAgLy8gQyBpcyBpbiBm
cm9udCBvZiBBIGFuZCBiZWhpbmQgQiAobm90IHdoYXQgeW91J2QgZXhwZWN0IGJ5IGNvbXBhcmlu
ZyBjZW50ZXJzKS4KKyAgICAvLyBUaGUgc21hbGwgaW50ZXJzZWN0aW9ucyBhcmUgaWdub3JlZCBi
ZWNhdXNlIHRoZXkncmUgYmVsb3cgdGhlIHRocmVzaG9sZC4KKyAgICAvLyBBIGFuZCBCIGRvbid0
IG92ZXJsYXAsIHNvIHRoZXkncmUgaW5jb21wYXJhYmxlICh6RGlmZiA9IDApLgorCisgICAgY29u
c3QgZmxvYXQgeUhpID0gMTAuMDsKKyAgICBjb25zdCBmbG9hdCB5TG8gPSAtMTAuMDsKKyAgICBj
b25zdCBmbG9hdCB6QSA9IDEuMDsKKyAgICBjb25zdCBmbG9hdCB6QiA9IC0xLjA7CisKKyAgICBD
Q0xheWVyU29ydGVyOjpMYXllclNoYXBlIGxheWVyQSgKKyAgICAgICAgRmxvYXRQb2ludDNEKC0x
MC4wLCB5SGksIHpBKSwKKyAgICAgICAgRmxvYXRQb2ludDNEKC0wLjEsIHlIaSwgekEpLAorICAg
ICAgICBGbG9hdFBvaW50M0QoLTAuMSwgeUxvLCB6QSksCisgICAgICAgIEZsb2F0UG9pbnQzRCgt
MTAuMCwgeUxvLCB6QSkpOworCisgICAgQ0NMYXllclNvcnRlcjo6TGF5ZXJTaGFwZSBsYXllckIo
CisgICAgICAgIEZsb2F0UG9pbnQzRCgwLjEsIHlIaSwgekIpLAorICAgICAgICBGbG9hdFBvaW50
M0QoMTAuMCwgeUhpLCB6QiksCisgICAgICAgIEZsb2F0UG9pbnQzRCgxMC4wLCB5TG8sIHpCKSwK
KyAgICAgICAgRmxvYXRQb2ludDNEKDAuMSwgeUxvLCB6QikpOworCisgICAgQ0NMYXllclNvcnRl
cjo6TGF5ZXJTaGFwZSBsYXllckMoCisgICAgICAgIEZsb2F0UG9pbnQzRCgtNS4wLCB5SGksIDUu
MCksCisgICAgICAgIEZsb2F0UG9pbnQzRCg1LjAsIHlIaSwgLTUuMCksCisgICAgICAgIEZsb2F0
UG9pbnQzRCg1LjAsIHlMbywgLTUuMCksCisgICAgICAgIEZsb2F0UG9pbnQzRCgtNS4wLCB5TG8s
IDUuMCkpOworCisgICAgRVhQRUNUX0VRKENDTGF5ZXJTb3J0ZXI6OmNhbGN1bGF0ZVpEaWZmKGxh
eWVyQSwgbGF5ZXJBLCB0aHJlc2hvbGQpLCAwLjApOworICAgIEVYUEVDVF9FUShDQ0xheWVyU29y
dGVyOjpjYWxjdWxhdGVaRGlmZihsYXllckEsIGxheWVyQiwgdGhyZXNob2xkKSwgMC4wKTsKKyAg
ICBFWFBFQ1RfTFQoQ0NMYXllclNvcnRlcjo6Y2FsY3VsYXRlWkRpZmYobGF5ZXJBLCBsYXllckMs
IHRocmVzaG9sZCksIDAuMCk7CisKKyAgICBFWFBFQ1RfRVEoQ0NMYXllclNvcnRlcjo6Y2FsY3Vs
YXRlWkRpZmYobGF5ZXJCLCBsYXllckEsIHRocmVzaG9sZCksIDAuMCk7CisgICAgRVhQRUNUX0VR
KENDTGF5ZXJTb3J0ZXI6OmNhbGN1bGF0ZVpEaWZmKGxheWVyQiwgbGF5ZXJCLCB0aHJlc2hvbGQp
LCAwLjApOworICAgIEVYUEVDVF9HVChDQ0xheWVyU29ydGVyOjpjYWxjdWxhdGVaRGlmZihsYXll
ckIsIGxheWVyQywgdGhyZXNob2xkKSwgMC4wKTsKKworICAgIEVYUEVDVF9HVChDQ0xheWVyU29y
dGVyOjpjYWxjdWxhdGVaRGlmZihsYXllckMsIGxheWVyQSwgdGhyZXNob2xkKSwgMC4wKTsKKyAg
ICBFWFBFQ1RfTFQoQ0NMYXllclNvcnRlcjo6Y2FsY3VsYXRlWkRpZmYobGF5ZXJDLCBsYXllckIs
IHRocmVzaG9sZCksIDAuMCk7CisgICAgRVhQRUNUX0VRKENDTGF5ZXJTb3J0ZXI6OmNhbGN1bGF0
ZVpEaWZmKGxheWVyQywgbGF5ZXJDLCB0aHJlc2hvbGQpLCAwLjApOworfQorCit9IC8vIG5hbWVz
cGFjZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyU29ydGVyVGVzdC5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICAr
IExGCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108862</attachid>
            <date>2011-09-27 10:07:46 -0700</date>
            <delta_ts>2011-09-29 10:04:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68622-20110927180744.patch</filename>
            <type>text/plain</type>
            <size>18826</size>
            <attacher name="Iain Merrick">husky</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk2MTE5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDktMjcgIElhaW4gTWVy
cmljayAgPGh1c2t5QGdvb2dsZS5jb20+CisKKyAgICAgICAgQWRkIHVuaXQgdGVzdCBmb3IgQ0NM
YXllclNvcnRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Njg2MjIKKworICAgICAgICBNaW5vciByZWZhY3RvcmluZyBmb3IgdGVzdGFiaWxpdHk6Cisg
ICAgICAgIC0gTWFkZSBwb2ludEluVHJpYW5nbGUgcHVibGljLgorICAgICAgICAtIEFkZGVkIExh
eWVyU2hhcGUgdG8gZGVjb3VwbGUgTGF5ZXJJbnRlcnNlY3RvciBhbmQgR3JhcGhOb2RlLgorICAg
ICAgICAtIEFkZGVkIGEgcHVibGljIHdyYXBwZXIgZnVuY3Rpb24gZm9yIExheWVySW50ZXJzZWN0
b3IuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyU29ydGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJTb3J0ZXI6OnBvaW50SW5UcmlhbmdsZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyU29ydGVyOjpjYWxjdWxhdGVaRGlmZik6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyU29ydGVyOjpMYXllckludGVyc2VjdG9yOjpMYXllckludGVyc2VjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJTb3J0ZXI6OkxheWVySW50ZXJzZWN0b3I6OmdvKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJTb3J0ZXI6OkxheWVySW50ZXJzZWN0b3I6OmNoZWNrWkRpZmYp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclNvcnRlcjo6TGF5ZXJJbnRlcnNlY3Rvcjo6bGF5
ZXJaRnJvbVByb2plY3RlZFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJTb3J0ZXI6
OmNoZWNrT3ZlcmxhcCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyU29ydGVyOjpMYXllclNo
YXBlOjpMYXllclNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJTb3J0ZXI6OmNyZWF0
ZUdyYXBoTm9kZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJTb3J0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJTb3J0ZXI6OkxheWVyU2hh
cGU6OkxheWVyU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclNvcnRlcjo6R3JhcGhO
b2RlOjpHcmFwaE5vZGUpOgorCiAyMDExLTA5LTI3ICBObydhbSBSb3NlbnRoYWwgIDxub2FtLnJv
c2VudGhhbEBub2tpYS5jb20+CiAKICAgICAgICAgW1RleG1hcF1bUXRdIFJlZmFjdG9yIHRleHR1
cmUtdXBsb2FkIHRvIGFsbG93IGRpcmVjdCBjaHVuayB1cGRhdGUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJTb3J0ZXIuY3BwCShyZXZpc2lvbiA5NjExOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0ZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NSwxMCArNDUsMTAgQEAgc3RhdGljIFdURkxvZ0NoYW5uZWwgTG9nQ0NMYXllclNvcnRl
ciA9IAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIHBvaW50SW5Ucmlhbmds
ZShjb25zdCBGbG9hdFBvaW50JiBwb2ludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBGbG9hdFBvaW50JiBhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZs
b2F0UG9pbnQmIGIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRQb2lu
dCYgYykKK2Jvb2wgQ0NMYXllclNvcnRlcjo6cG9pbnRJblRyaWFuZ2xlKGNvbnN0IEZsb2F0UG9p
bnQmIHBvaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxv
YXRQb2ludCYgYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZs
b2F0UG9pbnQmIGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBG
bG9hdFBvaW50JiBjKQogewogICAgIC8vIEFsZ29yaXRobSBmcm9tIGh0dHA6Ly93d3cuYmxhY2tw
YXduLmNvbS90ZXh0cy9wb2ludGlucG9seS9kZWZhdWx0Lmh0bWwKICAgICBmbG9hdCB4MCA9IGMu
eCgpIC0gYS54KCk7CkBAIC0xNDMsOSArMTQzLDE2IEBAIHN0YXRpYyBib29sIGVkZ2VFZGdlVGVz
dChjb25zdCBGbG9hdFBvaW4KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotQ0NMYXllclNvcnRlcjo6
TGF5ZXJJbnRlcnNlY3Rvcjo6TGF5ZXJJbnRlcnNlY3RvcihHcmFwaE5vZGUqIG5vZGVBLCBHcmFw
aE5vZGUqIG5vZGVCLCBmbG9hdCBlYXJseUV4aXRUaHJlc2hvbGQpCi0gICAgOiBub2RlQShub2Rl
QSkKLSAgICAsIG5vZGVCKG5vZGVCKQorZmxvYXQgQ0NMYXllclNvcnRlcjo6Y2FsY3VsYXRlWkRp
ZmYoY29uc3QgTGF5ZXJTaGFwZSYgbGF5ZXJBLCBjb25zdCBMYXllclNoYXBlJiBsYXllckIsIGZs
b2F0IGVhcmx5RXhpdFRocmVzaG9sZCkKK3sKKyAgICBMYXllckludGVyc2VjdG9yIGludGVyc2Vj
dG9yKGxheWVyQSwgbGF5ZXJCLCBlYXJseUV4aXRUaHJlc2hvbGQpOworICAgIGludGVyc2VjdG9y
LmdvKCk7CisgICAgcmV0dXJuIGludGVyc2VjdG9yLnpEaWZmOworfQorCitDQ0xheWVyU29ydGVy
OjpMYXllckludGVyc2VjdG9yOjpMYXllckludGVyc2VjdG9yKGNvbnN0IExheWVyU2hhcGUmIGxh
eWVyQSwgY29uc3QgTGF5ZXJTaGFwZSYgbGF5ZXJCLCBmbG9hdCBlYXJseUV4aXRUaHJlc2hvbGQp
CisgICAgOiBsYXllckEobGF5ZXJBKQorICAgICwgbGF5ZXJCKGxheWVyQikKICAgICAsIHpEaWZm
KDApCiAgICAgLCBlYXJseUV4aXRUaHJlc2hvbGQoZWFybHlFeGl0VGhyZXNob2xkKQogewpAQCAt
MTUzLDEzICsxNjAsMTIgQEAgQ0NMYXllclNvcnRlcjo6TGF5ZXJJbnRlcnNlY3Rvcjo6TGF5ZXJJ
bgogCiB2b2lkIENDTGF5ZXJTb3J0ZXI6OkxheWVySW50ZXJzZWN0b3I6OmdvKCkKIHsKLSAgICAo
dHJpYW5nbGVUcmlhbmdsZVRlc3Qobm9kZUEtPmMxLCBub2RlQS0+YzIsIG5vZGVBLT5jMywgbm9k
ZUItPmMxLCBub2RlQi0+YzIsIG5vZGVCLT5jMykKLSAgICAgfHwgdHJpYW5nbGVUcmlhbmdsZVRl
c3Qobm9kZUEtPmMzLCBub2RlQS0+YzQsIG5vZGVBLT5jMSwgbm9kZUItPmMxLCBub2RlQi0+YzIs
IG5vZGVCLT5jMykKLSAgICAgfHwgdHJpYW5nbGVUcmlhbmdsZVRlc3Qobm9kZUEtPmMxLCBub2Rl
QS0+YzIsIG5vZGVBLT5jMywgbm9kZUItPmMzLCBub2RlQi0+YzQsIG5vZGVCLT5jMSkKLSAgICAg
fHwgdHJpYW5nbGVUcmlhbmdsZVRlc3Qobm9kZUEtPmMzLCBub2RlQS0+YzQsIG5vZGVBLT5jMSwg
bm9kZUItPmMzLCBub2RlQi0+YzQsIG5vZGVCLT5jMSkpOworICAgICh0cmlhbmdsZVRyaWFuZ2xl
VGVzdChsYXllckEuYzEsIGxheWVyQS5jMiwgbGF5ZXJBLmMzLCBsYXllckIuYzEsIGxheWVyQi5j
MiwgbGF5ZXJCLmMzKQorICAgICB8fCB0cmlhbmdsZVRyaWFuZ2xlVGVzdChsYXllckEuYzMsIGxh
eWVyQS5jNCwgbGF5ZXJBLmMxLCBsYXllckIuYzEsIGxheWVyQi5jMiwgbGF5ZXJCLmMzKQorICAg
ICB8fCB0cmlhbmdsZVRyaWFuZ2xlVGVzdChsYXllckEuYzEsIGxheWVyQS5jMiwgbGF5ZXJBLmMz
LCBsYXllckIuYzMsIGxheWVyQi5jNCwgbGF5ZXJCLmMxKQorICAgICB8fCB0cmlhbmdsZVRyaWFu
Z2xlVGVzdChsYXllckEuYzMsIGxheWVyQS5jNCwgbGF5ZXJBLmMxLCBsYXllckIuYzMsIGxheWVy
Qi5jNCwgbGF5ZXJCLmMxKSk7CiB9CiAKLQogLy8gQ2hlY2tzIGlmIHNlZ21lbnQgcHEgaW50ZXJz
ZWN0cyBhbnkgb2YgdGhlIHNpZGVzIG9mIHRyaWFuZ2xlIGFiYy4KIGJvb2wgQ0NMYXllclNvcnRl
cjo6TGF5ZXJJbnRlcnNlY3Rvcjo6ZWRnZVRyaWFuZ2xlVGVzdChjb25zdCBGbG9hdFBvaW50JiBw
LCBjb25zdCBGbG9hdFBvaW50JiBxLCBjb25zdCBGbG9hdFBvaW50JiBhLCBjb25zdCBGbG9hdFBv
aW50JiBiLCBjb25zdCBGbG9hdFBvaW50JiBjKQogewpAQCAtMjA0LDggKzIxMCw4IEBAIGJvb2wg
Q0NMYXllclNvcnRlcjo6TGF5ZXJJbnRlcnNlY3Rvcjo6dHIKIC8vIG90aGVyIGludGVyc2VjdGlv
biBwb2ludHMuCiBib29sIENDTGF5ZXJTb3J0ZXI6OkxheWVySW50ZXJzZWN0b3I6OmNoZWNrWkRp
ZmYoY29uc3QgRmxvYXRQb2ludCYgcCkKIHsKLSAgICBmbG9hdCB6YSA9IGxheWVyWkZyb21Qcm9q
ZWN0ZWRQb2ludChub2RlQSwgcCk7Ci0gICAgZmxvYXQgemIgPSBsYXllclpGcm9tUHJvamVjdGVk
UG9pbnQobm9kZUIsIHApOworICAgIGZsb2F0IHphID0gbGF5ZXJaRnJvbVByb2plY3RlZFBvaW50
KGxheWVyQSwgcCk7CisgICAgZmxvYXQgemIgPSBsYXllclpGcm9tUHJvamVjdGVkUG9pbnQobGF5
ZXJCLCBwKTsKIAogICAgIGZsb2F0IGRpZmYgPSB6YSAtIHpiOwogICAgIGZsb2F0IGFic0RpZmYg
PSBmYWJzZihkaWZmKTsKQEAgLTIyNSwxNyArMjMxLDE3IEBAIGJvb2wgQ0NMYXllclNvcnRlcjo6
TGF5ZXJJbnRlcnNlY3Rvcjo6Y2gKIC8vIHRvIHBvaW50IHAgd2hpY2ggbGllcyBvbiB0aGUgeiA9
IDAgcGxhbmUuIEl0IGRvZXMgaXQgYnkgY29tcHV0aW5nIHRoZQogLy8gaW50ZXJzZWN0aW9uIG9m
IGEgbGluZSBzdGFydGluZyBmcm9tIHAgYWxvbmcgdGhlIFogYXhpcyBhbmQgdGhlIHBsYW5lCiAv
LyBvZiB0aGUgbGF5ZXIuCi1mbG9hdCBDQ0xheWVyU29ydGVyOjpMYXllckludGVyc2VjdG9yOjps
YXllclpGcm9tUHJvamVjdGVkUG9pbnQoR3JhcGhOb2RlKiBsYXllciwgY29uc3QgRmxvYXRQb2lu
dCYgcCkKK2Zsb2F0IENDTGF5ZXJTb3J0ZXI6OkxheWVySW50ZXJzZWN0b3I6OmxheWVyWkZyb21Q
cm9qZWN0ZWRQb2ludChjb25zdCBMYXllclNoYXBlJiBsYXllciwgY29uc3QgRmxvYXRQb2ludCYg
cCkKIHsKICAgICBjb25zdCBGbG9hdFBvaW50M0QgekF4aXMoMCwgMCwgMSk7Ci0gICAgRmxvYXRQ
b2ludDNEIHcgPSBGbG9hdFBvaW50M0QocC54KCksIHAueSgpLCAwKSAtIGxheWVyLT5vcmlnaW47
CisgICAgRmxvYXRQb2ludDNEIHcgPSBGbG9hdFBvaW50M0QocC54KCksIHAueSgpLCAwKSAtIGxh
eWVyLm9yaWdpbjsKIAotICAgIGZsb2F0IGQgPSBsYXllci0+bm9ybWFsLmRvdCh6QXhpcyk7Ci0g
ICAgZmxvYXQgbiA9IC1sYXllci0+bm9ybWFsLmRvdCh3KTsKKyAgICBmbG9hdCBkID0gbGF5ZXIu
bm9ybWFsLmRvdCh6QXhpcyk7CisgICAgZmxvYXQgbiA9IC1sYXllci5ub3JtYWwuZG90KHcpOwog
CiAgICAgLy8gQ2hlY2sgaWYgbGF5ZXIgaXMgcGFyYWxsZWwgdG8gdGhlIHogPSAwIGF4aXMKICAg
ICBpZiAoIWQpCi0gICAgICAgIHJldHVybiBsYXllci0+b3JpZ2luLnooKTsKKyAgICAgICAgcmV0
dXJuIGxheWVyLm9yaWdpbi56KCk7CiAKICAgICAvLyBUaGUgaW50ZXJzZWN0aW9uIHBvaW50IHdv
dWxkIGJlIGdpdmVuIGJ5OgogICAgIC8vIHAgKyAobiAvIGQpICogdSAgYnV0IHNpbmNlIHdlIGFy
ZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIApAQCAtMjQzLDcgKzI0OSw2IEBAIGZsb2F0IENDTGF5
ZXJTb3J0ZXI6OkxheWVySW50ZXJzZWN0b3I6OmwKICAgICByZXR1cm4gbiAvIGQ7CiB9CiAKLQog
Q0NMYXllclNvcnRlcjo6Q0NMYXllclNvcnRlcigpCiAgICAgOiBtX3pSYW5nZSgwKQogewpAQCAt
MjUxLDIzICsyNTYsMzIgQEAgQ0NMYXllclNvcnRlcjo6Q0NMYXllclNvcnRlcigpCiAKIENDTGF5
ZXJTb3J0ZXI6OkFCQ29tcGFyZVJlc3VsdCBDQ0xheWVyU29ydGVyOjpjaGVja092ZXJsYXAoR3Jh
cGhOb2RlKiBhLCBHcmFwaE5vZGUqIGIpCiB7Ci0gICAgaWYgKCFhLT5ib3VuZGluZ0JveC5pbnRl
cnNlY3RzKGItPmJvdW5kaW5nQm94KSkKKyAgICBpZiAoIWEtPnNoYXBlLmJvdW5kaW5nQm94Lmlu
dGVyc2VjdHMoYi0+c2hhcGUuYm91bmRpbmdCb3gpKQogICAgICAgICByZXR1cm4gTm9uZTsKIAog
ICAgIC8vIE1ha2UgdGhlIGVhcmx5IGV4aXQgdGhyZXNob2xkIHByb3BvcnRpb25hbCB0byB0aGUg
dG90YWwgWiByYW5nZS4KICAgICBmbG9hdCBleGl0VGhyZXNob2xkID0gbV96UmFuZ2UgKiAwLjAx
OworICAgIGZsb2F0IHpEaWZmID0gY2FsY3VsYXRlWkRpZmYoYS0+c2hhcGUsIGItPnNoYXBlLCBl
eGl0VGhyZXNob2xkKTsKIAotICAgIExheWVySW50ZXJzZWN0b3IgaW50ZXJzZWN0b3IoYSwgYiwg
ZXhpdFRocmVzaG9sZCk7Ci0gICAgaW50ZXJzZWN0b3IuZ28oKTsKLQotICAgIGlmIChpbnRlcnNl
Y3Rvci56RGlmZiA+IDApCisgICAgaWYgKHpEaWZmID4gMCkKICAgICAgICAgcmV0dXJuIEJCZWZv
cmVBOwotICAgIGlmIChpbnRlcnNlY3Rvci56RGlmZiA8IDApCisgICAgaWYgKHpEaWZmIDwgMCkK
ICAgICAgICAgcmV0dXJuIEFCZWZvcmVCOwogCiAgICAgcmV0dXJuIE5vbmU7CiB9CiAKK0NDTGF5
ZXJTb3J0ZXI6OkxheWVyU2hhcGU6OkxheWVyU2hhcGUoY29uc3QgRmxvYXRQb2ludDNEJiBwMSwg
Y29uc3QgRmxvYXRQb2ludDNEJiBwMiwgY29uc3QgRmxvYXRQb2ludDNEJiBwMywgY29uc3QgRmxv
YXRQb2ludDNEJiBwNCkKKyAgICA6IG5vcm1hbCgocDIgLSBwMSkuY3Jvc3MocDMgLSBwMSkpCisg
ICAgLCBjMShGbG9hdFBvaW50KHAxLngoKSwgcDEueSgpKSkKKyAgICAsIGMyKEZsb2F0UG9pbnQo
cDIueCgpLCBwMi55KCkpKQorICAgICwgYzMoRmxvYXRQb2ludChwMy54KCksIHAzLnkoKSkpCisg
ICAgLCBjNChGbG9hdFBvaW50KHA0LngoKSwgcDQueSgpKSkKKyAgICAsIG9yaWdpbihwMSkKK3sK
KyAgICBib3VuZGluZ0JveC5maXRUb1BvaW50cyhjMSwgYzIsIGMzLCBjNCk7Cit9CisKIHZvaWQg
Q0NMYXllclNvcnRlcjo6Y3JlYXRlR3JhcGhOb2RlcyhMYXllckxpc3Q6Oml0ZXJhdG9yIGZpcnN0
LCBMYXllckxpc3Q6Oml0ZXJhdG9yIGxhc3QpCiB7CiAjaWYgIWRlZmluZWQoIE5ERUJVRyApCkBA
IC0zMDIsMTMgKzMxNiw3IEBAIHZvaWQgQ0NMYXllclNvcnRlcjo6Y3JlYXRlR3JhcGhOb2RlcyhM
YXkKICAgICAgICAgRmxvYXRQb2ludDNEIGMyID0gZHJhd1RyYW5zZm9ybS5tYXBQb2ludChGbG9h
dFBvaW50M0QobGF5ZXJXaWR0aCwgbGF5ZXJIZWlnaHQsIDApKTsKICAgICAgICAgRmxvYXRQb2lu
dDNEIGMzID0gZHJhd1RyYW5zZm9ybS5tYXBQb2ludChGbG9hdFBvaW50M0QobGF5ZXJXaWR0aCwg
LWxheWVySGVpZ2h0LCAwKSk7CiAgICAgICAgIEZsb2F0UG9pbnQzRCBjNCA9IGRyYXdUcmFuc2Zv
cm0ubWFwUG9pbnQoRmxvYXRQb2ludDNEKC1sYXllcldpZHRoLCAtbGF5ZXJIZWlnaHQsIDApKTsK
LSAgICAgICAgbm9kZS5ub3JtYWwgPSAoYzIgLSBjMSkuY3Jvc3MoYzMgLSBjMSk7Ci0gICAgICAg
IG5vZGUuYzEgPSBGbG9hdFBvaW50KGMxLngoKSwgYzEueSgpKTsKLSAgICAgICAgbm9kZS5jMiA9
IEZsb2F0UG9pbnQoYzIueCgpLCBjMi55KCkpOwotICAgICAgICBub2RlLmMzID0gRmxvYXRQb2lu
dChjMy54KCksIGMzLnkoKSk7Ci0gICAgICAgIG5vZGUuYzQgPSBGbG9hdFBvaW50KGM0LngoKSwg
YzQueSgpKTsKLSAgICAgICAgbm9kZS5vcmlnaW4gPSBjMTsKLSAgICAgICAgbm9kZS5ib3VuZGlu
Z0JveC5maXRUb1BvaW50cyhub2RlLmMxLCBub2RlLmMyLCBub2RlLmMzLCBub2RlLmM0KTsKKyAg
ICAgICAgbm9kZS5zaGFwZSA9IExheWVyU2hhcGUoYzEsIGMyLCBjMywgYzQpOwogICAgIAogICAg
ICAgICBtYXhaID0gbWF4KGM0LnooKSwgbWF4KGMzLnooKSwgbWF4KGMyLnooKSwgbWF4KG1heFos
IGMxLnooKSkpKSk7CiAgICAgICAgIG1pblogPSBtaW4oYzQueigpLCBtaW4oYzMueigpLCBtaW4o
YzIueigpLCBtaW4obWluWiwgYzEueigpKSkpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyU29ydGVy
LmgJKHJldmlzaW9uIDk2MTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclNvcnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxNiArNDIs
MzEgQEAgcHVibGljOgogICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxDQ0xheWVySW1wbD4gPiBM
YXllckxpc3Q7CiAKICAgICB2b2lkIHNvcnQoTGF5ZXJMaXN0OjppdGVyYXRvciBmaXJzdCwgTGF5
ZXJMaXN0OjppdGVyYXRvciBsYXN0KTsKKworICAgIC8vIEhlbHBlciBtZXRob2RzLCBwdWJsaWMg
Zm9yIHVuaXQgdGVzdGluZy4KKyAgICBzdGF0aWMgYm9vbCBwb2ludEluVHJpYW5nbGUoY29uc3Qg
RmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3Qg
RmxvYXRQb2ludCYpOworCisgICAgLy8gSG9sZHMgdmFyaW91cyB1c2VmdWwgcHJvcGVydGllcyBk
ZXJpdmVkIGZyb20gYSBsYXllcidzIDNEIG91dGxpbmUuCisgICAgc3RydWN0IExheWVyU2hhcGUg
eworICAgICAgICBMYXllclNoYXBlKCkgeyB9CisgICAgICAgIExheWVyU2hhcGUoY29uc3QgRmxv
YXRQb2ludDNEJiwgY29uc3QgRmxvYXRQb2ludDNEJiwgY29uc3QgRmxvYXRQb2ludDNEJiwgY29u
c3QgRmxvYXRQb2ludDNEJik7CisKKyAgICAgICAgRmxvYXRQb2ludDNEIG5vcm1hbDsKKyAgICAg
ICAgRmxvYXRQb2ludCBjMSwgYzIsIGMzLCBjNDsKKyAgICAgICAgRmxvYXRQb2ludDNEIG9yaWdp
bjsKKyAgICAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94OworICAgIH07CisKKyAgICBzdGF0aWMg
ZmxvYXQgY2FsY3VsYXRlWkRpZmYoY29uc3QgTGF5ZXJTaGFwZSYsIGNvbnN0IExheWVyU2hhcGUm
LCBmbG9hdCBlYXJseUV4aXRUaHJlc2hvbGQpOworCiBwcml2YXRlOgogICAgIHN0cnVjdCBHcmFw
aEVkZ2U7CiAKICAgICBzdHJ1Y3QgR3JhcGhOb2RlIHsKLSAgICAgICAgR3JhcGhOb2RlKENDTGF5
ZXJJbXBsKiBjY2xheWVyKSA6IGxheWVyKGNjbGF5ZXIpIHsgfTsKKyAgICAgICAgZXhwbGljaXQg
R3JhcGhOb2RlKENDTGF5ZXJJbXBsKiBjY2xheWVyKSA6IGxheWVyKGNjbGF5ZXIpIHsgfQorCiAg
ICAgICAgIENDTGF5ZXJJbXBsKiBsYXllcjsKLSAgICAgICAgRmxvYXRQb2ludCBjMSwgYzIsIGMz
LCBjNDsKLSAgICAgICAgRmxvYXRQb2ludDNEIG5vcm1hbDsKLSAgICAgICAgRmxvYXRQb2ludDNE
IG9yaWdpbjsKLSAgICAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94OworICAgICAgICBMYXllclNo
YXBlIHNoYXBlOwogICAgICAgICBWZWN0b3I8R3JhcGhFZGdlKj4gaW5jb21pbmc7CiAgICAgICAg
IFZlY3RvcjxHcmFwaEVkZ2UqPiBvdXRnb2luZzsKICAgICB9OwpAQCAtNjQsMTggKzc5LDE4IEBA
IHByaXZhdGU6CiAgICAgfTsKIAogICAgIHN0cnVjdCBMYXllckludGVyc2VjdG9yIHsKLSAgICAg
ICAgTGF5ZXJJbnRlcnNlY3RvcihHcmFwaE5vZGUqLCBHcmFwaE5vZGUqLCBmbG9hdCk7CisgICAg
ICAgIExheWVySW50ZXJzZWN0b3IoY29uc3QgTGF5ZXJTaGFwZSYsIGNvbnN0IExheWVyU2hhcGUm
LCBmbG9hdCk7CiAKICAgICAgICAgdm9pZCBnbygpOwogCi0gICAgICAgIGZsb2F0IGxheWVyWkZy
b21Qcm9qZWN0ZWRQb2ludChHcmFwaE5vZGUqLCBjb25zdCBGbG9hdFBvaW50Jik7CisgICAgICAg
IGZsb2F0IGxheWVyWkZyb21Qcm9qZWN0ZWRQb2ludChjb25zdCBMYXllclNoYXBlJiwgY29uc3Qg
RmxvYXRQb2ludCYpOwogICAgICAgICBib29sIHRyaWFuZ2xlVHJpYW5nbGVUZXN0KGNvbnN0IEZs
b2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZs
b2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYpOwogICAgICAg
ICBib29sIGVkZ2VUcmlhbmdsZVRlc3QoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9p
bnQmLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9p
bnQmKTsKICAgICAgICAgYm9vbCBjaGVja1pEaWZmKGNvbnN0IEZsb2F0UG9pbnQmKTsKIAogICAg
ICAgICBGbG9hdFBvaW50IGludGVyc2VjdGlvblBvaW50OwotICAgICAgICBHcmFwaE5vZGUqIG5v
ZGVBOwotICAgICAgICBHcmFwaE5vZGUqIG5vZGVCOworICAgICAgICBjb25zdCBMYXllclNoYXBl
JiBsYXllckE7CisgICAgICAgIGNvbnN0IExheWVyU2hhcGUmIGxheWVyQjsKICAgICAgICAgZmxv
YXQgekRpZmY7CiAgICAgICAgIGZsb2F0IGVhcmx5RXhpdFRocmVzaG9sZDsKICAgICB9OwpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk2MTE5KQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAor
MjAxMS0wOS0yNyAgSWFpbiBNZXJyaWNrICA8aHVza3lAZ29vZ2xlLmNvbT4KKworICAgICAgICBB
ZGQgdW5pdCB0ZXN0IGZvciBDQ0xheWVyU29ydGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODYyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAgICAgICogdGVzdHMvQ0NM
YXllclNvcnRlclRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorCiAy
MDExLTA5LTI3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLiAgUm9sbGVkIERFUFMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cGkJKHJldmlzaW9uIDk2MTE5KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBAQAogICAgICAgICAnd2Vi
a2l0X3VuaXR0ZXN0X2ZpbGVzJzogWwogICAgICAgICAgICAgJ3Rlc3RzL0FyZW5hVGVzdEhlbHBl
cnMuaCcsCiAgICAgICAgICAgICAndGVzdHMvQXNzb2NpYXRlZFVSTExvYWRlclRlc3QuY3BwJywK
KyAgICAgICAgICAgICd0ZXN0cy9DQ0xheWVyU29ydGVyVGVzdC5jcHAnLAogICAgICAgICAgICAg
J3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9DQ1Ro
cmVhZFRhc2tUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NUaHJlYWRUZXN0LmNwcCcs
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJTb3J0ZXJUZXN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJTb3J0
ZXJUZXN0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclNvcnRlclRlc3QuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiY2MvQ0NMYXllclNv
cnRlci5oIgorCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK25hbWVzcGFjZSB7CisKK1RFU1QoQ0NMYXllclNvcnRlclRlc3QsIFBvaW50SW5U
cmlhbmdsZSkKK3sKKyAgICBGbG9hdFBvaW50IGEoMTAuMCwgMTAuMCk7CisgICAgRmxvYXRQb2lu
dCBiKDMwLjAsIDEwLjApOworICAgIEZsb2F0UG9pbnQgYygyMC4wLCAyMC4wKTsKKworICAgIC8v
IFBvaW50IGluIHRoZSBjZW50ZXIgaXMgaW4gdGhlIHRyaWFuZ2xlLgorICAgIEVYUEVDVF9UUlVF
KENDTGF5ZXJTb3J0ZXI6OnBvaW50SW5UcmlhbmdsZShGbG9hdFBvaW50KDIwLjAsIDE1LjApLCBh
LCBiLCBjKSk7CisKKyAgICAvLyBQZXJtdXRpbmcgdGhlIGNvcm5lcnMgZG9lc24ndCBjaGFuZ2Ug
dGhlIHJlc3VsdC4KKyAgICBFWFBFQ1RfVFJVRShDQ0xheWVyU29ydGVyOjpwb2ludEluVHJpYW5n
bGUoRmxvYXRQb2ludCgyMC4wLCAxNS4wKSwgYSwgYywgYikpOworICAgIEVYUEVDVF9UUlVFKEND
TGF5ZXJTb3J0ZXI6OnBvaW50SW5UcmlhbmdsZShGbG9hdFBvaW50KDIwLjAsIDE1LjApLCBiLCBh
LCBjKSk7CisgICAgRVhQRUNUX1RSVUUoQ0NMYXllclNvcnRlcjo6cG9pbnRJblRyaWFuZ2xlKEZs
b2F0UG9pbnQoMjAuMCwgMTUuMCksIGIsIGMsIGEpKTsKKyAgICBFWFBFQ1RfVFJVRShDQ0xheWVy
U29ydGVyOjpwb2ludEluVHJpYW5nbGUoRmxvYXRQb2ludCgyMC4wLCAxNS4wKSwgYywgYSwgYikp
OworICAgIEVYUEVDVF9UUlVFKENDTGF5ZXJTb3J0ZXI6OnBvaW50SW5UcmlhbmdsZShGbG9hdFBv
aW50KDIwLjAsIDE1LjApLCBjLCBiLCBhKSk7CisKKyAgICAvLyBQb2ludHMgb24gdGhlIGVkZ2Vz
IGFyZSBub3QgaW4gdGhlIHRyaWFuZ2xlLgorICAgIEVYUEVDVF9GQUxTRShDQ0xheWVyU29ydGVy
Ojpwb2ludEluVHJpYW5nbGUoRmxvYXRQb2ludCgyMC4wLCAxMC4wKSwgYSwgYiwgYykpOworICAg
IEVYUEVDVF9GQUxTRShDQ0xheWVyU29ydGVyOjpwb2ludEluVHJpYW5nbGUoRmxvYXRQb2ludCgx
NS4wLCAxNS4wKSwgYSwgYiwgYykpOworICAgIEVYUEVDVF9GQUxTRShDQ0xheWVyU29ydGVyOjpw
b2ludEluVHJpYW5nbGUoRmxvYXRQb2ludCgyNS4wLCAxNS4wKSwgYSwgYiwgYykpOworCisgICAg
Ly8gUG9pbnRzIGp1c3QgaW5zaWRlIHRoZSBlZGdlcyBhcmUgaW4gdGhlIHRyaWFuZ2xlLgorICAg
IEVYUEVDVF9UUlVFKENDTGF5ZXJTb3J0ZXI6OnBvaW50SW5UcmlhbmdsZShGbG9hdFBvaW50KDIw
LjAsIDEwLjAxKSwgYSwgYiwgYykpOworICAgIEVYUEVDVF9UUlVFKENDTGF5ZXJTb3J0ZXI6OnBv
aW50SW5UcmlhbmdsZShGbG9hdFBvaW50KDE1LjAxLCAxNS4wKSwgYSwgYiwgYykpOworICAgIEVY
UEVDVF9UUlVFKENDTGF5ZXJTb3J0ZXI6OnBvaW50SW5UcmlhbmdsZShGbG9hdFBvaW50KDI0Ljk5
LCAxNS4wKSwgYSwgYiwgYykpOworCisgICAgLy8gWmVyby1hcmVhIHRyaWFuZ2xlIGRvZXNuJ3Qg
aW50ZXJzZWN0IGFueSBwb2ludC4KKyAgICBFWFBFQ1RfRkFMU0UoQ0NMYXllclNvcnRlcjo6cG9p
bnRJblRyaWFuZ2xlKEZsb2F0UG9pbnQoMTUuMCwgMTAuMCksIGEsIGIsIEZsb2F0UG9pbnQoMjAu
MCwgMTAuMCkpKTsKK30KKworVEVTVChDQ0xheWVyU29ydGVyVGVzdCwgQ2FsY3VsYXRlWkRpZmYp
Cit7CisgICAgLy8gVGhpcyBzaG91bGQgYmUgYmlnZ2VyIHRoYW4gdGhlIHJhbmdlIG9mIHogdmFs
dWVzIHVzZWQuCisgICAgY29uc3QgZmxvYXQgdGhyZXNob2xkID0gMTAuMDsKKworICAgIC8vIFRy
aXZpYWwgdGVzdCwgd2l0aCBvbmUgbGF5ZXIgZGlyZWN0bHkgb2JzY3VyaW5nIHRoZSBvdGhlci4K
KworICAgIENDTGF5ZXJTb3J0ZXI6OkxheWVyU2hhcGUgZnJvbnQoCisgICAgICAgIEZsb2F0UG9p
bnQzRCgtMS4wLCAxLjAsIDUuMCksCisgICAgICAgIEZsb2F0UG9pbnQzRCgxLjAsIDEuMCwgNS4w
KSwKKyAgICAgICAgRmxvYXRQb2ludDNEKDEuMCwgLTEuMCwgNS4wKSwKKyAgICAgICAgRmxvYXRQ
b2ludDNEKC0xLjAsIC0xLjAsIDUuMCkpOworCisgICAgQ0NMYXllclNvcnRlcjo6TGF5ZXJTaGFw
ZSBiYWNrKAorICAgICAgICBGbG9hdFBvaW50M0QoLTEuMCwgMS4wLCA0LjApLAorICAgICAgICBG
bG9hdFBvaW50M0QoMS4wLCAxLjAsIDQuMCksCisgICAgICAgIEZsb2F0UG9pbnQzRCgxLjAsIC0x
LjAsIDQuMCksCisgICAgICAgIEZsb2F0UG9pbnQzRCgtMS4wLCAtMS4wLCA0LjApKTsKKworICAg
IEVYUEVDVF9HVChDQ0xheWVyU29ydGVyOjpjYWxjdWxhdGVaRGlmZihmcm9udCwgYmFjaywgdGhy
ZXNob2xkKSwgMC4wKTsKKyAgICBFWFBFQ1RfTFQoQ0NMYXllclNvcnRlcjo6Y2FsY3VsYXRlWkRp
ZmYoYmFjaywgZnJvbnQsIHRocmVzaG9sZCksIDAuMCk7CisKKyAgICAvLyBXaGVuIGNvbXBhcmlu
ZyBhIGxheWVyIHdpdGggaXRzZWxmLCB6RGlmZiBpcyBhbHdheXMgMC4KKyAgICBFWFBFQ1RfRVEo
Q0NMYXllclNvcnRlcjo6Y2FsY3VsYXRlWkRpZmYoZnJvbnQsIGZyb250LCB0aHJlc2hvbGQpLCAw
LjApOworICAgIEVYUEVDVF9FUShDQ0xheWVyU29ydGVyOjpjYWxjdWxhdGVaRGlmZihiYWNrLCBi
YWNrLCB0aHJlc2hvbGQpLCAwLjApOworCisgICAgLy8gU2FtZSBhZ2FpbiBidXQgd2l0aCB0d28g
bGF5ZXJzIHRoYXQgaW50ZXJzZWN0IG9ubHkgYXQgb25lIHBvaW50ICgwLDApLgorICAgIC8vIFRo
aXMgKmRvZXMqIGNvdW50IGFzIG9ic2N1cmluZywgc28gd2Ugc2hvdWxkIGdldCB0aGUgc2FtZSBy
ZXN1bHRzLgorCisgICAgZnJvbnQgPSBDQ0xheWVyU29ydGVyOjpMYXllclNoYXBlKAorICAgICAg
ICBGbG9hdFBvaW50M0QoLTEuMCwgMC4wLCA1LjApLAorICAgICAgICBGbG9hdFBvaW50M0QoMC4w
LCAwLjAsIDUuMCksCisgICAgICAgIEZsb2F0UG9pbnQzRCgwLjAsIC0xLjAsIDUuMCksCisgICAg
ICAgIEZsb2F0UG9pbnQzRCgtMS4wLCAtMS4wLCA1LjApKTsKKworICAgIGJhY2sgPSBDQ0xheWVy
U29ydGVyOjpMYXllclNoYXBlKAorICAgICAgICBGbG9hdFBvaW50M0QoMC4wLCAxLjAsIDQuMCks
CisgICAgICAgIEZsb2F0UG9pbnQzRCgxLjAsIDEuMCwgNC4wKSwKKyAgICAgICAgRmxvYXRQb2lu
dDNEKDEuMCwgMC4wLCA0LjApLAorICAgICAgICBGbG9hdFBvaW50M0QoMC4wLCAwLjAsIDQuMCkp
OworCisgICAgRVhQRUNUX0dUKENDTGF5ZXJTb3J0ZXI6OmNhbGN1bGF0ZVpEaWZmKGZyb250LCBi
YWNrLCB0aHJlc2hvbGQpLCAwLjApOworICAgIEVYUEVDVF9MVChDQ0xheWVyU29ydGVyOjpjYWxj
dWxhdGVaRGlmZihiYWNrLCBmcm9udCwgdGhyZXNob2xkKSwgMC4wKTsKKyAgICBFWFBFQ1RfRVEo
Q0NMYXllclNvcnRlcjo6Y2FsY3VsYXRlWkRpZmYoZnJvbnQsIGZyb250LCB0aHJlc2hvbGQpLCAw
LjApOworICAgIEVYUEVDVF9FUShDQ0xheWVyU29ydGVyOjpjYWxjdWxhdGVaRGlmZihiYWNrLCBi
YWNrLCB0aHJlc2hvbGQpLCAwLjApOworCisgICAgLy8gVHJpY2tpZXIgdGVzdCB3aXRoIGxheWVy
cyBhdCBhbiBhbmdsZS4KKyAgICAvLworICAgIC8vICAgLXggLiAuIC4gLiAwIC4gLiAuIC4gK3gK
KyAgICAvLyAteiAgICAgICAgICAgICAvCisgICAgLy8gIDogICAgICAgICAgICAvLS0tLUItLS0t
CisgICAgLy8gIDAgICAgICAgICAgIEMKKyAgICAvLyAgOiAtLS0tQS0tLS0vCisgICAgLy8gK3og
ICAgICAgICAvCisgICAgLy8KKyAgICAvLyBDIGlzIGluIGZyb250IG9mIEEgYW5kIGJlaGluZCBC
IChub3Qgd2hhdCB5b3UnZCBleHBlY3QgYnkgY29tcGFyaW5nIGNlbnRlcnMpLgorICAgIC8vIEEg
YW5kIEIgZG9uJ3Qgb3ZlcmxhcCwgc28gdGhleSdyZSBpbmNvbXBhcmFibGUgKHpEaWZmID0gMCku
CisKKyAgICBjb25zdCBmbG9hdCB5SGkgPSAxMC4wOworICAgIGNvbnN0IGZsb2F0IHlMbyA9IC0x
MC4wOworICAgIGNvbnN0IGZsb2F0IHpBID0gMS4wOworICAgIGNvbnN0IGZsb2F0IHpCID0gLTEu
MDsKKworICAgIENDTGF5ZXJTb3J0ZXI6OkxheWVyU2hhcGUgbGF5ZXJBKAorICAgICAgICBGbG9h
dFBvaW50M0QoLTEwLjAsIHlIaSwgekEpLAorICAgICAgICBGbG9hdFBvaW50M0QoLTIuMCwgeUhp
LCB6QSksCisgICAgICAgIEZsb2F0UG9pbnQzRCgtMi4wLCB5TG8sIHpBKSwKKyAgICAgICAgRmxv
YXRQb2ludDNEKC0xMC4wLCB5TG8sIHpBKSk7CisKKyAgICBDQ0xheWVyU29ydGVyOjpMYXllclNo
YXBlIGxheWVyQigKKyAgICAgICAgRmxvYXRQb2ludDNEKDIuMCwgeUhpLCB6QiksCisgICAgICAg
IEZsb2F0UG9pbnQzRCgxMC4wLCB5SGksIHpCKSwKKyAgICAgICAgRmxvYXRQb2ludDNEKDEwLjAs
IHlMbywgekIpLAorICAgICAgICBGbG9hdFBvaW50M0QoMi4wLCB5TG8sIHpCKSk7CisKKyAgICBD
Q0xheWVyU29ydGVyOjpMYXllclNoYXBlIGxheWVyQygKKyAgICAgICAgRmxvYXRQb2ludDNEKC01
LjAsIHlIaSwgNS4wKSwKKyAgICAgICAgRmxvYXRQb2ludDNEKDUuMCwgeUhpLCAtNS4wKSwKKyAg
ICAgICAgRmxvYXRQb2ludDNEKDUuMCwgeUxvLCAtNS4wKSwKKyAgICAgICAgRmxvYXRQb2ludDNE
KC01LjAsIHlMbywgNS4wKSk7CisKKyAgICBFWFBFQ1RfRVEoQ0NMYXllclNvcnRlcjo6Y2FsY3Vs
YXRlWkRpZmYobGF5ZXJBLCBsYXllckEsIHRocmVzaG9sZCksIDAuMCk7CisgICAgRVhQRUNUX0VR
KENDTGF5ZXJTb3J0ZXI6OmNhbGN1bGF0ZVpEaWZmKGxheWVyQSwgbGF5ZXJCLCB0aHJlc2hvbGQp
LCAwLjApOworICAgIEVYUEVDVF9MVChDQ0xheWVyU29ydGVyOjpjYWxjdWxhdGVaRGlmZihsYXll
ckEsIGxheWVyQywgdGhyZXNob2xkKSwgMC4wKTsKKworICAgIEVYUEVDVF9FUShDQ0xheWVyU29y
dGVyOjpjYWxjdWxhdGVaRGlmZihsYXllckIsIGxheWVyQSwgdGhyZXNob2xkKSwgMC4wKTsKKyAg
ICBFWFBFQ1RfRVEoQ0NMYXllclNvcnRlcjo6Y2FsY3VsYXRlWkRpZmYobGF5ZXJCLCBsYXllckIs
IHRocmVzaG9sZCksIDAuMCk7CisgICAgRVhQRUNUX0dUKENDTGF5ZXJTb3J0ZXI6OmNhbGN1bGF0
ZVpEaWZmKGxheWVyQiwgbGF5ZXJDLCB0aHJlc2hvbGQpLCAwLjApOworCisgICAgRVhQRUNUX0dU
KENDTGF5ZXJTb3J0ZXI6OmNhbGN1bGF0ZVpEaWZmKGxheWVyQywgbGF5ZXJBLCB0aHJlc2hvbGQp
LCAwLjApOworICAgIEVYUEVDVF9MVChDQ0xheWVyU29ydGVyOjpjYWxjdWxhdGVaRGlmZihsYXll
ckMsIGxheWVyQiwgdGhyZXNob2xkKSwgMC4wKTsKKyAgICBFWFBFQ1RfRVEoQ0NMYXllclNvcnRl
cjo6Y2FsY3VsYXRlWkRpZmYobGF5ZXJDLCBsYXllckMsIHRocmVzaG9sZCksIDAuMCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJTb3J0ZXJUZXN0LmNwcApfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9s
LXN0eWxlCiAgICsgTEYKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>