<?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>54192</bug_id>
          
          <creation_ts>2011-02-10 05:12:56 -0800</creation_ts>
          <short_desc>[Qt] Add UrlLoader and command line argument handling to MiniBrowser</short_desc>
          <delta_ts>2011-02-10 06:21:01 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zoltan Horvath">zoltan</reporter>
          <assigned_to name="Zoltan Horvath">zoltan</assigned_to>
          <cc>kling</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>348969</commentid>
    <comment_count>0</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2011-02-10 05:12:56 -0800</bug_when>
    <thetext>Copy and modify files from QtTestBrowser&apos;s implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348970</commentid>
    <comment_count>1</comment_count>
      <attachid>81953</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2011-02-10 05:14:23 -0800</bug_when>
    <thetext>Created attachment 81953
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348974</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-10 05:16:18 -0800</bug_when>
    <thetext>Attachment 81953 did not pass style-queue:

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

Tools/MiniBrowser/qt/utils.cpp:29:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Tools/MiniBrowser/qt/UrlLoader.cpp:29:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Tools/MiniBrowser/qt/MiniBrowserApplication.cpp:29:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 3 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348988</commentid>
    <comment_count>3</comment_count>
      <attachid>81953</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-02-10 05:45:23 -0800</bug_when>
    <thetext>Comment on attachment 81953
proposed patch

