<?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>23203</bug_id>
          
          <creation_ts>2009-01-08 18:29:15 -0800</creation_ts>
          <short_desc>Multiple background properties are not retrievable via DOM method getComputedStyle</short_desc>
          <delta_ts>2010-11-06 12:31:21 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://farukat.es/bugs/webkit-multiple-bgs.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Faruk Ates">farukates</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>eric</cc>
    
    <cc>kuvik3</cc>
    
    <cc>paulirish</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>104983</commentid>
    <comment_count>0</comment_count>
    <who name="Faruk Ates">farukates</who>
    <bug_when>2009-01-08 18:29:15 -0800</bug_when>
    <thetext>Any element that has multiple backgrounds specified on it will not return any but the first background image&apos;s properties via DOM methods, though it does correctly return the background color (of which there can be only one anyway).

See URL for the testcase.

Testcase also shows the odd return value for the alpha property in rgba(); that bug is already filed here:
https://bugs.webkit.org/show_bug.cgi?id=23202</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114881</commentid>
    <comment_count>1</comment_count>
    <who name="Faruk Ates">farukates</who>
    <bug_when>2009-03-23 17:04:51 -0700</bug_when>
    <thetext>Just to elaborate on this radar, the CSS 3 spec says that the Computed Value for multiple background images should be:

&quot;as specified, but with URIs made absolute&quot;

Source:
http://www.w3.org/TR/css3-background/#the-background-image</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115082</commentid>
    <comment_count>2</comment_count>
    <who name="Faruk Ates">farukates</who>
    <bug_when>2009-03-24 16:57:37 -0700</bug_when>
    <thetext>New discovery: when setting multiple background images via el.style.cssText and retrieving them directly via el.style.backgroundImage, the value is correct: all images are listed with absolute paths, as per the spec.

So this is just not working in getComputedStyle, only. I&apos;ve adjusted the Summary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302399</commentid>
    <comment_count>3</comment_count>
    <who name="NovakP">kuvik3</who>
    <bug_when>2010-10-31 09:11:11 -0700</bug_when>
    <thetext>Hi, any progress on this bug? This still doesn&apos;t work in WebKit two years after reporting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302715</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-11-01 08:46:25 -0700</bug_when>
    <thetext>*** Bug 44853 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302716</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-11-01 08:46:41 -0700</bug_when>
    <thetext>I started working on a patch for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302855</commentid>
    <comment_count>6</comment_count>
      <attachid>72543</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-11-01 12:51:36 -0700</bug_when>
    <thetext>Created attachment 72543
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302856</commentid>
    <comment_count>7</comment_count>
      <attachid>72543</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-11-01 12:54:22 -0700</bug_when>
    <thetext>Comment on attachment 72543
Patch

r=me, but do something about &quot;size.size.&quot; heh.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302890</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-11-01 13:40:17 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/71049</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302911</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-01 14:07:01 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/71049 might have broken Qt Linux Release
The following tests are not passing:
fast/backgrounds/multiple-backgrounds-computed-style.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305759</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-11-05 23:39:31 -0700</bug_when>
    <thetext>+++ trunk/LayoutTests/fast/backgrounds/script-tests/TEMPLATE.html	2010-11-01 20:39:48 UTC (rev 71049)

This is evil. Splitting tests into .html and .js only adds indirection and wastes time for the person investigating failures. Please see e.g. &lt;http://trac.webkit.org/browser/trunk/LayoutTests/fast/speech/input-text-language-tag.html&gt; for what I think is a better pattern for script tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305761</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-05 23:42:34 -0700</bug_when>
    <thetext>Evil might be a strong word.  It&apos;s been a historically recommended pattern.

I think someone should write a document on good layout test design, but I think using the existing script-test pattern doesn&apos;t count as &quot;evil&quot;. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305801</commentid>
    <comment_count>12</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-11-06 11:55:26 -0700</bug_when>
    <thetext>I don&apos;t really care if the JS in in the test file or a separate file, but I was just following (possibly outdated) convention.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305804</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-11-06 12:31:21 -0700</bug_when>
    <thetext>I don&apos;t think this was ever a common convention for tests outside fast/js, but it certainly did have vocal proponents.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72543</attachid>
            <date>2010-11-01 12:51:36 -0700</date>
            <delta_ts>2010-11-01 12:54:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-23203-20101101125134.patch</filename>
            <type>text/plain</type>
            <size>25748</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiODQzZmZhNTUzNDBlMGJlYjIzNGQzNGJjZjQ2YTU1ZjI0ODVhMjkwLi40OTc5MTBh
