<?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>109059</bug_id>
          
          <creation_ts>2013-02-06 08:53:10 -0800</creation_ts>
          <short_desc>[BlackBerry] Refactor renderContents() for cleaner code</short_desc>
          <delta_ts>2013-02-06 14:48:22 -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>WebKit BlackBerry</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jakob Petsovits">jpetsovits</reporter>
          <assigned_to name="Jakob Petsovits">jpetsovits</assigned_to>
          <cc>anilsson</cc>
    
    <cc>manyoso</cc>
    
    <cc>mifenton</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>staikos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>826484</commentid>
    <comment_count>0</comment_count>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2013-02-06 08:53:10 -0800</bug_when>
    <thetext>The fact that we&apos;ve got two renderContents() implementations in BackingStore.cpp, one of which was tailored to just being called from drawContents(), is a major annoyance.

With this patch, the regular renderContents() is modified in a way so that drawContents() can make use of it as well. This includes an API change for both functions which makes it more flexible and enables further cleanups and improvements to accuracy. The second, unloved renderContents() is removed.

The user-visible changes are improved (float) accuracy for render offsets, clipping to exactly the dstRect that has been specified, and the changed public drawContents() API.

Patch below, already reviewed by Arvid Nilsson in our internal bugtracker (thanks).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826497</commentid>
    <comment_count>1</comment_count>
      <attachid>186869</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2013-02-06 09:17:47 -0800</bug_when>
    <thetext>Created attachment 186869
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826757</commentid>
    <comment_count>2</comment_count>
      <attachid>186869</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-02-06 14:26:24 -0800</bug_when>
    <thetext>Comment on attachment 186869
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826775</commentid>
    <comment_count>3</comment_count>
      <attachid>186869</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-06 14:48:18 -0800</bug_when>
    <thetext>Comment on attachment 186869
Patch

Clearing flags on attachment: 186869

Committed r142037: &lt;http://trac.webkit.org/changeset/142037&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826777</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-06 14:48:22 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186869</attachid>
            <date>2013-02-06 09:17:47 -0800</date>
            <delta_ts>2013-02-06 14:48:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109059-20130206121414.patch</filename>
            <type>text/plain</type>
            <size>24450</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxODk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCA4MmIyNzVlNTUzOTEwM2I1NzJlNGY0NjQ5YTk2MDZjM2RkYzY3NzY5Li41NWUwMjBhOGQ3