Wohoo, moar QtMiniBrowser! r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349002</commentid>
    <comment_count>4</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2011-02-10 05:59:38 -0800</bug_when>
    <thetext>(In reply to comment #2)

&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

Bug #54200 filed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349021</commentid>
    <comment_count>5</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2011-02-10 06:21:01 -0800</bug_when>
    <thetext>Thanks for review!
Committed r78217
http://trac.webkit.org/changeset/78217</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81953</attachid>
            <date>2011-02-10 05:14:23 -0800</date>
            <delta_ts>2011-02-10 05:45:23 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>minibrowserbig.patch</filename>
            <type>text/plain</type>
            <size>27228</size>
            <attacher name="Zoltan Horvath">zoltan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwNzFh
Y2I1Li45MzUyNDI1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEtMDItMTAgIFpvbHRhbiBIb3J2YXRoICA8em9s
dGFuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKwor
ICAgICAgICBbUXRdIEFkZCBVcmxMb2FkZXIgYW5kIGNvbW1hbmQgbGluZSBhcmd1bWVudCBoYW5k
bGluZyB0byBNaW5pQnJvd3NlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTQxOTIKKyAKKyAgICAgICAgQ29weSBhbmQgbW9kaWZ5IGZpbGVzIGZyb20g
UXRUZXN0QnJvd3NlcidzIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogTWluaUJyb3dzZXIv
cXQvQnJvd3NlcldpbmRvdy5jcHA6CisgICAgICAgIChCcm93c2VyV2luZG93OjpCcm93c2VyV2lu
ZG93KToKKyAgICAgICAgKEJyb3dzZXJXaW5kb3c6Om5ld1dpbmRvdyk6CisgICAgICAgICogTWlu
aUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5oOgorICAgICAgICAqIE1pbmlCcm93c2VyL3F0L01p
bmlCcm93c2VyLnBybzoKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxp
Y2F0aW9uLmNwcDogQ29waWVkIGZyb20gUXRUZXN0QnJvd3Nlci9sYXVuY2hlcndpbmRvdy5jcHAK
KyAgICAgICAgKE1pbmlCcm93c2VyQXBwbGljYXRpb246Ok1pbmlCcm93c2VyQXBwbGljYXRpb24p
OgorICAgICAgICAoTWluaUJyb3dzZXJBcHBsaWNhdGlvbjo6aGFuZGxlVXNlck9wdGlvbnMpOgor
ICAgICAgICAqIE1pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyQXBwbGljYXRpb24uaDogQ29waWVk
IGZyb20gUXRUZXN0QnJvd3Nlci9sYXVuY2hlcndpbmRvdy5oCisgICAgICAgIChXaW5kb3dPcHRp
b25zOjpXaW5kb3dPcHRpb25zKToKKyAgICAgICAgKE1pbmlCcm93c2VyQXBwbGljYXRpb246OnVy
bHMpOgorICAgICAgICAoTWluaUJyb3dzZXJBcHBsaWNhdGlvbjo6aXNSb2JvdGl6ZWQpOgorICAg
ICAgICAoTWluaUJyb3dzZXJBcHBsaWNhdGlvbjo6cm9ib3RUaW1lb3V0KToKKyAgICAgICAgKE1p
bmlCcm93c2VyQXBwbGljYXRpb246OnJvYm90RXh0cmFUaW1lKToKKyAgICAgICAgKiBNaW5pQnJv
d3Nlci9xdC9VcmxMb2FkZXIuY3BwOiBDb3BpZWQgZnJvbSBRdFRlc3RCcm93c2VyL3VybGxvYWRl
ci5jcHAKKyAgICAgICAgKFVybExvYWRlcjo6VXJsTG9hZGVyKToKKyAgICAgICAgKFVybExvYWRl
cjo6bG9hZE5leHQpOgorICAgICAgICAoVXJsTG9hZGVyOjpjaGVja0lmRmluaXNoZWQpOgorICAg
ICAgICAoVXJsTG9hZGVyOjpmcmFtZUxvYWRTdGFydGVkKToKKyAgICAgICAgKFVybExvYWRlcjo6
ZnJhbWVMb2FkRmluaXNoZWQpOgorICAgICAgICAoVXJsTG9hZGVyOjpsb2FkVXJsTGlzdCk6Cisg
ICAgICAgIChVcmxMb2FkZXI6OmdldFVybCk6CisgICAgICAgICogTWluaUJyb3dzZXIvcXQvVXJs
TG9hZGVyLmg6IENvcGllZCBmcm9tIFF0VGVzdEJyb3dzZXIvdXJsbG9hZGVyLmggCisgICAgICAg
ICogTWluaUJyb3dzZXIvcXQvbWFpbi5jcHA6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBN
aW5pQnJvd3Nlci9xdC91dGlscy5jcHA6IENvcGllZCBmcm9tIFF0VGVzdEJyb3dzZXIvdXRpbHMu
Y3BwIAorICAgICAgICAodGFrZU9wdGlvblZhbHVlKToKKyAgICAgICAgKGZvcm1hdEtleXMpOgor
ICAgICAgICAoZW51bVRvS2V5cyk6CisgICAgICAgIChhcHBRdWl0KToKKyAgICAgICAgKHVybEZy
b21Vc2VySW5wdXQpOgorICAgICAgICAqIE1pbmlCcm93c2VyL3F0L3V0aWxzLmg6IENvcGllZCBm
cm9tIFF0VGVzdEJyb3dzZXIvdXRpbHMuaAorCiAyMDExLTAyLTA5ICBBZGFtIFJvYmVuICA8YXJv
YmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBUZXN0IHRoYXQgV01fUFJJTlQgZG9lc24ndCB0cmln
Z2VyIGFuIGFzc2VydGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3Nl
cldpbmRvdy5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmNwcAppbmRl
eCBiZmQ3Zjk1Li4wNDA1ZTllIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93
c2VyV2luZG93LmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmNw
cApAQCAtMzYsMTcgKzM2LDI1IEBAIHN0YXRpYyBRV0tQYWdlKiBuZXdQYWdlRnVuY3Rpb24oUVdL
UGFnZSogcGFnZSkKICAgICByZXR1cm4gd2luZG93LT5wYWdlKCk7CiB9CiAKLVFHcmFwaGljc1dL
Vmlldzo6QmFja2luZ1N0b3JlVHlwZSBCcm93c2VyV2luZG93OjpiYWNraW5nU3RvcmVUeXBlRm9y
TmV3V2luZG93ID0gUUdyYXBoaWNzV0tWaWV3OjpTaW1wbGU7Ci1ib29sIEJyb3dzZXJXaW5kb3c6
OnVzZVNlcGFyYXRlV2ViUHJvY2Vzc1BlcldpbmRvdyA9IGZhbHNlOwotCiBRVmVjdG9yPHFyZWFs
PiBCcm93c2VyV2luZG93OjptX3pvb21MZXZlbHM7CiAKLUJyb3dzZXJXaW5kb3c6OkJyb3dzZXJX
aW5kb3coUVdLQ29udGV4dCogY29udGV4dCkKK0Jyb3dzZXJXaW5kb3c6OkJyb3dzZXJXaW5kb3co
UVdLQ29udGV4dCogY29udGV4dCwgV2luZG93T3B0aW9ucyogb3B0aW9ucykKICAgICA6IG1faXNa
b29tVGV4dE9ubHkoZmFsc2UpCiAgICAgLCBtX2N1cnJlbnRab29tKDEpCiAgICAgLCBtX2NvbnRl
eHQoY29udGV4dCkKLSAgICAsIG1fYnJvd3NlcihuZXcgQnJvd3NlclZpZXcoYmFja2luZ1N0b3Jl
VHlwZUZvck5ld1dpbmRvdywgY29udGV4dCkpCiB7CisgICAgaWYgKG9wdGlvbnMpCisgICAgICAg
IG1fd2luZG93T3B0aW9ucyA9ICpvcHRpb25zOworICAgIGVsc2UgeworICAgICAgICBXaW5kb3dP
cHRpb25zIHRtcE9wdGlvbnM7CisgICAgICAgIG1fd2luZG93T3B0aW9ucyA9IHRtcE9wdGlvbnM7
CisgICAgfQorCisgICAgaWYgKG1fd2luZG93T3B0aW9ucy51c2VUaWxlZEJhY2tpbmdTdG9yZSkK
KyAgICAgICAgbV9icm93c2VyID0gbmV3IEJyb3dzZXJWaWV3KFFHcmFwaGljc1dLVmlldzo6VGls
ZWQsIGNvbnRleHQpOworICAgIGVsc2UKKyAgICAgICAgbV9icm93c2VyID0gbmV3IEJyb3dzZXJW
aWV3KFFHcmFwaGljc1dLVmlldzo6U2ltcGxlLCBjb250ZXh0KTsKKwogICAgIHNldEF0dHJpYnV0
ZShRdDo6V0FfRGVsZXRlT25DbG9zZSk7CiAKICAgICBjb25uZWN0KG1fYnJvd3Nlci0+dmlldygp
LCBTSUdOQUwobG9hZFByb2dyZXNzKGludCkpLCBTTE9UKGxvYWRQcm9ncmVzcyhpbnQpKSk7CkBA
IC0xNDQsNyArMTUyLDcgQEAgUVdLUGFnZSogQnJvd3NlcldpbmRvdzo6cGFnZSgpCiBCcm93c2Vy
V2luZG93KiBCcm93c2VyV2luZG93OjpuZXdXaW5kb3coY29uc3QgUVN0cmluZyYgdXJsKQogewog
ICAgIEJyb3dzZXJXaW5kb3cqIHdpbmRvdzsKLSAgICBpZiAodXNlU2VwYXJhdGVXZWJQcm9jZXNz
UGVyV2luZG93KSB7CisgICAgaWYgKG1fd2luZG93T3B0aW9ucy51c2VTZXBhcmF0ZVdlYlByb2Nl
c3NQZXJXaW5kb3cpIHsKICAgICAgICAgUVdLQ29udGV4dCogY29udGV4dCA9IG5ldyBRV0tDb250
ZXh0KCk7CiAgICAgICAgIHdpbmRvdyA9IG5ldyBCcm93c2VyV2luZG93KGNvbnRleHQpOwogICAg
ICAgICBjb250ZXh0LT5zZXRQYXJlbnQod2luZG93KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlC
cm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuaCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJX
aW5kb3cuaAppbmRleCBmMGE2NDJlLi5jNzliMmQwIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJv
d3Nlci9xdC9Ccm93c2VyV2luZG93LmgKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3Nl
cldpbmRvdy5oCkBAIC0zMCwyMyArMzAsMjEgQEAKICNkZWZpbmUgQnJvd3NlcldpbmRvd19oCiAK
ICNpbmNsdWRlICJCcm93c2VyVmlldy5oIgorCisjaW5jbHVkZSAiTWluaUJyb3dzZXJBcHBsaWNh
dGlvbi5oIgogI2luY2x1ZGUgPFFTdHJpbmdMaXN0PgogI2luY2x1ZGUgPFF0R3VpPgotI2luY2x1
ZGUgPHFncmFwaGljc3drdmlldy5oPgogCiBjbGFzcyBCcm93c2VyV2luZG93IDogcHVibGljIFFN
YWluV2luZG93IHsKICAgICBRX09CSkVDVAogCiBwdWJsaWM6Ci0gICAgQnJvd3NlcldpbmRvdyhR
V0tDb250ZXh0Kik7CisgICAgQnJvd3NlcldpbmRvdyhRV0tDb250ZXh0KiwgV2luZG93T3B0aW9u
cyogPSAwKTsKICAgICB+QnJvd3NlcldpbmRvdygpOwogICAgIHZvaWQgbG9hZChjb25zdCBRU3Ry
aW5nJiB1cmwpOwogCiAgICAgUVdLUGFnZSogcGFnZSgpOwogCi0gICAgc3RhdGljIFFHcmFwaGlj
c1dLVmlldzo6QmFja2luZ1N0b3JlVHlwZSBiYWNraW5nU3RvcmVUeXBlRm9yTmV3V2luZG93Owot
ICAgIHN0YXRpYyBib29sIHVzZVNlcGFyYXRlV2ViUHJvY2Vzc1BlcldpbmRvdzsKLQogcHVibGlj
IHNsb3RzOgogICAgIEJyb3dzZXJXaW5kb3cqIG5ld1dpbmRvdyhjb25zdCBRU3RyaW5nJiB1cmwg
PSAiYWJvdXQ6YmxhbmsiKTsKICAgICB2b2lkIG9wZW5Mb2NhdGlvbigpOwpAQCAtODQsNiArODIs
NyBAQCBwcml2YXRlOgogICAgIHFyZWFsIG1fY3VycmVudFpvb207CiAKICAgICBRV0tDb250ZXh0
KiBtX2NvbnRleHQ7CisgICAgV2luZG93T3B0aW9ucyBtX3dpbmRvd09wdGlvbnM7CiAgICAgQnJv
d3NlclZpZXcqIG1fYnJvd3NlcjsKICAgICBRTGluZUVkaXQqIG1fYWRkcmVzc0JhcjsKICAgICBR
U3RyaW5nTGlzdCBtX3VzZXJBZ2VudExpc3Q7CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nl
ci9xdC9NaW5pQnJvd3Nlci5wcm8gYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5w
cm8KaW5kZXggODMxNDM0OS4uY2VmYTY3OCAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIv
cXQvTWluaUJyb3dzZXIucHJvCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2Vy
LnBybwpAQCAtMiwxMyArMiwxOSBAQCBURU1QTEFURSA9IGFwcAogVEFSR0VUID0gTWluaUJyb3dz
ZXIKIAogU09VUkNFUyArPSBcCi0gICAgbWFpbi5jcHAgXAogICAgIEJyb3dzZXJWaWV3LmNwcCBc
CiAgICAgQnJvd3NlcldpbmRvdy5jcHAgXAorICAgIG1haW4uY3BwIFwKKyAgICBNaW5pQnJvd3Nl
ckFwcGxpY2F0aW9uLmNwcCBcCisgICAgVXJsTG9hZGVyLmNwcCBcCisgICAgdXRpbHMuY3BwIFwK
IAogSEVBREVSUyArPSBcCiAgICAgQnJvd3NlclZpZXcuaCBcCiAgICAgQnJvd3NlcldpbmRvdy5o
IFwKKyAgICBNaW5pQnJvd3NlckFwcGxpY2F0aW9uLmggXAorICAgIFVybExvYWRlci5oIFwKKyAg
ICB1dGlscy5oIFwKIAogaXNFbXB0eShPVVRQVVRfRElSKTogT1VUUFVUX0RJUiA9IC4uLy4uLy4u
CiBpbmNsdWRlKC4uLy4uLy4uL1NvdXJjZS9XZWJLaXQucHJpKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
TWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5jcHAgYi9Ub29scy9NaW5pQnJv
d3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi40ZWQ3ODk1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dz
ZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5jcHAKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKKyAqIENvcHlyaWdodCAoQykgMjAxMCBVbml2ZXJzaXR5IG9mIFN6ZWdlZAorICoK
KyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIk1pbmlCcm93c2VyQXBw
bGljYXRpb24uaCIKKworI2luY2x1ZGUgInV0aWxzLmgiCisjaW5jbHVkZSA8UVJlZ0V4cD4KKwor
TWluaUJyb3dzZXJBcHBsaWNhdGlvbjo6TWluaUJyb3dzZXJBcHBsaWNhdGlvbihpbnQmIGFyZ2Ms
IGNoYXIqKiBhcmd2KQorICAgIDogUUFwcGxpY2F0aW9uKGFyZ2MsIGFyZ3YsIFFBcHBsaWNhdGlv
bjo6R3VpU2VydmVyKQorICAgICwgbV93aW5kb3dPcHRpb25zKCkKKyAgICAsIG1faXNSb2JvdGl6
ZWQoZmFsc2UpCisgICAgLCBtX3JvYm90VGltZW91dFNlY29uZHMoMCkKKyAgICAsIG1fcm9ib3RF
eHRyYVRpbWVTZWNvbmRzKDApCit7CisgICAgc2V0T3JnYW5pemF0aW9uTmFtZSgiTm9raWEiKTsK
KyAgICBzZXRBcHBsaWNhdGlvbk5hbWUoIlF0TWluaUJyb3dzZXIiKTsKKyAgICBzZXRBcHBsaWNh
dGlvblZlcnNpb24oIjAuMSIpOworCisgICAgaGFuZGxlVXNlck9wdGlvbnMoKTsKK30KKwordm9p
ZCBNaW5pQnJvd3NlckFwcGxpY2F0aW9uOjpoYW5kbGVVc2VyT3B0aW9ucygpCit7CisgICAgUVN0
cmluZ0xpc3QgYXJncyA9IGFyZ3VtZW50cygpOworICAgIFFGaWxlSW5mbyBwcm9ncmFtKGFyZ3Mu
YXQoMCkpOworICAgIFFTdHJpbmcgcHJvZ3JhbU5hbWUoIk1pbmlCcm93c2VyIik7CisgICAgaWYg
KHByb2dyYW0uZXhpc3RzKCkpCisgICAgICAgIHByb2dyYW1OYW1lID0gcHJvZ3JhbS5iYXNlTmFt
ZSgpOworCisgICAgaWYgKGFyZ3MuY29udGFpbnMoIi1oZWxwIikpIHsKKyAgICAgICAgcURlYnVn
KCkgPDwgIlVzYWdlOiIgPDwgcHJvZ3JhbU5hbWUudG9MYXRpbjEoKS5kYXRhKCkKKyAgICAgICAg
ICAgICA8PCAiWy1yIGxpc3RdIgorICAgICAgICAgICAgIDw8ICJbLXJvYm90LXRpbWVvdXQgc2Vj
b25kc10iCisgICAgICAgICAgICAgPDwgIlstcm9ib3QtZXh0cmEtdGltZSBzZWNvbmRzXSIKKyAg
ICAgICAgICAgICA8PCAiWy10aWxlZC1iYWNraW5nLXN0b3JlXSIKKyAgICAgICAgICAgICA8PCAg
Ilstc2VwYXJhdGUtd2ViLXByb2Nlc3MtcGVyLXdpbmRvd10iCisgICAgICAgICAgICAgPDwgIlVS
THMiOworICAgICAgICBhcHBRdWl0KDApOworICAgIH0KKworICAgIGludCByb2JvdEluZGV4ID0g
YXJncy5pbmRleE9mKCItciIpOworICAgIGlmIChyb2JvdEluZGV4ICE9IC0xKSB7CisgICAgICAg
IFFTdHJpbmcgbGlzdEZpbGUgPSB0YWtlT3B0aW9uVmFsdWUoJmFyZ3MsIHJvYm90SW5kZXgpOwor
ICAgICAgICBpZiAobGlzdEZpbGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgYXBwUXVpdCgxLCAi
LXIgbmVlZHMgYSBsaXN0IGZpbGUgdG8gc3RhcnQgaW4gcm9ib3RpemVkIG1vZGUiKTsKKyAgICAg
ICAgaWYgKCFRRmlsZTo6ZXhpc3RzKGxpc3RGaWxlKSkKKyAgICAgICAgICAgIGFwcFF1aXQoMSwg
IlRoZSBsaXN0IGZpbGUgc3VwcGxpZWQgdG8gLXIgZG9lcyBub3QgZXhpc3QuIik7CisKKyAgICAg
ICAgbV9pc1JvYm90aXplZCA9IHRydWU7CisgICAgICAgIG1fdXJscyA9IFFTdHJpbmdMaXN0KGxp
c3RGaWxlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpbnQgbGFzdEFyZyA9IGFyZ3MubGFzdElu
ZGV4T2YoUVJlZ0V4cCgiXi0uKiIpKTsKKyAgICAgICAgbV91cmxzID0gKGxhc3RBcmcgIT0gLTEp
ID8gYXJncy5taWQoKytsYXN0QXJnKSA6IGFyZ3MubWlkKDEpOworICAgIH0KKworICAgIGludCBy
b2JvdFRpbWVvdXRJbmRleCA9IGFyZ3MuaW5kZXhPZigiLXJvYm90LXRpbWVvdXQiKTsKKyAgICBp
ZiAocm9ib3RUaW1lb3V0SW5kZXggIT0gLTEpCisgICAgICAgIG1fcm9ib3RUaW1lb3V0U2Vjb25k
cyA9IHRha2VPcHRpb25WYWx1ZSgmYXJncywgcm9ib3RUaW1lb3V0SW5kZXgpLnRvSW50KCk7CisK
KyAgICBpbnQgcm9ib3RFeHRyYVRpbWVJbmRleCA9IGFyZ3MuaW5kZXhPZigiLXJvYm90LWV4dHJh
LXRpbWUiKTsKKyAgICBpZiAocm9ib3RFeHRyYVRpbWVJbmRleCAhPSAtMSkKKyAgICAgICAgbV9y
b2JvdEV4dHJhVGltZVNlY29uZHMgPSB0YWtlT3B0aW9uVmFsdWUoJmFyZ3MsIHJvYm90RXh0cmFU
aW1lSW5kZXgpLnRvSW50KCk7CisKKyAgICBpZiAoYXJncy5jb250YWlucygiLXRpbGVkLWJhY2tp
bmctc3RvcmUiKSkKKyAgICAgICAgbV93aW5kb3dPcHRpb25zLnVzZVRpbGVkQmFja2luZ1N0b3Jl
ID0gdHJ1ZTsKKworICAgIGlmIChhcmdzLmNvbnRhaW5zKCItc2VwYXJhdGUtd2ViLXByb2Nlc3Mt
cGVyLXdpbmRvdyIpKQorICAgICAgICBtX3dpbmRvd09wdGlvbnMudXNlU2VwYXJhdGVXZWJQcm9j
ZXNzUGVyV2luZG93ID0gdHJ1ZTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0
L01pbmlCcm93c2VyQXBwbGljYXRpb24uaCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93
c2VyQXBwbGljYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDM5
NzY0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJB
cHBsaWNhdGlvbi5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyAqCisgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgTWluaUJyb3dzZXJBcHBsaWNhdGlvbl9oCisjZGVmaW5lIE1p
bmlCcm93c2VyQXBwbGljYXRpb25faAorCisjaW5jbHVkZSA8UVN0cmluZ0xpc3Q+CisjaW5jbHVk
ZSA8UXRHdWk+CisKK3N0cnVjdCBXaW5kb3dPcHRpb25zIHsKKyAgICBXaW5kb3dPcHRpb25zKCkK
KyAgICAgICAgOiB1c2VUaWxlZEJhY2tpbmdTdG9yZShmYWxzZSkKKyAgICAgICAgLCB1c2VTZXBh
cmF0ZVdlYlByb2Nlc3NQZXJXaW5kb3coZmFsc2UpCisgICAgeworICAgIH0KKworICAgIGJvb2wg
dXNlVGlsZWRCYWNraW5nU3RvcmU7CisgICAgYm9vbCB1c2VTZXBhcmF0ZVdlYlByb2Nlc3NQZXJX
aW5kb3c7Cit9OworCitjbGFzcyBNaW5pQnJvd3NlckFwcGxpY2F0aW9uIDogcHVibGljIFFBcHBs
aWNhdGlvbiB7CisgICAgUV9PQkpFQ1QKKworcHVibGljOgorICAgIE1pbmlCcm93c2VyQXBwbGlj
YXRpb24oaW50JiBhcmdjLCBjaGFyKiogYXJndik7CisgICAgUVN0cmluZ0xpc3QgdXJscygpIGNv
bnN0IHsgcmV0dXJuIG1fdXJsczsgfQorICAgIGJvb2wgaXNSb2JvdGl6ZWQoKSBjb25zdCB7IHJl
dHVybiBtX2lzUm9ib3RpemVkOyB9CisgICAgaW50IHJvYm90VGltZW91dCgpIGNvbnN0IHsgcmV0
dXJuIG1fcm9ib3RUaW1lb3V0U2Vjb25kczsgfQorICAgIGludCByb2JvdEV4dHJhVGltZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcm9ib3RFeHRyYVRpbWVTZWNvbmRzOyB9CisKKyAgICBXaW5kb3dPcHRp
b25zIG1fd2luZG93T3B0aW9uczsKKworcHJpdmF0ZToKKyAgICB2b2lkIGhhbmRsZVVzZXJPcHRp
b25zKCk7CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX2lzUm9ib3RpemVkOworICAgIGludCBtX3Jv
Ym90VGltZW91dFNlY29uZHM7CisgICAgaW50IG1fcm9ib3RFeHRyYVRpbWVTZWNvbmRzOworICAg
IFFTdHJpbmdMaXN0IG1fdXJsczsKK307CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWlu
aUJyb3dzZXIvcXQvVXJsTG9hZGVyLmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L1VybExvYWRl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjAwZDQ3NwotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L1VybExvYWRlci5jcHAKQEAgLTAsMCAr
MSwxMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVW5pdmVyc2l0
eSBvZiBTemVnZWQKKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJVcmxMb2FkZXIuaCIKKworI2luY2x1ZGUgPFFEZWJ1Zz4KKyNpbmNsdWRlIDxRRmlsZT4KKwor
VXJsTG9hZGVyOjpVcmxMb2FkZXIoQnJvd3NlcldpbmRvdyogYnJvd3NlcldpbmRvdywgY29uc3Qg
UVN0cmluZyYgaW5wdXRGaWxlTmFtZSwgaW50IHRpbWVvdXRTZWNvbmRzLCBpbnQgZXh0cmFUaW1l
U2Vjb25kcykKKyAgICA6IG1fYnJvd3NlcldpbmRvdyhicm93c2VyV2luZG93KQorICAgICwgbV9z
dGRPdXQoc3Rkb3V0KQorICAgICwgbV9sb2FkZWQoMCkKKyAgICAsIG1fbnVtRnJhbWVzTG9hZGlu
ZygwKQoreworICAgIG1fY2hlY2tJZkZpbmlzaGVkVGltZXIuc2V0SW50ZXJ2YWwoMjAwKTsKKyAg
ICBtX2NoZWNrSWZGaW5pc2hlZFRpbWVyLnNldFNpbmdsZVNob3QodHJ1ZSk7CisgICAgY29ubmVj
dCgmbV9jaGVja0lmRmluaXNoZWRUaW1lciwgU0lHTkFMKHRpbWVvdXQoKSksIHRoaXMsIFNMT1Qo
Y2hlY2tJZkZpbmlzaGVkKCkpKTsKKyAgICAvLyBsb2FkU3RhcnRlZCBhbmQgbG9hZEZpbmlzaGVk
IG9uIFFXZWJQYWdlIGlzIGVtaXR0ZWQgZm9yIGVhY2ggZnJhbWUvc3ViLWZyYW1lCisgICAgY29u
bmVjdChtX2Jyb3dzZXJXaW5kb3ctPnBhZ2UoKSwgU0lHTkFMKGxvYWRTdGFydGVkKCkpLCB0aGlz
LCBTTE9UKGZyYW1lTG9hZFN0YXJ0ZWQoKSkpOworICAgIGNvbm5lY3QobV9icm93c2VyV2luZG93
LT5wYWdlKCksIFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpLCB0aGlzLCBTTE9UKGZyYW1lTG9h
ZEZpbmlzaGVkKCkpKTsKKworICAgIGlmICh0aW1lb3V0U2Vjb25kcykgeworICAgICAgICBtX3Rp
bWVvdXRUaW1lci5zZXRJbnRlcnZhbCh0aW1lb3V0U2Vjb25kcyAqIDEwMDApOworICAgICAgICBt
X3RpbWVvdXRUaW1lci5zZXRTaW5nbGVTaG90KHRydWUpOworICAgICAgICBjb25uZWN0KG1fYnJv
d3NlcldpbmRvdywgU0lHTkFMKGxvYWRTdGFydGVkKCkpLCAmbV90aW1lb3V0VGltZXIsIFNMT1Qo
c3RhcnQoKSkpOworICAgICAgICBjb25uZWN0KCZtX3RpbWVvdXRUaW1lciwgU0lHTkFMKHRpbWVv
dXQoKSksIHRoaXMsIFNMT1QobG9hZE5leHQoKSkpOworICAgIH0KKyAgICBpZiAoZXh0cmFUaW1l
U2Vjb25kcykgeworICAgICAgICBtX2V4dHJhVGltZVRpbWVyLnNldEludGVydmFsKGV4dHJhVGlt
ZVNlY29uZHMgKiAxMDAwKTsKKyAgICAgICAgbV9leHRyYVRpbWVUaW1lci5zZXRTaW5nbGVTaG90
KHRydWUpOworICAgICAgICBjb25uZWN0KHRoaXMsIFNJR05BTChwYWdlTG9hZEZpbmlzaGVkKCkp
LCAmbV9leHRyYVRpbWVUaW1lciwgU0xPVChzdGFydCgpKSk7CisgICAgICAgIGNvbm5lY3QoJm1f
ZXh0cmFUaW1lVGltZXIsIFNJR05BTCh0aW1lb3V0KCkpLCB0aGlzLCBTTE9UKGxvYWROZXh0KCkp
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgY29ubmVjdCh0aGlzLCBTSUdOQUwocGFnZUxvYWRGaW5p
c2hlZCgpKSwgdGhpcywgU0xPVChsb2FkTmV4dCgpKSk7CisgICAgbG9hZFVybExpc3QoaW5wdXRG
aWxlTmFtZSk7Cit9CisKK3ZvaWQgVXJsTG9hZGVyOjpsb2FkTmV4dCgpCit7CisgICAgbV90aW1l
b3V0VGltZXIuc3RvcCgpOworICAgIG1fZXh0cmFUaW1lVGltZXIuc3RvcCgpOworICAgIG1fY2hl
Y2tJZkZpbmlzaGVkVGltZXIuc3RvcCgpOworICAgIG1fbnVtRnJhbWVzTG9hZGluZyA9IDA7Cisg
ICAgUVN0cmluZyBxc3RyOworICAgIGlmIChnZXRVcmwocXN0cikpIHsKKyAgICAgICAgUVVybCB1
cmwocXN0ciwgUVVybDo6U3RyaWN0TW9kZSk7CisgICAgICAgIGlmICh1cmwuaXNWYWxpZCgpKSB7
CisgICAgICAgICAgICBtX3N0ZE91dCA8PCAiTG9hZGluZyAiIDw8IHFzdHIgPDwgIiAuLi4uLi4i
IDw8ICsrbV9sb2FkZWQgPDwgZW5kbDsKKyAgICAgICAgICAgIG1fYnJvd3NlcldpbmRvdy0+bG9h
ZCh1cmwudG9TdHJpbmcoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbG9hZE5leHQo
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgZGlzY29ubmVjdChtX2Jyb3dzZXJXaW5kb3csIDAsIHRo
aXMsIDApOworfQorCit2b2lkIFVybExvYWRlcjo6Y2hlY2tJZkZpbmlzaGVkKCkKK3sKKyAgICBp
ZiAoIW1fbnVtRnJhbWVzTG9hZGluZykKKyAgICAgICAgZW1pdCBwYWdlTG9hZEZpbmlzaGVkKCk7
Cit9CisKK3ZvaWQgVXJsTG9hZGVyOjpmcmFtZUxvYWRTdGFydGVkKCkKK3sKKyAgICArK21fbnVt
RnJhbWVzTG9hZGluZzsKKyAgICBtX2NoZWNrSWZGaW5pc2hlZFRpbWVyLnN0b3AoKTsKK30KKwor
dm9pZCBVcmxMb2FkZXI6OmZyYW1lTG9hZEZpbmlzaGVkKCkKK3sKKyAgICBRX0FTU0VSVChtX251
bUZyYW1lc0xvYWRpbmcgPiAwKTsKKyAgICAtLW1fbnVtRnJhbWVzTG9hZGluZzsKKyAgICAvLyBP
bmNlIG91ciBmcmFtZSBoYXMgZmluaXNoZWQgbG9hZGluZywgd2FpdCBhIG1vbWVudCB0byBjYWxs
IGxvYWROZXh0IGZvciBjYXNlcworICAgIC8vIHdoZXJlIGEgc3ViLWZyYW1lIHN0YXJ0cyBsb2Fk
aW5nIG9yIGFub3RoZXIgZnJhbWUgaXMgbG9hZGVkIHRocm91Z2ggSmF2YVNjcmlwdC4KKyAgICBt
X2NoZWNrSWZGaW5pc2hlZFRpbWVyLnN0YXJ0KCk7Cit9CisKK3ZvaWQgVXJsTG9hZGVyOjpsb2Fk
VXJsTGlzdChjb25zdCBRU3RyaW5nJiBpbnB1dEZpbGVOYW1lKQoreworICAgIFFGaWxlIGlucHV0
RmlsZShpbnB1dEZpbGVOYW1lKTsKKyAgICBpZiAoaW5wdXRGaWxlLm9wZW4oUUlPRGV2aWNlOjpS
ZWFkT25seSB8IFFJT0RldmljZTo6VGV4dCkpIHsKKyAgICAgICAgUVRleHRTdHJlYW0gc3RyZWFt
KCZpbnB1dEZpbGUpOworICAgICAgICBRU3RyaW5nIGxpbmU7CisgICAgICAgIHdoaWxlICh0cnVl
KSB7CisgICAgICAgICAgICBsaW5lID0gc3RyZWFtLnJlYWRMaW5lKCk7CisgICAgICAgICAgICBp
ZiAobGluZS5pc051bGwoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIG1f
dXJscy5hcHBlbmQobGluZSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBxRGVi
dWcoKSA8PCAiQ2FuJ3Qgb3BlbiBsaXN0IGZpbGUiOworICAgICAgICBleGl0KDApOworICAgIH0K
KyAgICBtX2luZGV4ID0gMDsKKyAgICBpbnB1dEZpbGUuY2xvc2UoKTsKK30KKworYm9vbCBVcmxM
b2FkZXI6OmdldFVybChRU3RyaW5nJiBxc3RyKQoreworICAgIGlmIChtX2luZGV4ID09IG1fdXJs
cy5zaXplKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHFzdHIgPSBtX3VybHNbbV9p
bmRleCsrXTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93
c2VyL3F0L1VybExvYWRlci5oIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvVXJsTG9hZGVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFlNjdjMwotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L1VybExvYWRlci5oCkBAIC0wLDAgKzEsNzEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJz
aWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVW5pdmVyc2l0eSBvZiBTemVnZWQK
KyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVXJsTG9hZGVyX2gK
KyNkZWZpbmUgVXJsTG9hZGVyX2gKKworI2luY2x1ZGUgIkJyb3dzZXJXaW5kb3cuaCIKKworI2lu
Y2x1ZGUgPFFUZXh0U3RyZWFtPgorI2luY2x1ZGUgPFFUaW1lcj4KKyNpbmNsdWRlIDxRVmVjdG9y
PgorCitjbGFzcyBVcmxMb2FkZXIgOiBwdWJsaWMgUU9iamVjdCB7CisgICAgUV9PQkpFQ1QKKwor
cHVibGljOgorICAgIFVybExvYWRlcihCcm93c2VyV2luZG93KiwgY29uc3QgUVN0cmluZyYsIGlu
dCwgaW50KTsKKworcHVibGljIHNsb3RzOgorICAgIHZvaWQgbG9hZE5leHQoKTsKKworcHJpdmF0
ZSBzbG90czoKKyAgICB2b2lkIGNoZWNrSWZGaW5pc2hlZCgpOworICAgIHZvaWQgZnJhbWVMb2Fk
U3RhcnRlZCgpOworICAgIHZvaWQgZnJhbWVMb2FkRmluaXNoZWQoKTsKKworc2lnbmFsczoKKyAg
ICB2b2lkIHBhZ2VMb2FkRmluaXNoZWQoKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGxvYWRVcmxM
aXN0KGNvbnN0IFFTdHJpbmcmIGlucHV0RmlsZU5hbWUpOworICAgIGJvb2wgZ2V0VXJsKFFTdHJp
bmcmIHFzdHIpOworCitwcml2YXRlOgorICAgIFFWZWN0b3I8UVN0cmluZz4gbV91cmxzOworICAg
IGludCBtX2luZGV4OworICAgIEJyb3dzZXJXaW5kb3cqIG1fYnJvd3NlcldpbmRvdzsKKyAgICBR
VGV4dFN0cmVhbSBtX3N0ZE91dDsKKyAgICBpbnQgbV9sb2FkZWQ7CisgICAgUVRpbWVyIG1fdGlt
ZW91dFRpbWVyOworICAgIFFUaW1lciBtX2V4dHJhVGltZVRpbWVyOworICAgIFFUaW1lciBtX2No
ZWNrSWZGaW5pc2hlZFRpbWVyOworICAgIGludCBtX251bUZyYW1lc0xvYWRpbmc7Cit9OworCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L21haW4uY3BwIGIvVG9vbHMv
TWluaUJyb3dzZXIvcXQvbWFpbi5jcHAKaW5kZXggZDY2ZTgyYy4uOGY0YzFlYSAxMDA2NDQKLS0t
IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvbWFpbi5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIv
cXQvbWFpbi5jcHAKQEAgLTI3LDQ2ICsyNyw0NiBAQAogICovCiAKICNpbmNsdWRlICJCcm93c2Vy
V2luZG93LmgiCisKKyNpbmNsdWRlICJNaW5pQnJvd3NlckFwcGxpY2F0aW9uLmgiCisjaW5jbHVk
ZSAiVXJsTG9hZGVyLmgiCiAjaW5jbHVkZSA8UUxhdGluMVN0cmluZz4KICNpbmNsdWRlIDxRUmVn
RXhwPgogI2luY2x1ZGUgPHFncmFwaGljc3drdmlldy5oPgogI2luY2x1ZGUgPFF0R3VpPgogCi1p
bnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKLSAgICBRQXBwbGljYXRpb24gYXBwKGFy
Z2MsIGFyZ3YpOwotCi0gICAgUVN0cmluZ0xpc3QgYXJncyA9IFFBcHBsaWNhdGlvbjo6YXJndW1l
bnRzKCk7Ci0gICAgYXJncy5yZW1vdmVBdCgwKTsKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiog
YXJndikKK3sKKyAgICBNaW5pQnJvd3NlckFwcGxpY2F0aW9uIGFwcChhcmdjLCBhcmd2KTsKIAot
ICAgIGludCBpbmRleE9mVGlsZWRPcHRpb247Ci0gICAgaWYgKChpbmRleE9mVGlsZWRPcHRpb24g
PSBhcmdzLmluZGV4T2YoUVN0cmluZzo6ZnJvbUxhdGluMSgiLXRpbGVkIikpKSAhPSAtMSkgewot
ICAgICAgICBCcm93c2VyV2luZG93OjpiYWNraW5nU3RvcmVUeXBlRm9yTmV3V2luZG93ID0gUUdy
YXBoaWNzV0tWaWV3OjpUaWxlZDsKLSAgICAgICAgYXJncy5yZW1vdmVBdChpbmRleE9mVGlsZWRP
cHRpb24pOworICAgIGlmIChhcHAuaXNSb2JvdGl6ZWQoKSkgeworICAgICAgICBRV0tDb250ZXh0
KiBjb250ZXh0ID0gbmV3IFFXS0NvbnRleHQ7CisgICAgICAgIEJyb3dzZXJXaW5kb3cqIHdpbmRv
dyA9IG5ldyBCcm93c2VyV2luZG93KGNvbnRleHQsICZhcHAubV93aW5kb3dPcHRpb25zKTsKKyAg
ICAgICAgVXJsTG9hZGVyIGxvYWRlcih3aW5kb3csIGFwcC51cmxzKCkuYXQoMCksIGFwcC5yb2Jv
dFRpbWVvdXQoKSwgYXBwLnJvYm90RXh0cmFUaW1lKCkpOworICAgICAgICBsb2FkZXIubG9hZE5l
eHQoKTsKKyAgICAgICAgd2luZG93LT5zaG93KCk7CisgICAgICAgIHJldHVybiBhcHAuZXhlYygp
OwogICAgIH0KIAotICAgIGludCBpbmRleE9mU2VwYXJhdGVXZWJQcm9jZXNzT3B0aW9uOwotICAg
IGlmICgoaW5kZXhPZlNlcGFyYXRlV2ViUHJvY2Vzc09wdGlvbiA9IGFyZ3MuaW5kZXhPZihRU3Ry
aW5nOjpmcm9tTGF0aW4xKCItc2VwYXJhdGUtd2ViLXByb2Nlc3MtcGVyLXdpbmRvdyIpKSkgIT0g
LTEpIHsKLSAgICAgICAgQnJvd3NlcldpbmRvdzo6dXNlU2VwYXJhdGVXZWJQcm9jZXNzUGVyV2lu
ZG93ID0gdHJ1ZTsKLSAgICAgICAgYXJncy5yZW1vdmVBdChpbmRleE9mU2VwYXJhdGVXZWJQcm9j
ZXNzT3B0aW9uKTsKLSAgICB9CisgICAgUVN0cmluZ0xpc3QgdXJscyA9IGFwcC51cmxzKCk7CiAK
LSAgICBpZiAoYXJncy5pc0VtcHR5KCkpIHsKKyAgICBpZiAodXJscy5pc0VtcHR5KCkpIHsKICAg
ICAgICAgUVN0cmluZyBkZWZhdWx0VXJsID0gUVN0cmluZygiZmlsZTovLyUxLyUyIikuYXJnKFFE
aXI6OmhvbWVQYXRoKCkpLmFyZyhRTGF0aW4xU3RyaW5nKCJpbmRleC5odG1sIikpOwogICAgICAg
ICBpZiAoUURpcihkZWZhdWx0VXJsKS5leGlzdHMoKSkKLSAgICAgICAgICAgIGFyZ3MuYXBwZW5k
KGRlZmF1bHRVcmwpOworICAgICAgICAgICAgdXJscy5hcHBlbmQoZGVmYXVsdFVybCk7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCJodHRwOi8vd3d3Lmdvb2dsZS5jb20i
KTsKKyAgICAgICAgICAgIHVybHMuYXBwZW5kKCJodHRwOi8vd3d3Lmdvb2dsZS5jb20iKTsKICAg
ICB9CiAKICAgICBRV0tDb250ZXh0KiBjb250ZXh0ID0gbmV3IFFXS0NvbnRleHQ7Ci0gICAgQnJv
d3NlcldpbmRvdyogd2luZG93ID0gbmV3IEJyb3dzZXJXaW5kb3coY29udGV4dCk7Ci0gICAgaWYg
KEJyb3dzZXJXaW5kb3c6OnVzZVNlcGFyYXRlV2ViUHJvY2Vzc1BlcldpbmRvdykKKyAgICBCcm93
c2VyV2luZG93KiB3aW5kb3cgPSBuZXcgQnJvd3NlcldpbmRvdyhjb250ZXh0LCAmYXBwLm1fd2lu
ZG93T3B0aW9ucyk7CisgICAgaWYgKGFwcC5tX3dpbmRvd09wdGlvbnMudXNlU2VwYXJhdGVXZWJQ
cm9jZXNzUGVyV2luZG93KQogICAgICAgICBjb250ZXh0LT5zZXRQYXJlbnQod2luZG93KTsKIAot
ICAgIHdpbmRvdy0+bG9hZChhcmdzWzBdKTsKKyAgICB3aW5kb3ctPmxvYWQodXJscy5hdCgwKSk7
CiAKLSAgICBmb3IgKGludCBpID0gMTsgaSA8IGFyZ3Muc2l6ZSgpOyArK2kpCi0gICAgICAgIHdp
bmRvdy0+bmV3V2luZG93KGFyZ3NbaV0pOworICAgIGZvciAoaW50IGkgPSAxOyBpIDwgdXJscy5z
aXplKCk7ICsraSkKKyAgICAgICAgd2luZG93LT5uZXdXaW5kb3codXJscy5hdChpKSk7CiAKICAg
ICBhcHAuZXhlYygpOwogCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC91dGlscy5j
cHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC91dGlscy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNDk0ZGE3MQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL01pbmlCcm93
c2VyL3F0L3V0aWxzLmNwcApAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29w
eXJpZ2h0IChDKSAyMDExIFVuaXZlcnNpdHkgb2YgU3plZ2VkCisgKgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAidXRpbHMuaCIKKworUVN0cmluZyB0YWtlT3B0aW9u
VmFsdWUoUVN0cmluZ0xpc3QqIGFyZ3VtZW50cywgaW50IGluZGV4KQoreworICAgIFFTdHJpbmcg
cmVzdWx0OworCisgICAgaWYgKCsraW5kZXggPCBhcmd1bWVudHMtPmNvdW50KCkgJiYgIWFyZ3Vt
ZW50cy0+YXQoaW5kZXgpLnN0YXJ0c1dpdGgoIi0iKSkKKyAgICAgICAgcmVzdWx0ID0gYXJndW1l
bnRzLT50YWtlQXQoaW5kZXgpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworUVN0cmluZyBm
b3JtYXRLZXlzKFFMaXN0PFFTdHJpbmc+IGtleXMpCit7CisgICAgUVN0cmluZyByZXN1bHQ7Cisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrZXlzLmNvdW50KCkgLSAxOyBpKyspCisgICAgICAgIHJl
c3VsdC5hcHBlbmQoa2V5cy5hdChpKSArICJ8Iik7CisgICAgcmVzdWx0LmFwcGVuZChrZXlzLmxh
c3QoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworUUxpc3Q8UVN0cmluZz4gZW51bVRvS2V5
cyhjb25zdCBRTWV0YU9iamVjdCBvLCBjb25zdCBRU3RyaW5nJiBuYW1lLCBjb25zdCBRU3RyaW5n
JiBzdHJpcCkKK3sKKyAgICBRTGlzdDxRU3RyaW5nPiBsaXN0OworCisgICAgaW50IGVudW1JbmRl
eCA9IG8uaW5kZXhPZkVudW1lcmF0b3IobmFtZS50b0xhdGluMSgpLmRhdGEoKSk7CisgICAgUU1l
dGFFbnVtIGVudW1lcmF0b3IgPSBvLmVudW1lcmF0b3IoZW51bUluZGV4KTsKKworICAgIGlmIChl
bnVtZXJhdG9yLmlzVmFsaWQoKSkgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGVudW1l
cmF0b3Iua2V5Q291bnQoKTsgaSsrKSB7CisgICAgICAgICAgICBRU3RyaW5nIGtleShlbnVtZXJh
dG9yLnZhbHVlVG9LZXkoaSkpOworICAgICAgICAgICAgbGlzdC5hcHBlbmQoa2V5LnJlbW92ZShz
dHJpcCkpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK3ZvaWQg
YXBwUXVpdChpbnQgZXhpdENvZGUsIGNvbnN0IFFTdHJpbmcmIG1zZykKK3sKKyAgICBpZiAoIW1z
Zy5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGV4aXRDb2RlID4gMCkKKyAgICAgICAgICAgIHFE
ZWJ1ZygiRVJST1I6ICVzIiwgbXNnLnRvTGF0aW4xKCkuZGF0YSgpKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgcURlYnVnKCkgPDwgbXNnOworICAgIH0KKyAgICBleGl0KGV4aXRDb2RlKTsK
K30KKworUVVybCB1cmxGcm9tVXNlcklucHV0KGNvbnN0IFFTdHJpbmcmIHN0cmluZykKK3sKKyAg
ICBRU3RyaW5nIGlucHV0KHN0cmluZyk7CisgICAgUUZpbGVJbmZvIGZpKGlucHV0KTsKKyAgICBp
ZiAoZmkuZXhpc3RzKCkgJiYgZmkuaXNSZWxhdGl2ZSgpKQorICAgICAgICBpbnB1dCA9IGZpLmFi
c29sdXRlRmlsZVBhdGgoKTsKKworICAgIHJldHVybiBRVXJsOjpmcm9tVXNlcklucHV0KGlucHV0
KTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L3V0aWxzLmggYi9Ub29scy9N
aW5pQnJvd3Nlci9xdC91dGlscy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjJlYzdhZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC91dGlscy5o
CkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
VW5pdmVyc2l0eSBvZiBTemVnZWQKKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgdXRpbHNfaAorI2RlZmluZSB1dGlsc19oCisKKyNpbmNsdWRlIDxRdENvcmU+CisK
KyNpZm5kZWYgTk9fUkVUVVJOCisjaWYgZGVmaW5lZChfX0NDX0FSTSkgfHwgZGVmaW5lZChfX0FS
TUNDX18pCisjZGVmaW5lIE5PX1JFVFVSTiBfX2RlY2xzcGVjKG5vcmV0dXJuKQorI2VsaWYgZGVm
aW5lZChfX0dOVUNfXykKKyNkZWZpbmUgTk9fUkVUVVJOIF9fYXR0cmlidXRlKChfX25vcmV0dXJu
X18pKQorI2Vsc2UKKyNkZWZpbmUgTk9fUkVUVVJOCisjZW5kaWYKKyNlbmRpZgorCisvLyBvcHRp
b25zIGhhbmRsaW5nCitRU3RyaW5nIHRha2VPcHRpb25WYWx1ZShRU3RyaW5nTGlzdCogYXJndW1l
bnRzLCBpbnQgaW5kZXgpOworUVN0cmluZyBmb3JtYXRLZXlzKFFMaXN0PFFTdHJpbmc+IGtleXMp
OworUUxpc3Q8UVN0cmluZz4gZW51bVRvS2V5cyhjb25zdCBRTWV0YU9iamVjdCwgY29uc3QgUVN0
cmluZyYsIGNvbnN0IFFTdHJpbmcmKTsKKworTk9fUkVUVVJOIHZvaWQgYXBwUXVpdChpbnQgc3Rh
dHVzLCBjb25zdCBRU3RyaW5nJiBtc2cgPSBRU3RyaW5nKCkpOworCitRVXJsIHVybEZyb21Vc2Vy
SW5wdXQoY29uc3QgUVN0cmluZyYgaW5wdXQpOworCisjZW5kaWYK
</data>
<flag name="review"
          id="73568"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>