OGEzYzA4NmQxNzlhZDRjNjlmY2YzNzc4ODBiMTNjNWNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTAtMTEtMDEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTXVsdGlwbGUgYmFj
a2dyb3VuZCBwcm9wZXJ0aWVzIGFyZSBub3QgcmV0cmlldmFibGUgdmlhIERPTSBtZXRob2QgZ2V0
Q29tcHV0ZWRTdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMyMDMKKyAgICAgICAgCisgICAgICAgIFNjcmlwdCB0ZXN0IGZvciBtdWx0aXBsZSBi
YWNrZ3JvdW5kcyBhbmQgbWFza3MgaW4gZ2V0Q29tcHV0ZWRTdHlsZSgpLgorCisgICAgICAgICog
ZmFzdC9iYWNrZ3JvdW5kcy9tdWx0aXBsZS1iYWNrZ3JvdW5kcy1jb21wdXRlZC1zdHlsZS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvYmFja2dyb3VuZHMvbXVsdGlwbGUtYmFj
a2dyb3VuZHMtY29tcHV0ZWQtc3R5bGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9iYWNr
Z3JvdW5kcy9zY3JpcHQtdGVzdHMvVEVNUExBVEUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9iYWNrZ3JvdW5kcy9zY3JpcHQtdGVzdHMvbXVsdGlwbGUtYmFja2dyb3VuZHMtY29tcHV0ZWQt
c3R5bGUuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisKIDIwMTAtMTEtMDEgIENzYWJhIE9z
enRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9iYWNrZ3JvdW5kcy9tdWx0aXBsZS1iYWNrZ3JvdW5k
cy1jb21wdXRlZC1zdHlsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2JhY2tncm91
bmRzL211bHRpcGxlLWJhY2tncm91bmRzLWNvbXB1dGVkLXN0eWxlLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yZGFkMGFhZTYxOWFhZWNkMGZhMjk2MTcwODZlMzNhNWVhMGY3YWMwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9iYWNrZ3JvdW5kcy9tdWx0aXBsZS1iYWNrZ3Jv
dW5kcy1jb21wdXRlZC1zdHlsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNyBAQAorQmxvY2tl
ZCBhY2Nlc3MgdG8gZXh0ZXJuYWwgVVJMIGh0dHA6Ly9leGFtcGxlLmNvbS9mb28ucG5nCitCbG9j
a2VkIGFjY2VzcyB0byBleHRlcm5hbCBVUkwgaHR0cDovL2V4YW1wbGUuY29tL2Jhci5wbmcKK1Ro
aXMgdGVzdHMgY2hlY2tzIHRoYXQgYWxsIG9mIHRoZSBpbnB1dCB2YWx1ZXMgZm9yIGJhY2tncm91
bmQtcmVwZWF0IHBhcnNlIGNvcnJlY3RseS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1MgdGVzdCgiYmFja2dyb3VuZEltYWdlIiwgImJhY2tncm91bmQ6IG5vbmUgMTBweCAx
MHB4LCB1cmwoaHR0cDovL2V4YW1wbGUuY29tL2Zvby5wbmcpIDIwcHggMjBweDsiKSBpcyAibm9u
ZSwgdXJsKGh0dHA6Ly9leGFtcGxlLmNvbS9mb28ucG5nKSIKK1BBU1MgdGVzdCgiYmFja2dyb3Vu
ZFBvc2l0aW9uIiwgImJhY2tncm91bmQ6IG5vbmUgMTBweCAxMHB4LCB1cmwoaHR0cDovL2V4YW1w
bGUuY29tL2Zvby5wbmcpIDIwcHggMjBweDsiKSBpcyAiMTBweCAxMHB4LCAyMHB4IDIwcHgiCitQ
QVNTIHRlc3QoImJhY2tncm91bmRJbWFnZSIsICJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaHR0cDov
L2V4YW1wbGUuY29tL2Zvby5wbmcpLCBub25lLCB1cmwoaHR0cDovL2V4YW1wbGUuY29tL2Jhci5w
bmcpOyIpIGlzICJ1cmwoaHR0cDovL2V4YW1wbGUuY29tL2Zvby5wbmcpLCBub25lLCB1cmwoaHR0
cDovL2V4YW1wbGUuY29tL2Jhci5wbmcpIgorUEFTUyB0ZXN0KCJiYWNrZ3JvdW5kUmVwZWF0Iiwg
ImJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteCwgcmVwZWF0LXksIHJlcGVhdCwgbm8tcmVwZWF0
OyIpIGlzICJyZXBlYXQteCwgcmVwZWF0LXksIHJlcGVhdCwgbm8tcmVwZWF0IgorUEFTUyB0ZXN0
KCJiYWNrZ3JvdW5kU2l6ZSIsICJiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW4sIGNvdmVyLCAyMHB4
IDEwJTsiKSBpcyAiY29udGFpbiwgY292ZXIsIDIwcHggMTAlIgorUEFTUyB0ZXN0KCJ3ZWJraXRC
YWNrZ3JvdW5kU2l6ZSIsICItd2Via2l0LWJhY2tncm91bmQtc2l6ZTogY29udGFpbiwgY292ZXIs
IDIwcHggMTAlOyIpIGlzICJjb250YWluLCBjb3ZlciwgMjBweCAxMCUiCitQQVNTIHRlc3QoIndl
YmtpdEJhY2tncm91bmRDb21wb3NpdGUiLCAiLXdlYmtpdC1iYWNrZ3JvdW5kLWNvbXBvc2l0ZTog
c291cmNlLW92ZXIsIGNvcHksIGRlc3RpbmF0aW9uLWluIikgaXMgInNvdXJjZS1vdmVyLCBjb3B5
LCBkZXN0aW5hdGlvbi1pbiIKK1BBU1MgdGVzdCgiYmFja2dyb3VuZEF0dGFjaG1lbnQiLCAiYmFj
a2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZCwgc2Nyb2xsLCBsb2NhbDsiKSBpcyAiZml4ZWQsIHNj
cm9sbCwgbG9jYWwiCitQQVNTIHRlc3QoImJhY2tncm91bmRDbGlwIiwgImJhY2tncm91bmQtY2xp
cDogYm9yZGVyLWJveCwgcGFkZGluZy1ib3g7IikgaXMgImJvcmRlci1ib3gsIHBhZGRpbmctYm94
IgorUEFTUyB0ZXN0KCJ3ZWJraXRCYWNrZ3JvdW5kQ2xpcCIsICItd2Via2l0LWJhY2tncm91bmQt
Y2xpcDogYm9yZGVyLWJveCwgcGFkZGluZy1ib3g7IikgaXMgImJvcmRlci1ib3gsIHBhZGRpbmct
Ym94IgorUEFTUyB0ZXN0KCJiYWNrZ3JvdW5kT3JpZ2luIiwgImJhY2tncm91bmQtb3JpZ2luOiBi
b3JkZXItYm94LCBwYWRkaW5nLWJveCwgY29udGVudC1ib3g7IikgaXMgImJvcmRlci1ib3gsIHBh
ZGRpbmctYm94LCBjb250ZW50LWJveCIKK1BBU1MgdGVzdCgid2Via2l0QmFja2dyb3VuZE9yaWdp
biIsICItd2Via2l0LWJhY2tncm91bmQtb3JpZ2luOiBib3JkZXItYm94LCBwYWRkaW5nLWJveCwg
Y29udGVudC1ib3g7IikgaXMgImJvcmRlci1ib3gsIHBhZGRpbmctYm94LCBjb250ZW50LWJveCIK
K1BBU1MgdGVzdCgiYmFja2dyb3VuZFBvc2l0aW9uIiwgImJhY2tncm91bmQtcG9zaXRpb246IDIw
cHggMzBweCwgMTAlIDkwJSwgdG9wLCBsZWZ0LCBjZW50ZXI7IikgaXMgIjIwcHggMzBweCwgMTAl
IDkwJSwgNTAlIDAlLCAwJSA1MCUsIDUwJSA1MCUiCitQQVNTIHRlc3QoImJhY2tncm91bmRQb3Np
dGlvblgiLCAiYmFja2dyb3VuZC1wb3NpdGlvbi14OiAyMHB4LCAxMCUsIHJpZ2h0LCBsZWZ0LCBj
ZW50ZXI7IikgaXMgIjIwcHgsIDEwJSwgMTAwJSwgMCUsIDUwJSIKK1BBU1MgdGVzdCgiYmFja2dy
b3VuZFBvc2l0aW9uWSIsICJiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6IDIwcHgsIDEwJSwgYm90dG9t
LCB0b3AsIGNlbnRlcjsiKSBpcyAiMjBweCwgMTAlLCAxMDAlLCAwJSwgNTAlIgorUEFTUyB0ZXN0
KCJ3ZWJraXRNYXNrSW1hZ2UiLCAiLXdlYmtpdC1tYXNrOiBub25lIDEwcHggMTBweCwgdXJsKGh0
dHA6Ly9leGFtcGxlLmNvbS9mb28ucG5nKSAyMHB4IDIwcHg7IikgaXMgIm5vbmUsIHVybChodHRw
Oi8vZXhhbXBsZS5jb20vZm9vLnBuZykiCitQQVNTIHRlc3QoIndlYmtpdE1hc2tQb3NpdGlvbiIs
ICItd2Via2l0LW1hc2s6IG5vbmUgMTBweCAxMHB4LCB1cmwoaHR0cDovL2V4YW1wbGUuY29tL2Zv
by5wbmcpIDIwcHggMjBweDsiKSBpcyAiMTBweCAxMHB4LCAyMHB4IDIwcHgiCitQQVNTIHRlc3Qo
IndlYmtpdE1hc2tJbWFnZSIsICItd2Via2l0LW1hc2staW1hZ2U6IG5vbmUsIHVybChodHRwOi8v
ZXhhbXBsZS5jb20vYmFyLnBuZyk7IikgaXMgIm5vbmUsIHVybChodHRwOi8vZXhhbXBsZS5jb20v
YmFyLnBuZykiCitQQVNTIHRlc3QoIndlYmtpdE1hc2tTaXplIiwgIi13ZWJraXQtbWFzay1zaXpl
OiBjb250YWluLCBjb3ZlciwgMjBweCAxMCU7IikgaXMgImNvbnRhaW4sIGNvdmVyLCAyMHB4IDEw
JSIKK1BBU1MgdGVzdCgid2Via2l0TWFza1JlcGVhdCIsICItd2Via2l0LW1hc2stcmVwZWF0OiBy
ZXBlYXQteCwgcmVwZWF0LXksIHJlcGVhdCwgbm8tcmVwZWF0OyIpIGlzICJyZXBlYXQteCwgcmVw
ZWF0LXksIHJlcGVhdCwgbm8tcmVwZWF0IgorUEFTUyB0ZXN0KCJ3ZWJraXRNYXNrQ2xpcCIsICIt
d2Via2l0LW1hc2stY2xpcDogYm9yZGVyLWJveCwgcGFkZGluZy1ib3g7IikgaXMgImJvcmRlci1i
b3gsIHBhZGRpbmctYm94IgorUEFTUyB0ZXN0KCJ3ZWJraXRNYXNrT3JpZ2luIiwgIi13ZWJraXQt
bWFzay1vcmlnaW46IGJvcmRlci1ib3gsIHBhZGRpbmctYm94LCBjb250ZW50LWJveDsiKSBpcyAi
Ym9yZGVyLWJveCwgcGFkZGluZy1ib3gsIGNvbnRlbnQtYm94IgorUEFTUyB0ZXN0KCJ3ZWJraXRN
YXNrUG9zaXRpb24iLCAiLXdlYmtpdC1tYXNrLXBvc2l0aW9uOiAyMHB4IDMwcHgsIDEwJSA5MCUs
IHRvcCwgbGVmdCwgY2VudGVyOyIpIGlzICIyMHB4IDMwcHgsIDEwJSA5MCUsIDUwJSAwJSwgMCUg
NTAlLCA1MCUgNTAlIgorUEFTUyB0ZXN0KCJ3ZWJraXRNYXNrUG9zaXRpb25YIiwgIi13ZWJraXQt
bWFzay1wb3NpdGlvbi14OiAyMHB4LCAxMCUsIHJpZ2h0LCBsZWZ0LCBjZW50ZXI7IikgaXMgIjIw
cHgsIDEwJSwgMTAwJSwgMCUsIDUwJSIKK1BBU1MgdGVzdCgid2Via2l0TWFza1Bvc2l0aW9uWSIs
ICItd2Via2l0LW1hc2stcG9zaXRpb24teTogMjBweCwgMTAlLCBib3R0b20sIHRvcCwgY2VudGVy
OyIpIGlzICIyMHB4LCAxMCUsIDEwMCUsIDAlLCA1MCUiCitQQVNTIHRlc3QoIndlYmtpdE1hc2tD
b21wb3NpdGUiLCAiLXdlYmtpdC1tYXNrLWNvbXBvc2l0ZTogc291cmNlLW92ZXIsIGNvcHksIGRl
c3RpbmF0aW9uLWluIikgaXMgInNvdXJjZS1vdmVyLCBjb3B5LCBkZXN0aW5hdGlvbi1pbiIKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2JhY2tncm91bmRzL211bHRpcGxlLWJhY2tncm91bmRzLWNv
bXB1dGVkLXN0eWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2JhY2tncm91bmRzL211bHRpcGxl
LWJhY2tncm91bmRzLWNvbXB1dGVkLXN0eWxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWMyMzhmYTk1M2Ex
NmNhMTdkZGZhNjE2MDNkMTEwZTc5OTIwNGRhNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvYmFja2dyb3VuZHMvbXVsdGlwbGUtYmFja2dyb3VuZHMtY29tcHV0ZWQtc3R5bGUu
aHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvbXVsdGlwbGUtYmFj
a2dyb3VuZHMtY29tcHV0ZWQtc3R5bGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9iYWNrZ3JvdW5kcy9zY3JpcHQtdGVzdHMvVEVN
UExBVEUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvYmFja2dyb3VuZHMvc2NyaXB0LXRlc3RzL1RF
TVBMQVRFLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGM2MWNjODI0NTQ0MDVlOTkzNWVjMGZlYzMyODkwMWQ0
NDY5YTdkMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvYmFja2dyb3VuZHMv
c2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0iWU9V
Ul9KU19GSUxFX0hFUkUiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9iYWNrZ3JvdW5kcy9zY3JpcHQtdGVzdHMvbXVsdGlwbGUtYmFja2dy
b3VuZHMtY29tcHV0ZWQtc3R5bGUuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2JhY2tncm91bmRzL3Nj
cmlwdC10ZXN0cy9tdWx0aXBsZS1iYWNrZ3JvdW5kcy1jb21wdXRlZC1zdHlsZS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yYTMwNTIwODFiNzQ1N2JhN2Y4YmZjMzBjZWUyMDcyZWUzZmNiZjViCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9iYWNrZ3JvdW5kcy9zY3JpcHQtdGVzdHMvbXVsdGlw
bGUtYmFja2dyb3VuZHMtY29tcHV0ZWQtc3R5bGUuanMKQEAgLTAsMCArMSw0OCBAQAorZGVzY3Jp
cHRpb24oIlRoaXMgdGVzdHMgY2hlY2tzIHRoYXQgYWxsIG9mIHRoZSBpbnB1dCB2YWx1ZXMgZm9y
IGJhY2tncm91bmQtcmVwZWF0IHBhcnNlIGNvcnJlY3RseS4iKTsKKworZnVuY3Rpb24gdGVzdChw
cm9wZXJ0eSwgdmFsdWUpCit7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworICAgIGRpdi5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgdmFsdWUpOworICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKKyAgICAKKyAgICB2YXIgcmVzdWx0ID0gd2luZG93
LmdldENvbXB1dGVkU3R5bGUoZGl2LCBwcm9wZXJ0eSlbcHJvcGVydHldOworICAgIGRvY3VtZW50
LmJvZHkucmVtb3ZlQ2hpbGQoZGl2KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvLyBzaG9y
dGhhbmRzCitzaG91bGRCZSgndGVzdCgiYmFja2dyb3VuZEltYWdlIiwgImJhY2tncm91bmQ6IG5v
bmUgMTBweCAxMHB4LCB1cmwoaHR0cDovL2V4YW1wbGUuY29tL2Zvby5wbmcpIDIwcHggMjBweDsi
KScsICcibm9uZSwgdXJsKGh0dHA6Ly9leGFtcGxlLmNvbS9mb28ucG5nKSInKTsKK3Nob3VsZEJl
KCd0ZXN0KCJiYWNrZ3JvdW5kUG9zaXRpb24iLCAiYmFja2dyb3VuZDogbm9uZSAxMHB4IDEwcHgs
IHVybChodHRwOi8vZXhhbXBsZS5jb20vZm9vLnBuZykgMjBweCAyMHB4OyIpJywgJyIxMHB4IDEw
cHgsIDIwcHggMjBweCInKTsKKworLy8gYmFja2dyb3VuZCBsb25naGFuZHMKK3Nob3VsZEJlKCd0
ZXN0KCJiYWNrZ3JvdW5kSW1hZ2UiLCAiYmFja2dyb3VuZC1pbWFnZTogdXJsKGh0dHA6Ly9leGFt
cGxlLmNvbS9mb28ucG5nKSwgbm9uZSwgdXJsKGh0dHA6Ly9leGFtcGxlLmNvbS9iYXIucG5nKTsi
KScsICcidXJsKGh0dHA6Ly9leGFtcGxlLmNvbS9mb28ucG5nKSwgbm9uZSwgdXJsKGh0dHA6Ly9l
eGFtcGxlLmNvbS9iYXIucG5nKSInKTsKK3Nob3VsZEJlKCd0ZXN0KCJiYWNrZ3JvdW5kUmVwZWF0
IiwgImJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteCwgcmVwZWF0LXksIHJlcGVhdCwgbm8tcmVw
ZWF0OyIpJywgJyJyZXBlYXQteCwgcmVwZWF0LXksIHJlcGVhdCwgbm8tcmVwZWF0IicpOworc2hv
dWxkQmUoJ3Rlc3QoImJhY2tncm91bmRTaXplIiwgImJhY2tncm91bmQtc2l6ZTogY29udGFpbiwg
Y292ZXIsIDIwcHggMTAlOyIpJywgJyJjb250YWluLCBjb3ZlciwgMjBweCAxMCUiJyk7CitzaG91
bGRCZSgndGVzdCgid2Via2l0QmFja2dyb3VuZFNpemUiLCAiLXdlYmtpdC1iYWNrZ3JvdW5kLXNp
emU6IGNvbnRhaW4sIGNvdmVyLCAyMHB4IDEwJTsiKScsICciY29udGFpbiwgY292ZXIsIDIwcHgg
MTAlIicpOworc2hvdWxkQmUoJ3Rlc3QoIndlYmtpdEJhY2tncm91bmRDb21wb3NpdGUiLCAiLXdl
YmtpdC1iYWNrZ3JvdW5kLWNvbXBvc2l0ZTogc291cmNlLW92ZXIsIGNvcHksIGRlc3RpbmF0aW9u
LWluIiknLCAnInNvdXJjZS1vdmVyLCBjb3B5LCBkZXN0aW5hdGlvbi1pbiInKTsKK3Nob3VsZEJl
KCd0ZXN0KCJiYWNrZ3JvdW5kQXR0YWNobWVudCIsICJiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZp
eGVkLCBzY3JvbGwsIGxvY2FsOyIpJywgJyJmaXhlZCwgc2Nyb2xsLCBsb2NhbCInKTsKK3Nob3Vs
ZEJlKCd0ZXN0KCJiYWNrZ3JvdW5kQ2xpcCIsICJiYWNrZ3JvdW5kLWNsaXA6IGJvcmRlci1ib3gs
IHBhZGRpbmctYm94OyIpJywgJyJib3JkZXItYm94LCBwYWRkaW5nLWJveCInKTsKK3Nob3VsZEJl
KCd0ZXN0KCJ3ZWJraXRCYWNrZ3JvdW5kQ2xpcCIsICItd2Via2l0LWJhY2tncm91bmQtY2xpcDog
Ym9yZGVyLWJveCwgcGFkZGluZy1ib3g7IiknLCAnImJvcmRlci1ib3gsIHBhZGRpbmctYm94Iicp
Oworc2hvdWxkQmUoJ3Rlc3QoImJhY2tncm91bmRPcmlnaW4iLCAiYmFja2dyb3VuZC1vcmlnaW46
IGJvcmRlci1ib3gsIHBhZGRpbmctYm94LCBjb250ZW50LWJveDsiKScsICciYm9yZGVyLWJveCwg
cGFkZGluZy1ib3gsIGNvbnRlbnQtYm94IicpOworc2hvdWxkQmUoJ3Rlc3QoIndlYmtpdEJhY2tn
cm91bmRPcmlnaW4iLCAiLXdlYmtpdC1iYWNrZ3JvdW5kLW9yaWdpbjogYm9yZGVyLWJveCwgcGFk
ZGluZy1ib3gsIGNvbnRlbnQtYm94OyIpJywgJyJib3JkZXItYm94LCBwYWRkaW5nLWJveCwgY29u
dGVudC1ib3giJyk7CitzaG91bGRCZSgndGVzdCgiYmFja2dyb3VuZFBvc2l0aW9uIiwgImJhY2tn
cm91bmQtcG9zaXRpb246IDIwcHggMzBweCwgMTAlIDkwJSwgdG9wLCBsZWZ0LCBjZW50ZXI7Iikn
LCAnIjIwcHggMzBweCwgMTAlIDkwJSwgNTAlIDAlLCAwJSA1MCUsIDUwJSA1MCUiJyk7CitzaG91
bGRCZSgndGVzdCgiYmFja2dyb3VuZFBvc2l0aW9uWCIsICJiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6
IDIwcHgsIDEwJSwgcmlnaHQsIGxlZnQsIGNlbnRlcjsiKScsICciMjBweCwgMTAlLCAxMDAlLCAw
JSwgNTAlIicpOworc2hvdWxkQmUoJ3Rlc3QoImJhY2tncm91bmRQb3NpdGlvblkiLCAiYmFja2dy
b3VuZC1wb3NpdGlvbi15OiAyMHB4LCAxMCUsIGJvdHRvbSwgdG9wLCBjZW50ZXI7IiknLCAnIjIw
cHgsIDEwJSwgMTAwJSwgMCUsIDUwJSInKTsKKworLy8gbWFzayBzaG9ydGhhbmRzCitzaG91bGRC
ZSgndGVzdCgid2Via2l0TWFza0ltYWdlIiwgIi13ZWJraXQtbWFzazogbm9uZSAxMHB4IDEwcHgs
IHVybChodHRwOi8vZXhhbXBsZS5jb20vZm9vLnBuZykgMjBweCAyMHB4OyIpJywgJyJub25lLCB1
cmwoaHR0cDovL2V4YW1wbGUuY29tL2Zvby5wbmcpIicpOworc2hvdWxkQmUoJ3Rlc3QoIndlYmtp
dE1hc2tQb3NpdGlvbiIsICItd2Via2l0LW1hc2s6IG5vbmUgMTBweCAxMHB4LCB1cmwoaHR0cDov
L2V4YW1wbGUuY29tL2Zvby5wbmcpIDIwcHggMjBweDsiKScsICciMTBweCAxMHB4LCAyMHB4IDIw
cHgiJyk7CisKKy8vIG1hc2sgbG9uZ2hhbmRzCitzaG91bGRCZSgndGVzdCgid2Via2l0TWFza0lt
YWdlIiwgIi13ZWJraXQtbWFzay1pbWFnZTogbm9uZSwgdXJsKGh0dHA6Ly9leGFtcGxlLmNvbS9i
YXIucG5nKTsiKScsICcibm9uZSwgdXJsKGh0dHA6Ly9leGFtcGxlLmNvbS9iYXIucG5nKSInKTsK
K3Nob3VsZEJlKCd0ZXN0KCJ3ZWJraXRNYXNrU2l6ZSIsICItd2Via2l0LW1hc2stc2l6ZTogY29u
dGFpbiwgY292ZXIsIDIwcHggMTAlOyIpJywgJyJjb250YWluLCBjb3ZlciwgMjBweCAxMCUiJyk7
CitzaG91bGRCZSgndGVzdCgid2Via2l0TWFza1JlcGVhdCIsICItd2Via2l0LW1hc2stcmVwZWF0
OiByZXBlYXQteCwgcmVwZWF0LXksIHJlcGVhdCwgbm8tcmVwZWF0OyIpJywgJyJyZXBlYXQteCwg
cmVwZWF0LXksIHJlcGVhdCwgbm8tcmVwZWF0IicpOworc2hvdWxkQmUoJ3Rlc3QoIndlYmtpdE1h
c2tDbGlwIiwgIi13ZWJraXQtbWFzay1jbGlwOiBib3JkZXItYm94LCBwYWRkaW5nLWJveDsiKScs
ICciYm9yZGVyLWJveCwgcGFkZGluZy1ib3giJyk7CitzaG91bGRCZSgndGVzdCgid2Via2l0TWFz
a09yaWdpbiIsICItd2Via2l0LW1hc2stb3JpZ2luOiBib3JkZXItYm94LCBwYWRkaW5nLWJveCwg
Y29udGVudC1ib3g7IiknLCAnImJvcmRlci1ib3gsIHBhZGRpbmctYm94LCBjb250ZW50LWJveCIn
KTsKK3Nob3VsZEJlKCd0ZXN0KCJ3ZWJraXRNYXNrUG9zaXRpb24iLCAiLXdlYmtpdC1tYXNrLXBv
c2l0aW9uOiAyMHB4IDMwcHgsIDEwJSA5MCUsIHRvcCwgbGVmdCwgY2VudGVyOyIpJywgJyIyMHB4
IDMwcHgsIDEwJSA5MCUsIDUwJSAwJSwgMCUgNTAlLCA1MCUgNTAlIicpOworc2hvdWxkQmUoJ3Rl
c3QoIndlYmtpdE1hc2tQb3NpdGlvblgiLCAiLXdlYmtpdC1tYXNrLXBvc2l0aW9uLXg6IDIwcHgs
IDEwJSwgcmlnaHQsIGxlZnQsIGNlbnRlcjsiKScsICciMjBweCwgMTAlLCAxMDAlLCAwJSwgNTAl
IicpOworc2hvdWxkQmUoJ3Rlc3QoIndlYmtpdE1hc2tQb3NpdGlvblkiLCAiLXdlYmtpdC1tYXNr
LXBvc2l0aW9uLXk6IDIwcHgsIDEwJSwgYm90dG9tLCB0b3AsIGNlbnRlcjsiKScsICciMjBweCwg
MTAlLCAxMDAlLCAwJSwgNTAlIicpOworc2hvdWxkQmUoJ3Rlc3QoIndlYmtpdE1hc2tDb21wb3Np
dGUiLCAiLXdlYmtpdC1tYXNrLWNvbXBvc2l0ZTogc291cmNlLW92ZXIsIGNvcHksIGRlc3RpbmF0
aW9uLWluIiknLCAnInNvdXJjZS1vdmVyLCBjb3B5LCBkZXN0aW5hdGlvbi1pbiInKTsKKwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDJiNGYyY2RjNmQ5ZDFhMTIwMTU3NmYwMGZiNTQy
MDI1YWE2ZDk2MWIuLjkyZWU0MmUzMTg4NGZkMGNjZjlmYTA3NDkzNjM2MWM2ZjllZDg0NjMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMTAtMTEtMDEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TXVsdGlwbGUgYmFja2dyb3VuZCBwcm9wZXJ0aWVzIGFyZSBub3QgcmV0cmlldmFibGUgdmlhIERP
TSBtZXRob2QgZ2V0Q29tcHV0ZWRTdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMyMDMKKyAgICAgICAgCisgICAgICAgIFJldHVybiBsaXN0cyBv
ZiB2YWx1ZXMgZnJvbSBnZXRDb21wdXRlZFN0eWxlKCkgZm9yIG11bHRpcGxlIGJhY2tncm91bmRz
LAorICAgICAgICBhbmQgbXVsdGlwbGUgbWFza3MuCisKKyAgICAgICAgVGVzdDogZmFzdC9iYWNr
Z3JvdW5kcy9tdWx0aXBsZS1iYWNrZ3JvdW5kcy1jb21wdXRlZC1zdHlsZS5odG1sCisKKyAgICAg
ICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmZpbGxTaXplVG9DU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOgorCiAyMDEwLTExLTAxICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBYYW4gTG9wZXouCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwIGIvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cAppbmRleCBmZGNhYjI4YjNjOGMzZWM4YTQyZDc4ZTY5ZDBmZDMxMTBhNGQ3MDY4Li42NjczMTI3
M2FhZDcyMTdlNTU2YmE4MmY2Y2M4NzNlZGM5N2ZiYjk0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTcwMCw2ICs3MDAsMjAgQEAgc3RhdGljIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IGZpbGxSZXBlYXRUb0NTU1ZhbHVlKEVGaWxsUmVwZWF0IHhSZXBl
YXQsIEVGaWxsUmVwZWEKICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiB9CiAKK3N0YXRpYyBQ
YXNzUmVmUHRyPENTU1ZhbHVlPiBmaWxsU2l6ZVRvQ1NTVmFsdWUoY29uc3QgRmlsbFNpemUmIHNp
emUpCit7CisgICAgaWYgKHNpemUudHlwZSA9PSBDb250YWluKQorICAgICAgICByZXR1cm4gQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVDb250YWluKTsKKworICAg
IGlmIChzaXplLnR5cGUgPT0gQ292ZXIpCisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUNvdmVyKTsKKworICAgIFJlZlB0cjxDU1NWYWx1
ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAg
bGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc2l6ZS5zaXplLndpZHRoKCkp
KTsKKyAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzaXplLnNpemUu
aGVpZ2h0KCkpKTsKKyAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7Cit9CisKIHN0YXRpYyB2b2lk
IGxvZ1VuaW1wbGVtZW50ZWRQcm9wZXJ0eUlEKGludCBwcm9wZXJ0eUlEKQogewogICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoSGFzaFNldDxpbnQ+LCBwcm9wZXJ0eUlEU2V0LCAoKSk7CkBAIC03NDMs
NDcgKzc1NywxNDEgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKGludCBwcm9wZXIKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcjoKICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlQ29sb3IobV9hbGxvd1Zpc2l0ZWRTdHlsZT8gc3R5bGUtPnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikucmdiKCkgOiBzdHlsZS0+YmFj
a2dyb3VuZENvbG9yKCkucmdiKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZEltYWdlOgotICAgICAgICAgICAgLy8gRklYTUU6IEJyb2tlbiBmb3IgbXVsdGlwbGUgYmFja2dy
b3VuZHMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDg1MwotICAg
ICAgICAgICAgaWYgKHN0eWxlLT5iYWNrZ3JvdW5kSW1hZ2UoKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gc3R5bGUtPmJhY2tncm91bmRJbWFnZSgpLT5jc3NWYWx1ZSgpOwotICAgICAgICAgICAg
cmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSk7
CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2U6IHsKKyAgICAgICAgICAg
IGNvbnN0IEZpbGxMYXllciogbGF5ZXJzID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tJbWFnZSA/IHN0eWxlLT5tYXNrTGF5ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVy
cygpOworICAgICAgICAgICAgaWYgKCFsYXllcnMpCisgICAgICAgICAgICAgICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSk7CisKKyAgICAg
ICAgICAgIGlmICghbGF5ZXJzLT5uZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobGF5ZXJz
LT5pbWFnZSgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGF5ZXJzLT5pbWFnZSgpLT5j
c3NWYWx1ZSgpOworCisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9uZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1h
U2VwYXJhdGVkKCk7CisgICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVy
ID0gbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGN1cnJMYXllci0+aW1hZ2UoKSkKKyAgICAgICAgICAgICAgICAg
ICAgbGlzdC0+YXBwZW5kKGN1cnJMYXllci0+aW1hZ2UoKS0+Y3NzVmFsdWUoKSk7CisgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKSk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgICAgIH0KICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplOgotICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0QmFja2dyb3VuZFNpemU6IHsKLSAgICAgICAgICAgIEVGaWxsU2l6ZVR5cGUgc2l6ZSA9
IHN0eWxlLT5iYWNrZ3JvdW5kU2l6ZVR5cGUoKTsKLSAgICAgICAgICAgIGlmIChzaXplID09IENv
bnRhaW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJ
ZGVudGlmaWVyKENTU1ZhbHVlQ29udGFpbik7Ci0gICAgICAgICAgICBpZiAoc2l6ZSA9PSBDb3Zl
cikKLSAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50
aWZpZXIoQ1NTVmFsdWVDb3Zlcik7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBs
aXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwotICAgICAgICAgICAg
bGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPmJhY2tncm91bmRT
aXplTGVuZ3RoKCkud2lkdGgoKSkpOwotICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPmJhY2tncm91bmRTaXplTGVuZ3RoKCkuaGVpZ2h0KCkp
KTsKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRTaXplOgorICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1NpemU6IHsKKyAgICAgICAgICAgIGNvbnN0IEZp
bGxMYXllciogbGF5ZXJzID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXpl
ID8gc3R5bGUtPm1hc2tMYXllcnMoKSA6IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7CisgICAg
ICAgICAgICBpZiAoIWxheWVycy0+bmV4dCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmaWxs
U2l6ZVRvQ1NTVmFsdWUobGF5ZXJzLT5zaXplKCkpOworCisgICAgICAgICAgICBSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwor
ICAgICAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9IGxheWVyczsgY3Vy
ckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKKyAgICAgICAgICAgICAgICBs
aXN0LT5hcHBlbmQoZmlsbFNpemVUb0NTU1ZhbHVlKGN1cnJMYXllci0+c2l6ZSgpKSk7CisKICAg
ICAgICAgICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKLSAgICAgICAgfSAgCisgICAgICAgIH0K
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gZmlsbFJlcGVhdFRvQ1NTVmFsdWUoc3R5bGUtPmJhY2tncm91bmRSZXBlYXRYKCksIHN0
eWxlLT5iYWNrZ3JvdW5kUmVwZWF0WSgpKTsKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tSZXBlYXQ6IHsKKyAgICAgICAgICAgIGNvbnN0IEZpbGxMYXllciogbGF5ZXJzID0gcHJv
cGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQgPyBzdHlsZS0+bWFza0xheWVy
cygpIDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAgICAgIGlmICghbGF5ZXJz
LT5uZXh0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZpbGxSZXBlYXRUb0NTU1ZhbHVlKGxh
eWVycy0+cmVwZWF0WCgpLCBsYXllcnMtPnJlcGVhdFkoKSk7CisKKyAgICAgICAgICAgIFJlZlB0
cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVk
KCk7CisgICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0gbGF5ZXJz
OyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKQorICAgICAgICAgICAg
ICAgIGxpc3QtPmFwcGVuZChmaWxsUmVwZWF0VG9DU1NWYWx1ZShjdXJyTGF5ZXItPnJlcGVhdFgo
KSwgY3VyckxheWVyLT5yZXBlYXRZKCkpKTsKKworICAgICAgICAgICAgcmV0dXJuIGxpc3QucmVs
ZWFzZSgpOworICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3Jv
dW5kQ29tcG9zaXRlOgotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGUoc3R5bGUtPmJhY2tncm91bmRDb21wb3NpdGUoKSk7CisgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXNrQ29tcG9zaXRlOiB7CisgICAgICAgICAgICBjb25zdCBGaWxsTGF5ZXIqIGxh
eWVycyA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlID8gc3R5
bGUtPm1hc2tMYXllcnMoKSA6IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7CisgICAgICAgICAg
ICBpZiAoIWxheWVycy0+bmV4dCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKGxheWVycy0+Y29tcG9zaXRlKCkpOworCisgICAgICAgICAgICBSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRl
ZCgpOworICAgICAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9IGxheWVy
czsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKKyAgICAgICAgICAg
ICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShjdXJyTGF5ZXItPmNv
bXBvc2l0ZSgpKSk7CisKKyAgICAgICAgICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKKyAgICAg
ICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQ6Ci0gICAg
ICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+YmFja2dyb3Vu
ZEF0dGFjaG1lbnQoKSk7CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQXR0YWNo
bWVudDogeworICAgICAgICAgICAgY29uc3QgRmlsbExheWVyKiBsYXllcnMgPSBwcm9wZXJ0eUlE
ID09IENTU1Byb3BlcnR5V2Via2l0TWFza0F0dGFjaG1lbnQgPyBzdHlsZS0+bWFza0xheWVycygp
IDogc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAgICAgIGlmICghbGF5ZXJzLT5u
ZXh0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
bGF5ZXJzLT5hdHRhY2htZW50KCkpOworCisgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0
PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgICAgICAg
ICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGN1cnJMYXllciA9IGxheWVyczsgY3VyckxheWVyOyBj
dXJyTGF5ZXIgPSBjdXJyTGF5ZXItPm5leHQoKSkKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBl
bmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShjdXJyTGF5ZXItPmF0dGFjaG1lbnQoKSkpOwor
CisgICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgICAgIH0KICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
QmFja2dyb3VuZE9yaWdpbjoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91
bmRDbGlwOgotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZE9yaWdpbjog
ewotICAgICAgICAgICAgRUZpbGxCb3ggYm94ID0gKHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlX
ZWJraXRCYWNrZ3JvdW5kQ2xpcCB8fCBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENsaXApID8gc3R5bGUtPmJhY2tncm91bmRDbGlwKCkgOiBzdHlsZS0+YmFja2dyb3VuZE9yaWdp
bigpOwotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoYm94KTsK
KyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRPcmlnaW46CisgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcDoKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tPcmlnaW46IHsKKyAgICAgICAgICAgIGNvbnN0IEZpbGxMYXllciogbGF5ZXJz
ID0gKHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCB8fCBwcm9wZXJ0eUlE
ID09IENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbikgPyBzdHlsZS0+bWFza0xheWVycygpIDog
c3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsKKyAgICAgICAgICAgIGJvb2wgaXNDbGlwID0gcHJv
cGVydHlJRCA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwIHx8IHByb3BlcnR5SUQgPT0gQ1NT
UHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ2xpcCB8fCBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5
V2Via2l0TWFza0NsaXA7CisgICAgICAgICAgICBpZiAoIWxheWVycy0+bmV4dCgpKSB7CisgICAg
ICAgICAgICAgICAgRUZpbGxCb3ggYm94ID0gaXNDbGlwID8gbGF5ZXJzLT5jbGlwKCkgOiBsYXll
cnMtPm9yaWdpbigpOworICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKGJveCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFJl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJh
dGVkKCk7CisgICAgICAgICAgICBmb3IgKGNvbnN0IEZpbGxMYXllciogY3VyckxheWVyID0gbGF5
ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1cnJMYXllci0+bmV4dCgpKSB7CisgICAgICAg
ICAgICAgICAgRUZpbGxCb3ggYm94ID0gaXNDbGlwID8gY3VyckxheWVyLT5jbGlwKCkgOiBjdXJy
TGF5ZXItPm9yaWdpbigpOworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKGJveCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1
cm4gbGlzdC5yZWxlYXNlKCk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRQb3NpdGlvbjogewotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlz
dCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbjoKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tQb3NpdGlvbjogeworICAgICAgICAgICAgY29uc3QgRmlsbExheWVyKiBsYXllcnMg
PSBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uID8gc3R5bGUtPm1h
c2tMYXllcnMoKSA6IHN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7CisgICAgICAgICAgICBpZiAo
IWxheWVycy0+bmV4dCgpKSB7CisgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4g
bGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAg
ICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShsYXllcnMtPnhQb3Np
dGlvbigpKSk7CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGUobGF5ZXJzLT55UG9zaXRpb24oKSkpOworICAgICAgICAgICAgICAgIHJldHVybiBs
aXN0LnJlbGVhc2UoKTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbGlzdC0+YXBwZW5k
KENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPmJhY2tncm91bmRYUG9zaXRpb24oKSkp
OwotICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5
bGUtPmJhY2tncm91bmRZUG9zaXRpb24oKSkpOworICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVl
TGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAg
ICAgICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBjdXJyTGF5ZXIgPSBsYXllcnM7IGN1cnJMYXll
cjsgY3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBwb3NpdGlvbkxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNl
U2VwYXJhdGVkKCk7CisgICAgICAgICAgICAgICAgcG9zaXRpb25MaXN0LT5hcHBlbmQoQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZShjdXJyTGF5ZXItPnhQb3NpdGlvbigpKSk7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb25MaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShjdXJy
TGF5ZXItPnlQb3NpdGlvbigpKSk7CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHBvc2l0
aW9uTGlzdCk7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHJldHVybiBsaXN0LnJlbGVh
c2UoKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0
aW9uWDoKLSAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxl
LT5iYWNrZ3JvdW5kWFBvc2l0aW9uKCkpOworICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWFza1Bvc2l0aW9uWDogeworICAgICAgICAgICAgY29uc3QgRmlsbExheWVyKiBsYXllcnMgPSBw
cm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCA/IHN0eWxlLT5tYXNr
TGF5ZXJzKCkgOiBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOworICAgICAgICAgICAgaWYgKCFs
YXllcnMtPm5leHQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShsYXllcnMtPnhQb3NpdGlvbigpKTsKKworICAgICAgICAgICAgUmVmUHRyPENTU1Zh
bHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAg
ICAgICAgICAgIGZvciAoY29uc3QgRmlsbExheWVyKiBjdXJyTGF5ZXIgPSBsYXllcnM7IGN1cnJM
YXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5uZXh0KCkpCisgICAgICAgICAgICAgICAgbGlz
dC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoY3VyckxheWVyLT54UG9zaXRpb24o
KSkpOworCisgICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CisgICAgICAgIH0KICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblk6Ci0gICAgICAgICAgICBy
ZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+YmFja2dyb3VuZFlQb3NpdGlv
bigpKTsKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblk6IHsKKyAg
ICAgICAgICAgIGNvbnN0IEZpbGxMYXllciogbGF5ZXJzID0gcHJvcGVydHlJRCA9PSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblkgPyBzdHlsZS0+bWFza0xheWVycygpIDogc3R5bGUtPmJh
Y2tncm91bmRMYXllcnMoKTsKKyAgICAgICAgICAgIGlmICghbGF5ZXJzLT5uZXh0KCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobGF5ZXJzLT55UG9z
aXRpb24oKSk7CisKKyAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NW
YWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAgICAgICAgICBmb3IgKGNvbnN0
IEZpbGxMYXllciogY3VyckxheWVyID0gbGF5ZXJzOyBjdXJyTGF5ZXI7IGN1cnJMYXllciA9IGN1
cnJMYXllci0+bmV4dCgpKQorICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKGN1cnJMYXllci0+eVBvc2l0aW9uKCkpKTsKKworICAgICAgICAgICAg
cmV0dXJuIGxpc3QucmVsZWFzZSgpOworICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJDb2xsYXBzZToKICAgICAgICAgICAgIGlmIChzdHlsZS0+Ym9yZGVyQ29sbGFwc2Uo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50
aWZpZXIoQ1NTVmFsdWVDb2xsYXBzZSk7CkBAIC0xMDMyLDQ0ICsxMTQwLDYgQEAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1Zh
bHVlKGludCBwcm9wZXIKICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKHN0eWxlLT5tYXJxdWVlTG9vcENvdW50KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVN
QkVSKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZToKICAgICAg
ICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT5tYXJxdWVlQmVo
YXZpb3IoKSk7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2U6Ci0gICAg
ICAgICAgICBpZiAoc3R5bGUtPm1hc2tJbWFnZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBz
dHlsZS0+bWFza0ltYWdlKCktPmNzc1ZhbHVlKCk7Ci0gICAgICAgICAgICByZXR1cm4gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVOb25lKTsKLSAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplOiB7Ci0gICAgICAgICAgICBFRmlsbFNpemVUeXBl
IHNpemUgPSBzdHlsZS0+bWFza1NpemVUeXBlKCk7Ci0gICAgICAgICAgICBpZiAoc2l6ZSA9PSBD
b250YWluKQotICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
SWRlbnRpZmllcihDU1NWYWx1ZUNvbnRhaW4pOwotICAgICAgICAgICAgaWYgKHNpemUgPT0gQ292
ZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVu
dGlmaWVyKENTU1ZhbHVlQ292ZXIpOwotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4g
bGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICAgICAgICAg
IGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT5tYXNrU2l6ZUxl
bmd0aCgpLndpZHRoKCkpKTsKLSAgICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlKHN0eWxlLT5tYXNrU2l6ZUxlbmd0aCgpLmhlaWdodCgpKSk7Ci0gICAgICAg
ICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7Ci0gICAgICAgIH0gIAotICAgICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdDoKLSAgICAgICAgICAgIHJldHVybiBmaWxsUmVwZWF0
VG9DU1NWYWx1ZShzdHlsZS0+bWFza1JlcGVhdFgoKSwgc3R5bGUtPm1hc2tSZXBlYXRZKCkpOwot
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0F0dGFjaG1lbnQ6Ci0gICAgICAgICAg
ICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+bWFza0F0dGFjaG1lbnQo
KSk7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlOgotICAgICAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPm1hc2tDb21wb3Np
dGUoKSk7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcDoKLSAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW46IHsKLSAgICAgICAgICAgIEVGaWxsQm94
IGJveCA9IChwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXAgPyBzdHlsZS0+
bWFza0NsaXAoKSA6IHN0eWxlLT5tYXNrT3JpZ2luKCkpOwotICAgICAgICAgICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoYm94KTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uOiB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTVmFs
dWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwotCi0g
ICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+
bWFza1hQb3NpdGlvbigpKSk7Ci0gICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZShzdHlsZS0+bWFza1lQb3NpdGlvbigpKSk7Ci0KLSAgICAgICAgICAgIHJl
dHVybiBsaXN0LnJlbGVhc2UoKTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TWFza1Bvc2l0aW9uWDoKLSAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKHN0eWxlLT5tYXNrWFBvc2l0aW9uKCkpOwotICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFza1Bvc2l0aW9uWToKLSAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlKHN0eWxlLT5tYXNrWVBvc2l0aW9uKCkpOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0VXNlck1vZGlmeToKICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlKHN0eWxlLT51c2VyTW9kaWZ5KCkpOwogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5TWF4SGVpZ2h0OiB7CkBAIC0xMzI3LDkgKzEzOTcsOCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVl
PiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHBy
b3BlcgogICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICAgICAgICAgIGNvbnN0IEFuaW1hdGlvbkxp
c3QqIHQgPSBzdHlsZS0+YW5pbWF0aW9ucygpOwogICAgICAgICAgICAgaWYgKHQpIHsKLSAgICAg
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHQtPnNpemUoKTsgKytpKSB7CisgICAg
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0LT5zaXplKCk7ICsraSkKICAgICAg
ICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodC0+
YW5pbWF0aW9uKGkpLT5uYW1lKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSk7Ci0g
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbGlz
dC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlTm9u
ZSkpOwogICAgICAgICAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOwo=
</data>
<flag name="review"
          id="62809"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>