N2FjOTEwYjIxMTAxMjI2M2NkMTI1ZTY2ZGQyYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxMy0wMi0wNiAgSmFrb2IgUGV0c292aXRzICA8anBl
dHNvdml0c0ByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBSZWZhY3RvciByZW5kZXJD
b250ZW50cygpIGZvciBjbGVhbmVyIGNvZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkwNTkKKyAgICAgICAgUklNIFBSIDI4MDM3NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICBJbnRlcm5hbGx5IHJldmll
d2VkIGJ5IEFydmlkIE5pbHNzb24uCisKKyAgICAgICAgVGhlIGZhY3QgdGhhdCB3ZSd2ZSBnb3Qg
dHdvIHJlbmRlckNvbnRlbnRzKCkgaW1wbGVtZW50YXRpb25zCisgICAgICAgIGluIEJhY2tpbmdT
dG9yZS5jcHAsIG9uZSBvZiB3aGljaCB3YXMgdGFpbG9yZWQgdG8ganVzdAorICAgICAgICBiZWlu
ZyBjYWxsZWQgZnJvbSBkcmF3Q29udGVudHMoKSwgaXMgYSBtYWpvciBhbm5veWFuY2UuCisKKyAg
ICAgICAgV2l0aCB0aGlzIHBhdGNoLCB0aGUgcmVndWxhciByZW5kZXJDb250ZW50cygpIGlzIG1v
ZGlmaWVkCisgICAgICAgIGluIGEgd2F5IHNvIHRoYXQgZHJhd0NvbnRlbnRzKCkgY2FuIG1ha2Ug
dXNlIG9mIGl0IGFzIHdlbGwuCisgICAgICAgIFRoaXMgaW5jbHVkZXMgYW4gQVBJIGNoYW5nZSBm
b3IgYm90aCBmdW5jdGlvbnMgd2hpY2ggbWFrZXMKKyAgICAgICAgaXQgbW9yZSBmbGV4aWJsZSBh
bmQgZW5hYmxlcyBmdXJ0aGVyIGNsZWFudXBzIGFuZCBpbXByb3ZlbWVudHMKKyAgICAgICAgdG8g
YWNjdXJhY3kuIFRoZSBzZWNvbmQsIHVubG92ZWQgcmVuZGVyQ29udGVudHMoKSBpcyByZW1vdmVk
LgorCisgICAgICAgIFRoZSB1c2VyLXZpc2libGUgY2hhbmdlcyBhcmUgaW1wcm92ZWQgKGZsb2F0
KSBhY2N1cmFjeSBmb3IKKyAgICAgICAgcmVuZGVyIG9mZnNldHMsIGNsaXBwaW5nIHRvIGV4YWN0
bHkgdGhlIGRzdFJlY3QgdGhhdCBoYXMKKyAgICAgICAgYmVlbiBzcGVjaWZpZWQsIGFuZCB0aGUg
Y2hhbmdlZCBwdWJsaWMgZHJhd0NvbnRlbnRzKCkgQVBJLgorCisgICAgICAgICogQXBpL0JhY2tp
bmdTdG9yZS5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVBy
aXZhdGU6OnJlbmRlckRpcmVjdFRvV2luZG93KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktp
dDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVuZGVyKToKKyAgICAgICAgKEJsYWNrQmVycnk6Oldl
YktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVuZGVyQ29udGVudHMpOgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmU6OmRyYXdDb250ZW50cyk6CisgICAgICAgICog
QXBpL0JhY2tpbmdTdG9yZS5oOgorICAgICAgICAoUGxhdGZvcm0pOgorICAgICAgICAoR3JhcGhp
Y3MpOgorICAgICAgICAqIEFwaS9CYWNraW5nU3RvcmVfcC5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChCYWNraW5nU3RvcmVQcml2YXRlKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0
L1N1cmZhY2VQb29sLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6U3VyZmFjZVBv
b2w6OlN1cmZhY2VQb29sKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6U3VyZmFjZVBv
b2w6OmluaXRpYWxpemUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpTdXJmYWNlUG9v
bDo6ZGVzdHJveVBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKiBXZWJLaXRTdXBw
b3J0L1N1cmZhY2VQb29sLmg6CisgICAgICAgIChTdXJmYWNlUG9vbCk6CisKIDIwMTMtMDItMDUg
IEpha29iIFBldHNvdml0cyAgPGpwZXRzb3ZpdHNAcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tC
ZXJyeV0gRml4IGFsbCBmbGlja2VyIGNhdXNlZCBieSBlbXB0eS9pbmNvbXBsZXRlIGdlb21ldHJp
ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZS5jcHAKaW5k
ZXggZGYwMTQ5YWZhOTY0MmY0ZDBjMTg0YThlMzdlZTYwZmFmNGEwOGFmOC4uMWZlODRhNDNkNDZj
M2YwM2M2MDEzODRkOWMwOTZkMWY3YjAzNDIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9BcGkvQmFja2luZ1N0b3JlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTEs
IDIwMTIsIDIwMTMgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMTAyNSwxNCArMTAyNSwxNSBAQCBQbGF0Zm9ybTo6
SW50UmVjdCBCYWNraW5nU3RvcmVQcml2YXRlOjpyZW5kZXJEaXJlY3RUb1dpbmRvdyhjb25zdCBQ
bGF0Zm9ybTo6SW50UgogICAgIGlmIChkaXJ0eVJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gUGxhdGZvcm06OkludFJlY3QoKTsKIAotICAgIFBsYXRmb3JtOjpJbnRSZWN0IHNjcmVlblJl
Y3QgPSBtX2NsaWVudC0+bWFwRnJvbVRyYW5zZm9ybWVkQ29udGVudHNUb1RyYW5zZm9ybWVkVmll
d3BvcnQoZGlydHlSZWN0KTsKKyAgICBQbGF0Zm9ybTo6Vmlld3BvcnRBY2Nlc3Nvciogdmlld3Bv
cnRBY2Nlc3NvciA9IG1fd2ViUGFnZS0+d2Via2l0VGhyZWFkVmlld3BvcnRBY2Nlc3NvcigpOwor
ICAgIFBsYXRmb3JtOjpJbnRSZWN0IHNjcmVlblJlY3QgPSB2aWV3cG9ydEFjY2Vzc29yLT5waXhl
bFZpZXdwb3J0RnJvbUNvbnRlbnRzKGRpcnR5UmVjdCk7CiAgICAgd2luZG93RnJvbnRCdWZmZXJT
dGF0ZSgpLT5jbGVhckJsaXR0ZWRSZWdpb24oc2NyZWVuUmVjdCk7CiAKLSAgICBwYWludERlZmF1
bHRCYWNrZ3JvdW5kKGRpcnR5UmVjdCwgbV93ZWJQYWdlLT53ZWJraXRUaHJlYWRWaWV3cG9ydEFj
Y2Vzc29yKCksIHRydWUgLypmbHVzaCovKTsKKyAgICBwYWludERlZmF1bHRCYWNrZ3JvdW5kKGRp
cnR5UmVjdCwgdmlld3BvcnRBY2Nlc3NvciwgdHJ1ZSAvKmZsdXNoKi8pOworCisgICAgaWYgKCFy
ZW5kZXJDb250ZW50cyhidWZmZXIoKSwgc2NyZWVuUmVjdCwgdmlld3BvcnRBY2Nlc3Nvci0+c2Nh
bGUoKSwgdmlld3BvcnRBY2Nlc3Nvci0+ZG9jdW1lbnRGcm9tUGl4ZWxDb250ZW50cyhkaXJ0eVJl
Y3QubG9jYXRpb24oKSkpKQorICAgICAgICByZXR1cm4gUGxhdGZvcm06OkludFJlY3QoKTsKIAot
ICAgIGNvbnN0IFBsYXRmb3JtOjpJbnRQb2ludCBvcmlnaW4gPSB1bmNsaXBwZWRWaXNpYmxlQ29u
dGVudHNSZWN0KCkubG9jYXRpb24oKTsKLSAgICAvLyBXZSBkb24ndCBuZWVkIGEgYnVmZmVyIHNp
bmNlIHdlJ3JlIGRpcmVjdCByZW5kZXJpbmcgdG8gd2luZG93LgotICAgIHJlbmRlckNvbnRlbnRz
KDAsIG9yaWdpbiwgZGlydHlSZWN0KTsKICAgICB3aW5kb3dCYWNrQnVmZmVyU3RhdGUoKS0+YWRk
QmxpdHRlZFJlZ2lvbihzY3JlZW5SZWN0KTsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKQEAgLTEwODIsNiArMTA4Myw4IEBAIFRpbGVJbmRleExpc3QgQmFja2luZ1N0b3JlUHJp
dmF0ZTo6cmVuZGVyKGNvbnN0IFRpbGVJbmRleExpc3QmIHRpbGVJbmRleExpc3QpCiAgICAgaWYg
KHRpbGVJbmRleExpc3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdGlsZUluZGV4TGlzdDsK
IAorICAgIFBsYXRmb3JtOjpWaWV3cG9ydEFjY2Vzc29yKiB2aWV3cG9ydEFjY2Vzc29yID0gbV93
ZWJQYWdlLT53ZWJraXRUaHJlYWRWaWV3cG9ydEFjY2Vzc29yKCk7CisKICAgICBCYWNraW5nU3Rv
cmVHZW9tZXRyeSogZ2VvbWV0cnkgPSBmcm9udFN0YXRlKCk7CiAgICAgVGlsZU1hcCBvbGRUaWxl
TWFwID0gZ2VvbWV0cnktPnRpbGVNYXAoKTsKICAgICBkb3VibGUgY3VycmVudFNjYWxlID0gZ2Vv
bWV0cnktPnNjYWxlKCk7CkBAIC0xMDk1LDkgKzEwOTgsNiBAQCBUaWxlSW5kZXhMaXN0IEJhY2tp
bmdTdG9yZVByaXZhdGU6OnJlbmRlcihjb25zdCBUaWxlSW5kZXhMaXN0JiB0aWxlSW5kZXhMaXN0
KQogICAgIFRpbGVJbmRleExpc3QgcmVuZGVyZWRUaWxlczsKIAogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgdGlsZUluZGV4TGlzdC5zaXplKCk7ICsraSkgewotICAgICAgICBUaWxlSW5kZXgg
aW5kZXggPSB0aWxlSW5kZXhMaXN0W2ldOwotICAgICAgICBQbGF0Zm9ybTo6SW50UmVjdCBkaXJ0
eVJlY3QobmV3R2VvbWV0cnktPm9yaWdpbk9mVGlsZShpbmRleCksIHRpbGVTaXplKCkpOwotCiAg
ICAgICAgIGlmICghU3VyZmFjZVBvb2w6Omdsb2JhbFN1cmZhY2VQb29sKCktPm51bWJlck9mQXZh
aWxhYmxlQmFja0J1ZmZlcnMoKSkgewogICAgICAgICAgICAgbmV3R2VvbWV0cnktPnNldFRpbGVN
YXAobmV3VGlsZU1hcCk7CiAgICAgICAgICAgICBhZG9wdEFzRnJvbnRTdGF0ZShuZXdHZW9tZXRy
eSk7IC8vIHRoaXMgc2hvdWxkIGdldCB1cyBhdCBsZWFzdCBvbmUgbW9yZS4KQEAgLTExMTMsNiAr
MTExMywxMCBAQCBUaWxlSW5kZXhMaXN0IEJhY2tpbmdTdG9yZVByaXZhdGU6OnJlbmRlcihjb25z
dCBUaWxlSW5kZXhMaXN0JiB0aWxlSW5kZXhMaXN0KQogICAgICAgICAgICAgbmV3R2VvbWV0cnkt
PnNldEJhY2tpbmdTdG9yZU9mZnNldChnZW9tZXRyeS0+YmFja2luZ1N0b3JlT2Zmc2V0KCkpOwog
ICAgICAgICB9CiAKKyAgICAgICAgVGlsZUluZGV4IGluZGV4ID0gdGlsZUluZGV4TGlzdFtpXTsK
KyAgICAgICAgUGxhdGZvcm06OkludFBvaW50IHRpbGVPcmlnaW4gPSBuZXdHZW9tZXRyeS0+b3Jp
Z2luT2ZUaWxlKGluZGV4KTsKKyAgICAgICAgUGxhdGZvcm06OkludFJlY3QgZGlydHlSZWN0KHRp
bGVPcmlnaW4sIHRpbGVTaXplKCkpOworCiAgICAgICAgIC8vIFBhaW50IGRlZmF1bHQgYmFja2dy
b3VuZCBpZiBjb250ZW50cyByZWN0IGlzIGVtcHR5LgogICAgICAgICBpZiAoIWV4cGFuZGVkQ29u
dGVudHNSZWN0KCkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyBPdGhlcndpc2Ugd2Ugc2hv
dWxkIGNsaXAgdGhlIGNvbnRlbnRzIHNpemUgYW5kIHJlbmRlciB0aGUgY29udGVudC4KQEAgLTEx
NDAsNyArMTE0NCw2IEBAIFRpbGVJbmRleExpc3QgQmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVuZGVy
KGNvbnN0IFRpbGVJbmRleExpc3QmIHRpbGVJbmRleExpc3QpCiAgICAgICAgIGlmICghYmFja0J1
ZmZlci0+YmFja2dyb3VuZFBhaW50ZWQoKSkKICAgICAgICAgICAgIGJhY2tCdWZmZXItPnBhaW50
QmFja2dyb3VuZCgpOwogCi0gICAgICAgIFBsYXRmb3JtOjpJbnRQb2ludCB0aWxlT3JpZ2luID0g
Z2VvbWV0cnktPm9yaWdpbk9mVGlsZShpbmRleCk7CiAgICAgICAgIGJhY2tCdWZmZXItPnNldExh
c3RSZW5kZXJTY2FsZShjdXJyZW50U2NhbGUpOwogICAgICAgICBiYWNrQnVmZmVyLT5zZXRMYXN0
UmVuZGVyT3JpZ2luKHRpbGVPcmlnaW4pOwogICAgICAgICBiYWNrQnVmZmVyLT5jbGVhclJlbmRl
cmVkUmVnaW9uKCk7CkBAIC0xMTU0LDkgKzExNTcsMTEgQEAgVGlsZUluZGV4TGlzdCBCYWNraW5n
U3RvcmVQcml2YXRlOjpyZW5kZXIoY29uc3QgVGlsZUluZGV4TGlzdCYgdGlsZUluZGV4TGlzdCkK
ICAgICAgICAgaWYgKGlzT3BlbkdMQ29tcG9zaXRpbmcoKSkKICAgICAgICAgICAgIFN1cmZhY2VQ
b29sOjpnbG9iYWxTdXJmYWNlUG9vbCgpLT53YWl0Rm9yQnVmZmVyKGJhY2tCdWZmZXIpOwogCi0g
ICAgICAgIC8vIEZJWE1FOiBtb2RpZnkgcmVuZGVyIHRvIHRha2UgYSBWZWN0b3I8SW50UmVjdD4g
cGFyYW1ldGVyIHNvIHdlJ3JlIG5vdCByZWNyZWF0aW5nCi0gICAgICAgIC8vIEdyYXBoaWNzQ29u
dGV4dCBvbiB0aGUgc3RhY2sgZWFjaCB0aW1lLgotICAgICAgICByZW5kZXJDb250ZW50cyhuYXRp
dmVCdWZmZXIsIHRpbGVPcmlnaW4sIGRpcnR5UmVjdCk7CisgICAgICAgIGNvbnN0IFBsYXRmb3Jt
OjpGbG9hdFBvaW50IGRvY3VtZW50RGlydHlSZWN0T3JpZ2luID0gdmlld3BvcnRBY2Nlc3Nvci0+
dG9Eb2N1bWVudENvbnRlbnRzKGRpcnR5UmVjdC5sb2NhdGlvbigpLCBjdXJyZW50U2NhbGUpOwor
ICAgICAgICBjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCBkc3RSZWN0KGRpcnR5UmVjdC5sb2NhdGlv
bigpIC0gdGlsZU9yaWdpbiwgZGlydHlSZWN0LnNpemUoKSk7CisKKyAgICAgICAgaWYgKCFyZW5k
ZXJDb250ZW50cyhuYXRpdmVCdWZmZXIsIGRzdFJlY3QsIGN1cnJlbnRTY2FsZSwgZG9jdW1lbnRE
aXJ0eVJlY3RPcmlnaW4pKQorICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgLy8gQWRk
IHRoZSBuZXdseSByZW5kZXJlZCByZWdpb24gdG8gdGhlIHRpbGUgc28gaXQgY2FuIGtlZXAgdHJh
Y2sgZm9yIGJsaXRzLgogICAgICAgICBiYWNrQnVmZmVyLT5hZGRSZW5kZXJlZFJlZ2lvbihkaXJ0
eVJlY3QpOwpAQCAtMTkzMSwxNjIgKzE5MzYsMTAzIEBAIFBsYXRmb3JtOjpJbnRTaXplIEJhY2tp
bmdTdG9yZVByaXZhdGU6OnRpbGVTaXplKCkKICAgICByZXR1cm4gdGlsZVNpemU7CiB9CiAKLXZv
aWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVuZGVyQ29udGVudHMoUGxhdGZvcm06OkdyYXBoaWNz
OjpEcmF3YWJsZSogZHJhd2FibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBjb250ZW50c1JlY3QsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBsYXRmb3JtOjpJbnRTaXplJiBk
ZXN0aW5hdGlvblNpemUpIGNvbnN0Ci17Ci0gICAgaWYgKCFkcmF3YWJsZSB8fCBjb250ZW50c1Jl
Y3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICByZXF1ZXN0TGF5b3V0SWZOZWVk
ZWQoKTsKLQotICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBwbGF0Zm9ybUdyYXBoaWNzQ29u
dGV4dCA9IFN1cmZhY2VQb29sOjpnbG9iYWxTdXJmYWNlUG9vbCgpLT5jcmVhdGVQbGF0Zm9ybUdy
YXBoaWNzQ29udGV4dChkcmF3YWJsZSk7Ci0gICAgR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29u
dGV4dChwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCk7Ci0KLSAgICBncmFwaGljc0NvbnRleHQudHJh
bnNsYXRlKC1jb250ZW50c1JlY3QueCgpLCAtY29udGVudHNSZWN0LnkoKSk7Ci0KLSAgICBXZWJD
b3JlOjpJbnRSZWN0IHRyYW5zZm9ybWVkQ29udGVudHNSZWN0KGNvbnRlbnRzUmVjdC54KCksIGNv
bnRlbnRzUmVjdC55KCksIGNvbnRlbnRzUmVjdC53aWR0aCgpLCBjb250ZW50c1JlY3QuaGVpZ2h0
KCkpOwotCi0gICAgZmxvYXQgd2lkdGhTY2FsZSA9IHN0YXRpY19jYXN0PGZsb2F0PihkZXN0aW5h
dGlvblNpemUud2lkdGgoKSkgLyBjb250ZW50c1JlY3Qud2lkdGgoKTsKLSAgICBmbG9hdCBoZWln
aHRTY2FsZSA9IHN0YXRpY19jYXN0PGZsb2F0PihkZXN0aW5hdGlvblNpemUuaGVpZ2h0KCkpIC8g
Y29udGVudHNSZWN0LmhlaWdodCgpOwotCi0gICAgLy8gRG9uJ3Qgc2NhbGUgdGhlIHRyYW5zZm9y
bWVkIGNvbnRlbnQgcmVjdCB3aGVuIHRoZSBjb250ZW50IGlzIHNtYWxsZXIgdGhhbiB0aGUgZGVz
dGluYXRpb24KLSAgICBpZiAod2lkdGhTY2FsZSA8IDEuMCAmJiBoZWlnaHRTY2FsZSA8IDEuMCkg
ewotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXg7Ci0gICAgICAgIG1hdHJpeC5z
Y2FsZU5vblVuaWZvcm0oMS4wIC8gd2lkdGhTY2FsZSwgMS4wIC8gaGVpZ2h0U2NhbGUpOwotICAg
ICAgICB0cmFuc2Zvcm1lZENvbnRlbnRzUmVjdCA9IG1hdHJpeC5tYXBSZWN0KHRyYW5zZm9ybWVk
Q29udGVudHNSZWN0KTsKLSAgICAgICAgLy8gV2UgZXh0cmFjdCBmcm9tIHRoZSBjb250ZW50c1Jl
Y3QgYnV0IGRyYXcgYSBzbGlnaHRseSBsYXJnZXIgcmVnaW9uIHRoYW4KLSAgICAgICAgLy8gd2Ug
d2VyZSB0b2xkIHRvLCBpbiBvcmRlciB0byBhdm9pZCBwaXhlbHMgYmVpbmcgcmVuZGVyZWQgb25s
eSBwYXJ0aWFsbHkuCi0gICAgICAgIGNvbnN0IGludCBhdExlYXN0T25lRGV2aWNlUGl4ZWwgPSBz
dGF0aWNfY2FzdDxpbnQ+KGNlaWxmKHN0ZDo6bWF4KDEuMCAvIHdpZHRoU2NhbGUsIDEuMCAvIGhl
aWdodFNjYWxlKSkpOwotICAgICAgICB0cmFuc2Zvcm1lZENvbnRlbnRzUmVjdC5pbmZsYXRlKGF0
TGVhc3RPbmVEZXZpY2VQaXhlbCk7Ci0gICAgfQotCi0gICAgaWYgKHdpZHRoU2NhbGUgIT0gMS4w
ICYmIGhlaWdodFNjYWxlICE9IDEuMCkKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNjYWxlKEZs
b2F0U2l6ZSh3aWR0aFNjYWxlLCBoZWlnaHRTY2FsZSkpOwotCi0gICAgZ3JhcGhpY3NDb250ZXh0
LmNsaXAodHJhbnNmb3JtZWRDb250ZW50c1JlY3QpOwotICAgIG1fY2xpZW50LT5mcmFtZSgpLT52
aWV3KCktPnBhaW50Q29udGVudHMoJmdyYXBoaWNzQ29udGV4dCwgdHJhbnNmb3JtZWRDb250ZW50
c1JlY3QpOwotCi0gICAgZGVsZXRlIHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0OwotfQotCi12b2lk
IEJhY2tpbmdTdG9yZVByaXZhdGU6OnJlbmRlckNvbnRlbnRzKEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpHcmFwaGljczo6QnVmZmVyKiB0aWxlQnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBQbGF0Zm9ybTo6SW50UG9pbnQmIHN1cmZhY2VPZmZzZXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBsYXRmb3Jt
OjpJbnRSZWN0JiBjb250ZW50c1JlY3QpIGNvbnN0Citib29sIEJhY2tpbmdTdG9yZVByaXZhdGU6
OnJlbmRlckNvbnRlbnRzKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiB0
YXJnZXRCdWZmZXIsIGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBkc3RSZWN0LCBkb3VibGUgc2Nh
bGUsIGNvbnN0IFBsYXRmb3JtOjpGbG9hdFBvaW50JiBkb2N1bWVudFJlbmRlck9yaWdpbikgY29u
c3QKIHsKLSAgICAvLyBJZiB0aWxlQnVmZmVyID09IDAsIHdlIHJlbmRlciBkaXJlY3RseSB0byB0
aGUgd2luZG93LgotICAgIGlmICghbV93ZWJQYWdlLT5pc1Zpc2libGUoKSAmJiB0aWxlQnVmZmVy
KQotICAgICAgICByZXR1cm47Ci0KICNpZiBERUJVR19CQUNLSU5HU1RPUkUKICAgICBQbGF0Zm9y
bTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLAotICAgICAgICAiQmFja2lu
Z1N0b3JlUHJpdmF0ZTo6cmVuZGVyQ29udGVudHMgdGlsZUJ1ZmZlcj0weCVwIHN1cmZhY2VPZmZz
ZXQ9JXMgY29udGVudHNSZWN0PSVzIiwKLSAgICAgICAgdGlsZUJ1ZmZlciwgc3VyZmFjZU9mZnNl
dC50b1N0cmluZygpLmNfc3RyKCksIGNvbnRlbnRzUmVjdC50b1N0cmluZygpLmNfc3RyKCkpOwor
ICAgICAgICAiQmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVuZGVyQ29udGVudHMgdGFyZ2V0QnVmZmVy
PTB4JXAgZHN0UmVjdD0lcyBzY2FsZT0lZiBkb2N1bWVudFJlbmRlck9yaWdpbj0lcyIsCisgICAg
ICAgIHRhcmdldEJ1ZmZlciwgZHN0UmVjdC50b1N0cmluZygpLmNfc3RyKCksIHNjYWxlLCBkb2N1
bWVudFJlbmRlck9yaWdpbi50b1N0cmluZygpLmNfc3RyKCkpOwogI2VuZGlmCiAKICAgICAvLyBJ
dCBpcyB1cCB0byBjYWxsZXJzIG9mIHRoaXMgbWV0aG9kIHRvIHBlcmZvcm0gbGF5b3V0IHRoZW1z
ZWx2ZXMhCiAgICAgQVNTRVJUKCFtX3dlYlBhZ2UtPmQtPm1haW5GcmFtZSgpLT52aWV3KCktPm5l
ZWRzTGF5b3V0KCkpOworICAgIEFTU0VSVCh0YXJnZXRCdWZmZXIpOwogCi0gICAgUGxhdGZvcm06
OkludFNpemUgY29udGVudHNTaXplID0gbV9jbGllbnQtPmNvbnRlbnRzU2l6ZSgpOworICAgIFBs
YXRmb3JtOjpWaWV3cG9ydEFjY2Vzc29yKiB2aWV3cG9ydEFjY2Vzc29yID0gbV93ZWJQYWdlLT53
ZWJraXRUaHJlYWRWaWV3cG9ydEFjY2Vzc29yKCk7CisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHJl
bmRlcmVkRmxvYXRSZWN0KGRvY3VtZW50UmVuZGVyT3JpZ2luLCB2aWV3cG9ydEFjY2Vzc29yLT50
b0RvY3VtZW50Q29udGVudHMoZHN0UmVjdC5zaXplKCksIHNjYWxlKSk7CisgICAgV2ViQ29yZTo6
SW50UmVjdCBjb250ZW50c1JlY3QoV2ViQ29yZTo6SW50UG9pbnQ6Onplcm8oKSwgbV9jbGllbnQt
PmNvbnRlbnRzU2l6ZSgpKTsKICAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IobV93ZWJQYWdlLT5z
ZXR0aW5ncygpLT5iYWNrZ3JvdW5kQ29sb3IoKSk7CiAKLSAgICBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6R3JhcGhpY3M6OkJ1ZmZlciogdGFyZ2V0QnVmZmVyID0gdGlsZUJ1ZmZlcgotICAgICAgICA/
IHRpbGVCdWZmZXIKLSAgICAgICAgOiBidWZmZXIoKTsKLQotICAgIGlmIChjb250ZW50c1NpemUu
aXNFbXB0eSgpCi0gICAgICAgIHx8ICFQbGF0Zm9ybTo6SW50UmVjdChQbGF0Zm9ybTo6SW50UG9p
bnQoMCwgMCksIG1fY2xpZW50LT50cmFuc2Zvcm1lZENvbnRlbnRzU2l6ZSgpKS5jb250YWlucyhj
b250ZW50c1JlY3QpCi0gICAgICAgIHx8IGJhY2tncm91bmRDb2xvci5oYXNBbHBoYSgpKSB7Cisg
ICAgaWYgKGNvbnRlbnRzUmVjdC5pc0VtcHR5KCkKKyAgICAgICAgfHwgYmFja2dyb3VuZENvbG9y
Lmhhc0FscGhhKCkKKyAgICAgICAgfHwgIVdlYkNvcmU6OkZsb2F0UmVjdChjb250ZW50c1JlY3Qp
LmNvbnRhaW5zKHJlbmRlcmVkRmxvYXRSZWN0KSkgewogICAgICAgICAvLyBDbGVhciB0aGUgYXJl
YSBpZiBpdCdzIG5vdCBmdWxseSBjb3ZlcmVkIGJ5IChvcGFxdWUpIGNvbnRlbnRzLgotICAgICAg
ICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6SW50UmVjdCBjbGVhclJlY3QgPSBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6SW50UmVjdCgKLSAgICAgICAgICAgIGNvbnRlbnRzUmVjdC54KCkgLSBzdXJmYWNl
T2Zmc2V0LngoKSwgY29udGVudHNSZWN0LnkoKSAtIHN1cmZhY2VPZmZzZXQueSgpLAotICAgICAg
ICAgICAgY29udGVudHNSZWN0LndpZHRoKCksIGNvbnRlbnRzUmVjdC5oZWlnaHQoKSk7Ci0KLSAg
ICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpjbGVhckJ1ZmZlcih0YXJnZXRC
dWZmZXIsIGNsZWFyUmVjdCwKKyAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNz
OjpjbGVhckJ1ZmZlcih0YXJnZXRCdWZmZXIsIGRzdFJlY3QsCiAgICAgICAgICAgICBiYWNrZ3Jv
dW5kQ29sb3IucmVkKCksIGJhY2tncm91bmRDb2xvci5ncmVlbigpLAogICAgICAgICAgICAgYmFj
a2dyb3VuZENvbG9yLmJsdWUoKSwgYmFja2dyb3VuZENvbG9yLmFscGhhKCkpOwogICAgIH0KIAot
ICAgIGlmIChjb250ZW50c1NpemUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47CisgICAgaWYg
KGNvbnRlbnRzUmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgUGxh
dGZvcm06OkdyYXBoaWNzOjpEcmF3YWJsZSogYnVmZmVyRHJhd2FibGUgPSBQbGF0Zm9ybTo6R3Jh
cGhpY3M6OmxvY2tCdWZmZXJEcmF3YWJsZSh0YXJnZXRCdWZmZXIpOworICAgIFBsYXRmb3JtOjpH
cmFwaGljczo6QnVmZmVyKiBkcmF3aW5nQnVmZmVyID0gMDsKIAotICAgIEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpHcmFwaGljczo6RHJhd2FibGUqIGJ1ZmZlckRyYXdhYmxlID0KLSAgICAgICAgQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpsb2NrQnVmZmVyRHJhd2FibGUodGFyZ2V0QnVm
ZmVyKTsKKyAgICBpZiAoYnVmZmVyRHJhd2FibGUpCisgICAgICAgIGRyYXdpbmdCdWZmZXIgPSB0
YXJnZXRCdWZmZXI7CisgICAgZWxzZSB7CisgICAgICAgIEJCTE9HKFBsYXRmb3JtOjpMb2dMZXZl
bFdhcm4sICJVc2luZyB0ZW1wb3JhcnkgYnVmZmVyIHRvIHBhaW50IGNvbnRlbnRzLCBsb29rIGlu
dG8gYXZvaWRpbmcgdGhpcy4iKTsKIAotICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBidWZm
ZXJQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCA9IGJ1ZmZlckRyYXdhYmxlCi0gICAgICAgID8gU3Vy
ZmFjZVBvb2w6Omdsb2JhbFN1cmZhY2VQb29sKCktPmNyZWF0ZVBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0KGJ1ZmZlckRyYXdhYmxlKQotICAgICAgICA6IDA7Ci0gICAgUGxhdGZvcm1HcmFwaGljc0Nv
bnRleHQqIHRhcmdldFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0ID0gYnVmZmVyUGxhdGZvcm1HcmFw
aGljc0NvbnRleHQKLSAgICAgICAgPyBidWZmZXJQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dAotICAg
ICAgICA6IFN1cmZhY2VQb29sOjpnbG9iYWxTdXJmYWNlUG9vbCgpLT5sb2NrVGlsZVJlbmRlcmlu
Z1N1cmZhY2UoKTsKKyAgICAgICAgZHJhd2luZ0J1ZmZlciA9IFBsYXRmb3JtOjpHcmFwaGljczo6
Y3JlYXRlQnVmZmVyKGRzdFJlY3Quc2l6ZSgpLCBQbGF0Zm9ybTo6R3JhcGhpY3M6OkJhY2tlZFdo
ZW5OZWNlc3NhcnkpOworICAgICAgICBpZiAoIWRyYXdpbmdCdWZmZXIpIHsKKyAgICAgICAgICAg
IFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06OkxvZ0xldmVsV2FybiwgIkNvdWxkIG5vdCBj
cmVhdGUgdGVtcG9yYXJ5IGJ1ZmZlciwgZXhwZWN0IGJhZCB0aGluZ3MgdG8gaGFwcGVuLiIpOwor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGJ1ZmZlckRyYXdh
YmxlID0gUGxhdGZvcm06OkdyYXBoaWNzOjpsb2NrQnVmZmVyRHJhd2FibGUoZHJhd2luZ0J1ZmZl
cik7CisgICAgICAgIGlmICghYnVmZmVyRHJhd2FibGUpIHsKKyAgICAgICAgICAgIFBsYXRmb3Jt
Ojpsb2dBbHdheXMoUGxhdGZvcm06OkxvZ0xldmVsV2FybiwgIkNvdWxkIG5vdCBsb2NrIHRlbXBv
cmFyeSBidWZmZXIgZHJhd2FibGUsIGV4cGVjdCBiYWQgdGhpbmdzIHRvIGhhcHBlbi4iKTsKKyAg
ICAgICAgICAgIFBsYXRmb3JtOjpHcmFwaGljczo6ZGVzdHJveUJ1ZmZlcihkcmF3aW5nQnVmZmVy
KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KIAotICAgIEFT
U0VSVCh0YXJnZXRQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCk7CisgICAgUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQqIHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0ID0gU3VyZmFjZVBvb2w6Omdsb2JhbFN1
cmZhY2VQb29sKCktPmNyZWF0ZVBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KGJ1ZmZlckRyYXdhYmxl
KTsKKyAgICBBU1NFUlQocGxhdGZvcm1HcmFwaGljc0NvbnRleHQpOwogCiAgICAgewotICAgICAg
ICBHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0KHRhcmdldFBsYXRmb3JtR3JhcGhpY3ND
b250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dChwbGF0Zm9y
bUdyYXBoaWNzQ29udGV4dCk7CiAKLSAgICAgICAgLy8gQmVsaWV2ZSBpdCBvciBub3QgdGhpcyBp
cyBpbXBvcnRhbnQgc2luY2UgdGhlIFdlYktpdCBTa2lhIGJhY2tlbmQKLSAgICAgICAgLy8gZG9l
c24ndCBzdG9yZSB0aGUgb3JpZ2luYWwgc3RhdGUgdW5sZXNzIHlvdSBjYWxsIHNhdmUgZmlyc3Qg
OlAKKyAgICAgICAgLy8gQ2xpcCB0aGUgb3V0cHV0IHRvIHRoZSBkZXN0aW5hdGlvbiBwaXhlbHMu
CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zYXZlKCk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4
dC5jbGlwKGRzdFJlY3QpOwogCiAgICAgICAgIC8vIFRyYW5zbGF0ZSBjb250ZXh0IGFjY29yZGlu
ZyB0byBvZmZzZXQuCi0gICAgICAgIGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUoLXN1cmZhY2VP
ZmZzZXQueCgpLCAtc3VyZmFjZU9mZnNldC55KCkpOworICAgICAgICBpZiAodGFyZ2V0QnVmZmVy
ID09IGRyYXdpbmdCdWZmZXIpCisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQudHJhbnNsYXRl
KC1kc3RSZWN0LngoKSwgLWRzdFJlY3QueSgpKTsKIAogICAgICAgICAvLyBBZGQgb3VyIHRyYW5z
Zm9ybWF0aW9uIG1hdHJpeCBhcyB0aGUgZ2xvYmFsIHRyYW5zZm9ybS4KLSAgICAgICAgQWZmaW5l
VHJhbnNmb3JtIGFmZmluZVRyYW5zZm9ybSgKLSAgICAgICAgICAgIG1fd2ViUGFnZS0+ZC0+dHJh
bnNmb3JtYXRpb25NYXRyaXgoKS0+YSgpLAotICAgICAgICAgICAgbV93ZWJQYWdlLT5kLT50cmFu
c2Zvcm1hdGlvbk1hdHJpeCgpLT5iKCksCi0gICAgICAgICAgICBtX3dlYlBhZ2UtPmQtPnRyYW5z
Zm9ybWF0aW9uTWF0cml4KCktPmMoKSwKLSAgICAgICAgICAgIG1fd2ViUGFnZS0+ZC0+dHJhbnNm
b3JtYXRpb25NYXRyaXgoKS0+ZCgpLAotICAgICAgICAgICAgbV93ZWJQYWdlLT5kLT50cmFuc2Zv
cm1hdGlvbk1hdHJpeCgpLT5lKCksCi0gICAgICAgICAgICBtX3dlYlBhZ2UtPmQtPnRyYW5zZm9y
bWF0aW9uTWF0cml4KCktPmYoKSk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5jb25jYXRDVE0o
YWZmaW5lVHJhbnNmb3JtKTsKLQotICAgICAgICAvLyBOb3cgdGhhdCB0aGUgbWF0cml4IGlzIGFw
cGxpZWQgd2UgbmVlZCB1bnRyYW5mb3JtZWQgY29udGVudHMgY29vcmRpbmF0ZXMuCi0gICAgICAg
IFBsYXRmb3JtOjpJbnRSZWN0IHVudHJhbnNmb3JtZWRDb250ZW50c1JlY3QgPSBtX3dlYlBhZ2Ut
PmQtPm1hcEZyb21UcmFuc2Zvcm1lZChjb250ZW50c1JlY3QpOwotCi0gICAgICAgIC8vIFdlIGV4
dHJhY3QgZnJvbSB0aGUgY29udGVudHNSZWN0IGJ1dCBkcmF3IGEgc2xpZ2h0bHkgbGFyZ2VyIHJl
Z2lvbiB0aGFuCi0gICAgICAgIC8vIHdlIHdlcmUgdG9sZCB0bywgaW4gb3JkZXIgdG8gYXZvaWQg
cGl4ZWxzIGJlaW5nIHJlbmRlcmVkIG9ubHkgcGFydGlhbGx5LgotICAgICAgICBjb25zdCBpbnQg
YXRMZWFzdE9uZURldmljZVBpeGVsID0KLSAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oY2Vp
bGYoMS4wIC8gbV93ZWJQYWdlLT5kLT50cmFuc2Zvcm1hdGlvbk1hdHJpeCgpLT5hKCkpKTsKLSAg
ICAgICAgdW50cmFuc2Zvcm1lZENvbnRlbnRzUmVjdC5pbmZsYXRlKGF0TGVhc3RPbmVEZXZpY2VQ
aXhlbCwgYXRMZWFzdE9uZURldmljZVBpeGVsKTsKLQotICAgICAgICAvLyBNYWtlIHN1cmUgdGhl
IHVudHJhbnNmb3JtZWQgcmVjdGFuZ2xlIGZvciB0aGUgKHNsaWdodGx5IGxhcmdlciB0aGFuCi0g
ICAgICAgIC8vIGluaXRpYWxseSByZXF1ZXN0ZWQpIHJlcGFpbnRlZCByZWdpb24gaXMgd2l0aGlu
IHRoZSBib3VuZHMgb2YgdGhlIHBhZ2UuCi0gICAgICAgIHVudHJhbnNmb3JtZWRDb250ZW50c1Jl
Y3QuaW50ZXJzZWN0KFBsYXRmb3JtOjpJbnRSZWN0KFBsYXRmb3JtOjpJbnRQb2ludCgwLCAwKSwg
Y29udGVudHNTaXplKSk7Ci0KLSAgICAgICAgLy8gU29tZSBXZWJLaXQgcGFpbnRpbmcgYmFja2Vu
ZHMgKmNvdWdoKiBTa2lhICpjb3VnaCogZG9uJ3Qgc2V0IHRoaXMgYXV0b21hdGljYWxseQotICAg
ICAgICAvLyB0byB0aGUgZGlydHlSZWN0IHNvIGRvIHNvIGhlcmUgZXhwbGljaXRseS4KLSAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LmNsaXAodW50cmFuc2Zvcm1lZENvbnRlbnRzUmVjdCk7CisgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC5zY2FsZShXZWJDb3JlOjpGbG9hdFNpemUoc2NhbGUsIHNjYWxl
KSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUoLWRvY3VtZW50UmVuZGVyT3Jp
Z2luLngoKSwgLWRvY3VtZW50UmVuZGVyT3JpZ2luLnkoKSk7CisKKyAgICAgICAgLy8gTWFrZSBz
dXJlIHRoZSByZWN0YW5nbGUgZm9yIHRoZSByZW5kZXJlZCByZWN0YW5nbGUgaXMgd2l0aGluIHRo
ZQorICAgICAgICAvLyBib3VuZHMgb2YgdGhlIHBhZ2UuCisgICAgICAgIFdlYkNvcmU6OkludFJl
Y3QgcmVuZGVyZWRSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChyZW5kZXJlZEZsb2F0UmVjdCk7Cisg
ICAgICAgIHJlbmRlcmVkUmVjdC5pbnRlcnNlY3QoY29udGVudHNSZWN0KTsKIAogICAgICAgICAv
LyBUYWtlIGNhcmUgb2YgcG9zc2libGUgbGVmdCBvdmVyZmxvdyBvbiBSVEwgcGFnZS4KICAgICAg
ICAgaWYgKGludCBsZWZ0T3ZlckZsb3cgPSBtX2NsaWVudC0+ZnJhbWUoKS0+dmlldygpLT5taW5p
bXVtU2Nyb2xsUG9zaXRpb24oKS54KCkpIHsKLSAgICAgICAgICAgIHVudHJhbnNmb3JtZWRDb250
ZW50c1JlY3QubW92ZShsZWZ0T3ZlckZsb3csIDApOworICAgICAgICAgICAgcmVuZGVyZWRSZWN0
Lm1vdmUobGVmdE92ZXJGbG93LCAwKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC50cmFu
c2xhdGUoLWxlZnRPdmVyRmxvdywgMCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBMZXQgV2Vi
Q29yZSByZW5kZXIgdGhlIHBhZ2UgY29udGVudHMgaW50byB0aGUgZHJhd2luZyBzdXJmYWNlLgot
ICAgICAgICBtX2NsaWVudC0+ZnJhbWUoKS0+dmlldygpLT5wYWludENvbnRlbnRzKCZncmFwaGlj
c0NvbnRleHQsIHVudHJhbnNmb3JtZWRDb250ZW50c1JlY3QpOworICAgICAgICBtX2NsaWVudC0+
ZnJhbWUoKS0+dmlldygpLT5wYWludENvbnRlbnRzKCZncmFwaGljc0NvbnRleHQsIHJlbmRlcmVk
UmVjdCk7CiAKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnJlc3RvcmUoKTsKICAgICB9CiAKLSAg
ICAvLyBHcmFiIHRoZSByZXF1ZXN0ZWQgcmVnaW9uIGZyb20gdGhlIGRyYXdpbmcgc3VyZmFjZSBp
bnRvIHRoZSB0aWxlIGltYWdlLgotCi0gICAgZGVsZXRlIGJ1ZmZlclBsYXRmb3JtR3JhcGhpY3ND
b250ZXh0OwotCi0gICAgaWYgKGJ1ZmZlckRyYXdhYmxlKQotICAgICAgICByZWxlYXNlQnVmZmVy
RHJhd2FibGUodGFyZ2V0QnVmZmVyKTsKLSAgICBlbHNlIHsKLSAgICAgICAgY29uc3QgUGxhdGZv
cm06OkludFBvaW50IGRzdFBvaW50KGNvbnRlbnRzUmVjdC54KCkgLSBzdXJmYWNlT2Zmc2V0Lngo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzUmVj
dC55KCkgLSBzdXJmYWNlT2Zmc2V0LnkoKSk7Ci0gICAgICAgIGNvbnN0IFBsYXRmb3JtOjpJbnRS
ZWN0IGRzdFJlY3QoZHN0UG9pbnQsIGNvbnRlbnRzUmVjdC5zaXplKCkpOwotICAgICAgICBjb25z
dCBQbGF0Zm9ybTo6SW50UmVjdCBzcmNSZWN0ID0gZHN0UmVjdDsKKyAgICBTdXJmYWNlUG9vbDo6
Z2xvYmFsU3VyZmFjZVBvb2woKS0+ZGVzdHJveVBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KHBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0KTsKKyAgICBQbGF0Zm9ybTo6R3JhcGhpY3M6OnJlbGVhc2VCdWZm
ZXJEcmF3YWJsZShkcmF3aW5nQnVmZmVyKTsKIAorICAgIGlmICh0YXJnZXRCdWZmZXIgIT0gZHJh
d2luZ0J1ZmZlcikgewogICAgICAgICAvLyBJZiB3ZSBjb3VsZG4ndCBkaXJlY3RseSBkcmF3IHRv
IHRoZSBidWZmZXIsIGNvcHkgZnJvbSB0aGUgZHJhd2luZyBzdXJmYWNlLgotICAgICAgICBTdXJm
YWNlUG9vbDo6Z2xvYmFsU3VyZmFjZVBvb2woKS0+cmVsZWFzZVRpbGVSZW5kZXJpbmdTdXJmYWNl
KHRhcmdldFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KTsKLSAgICAgICAgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkdyYXBoaWNzOjpibGl0VG9CdWZmZXIodGFyZ2V0QnVmZmVyLCBkc3RSZWN0LCBCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OmRyYXdpbmdTdXJmYWNlKCksIHNyY1JlY3QpOwor
ICAgICAgICBjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCBzcmNSZWN0KFBsYXRmb3JtOjpJbnRQb2lu
dDo6emVybygpLCBkc3RSZWN0LnNpemUoKSk7CisKKyAgICAgICAgUGxhdGZvcm06OkdyYXBoaWNz
OjpibGl0VG9CdWZmZXIodGFyZ2V0QnVmZmVyLCBkc3RSZWN0LCBkcmF3aW5nQnVmZmVyLCBzcmNS
ZWN0KTsKKyAgICAgICAgUGxhdGZvcm06OkdyYXBoaWNzOjpkZXN0cm95QnVmZmVyKGRyYXdpbmdC
dWZmZXIpOwogICAgIH0KKworICAgIHJldHVybiB0cnVlOwogfQogCiAjaWYgREVCVUdfRkFUX0ZJ
TkdFUlMKQEAgLTI1ODEsOSArMjUyNywxNCBAQCBQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciog
QmFja2luZ1N0b3JlUHJpdmF0ZTo6YnVmZmVyKCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAot
dm9pZCBCYWNraW5nU3RvcmU6OmRyYXdDb250ZW50cyhQbGF0Zm9ybTo6R3JhcGhpY3M6OkRyYXdh
YmxlKiBkcmF3YWJsZSwgY29uc3QgUGxhdGZvcm06OkludFJlY3QmIGNvbnRlbnRzUmVjdCwgY29u
c3QgUGxhdGZvcm06OkludFNpemUmIGRlc3RpbmF0aW9uU2l6ZSkKK2Jvb2wgQmFja2luZ1N0b3Jl
OjpkcmF3Q29udGVudHMoUGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXIqIGJ1ZmZlciwgY29uc3Qg
UGxhdGZvcm06OkludFJlY3QmIGRzdFJlY3QsIGRvdWJsZSBzY2FsZSwgY29uc3QgUGxhdGZvcm06
OkZsb2F0UG9pbnQmIGRvY3VtZW50U2Nyb2xsUG9zaXRpb24pCiB7Ci0gICAgZC0+cmVuZGVyQ29u
dGVudHMoZHJhd2FibGUsIGNvbnRlbnRzUmVjdCwgZGVzdGluYXRpb25TaXplKTsKKyAgICBpZiAo
IWJ1ZmZlciB8fCBkc3RSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgZC0+cmVxdWVzdExheW91dElmTmVlZGVkKCk7CisKKyAgICByZXR1cm4gZC0+cmVuZGVyQ29u
dGVudHMoYnVmZmVyLCBkc3RSZWN0LCBzY2FsZSwgZG9jdW1lbnRTY3JvbGxQb3NpdGlvbik7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZS5oCmluZGV4
IGUzYzJkMjg2NjllMGU0ODc5MzU4ZjQyZGZkMjFiOTIzYTlmNDc2MDMuLjFjNTIzZGU5YTkwMzQ1
NDRmMjE1NDY0YTdmN2U2YmQ4NzJkYTZkODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0FwaS9CYWNraW5nU3RvcmUuaApAQCAtMjAsNyArMjAsNiBAQAogI2RlZmluZSBCYWNraW5nU3Rv
cmVfaAogCiAjaW5jbHVkZSAiQmxhY2tCZXJyeUdsb2JhbC5oIgotI2luY2x1ZGUgPEJsYWNrQmVy
cnlQbGF0Zm9ybUdyYXBoaWNzLmg+CiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtTWlzYy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNCw2ICszMywxMSBAQCBjbGFzcyBJbnRSZWN0
OwogbmFtZXNwYWNlIEJsYWNrQmVycnkgewogbmFtZXNwYWNlIFBsYXRmb3JtIHsKIGNsYXNzIElu
dFJlY3Q7CitjbGFzcyBGbG9hdFBvaW50OworCituYW1lc3BhY2UgR3JhcGhpY3MgeworY2xhc3Mg
QnVmZmVyOworfQogfQogfQogCkBAIC03NCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFj
cXVpcmVCYWNraW5nU3RvcmVNZW1vcnkoKTsKICAgICB2b2lkIHJlbGVhc2VPd25lZEJhY2tpbmdT
dG9yZU1lbW9yeSgpOwogCi0gICAgdm9pZCBkcmF3Q29udGVudHMoUGxhdGZvcm06OkdyYXBoaWNz
OjpEcmF3YWJsZSosIGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiAvKmNvbnRlbnRzUmVjdCovLCBj
b25zdCBQbGF0Zm9ybTo6SW50U2l6ZSYgLypkZXN0aW5hdGlvblNpemUqLyk7CisgICAgYm9vbCBk
cmF3Q29udGVudHMoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXIqLCBjb25z
dCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6SW50UmVjdCYgZHN0UmVjdCwgZG91YmxlIHNjYWxlLCBj
b25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6RmxvYXRQb2ludCYgZG9jdW1lbnRTY3JvbGxQb3Np
dGlvbik7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEJsYWNrQmVycnk6OldlYktpdDo6
QmFja2luZ1N0b3JlQ2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0FwaS9CYWNraW5nU3RvcmVfcC5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNr
aW5nU3RvcmVfcC5oCmluZGV4IDNhNTNjNTEwNzdjMDk5OTgyNzkwMTg5M2U3NWNmMjUyZmU2ZDVh
MzMuLjJmNDBmNDA3MWEzNGYyYzZiNTg5YWI5ZmJiZTg2MTZkNjYyMmQ0ZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlX3AuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZV9wLmgKQEAgLTMzLDYgKzMzLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW50UmVjdDsKK2NsYXNzIEZsb2F0UG9p
bnQ7CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBMYXllclJlbmRlcmVyOwogY2xhc3MgVHJhbnNm
b3JtYXRpb25NYXRyaXg7CkBAIC0zMDYsOCArMzA3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQ
bGF0Zm9ybTo6SW50U2l6ZSB0aWxlU2l6ZSgpOwogCiAgICAgLy8gVGhpcyB0YWtlcyB0cmFuc2Zv
cm1lZCBjb250ZW50cyBjb29yZGluYXRlcy4KLSAgICB2b2lkIHJlbmRlckNvbnRlbnRzKEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiwgY29uc3QgUGxhdGZvcm06OkludFBv
aW50JiBzdXJmYWNlT2Zmc2V0LCBjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgY29udGVudHNSZWN0
KSBjb25zdDsKLSAgICB2b2lkIHJlbmRlckNvbnRlbnRzKFBsYXRmb3JtOjpHcmFwaGljczo6RHJh
d2FibGUqIC8qZHJhd2FibGUqLywgY29uc3QgUGxhdGZvcm06OkludFJlY3QmIC8qY29udGVudHNS
ZWN0Ki8sIGNvbnN0IFBsYXRmb3JtOjpJbnRTaXplJiAvKmRlc3RpbmF0aW9uU2l6ZSovKSBjb25z
dDsKKyAgICBib29sIHJlbmRlckNvbnRlbnRzKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGlj
czo6QnVmZmVyKiwgY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkludFJlY3QmIGRzdFJlY3Qs
IGRvdWJsZSBzY2FsZSwgY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkZsb2F0UG9pbnQmIGRv
Y3VtZW50U2Nyb2xsUG9zaXRpb24pIGNvbnN0OwogCiAgICAgdm9pZCBibGl0VG9XaW5kb3coY29u
c3QgUGxhdGZvcm06OkludFJlY3QmIGRzdFJlY3QsIGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpHcmFwaGljczo6QnVmZmVyKiBzcmNCdWZmZXIsIGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBz
cmNSZWN0LCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJsZW5kTW9kZSwgdW5zaWdu
ZWQgY2hhciBnbG9iYWxBbHBoYSk7CiAgICAgdm9pZCBmaWxsV2luZG93KFBsYXRmb3JtOjpHcmFw
aGljczo6RmlsbFBhdHRlcm4sIGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBkc3RSZWN0LCBjb25z
dCBQbGF0Zm9ybTo6SW50UG9pbnQmIGNvbnRlbnRzT3JpZ2luLCBkb3VibGUgY29udGVudHNTY2Fs
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9T
dXJmYWNlUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9T
dXJmYWNlUG9vbC5jcHAKaW5kZXggMTlhOWM4YzU5MDQxNGIzNDdmYWQzY2I5MWFkMzQ1Y2E4NmMw
Yzk2OS4uZmNhZTlhNzkxOTgxMzIxYzc3ZGE0ZDA4OTgzODcyZDNjZmZiNmJhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvU3VyZmFjZVBvb2wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1N1cmZhY2VQb29s
LmNwcApAQCAtNTYsNyArNTYsNiBAQCBTdXJmYWNlUG9vbCogU3VyZmFjZVBvb2w6Omdsb2JhbFN1
cmZhY2VQb29sKCkKIAogU3VyZmFjZVBvb2w6OlN1cmZhY2VQb29sKCkKICAgICA6IG1fbnVtYmVy
T2ZGcm9udEJ1ZmZlcnMoMCkKLSAgICAsIG1fdGlsZVJlbmRlcmluZ1N1cmZhY2UoMCkKICAgICAs
IG1faW5pdGlhbGl6ZWQoZmFsc2UpCiAgICAgLCBtX2J1ZmZlcnNTdXNwZW5kZWQoZmFsc2UpCiAg
ICAgLCBtX2hhc0ZlbmNlRXh0ZW5zaW9uKGZhbHNlKQpAQCAtODYsOCArODUsNiBAQCB2b2lkIFN1
cmZhY2VQb29sOjppbml0aWFsaXplKGNvbnN0IFBsYXRmb3JtOjpJbnRTaXplJiB0aWxlU2l6ZSkK
ICAgICAgICAgfQogICAgIH0KIAotICAgIG1fdGlsZVJlbmRlcmluZ1N1cmZhY2UgPSBQbGF0Zm9y
bTo6R3JhcGhpY3M6OmRyYXdpbmdTdXJmYWNlKCk7Ci0KICAgICBpZiAoIW1fbnVtYmVyT2ZGcm9u
dEJ1ZmZlcnMpCiAgICAgICAgIHJldHVybjsgLy8gd2Ugb25seSB1c2UgZGlyZWN0IHJlbmRlcmlu
ZyB3aGVuIDAgdGlsZXMgYXJlIHNwZWNpZmllZC4KIApAQCAtMTI4LDIxICsxMjUsOSBAQCBQbGF0
Zm9ybUdyYXBoaWNzQ29udGV4dCogU3VyZmFjZVBvb2w6OmNyZWF0ZVBsYXRmb3JtR3JhcGhpY3ND
b250ZXh0KFBsYXRmb3JtOjpHcgogICAgIHJldHVybiBuZXcgV2ViQ29yZTo6UGxhdGZvcm1Db250
ZXh0U2tpYShkcmF3YWJsZSk7CiB9CiAKLVBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBTdXJmYWNl
UG9vbDo6bG9ja1RpbGVSZW5kZXJpbmdTdXJmYWNlKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fdGls
ZVJlbmRlcmluZ1N1cmZhY2UpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIGNyZWF0
ZVBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KFBsYXRmb3JtOjpHcmFwaGljczo6bG9ja0J1ZmZlckRy
YXdhYmxlKG1fdGlsZVJlbmRlcmluZ1N1cmZhY2UpKTsKLX0KLQotdm9pZCBTdXJmYWNlUG9vbDo6
cmVsZWFzZVRpbGVSZW5kZXJpbmdTdXJmYWNlKFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0KSBjb25zdAordm9pZCBTdXJmYWNlUG9vbDo6ZGVzdHJveVBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0KFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCkgY29u
c3QKIHsKLSAgICBpZiAoIW1fdGlsZVJlbmRlcmluZ1N1cmZhY2UpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGRlbGV0ZSBjb250ZXh0OwotICAgIFBsYXRmb3JtOjpHcmFwaGljczo6cmVsZWFzZUJ1
ZmZlckRyYXdhYmxlKG1fdGlsZVJlbmRlcmluZ1N1cmZhY2UpOworICAgIGRlbGV0ZSBwbGF0Zm9y
bUdyYXBoaWNzQ29udGV4dDsKIH0KIAogdW5zaWduZWQgU3VyZmFjZVBvb2w6Om51bWJlck9mQXZh
aWxhYmxlQmFja0J1ZmZlcnMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYktpdFN1cHBvcnQvU3VyZmFjZVBvb2wuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L1N1cmZhY2VQb29sLmgKaW5kZXggODRlYmMyNzJiNTY0NTExMGY5
MWUxOWE4NjE0Y2ZjYTYxNTYyMWQyOC4uZGM0OWIzOWEyZTAzMjllZmM5NTJmZTkxYTE3MzkyNTdh
NTI5ZmE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBv
cnQvU3VyZmFjZVBvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3Vw
cG9ydC9TdXJmYWNlUG9vbC5oCkBAIC00Myw4ICs0Myw3IEBAIHB1YmxpYzoKICAgICBpbnQgbnVt
YmVyT2ZCYWNraW5nU3RvcmVGcm9udEJ1ZmZlcnMoKSBjb25zdDsKIAogICAgIFBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0KiBjcmVhdGVQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dChCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6R3JhcGhpY3M6OkRyYXdhYmxlKikgY29uc3Q7Ci0gICAgUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQqIGxvY2tUaWxlUmVuZGVyaW5nU3VyZmFjZSgpIGNvbnN0OwotICAgIHZvaWQgcmVs
ZWFzZVRpbGVSZW5kZXJpbmdTdXJmYWNlKFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KikgY29uc3Q7
CisgICAgdm9pZCBkZXN0cm95UGxhdGZvcm1HcmFwaGljc0NvbnRleHQoUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQqKSBjb25zdDsKIAogICAgIC8vIFRoZSBzdXJmYWNlIHBvb2wgd2lsbCBhbGxvY2F0
ZSBhcyBtYW55IGJhY2sgYnVmZmVycyBhcyBzcGVjaWZpZWQgYnkKICAgICAvLyBQbGF0Zm9ybTo6
U2V0dGluZ3M6Omluc3RhbmNlKCktPm51bWJlck9mQmFja2luZ1N0b3JlQmFja0J1ZmZlcnMoKSB3
aGljaApAQCAtNzgsNyArNzcsNiBAQCBwcml2YXRlOgogICAgIFRpbGVCdWZmZXJMaXN0IG1fdGls
ZUJ1ZmZlclBvb2w7CiAgICAgVGlsZUJ1ZmZlckxpc3QgbV9hdmFpbGFibGVCYWNrQnVmZmVyUG9v
bDsKICAgICB1bnNpZ25lZCBtX251bWJlck9mRnJvbnRCdWZmZXJzOwotICAgIEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiBtX3RpbGVSZW5kZXJpbmdTdXJmYWNlOwogICAg
IGJvb2wgbV9pbml0aWFsaXplZDsgLy8gU3VyZmFjZVBvb2wgaGFzIGJlZW4gc2V0IHVwLCB3aXRo
IG9yIHdpdGhvdXQgYnVmZmVycy4KICAgICBib29sIG1fYnVmZmVyc1N1c3BlbmRlZDsgLy8gQnVm
ZmVyIG9iamVjdHMgZXhpc3QsIGJ1dCBwaXhlbCBtZW1vcnkgaGFzIGJlZW4gZnJlZWQuCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>