<?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>30884</bug_id>
          
          <creation_ts>2009-10-28 15:18:27 -0700</creation_ts>
          <short_desc>REGRESSION: Web Inspector doesn&apos;t show CSS rules properly for iframes</short_desc>
          <delta_ts>2009-11-05 12:13:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Regression</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Jeffrey Rosen">jeff</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>fds</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>158731</commentid>
    <comment_count>0</comment_count>
      <attachid>42057</attachid>
    <who name="Jeffrey Rosen">jeff</who>
    <bug_when>2009-10-28 15:18:27 -0700</bug_when>
    <thetext>Created attachment 42057
iframe inspector bug

The web inspector no longer appears to be aware of CSS rules inside of iframes.  It incorrectly displays the parent&apos;s css rules instead.

See attachment, and inspect the iframe and notice that it says the background is blue, like the parent, instead of green.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160886</commentid>
    <comment_count>1</comment_count>
      <attachid>42578</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-05 11:07:14 -0800</bug_when>
    <thetext>Created attachment 42578
[PATCH]

While I was doing a test for this one.... I could not resist and brushed other tests a bit:
- reused console code
- run all tests after pending dispatches
- added a 200ms timeout instead of 0 one to see how it affects flakiness on bots
- reused some elements code with elements panel test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160888</commentid>
    <comment_count>2</comment_count>
      <attachid>42579</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-05 11:08:49 -0800</bug_when>
    <thetext>Created attachment 42579
[PATCH] Same with missing resources file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160915</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-11-05 12:13:53 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	LayoutTests/ChangeLog
	M	LayoutTests/inspector/console-dir.html
	M	LayoutTests/inspector/console-dirxml.html
	M	LayoutTests/inspector/console-format-collections-expected.txt
	M	LayoutTests/inspector/console-format-collections.html
	M	LayoutTests/inspector/console-format.html
	M	LayoutTests/inspector/console-tests.html
	M	LayoutTests/inspector/elements-panel-structure-expected.txt
	M	LayoutTests/inspector/elements-panel-structure.html
	M	LayoutTests/inspector/evaluate-in-frontend.js
	A	LayoutTests/inspector/resources/styles-iframe-data.html
	A	LayoutTests/inspector/styles-iframe-expected.txt
	A	LayoutTests/inspector/styles-iframe.html
	M	LayoutTests/platform/qt/Skipped
	M	WebCore/ChangeLog
	M	WebCore/inspector/InspectorController.cpp
	M	WebCore/inspector/front-end/DOMAgent.js
	M	WebCore/inspector/front-end/InjectedScript.js
	M	WebCore/inspector/front-end/TestController.js
Committed r50574</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>42057</attachid>
            <date>2009-10-28 15:18:27 -0700</date>
            <delta_ts>2009-10-28 15:18:27 -0700</delta_ts>
            <desc>iframe inspector bug</desc>
            <filename>iframe bug.zip</filename>
            <type>application/zip</type>
            <size>1567</size>
            <attacher name="Jeffrey Rosen">jeff</attacher>
            
              <data encoding="base64">UEsDBAoAAAAAAK55XDsAAAAAAAAAAAAAAAALABAAaWZyYW1lIGJ1Zy9VWAwAlcHoSgfC6Er1ARQA
UEsDBBQACAAIALt5XDsAAAAAAAAAAAAAAAAWABAAaWZyYW1lIGJ1Zy9pZnJhbWUuaHRtbFVYDABb
wuhKIcLoSvUBFABtzkEOgyAQBdA9p/jhAGXfondBGJVU0ciQlJjevYPtsqtJZn7efDvzuvTKzuSC
jMx1IXDdqdNMLzY+Z42VQnSdzv4gSrpXwLCFihOD88/p2EoK96ndHngray5EsBZq4ZjyTp6FgUsB
mQhxRN0KvEsYo+x4pj+YPMdRFroJ+sWs+RU1V+8PUEsHCOSRWD+FAAAAvgAAAFBLAwQKAAAAAADa
eVw7AAAAAAAAAAAAAAAACQAQAF9fTUFDT1NYL1VYDABbwuhKW8LoSvUBFABQSwMECgAAAAAA2nlc
OwAAAAAAAAAAAAAAABQAEABfX01BQ09TWC9pZnJhbWUgYnVnL1VYDABbwuhKW8LoSvUBFABQSwME
FAAIAAgAu3lcOwAAAAAAAAAAAAAAACEAEABfX01BQ09TWC9pZnJhbWUgYnVnLy5faWZyYW1lLmh0
bWxVWAwAW8LoSiHC6Er1ARQAY2AVY2dgYmDwTUxW8A9WiFCAApAYAycQGwFxBxCD+LsYiAKOISFB
DPs1j0N1zABiJTQljAhx0eT8XL3cxOSi/NzEktRiveTEotQShmoukCuS83NKc/MUbBXMLKzBAjmZ
eakgrjVXLQBQSwcIYIM7H2gAAAC6AAAAUEsDBBQACAAIAKd5XDsAAAAAAAAAAAAAAAAUABAAaWZy
YW1lIGJ1Zy90ZXN0Lmh0bWxVWAwAW8LoSvnB6Er1ARQALY5LDsMgEEP3nGLEJrvOvhm4C59pEhWS
CohUVPXuhdCVbenJNq0lBi1oZeOb5FIDQ6kvVrLwu6DLWUJkvxkls0vMu9QCwB6+wgescc8lHefu
7zacPMNXEF4drasznaXtkUxkyMmpafhbX5004YgNxkET/o/g9esHUEsHCMTNTdF4AAAAngAAAFBL
AwQUAAgACACneVw7AAAAAAAAAAAAAAAAHwAQAF9fTUFDT1NYL2lmcmFtZSBidWcvLl90ZXN0Lmh0
bWxVWAwAW8LoSvnB6Er1ARQAY2AVY2dgYmDwTUxW8A9WiFCAApAYAycQGwFxBxCD+LsYiAKOISFB
DPs1D0F1zABiJTQljAhx0eT8XL3cxOSi/NzEktRiveTEotQShmoukCuS83NKc/MUbBWMzKzBAjmZ
ealALpBXCwBQSwcIVp3ly2gAAAC6AAAAUEsBAhUDCgAAAAAArnlcOwAAAAAAAAAAAAAAAAsADAAA
AAAAAAAAQO1BAAAAAGlmcmFtZSBidWcvVVgIAJXB6EoHwuhKUEsBAhUDFAAIAAgAu3lcO+SRWD+F
AAAAvgAAABYADAAAAAAAAAAAQKSBOQAAAGlmcmFtZSBidWcvaWZyYW1lLmh0bWxVWAgAW8LoSiHC
6EpQSwECFQMKAAAAAADaeVw7AAAAAAAAAAAAAAAACQAMAAAAAAAAAABA/UESAQAAX19NQUNPU1gv
VVgIAFvC6EpbwuhKUEsBAhUDCgAAAAAA2nlcOwAAAAAAAAAAAAAAABQADAAAAAAAAAAAQP1BSQEA
AF9fTUFDT1NYL2lmcmFtZSBidWcvVVgIAFvC6EpbwuhKUEsBAhUDFAAIAAgAu3lcO2CDOx9oAAAA
ugAAACEADAAAAAAAAAAAQKSBiwEAAF9fTUFDT1NYL2lmcmFtZSBidWcvLl9pZnJhbWUuaHRtbFVY
CABbwuhKIcLoSlBLAQIVAxQACAAIAKd5XDvEzU3ReAAAAJ4AAAAUAAwAAAAAAAAAAECkgVICAABp
ZnJhbWUgYnVnL3Rlc3QuaHRtbFVYCABbwuhK+cHoSlBLAQIVAxQACAAIAKd5XDtWneXLaAAAALoA
AAAfAAwAAAAAAAAAAECkgRwDAABfX01BQ09TWC9pZnJhbWUgYnVnLy5fdGVzdC5odG1sVVgIAFvC
6Er5wehKUEsFBgAAAAAHAAcAKAIAAOEDAAAAAA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42578</attachid>
            <date>2009-11-05 11:07:14 -0800</date>
            <delta_ts>2009-11-05 11:08:49 -0800</delta_ts>
            <desc>[PATCH]</desc>
            <filename>styles_tests</filename>
            <type>text/plain</type>
            <size>22594</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhMjJhYmEwLi44MWUxOWNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMDktMTEt
MDUgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvciBkb2Vzbid0
IHNob3cgQ1NTIHJ1bGVzIHByb3Blcmx5IGZvciBpZnJhbWVzLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDg4NAorCisgICAgICAgICogaW5zcGVj
dG9yL2NvbnNvbGUtZGlyLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2NvbnNvbGUtZGlyeG1s
Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2NvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29sZS1mb3JtYXQtY29sbGVjdGlv
bnMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29sZS1mb3JtYXQuaHRtbDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvY29uc29sZS10ZXN0cy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9l
bGVtZW50cy1wYW5lbC1zdHJ1Y3R1cmUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rv
ci9lbGVtZW50cy1wYW5lbC1zdHJ1Y3R1cmUuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZXZh
bHVhdGUtaW4tZnJvbnRlbmQuanM6CisgICAgICAgIChleHBhbmRET01TdWJ0cmVlLnByb2Nlc3ND
aGlsZHJlbik6CisgICAgICAgIChleHBhbmRET01TdWJ0cmVlKToKKyAgICAgICAgKGR1bXBDb25z
b2xlTWVzc2FnZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMtaWZyYW1lLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy1pZnJhbWUuaHRtbDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKwogMjAwOS0xMS0wNSAgSmVmZiBT
Y2hpbGxlciAgPGNvZGVkcmVhZEBnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gRnJhc2VyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZGly
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1kaXIuaHRtbAppbmRleCA2NjE4
YWQ0Li4zMWNjZDg2IDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1k
aXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1kaXIuaHRtbApAQCAt
MTIsMTAgKzEyLDEwIEBAIGZ1bmN0aW9uIGRvaXQoKQogICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJl
c3VsdCkKICAgICB7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsg
KytpKQotICAgICAgICAgICAgb3V0cHV0KHJlc3VsdFtpXSk7CisgICAgICAgICAgICBvdXRwdXQo
cmVzdWx0W2ldLnRleHQpOwogICAgICAgICBub3RpZnlEb25lKCk7CiAgICAgfQotICAgIGV2YWx1
YXRlSW5XZWJJbnNwZWN0b3IoImR1bXBNZXNzYWdlcygpIiwgY2FsbGJhY2spOworICAgIGV2YWx1
YXRlSW5XZWJJbnNwZWN0b3IoImR1bXBDb25zb2xlTWVzc2FnZXMiLCBjYWxsYmFjayk7CiB9CiAK
IDwvc2NyaXB0PgpAQCAtMjYsMTcgKzI2LDYgQEAgZnVuY3Rpb24gZG9pdCgpCiBUZXN0cyB0aGF0
IGNvbnNvbGUgbG9nZ2luZyBkdW1wcyBwcm9wZXIgbWVzc2FnZXMuCiA8L3A+CiAKLTxkaXYgaWQ9
ImZyb250ZW5kLXNjcmlwdCIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+Ci1mdW5jdGlvbiBkdW1wTWVz
c2FnZXMoKQotewotICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICB2YXIgbWVzc2FnZXMgPSBXZWJJ
bnNwZWN0b3IuY29uc29sZS5tZXNzYWdlczsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1lc3Nh
Z2VzLmxlbmd0aDsgKytpKQotICAgICAgICByZXN1bHQucHVzaChtZXNzYWdlc1tpXS50b01lc3Nh
Z2VFbGVtZW50KCkudGV4dENvbnRlbnQucmVwbGFjZSgvXHUyMDBiL2csICIiKSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLTwvZGl2PgotCiA8ZGl2IGlkPSJvdXRwdXQiPgogPC9kaXY+CiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWRpcnhtbC5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZGlyeG1sLmh0bWwKaW5kZXggZWJkNmM0Yy4uODBl
YmZlZiAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZGlyeG1sLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZGlyeG1sLmh0bWwKQEAgLTEw
LDEwICsxMCwxMCBAQCBmdW5jdGlvbiBkb2l0KCkKICAgICBmdW5jdGlvbiBjYWxsYmFjayhyZXN1
bHQpCiAgICAgewogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7ICsr
aSkKLSAgICAgICAgICAgIG91dHB1dChyZXN1bHRbaV0pOworICAgICAgICAgICAgb3V0cHV0KHJl
c3VsdFtpXS50ZXh0KTsKICAgICAgICAgbm90aWZ5RG9uZSgpOwogICAgIH0KLSAgICBldmFsdWF0
ZUluV2ViSW5zcGVjdG9yKCJkdW1wTWVzc2FnZXMoKSIsIGNhbGxiYWNrKTsKKyAgICBldmFsdWF0
ZUluV2ViSW5zcGVjdG9yKCJkdW1wQ29uc29sZU1lc3NhZ2VzIiwgY2FsbGJhY2spOwogfQogCiA8
L3NjcmlwdD4KQEAgLTI0LDE3ICsyNCw2IEBAIGZ1bmN0aW9uIGRvaXQoKQogVGVzdHMgdGhhdCBj
b25zb2xlIGxvZ2dpbmcgZHVtcHMgcHJvcGVyIG1lc3NhZ2VzLgogPC9wPgogCi08ZGl2IGlkPSJm
cm9udGVuZC1zY3JpcHQiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgotZnVuY3Rpb24gZHVtcE1lc3Nh
Z2VzKCkKLXsKLSAgICB2YXIgcmVzdWx0ID0gW107Ci0gICAgdmFyIG1lc3NhZ2VzID0gV2ViSW5z
cGVjdG9yLmNvbnNvbGUubWVzc2FnZXM7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZXNzYWdl
cy5sZW5ndGg7ICsraSkKLSAgICAgICAgcmVzdWx0LnB1c2gobWVzc2FnZXNbaV0udG9NZXNzYWdl
RWxlbWVudCgpLnRleHRDb250ZW50LnJlcGxhY2UoL1x1MjAwYi9nLCAiIikpOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci08L2Rpdj4KLQogPGRpdiBpZD0ib3V0cHV0Ij4KIDwvZGl2PgogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZm9ybWF0LWNvbGxl
Y3Rpb25zLWV4cGVjdGVkLnR4dAppbmRleCA4MGYxYmU0Li45ZTRlODZkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9u
cy1leHBlY3RlZC50eHQKQEAgLTksNyArOSw3IEBAIFRlc3RzIHRoYXQgY29uc29sZSBuaWNlbHkg
Zm9ybWF0cyBIVE1MIENvbGxlY3Rpb25zIGFuZCBOb2RlTGlzdHMuCiBjb25zb2xlLWZvcm1hdC1j
b2xsZWN0aW9ucy5odG1sOjE0WzxzZWxlY3QgaWQ9InNlbCIgbmFtZT0ic2VsIj5dCiBjb25zb2xl
LWZvcm1hdC1jb2xsZWN0aW9ucy5odG1sOjE4WzxzY3JpcHQgc3JjPSJldmFsdWF0ZS1pbi1mcm9u
dGVuZC5qcyI+LCA8c2NyaXB0Pl0KIGNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6MjJb
PG9wdGlvbiB2YWx1ZT0iMSI+b25lPC9vcHRpb24+LCA8b3B0aW9uIHZhbHVlPSIyIj50d288L29w
dGlvbj5dCi1jb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy5odG1sOjI2WzxodG1sPiwgPGhlYWQ+
LCA8c2NyaXB0IHNyYz0iZXZhbHVhdGUtaW4tZnJvbnRlbmQuanMiPiwgPHNjcmlwdD4sIDxib2R5
IG9ubG9hZD0ib25sb2FkKCkiPiwgPHA+IFRlc3RzIHRoYXQgY29uc29sZSBuaWNlbHkgZm9ybWF0
cyBIVE1MIENvbGxlY3Rpb25zIGFuZCBOb2RlTGlzdHMuIDwvcD4sIDxkaXYgc3R5bGU9ImRpc3Bs
YXk6bm9uZSI+LCA8Zm9ybSBpZD0iZiI+LCA8c2VsZWN0IGlkPSJzZWwiIG5hbWU9InNlbCI+LCA8
b3B0aW9uIHZhbHVlPSIxIj5vbmU8L29wdGlvbj4sIDxvcHRpb24gdmFsdWU9IjIiPnR3bzwvb3B0
aW9uPiwgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJ4IiB2YWx1ZT0ieDEiPiwgPGlucHV0IHR5
cGU9InJhZGlvIiBuYW1lPSJ4IiB2YWx1ZT0ieDIiPiwgPGRpdiBpZD0iZnJvbnRlbmQtc2NyaXB0
IiBzdHlsZT0iZGlzcGxheTpub25lIj4sIDxkaXYgaWQ9Im91dHB1dCI+XQorY29uc29sZS1mb3Jt
YXQtY29sbGVjdGlvbnMuaHRtbDoyNls8aHRtbD4sIDxoZWFkPiwgPHNjcmlwdCBzcmM9ImV2YWx1
YXRlLWluLWZyb250ZW5kLmpzIj4sIDxzY3JpcHQ+LCA8Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4s
IDxwPiBUZXN0cyB0aGF0IGNvbnNvbGUgbmljZWx5IGZvcm1hdHMgSFRNTCBDb2xsZWN0aW9ucyBh
bmQgTm9kZUxpc3RzLiA8L3A+LCA8ZGl2IHN0eWxlPSJkaXNwbGF5Om5vbmUiPiwgPGZvcm0gaWQ9
ImYiPiwgPHNlbGVjdCBpZD0ic2VsIiBuYW1lPSJzZWwiPiwgPG9wdGlvbiB2YWx1ZT0iMSI+b25l
PC9vcHRpb24+LCA8b3B0aW9uIHZhbHVlPSIyIj50d288L29wdGlvbj4sIDxpbnB1dCB0eXBlPSJy
YWRpbyIgbmFtZT0ieCIgdmFsdWU9IngxIj4sIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0ieCIg
dmFsdWU9IngyIj4sIDxkaXYgaWQ9Im91dHB1dCI+XQogY29uc29sZS1mb3JtYXQtY29sbGVjdGlv
bnMuaHRtbDozMFs8c2VsZWN0IGlkPSJzZWwiIG5hbWU9InNlbCI+LCA8aW5wdXQgdHlwZT0icmFk
aW8iIG5hbWU9IngiIHZhbHVlPSJ4MSI+LCA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IngiIHZh
bHVlPSJ4MiI+XQogY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbDozNFs8aW5wdXQgdHlw
ZT0icmFkaW8iIG5hbWU9IngiIHZhbHVlPSJ4MSI+LCA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9
IngiIHZhbHVlPSJ4MiI+XQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29u
c29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25z
b2xlLWZvcm1hdC1jb2xsZWN0aW9ucy5odG1sCmluZGV4IDkzMTU0YjkuLmI1M2ZhZjggMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9u
cy5odG1sCkBAIC0zMyw5ICszMyw5IEBAIGZ1bmN0aW9uIGRvaXQoKQogICAgIHZhciByYWRpb05v
ZGVMaXN0ID0gZm9ybUVsZW1lbnQueDsKICAgICBjb25zb2xlLmxvZyhyYWRpb05vZGVMaXN0KTsK
IAotICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImR1bXBNZXNzYWdlcyIsIGZ1bmN0aW9uKHJl
c3VsdCkgeworICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImR1bXBDb25zb2xlTWVzc2FnZXMi
LCBmdW5jdGlvbihyZXN1bHQpIHsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHQu
bGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBvdXRwdXQocmVzdWx0W2ldKTsKKyAgICAgICAgICAg
IG91dHB1dChyZXN1bHRbaV0udGV4dCk7CiAgICAgICAgIG5vdGlmeURvbmUoKTsKICAgICB9KTsK
IH0KQEAgLTU4LDIwICs1OCw2IEBAIFRlc3RzIHRoYXQgY29uc29sZSBuaWNlbHkgZm9ybWF0cyBI
VE1MIENvbGxlY3Rpb25zIGFuZCBOb2RlTGlzdHMuCiAgICAgPC9mb3JtPgogPC9kaXY+CiAKLTxk
aXYgaWQ9ImZyb250ZW5kLXNjcmlwdCIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+Ci1mdW5jdGlvbiBk
dW1wTWVzc2FnZXModGVzdENvbnRyb2xsZXIpCi17Ci0gICAgdGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOwotICAgIHRlc3RDb250cm9sbGVyLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMo
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICAgICAgdmFyIG1lc3Nh
Z2VzID0gV2ViSW5zcGVjdG9yLmNvbnNvbGUubWVzc2FnZXM7Ci0gICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbWVzc2FnZXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICByZXN1bHQucHVzaCht
ZXNzYWdlc1tpXS50b01lc3NhZ2VFbGVtZW50KCkudGV4dENvbnRlbnQucmVwbGFjZSgvXHUyMDBi
L2csICIiKSk7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUocmVzdWx0KTsKLSAg
ICB9KTsKLX0KLTwvZGl2PgotCiA8ZGl2IGlkPSJvdXRwdXQiPgogPC9kaXY+CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWZvcm1hdC5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2NvbnNvbGUtZm9ybWF0Lmh0bWwKaW5kZXggNjllNTM0Zi4uYzllYTAyNyAx
MDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZm9ybWF0Lmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZm9ybWF0Lmh0bWwKQEAgLTE3LDEwICsx
NywxMCBAQCBmdW5jdGlvbiBkb2l0KCkKICAgICBmdW5jdGlvbiBjYWxsYmFjayhyZXN1bHQpCiAg
ICAgewogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7ICsraSkKLSAg
ICAgICAgICAgIG91dHB1dChyZXN1bHRbaV0pOworICAgICAgICAgICAgb3V0cHV0KHJlc3VsdFtp
XS50ZXh0KTsKICAgICAgICAgbm90aWZ5RG9uZSgpOwogICAgIH0KLSAgICBldmFsdWF0ZUluV2Vi
SW5zcGVjdG9yKCJkdW1wTWVzc2FnZXMiLCBjYWxsYmFjayk7CisgICAgZXZhbHVhdGVJbldlYklu
c3BlY3RvcigiZHVtcENvbnNvbGVNZXNzYWdlcyIsIGNhbGxiYWNrKTsKIH0KIAogPC9zY3JpcHQ+
CkBAIC0zMSwyMiArMzEsNiBAQCBmdW5jdGlvbiBkb2l0KCkKIFRlc3RzIHRoYXQgY29uc29sZSBs
b2dnaW5nIGR1bXBzIHByb3BlciBtZXNzYWdlcy4KIDwvcD4KIAotPGRpdiBpZD0iZnJvbnRlbmQt
c2NyaXB0IiBzdHlsZT0iZGlzcGxheTpub25lIj4KLWZ1bmN0aW9uIGR1bXBNZXNzYWdlcyh0ZXN0
Q29udHJvbGxlcikKLXsKLSAgICAvLyBBcnJheSBmb3JtYXR0aW5nIGlzIGRlZmVycmVkIGR1ZSB0
byB0aGUgYXN5bmMgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0UHJvcGVydGllcyBjYWxsLgotICAg
IC8vIFF1ZXVlIG1lc3NhZ2UgbG9nIGR1bXAgaW4gb3JkZXIgdG8gc2VlIHByb3BlciByZXN1bHQu
Ci0gICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICAgICAgdmFyIG1lc3NhZ2Vz
ID0gV2ViSW5zcGVjdG9yLmNvbnNvbGUubWVzc2FnZXM7Ci0gICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbWVzc2FnZXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICByZXN1bHQucHVzaChtZXNz
YWdlc1tpXS50b01lc3NhZ2VFbGVtZW50KCkudGV4dENvbnRlbnQpOwotICAgICAgICB0ZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKHJlc3VsdCk7Ci0gICAgfSwgMCk7Ci19Ci08L2Rpdj4KLQogPGRp
diBpZD0ib3V0cHV0Ij4KIDwvZGl2PgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvY29uc29sZS10ZXN0cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtdGVz
dHMuaHRtbAppbmRleCA3ZmMxNDk0Li40OWMwYTMwIDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvY29uc29sZS10ZXN0cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9j
b25zb2xlLXRlc3RzLmh0bWwKQEAgLTI1LDcgKzI1LDcgQEAgZnVuY3Rpb24gZG9pdCgpCiAgICAg
ICAgIH0KICAgICAgICAgbm90aWZ5RG9uZSgpOwogICAgIH0KLSAgICBldmFsdWF0ZUluV2ViSW5z
cGVjdG9yKCJkdW1wTWVzc2FnZXMoKSIsIGNhbGxiYWNrKTsKKyAgICBldmFsdWF0ZUluV2ViSW5z
cGVjdG9yKCJkdW1wQ29uc29sZU1lc3NhZ2VzIiwgY2FsbGJhY2spOwogfQogCiA8L3NjcmlwdD4K
QEAgLTM2LDE5ICszNiw2IEBAIGZ1bmN0aW9uIGRvaXQoKQogVGVzdHMgdGhhdCBjb25zb2xlIGxv
Z2dpbmcgZHVtcHMgcHJvcGVyIG1lc3NhZ2VzLgogPC9wPgogCi08ZGl2IGlkPSJmcm9udGVuZC1z
Y3JpcHQiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgotZnVuY3Rpb24gZHVtcE1lc3NhZ2VzKCkKLXsK
LSAgICB2YXIgcmVzdWx0ID0gW107Ci0gICAgdmFyIG1lc3NhZ2VzID0gV2ViSW5zcGVjdG9yLmNv
bnNvbGUubWVzc2FnZXM7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZXNzYWdlcy5sZW5ndGg7
ICsraSkgewotICAgICAgICB2YXIgZWxlbWVudCA9IG1lc3NhZ2VzW2ldLnRvTWVzc2FnZUVsZW1l
bnQoKTsKLSAgICAgICAgcmVzdWx0LnB1c2goeyB0ZXh0OiBlbGVtZW50LnRleHRDb250ZW50LnJl
cGxhY2UoL1x1MjAwYi9nLCAiIiksIGNsYXp6OiBlbGVtZW50LmdldEF0dHJpYnV0ZSgiY2xhc3Mi
KX0pOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotPC9kaXY+Ci0KIDxkaXYgaWQ9Im91
dHB1dCI+CiA8L2Rpdj4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1l
bnRzLXBhbmVsLXN0cnVjdHVyZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZWxlbWVudHMtcGFuZWwtc3RydWN0dXJlLWV4cGVjdGVkLnR4dAppbmRleCBiMjA2ZjEyLi4yMjg1
Zjk5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtc3Ry
dWN0dXJlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMt
cGFuZWwtc3RydWN0dXJlLWV4cGVjdGVkLnR4dApAQCAtNCw0ICs0LDkgQEAgVGVzdHMgdGhhdCBl
bGVtZW50cyBwYW5lbCBzaG93cyBkb20gdHJlZSBzdHJ1Y3R1cmUuCiA8aHRtbD4KIDxoZWFkPgog
PGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8cD5UZXN0cyB0aGF0IGVsZW1lbnRzIHBhbmVsIHNo
b3dzIGRvbSB0cmVlIHN0cnVjdHVyZS4KKzwvcD4KKzxkaXYgaWQ9ImZyb250ZW5kLXNjcmlwdCIg
c3R5bGU9ImRpc3BsYXk6bm9uZSI+Cis8cHJlIGlkPSJvdXRwdXQiPgorPC9ib2R5PgogPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVsLXN0cnVj
dHVyZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVsLXN0cnVjdHVy
ZS5odG1sCmluZGV4IDA0MGU1YzEuLmM5NzQ0ZTggMTAwNzU1Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9lbGVtZW50cy1wYW5lbC1zdHJ1Y3R1cmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtc3RydWN0dXJlLmh0bWwKQEAgLTgsMTAgKzgsMTAgQEAg
ZnVuY3Rpb24gZG9pdCgpCiAgICAgZnVuY3Rpb24gY2FsbGJhY2socmVzdWx0KQogICAgIHsKICAg
ICAgICAgdmFyIG91dHB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKTsKLSAg
ICAgICAgb3V0cHV0LnRleHRDb250ZW50ID0gcmVzdWx0LnJlcGxhY2UoL1x1MjAwYi9nLCAiIiku
cmVwbGFjZSgvXG4vZywgIiIpLnJlcGxhY2UoLzxwPi4qPFwvYm9keT4vZywgIiIpLnJlcGxhY2Uo
LzwvZywgIlxuPCIpOworICAgICAgICBvdXRwdXQudGV4dENvbnRlbnQgPSByZXN1bHQucmVwbGFj
ZSgvXHUyMDBiL2csICIiKS5yZXBsYWNlKC9cbi9nLCAiIikucmVwbGFjZSgvPC9nLCAiXG48Iik7
CiAgICAgICAgIG5vdGlmeURvbmUoKTsKICAgICB9Ci0gICAgZXZhbHVhdGVJbldlYkluc3BlY3Rv
cigiV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy50cmVlT3V0bGluZS5lbGVtZW50LnRleHRD
b250ZW50IiwgY2FsbGJhY2spOworICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImR1bXBFbGVt
ZW50cyIsIGNhbGxiYWNrKTsKIH0KIAogPC9zY3JpcHQ+CkBAIC0yMyw2ICsyMywxNCBAQCBUZXN0
cyB0aGF0IGVsZW1lbnRzIHBhbmVsIHNob3dzIGRvbSB0cmVlIHN0cnVjdHVyZS4KIDwvcD4KIAog
PGRpdiBpZD0iZnJvbnRlbmQtc2NyaXB0IiBzdHlsZT0iZGlzcGxheTpub25lIj4KK2Z1bmN0aW9u
IGR1bXBFbGVtZW50cyh0ZXN0Q29udHJvbGxlcikKK3sKKyAgICB0ZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CisgICAgZXhwYW5kRE9NU3VidHJlZShXZWJJbnNwZWN0b3IuZG9tQWdlbnQu
ZG9jdW1lbnQpOworICAgIHRlc3RDb250cm9sbGVyLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMo
ZnVuY3Rpb24oKSB7CisgICAgICAgIHRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoV2ViSW5zcGVj
dG9yLnBhbmVscy5lbGVtZW50cy50cmVlT3V0bGluZS5lbGVtZW50LnRleHRDb250ZW50KTsKKyAg
ICB9KTsKK30KIDwvZGl2PgogCiA8cHJlIGlkPSJvdXRwdXQiPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2V2YWx1YXRlLWluLWZyb250ZW5kLmpzIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2V2YWx1YXRlLWluLWZyb250ZW5kLmpzCmluZGV4IDc5YjJjYjEuLjI1NWVhZTAgMTAw
NzU1Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9ldmFsdWF0ZS1pbi1mcm9udGVuZC5qcwor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXZhbHVhdGUtaW4tZnJvbnRlbmQuanMKQEAgLTIz
LDggKzIzLDEyIEBAIGZ1bmN0aW9uIG9ubG9hZCgpCiAgICAgICAgIHJldHVybjsKICAgICB2YXIg
Y2FsbElkID0gbGFzdENhbGxJZCsrOwogICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ldmFsdWF0ZUluV2ViSW5zcGVjdG9yKGNhbGxJZCwgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImZyb250ZW5kLXNjcmlwdCIpLnRleHRDb250ZW50KTsKKyAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgaWYgKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJmcm9udGVuZC1zY3JpcHQiKSkKKyAgICAgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ldmFsdWF0ZUluV2ViSW5zcGVjdG9yKGNhbGxJZCwgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImZyb250ZW5kLXNjcmlwdCIpLnRleHRDb250ZW50KTsKKyAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoY2FsbElkLCBl
eHBhbmRET01TdWJ0cmVlLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZXZhbHVhdGVJbldlYkluc3BlY3RvcihjYWxsSWQsIGR1bXBDb25zb2xlTWVzc2FnZXMu
dG9TdHJpbmcoKSk7CisgICAgICAgIH0KICAgICAgICAgZG9pdCgpOwogICAgIH0sIDApOwogCkBA
IC03MiwzICs3NiwyNiBAQCB3aW5kb3cuZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZCA9IGZ1
bmN0aW9uKGNhbGxJZCwganNvblJlc3VsdCkKICAgICAgICAgZGVsZXRlIGNhbGxiYWNrc1tjYWxs
SWRdOwogICAgIH0KIH07CisKKy8vIEluamVjdGVkIHV0aWxpdHkgZnVuY3Rpb25zLgorCitmdW5j
dGlvbiBleHBhbmRET01TdWJ0cmVlKG5vZGUpCit7CisgICAgZnVuY3Rpb24gcHJvY2Vzc0NoaWxk
cmVuKGNoaWxkcmVuKQorICAgIHsKKyAgICAgICBmb3IgKHZhciBpID0gMDsgY2hpbGRyZW4gJiYg
aSA8IGNoaWxkcmVuLmxlbmd0aDsgKytpKQorICAgICAgICAgICBleHBhbmRET01TdWJ0cmVlKGNo
aWxkcmVuW2ldKTsKKyAgICB9CisgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LmdldENoaWxkTm9k
ZXNBc3luYyhub2RlLCBwcm9jZXNzQ2hpbGRyZW4pOworfQorCitmdW5jdGlvbiBkdW1wQ29uc29s
ZU1lc3NhZ2VzKCkKK3sKKyAgICB2YXIgcmVzdWx0ID0gW107CisgICAgdmFyIG1lc3NhZ2VzID0g
V2ViSW5zcGVjdG9yLmNvbnNvbGUubWVzc2FnZXM7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBt
ZXNzYWdlcy5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgZWxlbWVudCA9IG1lc3NhZ2VzW2ld
LnRvTWVzc2FnZUVsZW1lbnQoKTsKKyAgICAgICAgcmVzdWx0LnB1c2goeyB0ZXh0OiBlbGVtZW50
LnRleHRDb250ZW50LnJlcGxhY2UoL1x1MjAwYi9nLCAiIiksIGNsYXp6OiBlbGVtZW50LmdldEF0
dHJpYnV0ZSgiY2xhc3MiKX0pOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1pZnJhbWUtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4YTlmOTcKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMCBAQAorVGVzdHMgdGhhdCBwcm9wZXIgKGFuZCBkaWZmZXJlbnQpIHN0eWxlcyBhcmUgcmV0
dXJuZWQgZm9yIGJvZHkgZWxlbWVudHMgb2YgbWFpbiBkb2N1bWVudCBhbmQgaWZyYW1lLgorCisK
K1N0eWxlOiAwCit7Im1hcmdpbiI6IjhweCJ9Cit7ImJhY2tncm91bmQiOiJibHVlIn0KK1N0eWxl
OiAxCit7Im1hcmdpbiI6IjhweCJ9Cit7ImJhY2tncm91bmQiOiJncmVlbiJ9CisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3Ivc3R5bGVzLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4
IDAwMDAwMDAuLjE2ZjM1YzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3Ivc3R5bGVzLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsOTkgQEAKKzxodG1sPgorPGhlYWQ+CisK
KzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgIGJvZHkgeyBiYWNrZ3Jv
dW5kOmJsdWU7IH0KKzwvc3R5bGU+CisKKzxzY3JpcHQgc3JjPSJldmFsdWF0ZS1pbi1mcm9udGVu
ZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBydW5BZnRlcklmcmFtZUlzTG9h
ZGVkKGNvbnRpbnVhdGlvbikKK3sKKyAgICBmdW5jdGlvbiBzdGVwKCkKKyAgICB7CisgICAgICAg
IGlmICghd2luZG93LmlmcmFtZUxvYWRlZCkKKyAgICAgICAgICAgIHNldFRpbWVvdXQoc3RlcCwg
MTAwKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29udGludWF0aW9uKCk7CisgICAgfQor
ICAgIHNldFRpbWVvdXQoc3RlcCwgMTAwKTsKK30KKworZnVuY3Rpb24gZG9pdCgpCit7CisgICAg
cnVuQWZ0ZXJJZnJhbWVJc0xvYWRlZChmdW5jdGlvbigpIHsKKyAgICAgICAgZnVuY3Rpb24gY2Fs
bGJhY2socmVzdWx0KQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHJlc3VsdC5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIG91dHB1dCgiU3R5bGU6ICIg
KyBpKTsKKyAgICAgICAgICAgICAgICB2YXIgbWF0Y2hlZFJ1bGVzID0gcmVzdWx0W2ldLm1hdGNo
ZWRDU1NSdWxlczsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgbWF0Y2hlZFJ1bGVz
ICYmIGogPCBtYXRjaGVkUnVsZXMubGVuZ3RoOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAg
b3V0cHV0KEpTT04uc3RyaW5naWZ5KG1hdGNoZWRSdWxlc1tqXS5zdHlsZS5zaG9ydGhhbmRWYWx1
ZXMpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBub3Rp
ZnlEb25lKCk7CisgICAgICAgIH0KKyAgICAgICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcigiZHVt
cFN0eWxlcyIsIGNhbGxiYWNrKTsKKyAgICB9KTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisK
Kzxib2R5IG9ubG9hZD0ib25sb2FkKCkiPgorPHA+CitUZXN0cyB0aGF0IHByb3BlciAoYW5kIGRp
ZmZlcmVudCkgc3R5bGVzIGFyZSByZXR1cm5lZCBmb3IgYm9keSBlbGVtZW50cyBvZiBtYWluIGRv
Y3VtZW50IGFuZCBpZnJhbWUuCis8L3A+CisKKzxpZnJhbWUgc3JjPSdyZXNvdXJjZXMvc3R5bGVz
LWlmcmFtZS1kYXRhLmh0bWwnPjwvaWZyYW1lPgorCis8ZGl2IGlkPSJmcm9udGVuZC1zY3JpcHQi
IHN0eWxlPSJkaXNwbGF5Om5vbmUiPgorCitmdW5jdGlvbiBkdW1wU3R5bGVzKHRlc3RDb250cm9s
bGVyKQoreworICAgIHRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworICAgIGV4cGFu
ZERPTVN1YnRyZWUoV2ViSW5zcGVjdG9yLmRvbUFnZW50LmRvY3VtZW50KTsKKworICAgIHRlc3RD
b250cm9sbGVyLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoZnVuY3Rpb24oKSB7CisgICAgICAg
IGR1bXBTdHlsZXNDb250aW51YXRpb24odGVzdENvbnRyb2xsZXIpOworICAgIH0pOworfQorCitm
dW5jdGlvbiBkdW1wU3R5bGVzQ29udGludWF0aW9uKHRlc3RDb250cm9sbGVyKQoreworICAgIC8v
IDEuIEdldCBzdHlsZXMgZm9yIGJvZHksIHN0b3JlIHRoZW0gaW4gbWFpblN0eWxlcyB2YXIuCisg
ICAgdmFyIGJvZHlJZCA9IFdlYkluc3BlY3Rvci5kb21BZ2VudC5kb2N1bWVudC5ib2R5LmlkOwor
ICAgIHZhciBtYWluU3R5bGVzID0gbnVsbDsKKyAgICBmdW5jdGlvbiBtYWluRnJhbWVDYWxsYmFj
ayhzdHlsZXMpIHsKKyAgICAgICAgbWFpblN0eWxlcyA9IHN0eWxlczsKKyAgICB9CisgICAgSW5q
ZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0U3R5bGVzKGJvZHlJZCwgZmFsc2UsIG1haW5GcmFtZUNhbGxi
YWNrKTsKKworICAgIC8vIDIuIEZpbmQgaWZyYW1lIG5vZGUKKyAgICB2YXIgaW5uZXJNYXBwaW5n
ID0gV2ViSW5zcGVjdG9yLmRvbUFnZW50Ll9pZFRvRE9NTm9kZTsKKyAgICB2YXIgaWZyYW1lQm9k
eUlkID0gbnVsbDsKKworICAgIGZvciAodmFyIG5vZGVJZCBpbiBpbm5lck1hcHBpbmcpIHsKKyAg
ICAgICAgaWYgKGlubmVyTWFwcGluZ1tub2RlSWRdLm5vZGVOYW1lID09PSAiSUZSQU1FIikKKyAg
ICAgICAgICAgIGlmcmFtZUJvZHlJZCA9IGlubmVyTWFwcGluZ1tub2RlSWRdLmZpcnN0Q2hpbGQu
bGFzdENoaWxkLmlkOworICAgIH0KKyAgICBpZiAodHlwZW9mIGlmcmFtZUJvZHlJZCAhPT0gIm51
bWJlciIpIHsKKyAgICAgICAgdGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZShbIk5vIGlmcmFtZSBu
b2RlIGZvdW5kIl0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gMy4gR2V0IHN0
eWxlcyBmb3IgaWZyYW1lJ3MgYm9keSwgcmV0dXJuIHRoZW0gdG9nZXRoZXIgd2l0aCBtYWluIHN0
eWxlcy4KKyAgICBmdW5jdGlvbiBpZnJhbWVDYWxsYmFjayhzdHlsZXMpIHsKKyAgICAgICAgdGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZShbbWFpblN0eWxlcywgc3R5bGVzXSk7CisgICAgfQorICAg
IEluamVjdGVkU2NyaXB0QWNjZXNzLmdldFN0eWxlcyhpZnJhbWVCb2R5SWQsIGZhbHNlLCBpZnJh
bWVDYWxsYmFjayk7Cit9Cis8L2Rpdj4KKworPGRpdiBpZD0ib3V0cHV0Ij4KKzwvZGl2PgorCis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lw
cGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCA5MGM2OWIzLi5mOTNj
ZGY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTExOCw2ICsxMTgsNyBAQCBmYXN0L3Rl
eHQvZmluZC1oaWRkZW4tdGV4dC5odG1sCiBpbnNwZWN0b3IvY29uc29sZS1mb3JtYXQtY29sbGVj
dGlvbnMuaHRtbAogaW5zcGVjdG9yL2Nzcy1zeW50YXgtaGlnaGxpZ2h0Lmh0bWwKIGluc3BlY3Rv
ci9qYXZhc2NyaXB0LXN5bnRheC1oaWdobGlnaHQuaHRtbAoraW5zcGVjdG9yL3N0eWxlcy1pZnJh
bWUuaHRtbAogaW5zcGVjdG9yL3RpbWVsaW5lLXRyaXZpYWwuaHRtbAogaW5zcGVjdG9yL3VuY2F1
Z2h0LWRvbTEtZXhjZXB0aW9uLmh0bWwKIGluc3BlY3Rvci91bmNhdWdodC1kb20zLWV4Y2VwdGlv
bi5odG1sCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGUwZDk2NjUuLmFmMmM4NmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjYgQEAKIDIwMDktMTEtMDUgIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvciBkb2Vzbid0IHNob3cgQ1NT
IHJ1bGVzIHByb3Blcmx5IGZvciBpZnJhbWVzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDg4NAorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rvci9z
dHlsZXMtaWZyYW1lLmh0bWwKKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdl
bnQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NTm9kZSk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdC5qczoKKyAgICAgICAgKEluamVjdGVkU2NyaXB0
LmdldFN0eWxlcyk6CisgICAgICAgIChJbmplY3RlZFNjcmlwdC5nZXRDb21wdXRlZFN0eWxlKToK
KyAgICAgICAgKEluamVjdGVkU2NyaXB0LmFkZFN0eWxlU2VsZWN0b3IpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvVGVzdENvbnRyb2xsZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGVzdENvbnRyb2xsZXIucHJvdG90eXBlLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQuaW52b2tlTWV0
aG9kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKToK
KworMjAwOS0xMS0wNSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKwog
ICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCiAKICAgICAgICAgV2ViIEluc3Bl
Y3Rvcjogc3BlZWQgdXAgVGltZWxpbmVzIENsZWFyIGJ5IGEgZmFjdG9yIG9mIHRob3VzYW5kcy4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcwppbmRleCAyNWZmYWZhLi4yNTJi
NWY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCkBAIC02MSw5ICs2
MSwxMCBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZSA9IGZ1bmN0aW9uKGRvYywgcGF5bG9hZCkgewog
ICAgIHRoaXMuX21hdGNoZWRDU1NSdWxlcyA9IFtdOwogCiAgICAgaWYgKHRoaXMubm9kZVR5cGUg
PT0gTm9kZS5FTEVNRU5UX05PREUpIHsKLSAgICAgICAgaWYgKHRoaXMubm9kZU5hbWUgPT0gIkhU
TUwiKQorICAgICAgICAvLyBIVE1MIGFuZCBCT0RZIGZyb20gaW50ZXJuYWwgaWZyYW1lcyBzaG91
bGQgbm90IG92ZXJ3cml0ZSB0b3AtbGV2ZWwgb25lcy4KKyAgICAgICAgaWYgKCF0aGlzLm93bmVy
RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIHRoaXMubm9kZU5hbWUgPT09ICJIVE1MIikKICAg
ICAgICAgICAgIHRoaXMub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgPSB0aGlzOwotICAg
ICAgICBpZiAodGhpcy5ub2RlTmFtZSA9PSAiQk9EWSIpCisgICAgICAgIGlmICghdGhpcy5vd25l
ckRvY3VtZW50LmJvZHkgJiYgdGhpcy5ub2RlTmFtZSA9PT0gIkJPRFkiKQogICAgICAgICAgICAg
dGhpcy5vd25lckRvY3VtZW50LmJvZHkgPSB0aGlzOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdC5qcyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlwdC5qcwppbmRleCAzYmEwOWExLi43YzkzM2U3
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHQu
anMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0LmpzCkBA
IC01OSw3ICs1OSw4IEBAIEluamVjdGVkU2NyaXB0LmdldFN0eWxlcyA9IGZ1bmN0aW9uKG5vZGVJ
ZCwgYXV0aG9yT25seSkKICAgICB2YXIgbm9kZSA9IEluamVjdGVkU2NyaXB0Ll9ub2RlRm9ySWQo
bm9kZUlkKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB2YXIg
bWF0Y2hlZFJ1bGVzID0gSW5qZWN0ZWRTY3JpcHQuX3dpbmRvdygpLmdldE1hdGNoZWRDU1NSdWxl
cyhub2RlLCAiIiwgYXV0aG9yT25seSk7CisgICAgdmFyIGRlZmF1bHRWaWV3ID0gbm9kZS5vd25l
ckRvY3VtZW50LmRlZmF1bHRWaWV3OworICAgIHZhciBtYXRjaGVkUnVsZXMgPSBkZWZhdWx0Vmll
dy5nZXRNYXRjaGVkQ1NTUnVsZXMobm9kZSwgIiIsIGF1dGhvck9ubHkpOwogICAgIHZhciBtYXRj
aGVkQ1NTUnVsZXMgPSBbXTsKICAgICBmb3IgKHZhciBpID0gMDsgbWF0Y2hlZFJ1bGVzICYmIGkg
PCBtYXRjaGVkUnVsZXMubGVuZ3RoOyArK2kpCiAgICAgICAgIG1hdGNoZWRDU1NSdWxlcy5wdXNo
KEluamVjdGVkU2NyaXB0Ll9zZXJpYWxpemVSdWxlKG1hdGNoZWRSdWxlc1tpXSkpOwpAQCAtNzIs
NyArNzMsNyBAQCBJbmplY3RlZFNjcmlwdC5nZXRTdHlsZXMgPSBmdW5jdGlvbihub2RlSWQsIGF1
dGhvck9ubHkpCiAgICAgfQogICAgIHZhciByZXN1bHQgPSB7fTsKICAgICByZXN1bHQuaW5saW5l
U3R5bGUgPSBJbmplY3RlZFNjcmlwdC5fc2VyaWFsaXplU3R5bGUobm9kZS5zdHlsZSwgdHJ1ZSk7
Ci0gICAgcmVzdWx0LmNvbXB1dGVkU3R5bGUgPSBJbmplY3RlZFNjcmlwdC5fc2VyaWFsaXplU3R5
bGUoSW5qZWN0ZWRTY3JpcHQuX3dpbmRvdygpLmdldENvbXB1dGVkU3R5bGUobm9kZSkpOworICAg
IHJlc3VsdC5jb21wdXRlZFN0eWxlID0gSW5qZWN0ZWRTY3JpcHQuX3NlcmlhbGl6ZVN0eWxlKGRl
ZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUobm9kZSkpOwogICAgIHJlc3VsdC5tYXRjaGVkQ1NT
UnVsZXMgPSBtYXRjaGVkQ1NTUnVsZXM7CiAgICAgcmVzdWx0LnN0eWxlQXR0cmlidXRlcyA9IHN0
eWxlQXR0cmlidXRlczsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtODMsNyArODQsNyBAQCBJbmpl
Y3RlZFNjcmlwdC5nZXRDb21wdXRlZFN0eWxlID0gZnVuY3Rpb24obm9kZUlkKQogICAgIHZhciBu
b2RlID0gSW5qZWN0ZWRTY3JpcHQuX25vZGVGb3JJZChub2RlSWQpOwogICAgIGlmICghbm9kZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5fc2VyaWFs
aXplU3R5bGUoSW5qZWN0ZWRTY3JpcHQuX3dpbmRvdygpLmdldENvbXB1dGVkU3R5bGUobm9kZSkp
OworICAgIHJldHVybiBJbmplY3RlZFNjcmlwdC5fc2VyaWFsaXplU3R5bGUobm9kZS5vd25lckRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUobm9kZSkpOwogfQogCiBJbmplY3Rl
ZFNjcmlwdC5nZXRJbmxpbmVTdHlsZSA9IGZ1bmN0aW9uKG5vZGVJZCkKQEAgLTIzMCwxNSArMjMx
LDE5IEBAIEluamVjdGVkU2NyaXB0LmFwcGx5U3R5bGVSdWxlVGV4dCA9IGZ1bmN0aW9uKHJ1bGVJ
ZCwgbmV3Q29udGVudCwgc2VsZWN0ZWROb2RlSWQpCiAKIEluamVjdGVkU2NyaXB0LmFkZFN0eWxl
U2VsZWN0b3IgPSBmdW5jdGlvbihuZXdDb250ZW50LCBzZWxlY3RlZE5vZGVJZCkKIHsKLSAgICB2
YXIgc3R5bGVzaGVldCA9IEluamVjdGVkU2NyaXB0LnN0eWxlc2hlZXQ7CisgICAgdmFyIHNlbGVj
dGVkTm9kZSA9IEluamVjdGVkU2NyaXB0Ll9ub2RlRm9ySWQoc2VsZWN0ZWROb2RlSWQpOworICAg
IGlmICghc2VsZWN0ZWROb2RlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdmFyIG93bmVy
RG9jdW1lbnQgPSBzZWxlY3RlZE5vZGUub3duZXJEb2N1bWVudDsKKworICAgIHZhciBzdHlsZXNo
ZWV0ID0gb3duZXJEb2N1bWVudC5fX3N0eWxlc2hlZXQ7CiAgICAgaWYgKCFzdHlsZXNoZWV0KSB7
Ci0gICAgICAgIHZhciBpbnNwZWN0ZWREb2N1bWVudCA9IEluamVjdGVkU2NyaXB0Ll93aW5kb3co
KS5kb2N1bWVudDsKLSAgICAgICAgdmFyIGhlYWQgPSBpbnNwZWN0ZWREb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdOwotICAgICAgICB2YXIgc3R5bGVFbGVtZW50ID0gaW5z
cGVjdGVkRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsKKyAgICAgICAgdmFyIGhlYWQg
PSBvd25lckRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF07CisgICAgICAg
IHZhciBzdHlsZUVsZW1lbnQgPSBvd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7
CiAgICAgICAgIHN0eWxlRWxlbWVudC50eXBlID0gInRleHQvY3NzIjsKICAgICAgICAgaGVhZC5h
cHBlbmRDaGlsZChzdHlsZUVsZW1lbnQpOwotICAgICAgICBzdHlsZXNoZWV0ID0gaW5zcGVjdGVk
RG9jdW1lbnQuc3R5bGVTaGVldHNbaW5zcGVjdGVkRG9jdW1lbnQuc3R5bGVTaGVldHMubGVuZ3Ro
IC0gMV07Ci0gICAgICAgIEluamVjdGVkU2NyaXB0LnN0eWxlc2hlZXQgPSBzdHlsZXNoZWV0Owor
ICAgICAgICBzdHlsZXNoZWV0ID0gb3duZXJEb2N1bWVudC5zdHlsZVNoZWV0c1tvd25lckRvY3Vt
ZW50LnN0eWxlU2hlZXRzLmxlbmd0aCAtIDFdOworICAgICAgICBvd25lckRvY3VtZW50Ll9fc3R5
bGVzaGVldCA9IHN0eWxlc2hlZXQ7CiAgICAgfQogCiAgICAgdHJ5IHsKQEAgLTI0OCw3ICsyNTMs
NiBAQCBJbmplY3RlZFNjcmlwdC5hZGRTdHlsZVNlbGVjdG9yID0gZnVuY3Rpb24obmV3Q29udGVu
dCwgc2VsZWN0ZWROb2RlSWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICB2
YXIgc2VsZWN0ZWROb2RlID0gSW5qZWN0ZWRTY3JpcHQuX25vZGVGb3JJZChzZWxlY3RlZE5vZGVJ
ZCk7CiAgICAgdmFyIHJ1bGUgPSBzdHlsZXNoZWV0LmNzc1J1bGVzW3N0eWxlc2hlZXQuY3NzUnVs
ZXMubGVuZ3RoIC0gMV07CiAgICAgcnVsZS5fX2lzVmlhSW5zcGVjdG9yID0gdHJ1ZTsKIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rlc3RDb250cm9sbGVyLmpzIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rlc3RDb250cm9sbGVyLmpzCmluZGV4IDEyZTFh
YzcuLjg3YmE0MDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXN0
Q29udHJvbGxlci5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGVzdENvbnRy
b2xsZXIuanMKQEAgLTUyLDI0ICs1MiwyNyBAQCBXZWJJbnNwZWN0b3IuVGVzdENvbnRyb2xsZXIu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQotCi0gICAgICAgIHNldFRpbWVvdXQodGhpcy5ydW5BZnRlclBlbmRpbmdE
aXNwYXRjaGVzLmJpbmQodGhpcyksIDAsIGNhbGxiYWNrKTsKKyAgICAgICAgc2V0VGltZW91dCh0
aGlzLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMuYmluZCh0aGlzKSwgMjAwLCBjYWxsYmFjayk7
CiAgICAgfQogfQogCiBXZWJJbnNwZWN0b3IuZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZCA9IGZ1
bmN0aW9uKGNhbGxJZCwgc2NyaXB0KQogewogICAgIHZhciBjb250cm9sbGVyID0gbmV3IFdlYklu
c3BlY3Rvci5UZXN0Q29udHJvbGxlcihjYWxsSWQpOwotICAgIHRyeSB7Ci0gICAgICAgIHZhciBy
ZXN1bHQ7Ci0gICAgICAgIGlmICh3aW5kb3dbc2NyaXB0XSAmJiB0eXBlb2Ygd2luZG93W3Njcmlw
dF0gPT09ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICByZXN1bHQgPSB3aW5kb3dbc2NyaXB0XS5j
YWxsKHRoaXMsIGNvbnRyb2xsZXIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQg
PSB3aW5kb3cuZXZhbChzY3JpcHQpOworICAgIGZ1bmN0aW9uIGludm9rZU1ldGhvZCgpCisgICAg
eworICAgICAgICB0cnkgeworICAgICAgICAgICAgdmFyIHJlc3VsdDsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3dbc2NyaXB0XSAmJiB0eXBlb2Ygd2luZG93W3NjcmlwdF0gPT09ICJmdW5jdGlvbiIp
CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gd2luZG93W3NjcmlwdF0uY2FsbChXZWJJbnNwZWN0
b3IsIGNvbnRyb2xsZXIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IHdpbmRvdy5ldmFsKHNjcmlwdCk7CiAKLSAgICAgICAgaWYgKCFjb250cm9sbGVyLl93YWl0
VW50aWxEb25lKQotICAgICAgICAgICAgY29udHJvbGxlci5ub3RpZnlEb25lKHJlc3VsdCk7Ci0g
ICAgfSBjYXRjaCAoZSkgewotICAgICAgICBjb250cm9sbGVyLm5vdGlmeURvbmUoZS50b1N0cmlu
ZygpKTsKKyAgICAgICAgICAgIGlmICghY29udHJvbGxlci5fd2FpdFVudGlsRG9uZSkKKyAgICAg
ICAgICAgICAgICBjb250cm9sbGVyLm5vdGlmeURvbmUocmVzdWx0KTsKKyAgICAgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICAgICAgY29udHJvbGxlci5ub3RpZnlEb25lKGUudG9TdHJpbmcoKSk7
CisgICAgICAgIH0KICAgICB9CisgICAgY29udHJvbGxlci5ydW5BZnRlclBlbmRpbmdEaXNwYXRj
aGVzKGludm9rZU1ldGhvZCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42579</attachid>
            <date>2009-11-05 11:08:49 -0800</date>
            <delta_ts>2009-11-05 11:28:16 -0800</delta_ts>
            <desc>[PATCH] Same with missing resources file.</desc>
            <filename>styles_tests</filename>
            <type>text/plain</type>
            <size>23109</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhMjJhYmEwLi44MWUxOWNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMDktMTEt
MDUgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvciBkb2Vzbid0
IHNob3cgQ1NTIHJ1bGVzIHByb3Blcmx5IGZvciBpZnJhbWVzLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDg4NAorCisgICAgICAgICogaW5zcGVj
dG9yL2NvbnNvbGUtZGlyLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2NvbnNvbGUtZGlyeG1s
Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2NvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29sZS1mb3JtYXQtY29sbGVjdGlv
bnMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29sZS1mb3JtYXQuaHRtbDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvY29uc29sZS10ZXN0cy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9l
bGVtZW50cy1wYW5lbC1zdHJ1Y3R1cmUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rv
ci9lbGVtZW50cy1wYW5lbC1zdHJ1Y3R1cmUuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZXZh
bHVhdGUtaW4tZnJvbnRlbmQuanM6CisgICAgICAgIChleHBhbmRET01TdWJ0cmVlLnByb2Nlc3ND
aGlsZHJlbik6CisgICAgICAgIChleHBhbmRET01TdWJ0cmVlKToKKyAgICAgICAgKGR1bXBDb25z
b2xlTWVzc2FnZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMtaWZyYW1lLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy1pZnJhbWUuaHRtbDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKwogMjAwOS0xMS0wNSAgSmVmZiBT
Y2hpbGxlciAgPGNvZGVkcmVhZEBnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gRnJhc2VyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZGly
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1kaXIuaHRtbAppbmRleCA2NjE4
YWQ0Li4zMWNjZDg2IDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1k
aXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1kaXIuaHRtbApAQCAt
MTIsMTAgKzEyLDEwIEBAIGZ1bmN0aW9uIGRvaXQoKQogICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJl
c3VsdCkKICAgICB7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsg
KytpKQotICAgICAgICAgICAgb3V0cHV0KHJlc3VsdFtpXSk7CisgICAgICAgICAgICBvdXRwdXQo
cmVzdWx0W2ldLnRleHQpOwogICAgICAgICBub3RpZnlEb25lKCk7CiAgICAgfQotICAgIGV2YWx1
YXRlSW5XZWJJbnNwZWN0b3IoImR1bXBNZXNzYWdlcygpIiwgY2FsbGJhY2spOworICAgIGV2YWx1
YXRlSW5XZWJJbnNwZWN0b3IoImR1bXBDb25zb2xlTWVzc2FnZXMiLCBjYWxsYmFjayk7CiB9CiAK
IDwvc2NyaXB0PgpAQCAtMjYsMTcgKzI2LDYgQEAgZnVuY3Rpb24gZG9pdCgpCiBUZXN0cyB0aGF0
IGNvbnNvbGUgbG9nZ2luZyBkdW1wcyBwcm9wZXIgbWVzc2FnZXMuCiA8L3A+CiAKLTxkaXYgaWQ9
ImZyb250ZW5kLXNjcmlwdCIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+Ci1mdW5jdGlvbiBkdW1wTWVz
c2FnZXMoKQotewotICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICB2YXIgbWVzc2FnZXMgPSBXZWJJ
bnNwZWN0b3IuY29uc29sZS5tZXNzYWdlczsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1lc3Nh
Z2VzLmxlbmd0aDsgKytpKQotICAgICAgICByZXN1bHQucHVzaChtZXNzYWdlc1tpXS50b01lc3Nh
Z2VFbGVtZW50KCkudGV4dENvbnRlbnQucmVwbGFjZSgvXHUyMDBiL2csICIiKSk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLTwvZGl2PgotCiA8ZGl2IGlkPSJvdXRwdXQiPgogPC9kaXY+CiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWRpcnhtbC5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZGlyeG1sLmh0bWwKaW5kZXggZWJkNmM0Yy4uODBl
YmZlZiAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZGlyeG1sLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZGlyeG1sLmh0bWwKQEAgLTEw
LDEwICsxMCwxMCBAQCBmdW5jdGlvbiBkb2l0KCkKICAgICBmdW5jdGlvbiBjYWxsYmFjayhyZXN1
bHQpCiAgICAgewogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7ICsr
aSkKLSAgICAgICAgICAgIG91dHB1dChyZXN1bHRbaV0pOworICAgICAgICAgICAgb3V0cHV0KHJl
c3VsdFtpXS50ZXh0KTsKICAgICAgICAgbm90aWZ5RG9uZSgpOwogICAgIH0KLSAgICBldmFsdWF0
ZUluV2ViSW5zcGVjdG9yKCJkdW1wTWVzc2FnZXMoKSIsIGNhbGxiYWNrKTsKKyAgICBldmFsdWF0
ZUluV2ViSW5zcGVjdG9yKCJkdW1wQ29uc29sZU1lc3NhZ2VzIiwgY2FsbGJhY2spOwogfQogCiA8
L3NjcmlwdD4KQEAgLTI0LDE3ICsyNCw2IEBAIGZ1bmN0aW9uIGRvaXQoKQogVGVzdHMgdGhhdCBj
b25zb2xlIGxvZ2dpbmcgZHVtcHMgcHJvcGVyIG1lc3NhZ2VzLgogPC9wPgogCi08ZGl2IGlkPSJm
cm9udGVuZC1zY3JpcHQiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgotZnVuY3Rpb24gZHVtcE1lc3Nh
Z2VzKCkKLXsKLSAgICB2YXIgcmVzdWx0ID0gW107Ci0gICAgdmFyIG1lc3NhZ2VzID0gV2ViSW5z
cGVjdG9yLmNvbnNvbGUubWVzc2FnZXM7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZXNzYWdl
cy5sZW5ndGg7ICsraSkKLSAgICAgICAgcmVzdWx0LnB1c2gobWVzc2FnZXNbaV0udG9NZXNzYWdl
RWxlbWVudCgpLnRleHRDb250ZW50LnJlcGxhY2UoL1x1MjAwYi9nLCAiIikpOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci08L2Rpdj4KLQogPGRpdiBpZD0ib3V0cHV0Ij4KIDwvZGl2PgogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZm9ybWF0LWNvbGxl
Y3Rpb25zLWV4cGVjdGVkLnR4dAppbmRleCA4MGYxYmU0Li45ZTRlODZkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9u
cy1leHBlY3RlZC50eHQKQEAgLTksNyArOSw3IEBAIFRlc3RzIHRoYXQgY29uc29sZSBuaWNlbHkg
Zm9ybWF0cyBIVE1MIENvbGxlY3Rpb25zIGFuZCBOb2RlTGlzdHMuCiBjb25zb2xlLWZvcm1hdC1j
b2xsZWN0aW9ucy5odG1sOjE0WzxzZWxlY3QgaWQ9InNlbCIgbmFtZT0ic2VsIj5dCiBjb25zb2xl
LWZvcm1hdC1jb2xsZWN0aW9ucy5odG1sOjE4WzxzY3JpcHQgc3JjPSJldmFsdWF0ZS1pbi1mcm9u
dGVuZC5qcyI+LCA8c2NyaXB0Pl0KIGNvbnNvbGUtZm9ybWF0LWNvbGxlY3Rpb25zLmh0bWw6MjJb
PG9wdGlvbiB2YWx1ZT0iMSI+b25lPC9vcHRpb24+LCA8b3B0aW9uIHZhbHVlPSIyIj50d288L29w
dGlvbj5dCi1jb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy5odG1sOjI2WzxodG1sPiwgPGhlYWQ+
LCA8c2NyaXB0IHNyYz0iZXZhbHVhdGUtaW4tZnJvbnRlbmQuanMiPiwgPHNjcmlwdD4sIDxib2R5
IG9ubG9hZD0ib25sb2FkKCkiPiwgPHA+IFRlc3RzIHRoYXQgY29uc29sZSBuaWNlbHkgZm9ybWF0
cyBIVE1MIENvbGxlY3Rpb25zIGFuZCBOb2RlTGlzdHMuIDwvcD4sIDxkaXYgc3R5bGU9ImRpc3Bs
YXk6bm9uZSI+LCA8Zm9ybSBpZD0iZiI+LCA8c2VsZWN0IGlkPSJzZWwiIG5hbWU9InNlbCI+LCA8
b3B0aW9uIHZhbHVlPSIxIj5vbmU8L29wdGlvbj4sIDxvcHRpb24gdmFsdWU9IjIiPnR3bzwvb3B0
aW9uPiwgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJ4IiB2YWx1ZT0ieDEiPiwgPGlucHV0IHR5
cGU9InJhZGlvIiBuYW1lPSJ4IiB2YWx1ZT0ieDIiPiwgPGRpdiBpZD0iZnJvbnRlbmQtc2NyaXB0
IiBzdHlsZT0iZGlzcGxheTpub25lIj4sIDxkaXYgaWQ9Im91dHB1dCI+XQorY29uc29sZS1mb3Jt
YXQtY29sbGVjdGlvbnMuaHRtbDoyNls8aHRtbD4sIDxoZWFkPiwgPHNjcmlwdCBzcmM9ImV2YWx1
YXRlLWluLWZyb250ZW5kLmpzIj4sIDxzY3JpcHQ+LCA8Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4s
IDxwPiBUZXN0cyB0aGF0IGNvbnNvbGUgbmljZWx5IGZvcm1hdHMgSFRNTCBDb2xsZWN0aW9ucyBh
bmQgTm9kZUxpc3RzLiA8L3A+LCA8ZGl2IHN0eWxlPSJkaXNwbGF5Om5vbmUiPiwgPGZvcm0gaWQ9
ImYiPiwgPHNlbGVjdCBpZD0ic2VsIiBuYW1lPSJzZWwiPiwgPG9wdGlvbiB2YWx1ZT0iMSI+b25l
PC9vcHRpb24+LCA8b3B0aW9uIHZhbHVlPSIyIj50d288L29wdGlvbj4sIDxpbnB1dCB0eXBlPSJy
YWRpbyIgbmFtZT0ieCIgdmFsdWU9IngxIj4sIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0ieCIg
dmFsdWU9IngyIj4sIDxkaXYgaWQ9Im91dHB1dCI+XQogY29uc29sZS1mb3JtYXQtY29sbGVjdGlv
bnMuaHRtbDozMFs8c2VsZWN0IGlkPSJzZWwiIG5hbWU9InNlbCI+LCA8aW5wdXQgdHlwZT0icmFk
aW8iIG5hbWU9IngiIHZhbHVlPSJ4MSI+LCA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IngiIHZh
bHVlPSJ4MiI+XQogY29uc29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbDozNFs8aW5wdXQgdHlw
ZT0icmFkaW8iIG5hbWU9IngiIHZhbHVlPSJ4MSI+LCA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9
IngiIHZhbHVlPSJ4MiI+XQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29u
c29sZS1mb3JtYXQtY29sbGVjdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25z
b2xlLWZvcm1hdC1jb2xsZWN0aW9ucy5odG1sCmluZGV4IDkzMTU0YjkuLmI1M2ZhZjggMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9ucy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWZvcm1hdC1jb2xsZWN0aW9u
cy5odG1sCkBAIC0zMyw5ICszMyw5IEBAIGZ1bmN0aW9uIGRvaXQoKQogICAgIHZhciByYWRpb05v
ZGVMaXN0ID0gZm9ybUVsZW1lbnQueDsKICAgICBjb25zb2xlLmxvZyhyYWRpb05vZGVMaXN0KTsK
IAotICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImR1bXBNZXNzYWdlcyIsIGZ1bmN0aW9uKHJl
c3VsdCkgeworICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImR1bXBDb25zb2xlTWVzc2FnZXMi
LCBmdW5jdGlvbihyZXN1bHQpIHsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHQu
bGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBvdXRwdXQocmVzdWx0W2ldKTsKKyAgICAgICAgICAg
IG91dHB1dChyZXN1bHRbaV0udGV4dCk7CiAgICAgICAgIG5vdGlmeURvbmUoKTsKICAgICB9KTsK
IH0KQEAgLTU4LDIwICs1OCw2IEBAIFRlc3RzIHRoYXQgY29uc29sZSBuaWNlbHkgZm9ybWF0cyBI
VE1MIENvbGxlY3Rpb25zIGFuZCBOb2RlTGlzdHMuCiAgICAgPC9mb3JtPgogPC9kaXY+CiAKLTxk
aXYgaWQ9ImZyb250ZW5kLXNjcmlwdCIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+Ci1mdW5jdGlvbiBk
dW1wTWVzc2FnZXModGVzdENvbnRyb2xsZXIpCi17Ci0gICAgdGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOwotICAgIHRlc3RDb250cm9sbGVyLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMo
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICAgICAgdmFyIG1lc3Nh
Z2VzID0gV2ViSW5zcGVjdG9yLmNvbnNvbGUubWVzc2FnZXM7Ci0gICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbWVzc2FnZXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICByZXN1bHQucHVzaCht
ZXNzYWdlc1tpXS50b01lc3NhZ2VFbGVtZW50KCkudGV4dENvbnRlbnQucmVwbGFjZSgvXHUyMDBi
L2csICIiKSk7Ci0gICAgICAgIHRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUocmVzdWx0KTsKLSAg
ICB9KTsKLX0KLTwvZGl2PgotCiA8ZGl2IGlkPSJvdXRwdXQiPgogPC9kaXY+CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLWZvcm1hdC5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2NvbnNvbGUtZm9ybWF0Lmh0bWwKaW5kZXggNjllNTM0Zi4uYzllYTAyNyAx
MDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZm9ybWF0Lmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtZm9ybWF0Lmh0bWwKQEAgLTE3LDEwICsx
NywxMCBAQCBmdW5jdGlvbiBkb2l0KCkKICAgICBmdW5jdGlvbiBjYWxsYmFjayhyZXN1bHQpCiAg
ICAgewogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7ICsraSkKLSAg
ICAgICAgICAgIG91dHB1dChyZXN1bHRbaV0pOworICAgICAgICAgICAgb3V0cHV0KHJlc3VsdFtp
XS50ZXh0KTsKICAgICAgICAgbm90aWZ5RG9uZSgpOwogICAgIH0KLSAgICBldmFsdWF0ZUluV2Vi
SW5zcGVjdG9yKCJkdW1wTWVzc2FnZXMiLCBjYWxsYmFjayk7CisgICAgZXZhbHVhdGVJbldlYklu
c3BlY3RvcigiZHVtcENvbnNvbGVNZXNzYWdlcyIsIGNhbGxiYWNrKTsKIH0KIAogPC9zY3JpcHQ+
CkBAIC0zMSwyMiArMzEsNiBAQCBmdW5jdGlvbiBkb2l0KCkKIFRlc3RzIHRoYXQgY29uc29sZSBs
b2dnaW5nIGR1bXBzIHByb3BlciBtZXNzYWdlcy4KIDwvcD4KIAotPGRpdiBpZD0iZnJvbnRlbmQt
c2NyaXB0IiBzdHlsZT0iZGlzcGxheTpub25lIj4KLWZ1bmN0aW9uIGR1bXBNZXNzYWdlcyh0ZXN0
Q29udHJvbGxlcikKLXsKLSAgICAvLyBBcnJheSBmb3JtYXR0aW5nIGlzIGRlZmVycmVkIGR1ZSB0
byB0aGUgYXN5bmMgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0UHJvcGVydGllcyBjYWxsLgotICAg
IC8vIFF1ZXVlIG1lc3NhZ2UgbG9nIGR1bXAgaW4gb3JkZXIgdG8gc2VlIHByb3BlciByZXN1bHQu
Ci0gICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICAgICAgdmFyIG1lc3NhZ2Vz
ID0gV2ViSW5zcGVjdG9yLmNvbnNvbGUubWVzc2FnZXM7Ci0gICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbWVzc2FnZXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICByZXN1bHQucHVzaChtZXNz
YWdlc1tpXS50b01lc3NhZ2VFbGVtZW50KCkudGV4dENvbnRlbnQpOwotICAgICAgICB0ZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKHJlc3VsdCk7Ci0gICAgfSwgMCk7Ci19Ci08L2Rpdj4KLQogPGRp
diBpZD0ib3V0cHV0Ij4KIDwvZGl2PgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvY29uc29sZS10ZXN0cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtdGVz
dHMuaHRtbAppbmRleCA3ZmMxNDk0Li40OWMwYTMwIDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvY29uc29sZS10ZXN0cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9j
b25zb2xlLXRlc3RzLmh0bWwKQEAgLTI1LDcgKzI1LDcgQEAgZnVuY3Rpb24gZG9pdCgpCiAgICAg
ICAgIH0KICAgICAgICAgbm90aWZ5RG9uZSgpOwogICAgIH0KLSAgICBldmFsdWF0ZUluV2ViSW5z
cGVjdG9yKCJkdW1wTWVzc2FnZXMoKSIsIGNhbGxiYWNrKTsKKyAgICBldmFsdWF0ZUluV2ViSW5z
cGVjdG9yKCJkdW1wQ29uc29sZU1lc3NhZ2VzIiwgY2FsbGJhY2spOwogfQogCiA8L3NjcmlwdD4K
QEAgLTM2LDE5ICszNiw2IEBAIGZ1bmN0aW9uIGRvaXQoKQogVGVzdHMgdGhhdCBjb25zb2xlIGxv
Z2dpbmcgZHVtcHMgcHJvcGVyIG1lc3NhZ2VzLgogPC9wPgogCi08ZGl2IGlkPSJmcm9udGVuZC1z
Y3JpcHQiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgotZnVuY3Rpb24gZHVtcE1lc3NhZ2VzKCkKLXsK
LSAgICB2YXIgcmVzdWx0ID0gW107Ci0gICAgdmFyIG1lc3NhZ2VzID0gV2ViSW5zcGVjdG9yLmNv
bnNvbGUubWVzc2FnZXM7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZXNzYWdlcy5sZW5ndGg7
ICsraSkgewotICAgICAgICB2YXIgZWxlbWVudCA9IG1lc3NhZ2VzW2ldLnRvTWVzc2FnZUVsZW1l
bnQoKTsKLSAgICAgICAgcmVzdWx0LnB1c2goeyB0ZXh0OiBlbGVtZW50LnRleHRDb250ZW50LnJl
cGxhY2UoL1x1MjAwYi9nLCAiIiksIGNsYXp6OiBlbGVtZW50LmdldEF0dHJpYnV0ZSgiY2xhc3Mi
KX0pOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotPC9kaXY+Ci0KIDxkaXYgaWQ9Im91
dHB1dCI+CiA8L2Rpdj4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1l
bnRzLXBhbmVsLXN0cnVjdHVyZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZWxlbWVudHMtcGFuZWwtc3RydWN0dXJlLWV4cGVjdGVkLnR4dAppbmRleCBiMjA2ZjEyLi4yMjg1
Zjk5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtc3Ry
dWN0dXJlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMt
cGFuZWwtc3RydWN0dXJlLWV4cGVjdGVkLnR4dApAQCAtNCw0ICs0LDkgQEAgVGVzdHMgdGhhdCBl
bGVtZW50cyBwYW5lbCBzaG93cyBkb20gdHJlZSBzdHJ1Y3R1cmUuCiA8aHRtbD4KIDxoZWFkPgog
PGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8cD5UZXN0cyB0aGF0IGVsZW1lbnRzIHBhbmVsIHNo
b3dzIGRvbSB0cmVlIHN0cnVjdHVyZS4KKzwvcD4KKzxkaXYgaWQ9ImZyb250ZW5kLXNjcmlwdCIg
c3R5bGU9ImRpc3BsYXk6bm9uZSI+Cis8cHJlIGlkPSJvdXRwdXQiPgorPC9ib2R5PgogPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVsLXN0cnVj
dHVyZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXBhbmVsLXN0cnVjdHVy
ZS5odG1sCmluZGV4IDA0MGU1YzEuLmM5NzQ0ZTggMTAwNzU1Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9lbGVtZW50cy1wYW5lbC1zdHJ1Y3R1cmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZWxlbWVudHMtcGFuZWwtc3RydWN0dXJlLmh0bWwKQEAgLTgsMTAgKzgsMTAgQEAg
ZnVuY3Rpb24gZG9pdCgpCiAgICAgZnVuY3Rpb24gY2FsbGJhY2socmVzdWx0KQogICAgIHsKICAg
ICAgICAgdmFyIG91dHB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKTsKLSAg
ICAgICAgb3V0cHV0LnRleHRDb250ZW50ID0gcmVzdWx0LnJlcGxhY2UoL1x1MjAwYi9nLCAiIiku
cmVwbGFjZSgvXG4vZywgIiIpLnJlcGxhY2UoLzxwPi4qPFwvYm9keT4vZywgIiIpLnJlcGxhY2Uo
LzwvZywgIlxuPCIpOworICAgICAgICBvdXRwdXQudGV4dENvbnRlbnQgPSByZXN1bHQucmVwbGFj
ZSgvXHUyMDBiL2csICIiKS5yZXBsYWNlKC9cbi9nLCAiIikucmVwbGFjZSgvPC9nLCAiXG48Iik7
CiAgICAgICAgIG5vdGlmeURvbmUoKTsKICAgICB9Ci0gICAgZXZhbHVhdGVJbldlYkluc3BlY3Rv
cigiV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy50cmVlT3V0bGluZS5lbGVtZW50LnRleHRD
b250ZW50IiwgY2FsbGJhY2spOworICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImR1bXBFbGVt
ZW50cyIsIGNhbGxiYWNrKTsKIH0KIAogPC9zY3JpcHQ+CkBAIC0yMyw2ICsyMywxNCBAQCBUZXN0
cyB0aGF0IGVsZW1lbnRzIHBhbmVsIHNob3dzIGRvbSB0cmVlIHN0cnVjdHVyZS4KIDwvcD4KIAog
PGRpdiBpZD0iZnJvbnRlbmQtc2NyaXB0IiBzdHlsZT0iZGlzcGxheTpub25lIj4KK2Z1bmN0aW9u
IGR1bXBFbGVtZW50cyh0ZXN0Q29udHJvbGxlcikKK3sKKyAgICB0ZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CisgICAgZXhwYW5kRE9NU3VidHJlZShXZWJJbnNwZWN0b3IuZG9tQWdlbnQu
ZG9jdW1lbnQpOworICAgIHRlc3RDb250cm9sbGVyLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMo
ZnVuY3Rpb24oKSB7CisgICAgICAgIHRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoV2ViSW5zcGVj
dG9yLnBhbmVscy5lbGVtZW50cy50cmVlT3V0bGluZS5lbGVtZW50LnRleHRDb250ZW50KTsKKyAg
ICB9KTsKK30KIDwvZGl2PgogCiA8cHJlIGlkPSJvdXRwdXQiPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2V2YWx1YXRlLWluLWZyb250ZW5kLmpzIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2V2YWx1YXRlLWluLWZyb250ZW5kLmpzCmluZGV4IDc5YjJjYjEuLjI1NWVhZTAgMTAw
NzU1Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9ldmFsdWF0ZS1pbi1mcm9udGVuZC5qcwor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXZhbHVhdGUtaW4tZnJvbnRlbmQuanMKQEAgLTIz
LDggKzIzLDEyIEBAIGZ1bmN0aW9uIG9ubG9hZCgpCiAgICAgICAgIHJldHVybjsKICAgICB2YXIg
Y2FsbElkID0gbGFzdENhbGxJZCsrOwogICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ldmFsdWF0ZUluV2ViSW5zcGVjdG9yKGNhbGxJZCwgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImZyb250ZW5kLXNjcmlwdCIpLnRleHRDb250ZW50KTsKKyAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgaWYgKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJmcm9udGVuZC1zY3JpcHQiKSkKKyAgICAgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ldmFsdWF0ZUluV2ViSW5zcGVjdG9yKGNhbGxJZCwgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImZyb250ZW5kLXNjcmlwdCIpLnRleHRDb250ZW50KTsKKyAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoY2FsbElkLCBl
eHBhbmRET01TdWJ0cmVlLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZXZhbHVhdGVJbldlYkluc3BlY3RvcihjYWxsSWQsIGR1bXBDb25zb2xlTWVzc2FnZXMu
dG9TdHJpbmcoKSk7CisgICAgICAgIH0KICAgICAgICAgZG9pdCgpOwogICAgIH0sIDApOwogCkBA
IC03MiwzICs3NiwyNiBAQCB3aW5kb3cuZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZCA9IGZ1
bmN0aW9uKGNhbGxJZCwganNvblJlc3VsdCkKICAgICAgICAgZGVsZXRlIGNhbGxiYWNrc1tjYWxs
SWRdOwogICAgIH0KIH07CisKKy8vIEluamVjdGVkIHV0aWxpdHkgZnVuY3Rpb25zLgorCitmdW5j
dGlvbiBleHBhbmRET01TdWJ0cmVlKG5vZGUpCit7CisgICAgZnVuY3Rpb24gcHJvY2Vzc0NoaWxk
cmVuKGNoaWxkcmVuKQorICAgIHsKKyAgICAgICBmb3IgKHZhciBpID0gMDsgY2hpbGRyZW4gJiYg
aSA8IGNoaWxkcmVuLmxlbmd0aDsgKytpKQorICAgICAgICAgICBleHBhbmRET01TdWJ0cmVlKGNo
aWxkcmVuW2ldKTsKKyAgICB9CisgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LmdldENoaWxkTm9k
ZXNBc3luYyhub2RlLCBwcm9jZXNzQ2hpbGRyZW4pOworfQorCitmdW5jdGlvbiBkdW1wQ29uc29s
ZU1lc3NhZ2VzKCkKK3sKKyAgICB2YXIgcmVzdWx0ID0gW107CisgICAgdmFyIG1lc3NhZ2VzID0g
V2ViSW5zcGVjdG9yLmNvbnNvbGUubWVzc2FnZXM7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBt
ZXNzYWdlcy5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgZWxlbWVudCA9IG1lc3NhZ2VzW2ld
LnRvTWVzc2FnZUVsZW1lbnQoKTsKKyAgICAgICAgcmVzdWx0LnB1c2goeyB0ZXh0OiBlbGVtZW50
LnRleHRDb250ZW50LnJlcGxhY2UoL1x1MjAwYi9nLCAiIiksIGNsYXp6OiBlbGVtZW50LmdldEF0
dHJpYnV0ZSgiY2xhc3MiKX0pOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9zdHlsZXMtaWZyYW1lLWRhdGEu
aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvc3R5bGVzLWlmcmFtZS1kYXRh
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMGY0OTY2YgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvc3R5bGVzLWlmcmFt
ZS1kYXRhLmh0bWwKQEAgLTAsMCArMSwxNyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZSB0eXBl
PSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgIGJvZHkgeyBiYWNrZ3JvdW5kOmdyZWVuOyB9
Cis8L3N0eWxlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGlmcmFtZU9ubG9hZCgpCit7CisgICAgd2lu
ZG93LnBhcmVudC5pZnJhbWVMb2FkZWQgPSB0cnVlOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+CisK
Kzxib2R5IG9ubG9hZD0iaWZyYW1lT25sb2FkKCkiPgorPC9ib2R5PgorCis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzLWlmcmFtZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzLWlmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThhOWY5NwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtaWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDEwIEBACitUZXN0cyB0aGF0IHByb3BlciAoYW5kIGRpZmZlcmVudCkgc3R5bGVzIGFyZSBy
ZXR1cm5lZCBmb3IgYm9keSBlbGVtZW50cyBvZiBtYWluIGRvY3VtZW50IGFuZCBpZnJhbWUuCisK
KworU3R5bGU6IDAKK3sibWFyZ2luIjoiOHB4In0KK3siYmFja2dyb3VuZCI6ImJsdWUifQorU3R5
bGU6IDEKK3sibWFyZ2luIjoiOHB4In0KK3siYmFja2dyb3VuZCI6ImdyZWVuIn0KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy1pZnJhbWUuaHRtbCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9zdHlsZXMtaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5k
ZXggMDAwMDAwMC4uMTZmMzVjMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9zdHlsZXMtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw5OSBAQAorPGh0bWw+Cis8aGVhZD4K
KworPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgYm9keSB7IGJhY2tn
cm91bmQ6Ymx1ZTsgfQorPC9zdHlsZT4KKworPHNjcmlwdCBzcmM9ImV2YWx1YXRlLWluLWZyb250
ZW5kLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHJ1bkFmdGVySWZyYW1lSXNM
b2FkZWQoY29udGludWF0aW9uKQoreworICAgIGZ1bmN0aW9uIHN0ZXAoKQorICAgIHsKKyAgICAg
ICAgaWYgKCF3aW5kb3cuaWZyYW1lTG9hZGVkKQorICAgICAgICAgICAgc2V0VGltZW91dChzdGVw
LCAxMDApOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb250aW51YXRpb24oKTsKKyAgICB9
CisgICAgc2V0VGltZW91dChzdGVwLCAxMDApOworfQorCitmdW5jdGlvbiBkb2l0KCkKK3sKKyAg
ICBydW5BZnRlcklmcmFtZUlzTG9hZGVkKGZ1bmN0aW9uKCkgeworICAgICAgICBmdW5jdGlvbiBj
YWxsYmFjayhyZXN1bHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgcmVzdWx0Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgb3V0cHV0KCJTdHlsZTog
IiArIGkpOworICAgICAgICAgICAgICAgIHZhciBtYXRjaGVkUnVsZXMgPSByZXN1bHRbaV0ubWF0
Y2hlZENTU1J1bGVzOworICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBtYXRjaGVkUnVs
ZXMgJiYgaiA8IG1hdGNoZWRSdWxlcy5sZW5ndGg7ICsraikgeworICAgICAgICAgICAgICAgICAg
ICBvdXRwdXQoSlNPTi5zdHJpbmdpZnkobWF0Y2hlZFJ1bGVzW2pdLnN0eWxlLnNob3J0aGFuZFZh
bHVlcykpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5v
dGlmeURvbmUoKTsKKyAgICAgICAgfQorICAgICAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJk
dW1wU3R5bGVzIiwgY2FsbGJhY2spOworICAgIH0pOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4K
KworPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+Cis8cD4KK1Rlc3RzIHRoYXQgcHJvcGVyIChhbmQg
ZGlmZmVyZW50KSBzdHlsZXMgYXJlIHJldHVybmVkIGZvciBib2R5IGVsZW1lbnRzIG9mIG1haW4g
ZG9jdW1lbnQgYW5kIGlmcmFtZS4KKzwvcD4KKworPGlmcmFtZSBzcmM9J3Jlc291cmNlcy9zdHls
ZXMtaWZyYW1lLWRhdGEuaHRtbCc+PC9pZnJhbWU+CisKKzxkaXYgaWQ9ImZyb250ZW5kLXNjcmlw
dCIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+CisKK2Z1bmN0aW9uIGR1bXBTdHlsZXModGVzdENvbnRy
b2xsZXIpCit7CisgICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgZXhw
YW5kRE9NU3VidHJlZShXZWJJbnNwZWN0b3IuZG9tQWdlbnQuZG9jdW1lbnQpOworCisgICAgdGVz
dENvbnRyb2xsZXIucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhmdW5jdGlvbigpIHsKKyAgICAg
ICAgZHVtcFN0eWxlc0NvbnRpbnVhdGlvbih0ZXN0Q29udHJvbGxlcik7CisgICAgfSk7Cit9CisK
K2Z1bmN0aW9uIGR1bXBTdHlsZXNDb250aW51YXRpb24odGVzdENvbnRyb2xsZXIpCit7CisgICAg
Ly8gMS4gR2V0IHN0eWxlcyBmb3IgYm9keSwgc3RvcmUgdGhlbSBpbiBtYWluU3R5bGVzIHZhci4K
KyAgICB2YXIgYm9keUlkID0gV2ViSW5zcGVjdG9yLmRvbUFnZW50LmRvY3VtZW50LmJvZHkuaWQ7
CisgICAgdmFyIG1haW5TdHlsZXMgPSBudWxsOworICAgIGZ1bmN0aW9uIG1haW5GcmFtZUNhbGxi
YWNrKHN0eWxlcykgeworICAgICAgICBtYWluU3R5bGVzID0gc3R5bGVzOworICAgIH0KKyAgICBJ
bmplY3RlZFNjcmlwdEFjY2Vzcy5nZXRTdHlsZXMoYm9keUlkLCBmYWxzZSwgbWFpbkZyYW1lQ2Fs
bGJhY2spOworCisgICAgLy8gMi4gRmluZCBpZnJhbWUgbm9kZQorICAgIHZhciBpbm5lck1hcHBp
bmcgPSBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuX2lkVG9ET01Ob2RlOworICAgIHZhciBpZnJhbWVC
b2R5SWQgPSBudWxsOworCisgICAgZm9yICh2YXIgbm9kZUlkIGluIGlubmVyTWFwcGluZykgewor
ICAgICAgICBpZiAoaW5uZXJNYXBwaW5nW25vZGVJZF0ubm9kZU5hbWUgPT09ICJJRlJBTUUiKQor
ICAgICAgICAgICAgaWZyYW1lQm9keUlkID0gaW5uZXJNYXBwaW5nW25vZGVJZF0uZmlyc3RDaGls
ZC5sYXN0Q2hpbGQuaWQ7CisgICAgfQorICAgIGlmICh0eXBlb2YgaWZyYW1lQm9keUlkICE9PSAi
bnVtYmVyIikgeworICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKFsiTm8gaWZyYW1l
IG5vZGUgZm91bmQiXSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyAzLiBHZXQg
c3R5bGVzIGZvciBpZnJhbWUncyBib2R5LCByZXR1cm4gdGhlbSB0b2dldGhlciB3aXRoIG1haW4g
c3R5bGVzLgorICAgIGZ1bmN0aW9uIGlmcmFtZUNhbGxiYWNrKHN0eWxlcykgeworICAgICAgICB0
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKFttYWluU3R5bGVzLCBzdHlsZXNdKTsKKyAgICB9Cisg
ICAgSW5qZWN0ZWRTY3JpcHRBY2Nlc3MuZ2V0U3R5bGVzKGlmcmFtZUJvZHlJZCwgZmFsc2UsIGlm
cmFtZUNhbGxiYWNrKTsKK30KKzwvZGl2PgorCis8ZGl2IGlkPSJvdXRwdXQiPgorPC9kaXY+CisK
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Nr
aXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IDkwYzY5YjMuLmY5
M2NkZjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAtMTE4LDYgKzExOCw3IEBAIGZhc3Qv
dGV4dC9maW5kLWhpZGRlbi10ZXh0Lmh0bWwKIGluc3BlY3Rvci9jb25zb2xlLWZvcm1hdC1jb2xs
ZWN0aW9ucy5odG1sCiBpbnNwZWN0b3IvY3NzLXN5bnRheC1oaWdobGlnaHQuaHRtbAogaW5zcGVj
dG9yL2phdmFzY3JpcHQtc3ludGF4LWhpZ2hsaWdodC5odG1sCitpbnNwZWN0b3Ivc3R5bGVzLWlm
cmFtZS5odG1sCiBpbnNwZWN0b3IvdGltZWxpbmUtdHJpdmlhbC5odG1sCiBpbnNwZWN0b3IvdW5j
YXVnaHQtZG9tMS1leGNlcHRpb24uaHRtbAogaW5zcGVjdG9yL3VuY2F1Z2h0LWRvbTMtZXhjZXB0
aW9uLmh0bWwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggZTBkOTY2NS4uYWYyYzg2YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNiBAQAogMjAwOS0xMS0wNSAgUGF2
ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yIGRvZXNuJ3Qgc2hvdyBD
U1MgcnVsZXMgcHJvcGVybHkgZm9yIGlmcmFtZXMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwODg0CisKKyAgICAgICAgVGVzdDogaW5zcGVjdG9y
L3N0eWxlcy1pZnJhbWUuaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9ET01B
Z2VudC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Ob2RlKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0LmpzOgorICAgICAgICAoSW5qZWN0ZWRTY3Jp
cHQuZ2V0U3R5bGVzKToKKyAgICAgICAgKEluamVjdGVkU2NyaXB0LmdldENvbXB1dGVkU3R5bGUp
OgorICAgICAgICAoSW5qZWN0ZWRTY3JpcHQuYWRkU3R5bGVTZWxlY3Rvcik6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9UZXN0Q29udHJvbGxlci5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UZXN0Q29udHJvbGxlci5wcm90b3R5cGUucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZC5pbnZva2VN
ZXRob2QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQp
OgorCisyMDA5LTExLTA1ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgor
CiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBzcGVlZCB1cCBUaW1lbGluZXMgQ2xlYXIgYnkgYSBmYWN0b3Igb2YgdGhvdXNhbmRz
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCmluZGV4IDI1ZmZhZmEuLjI1
MmI1ZjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5q
cworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKQEAgLTYxLDkg
KzYxLDEwIEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlID0gZnVuY3Rpb24oZG9jLCBwYXlsb2FkKSB7
CiAgICAgdGhpcy5fbWF0Y2hlZENTU1J1bGVzID0gW107CiAKICAgICBpZiAodGhpcy5ub2RlVHlw
ZSA9PSBOb2RlLkVMRU1FTlRfTk9ERSkgewotICAgICAgICBpZiAodGhpcy5ub2RlTmFtZSA9PSAi
SFRNTCIpCisgICAgICAgIC8vIEhUTUwgYW5kIEJPRFkgZnJvbSBpbnRlcm5hbCBpZnJhbWVzIHNo
b3VsZCBub3Qgb3ZlcndyaXRlIHRvcC1sZXZlbCBvbmVzLgorICAgICAgICBpZiAoIXRoaXMub3du
ZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgJiYgdGhpcy5ub2RlTmFtZSA9PT0gIkhUTUwiKQog
ICAgICAgICAgICAgdGhpcy5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCA9IHRoaXM7Ci0g
ICAgICAgIGlmICh0aGlzLm5vZGVOYW1lID09ICJCT0RZIikKKyAgICAgICAgaWYgKCF0aGlzLm93
bmVyRG9jdW1lbnQuYm9keSAmJiB0aGlzLm5vZGVOYW1lID09PSAiQk9EWSIpCiAgICAgICAgICAg
ICB0aGlzLm93bmVyRG9jdW1lbnQuYm9keSA9IHRoaXM7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0LmpzIGIvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0luamVjdGVkU2NyaXB0LmpzCmluZGV4IDNiYTA5YTEuLjdjOTMz
ZTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmplY3RlZFNjcmlw
dC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5qZWN0ZWRTY3JpcHQuanMK
QEAgLTU5LDcgKzU5LDggQEAgSW5qZWN0ZWRTY3JpcHQuZ2V0U3R5bGVzID0gZnVuY3Rpb24obm9k
ZUlkLCBhdXRob3JPbmx5KQogICAgIHZhciBub2RlID0gSW5qZWN0ZWRTY3JpcHQuX25vZGVGb3JJ
ZChub2RlSWQpOwogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHZh
ciBtYXRjaGVkUnVsZXMgPSBJbmplY3RlZFNjcmlwdC5fd2luZG93KCkuZ2V0TWF0Y2hlZENTU1J1
bGVzKG5vZGUsICIiLCBhdXRob3JPbmx5KTsKKyAgICB2YXIgZGVmYXVsdFZpZXcgPSBub2RlLm93
bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7CisgICAgdmFyIG1hdGNoZWRSdWxlcyA9IGRlZmF1bHRW
aWV3LmdldE1hdGNoZWRDU1NSdWxlcyhub2RlLCAiIiwgYXV0aG9yT25seSk7CiAgICAgdmFyIG1h
dGNoZWRDU1NSdWxlcyA9IFtdOwogICAgIGZvciAodmFyIGkgPSAwOyBtYXRjaGVkUnVsZXMgJiYg
aSA8IG1hdGNoZWRSdWxlcy5sZW5ndGg7ICsraSkKICAgICAgICAgbWF0Y2hlZENTU1J1bGVzLnB1
c2goSW5qZWN0ZWRTY3JpcHQuX3NlcmlhbGl6ZVJ1bGUobWF0Y2hlZFJ1bGVzW2ldKSk7CkBAIC03
Miw3ICs3Myw3IEBAIEluamVjdGVkU2NyaXB0LmdldFN0eWxlcyA9IGZ1bmN0aW9uKG5vZGVJZCwg
YXV0aG9yT25seSkKICAgICB9CiAgICAgdmFyIHJlc3VsdCA9IHt9OwogICAgIHJlc3VsdC5pbmxp
bmVTdHlsZSA9IEluamVjdGVkU2NyaXB0Ll9zZXJpYWxpemVTdHlsZShub2RlLnN0eWxlLCB0cnVl
KTsKLSAgICByZXN1bHQuY29tcHV0ZWRTdHlsZSA9IEluamVjdGVkU2NyaXB0Ll9zZXJpYWxpemVT
dHlsZShJbmplY3RlZFNjcmlwdC5fd2luZG93KCkuZ2V0Q29tcHV0ZWRTdHlsZShub2RlKSk7Cisg
ICAgcmVzdWx0LmNvbXB1dGVkU3R5bGUgPSBJbmplY3RlZFNjcmlwdC5fc2VyaWFsaXplU3R5bGUo
ZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShub2RlKSk7CiAgICAgcmVzdWx0Lm1hdGNoZWRD
U1NSdWxlcyA9IG1hdGNoZWRDU1NSdWxlczsKICAgICByZXN1bHQuc3R5bGVBdHRyaWJ1dGVzID0g
c3R5bGVBdHRyaWJ1dGVzOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC04Myw3ICs4NCw3IEBAIElu
amVjdGVkU2NyaXB0LmdldENvbXB1dGVkU3R5bGUgPSBmdW5jdGlvbihub2RlSWQpCiAgICAgdmFy
IG5vZGUgPSBJbmplY3RlZFNjcmlwdC5fbm9kZUZvcklkKG5vZGVJZCk7CiAgICAgaWYgKCFub2Rl
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEluamVjdGVkU2NyaXB0Ll9zZXJp
YWxpemVTdHlsZShJbmplY3RlZFNjcmlwdC5fd2luZG93KCkuZ2V0Q29tcHV0ZWRTdHlsZShub2Rl
KSk7CisgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0Ll9zZXJpYWxpemVTdHlsZShub2RlLm93bmVy
RG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShub2RlKSk7CiB9CiAKIEluamVj
dGVkU2NyaXB0LmdldElubGluZVN0eWxlID0gZnVuY3Rpb24obm9kZUlkKQpAQCAtMjMwLDE1ICsy
MzEsMTkgQEAgSW5qZWN0ZWRTY3JpcHQuYXBwbHlTdHlsZVJ1bGVUZXh0ID0gZnVuY3Rpb24ocnVs
ZUlkLCBuZXdDb250ZW50LCBzZWxlY3RlZE5vZGVJZCkKIAogSW5qZWN0ZWRTY3JpcHQuYWRkU3R5
bGVTZWxlY3RvciA9IGZ1bmN0aW9uKG5ld0NvbnRlbnQsIHNlbGVjdGVkTm9kZUlkKQogewotICAg
IHZhciBzdHlsZXNoZWV0ID0gSW5qZWN0ZWRTY3JpcHQuc3R5bGVzaGVldDsKKyAgICB2YXIgc2Vs
ZWN0ZWROb2RlID0gSW5qZWN0ZWRTY3JpcHQuX25vZGVGb3JJZChzZWxlY3RlZE5vZGVJZCk7Cisg
ICAgaWYgKCFzZWxlY3RlZE5vZGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB2YXIgb3du
ZXJEb2N1bWVudCA9IHNlbGVjdGVkTm9kZS5vd25lckRvY3VtZW50OworCisgICAgdmFyIHN0eWxl
c2hlZXQgPSBvd25lckRvY3VtZW50Ll9fc3R5bGVzaGVldDsKICAgICBpZiAoIXN0eWxlc2hlZXQp
IHsKLSAgICAgICAgdmFyIGluc3BlY3RlZERvY3VtZW50ID0gSW5qZWN0ZWRTY3JpcHQuX3dpbmRv
dygpLmRvY3VtZW50OwotICAgICAgICB2YXIgaGVhZCA9IGluc3BlY3RlZERvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF07Ci0gICAgICAgIHZhciBzdHlsZUVsZW1lbnQgPSBp
bnNwZWN0ZWREb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpOworICAgICAgICB2YXIgaGVh
ZCA9IG93bmVyRG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXTsKKyAgICAg
ICAgdmFyIHN0eWxlRWxlbWVudCA9IG93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUi
KTsKICAgICAgICAgc3R5bGVFbGVtZW50LnR5cGUgPSAidGV4dC9jc3MiOwogICAgICAgICBoZWFk
LmFwcGVuZENoaWxkKHN0eWxlRWxlbWVudCk7Ci0gICAgICAgIHN0eWxlc2hlZXQgPSBpbnNwZWN0
ZWREb2N1bWVudC5zdHlsZVNoZWV0c1tpbnNwZWN0ZWREb2N1bWVudC5zdHlsZVNoZWV0cy5sZW5n
dGggLSAxXTsKLSAgICAgICAgSW5qZWN0ZWRTY3JpcHQuc3R5bGVzaGVldCA9IHN0eWxlc2hlZXQ7
CisgICAgICAgIHN0eWxlc2hlZXQgPSBvd25lckRvY3VtZW50LnN0eWxlU2hlZXRzW293bmVyRG9j
dW1lbnQuc3R5bGVTaGVldHMubGVuZ3RoIC0gMV07CisgICAgICAgIG93bmVyRG9jdW1lbnQuX19z
dHlsZXNoZWV0ID0gc3R5bGVzaGVldDsKICAgICB9CiAKICAgICB0cnkgewpAQCAtMjQ4LDcgKzI1
Myw2IEBAIEluamVjdGVkU2NyaXB0LmFkZFN0eWxlU2VsZWN0b3IgPSBmdW5jdGlvbihuZXdDb250
ZW50LCBzZWxlY3RlZE5vZGVJZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IHZhciBzZWxlY3RlZE5vZGUgPSBJbmplY3RlZFNjcmlwdC5fbm9kZUZvcklkKHNlbGVjdGVkTm9k
ZUlkKTsKICAgICB2YXIgcnVsZSA9IHN0eWxlc2hlZXQuY3NzUnVsZXNbc3R5bGVzaGVldC5jc3NS
dWxlcy5sZW5ndGggLSAxXTsKICAgICBydWxlLl9faXNWaWFJbnNwZWN0b3IgPSB0cnVlOwogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGVzdENvbnRyb2xsZXIuanMg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGVzdENvbnRyb2xsZXIuanMKaW5kZXggMTJl
MWFjNy4uODdiYTQwMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rl
c3RDb250cm9sbGVyLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXN0Q29u
dHJvbGxlci5qcwpAQCAtNTIsMjQgKzUyLDI3IEBAIFdlYkluc3BlY3Rvci5UZXN0Q29udHJvbGxl
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9Ci0KLSAgICAgICAgc2V0VGltZW91dCh0aGlzLnJ1bkFmdGVyUGVuZGlu
Z0Rpc3BhdGNoZXMuYmluZCh0aGlzKSwgMCwgY2FsbGJhY2spOworICAgICAgICBzZXRUaW1lb3V0
KHRoaXMucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcy5iaW5kKHRoaXMpLCAyMDAsIGNhbGxiYWNr
KTsKICAgICB9CiB9CiAKIFdlYkluc3BlY3Rvci5ldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kID0g
ZnVuY3Rpb24oY2FsbElkLCBzY3JpcHQpCiB7CiAgICAgdmFyIGNvbnRyb2xsZXIgPSBuZXcgV2Vi
SW5zcGVjdG9yLlRlc3RDb250cm9sbGVyKGNhbGxJZCk7Ci0gICAgdHJ5IHsKLSAgICAgICAgdmFy
IHJlc3VsdDsKLSAgICAgICAgaWYgKHdpbmRvd1tzY3JpcHRdICYmIHR5cGVvZiB3aW5kb3dbc2Ny
aXB0XSA9PT0gImZ1bmN0aW9uIikKLSAgICAgICAgICAgIHJlc3VsdCA9IHdpbmRvd1tzY3JpcHRd
LmNhbGwodGhpcywgY29udHJvbGxlcik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3Vs
dCA9IHdpbmRvdy5ldmFsKHNjcmlwdCk7CisgICAgZnVuY3Rpb24gaW52b2tlTWV0aG9kKCkKKyAg
ICB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB2YXIgcmVzdWx0OworICAgICAgICAgICAg
aWYgKHdpbmRvd1tzY3JpcHRdICYmIHR5cGVvZiB3aW5kb3dbc2NyaXB0XSA9PT0gImZ1bmN0aW9u
IikKKyAgICAgICAgICAgICAgICByZXN1bHQgPSB3aW5kb3dbc2NyaXB0XS5jYWxsKFdlYkluc3Bl
Y3RvciwgY29udHJvbGxlcik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVz
dWx0ID0gd2luZG93LmV2YWwoc2NyaXB0KTsKIAotICAgICAgICBpZiAoIWNvbnRyb2xsZXIuX3dh
aXRVbnRpbERvbmUpCi0gICAgICAgICAgICBjb250cm9sbGVyLm5vdGlmeURvbmUocmVzdWx0KTsK
LSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGNvbnRyb2xsZXIubm90aWZ5RG9uZShlLnRvU3Ry
aW5nKCkpOworICAgICAgICAgICAgaWYgKCFjb250cm9sbGVyLl93YWl0VW50aWxEb25lKQorICAg
ICAgICAgICAgICAgIGNvbnRyb2xsZXIubm90aWZ5RG9uZShyZXN1bHQpOworICAgICAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgICAgICBjb250cm9sbGVyLm5vdGlmeURvbmUoZS50b1N0cmluZygp
KTsKKyAgICAgICAgfQogICAgIH0KKyAgICBjb250cm9sbGVyLnJ1bkFmdGVyUGVuZGluZ0Rpc3Bh
dGNoZXMoaW52b2tlTWV0aG9kKTsKIH0K
</data>
<flag name="review"
          id="24131"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>