<?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>110253</bug_id>
          
          <creation_ts>2013-02-19 12:37:42 -0800</creation_ts>
          <short_desc>[BlackBerry] Appropriately handle word wrapping in SpellingHandler</short_desc>
          <delta_ts>2013-02-19 15:17:27 -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="Nima Ghanavatian">nghanavatian</reporter>
          <assigned_to name="Nima Ghanavatian">nghanavatian</assigned_to>
          <cc>mifenton</cc>
    
    <cc>rwlbuis</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>836674</commentid>
    <comment_count>0</comment_count>
    <who name="Nima Ghanavatian">nghanavatian</who>
    <bug_when>2013-02-19 12:37:42 -0800</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836695</commentid>
    <comment_count>1</comment_count>
      <attachid>189147</attachid>
    <who name="Nima Ghanavatian">nghanavatian</who>
    <bug_when>2013-02-19 12:56:55 -0800</bug_when>
    <thetext>Created attachment 189147
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836703</commentid>
    <comment_count>2</comment_count>
      <attachid>189147</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-02-19 13:08:45 -0800</bug_when>
    <thetext>Comment on attachment 189147
Patch

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

Found some small nits.

&gt; Source/WebKit/blackberry/WebKitSupport/DOMSupport.cpp:535
&gt; +            endPosition = textRender-&gt;visiblePositionForIndex(textLength);

I&apos;d reverse the logic here.

&gt; Source/WebKit/blackberry/WebKitSupport/SpellingHandler.h:35
&gt; +    void setSpellCheckActive(const bool active) { m_isSpellCheckActive = active; }

I am not sure const bool adds anything? It will not make it more efficient AFAICS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836708</commentid>
    <comment_count>3</comment_count>
      <attachid>189150</attachid>
    <who name="Nima Ghanavatian">nghanavatian</who>
    <bug_when>2013-02-19 13:16:40 -0800</bug_when>
    <thetext>Created attachment 189150
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836717</commentid>
    <comment_count>4</comment_count>
      <attachid>189152</attachid>
    <who name="Nima Ghanavatian">nghanavatian</who>
    <bug_when>2013-02-19 13:27:03 -0800</bug_when>
    <thetext>Created attachment 189152
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836725</commentid>
    <comment_count>5</comment_count>
      <attachid>189152</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-02-19 13:30:27 -0800</bug_when>
    <thetext>Comment on attachment 189152
Patch

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836838</commentid>
    <comment_count>6</comment_count>
      <attachid>189152</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-19 15:17:24 -0800</bug_when>
    <thetext>Comment on attachment 189152
Patch

Clearing flags on attachment: 189152

Committed r143391: &lt;http://trac.webkit.org/changeset/143391&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836839</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-19 15:17:27 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189147</attachid>
            <date>2013-02-19 12:56:55 -0800</date>
            <delta_ts>2013-02-19 13:16:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110253-20130219154652.patch</filename>
            <type>text/plain</type>
            <size>22464</size>
            <attacher name="Nima Ghanavatian">nghanavatian</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCA4ZDc5NDhiMjI4MThjNDNjNjEzNjBhMDQwY2E0YWQwYTEyYzA3ODdmLi45MTlmYzI1N2Jj
YjhjYzI3Yzg0YmIxMjY1ZmY3ZTQ4Nzk1ODQ5YWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMy0wMi0xMiAgTmltYSBHaGFuYXZhdGlhbiAgPG5n
aGFuYXZhdGlhbkByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBBcHByb3ByaWF0ZWx5
IGhhbmRsZSB3b3JkIHdyYXBwaW5nIGluIFNwZWxsaW5nSGFuZGxlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjUzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUFIyODYwMDEKKyAgICAgICAgU2luY2Ug
d2UgdHJhdmVyc2UgdGhyb3VnaCB0ZXh0IGJ5IHZpc3VhbCBsaW5lcyBpbnN0ZWFkIG9mIGJsb2Nr
cywgd29yZCB3cmFwcGluZyBjYXVzZXMgc29tZQorICAgICAgICBiYWQgYmVoYXZpb3IuIENoYW5n
aW5nIHRoZSB3YXkgd2UgdHJhdmVyc2UgdGV4dCB0byBqdW1wIGJ5IHdvcmRzIGluc3RlYWQgb2Yg
bGluZXMuIFRoaXMgd2lsbAorICAgICAgICBtZWFuIGl0IHRha2VzIGxvbmdlciB0byBmaW5pc2gg
c3BlbGxjaGVja2luZywgYnV0IHRoZSByZW1vdmFsIG9mIGFueSBsb29wcyBhbGxvd3Mgd2Via2l0
CisgICAgICAgIHByb2Nlc3NpbmcgdG8gY29udGludWUuIFRoaXMgZ2l2ZXMgcHJpb3JpdHkgdG8g
dXNlciBhY3Rpb25zIHdoaWxlIHN0aWxsIGNvbXBsZXRpbmcgYSBsYXJnZQorICAgICAgICBwYXJh
Z3JhcGggaW4gYSByZWFzb25hYmxlIGFtb3VudCBvZiB0aW1lLgorCisgICAgICAgIEludGVybmFs
bHkgcmV2aWV3ZWQgYnkgTWlrZSBGZW50b24KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvSW5w
dXRIYW5kbGVyLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVy
OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9TcGVs
bGluZ0hhbmRsZXIuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpTcGVsbGluZ0hh
bmRsZXI6OmNyZWF0ZVNwZWxsQ2hlY2tSZXF1ZXN0KToKKyAgICAgICAgKEJsYWNrQmVycnk6Oldl
YktpdDo6U3BlbGxpbmdIYW5kbGVyOjpwYXJzZUJsb2NrRm9yU3BlbGxDaGVja2luZyk6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlNwZWxsaW5nSGFuZGxlcjo6Z2V0UmFuZ2VGb3JTcGVs
bENoZWNrV2l0aEZpbmVHcmFudWxhcml0eSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OlNwZWxsaW5nSGFuZGxlcjo6c3RhcnRPZk5leHRXb3JkKToKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlNwZWxsaW5nSGFuZGxlcjo6aW5jcmVtZW50QnlX
b3JkKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6U3BlbGxpbmdIYW5kbGVyOjpkb2Vz
V29yZFdyYXApOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvU3BlbGxpbmdIYW5kbGVyLmg6Cisg
ICAgICAgIChTcGVsbGluZ0hhbmRsZXIpOgorCiAyMDEzLTAyLTE4ICBTaW1vbiBGcmFzZXIgIDxz
aW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIENsZWFuIHVwIHRoZSBib29sZWFuIGFy
Z3VtZW50IHRvIHZpc2libGVDb250ZW50UmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcAppbmRleCBjOTg2NGE3OWI2ODcy
MWRiOGQ0YjdmY2NhMzI0NmQ3OTgyYTNlMzI0Li44ZjE3ZWUyYTgwOTZmZTBiNzk2ZWE4OTEwMTk4
MDk3ZWUxMGZmZTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0
U3VwcG9ydC9ET01TdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
S2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcApAQCAtNTA4LDYgKzUwOCw0NiBAQCBWaXNpYmxlU2Vs
ZWN0aW9uIHZpc2libGVTZWxlY3Rpb25Gb3JDbG9zZXN0QWN0dWFsV29yZFN0YXJ0KGNvbnN0IFZp
c2libGVTZWxlY3RpbwogICAgIHJldHVybiBzZWxlY3Rpb247CiB9CiAKK2ludCBvZmZzZXRGcm9t
U3RhcnRPZkJsb2NrKGNvbnN0IFZpc2libGVQb3NpdGlvbiBvZmZzZXQpCit7CisgICAgUmVmUHRy
PFJhbmdlPiByYW5nZSA9IG1ha2VSYW5nZShzdGFydE9mQmxvY2sob2Zmc2V0KSwgb2Zmc2V0KTsK
KyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gcmFuZ2Ut
PnRleHQoKS5sYXRpbjEoKS5sZW5ndGgoKTsKK30KKworVmlzaWJsZVNlbGVjdGlvbiB2aXNpYmxl
U2VsZWN0aW9uRm9yRm9jdXNlZEJsb2NrKEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgaW50IHRl
eHRMZW5ndGggPSBpbnB1dEVsZW1lbnRUZXh0KGVsZW1lbnQpLmxlbmd0aCgpOworCisgICAgaWYg
KERPTVN1cHBvcnQ6OnRvVGV4dENvbnRyb2xFbGVtZW50KGVsZW1lbnQpKSB7CisgICAgICAgIFJl
bmRlclRleHRDb250cm9sKiB0ZXh0UmVuZGVyID0gdG9SZW5kZXJUZXh0Q29udHJvbChlbGVtZW50
LT5yZW5kZXJlcigpKTsKKyAgICAgICAgaWYgKCF0ZXh0UmVuZGVyKQorICAgICAgICAgICAgcmV0
dXJuIFZpc2libGVTZWxlY3Rpb24oKTsKKworICAgICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRQ
b3NpdGlvbiA9IHRleHRSZW5kZXItPnZpc2libGVQb3NpdGlvbkZvckluZGV4KDApOworICAgICAg
ICBWaXNpYmxlUG9zaXRpb24gZW5kUG9zaXRpb247CisKKyAgICAgICAgaWYgKCF0ZXh0TGVuZ3Ro
KQorICAgICAgICAgICAgZW5kUG9zaXRpb24gPSBzdGFydFBvc2l0aW9uOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBlbmRQb3NpdGlvbiA9IHRleHRSZW5kZXItPnZpc2libGVQb3NpdGlvbkZv
ckluZGV4KHRleHRMZW5ndGgpOworICAgICAgICByZXR1cm4gVmlzaWJsZVNlbGVjdGlvbihzdGFy
dFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7CisgICAgfQorCisgICAgLy8gTXVzdCBiZSBjb250ZW50
IGVkaXRhYmxlLCBnZW5lcmF0ZSB0aGUgcmFuZ2UuCisgICAgUmVmUHRyPFJhbmdlPiBzZWxlY3Rp
b25SYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZWxlbWVu
dCwgMCwgdGV4dExlbmd0aCk7CisKKyAgICBpZiAoIXNlbGVjdGlvblJhbmdlKQorICAgICAgICBy
ZXR1cm4gVmlzaWJsZVNlbGVjdGlvbigpOworCisgICAgaWYgKCF0ZXh0TGVuZ3RoKQorICAgICAg
ICByZXR1cm4gVmlzaWJsZVNlbGVjdGlvbihzZWxlY3Rpb25SYW5nZS0+c3RhcnRQb3NpdGlvbigp
LCBET1dOU1RSRUFNKTsKKworICAgIHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKHNlbGVjdGlvblJh
bmdlLT5zdGFydFBvc2l0aW9uKCksIHNlbGVjdGlvblJhbmdlLT5lbmRQb3NpdGlvbigpKTsKK30K
KwogLy8gVGhpcyBmdW5jdGlvbiBpcyBjb3BpZWQgZnJvbSBXZWJDb3JlL3BhZ2UvUGFnZS5jcHAu
CiBGcmFtZSogaW5jcmVtZW50RnJhbWUoRnJhbWUqIGN1cnIsIGJvb2wgZm9yd2FyZCwgYm9vbCB3
cmFwRmxhZykKIHsKQEAgLTUyMyw3ICs1NjMsNyBAQCBQYXNzUmVmUHRyPFJhbmdlPiB0cmltV2hp
dGVzcGFjZUZyb21SYW5nZShQYXNzUmVmUHRyPFJhbmdlPiByYW5nZSkKIAogUGFzc1JlZlB0cjxS
YW5nZT4gdHJpbVdoaXRlc3BhY2VGcm9tUmFuZ2UoVmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRp
b24sIFZpc2libGVQb3NpdGlvbiBlbmRQb3NpdGlvbikKIHsKLSAgICBpZiAoaXNFbXB0eVJhbmdl
T3JBbGxTcGFjZXMoc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pKQorICAgIGlmIChzdGFydFBv
c2l0aW9uID09IGVuZFBvc2l0aW9uIHx8IGlzUmFuZ2VUZXh0QWxsV2hpdGVzcGFjZShzdGFydFBv
c2l0aW9uLCBlbmRQb3NpdGlvbikpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgd2hpbGUgKGlz
V2hpdGVzcGFjZShzdGFydFBvc2l0aW9uLmNoYXJhY3RlckFmdGVyKCkpKQpAQCAtNTM1LDExICs1
NzUsOCBAQCBQYXNzUmVmUHRyPFJhbmdlPiB0cmltV2hpdGVzcGFjZUZyb21SYW5nZShWaXNpYmxl
UG9zaXRpb24gc3RhcnRQb3NpdGlvbiwgVmlzaWJsZQogICAgIHJldHVybiBtYWtlUmFuZ2Uoc3Rh
cnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOwogfQogCi1ib29sIGlzRW1wdHlSYW5nZU9yQWxsU3Bh
Y2VzKFZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uLCBWaXNpYmxlUG9zaXRpb24gZW5kUG9z
aXRpb24pCitib29sIGlzUmFuZ2VUZXh0QWxsV2hpdGVzcGFjZShWaXNpYmxlUG9zaXRpb24gc3Rh
cnRQb3NpdGlvbiwgVmlzaWJsZVBvc2l0aW9uIGVuZFBvc2l0aW9uKQogewotICAgIGlmIChzdGFy
dFBvc2l0aW9uID09IGVuZFBvc2l0aW9uKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQogICAgIHdo
aWxlIChpc1doaXRlc3BhY2Uoc3RhcnRQb3NpdGlvbi5jaGFyYWN0ZXJBZnRlcigpKSkgewogICAg
ICAgICBzdGFydFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbi5uZXh0KCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0RPTVN1cHBvcnQuaCBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0RPTVN1cHBvcnQuaAppbmRleCAx
ZTg4YWI1MGI4YzgxMzQ4NmYyZWE2MDk1ZjhjM2I5MWE3ZDBmMjY0Li5jOGQ3YzA4YTg2ODUzYzdi
Mjc3Yjk0ZDI2MTU1NGE0NWFkZmY4OTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5oCkBAIC05MCwxMiArOTAsMTQgQEAgV2Vi
Q29yZTo6SW50UG9pbnQgY29udmVydFBvaW50VG9GcmFtZShjb25zdCBXZWJDb3JlOjpGcmFtZSog
c291cmNlRnJhbWUsIGNvbnN0IFcKIHN0YXRpYyBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBJbnZh
bGlkUG9pbnQgPSBXZWJDb3JlOjpJbnRQb2ludCgtMSwgLTEpOwogCiBXZWJDb3JlOjpWaXNpYmxl
U2VsZWN0aW9uIHZpc2libGVTZWxlY3Rpb25Gb3JDbG9zZXN0QWN0dWFsV29yZFN0YXJ0KGNvbnN0
IFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24mKTsKK1dlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24g
dmlzaWJsZVNlbGVjdGlvbkZvckZvY3VzZWRCbG9jayhXZWJDb3JlOjpFbGVtZW50Kik7CitpbnQg
b2Zmc2V0RnJvbVN0YXJ0T2ZCbG9jayhjb25zdCBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24gb2Zm
c2V0KTsKIAogV2ViQ29yZTo6RnJhbWUqIGluY3JlbWVudEZyYW1lKFdlYkNvcmU6OkZyYW1lKiBj
dXJyLCBib29sIGZvcndhcmQsIGJvb2wgd3JhcEZsYWcpOwogCiBQYXNzUmVmUHRyPFdlYkNvcmU6
OlJhbmdlPiB0cmltV2hpdGVzcGFjZUZyb21SYW5nZShQYXNzUmVmUHRyPFdlYkNvcmU6OlJhbmdl
Pik7CiBQYXNzUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiB0cmltV2hpdGVzcGFjZUZyb21SYW5nZShX
ZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlvbiwgV2ViQ29yZTo6VmlzaWJsZVBv
c2l0aW9uIGVuZFBvc2l0aW9uKTsKLWJvb2wgaXNFbXB0eVJhbmdlT3JBbGxTcGFjZXMoV2ViQ29y
ZTo6VmlzaWJsZVBvc2l0aW9uLCBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24pOworYm9vbCBpc1Jh
bmdlVGV4dEFsbFdoaXRlc3BhY2UoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRp
b24sIFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbiBlbmRQb3NpdGlvbik7CiAKIGJvb2wgaXNGaXhl
ZFBvc2l0aW9uT3JIYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IoV2ViQ29yZTo6UmVuZGVyT2JqZWN0
Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0
L0lucHV0SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9y
dC9JbnB1dEhhbmRsZXIuY3BwCmluZGV4IGVjOTZmZGE4MTRkMjcxNTMyMjZkMGE0OWMwOWZhNTdj
OTI1ZTg0OGYuLmE1MjA5N2E1NGEzMzFkMjQ1YmJhN2FiNmU0Mjg4ZWVhMjBkZWM0OGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRI
YW5kbGVyLmNwcApAQCAtNjEyLDE3ICs2MTIsMjAgQEAgdm9pZCBJbnB1dEhhbmRsZXI6OnJlcXVl
c3RDaGVja2luZ09mU3RyaW5nKFBhc3NSZWZQdHI8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWUK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChyZXF1ZXN0TGVuZ3RoID4gTWF4U3Bl
bGxDaGVja2luZ1N0cmluZ0xlbmd0aCkgeworICAgIGlmIChyZXF1ZXN0TGVuZ3RoID49IE1heFNw
ZWxsQ2hlY2tpbmdTdHJpbmdMZW5ndGgpIHsKICAgICAgICAgLy8gQmF0Y2ggcmVxdWVzdHMgd2hp
Y2ggYXJlIGdlbmVyYWxseSBjcmVhdGVkIGJ5IHVzIG9uIGZvY3VzLCBzaG91bGQgbm90IGV4Y2Vl
ZCB0aGlzIGxpbWl0LiBDaGVjayB0aGF0IHRoaXMgaXMgaW4gZmFjdCBvZiBJbmNyZW1lbnRhbCB0
eXBlLgogICAgICAgICBBU1NFUlQodGV4dENoZWNraW5nUmVxdWVzdC0+cHJvY2Vzc1R5cGUoKSA9
PSBUZXh0Q2hlY2tpbmdQcm9jZXNzSW5jcmVtZW50YWwpOwogCiAgICAgICAgIC8vIENhbmNlbCB0
aGlzIHJlcXVlc3QgYW5kIHNlbmQgaXQgb2ZmIGluIG5ld2x5IGNyZWF0ZWQgY2h1bmtzLgogICAg
ICAgICBtX3JlcXVlc3QtPmRpZENhbmNlbCgpOwogICAgICAgICBpZiAobV9jdXJyZW50Rm9jdXNF
bGVtZW50LT5kb2N1bWVudCgpICYmIG1fY3VycmVudEZvY3VzRWxlbWVudC0+ZG9jdW1lbnQoKS0+
ZnJhbWUoKSAmJiBtX2N1cnJlbnRGb2N1c0VsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCktPnNl
bGVjdGlvbigpKSB7Ci0gICAgICAgICAgICAvLyBDb252ZXJ0IGZyb20gcG9zaXRpb24gYmFjayB0
byBzZWxlY3Rpb24gc28gd2UgY2FuIGV4cGFuZCB0aGUgcmFuZ2UgdG8gaW5jbHVkZSB0aGUgcHJl
dmlvdXMgbGluZS4gVGhpcyBzaG91bGQgaGFuZGxlIGNhc2VzIHdoZW4gdGhlIHVzZXIgaGl0cwot
ICAgICAgICAgICAgLy8gZW50ZXIgdG8gZmluaXNoIGNvbXBvc2luZyBhIHdvcmQgYW5kIGNyZWF0
ZSBhIG5ldyBsaW5lLgogICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGNhcmV0UG9zaXRpb24g
PSBtX2N1cnJlbnRGb2N1c0VsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCktPnNlbGVjdGlvbigp
LT5zdGFydCgpOwotICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiB2aXNpYmxlU2VsZWN0aW9u
ID0gVmlzaWJsZVNlbGVjdGlvbihwcmV2aW91c0xpbmVQb3NpdGlvbihjYXJldFBvc2l0aW9uLCBj
YXJldFBvc2l0aW9uLmxpbmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0aW9uTmF2aWdhdGlv
bigpKSwgY2FyZXRQb3NpdGlvbik7CisgICAgICAgICAgICAvLyBDb252ZXJ0IGZyb20gcG9zaXRp
b24gYmFjayB0byBzZWxlY3Rpb24gc28gd2UgY2FuIGV4cGFuZCB0aGUgcmFuZ2UgdG8gaW5jbHVk
ZSB0aGUgcHJldmlvdXMgbGluZS4gVGhpcyBzaG91bGQgaGFuZGxlIGNhc2VzIHdoZW4gdGhlIHVz
ZXIgaGl0cworICAgICAgICAgICAgLy8gZW50ZXIgdG8gZmluaXNoIGNvbXBvc2luZyBhIHdvcmQg
YW5kIGNyZWF0ZSBhIG5ldyBsaW5lLiBBY2NvdW50IGZvciB3b3JkIHdyYXBwaW5nIGJ5IGp1bXBp
bmcgdG8gdGhlIHN0YXJ0IG9mIHRoZSBwcmV2aW91cyBsaW5lLCB0aGVuIG1vdmluZworICAgICAg
ICAgICAgLy8gdG8gdGhlIHN0YXJ0IG9mIGFueSB3b3JkIHdoaWNoIG1pZ2h0IGJlIHRoZXJlLgor
ICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiB2aXNpYmxlU2VsZWN0aW9uID0gVmlzaWJsZVNl
bGVjdGlvbigKKyAgICAgICAgICAgICAgICBzdGFydE9mV29yZChzdGFydE9mTGluZShwcmV2aW91
c0xpbmVQb3NpdGlvbihjYXJldFBvc2l0aW9uLCBjYXJldFBvc2l0aW9uLmxpbmVEaXJlY3Rpb25Q
b2ludEZvckJsb2NrRGlyZWN0aW9uTmF2aWdhdGlvbigpKSkpLAorICAgICAgICAgICAgICAgIGVu
ZE9mV29yZChlbmRPZkxpbmUoY2FyZXRQb3NpdGlvbikpKTsKICAgICAgICAgICAgIG1fc3BlbGxp
bmdIYW5kbGVyLT5zcGVsbENoZWNrVGV4dEJsb2NrKHZpc2libGVTZWxlY3Rpb24sIFRleHRDaGVj
a2luZ1Byb2Nlc3NJbmNyZW1lbnRhbCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwpAQCAt
MTA5Miw4ICsxMDk1LDggQEAgdm9pZCBJbnB1dEhhbmRsZXI6OnNldEVsZW1lbnRGb2N1c2VkKEVs
ZW1lbnQqIGVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFNwZWxsY2hlY2sgdGhl
IGZpZWxkIGluIGl0cyBlbnRpcmV0eS4KLSAgICBWaXNpYmxlU2VsZWN0aW9uIGZvY3VzZWRCbG9j
ayA9IERPTVN1cHBvcnQ6OnZpc2libGVTZWxlY3Rpb25Gb3JJbnB1dEVsZW1lbnQoZWxlbWVudCk7
Ci0gICAgbV9zcGVsbGluZ0hhbmRsZXItPnNwZWxsQ2hlY2tUZXh0QmxvY2soZm9jdXNlZEJsb2Nr
LCBUZXh0Q2hlY2tpbmdQcm9jZXNzQmF0Y2gpOworICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24g
dmlzaWJsZVNlbGVjdGlvbiA9IERPTVN1cHBvcnQ6OnZpc2libGVTZWxlY3Rpb25Gb3JGb2N1c2Vk
QmxvY2soZWxlbWVudCk7CisgICAgbV9zcGVsbGluZ0hhbmRsZXItPnNwZWxsQ2hlY2tUZXh0Qmxv
Y2sodmlzaWJsZVNlbGVjdGlvbiwgVGV4dENoZWNraW5nUHJvY2Vzc0JhdGNoKTsKIAogI2lmZGVm
IEVOQUJMRV9TUEVMTElOR19MT0cKICAgICBTcGVsbGluZ0xvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJ
bmZvLCAiSW5wdXRIYW5kbGVyOjpzZXRFbGVtZW50Rm9jdXNlZCBTcGVsbGNoZWNraW5nIHRoZSBm
aWVsZCBpbmNyZWFzZWQgdGhlIHRvdGFsIHRpbWUgdG8gZm9jdXMgdG8gJWYgc2Vjb25kcy4iLCB0
aW1lci5lbGFwc2VkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YktpdFN1cHBvcnQvU3BlbGxpbmdIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9XZWJLaXRTdXBwb3J0L1NwZWxsaW5nSGFuZGxlci5jcHAKaW5kZXggNTQyYTU0YjRhOWYwMmMw
M2M5OTQ0ZTVkNGY3M2RmNGQ4MzJhYzJiNy4uZDVmYmY0NjYxYzZkMzE2YjhkNmJiOTk3MGNjMGJk
NTQ5N2IzYjRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1
cHBvcnQvU3BlbGxpbmdIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViS2l0U3VwcG9ydC9TcGVsbGluZ0hhbmRsZXIuY3BwCkBAIC00MSwxOCArNDEsMTggQEAgU3Bl
bGxpbmdIYW5kbGVyOjp+U3BlbGxpbmdIYW5kbGVyKCkKIHsKIH0KIAotdm9pZCBTcGVsbGluZ0hh
bmRsZXI6OnNwZWxsQ2hlY2tUZXh0QmxvY2soV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiYgdmlz
aWJsZVNlbGVjdGlvbiwgV2ViQ29yZTo6VGV4dENoZWNraW5nUHJvY2Vzc1R5cGUgdGV4dENoZWNr
aW5nUHJvY2Vzc1R5cGUpCit2b2lkIFNwZWxsaW5nSGFuZGxlcjo6c3BlbGxDaGVja1RleHRCbG9j
ayhjb25zdCBXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uJiB2aXNpYmxlU2VsZWN0aW9uLCBXZWJD
b3JlOjpUZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSB0ZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSkKIHsK
LSAgICBTcGVsbGluZ0xvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiU3BlbGxpbmdIYW5kbGVy
OjpzcGVsbENoZWNrVGV4dEJsb2NrIik7Ci0KICAgICAvLyBDaGVjayBpZiB0aGlzIHJlcXVlc3Qg
Y2FuIGJlIHNlbnQgb2ZmIGluIG9uZSBtZXNzYWdlLCBvciBpZiBpdCBuZWVkcyB0byBiZSBicm9r
ZW4gZG93bi4KICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yU3BlbGxDaGVja2luZyA9IHZpc2li
bGVTZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKTsKICAgICBpZiAoIXJhbmdlRm9yU3BlbGxD
aGVja2luZyB8fCAhcmFuZ2VGb3JTcGVsbENoZWNraW5nLT50ZXh0KCkgfHwgIXJhbmdlRm9yU3Bl
bGxDaGVja2luZy0+dGV4dCgpLmxlbmd0aCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBtX3Rl
eHRDaGVja2luZ1Byb2Nlc3NUeXBlID0gdGV4dENoZWNraW5nUHJvY2Vzc1R5cGU7CisKICAgICAv
LyBTcGVsbGNoZWNrIEJhdGNoIHJlcXVlc3RzIGFyZSB1c2VkIHdoZW4gZm9jdXNpbmcgYW4gZWxl
bWVudC4gRHVyaW5nIHRoaXMgdGltZSwgd2UgbWlnaHQgaGF2ZSBhIGxpbmdlcmluZyByZXF1ZXN0
CiAgICAgLy8gZnJvbSBhIHByZXZpb3VzbHkgZm9jdXNlZCBlbGVtZW50LgotICAgIGlmICh0ZXh0
Q2hlY2tpbmdQcm9jZXNzVHlwZSA9PSBUZXh0Q2hlY2tpbmdQcm9jZXNzQmF0Y2gpIHsKKyAgICBp
ZiAobV90ZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSA9PSBUZXh0Q2hlY2tpbmdQcm9jZXNzQmF0Y2gp
IHsKICAgICAgICAgLy8gSWYgYSBwcmV2aW91cyByZXF1ZXN0IGlzIGJlaW5nIHByb2Nlc3NlZCwg
c3RvcCBpdCBiZWZvcmUgY29udGludWVpbmcuCiAgICAgICAgIGlmIChtX3RpbWVyLmlzQWN0aXZl
KCkpCiAgICAgICAgICAgICBtX3RpbWVyLnN0b3AoKTsKQEAgLTYxLDEwNiArNjEsMTEyIEBAIHZv
aWQgU3BlbGxpbmdIYW5kbGVyOjpzcGVsbENoZWNrVGV4dEJsb2NrKFdlYkNvcmU6OlZpc2libGVT
ZWxlY3Rpb24mIHZpc2libGVTZWxlCiAgICAgbV9pc1NwZWxsQ2hlY2tBY3RpdmUgPSB0cnVlOwog
CiAgICAgLy8gSWYgd2UgaGF2ZSBhIGJhdGNoIHJlcXVlc3QsIHRyeSB0byBzZW5kIG9mZiB0aGUg
ZW50aXJlIGJsb2NrLgotICAgIGlmICh0ZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSA9PSBUZXh0Q2hl
Y2tpbmdQcm9jZXNzQmF0Y2gpIHsKKyAgICBpZiAobV90ZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSA9
PSBUZXh0Q2hlY2tpbmdQcm9jZXNzQmF0Y2gpIHsKICAgICAgICAgLy8gSWYgdG90YWwgYmxvY2sg
dGV4dCBpcyB1bmRlciB0aGUgbGltaXRlZCBhbW91bnQsIHNlbmQgdGhlIGVudGlyZSBjaHVuay4K
ICAgICAgICAgaWYgKHJhbmdlRm9yU3BlbGxDaGVja2luZy0+dGV4dCgpLmxlbmd0aCgpIDwgTWF4
U3BlbGxDaGVja2luZ1N0cmluZ0xlbmd0aCkgewotICAgICAgICAgICAgY3JlYXRlU3BlbGxDaGVj
a1JlcXVlc3QocmFuZ2VGb3JTcGVsbENoZWNraW5nLCBUZXh0Q2hlY2tpbmdQcm9jZXNzQmF0Y2gp
OworICAgICAgICAgICAgY3JlYXRlU3BlbGxDaGVja1JlcXVlc3QocmFuZ2VGb3JTcGVsbENoZWNr
aW5nKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8vIFNp
bmNlIHdlIGNvdWxkbid0IGNoZWNrIHRoZSBlbnRpcmUgYmxvY2sgYXQgb25jZSwgc2V0IHVwIHN0
YXJ0aW5nIGFuZCBlbmRpbmcgbWFya2VycyB0byBmaXJlIGluY3JlbWVudGFsbHkuCi0gICAgbV9z
dGFydE9mQ3VycmVudExpbmUgPSBzdGFydE9mTGluZSh2aXNpYmxlU2VsZWN0aW9uLnZpc2libGVT
dGFydCgpKTsKLSAgICBtX2VuZE9mQ3VycmVudExpbmUgPSBlbmRPZkxpbmUobV9zdGFydE9mQ3Vy
cmVudExpbmUpOwotICAgIG1fdGV4dENoZWNraW5nUHJvY2Vzc1R5cGUgPSB0ZXh0Q2hlY2tpbmdQ
cm9jZXNzVHlwZTsKKyAgICAvLyBGaW5kIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoZSByZWdpb24g
d2UncmUgaW50ZW5kaW5nIG9uIGNoZWNraW5nCisgICAgbV9zdGFydFBvc2l0aW9uID0gdmlzaWJs
ZVNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKTsKKyAgICBtX2VuZFBvc2l0aW9uID0gZW5kT2ZXb3Jk
KG1fc3RhcnRQb3NpdGlvbik7CisgICAgbV9lbmRPZlJhbmdlID0gdmlzaWJsZVNlbGVjdGlvbi52
aXNpYmxlRW5kKCk7CisgICAgbV9jYWNoZWRFbmRQb3NpdGlvbiA9IG1fZW5kT2ZSYW5nZTsKIAot
ICAgIC8vIEZpbmQgdGhlIGVuZCBvZiB0aGUgcmVnaW9uIHdlJ3JlIGludGVuZGluZyBvbiBjaGVj
a2luZy4KLSAgICBtX2VuZE9mUmFuZ2UgPSBlbmRPZkxpbmUodmlzaWJsZVNlbGVjdGlvbi52aXNp
YmxlRW5kKCkpOwogICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCi12b2lkIFNwZWxs
aW5nSGFuZGxlcjo6Y3JlYXRlU3BlbGxDaGVja1JlcXVlc3QoUGFzc1JlZlB0cjxXZWJDb3JlOjpS
YW5nZT4gcmFuZ2VGb3JTcGVsbENoZWNraW5nUHRyLCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdQcm9j
ZXNzVHlwZSB0ZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSkKK3ZvaWQgU3BlbGxpbmdIYW5kbGVyOjpj
cmVhdGVTcGVsbENoZWNrUmVxdWVzdChjb25zdCBQYXNzUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBy
YW5nZUZvclNwZWxsQ2hlY2tpbmdQdHIpCiB7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBy
YW5nZUZvclNwZWxsQ2hlY2tpbmcgPSByYW5nZUZvclNwZWxsQ2hlY2tpbmdQdHI7CiAgICAgcmFu
Z2VGb3JTcGVsbENoZWNraW5nID0gRE9NU3VwcG9ydDo6dHJpbVdoaXRlc3BhY2VGcm9tUmFuZ2Uo
cmFuZ2VGb3JTcGVsbENoZWNraW5nKTsKICAgICBpZiAoIXJhbmdlRm9yU3BlbGxDaGVja2luZykK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgU3BlbGxpbmdMb2coUGxhdGZvcm06OkxvZ0xldmVsSW5m
bywgIlNwZWxsaW5nSGFuZGxlcjo6Y3JlYXRlU3BlbGxDaGVja1JlcXVlc3QgU3Vic3RyaW5nIHRl
eHQgaXMgJyVzJywgb2Ygc2l6ZSAlZCIKLSAgICAgICAgLCByYW5nZUZvclNwZWxsQ2hlY2tpbmct
PnRleHQoKS5sYXRpbjEoKS5kYXRhKCkKLSAgICAgICAgLCByYW5nZUZvclNwZWxsQ2hlY2tpbmct
PnRleHQoKS5sZW5ndGgoKSk7Ci0KLSAgICBpZiAocmFuZ2VGb3JTcGVsbENoZWNraW5nLT50ZXh0
KCkubGVuZ3RoKCkgPj0gTWluU3BlbGxDaGVja2luZ1N0cmluZ0xlbmd0aCkKLSAgICAgICAgbV9p
bnB1dEhhbmRsZXItPmNhbGxSZXF1ZXN0Q2hlY2tpbmdGb3IoU3BlbGxDaGVja1JlcXVlc3Q6OmNy
ZWF0ZShUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcsIHRleHRDaGVja2luZ1Byb2Nlc3NUeXBlLCBy
YW5nZUZvclNwZWxsQ2hlY2tpbmcsIHJhbmdlRm9yU3BlbGxDaGVja2luZykpOworICAgIGlmIChy
YW5nZUZvclNwZWxsQ2hlY2tpbmctPnRleHQoKS5sZW5ndGgoKSA+PSBNaW5TcGVsbENoZWNraW5n
U3RyaW5nTGVuZ3RoKSB7CisgICAgICAgIFNwZWxsaW5nTG9nKFBsYXRmb3JtOjpMb2dMZXZlbElu
Zm8sICJTcGVsbGluZ0hhbmRsZXI6OmNyZWF0ZVNwZWxsQ2hlY2tSZXF1ZXN0IFN1YnN0cmluZyB0
ZXh0IGlzICclcycsIG9mIHNpemUgJWQiCisgICAgICAgICAgICAsIHJhbmdlRm9yU3BlbGxDaGVj
a2luZy0+dGV4dCgpLmxhdGluMSgpLmRhdGEoKQorICAgICAgICAgICAgLCByYW5nZUZvclNwZWxs
Q2hlY2tpbmctPnRleHQoKS5sZW5ndGgoKSk7CisgICAgICAgIG1faW5wdXRIYW5kbGVyLT5jYWxs
UmVxdWVzdENoZWNraW5nRm9yKFNwZWxsQ2hlY2tSZXF1ZXN0OjpjcmVhdGUoVGV4dENoZWNraW5n
VHlwZVNwZWxsaW5nLCBtX3RleHRDaGVja2luZ1Byb2Nlc3NUeXBlLCByYW5nZUZvclNwZWxsQ2hl
Y2tpbmcsIHJhbmdlRm9yU3BlbGxDaGVja2luZykpOworICAgIH0KIH0KIAogdm9pZCBTcGVsbGlu
Z0hhbmRsZXI6OnBhcnNlQmxvY2tGb3JTcGVsbENoZWNraW5nKFdlYkNvcmU6OlRpbWVyPFNwZWxs
aW5nSGFuZGxlcj4qKQogewotICAgIC8vIENyZWF0ZSBhIHNlbGVjdGlvbiB3aXRoIHRoZSBzdGFy
dCBhbmQgZW5kIHBvaW50cyBvZiB0aGUgbGluZSwgYW5kIGNvbnZlcnQgdG8gUmFuZ2UgdG8gY3Jl
YXRlIGEgU3BlbGxDaGVja1JlcXVlc3QuCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZUZvclNwZWxs
Q2hlY2tpbmcgPSBtYWtlUmFuZ2UobV9zdGFydE9mQ3VycmVudExpbmUsIG1fZW5kT2ZDdXJyZW50
TGluZSk7CisgICAgU3BlbGxpbmdMb2coUGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIlNwZWxsaW5n
SGFuZGxlcjo6cGFyc2VCbG9ja0ZvclNwZWxsQ2hlY2tpbmcgbV9zdGFydFBvc2l0aW9uID0gJWQs
IG1fZW5kUG9zaXRpb24gPSAlZCwgbV9jYWNoZWRFbmRQb3NpdGlvbiA9ICVkLCBtX2VuZE9mUmFu
Z2UgPSAlZCIKKyAgICAgICAgLCBET01TdXBwb3J0OjpvZmZzZXRGcm9tU3RhcnRPZkJsb2NrKG1f
c3RhcnRQb3NpdGlvbikKKyAgICAgICAgLCBET01TdXBwb3J0OjpvZmZzZXRGcm9tU3RhcnRPZkJs
b2NrKG1fZW5kUG9zaXRpb24pCisgICAgICAgICwgRE9NU3VwcG9ydDo6b2Zmc2V0RnJvbVN0YXJ0
T2ZCbG9jayhtX2NhY2hlZEVuZFBvc2l0aW9uKQorICAgICAgICAsIERPTVN1cHBvcnQ6Om9mZnNl
dEZyb21TdGFydE9mQmxvY2sobV9lbmRPZlJhbmdlKSk7CisKKyAgICBpZiAobV9zdGFydFBvc2l0
aW9uID09IG1fZW5kT2ZSYW5nZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPFJhbmdl
PiByYW5nZUZvclNwZWxsQ2hlY2tpbmcgPSBtYWtlUmFuZ2UobV9zdGFydFBvc2l0aW9uLCBtX2Vu
ZFBvc2l0aW9uKTsKICAgICBpZiAoIXJhbmdlRm9yU3BlbGxDaGVja2luZykgewogICAgICAgICBT
cGVsbGluZ0xvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiU3BlbGxpbmdIYW5kbGVyOjpwYXJz
ZUJsb2NrRm9yU3BlbGxDaGVja2luZyBGYWlsZWQgdG8gc2V0IHRleHQgcmFuZ2UgZm9yIHNwZWxs
Y2hlY2tpbmcuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAocmFuZ2VGb3JT
cGVsbENoZWNraW5nLT50ZXh0KCkubGVuZ3RoKCkgPCBNYXhTcGVsbENoZWNraW5nU3RyaW5nTGVu
Z3RoKSB7Ci0gICAgICAgIGlmIChtX2VuZE9mQ3VycmVudExpbmUgPT0gbV9lbmRPZlJhbmdlKSB7
Ci0gICAgICAgICAgICBjcmVhdGVTcGVsbENoZWNrUmVxdWVzdChyYW5nZUZvclNwZWxsQ2hlY2tp
bmcsIG1fdGV4dENoZWNraW5nUHJvY2Vzc1R5cGUpOworICAgICAgICBpZiAobV9lbmRQb3NpdGlv
biA9PSBtX2VuZE9mUmFuZ2UgfHwgbV9jYWNoZWRFbmRQb3NpdGlvbiA9PSBtX2VuZFBvc2l0aW9u
KSB7CisgICAgICAgICAgICBjcmVhdGVTcGVsbENoZWNrUmVxdWVzdChyYW5nZUZvclNwZWxsQ2hl
Y2tpbmcpOwogICAgICAgICAgICAgbV9pc1NwZWxsQ2hlY2tBY3RpdmUgPSBmYWxzZTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBtX2VuZE9mQ3VycmVudExpbmUgPSBl
bmRPZkxpbmUobmV4dExpbmVQb3NpdGlvbihtX2VuZE9mQ3VycmVudExpbmUsIG1fZW5kT2ZDdXJy
ZW50TGluZS5saW5lRGlyZWN0aW9uUG9pbnRGb3JCbG9ja0RpcmVjdGlvbk5hdmlnYXRpb24oKSkp
OworCisgICAgICAgIGluY3JlbWVudFNlbnRpbmVscyhmYWxzZSAvKiBzaG91bGRJbmNyZW1lbnRT
dGFydFBvc2l0aW9uICovKTsKICAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3Qoc190aW1lb3V0
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCB3b3Jk
cyBmcm9tIHRoZSBzdGFydCBvZiB0aGUgbGluZSB0byB0aGUgZW5kLgotICAgIHJhbmdlRm9yU3Bl
bGxDaGVja2luZyA9IGdldFJhbmdlRm9yU3BlbGxDaGVja1dpdGhGaW5lR3JhbnVsYXJpdHkobV9z
dGFydE9mQ3VycmVudExpbmUsIG1fZW5kT2ZDdXJyZW50TGluZSk7Ci0gICAgaWYgKCFyYW5nZUZv
clNwZWxsQ2hlY2tpbmcpCi0gICAgICAgIHJldHVybjsKKyAgICAvLyBDcmVhdGUgYSBzcGVsbGNo
ZWNrIHJlcXVlc3Qgd2l0aCB0aGUgc3Vic3RyaW5nIGlmIHdlIGhhdmUgYSByYW5nZSB0aGF0IGlz
IG9mIHNpemUgbGVzcyB0aGFuIE1heFNwZWxsQ2hlY2tpbmdTdHJpbmdMZW5ndGgKKyAgICBpZiAo
cmFuZ2VGb3JTcGVsbENoZWNraW5nID0gaGFuZGxlT3ZlcnNpemVkUmFuZ2UoKSkKKyAgICAgICAg
Y3JlYXRlU3BlbGxDaGVja1JlcXVlc3QocmFuZ2VGb3JTcGVsbENoZWNraW5nKTsKIAotICAgIG1f
c3RhcnRPZkN1cnJlbnRMaW5lID0gVmlzaWJsZVBvc2l0aW9uKHJhbmdlRm9yU3BlbGxDaGVja2lu
Zy0+ZW5kUG9zaXRpb24oKSk7Ci0gICAgbV9lbmRPZkN1cnJlbnRMaW5lID0gZW5kT2ZMaW5lKG1f
c3RhcnRPZkN1cnJlbnRMaW5lKTsKLQotICAgIC8vIENhbGwgc3BlbGxjaGVjayB3aXRoIHN1YnN0
cmluZy4KLSAgICBjcmVhdGVTcGVsbENoZWNrUmVxdWVzdChyYW5nZUZvclNwZWxsQ2hlY2tpbmcs
IG1fdGV4dENoZWNraW5nUHJvY2Vzc1R5cGUpOwogICAgIGlmIChpc1NwZWxsQ2hlY2tBY3RpdmUo
KSkKICAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3Qoc190aW1lb3V0KTsKIH0KIAotUGFzc1Jl
ZlB0cjxSYW5nZT4gU3BlbGxpbmdIYW5kbGVyOjpnZXRSYW5nZUZvclNwZWxsQ2hlY2tXaXRoRmlu
ZUdyYW51bGFyaXR5KFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uLCBXZWJD
b3JlOjpWaXNpYmxlUG9zaXRpb24gZW5kUG9zaXRpb24pCitQYXNzUmVmUHRyPFJhbmdlPiBTcGVs
bGluZ0hhbmRsZXI6OmhhbmRsZU92ZXJzaXplZFJhbmdlKCkKIHsKLSAgICBTcGVsbGluZ0xvZyhQ
bGF0Zm9ybTo6TG9nTGV2ZWxXYXJuLCAiU3BlbGxpbmdIYW5kbGVyOjpnZXRSYW5nZUZvclNwZWxs
Q2hlY2tXaXRoRmluZUdyYW51bGFyaXR5Iik7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIGVuZE9mQ3Vy
cmVudFdvcmQgPSBlbmRPZldvcmQoc3RhcnRQb3NpdGlvbik7Ci0gICAgUmVmUHRyPFJhbmdlPiBj
dXJyZW50UmFuZ2U7Ci0KLSAgICAvLyBLZWVwIGl0ZXJhdGluZyB1bnRpbCBvbmUgb2Ygb3VyIGNh
c2VzIGlzIGhpdCwgb3Igd2UndmUgaW5jcmVtZW50ZWQgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uIHJp
Z2h0IHRvIHRoZSBlbmQuCi0gICAgd2hpbGUgKHN0YXJ0UG9zaXRpb24gIT0gZW5kUG9zaXRpb24p
IHsKLSAgICAgICAgY3VycmVudFJhbmdlID0gbWFrZVJhbmdlKHN0YXJ0UG9zaXRpb24sIGVuZE9m
Q3VycmVudFdvcmQpOwotICAgICAgICBpZiAoIWN1cnJlbnRSYW5nZSkKLSAgICAgICAgICAgIHJl
dHVybiAwOwotCi0gICAgICAgIC8vIENoZWNrIHRoZSB0ZXh0IGxlbmd0aCB3aXRoaW4gdGhpcyBy
YW5nZS4KLSAgICAgICAgaWYgKGN1cnJlbnRSYW5nZS0+dGV4dCgpLmxlbmd0aCgpID49IE1heFNw
ZWxsQ2hlY2tpbmdTdHJpbmdMZW5ndGgpIHsKLSAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgbm90
IHRoZSBmaXJzdCB3b3JkLCByZXR1cm4gYSBSYW5nZSB3aXRoIGVuZCBib3VuZGFyeSBzZXQgdG8g
dGhlIHByZXZpb3VzIHdvcmQuCi0gICAgICAgICAgICBpZiAoc3RhcnRPZldvcmQoZW5kT2ZDdXJy
ZW50V29yZCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpICE9IHN0YXJ0UG9zaXRpb24gJiYgIURPTVN1
cHBvcnQ6OmlzRW1wdHlSYW5nZU9yQWxsU3BhY2VzKHN0YXJ0UG9zaXRpb24sIGVuZE9mQ3VycmVu
dFdvcmQpKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2hlbiBhIHNlcmllcyBvZiB3aGl0ZXNwYWNl
IGZvbGxvd3MgYSB3b3JkLCBwcmV2aW91c1dvcmRQb3NpdGlvbiB3aWxsIGp1bXAgcGFzc2VkIGFs
bCBvZiB0aGVtLCBhbmQgdXNpbmcgTGVmdFdvcmRJZk9uQm91bmRhcnkgYnJpbmdzIHVzIHRvCi0g
ICAgICAgICAgICAgICAgLy8gb3VyIHN0YXJ0aW5nIHBvc2l0aW9uLiBDaGVjayBmb3IgdGhpcyBj
YXNlIGFuZCB1c2UgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5IHRvIGp1bXAgYmFjayBvdmVyIHRoZSB3
b3JkLgotICAgICAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBlbmRPZlByZXZpb3VzV29yZCA9
IGVuZE9mV29yZChwcmV2aW91c1dvcmRQb3NpdGlvbihlbmRPZkN1cnJlbnRXb3JkKSwgTGVmdFdv
cmRJZk9uQm91bmRhcnkpOwotICAgICAgICAgICAgICAgIGlmIChzdGFydFBvc2l0aW9uID09IGVu
ZE9mUHJldmlvdXNXb3JkKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVJhbmdlKHN0
YXJ0UG9zaXRpb24sIGVuZE9mV29yZChwcmV2aW91c1dvcmRQb3NpdGlvbihlbmRPZkN1cnJlbnRX
b3JkKSwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1h
a2VSYW5nZShzdGFydFBvc2l0aW9uLCBlbmRPZlByZXZpb3VzV29yZCk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICAvLyBPdXIgZmlyc3Qgd29yZCBoYXMgZ29uZSBvdmVyIHRoZSBjaGFyYWN0
ZXIgbGltaXQuIEluY3JlbWVudCB0aGUgc3RhcnRpbmcgcG9zaXRpb24gcGFzdCBhbiB1bmNoZWNr
YWJsZSB3b3JkLgotICAgICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IGVuZE9mQ3VycmVudFdvcmQ7
Ci0gICAgICAgICAgICBlbmRPZkN1cnJlbnRXb3JkID0gZW5kT2ZXb3JkKG5leHRXb3JkUG9zaXRp
b24oZW5kT2ZDdXJyZW50V29yZCkpOwotICAgICAgICB9IGVsc2UgaWYgKGVuZE9mQ3VycmVudFdv
cmQgPT0gZW5kUG9zaXRpb24pCi0gICAgICAgICAgICByZXR1cm4gbWFrZVJhbmdlKHN0YXJ0UG9z
aXRpb24sIGVuZFBvc2l0aW9uKTsgLy8gUmV0dXJuIHRoZSBsYXN0IHNlZ21lbnQgaWYgdGhlIGVu
ZCBvZiBvdXIgd29yZCBsaWVzIGF0IHRoZSBlbmQgb2YgdGhlIHJhbmdlLgotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBlbmRPZkN1cnJlbnRXb3JkID0gZW5kT2ZXb3JkKG5leHRXb3JkUG9zaXRp
b24oZW5kT2ZDdXJyZW50V29yZCkpOyAvLyBJbmNyZW1lbnQgdGhlIGN1cnJlbnQgd29yZC4KKyAg
ICBTcGVsbGluZ0xvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiU3BlbGxpbmdIYW5kbGVyOjpo
YW5kbGVPdmVyc2l6ZWRSYW5nZSIpOworCisgICAgaWYgKG1fc3RhcnRQb3NpdGlvbiA9PSBtX2Nh
Y2hlZEVuZFBvc2l0aW9uIHx8IG1fc3RhcnRQb3NpdGlvbiA9PSBzdGFydE9mV29yZChtX2VuZFBv
c2l0aW9uLCBMZWZ0V29yZElmT25Cb3VuZGFyeSkpIHsKKyAgICAgICAgLy8gT3VyIGZpcnN0IHdv
cmQgaGFzIGdvbmUgb3ZlciB0aGUgY2hhcmFjdGVyIGxpbWl0LiBJbmNyZW1lbnQgdGhlIHN0YXJ0
aW5nIHBvc2l0aW9uIHBhc3QgYW4gdW5jaGVja2FibGUgd29yZC4KKyAgICAgICAgaW5jcmVtZW50
U2VudGluZWxzKHRydWUgLyogc2hvdWxkSW5jcmVtZW50U3RhcnRQb3NpdGlvbiAqLyk7CisgICAg
ICAgIHJldHVybiAwOwogICAgIH0KLSAgICAvLyBUaGlzIHdpbGwgcmV0dXJuIGFuIHJhbmdlIHdp
dGggbm8gc3RyaW5nLCBidXQgYWxsb3dzIHByb2Nlc3NpbmcgdG8gY29udGludWUKLSAgICByZXR1
cm4gbWFrZVJhbmdlKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKKworICAgIC8vIElmIHRo
aXMgaXMgbm90IHRoZSBmaXJzdCB3b3JkLCByZXR1cm4gYSBSYW5nZSB3aXRoIGVuZCBib3VuZGFy
eSBzZXQgdG8gdGhlIHByZXZpb3VzIHdvcmQuCisgICAgUmVmUHRyPFJhbmdlPiByYW5nZVRvU3Rh
cnRPZk92ZXJzaXplZFdvcmQgPSBtYWtlUmFuZ2UobV9zdGFydFBvc2l0aW9uLCBtX2NhY2hlZEVu
ZFBvc2l0aW9uKTsKKyAgICAvLyBXZSd2ZSBjcmVhdGVkIHRoZSByYW5nZSB1c2luZyB0aGUgY2Fj
aGVkIGVuZCBwb3NpdGlvbi4gTm93IGluY3JlbWVudCB0aGUgc2VudGluYWxzIGZvcndhcmQuCisg
ICAgLy8gRklYTUUgSW5jcmVtZW50aW5nIHRoZSBzdGFydC9lbmQgcG9zaXRpb25zIG91dHNpZGUg
b2YgaW5jcmVtZW50U2VudGluZWxzCisgICAgbV9zdGFydFBvc2l0aW9uID0gbV9jYWNoZWRFbmRQ
b3NpdGlvbjsKKyAgICBtX2VuZFBvc2l0aW9uID0gZW5kT2ZXb3JkKG1fc3RhcnRQb3NpdGlvbik7
CisgICAgcmV0dXJuIHJhbmdlVG9TdGFydE9mT3ZlcnNpemVkV29yZDsKK30KKwordm9pZCBTcGVs
bGluZ0hhbmRsZXI6OmluY3JlbWVudFNlbnRpbmVscyhjb25zdCBib29sIHNob3VsZEluY3JlbWVu
dFN0YXJ0UG9zaXRpb24pCit7CisgICAgU3BlbGxpbmdMb2coUGxhdGZvcm06OkxvZ0xldmVsSW5m
bywgIlNwZWxsaW5nSGFuZGxlcjo6aW5jcmVtZW50U2VudGluZWxzIHNob3VsZEluY3JlbWVudFN0
YXJ0UG9zaXRpb24gJXMiLCBzaG91bGRJbmNyZW1lbnRTdGFydFBvc2l0aW9uID8gInRydWUiIDog
ImZhbHNlIik7CisKKyAgICBpZiAoc2hvdWxkSW5jcmVtZW50U3RhcnRQb3NpdGlvbikKKyAgICAg
ICAgbV9zdGFydFBvc2l0aW9uID0gbV9lbmRQb3NpdGlvbjsKKworICAgIFZpc2libGVQb3NpdGlv
biBuZXh0V29yZCA9IG5leHRXb3JkUG9zaXRpb24obV9lbmRQb3NpdGlvbik7CisgICAgVmlzaWJs
ZVBvc2l0aW9uIHN0YXJ0T2ZOZXh0V29yZCA9IHN0YXJ0T2ZXb3JkKG5leHRXb3JkLCBMZWZ0V29y
ZElmT25Cb3VuZGFyeSk7CisgICAgaWYgKERPTVN1cHBvcnQ6OmlzUmFuZ2VUZXh0QWxsV2hpdGVz
cGFjZShtX2VuZFBvc2l0aW9uLCBzdGFydE9mTmV4dFdvcmQpKSB7CisgICAgICAgIG1fY2FjaGVk
RW5kUG9zaXRpb24gPSBzdGFydE9mTmV4dFdvcmQ7CisgICAgICAgIG1fZW5kUG9zaXRpb24gPSBl
bmRPZldvcmQoc3RhcnRPZk5leHRXb3JkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IG1fY2FjaGVkRW5kUG9zaXRpb24gPSBtX2VuZFBvc2l0aW9uOworICAgIG1fZW5kUG9zaXRpb24g
PSBlbmRPZldvcmQobmV4dFdvcmQpOwogfQogCiB9IC8vIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvU3BlbGxpbmdIYW5kbGVyLmggYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9TcGVsbGluZ0hhbmRsZXIuaApp
bmRleCAyMmE5MDUyNTVlMDNiN2M1MzhjZGZjNDc1NDJkNGM2ZmQ4OTAzYzA5Li4zYjczYzBiZGFh
ZDc3MDYyOWQ5OWM5ZWUyNmZiZDU1ODNkOTZmMTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9TcGVsbGluZ0hhbmRsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9TcGVsbGluZ0hhbmRsZXIuaApAQCAtMzAs
MjEgKzMwLDIzIEBAIHB1YmxpYzoKICAgICBTcGVsbGluZ0hhbmRsZXIoSW5wdXRIYW5kbGVyKik7
CiAgICAgflNwZWxsaW5nSGFuZGxlcigpOwogCi0gICAgdm9pZCBzcGVsbENoZWNrVGV4dEJsb2Nr
KFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24mLCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdQcm9jZXNz
VHlwZSk7CisgICAgdm9pZCBzcGVsbENoZWNrVGV4dEJsb2NrKGNvbnN0IFdlYkNvcmU6OlZpc2li
bGVTZWxlY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSk7CiAg
ICAgYm9vbCBpc1NwZWxsQ2hlY2tBY3RpdmUoKSB7IHJldHVybiBtX2lzU3BlbGxDaGVja0FjdGl2
ZTsgfQotICAgIHZvaWQgc2V0U3BlbGxDaGVja0FjdGl2ZShib29sIGFjdGl2ZSkgeyBtX2lzU3Bl
bGxDaGVja0FjdGl2ZSA9IGFjdGl2ZTsgfQorICAgIHZvaWQgc2V0U3BlbGxDaGVja0FjdGl2ZShj
b25zdCBib29sIGFjdGl2ZSkgeyBtX2lzU3BlbGxDaGVja0FjdGl2ZSA9IGFjdGl2ZTsgfQogCiBw
cml2YXRlOgotICAgIHZvaWQgY3JlYXRlU3BlbGxDaGVja1JlcXVlc3QoUGFzc1JlZlB0cjxXZWJD
b3JlOjpSYW5nZT4gcmFuZ2VGb3JTcGVsbENoZWNraW5nUHRyLCBXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdQcm9jZXNzVHlwZSk7CisgICAgdm9pZCBjcmVhdGVTcGVsbENoZWNrUmVxdWVzdChQYXNzUmVm
UHRyPFdlYkNvcmU6OlJhbmdlPiByYW5nZUZvclNwZWxsQ2hlY2tpbmdQdHIpOwogICAgIHZvaWQg
cGFyc2VCbG9ja0ZvclNwZWxsQ2hlY2tpbmcoV2ViQ29yZTo6VGltZXI8U3BlbGxpbmdIYW5kbGVy
PiopOwotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IGdldFJhbmdlRm9yU3BlbGxDaGVj
a1dpdGhGaW5lR3JhbnVsYXJpdHkoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRp
b24sIFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbiBlbmRQb3NpdGlvbik7CisgICAgdm9pZCBpbmNy
ZW1lbnRTZW50aW5lbHMoY29uc3QgYm9vbCBzaG91bGRJbmNyZW1lbnRTdGFydFBvc2l0aW9uKTsK
KyAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBoYW5kbGVPdmVyc2l6ZWRSYW5nZSgpOwog
CiAgICAgSW5wdXRIYW5kbGVyKiBtX2lucHV0SGFuZGxlcjsKIAogICAgIFdlYkNvcmU6OlRpbWVy
PFNwZWxsaW5nSGFuZGxlcj4gbV90aW1lcjsKLSAgICBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24g
bV9zdGFydE9mQ3VycmVudExpbmU7Ci0gICAgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIG1fZW5k
T2ZDdXJyZW50TGluZTsKLSAgICBXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uIG1fZW5kT2ZSYW5n
ZTsKKyAgICBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24gbV9zdGFydFBvc2l0aW9uOworICAgIFdl
YkNvcmU6OlZpc2libGVQb3NpdGlvbiBtX2VuZFBvc2l0aW9uOworICAgIFdlYkNvcmU6OlZpc2li
bGVQb3NpdGlvbiBtX2NhY2hlZEVuZFBvc2l0aW9uOworICAgIFdlYkNvcmU6OlZpc2libGVQb3Np
dGlvbiBtX2VuZE9mUmFuZ2U7CiAgICAgV2ViQ29yZTo6VGV4dENoZWNraW5nUHJvY2Vzc1R5cGUg
bV90ZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZTsKICAgICBib29sIG1faXNTcGVsbENoZWNrQWN0aXZl
OwogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189150</attachid>
            <date>2013-02-19 13:16:40 -0800</date>
            <delta_ts>2013-02-19 13:27:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110253-20130219160637.patch</filename>
            <type>text/plain</type>
            <size>22379</size>
            <attacher name="Nima Ghanavatian">nghanavatian</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCA4ZDc5NDhiMjI4MThjNDNjNjEzNjBhMDQwY2E0YWQwYTEyYzA3ODdmLi45MTlmYzI1N2Jj
YjhjYzI3Yzg0YmIxMjY1ZmY3ZTQ4Nzk1ODQ5YWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMy0wMi0xMiAgTmltYSBHaGFuYXZhdGlhbiAgPG5n
aGFuYXZhdGlhbkByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBBcHByb3ByaWF0ZWx5
IGhhbmRsZSB3b3JkIHdyYXBwaW5nIGluIFNwZWxsaW5nSGFuZGxlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjUzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUFIyODYwMDEKKyAgICAgICAgU2luY2Ug
d2UgdHJhdmVyc2UgdGhyb3VnaCB0ZXh0IGJ5IHZpc3VhbCBsaW5lcyBpbnN0ZWFkIG9mIGJsb2Nr
cywgd29yZCB3cmFwcGluZyBjYXVzZXMgc29tZQorICAgICAgICBiYWQgYmVoYXZpb3IuIENoYW5n
aW5nIHRoZSB3YXkgd2UgdHJhdmVyc2UgdGV4dCB0byBqdW1wIGJ5IHdvcmRzIGluc3RlYWQgb2Yg
bGluZXMuIFRoaXMgd2lsbAorICAgICAgICBtZWFuIGl0IHRha2VzIGxvbmdlciB0byBmaW5pc2gg
c3BlbGxjaGVja2luZywgYnV0IHRoZSByZW1vdmFsIG9mIGFueSBsb29wcyBhbGxvd3Mgd2Via2l0
CisgICAgICAgIHByb2Nlc3NpbmcgdG8gY29udGludWUuIFRoaXMgZ2l2ZXMgcHJpb3JpdHkgdG8g
dXNlciBhY3Rpb25zIHdoaWxlIHN0aWxsIGNvbXBsZXRpbmcgYSBsYXJnZQorICAgICAgICBwYXJh
Z3JhcGggaW4gYSByZWFzb25hYmxlIGFtb3VudCBvZiB0aW1lLgorCisgICAgICAgIEludGVybmFs
bHkgcmV2aWV3ZWQgYnkgTWlrZSBGZW50b24KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvSW5w
dXRIYW5kbGVyLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVy
OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9TcGVs
bGluZ0hhbmRsZXIuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpTcGVsbGluZ0hh
bmRsZXI6OmNyZWF0ZVNwZWxsQ2hlY2tSZXF1ZXN0KToKKyAgICAgICAgKEJsYWNrQmVycnk6Oldl
YktpdDo6U3BlbGxpbmdIYW5kbGVyOjpwYXJzZUJsb2NrRm9yU3BlbGxDaGVja2luZyk6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlNwZWxsaW5nSGFuZGxlcjo6Z2V0UmFuZ2VGb3JTcGVs
bENoZWNrV2l0aEZpbmVHcmFudWxhcml0eSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OlNwZWxsaW5nSGFuZGxlcjo6c3RhcnRPZk5leHRXb3JkKToKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlNwZWxsaW5nSGFuZGxlcjo6aW5jcmVtZW50QnlX
b3JkKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6U3BlbGxpbmdIYW5kbGVyOjpkb2Vz
V29yZFdyYXApOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvU3BlbGxpbmdIYW5kbGVyLmg6Cisg
ICAgICAgIChTcGVsbGluZ0hhbmRsZXIpOgorCiAyMDEzLTAyLTE4ICBTaW1vbiBGcmFzZXIgIDxz
aW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIENsZWFuIHVwIHRoZSBib29sZWFuIGFy
Z3VtZW50IHRvIHZpc2libGVDb250ZW50UmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcAppbmRleCBjOTg2NGE3OWI2ODcy
MWRiOGQ0YjdmY2NhMzI0NmQ3OTgyYTNlMzI0Li4zNTEwZDg4OWU5OGQ0ZjNiMWFlYjk4MzcyMjgw
ZWMxMDY3NGNlNDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0
U3VwcG9ydC9ET01TdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
S2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcApAQCAtNTA4LDYgKzUwOCw0NiBAQCBWaXNpYmxlU2Vs
ZWN0aW9uIHZpc2libGVTZWxlY3Rpb25Gb3JDbG9zZXN0QWN0dWFsV29yZFN0YXJ0KGNvbnN0IFZp
c2libGVTZWxlY3RpbwogICAgIHJldHVybiBzZWxlY3Rpb247CiB9CiAKK2ludCBvZmZzZXRGcm9t
U3RhcnRPZkJsb2NrKGNvbnN0IFZpc2libGVQb3NpdGlvbiBvZmZzZXQpCit7CisgICAgUmVmUHRy
PFJhbmdlPiByYW5nZSA9IG1ha2VSYW5nZShzdGFydE9mQmxvY2sob2Zmc2V0KSwgb2Zmc2V0KTsK
KyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gcmFuZ2Ut
PnRleHQoKS5sYXRpbjEoKS5sZW5ndGgoKTsKK30KKworVmlzaWJsZVNlbGVjdGlvbiB2aXNpYmxl
U2VsZWN0aW9uRm9yRm9jdXNlZEJsb2NrKEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgaW50IHRl
eHRMZW5ndGggPSBpbnB1dEVsZW1lbnRUZXh0KGVsZW1lbnQpLmxlbmd0aCgpOworCisgICAgaWYg
KERPTVN1cHBvcnQ6OnRvVGV4dENvbnRyb2xFbGVtZW50KGVsZW1lbnQpKSB7CisgICAgICAgIFJl
bmRlclRleHRDb250cm9sKiB0ZXh0UmVuZGVyID0gdG9SZW5kZXJUZXh0Q29udHJvbChlbGVtZW50
LT5yZW5kZXJlcigpKTsKKyAgICAgICAgaWYgKCF0ZXh0UmVuZGVyKQorICAgICAgICAgICAgcmV0
dXJuIFZpc2libGVTZWxlY3Rpb24oKTsKKworICAgICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRQ
b3NpdGlvbiA9IHRleHRSZW5kZXItPnZpc2libGVQb3NpdGlvbkZvckluZGV4KDApOworICAgICAg
ICBWaXNpYmxlUG9zaXRpb24gZW5kUG9zaXRpb247CisKKyAgICAgICAgaWYgKHRleHRMZW5ndGgp
CisgICAgICAgICAgICBlbmRQb3NpdGlvbiA9IHRleHRSZW5kZXItPnZpc2libGVQb3NpdGlvbkZv
ckluZGV4KHRleHRMZW5ndGgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlbmRQb3NpdGlv
biA9IHN0YXJ0UG9zaXRpb247CisgICAgICAgIHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0
UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKKyAgICB9CisKKyAgICAvLyBNdXN0IGJlIGNvbnRlbnQg
ZWRpdGFibGUsIGdlbmVyYXRlIHRoZSByYW5nZS4KKyAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGlv
blJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChlbGVtZW50
LCAwLCB0ZXh0TGVuZ3RoKTsKKworICAgIGlmICghc2VsZWN0aW9uUmFuZ2UpCisgICAgICAgIHJl
dHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7CisKKyAgICBpZiAoIXRleHRMZW5ndGgpCisgICAgICAg
IHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKHNlbGVjdGlvblJhbmdlLT5zdGFydFBvc2l0aW9uKCks
IERPV05TVFJFQU0pOworCisgICAgcmV0dXJuIFZpc2libGVTZWxlY3Rpb24oc2VsZWN0aW9uUmFu
Z2UtPnN0YXJ0UG9zaXRpb24oKSwgc2VsZWN0aW9uUmFuZ2UtPmVuZFBvc2l0aW9uKCkpOworfQor
CiAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNvcGllZCBmcm9tIFdlYkNvcmUvcGFnZS9QYWdlLmNwcC4K
IEZyYW1lKiBpbmNyZW1lbnRGcmFtZShGcmFtZSogY3VyciwgYm9vbCBmb3J3YXJkLCBib29sIHdy
YXBGbGFnKQogewpAQCAtNTIzLDcgKzU2Myw3IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IHRyaW1XaGl0
ZXNwYWNlRnJvbVJhbmdlKFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlKQogCiBQYXNzUmVmUHRyPFJh
bmdlPiB0cmltV2hpdGVzcGFjZUZyb21SYW5nZShWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlv
biwgVmlzaWJsZVBvc2l0aW9uIGVuZFBvc2l0aW9uKQogewotICAgIGlmIChpc0VtcHR5UmFuZ2VP
ckFsbFNwYWNlcyhzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbikpCisgICAgaWYgKHN0YXJ0UG9z
aXRpb24gPT0gZW5kUG9zaXRpb24gfHwgaXNSYW5nZVRleHRBbGxXaGl0ZXNwYWNlKHN0YXJ0UG9z
aXRpb24sIGVuZFBvc2l0aW9uKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICB3aGlsZSAoaXNX
aGl0ZXNwYWNlKHN0YXJ0UG9zaXRpb24uY2hhcmFjdGVyQWZ0ZXIoKSkpCkBAIC01MzUsMTEgKzU3
NSw4IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IHRyaW1XaGl0ZXNwYWNlRnJvbVJhbmdlKFZpc2libGVQ
b3NpdGlvbiBzdGFydFBvc2l0aW9uLCBWaXNpYmxlCiAgICAgcmV0dXJuIG1ha2VSYW5nZShzdGFy
dFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7CiB9CiAKLWJvb2wgaXNFbXB0eVJhbmdlT3JBbGxTcGFj
ZXMoVmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24sIFZpc2libGVQb3NpdGlvbiBlbmRQb3Np
dGlvbikKK2Jvb2wgaXNSYW5nZVRleHRBbGxXaGl0ZXNwYWNlKFZpc2libGVQb3NpdGlvbiBzdGFy
dFBvc2l0aW9uLCBWaXNpYmxlUG9zaXRpb24gZW5kUG9zaXRpb24pCiB7Ci0gICAgaWYgKHN0YXJ0
UG9zaXRpb24gPT0gZW5kUG9zaXRpb24pCi0gICAgICAgIHJldHVybiB0cnVlOwotCiAgICAgd2hp
bGUgKGlzV2hpdGVzcGFjZShzdGFydFBvc2l0aW9uLmNoYXJhY3RlckFmdGVyKCkpKSB7CiAgICAg
ICAgIHN0YXJ0UG9zaXRpb24gPSBzdGFydFBvc2l0aW9uLm5leHQoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5oIGIvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5oCmluZGV4IDFl
ODhhYjUwYjhjODEzNDg2ZjJlYTYwOTVmOGMzYjkxYTdkMGYyNjQuLmM4ZDdjMDhhODY4NTNjN2Iy
NzdiOTRkMjYxNTU0YTQ1YWRmZjg5NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L0RPTVN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0LmgKQEAgLTkwLDEyICs5MCwxNCBAQCBXZWJD
b3JlOjpJbnRQb2ludCBjb252ZXJ0UG9pbnRUb0ZyYW1lKGNvbnN0IFdlYkNvcmU6OkZyYW1lKiBz
b3VyY2VGcmFtZSwgY29uc3QgVwogc3RhdGljIGNvbnN0IFdlYkNvcmU6OkludFBvaW50IEludmFs
aWRQb2ludCA9IFdlYkNvcmU6OkludFBvaW50KC0xLCAtMSk7CiAKIFdlYkNvcmU6OlZpc2libGVT
ZWxlY3Rpb24gdmlzaWJsZVNlbGVjdGlvbkZvckNsb3Nlc3RBY3R1YWxXb3JkU3RhcnQoY29uc3Qg
V2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiYpOworV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiB2
aXNpYmxlU2VsZWN0aW9uRm9yRm9jdXNlZEJsb2NrKFdlYkNvcmU6OkVsZW1lbnQqKTsKK2ludCBv
ZmZzZXRGcm9tU3RhcnRPZkJsb2NrKGNvbnN0IFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbiBvZmZz
ZXQpOwogCiBXZWJDb3JlOjpGcmFtZSogaW5jcmVtZW50RnJhbWUoV2ViQ29yZTo6RnJhbWUqIGN1
cnIsIGJvb2wgZm9yd2FyZCwgYm9vbCB3cmFwRmxhZyk7CiAKIFBhc3NSZWZQdHI8V2ViQ29yZTo6
UmFuZ2U+IHRyaW1XaGl0ZXNwYWNlRnJvbVJhbmdlKFBhc3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+
KTsKIFBhc3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IHRyaW1XaGl0ZXNwYWNlRnJvbVJhbmdlKFdl
YkNvcmU6OlZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uLCBXZWJDb3JlOjpWaXNpYmxlUG9z
aXRpb24gZW5kUG9zaXRpb24pOwotYm9vbCBpc0VtcHR5UmFuZ2VPckFsbFNwYWNlcyhXZWJDb3Jl
OjpWaXNpYmxlUG9zaXRpb24sIFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbik7Citib29sIGlzUmFu
Z2VUZXh0QWxsV2hpdGVzcGFjZShXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlv
biwgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIGVuZFBvc2l0aW9uKTsKIAogYm9vbCBpc0ZpeGVk
UG9zaXRpb25Pckhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihXZWJDb3JlOjpSZW5kZXJPYmplY3Qq
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
SW5wdXRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0
L0lucHV0SGFuZGxlci5jcHAKaW5kZXggZWM5NmZkYTgxNGQyNzE1MzIyNmQwYTQ5YzA5ZmE1N2M5
MjVlODQ4Zi4uYTUyMDk3YTU0YTMzMWQyNDViYmE3YWI2ZTQyODhlZWEyMGRlYzQ4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1dEhh
bmRsZXIuY3BwCkBAIC02MTIsMTcgKzYxMiwyMCBAQCB2b2lkIElucHV0SGFuZGxlcjo6cmVxdWVz
dENoZWNraW5nT2ZTdHJpbmcoUGFzc1JlZlB0cjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHJlcXVlc3RMZW5ndGggPiBNYXhTcGVs
bENoZWNraW5nU3RyaW5nTGVuZ3RoKSB7CisgICAgaWYgKHJlcXVlc3RMZW5ndGggPj0gTWF4U3Bl
bGxDaGVja2luZ1N0cmluZ0xlbmd0aCkgewogICAgICAgICAvLyBCYXRjaCByZXF1ZXN0cyB3aGlj
aCBhcmUgZ2VuZXJhbGx5IGNyZWF0ZWQgYnkgdXMgb24gZm9jdXMsIHNob3VsZCBub3QgZXhjZWVk
IHRoaXMgbGltaXQuIENoZWNrIHRoYXQgdGhpcyBpcyBpbiBmYWN0IG9mIEluY3JlbWVudGFsIHR5
cGUuCiAgICAgICAgIEFTU0VSVCh0ZXh0Q2hlY2tpbmdSZXF1ZXN0LT5wcm9jZXNzVHlwZSgpID09
IFRleHRDaGVja2luZ1Byb2Nlc3NJbmNyZW1lbnRhbCk7CiAKICAgICAgICAgLy8gQ2FuY2VsIHRo
aXMgcmVxdWVzdCBhbmQgc2VuZCBpdCBvZmYgaW4gbmV3bHkgY3JlYXRlZCBjaHVua3MuCiAgICAg
ICAgIG1fcmVxdWVzdC0+ZGlkQ2FuY2VsKCk7CiAgICAgICAgIGlmIChtX2N1cnJlbnRGb2N1c0Vs
ZW1lbnQtPmRvY3VtZW50KCkgJiYgbV9jdXJyZW50Rm9jdXNFbGVtZW50LT5kb2N1bWVudCgpLT5m
cmFtZSgpICYmIG1fY3VycmVudEZvY3VzRWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+c2Vs
ZWN0aW9uKCkpIHsKLSAgICAgICAgICAgIC8vIENvbnZlcnQgZnJvbSBwb3NpdGlvbiBiYWNrIHRv
IHNlbGVjdGlvbiBzbyB3ZSBjYW4gZXhwYW5kIHRoZSByYW5nZSB0byBpbmNsdWRlIHRoZSBwcmV2
aW91cyBsaW5lLiBUaGlzIHNob3VsZCBoYW5kbGUgY2FzZXMgd2hlbiB0aGUgdXNlciBoaXRzCi0g
ICAgICAgICAgICAvLyBlbnRlciB0byBmaW5pc2ggY29tcG9zaW5nIGEgd29yZCBhbmQgY3JlYXRl
IGEgbmV3IGxpbmUuCiAgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gY2FyZXRQb3NpdGlvbiA9
IG1fY3VycmVudEZvY3VzRWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+c2VsZWN0aW9uKCkt
PnN0YXJ0KCk7Ci0gICAgICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIHZpc2libGVTZWxlY3Rpb24g
PSBWaXNpYmxlU2VsZWN0aW9uKHByZXZpb3VzTGluZVBvc2l0aW9uKGNhcmV0UG9zaXRpb24sIGNh
cmV0UG9zaXRpb24ubGluZURpcmVjdGlvblBvaW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZpZ2F0aW9u
KCkpLCBjYXJldFBvc2l0aW9uKTsKKyAgICAgICAgICAgIC8vIENvbnZlcnQgZnJvbSBwb3NpdGlv
biBiYWNrIHRvIHNlbGVjdGlvbiBzbyB3ZSBjYW4gZXhwYW5kIHRoZSByYW5nZSB0byBpbmNsdWRl
IHRoZSBwcmV2aW91cyBsaW5lLiBUaGlzIHNob3VsZCBoYW5kbGUgY2FzZXMgd2hlbiB0aGUgdXNl
ciBoaXRzCisgICAgICAgICAgICAvLyBlbnRlciB0byBmaW5pc2ggY29tcG9zaW5nIGEgd29yZCBh
bmQgY3JlYXRlIGEgbmV3IGxpbmUuIEFjY291bnQgZm9yIHdvcmQgd3JhcHBpbmcgYnkganVtcGlu
ZyB0byB0aGUgc3RhcnQgb2YgdGhlIHByZXZpb3VzIGxpbmUsIHRoZW4gbW92aW5nCisgICAgICAg
ICAgICAvLyB0byB0aGUgc3RhcnQgb2YgYW55IHdvcmQgd2hpY2ggbWlnaHQgYmUgdGhlcmUuCisg
ICAgICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIHZpc2libGVTZWxlY3Rpb24gPSBWaXNpYmxlU2Vs
ZWN0aW9uKAorICAgICAgICAgICAgICAgIHN0YXJ0T2ZXb3JkKHN0YXJ0T2ZMaW5lKHByZXZpb3Vz
TGluZVBvc2l0aW9uKGNhcmV0UG9zaXRpb24sIGNhcmV0UG9zaXRpb24ubGluZURpcmVjdGlvblBv
aW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZpZ2F0aW9uKCkpKSksCisgICAgICAgICAgICAgICAgZW5k
T2ZXb3JkKGVuZE9mTGluZShjYXJldFBvc2l0aW9uKSkpOwogICAgICAgICAgICAgbV9zcGVsbGlu
Z0hhbmRsZXItPnNwZWxsQ2hlY2tUZXh0QmxvY2sodmlzaWJsZVNlbGVjdGlvbiwgVGV4dENoZWNr
aW5nUHJvY2Vzc0luY3JlbWVudGFsKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CkBAIC0x
MDkyLDggKzEwOTUsOCBAQCB2b2lkIElucHV0SGFuZGxlcjo6c2V0RWxlbWVudEZvY3VzZWQoRWxl
bWVudCogZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gU3BlbGxjaGVjayB0aGUg
ZmllbGQgaW4gaXRzIGVudGlyZXR5LgotICAgIFZpc2libGVTZWxlY3Rpb24gZm9jdXNlZEJsb2Nr
ID0gRE9NU3VwcG9ydDo6dmlzaWJsZVNlbGVjdGlvbkZvcklucHV0RWxlbWVudChlbGVtZW50KTsK
LSAgICBtX3NwZWxsaW5nSGFuZGxlci0+c3BlbGxDaGVja1RleHRCbG9jayhmb2N1c2VkQmxvY2ss
IFRleHRDaGVja2luZ1Byb2Nlc3NCYXRjaCk7CisgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiB2
aXNpYmxlU2VsZWN0aW9uID0gRE9NU3VwcG9ydDo6dmlzaWJsZVNlbGVjdGlvbkZvckZvY3VzZWRC
bG9jayhlbGVtZW50KTsKKyAgICBtX3NwZWxsaW5nSGFuZGxlci0+c3BlbGxDaGVja1RleHRCbG9j
ayh2aXNpYmxlU2VsZWN0aW9uLCBUZXh0Q2hlY2tpbmdQcm9jZXNzQmF0Y2gpOwogCiAjaWZkZWYg
RU5BQkxFX1NQRUxMSU5HX0xPRwogICAgIFNwZWxsaW5nTG9nKFBsYXRmb3JtOjpMb2dMZXZlbElu
Zm8sICJJbnB1dEhhbmRsZXI6OnNldEVsZW1lbnRGb2N1c2VkIFNwZWxsY2hlY2tpbmcgdGhlIGZp
ZWxkIGluY3JlYXNlZCB0aGUgdG90YWwgdGltZSB0byBmb2N1cyB0byAlZiBzZWNvbmRzLiIsIHRp
bWVyLmVsYXBzZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
S2l0U3VwcG9ydC9TcGVsbGluZ0hhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYktpdFN1cHBvcnQvU3BlbGxpbmdIYW5kbGVyLmNwcAppbmRleCA1NDJhNTRiNGE5ZjAyYzAz
Yzk5NDRlNWQ0ZjczZGY0ZDgzMmFjMmI3Li5kNWZiZjQ2NjFjNmQzMTZiOGQ2YmI5OTcwY2MwYmQ1
NDk3YjNiNGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3Vw
cG9ydC9TcGVsbGluZ0hhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJLaXRTdXBwb3J0L1NwZWxsaW5nSGFuZGxlci5jcHAKQEAgLTQxLDE4ICs0MSwxOCBAQCBTcGVs
bGluZ0hhbmRsZXI6On5TcGVsbGluZ0hhbmRsZXIoKQogewogfQogCi12b2lkIFNwZWxsaW5nSGFu
ZGxlcjo6c3BlbGxDaGVja1RleHRCbG9jayhXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uJiB2aXNp
YmxlU2VsZWN0aW9uLCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSB0ZXh0Q2hlY2tp
bmdQcm9jZXNzVHlwZSkKK3ZvaWQgU3BlbGxpbmdIYW5kbGVyOjpzcGVsbENoZWNrVGV4dEJsb2Nr
KGNvbnN0IFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24mIHZpc2libGVTZWxlY3Rpb24sIFdlYkNv
cmU6OlRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHRleHRDaGVja2luZ1Byb2Nlc3NUeXBlKQogewot
ICAgIFNwZWxsaW5nTG9nKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJTcGVsbGluZ0hhbmRsZXI6
OnNwZWxsQ2hlY2tUZXh0QmxvY2siKTsKLQogICAgIC8vIENoZWNrIGlmIHRoaXMgcmVxdWVzdCBj
YW4gYmUgc2VudCBvZmYgaW4gb25lIG1lc3NhZ2UsIG9yIGlmIGl0IG5lZWRzIHRvIGJlIGJyb2tl
biBkb3duLgogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VGb3JTcGVsbENoZWNraW5nID0gdmlzaWJs
ZVNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgIGlmICghcmFuZ2VGb3JTcGVsbENo
ZWNraW5nIHx8ICFyYW5nZUZvclNwZWxsQ2hlY2tpbmctPnRleHQoKSB8fCAhcmFuZ2VGb3JTcGVs
bENoZWNraW5nLT50ZXh0KCkubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIG1fdGV4
dENoZWNraW5nUHJvY2Vzc1R5cGUgPSB0ZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZTsKKwogICAgIC8v
IFNwZWxsY2hlY2sgQmF0Y2ggcmVxdWVzdHMgYXJlIHVzZWQgd2hlbiBmb2N1c2luZyBhbiBlbGVt
ZW50LiBEdXJpbmcgdGhpcyB0aW1lLCB3ZSBtaWdodCBoYXZlIGEgbGluZ2VyaW5nIHJlcXVlc3QK
ICAgICAvLyBmcm9tIGEgcHJldmlvdXNseSBmb2N1c2VkIGVsZW1lbnQuCi0gICAgaWYgKHRleHRD
aGVja2luZ1Byb2Nlc3NUeXBlID09IFRleHRDaGVja2luZ1Byb2Nlc3NCYXRjaCkgeworICAgIGlm
IChtX3RleHRDaGVja2luZ1Byb2Nlc3NUeXBlID09IFRleHRDaGVja2luZ1Byb2Nlc3NCYXRjaCkg
ewogICAgICAgICAvLyBJZiBhIHByZXZpb3VzIHJlcXVlc3QgaXMgYmVpbmcgcHJvY2Vzc2VkLCBz
dG9wIGl0IGJlZm9yZSBjb250aW51ZWluZy4KICAgICAgICAgaWYgKG1fdGltZXIuaXNBY3RpdmUo
KSkKICAgICAgICAgICAgIG1fdGltZXIuc3RvcCgpOwpAQCAtNjEsMTA2ICs2MSwxMTIgQEAgdm9p
ZCBTcGVsbGluZ0hhbmRsZXI6OnNwZWxsQ2hlY2tUZXh0QmxvY2soV2ViQ29yZTo6VmlzaWJsZVNl
bGVjdGlvbiYgdmlzaWJsZVNlbGUKICAgICBtX2lzU3BlbGxDaGVja0FjdGl2ZSA9IHRydWU7CiAK
ICAgICAvLyBJZiB3ZSBoYXZlIGEgYmF0Y2ggcmVxdWVzdCwgdHJ5IHRvIHNlbmQgb2ZmIHRoZSBl
bnRpcmUgYmxvY2suCi0gICAgaWYgKHRleHRDaGVja2luZ1Byb2Nlc3NUeXBlID09IFRleHRDaGVj
a2luZ1Byb2Nlc3NCYXRjaCkgeworICAgIGlmIChtX3RleHRDaGVja2luZ1Byb2Nlc3NUeXBlID09
IFRleHRDaGVja2luZ1Byb2Nlc3NCYXRjaCkgewogICAgICAgICAvLyBJZiB0b3RhbCBibG9jayB0
ZXh0IGlzIHVuZGVyIHRoZSBsaW1pdGVkIGFtb3VudCwgc2VuZCB0aGUgZW50aXJlIGNodW5rLgog
ICAgICAgICBpZiAocmFuZ2VGb3JTcGVsbENoZWNraW5nLT50ZXh0KCkubGVuZ3RoKCkgPCBNYXhT
cGVsbENoZWNraW5nU3RyaW5nTGVuZ3RoKSB7Ci0gICAgICAgICAgICBjcmVhdGVTcGVsbENoZWNr
UmVxdWVzdChyYW5nZUZvclNwZWxsQ2hlY2tpbmcsIFRleHRDaGVja2luZ1Byb2Nlc3NCYXRjaCk7
CisgICAgICAgICAgICBjcmVhdGVTcGVsbENoZWNrUmVxdWVzdChyYW5nZUZvclNwZWxsQ2hlY2tp
bmcpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gU2lu
Y2Ugd2UgY291bGRuJ3QgY2hlY2sgdGhlIGVudGlyZSBibG9jayBhdCBvbmNlLCBzZXQgdXAgc3Rh
cnRpbmcgYW5kIGVuZGluZyBtYXJrZXJzIHRvIGZpcmUgaW5jcmVtZW50YWxseS4KLSAgICBtX3N0
YXJ0T2ZDdXJyZW50TGluZSA9IHN0YXJ0T2ZMaW5lKHZpc2libGVTZWxlY3Rpb24udmlzaWJsZVN0
YXJ0KCkpOwotICAgIG1fZW5kT2ZDdXJyZW50TGluZSA9IGVuZE9mTGluZShtX3N0YXJ0T2ZDdXJy
ZW50TGluZSk7Ci0gICAgbV90ZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSA9IHRleHRDaGVja2luZ1By
b2Nlc3NUeXBlOworICAgIC8vIEZpbmQgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIHJlZ2lvbiB3
ZSdyZSBpbnRlbmRpbmcgb24gY2hlY2tpbmcKKyAgICBtX3N0YXJ0UG9zaXRpb24gPSB2aXNpYmxl
U2VsZWN0aW9uLnZpc2libGVTdGFydCgpOworICAgIG1fZW5kUG9zaXRpb24gPSBlbmRPZldvcmQo
bV9zdGFydFBvc2l0aW9uKTsKKyAgICBtX2VuZE9mUmFuZ2UgPSB2aXNpYmxlU2VsZWN0aW9uLnZp
c2libGVFbmQoKTsKKyAgICBtX2NhY2hlZEVuZFBvc2l0aW9uID0gbV9lbmRPZlJhbmdlOwogCi0g
ICAgLy8gRmluZCB0aGUgZW5kIG9mIHRoZSByZWdpb24gd2UncmUgaW50ZW5kaW5nIG9uIGNoZWNr
aW5nLgotICAgIG1fZW5kT2ZSYW5nZSA9IGVuZE9mTGluZSh2aXNpYmxlU2VsZWN0aW9uLnZpc2li
bGVFbmQoKSk7CiAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKLXZvaWQgU3BlbGxp
bmdIYW5kbGVyOjpjcmVhdGVTcGVsbENoZWNrUmVxdWVzdChQYXNzUmVmUHRyPFdlYkNvcmU6OlJh
bmdlPiByYW5nZUZvclNwZWxsQ2hlY2tpbmdQdHIsIFdlYkNvcmU6OlRleHRDaGVja2luZ1Byb2Nl
c3NUeXBlIHRleHRDaGVja2luZ1Byb2Nlc3NUeXBlKQordm9pZCBTcGVsbGluZ0hhbmRsZXI6OmNy
ZWF0ZVNwZWxsQ2hlY2tSZXF1ZXN0KGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IHJh
bmdlRm9yU3BlbGxDaGVja2luZ1B0cikKIHsKICAgICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IHJh
bmdlRm9yU3BlbGxDaGVja2luZyA9IHJhbmdlRm9yU3BlbGxDaGVja2luZ1B0cjsKICAgICByYW5n
ZUZvclNwZWxsQ2hlY2tpbmcgPSBET01TdXBwb3J0Ojp0cmltV2hpdGVzcGFjZUZyb21SYW5nZShy
YW5nZUZvclNwZWxsQ2hlY2tpbmcpOwogICAgIGlmICghcmFuZ2VGb3JTcGVsbENoZWNraW5nKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBTcGVsbGluZ0xvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZv
LCAiU3BlbGxpbmdIYW5kbGVyOjpjcmVhdGVTcGVsbENoZWNrUmVxdWVzdCBTdWJzdHJpbmcgdGV4
dCBpcyAnJXMnLCBvZiBzaXplICVkIgotICAgICAgICAsIHJhbmdlRm9yU3BlbGxDaGVja2luZy0+
dGV4dCgpLmxhdGluMSgpLmRhdGEoKQotICAgICAgICAsIHJhbmdlRm9yU3BlbGxDaGVja2luZy0+
dGV4dCgpLmxlbmd0aCgpKTsKLQotICAgIGlmIChyYW5nZUZvclNwZWxsQ2hlY2tpbmctPnRleHQo
KS5sZW5ndGgoKSA+PSBNaW5TcGVsbENoZWNraW5nU3RyaW5nTGVuZ3RoKQotICAgICAgICBtX2lu
cHV0SGFuZGxlci0+Y2FsbFJlcXVlc3RDaGVja2luZ0ZvcihTcGVsbENoZWNrUmVxdWVzdDo6Y3Jl
YXRlKFRleHRDaGVja2luZ1R5cGVTcGVsbGluZywgdGV4dENoZWNraW5nUHJvY2Vzc1R5cGUsIHJh
bmdlRm9yU3BlbGxDaGVja2luZywgcmFuZ2VGb3JTcGVsbENoZWNraW5nKSk7CisgICAgaWYgKHJh
bmdlRm9yU3BlbGxDaGVja2luZy0+dGV4dCgpLmxlbmd0aCgpID49IE1pblNwZWxsQ2hlY2tpbmdT
dHJpbmdMZW5ndGgpIHsKKyAgICAgICAgU3BlbGxpbmdMb2coUGxhdGZvcm06OkxvZ0xldmVsSW5m
bywgIlNwZWxsaW5nSGFuZGxlcjo6Y3JlYXRlU3BlbGxDaGVja1JlcXVlc3QgU3Vic3RyaW5nIHRl
eHQgaXMgJyVzJywgb2Ygc2l6ZSAlZCIKKyAgICAgICAgICAgICwgcmFuZ2VGb3JTcGVsbENoZWNr
aW5nLT50ZXh0KCkubGF0aW4xKCkuZGF0YSgpCisgICAgICAgICAgICAsIHJhbmdlRm9yU3BlbGxD
aGVja2luZy0+dGV4dCgpLmxlbmd0aCgpKTsKKyAgICAgICAgbV9pbnB1dEhhbmRsZXItPmNhbGxS
ZXF1ZXN0Q2hlY2tpbmdGb3IoU3BlbGxDaGVja1JlcXVlc3Q6OmNyZWF0ZShUZXh0Q2hlY2tpbmdU
eXBlU3BlbGxpbmcsIG1fdGV4dENoZWNraW5nUHJvY2Vzc1R5cGUsIHJhbmdlRm9yU3BlbGxDaGVj
a2luZywgcmFuZ2VGb3JTcGVsbENoZWNraW5nKSk7CisgICAgfQogfQogCiB2b2lkIFNwZWxsaW5n
SGFuZGxlcjo6cGFyc2VCbG9ja0ZvclNwZWxsQ2hlY2tpbmcoV2ViQ29yZTo6VGltZXI8U3BlbGxp
bmdIYW5kbGVyPiopCiB7Ci0gICAgLy8gQ3JlYXRlIGEgc2VsZWN0aW9uIHdpdGggdGhlIHN0YXJ0
IGFuZCBlbmQgcG9pbnRzIG9mIHRoZSBsaW5lLCBhbmQgY29udmVydCB0byBSYW5nZSB0byBjcmVh
dGUgYSBTcGVsbENoZWNrUmVxdWVzdC4KLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yU3BlbGxD
aGVja2luZyA9IG1ha2VSYW5nZShtX3N0YXJ0T2ZDdXJyZW50TGluZSwgbV9lbmRPZkN1cnJlbnRM
aW5lKTsKKyAgICBTcGVsbGluZ0xvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiU3BlbGxpbmdI
YW5kbGVyOjpwYXJzZUJsb2NrRm9yU3BlbGxDaGVja2luZyBtX3N0YXJ0UG9zaXRpb24gPSAlZCwg
bV9lbmRQb3NpdGlvbiA9ICVkLCBtX2NhY2hlZEVuZFBvc2l0aW9uID0gJWQsIG1fZW5kT2ZSYW5n
ZSA9ICVkIgorICAgICAgICAsIERPTVN1cHBvcnQ6Om9mZnNldEZyb21TdGFydE9mQmxvY2sobV9z
dGFydFBvc2l0aW9uKQorICAgICAgICAsIERPTVN1cHBvcnQ6Om9mZnNldEZyb21TdGFydE9mQmxv
Y2sobV9lbmRQb3NpdGlvbikKKyAgICAgICAgLCBET01TdXBwb3J0OjpvZmZzZXRGcm9tU3RhcnRP
ZkJsb2NrKG1fY2FjaGVkRW5kUG9zaXRpb24pCisgICAgICAgICwgRE9NU3VwcG9ydDo6b2Zmc2V0
RnJvbVN0YXJ0T2ZCbG9jayhtX2VuZE9mUmFuZ2UpKTsKKworICAgIGlmIChtX3N0YXJ0UG9zaXRp
b24gPT0gbV9lbmRPZlJhbmdlKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8UmFuZ2U+
IHJhbmdlRm9yU3BlbGxDaGVja2luZyA9IG1ha2VSYW5nZShtX3N0YXJ0UG9zaXRpb24sIG1fZW5k
UG9zaXRpb24pOwogICAgIGlmICghcmFuZ2VGb3JTcGVsbENoZWNraW5nKSB7CiAgICAgICAgIFNw
ZWxsaW5nTG9nKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJTcGVsbGluZ0hhbmRsZXI6OnBhcnNl
QmxvY2tGb3JTcGVsbENoZWNraW5nIEZhaWxlZCB0byBzZXQgdGV4dCByYW5nZSBmb3Igc3BlbGxj
aGVja2luZy4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChyYW5nZUZvclNw
ZWxsQ2hlY2tpbmctPnRleHQoKS5sZW5ndGgoKSA8IE1heFNwZWxsQ2hlY2tpbmdTdHJpbmdMZW5n
dGgpIHsKLSAgICAgICAgaWYgKG1fZW5kT2ZDdXJyZW50TGluZSA9PSBtX2VuZE9mUmFuZ2UpIHsK
LSAgICAgICAgICAgIGNyZWF0ZVNwZWxsQ2hlY2tSZXF1ZXN0KHJhbmdlRm9yU3BlbGxDaGVja2lu
ZywgbV90ZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSk7CisgICAgICAgIGlmIChtX2VuZFBvc2l0aW9u
ID09IG1fZW5kT2ZSYW5nZSB8fCBtX2NhY2hlZEVuZFBvc2l0aW9uID09IG1fZW5kUG9zaXRpb24p
IHsKKyAgICAgICAgICAgIGNyZWF0ZVNwZWxsQ2hlY2tSZXF1ZXN0KHJhbmdlRm9yU3BlbGxDaGVj
a2luZyk7CiAgICAgICAgICAgICBtX2lzU3BlbGxDaGVja0FjdGl2ZSA9IGZhbHNlOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1fZW5kT2ZDdXJyZW50TGluZSA9IGVu
ZE9mTGluZShuZXh0TGluZVBvc2l0aW9uKG1fZW5kT2ZDdXJyZW50TGluZSwgbV9lbmRPZkN1cnJl
bnRMaW5lLmxpbmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0aW9uTmF2aWdhdGlvbigpKSk7
CisKKyAgICAgICAgaW5jcmVtZW50U2VudGluZWxzKGZhbHNlIC8qIHNob3VsZEluY3JlbWVudFN0
YXJ0UG9zaXRpb24gKi8pOwogICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChzX3RpbWVvdXQp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gSXRlcmF0ZSB0aHJvdWdoIHdvcmRz
IGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBsaW5lIHRvIHRoZSBlbmQuCi0gICAgcmFuZ2VGb3JTcGVs
bENoZWNraW5nID0gZ2V0UmFuZ2VGb3JTcGVsbENoZWNrV2l0aEZpbmVHcmFudWxhcml0eShtX3N0
YXJ0T2ZDdXJyZW50TGluZSwgbV9lbmRPZkN1cnJlbnRMaW5lKTsKLSAgICBpZiAoIXJhbmdlRm9y
U3BlbGxDaGVja2luZykKLSAgICAgICAgcmV0dXJuOworICAgIC8vIENyZWF0ZSBhIHNwZWxsY2hl
Y2sgcmVxdWVzdCB3aXRoIHRoZSBzdWJzdHJpbmcgaWYgd2UgaGF2ZSBhIHJhbmdlIHRoYXQgaXMg
b2Ygc2l6ZSBsZXNzIHRoYW4gTWF4U3BlbGxDaGVja2luZ1N0cmluZ0xlbmd0aAorICAgIGlmIChy
YW5nZUZvclNwZWxsQ2hlY2tpbmcgPSBoYW5kbGVPdmVyc2l6ZWRSYW5nZSgpKQorICAgICAgICBj
cmVhdGVTcGVsbENoZWNrUmVxdWVzdChyYW5nZUZvclNwZWxsQ2hlY2tpbmcpOwogCi0gICAgbV9z
dGFydE9mQ3VycmVudExpbmUgPSBWaXNpYmxlUG9zaXRpb24ocmFuZ2VGb3JTcGVsbENoZWNraW5n
LT5lbmRQb3NpdGlvbigpKTsKLSAgICBtX2VuZE9mQ3VycmVudExpbmUgPSBlbmRPZkxpbmUobV9z
dGFydE9mQ3VycmVudExpbmUpOwotCi0gICAgLy8gQ2FsbCBzcGVsbGNoZWNrIHdpdGggc3Vic3Ry
aW5nLgotICAgIGNyZWF0ZVNwZWxsQ2hlY2tSZXF1ZXN0KHJhbmdlRm9yU3BlbGxDaGVja2luZywg
bV90ZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSk7CiAgICAgaWYgKGlzU3BlbGxDaGVja0FjdGl2ZSgp
KQogICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChzX3RpbWVvdXQpOwogfQogCi1QYXNzUmVm
UHRyPFJhbmdlPiBTcGVsbGluZ0hhbmRsZXI6OmdldFJhbmdlRm9yU3BlbGxDaGVja1dpdGhGaW5l
R3JhbnVsYXJpdHkoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24sIFdlYkNv
cmU6OlZpc2libGVQb3NpdGlvbiBlbmRQb3NpdGlvbikKK1Bhc3NSZWZQdHI8UmFuZ2U+IFNwZWxs
aW5nSGFuZGxlcjo6aGFuZGxlT3ZlcnNpemVkUmFuZ2UoKQogewotICAgIFNwZWxsaW5nTG9nKFBs
YXRmb3JtOjpMb2dMZXZlbFdhcm4sICJTcGVsbGluZ0hhbmRsZXI6OmdldFJhbmdlRm9yU3BlbGxD
aGVja1dpdGhGaW5lR3JhbnVsYXJpdHkiKTsKLSAgICBWaXNpYmxlUG9zaXRpb24gZW5kT2ZDdXJy
ZW50V29yZCA9IGVuZE9mV29yZChzdGFydFBvc2l0aW9uKTsKLSAgICBSZWZQdHI8UmFuZ2U+IGN1
cnJlbnRSYW5nZTsKLQotICAgIC8vIEtlZXAgaXRlcmF0aW5nIHVudGlsIG9uZSBvZiBvdXIgY2Fz
ZXMgaXMgaGl0LCBvciB3ZSd2ZSBpbmNyZW1lbnRlZCB0aGUgc3RhcnRpbmcgcG9zaXRpb24gcmln
aHQgdG8gdGhlIGVuZC4KLSAgICB3aGlsZSAoc3RhcnRQb3NpdGlvbiAhPSBlbmRQb3NpdGlvbikg
ewotICAgICAgICBjdXJyZW50UmFuZ2UgPSBtYWtlUmFuZ2Uoc3RhcnRQb3NpdGlvbiwgZW5kT2ZD
dXJyZW50V29yZCk7Ci0gICAgICAgIGlmICghY3VycmVudFJhbmdlKQotICAgICAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICAgICAgLy8gQ2hlY2sgdGhlIHRleHQgbGVuZ3RoIHdpdGhpbiB0aGlzIHJh
bmdlLgotICAgICAgICBpZiAoY3VycmVudFJhbmdlLT50ZXh0KCkubGVuZ3RoKCkgPj0gTWF4U3Bl
bGxDaGVja2luZ1N0cmluZ0xlbmd0aCkgewotICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBub3Qg
dGhlIGZpcnN0IHdvcmQsIHJldHVybiBhIFJhbmdlIHdpdGggZW5kIGJvdW5kYXJ5IHNldCB0byB0
aGUgcHJldmlvdXMgd29yZC4KLSAgICAgICAgICAgIGlmIChzdGFydE9mV29yZChlbmRPZkN1cnJl
bnRXb3JkLCBMZWZ0V29yZElmT25Cb3VuZGFyeSkgIT0gc3RhcnRQb3NpdGlvbiAmJiAhRE9NU3Vw
cG9ydDo6aXNFbXB0eVJhbmdlT3JBbGxTcGFjZXMoc3RhcnRQb3NpdGlvbiwgZW5kT2ZDdXJyZW50
V29yZCkpIHsKLSAgICAgICAgICAgICAgICAvLyBXaGVuIGEgc2VyaWVzIG9mIHdoaXRlc3BhY2Ug
Zm9sbG93cyBhIHdvcmQsIHByZXZpb3VzV29yZFBvc2l0aW9uIHdpbGwganVtcCBwYXNzZWQgYWxs
IG9mIHRoZW0sIGFuZCB1c2luZyBMZWZ0V29yZElmT25Cb3VuZGFyeSBicmluZ3MgdXMgdG8KLSAg
ICAgICAgICAgICAgICAvLyBvdXIgc3RhcnRpbmcgcG9zaXRpb24uIENoZWNrIGZvciB0aGlzIGNh
c2UgYW5kIHVzZSBSaWdodFdvcmRJZk9uQm91bmRhcnkgdG8ganVtcCBiYWNrIG92ZXIgdGhlIHdv
cmQuCi0gICAgICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGVuZE9mUHJldmlvdXNXb3JkID0g
ZW5kT2ZXb3JkKHByZXZpb3VzV29yZFBvc2l0aW9uKGVuZE9mQ3VycmVudFdvcmQpLCBMZWZ0V29y
ZElmT25Cb3VuZGFyeSk7Ci0gICAgICAgICAgICAgICAgaWYgKHN0YXJ0UG9zaXRpb24gPT0gZW5k
T2ZQcmV2aW91c1dvcmQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtlUmFuZ2Uoc3Rh
cnRQb3NpdGlvbiwgZW5kT2ZXb3JkKHByZXZpb3VzV29yZFBvc2l0aW9uKGVuZE9mQ3VycmVudFdv
cmQpLCBSaWdodFdvcmRJZk9uQm91bmRhcnkpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFr
ZVJhbmdlKHN0YXJ0UG9zaXRpb24sIGVuZE9mUHJldmlvdXNXb3JkKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIC8vIE91ciBmaXJzdCB3b3JkIGhhcyBnb25lIG92ZXIgdGhlIGNoYXJhY3Rl
ciBsaW1pdC4gSW5jcmVtZW50IHRoZSBzdGFydGluZyBwb3NpdGlvbiBwYXN0IGFuIHVuY2hlY2th
YmxlIHdvcmQuCi0gICAgICAgICAgICBzdGFydFBvc2l0aW9uID0gZW5kT2ZDdXJyZW50V29yZDsK
LSAgICAgICAgICAgIGVuZE9mQ3VycmVudFdvcmQgPSBlbmRPZldvcmQobmV4dFdvcmRQb3NpdGlv
bihlbmRPZkN1cnJlbnRXb3JkKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoZW5kT2ZDdXJyZW50V29y
ZCA9PSBlbmRQb3NpdGlvbikKLSAgICAgICAgICAgIHJldHVybiBtYWtlUmFuZ2Uoc3RhcnRQb3Np
dGlvbiwgZW5kUG9zaXRpb24pOyAvLyBSZXR1cm4gdGhlIGxhc3Qgc2VnbWVudCBpZiB0aGUgZW5k
IG9mIG91ciB3b3JkIGxpZXMgYXQgdGhlIGVuZCBvZiB0aGUgcmFuZ2UuCi0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGVuZE9mQ3VycmVudFdvcmQgPSBlbmRPZldvcmQobmV4dFdvcmRQb3NpdGlv
bihlbmRPZkN1cnJlbnRXb3JkKSk7IC8vIEluY3JlbWVudCB0aGUgY3VycmVudCB3b3JkLgorICAg
IFNwZWxsaW5nTG9nKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJTcGVsbGluZ0hhbmRsZXI6Omhh
bmRsZU92ZXJzaXplZFJhbmdlIik7CisKKyAgICBpZiAobV9zdGFydFBvc2l0aW9uID09IG1fY2Fj
aGVkRW5kUG9zaXRpb24gfHwgbV9zdGFydFBvc2l0aW9uID09IHN0YXJ0T2ZXb3JkKG1fZW5kUG9z
aXRpb24sIExlZnRXb3JkSWZPbkJvdW5kYXJ5KSkgeworICAgICAgICAvLyBPdXIgZmlyc3Qgd29y
ZCBoYXMgZ29uZSBvdmVyIHRoZSBjaGFyYWN0ZXIgbGltaXQuIEluY3JlbWVudCB0aGUgc3RhcnRp
bmcgcG9zaXRpb24gcGFzdCBhbiB1bmNoZWNrYWJsZSB3b3JkLgorICAgICAgICBpbmNyZW1lbnRT
ZW50aW5lbHModHJ1ZSAvKiBzaG91bGRJbmNyZW1lbnRTdGFydFBvc2l0aW9uICovKTsKKyAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQotICAgIC8vIFRoaXMgd2lsbCByZXR1cm4gYW4gcmFuZ2Ugd2l0
aCBubyBzdHJpbmcsIGJ1dCBhbGxvd3MgcHJvY2Vzc2luZyB0byBjb250aW51ZQotICAgIHJldHVy
biBtYWtlUmFuZ2Uoc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOworCisgICAgLy8gSWYgdGhp
cyBpcyBub3QgdGhlIGZpcnN0IHdvcmQsIHJldHVybiBhIFJhbmdlIHdpdGggZW5kIGJvdW5kYXJ5
IHNldCB0byB0aGUgcHJldmlvdXMgd29yZC4KKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlVG9TdGFy
dE9mT3ZlcnNpemVkV29yZCA9IG1ha2VSYW5nZShtX3N0YXJ0UG9zaXRpb24sIG1fY2FjaGVkRW5k
UG9zaXRpb24pOworICAgIC8vIFdlJ3ZlIGNyZWF0ZWQgdGhlIHJhbmdlIHVzaW5nIHRoZSBjYWNo
ZWQgZW5kIHBvc2l0aW9uLiBOb3cgaW5jcmVtZW50IHRoZSBzZW50aW5hbHMgZm9yd2FyZC4KKyAg
ICAvLyBGSVhNRSBJbmNyZW1lbnRpbmcgdGhlIHN0YXJ0L2VuZCBwb3NpdGlvbnMgb3V0c2lkZSBv
ZiBpbmNyZW1lbnRTZW50aW5lbHMKKyAgICBtX3N0YXJ0UG9zaXRpb24gPSBtX2NhY2hlZEVuZFBv
c2l0aW9uOworICAgIG1fZW5kUG9zaXRpb24gPSBlbmRPZldvcmQobV9zdGFydFBvc2l0aW9uKTsK
KyAgICByZXR1cm4gcmFuZ2VUb1N0YXJ0T2ZPdmVyc2l6ZWRXb3JkOworfQorCit2b2lkIFNwZWxs
aW5nSGFuZGxlcjo6aW5jcmVtZW50U2VudGluZWxzKGNvbnN0IGJvb2wgc2hvdWxkSW5jcmVtZW50
U3RhcnRQb3NpdGlvbikKK3sKKyAgICBTcGVsbGluZ0xvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZv
LCAiU3BlbGxpbmdIYW5kbGVyOjppbmNyZW1lbnRTZW50aW5lbHMgc2hvdWxkSW5jcmVtZW50U3Rh
cnRQb3NpdGlvbiAlcyIsIHNob3VsZEluY3JlbWVudFN0YXJ0UG9zaXRpb24gPyAidHJ1ZSIgOiAi
ZmFsc2UiKTsKKworICAgIGlmIChzaG91bGRJbmNyZW1lbnRTdGFydFBvc2l0aW9uKQorICAgICAg
ICBtX3N0YXJ0UG9zaXRpb24gPSBtX2VuZFBvc2l0aW9uOworCisgICAgVmlzaWJsZVBvc2l0aW9u
IG5leHRXb3JkID0gbmV4dFdvcmRQb3NpdGlvbihtX2VuZFBvc2l0aW9uKTsKKyAgICBWaXNpYmxl
UG9zaXRpb24gc3RhcnRPZk5leHRXb3JkID0gc3RhcnRPZldvcmQobmV4dFdvcmQsIExlZnRXb3Jk
SWZPbkJvdW5kYXJ5KTsKKyAgICBpZiAoRE9NU3VwcG9ydDo6aXNSYW5nZVRleHRBbGxXaGl0ZXNw
YWNlKG1fZW5kUG9zaXRpb24sIHN0YXJ0T2ZOZXh0V29yZCkpIHsKKyAgICAgICAgbV9jYWNoZWRF
bmRQb3NpdGlvbiA9IHN0YXJ0T2ZOZXh0V29yZDsKKyAgICAgICAgbV9lbmRQb3NpdGlvbiA9IGVu
ZE9mV29yZChzdGFydE9mTmV4dFdvcmQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
bV9jYWNoZWRFbmRQb3NpdGlvbiA9IG1fZW5kUG9zaXRpb247CisgICAgbV9lbmRQb3NpdGlvbiA9
IGVuZE9mV29yZChuZXh0V29yZCk7CiB9CiAKIH0gLy8gV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9TcGVsbGluZ0hhbmRsZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NwZWxsaW5nSGFuZGxlci5oCmlu
ZGV4IDIyYTkwNTI1NWUwM2I3YzUzOGNkZmM0NzU0MmQ0YzZmZDg5MDNjMDkuLjdhZGMyOGI4ZmU3
ZDAwMzM2NjYyOTUyYWI3YTlmMzlkNjVmMjcyNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NwZWxsaW5nSGFuZGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NwZWxsaW5nSGFuZGxlci5oCkBAIC0zMCwy
MSArMzAsMjMgQEAgcHVibGljOgogICAgIFNwZWxsaW5nSGFuZGxlcihJbnB1dEhhbmRsZXIqKTsK
ICAgICB+U3BlbGxpbmdIYW5kbGVyKCk7CiAKLSAgICB2b2lkIHNwZWxsQ2hlY2tUZXh0QmxvY2so
V2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiYsIFdlYkNvcmU6OlRleHRDaGVja2luZ1Byb2Nlc3NU
eXBlKTsKKyAgICB2b2lkIHNwZWxsQ2hlY2tUZXh0QmxvY2soY29uc3QgV2ViQ29yZTo6VmlzaWJs
ZVNlbGVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1Byb2Nlc3NUeXBlKTsKICAg
ICBib29sIGlzU3BlbGxDaGVja0FjdGl2ZSgpIHsgcmV0dXJuIG1faXNTcGVsbENoZWNrQWN0aXZl
OyB9CiAgICAgdm9pZCBzZXRTcGVsbENoZWNrQWN0aXZlKGJvb2wgYWN0aXZlKSB7IG1faXNTcGVs
bENoZWNrQWN0aXZlID0gYWN0aXZlOyB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBjcmVhdGVTcGVs
bENoZWNrUmVxdWVzdChQYXNzUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiByYW5nZUZvclNwZWxsQ2hl
Y2tpbmdQdHIsIFdlYkNvcmU6OlRleHRDaGVja2luZ1Byb2Nlc3NUeXBlKTsKKyAgICB2b2lkIGNy
ZWF0ZVNwZWxsQ2hlY2tSZXF1ZXN0KFBhc3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IHJhbmdlRm9y
U3BlbGxDaGVja2luZ1B0cik7CiAgICAgdm9pZCBwYXJzZUJsb2NrRm9yU3BlbGxDaGVja2luZyhX
ZWJDb3JlOjpUaW1lcjxTcGVsbGluZ0hhbmRsZXI+Kik7Ci0gICAgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpSYW5nZT4gZ2V0UmFuZ2VGb3JTcGVsbENoZWNrV2l0aEZpbmVHcmFudWxhcml0eShXZWJDb3Jl
OjpWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlvbiwgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9u
IGVuZFBvc2l0aW9uKTsKKyAgICB2b2lkIGluY3JlbWVudFNlbnRpbmVscyhjb25zdCBib29sIHNo
b3VsZEluY3JlbWVudFN0YXJ0UG9zaXRpb24pOworICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6UmFu
Z2U+IGhhbmRsZU92ZXJzaXplZFJhbmdlKCk7CiAKICAgICBJbnB1dEhhbmRsZXIqIG1faW5wdXRI
YW5kbGVyOwogCiAgICAgV2ViQ29yZTo6VGltZXI8U3BlbGxpbmdIYW5kbGVyPiBtX3RpbWVyOwot
ICAgIFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbiBtX3N0YXJ0T2ZDdXJyZW50TGluZTsKLSAgICBX
ZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24gbV9lbmRPZkN1cnJlbnRMaW5lOwotICAgIFdlYkNvcmU6
OlZpc2libGVTZWxlY3Rpb24gbV9lbmRPZlJhbmdlOworICAgIFdlYkNvcmU6OlZpc2libGVQb3Np
dGlvbiBtX3N0YXJ0UG9zaXRpb247CisgICAgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIG1fZW5k
UG9zaXRpb247CisgICAgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIG1fY2FjaGVkRW5kUG9zaXRp
b247CisgICAgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIG1fZW5kT2ZSYW5nZTsKICAgICBXZWJD
b3JlOjpUZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSBtX3RleHRDaGVja2luZ1Byb2Nlc3NUeXBlOwog
ICAgIGJvb2wgbV9pc1NwZWxsQ2hlY2tBY3RpdmU7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189152</attachid>
            <date>2013-02-19 13:27:03 -0800</date>
            <delta_ts>2013-02-19 15:17:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110253-20130219161700.patch</filename>
            <type>text/plain</type>
            <size>22367</size>
            <attacher name="Nima Ghanavatian">nghanavatian</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCA4ZDc5NDhiMjI4MThjNDNjNjEzNjBhMDQwY2E0YWQwYTEyYzA3ODdmLi45MTlmYzI1N2Jj
YjhjYzI3Yzg0YmIxMjY1ZmY3ZTQ4Nzk1ODQ5YWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMy0wMi0xMiAgTmltYSBHaGFuYXZhdGlhbiAgPG5n
aGFuYXZhdGlhbkByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBBcHByb3ByaWF0ZWx5
IGhhbmRsZSB3b3JkIHdyYXBwaW5nIGluIFNwZWxsaW5nSGFuZGxlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMjUzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUFIyODYwMDEKKyAgICAgICAgU2luY2Ug
d2UgdHJhdmVyc2UgdGhyb3VnaCB0ZXh0IGJ5IHZpc3VhbCBsaW5lcyBpbnN0ZWFkIG9mIGJsb2Nr
cywgd29yZCB3cmFwcGluZyBjYXVzZXMgc29tZQorICAgICAgICBiYWQgYmVoYXZpb3IuIENoYW5n
aW5nIHRoZSB3YXkgd2UgdHJhdmVyc2UgdGV4dCB0byBqdW1wIGJ5IHdvcmRzIGluc3RlYWQgb2Yg
bGluZXMuIFRoaXMgd2lsbAorICAgICAgICBtZWFuIGl0IHRha2VzIGxvbmdlciB0byBmaW5pc2gg
c3BlbGxjaGVja2luZywgYnV0IHRoZSByZW1vdmFsIG9mIGFueSBsb29wcyBhbGxvd3Mgd2Via2l0
CisgICAgICAgIHByb2Nlc3NpbmcgdG8gY29udGludWUuIFRoaXMgZ2l2ZXMgcHJpb3JpdHkgdG8g
dXNlciBhY3Rpb25zIHdoaWxlIHN0aWxsIGNvbXBsZXRpbmcgYSBsYXJnZQorICAgICAgICBwYXJh
Z3JhcGggaW4gYSByZWFzb25hYmxlIGFtb3VudCBvZiB0aW1lLgorCisgICAgICAgIEludGVybmFs
bHkgcmV2aWV3ZWQgYnkgTWlrZSBGZW50b24KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvSW5w
dXRIYW5kbGVyLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVy
OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9TcGVs
bGluZ0hhbmRsZXIuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpTcGVsbGluZ0hh
bmRsZXI6OmNyZWF0ZVNwZWxsQ2hlY2tSZXF1ZXN0KToKKyAgICAgICAgKEJsYWNrQmVycnk6Oldl
YktpdDo6U3BlbGxpbmdIYW5kbGVyOjpwYXJzZUJsb2NrRm9yU3BlbGxDaGVja2luZyk6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlNwZWxsaW5nSGFuZGxlcjo6Z2V0UmFuZ2VGb3JTcGVs
bENoZWNrV2l0aEZpbmVHcmFudWxhcml0eSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OlNwZWxsaW5nSGFuZGxlcjo6c3RhcnRPZk5leHRXb3JkKToKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OlNwZWxsaW5nSGFuZGxlcjo6aW5jcmVtZW50QnlX
b3JkKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6U3BlbGxpbmdIYW5kbGVyOjpkb2Vz
V29yZFdyYXApOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvU3BlbGxpbmdIYW5kbGVyLmg6Cisg
ICAgICAgIChTcGVsbGluZ0hhbmRsZXIpOgorCiAyMDEzLTAyLTE4ICBTaW1vbiBGcmFzZXIgIDxz
aW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIENsZWFuIHVwIHRoZSBib29sZWFuIGFy
Z3VtZW50IHRvIHZpc2libGVDb250ZW50UmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcAppbmRleCBjOTg2NGE3OWI2ODcy
MWRiOGQ0YjdmY2NhMzI0NmQ3OTgyYTNlMzI0Li4zNTEwZDg4OWU5OGQ0ZjNiMWFlYjk4MzcyMjgw
ZWMxMDY3NGNlNDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0
U3VwcG9ydC9ET01TdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
S2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcApAQCAtNTA4LDYgKzUwOCw0NiBAQCBWaXNpYmxlU2Vs
ZWN0aW9uIHZpc2libGVTZWxlY3Rpb25Gb3JDbG9zZXN0QWN0dWFsV29yZFN0YXJ0KGNvbnN0IFZp
c2libGVTZWxlY3RpbwogICAgIHJldHVybiBzZWxlY3Rpb247CiB9CiAKK2ludCBvZmZzZXRGcm9t
U3RhcnRPZkJsb2NrKGNvbnN0IFZpc2libGVQb3NpdGlvbiBvZmZzZXQpCit7CisgICAgUmVmUHRy
PFJhbmdlPiByYW5nZSA9IG1ha2VSYW5nZShzdGFydE9mQmxvY2sob2Zmc2V0KSwgb2Zmc2V0KTsK
KyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gcmFuZ2Ut
PnRleHQoKS5sYXRpbjEoKS5sZW5ndGgoKTsKK30KKworVmlzaWJsZVNlbGVjdGlvbiB2aXNpYmxl
U2VsZWN0aW9uRm9yRm9jdXNlZEJsb2NrKEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgaW50IHRl
eHRMZW5ndGggPSBpbnB1dEVsZW1lbnRUZXh0KGVsZW1lbnQpLmxlbmd0aCgpOworCisgICAgaWYg
KERPTVN1cHBvcnQ6OnRvVGV4dENvbnRyb2xFbGVtZW50KGVsZW1lbnQpKSB7CisgICAgICAgIFJl
bmRlclRleHRDb250cm9sKiB0ZXh0UmVuZGVyID0gdG9SZW5kZXJUZXh0Q29udHJvbChlbGVtZW50
LT5yZW5kZXJlcigpKTsKKyAgICAgICAgaWYgKCF0ZXh0UmVuZGVyKQorICAgICAgICAgICAgcmV0
dXJuIFZpc2libGVTZWxlY3Rpb24oKTsKKworICAgICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRQ
b3NpdGlvbiA9IHRleHRSZW5kZXItPnZpc2libGVQb3NpdGlvbkZvckluZGV4KDApOworICAgICAg
ICBWaXNpYmxlUG9zaXRpb24gZW5kUG9zaXRpb247CisKKyAgICAgICAgaWYgKHRleHRMZW5ndGgp
CisgICAgICAgICAgICBlbmRQb3NpdGlvbiA9IHRleHRSZW5kZXItPnZpc2libGVQb3NpdGlvbkZv
ckluZGV4KHRleHRMZW5ndGgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlbmRQb3NpdGlv
biA9IHN0YXJ0UG9zaXRpb247CisgICAgICAgIHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0
UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKKyAgICB9CisKKyAgICAvLyBNdXN0IGJlIGNvbnRlbnQg
ZWRpdGFibGUsIGdlbmVyYXRlIHRoZSByYW5nZS4KKyAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGlv
blJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChlbGVtZW50
LCAwLCB0ZXh0TGVuZ3RoKTsKKworICAgIGlmICghc2VsZWN0aW9uUmFuZ2UpCisgICAgICAgIHJl
dHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7CisKKyAgICBpZiAoIXRleHRMZW5ndGgpCisgICAgICAg
IHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKHNlbGVjdGlvblJhbmdlLT5zdGFydFBvc2l0aW9uKCks
IERPV05TVFJFQU0pOworCisgICAgcmV0dXJuIFZpc2libGVTZWxlY3Rpb24oc2VsZWN0aW9uUmFu
Z2UtPnN0YXJ0UG9zaXRpb24oKSwgc2VsZWN0aW9uUmFuZ2UtPmVuZFBvc2l0aW9uKCkpOworfQor
CiAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNvcGllZCBmcm9tIFdlYkNvcmUvcGFnZS9QYWdlLmNwcC4K
IEZyYW1lKiBpbmNyZW1lbnRGcmFtZShGcmFtZSogY3VyciwgYm9vbCBmb3J3YXJkLCBib29sIHdy
YXBGbGFnKQogewpAQCAtNTIzLDcgKzU2Myw3IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IHRyaW1XaGl0
ZXNwYWNlRnJvbVJhbmdlKFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlKQogCiBQYXNzUmVmUHRyPFJh
bmdlPiB0cmltV2hpdGVzcGFjZUZyb21SYW5nZShWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlv
biwgVmlzaWJsZVBvc2l0aW9uIGVuZFBvc2l0aW9uKQogewotICAgIGlmIChpc0VtcHR5UmFuZ2VP
ckFsbFNwYWNlcyhzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbikpCisgICAgaWYgKHN0YXJ0UG9z
aXRpb24gPT0gZW5kUG9zaXRpb24gfHwgaXNSYW5nZVRleHRBbGxXaGl0ZXNwYWNlKHN0YXJ0UG9z
aXRpb24sIGVuZFBvc2l0aW9uKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICB3aGlsZSAoaXNX
aGl0ZXNwYWNlKHN0YXJ0UG9zaXRpb24uY2hhcmFjdGVyQWZ0ZXIoKSkpCkBAIC01MzUsMTEgKzU3
NSw4IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IHRyaW1XaGl0ZXNwYWNlRnJvbVJhbmdlKFZpc2libGVQ
b3NpdGlvbiBzdGFydFBvc2l0aW9uLCBWaXNpYmxlCiAgICAgcmV0dXJuIG1ha2VSYW5nZShzdGFy
dFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7CiB9CiAKLWJvb2wgaXNFbXB0eVJhbmdlT3JBbGxTcGFj
ZXMoVmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24sIFZpc2libGVQb3NpdGlvbiBlbmRQb3Np
dGlvbikKK2Jvb2wgaXNSYW5nZVRleHRBbGxXaGl0ZXNwYWNlKFZpc2libGVQb3NpdGlvbiBzdGFy
dFBvc2l0aW9uLCBWaXNpYmxlUG9zaXRpb24gZW5kUG9zaXRpb24pCiB7Ci0gICAgaWYgKHN0YXJ0
UG9zaXRpb24gPT0gZW5kUG9zaXRpb24pCi0gICAgICAgIHJldHVybiB0cnVlOwotCiAgICAgd2hp
bGUgKGlzV2hpdGVzcGFjZShzdGFydFBvc2l0aW9uLmNoYXJhY3RlckFmdGVyKCkpKSB7CiAgICAg
ICAgIHN0YXJ0UG9zaXRpb24gPSBzdGFydFBvc2l0aW9uLm5leHQoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5oIGIvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5oCmluZGV4IDFl
ODhhYjUwYjhjODEzNDg2ZjJlYTYwOTVmOGMzYjkxYTdkMGYyNjQuLmM4ZDdjMDhhODY4NTNjN2Iy
NzdiOTRkMjYxNTU0YTQ1YWRmZjg5NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L0RPTVN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0LmgKQEAgLTkwLDEyICs5MCwxNCBAQCBXZWJD
b3JlOjpJbnRQb2ludCBjb252ZXJ0UG9pbnRUb0ZyYW1lKGNvbnN0IFdlYkNvcmU6OkZyYW1lKiBz
b3VyY2VGcmFtZSwgY29uc3QgVwogc3RhdGljIGNvbnN0IFdlYkNvcmU6OkludFBvaW50IEludmFs
aWRQb2ludCA9IFdlYkNvcmU6OkludFBvaW50KC0xLCAtMSk7CiAKIFdlYkNvcmU6OlZpc2libGVT
ZWxlY3Rpb24gdmlzaWJsZVNlbGVjdGlvbkZvckNsb3Nlc3RBY3R1YWxXb3JkU3RhcnQoY29uc3Qg
V2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiYpOworV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiB2
aXNpYmxlU2VsZWN0aW9uRm9yRm9jdXNlZEJsb2NrKFdlYkNvcmU6OkVsZW1lbnQqKTsKK2ludCBv
ZmZzZXRGcm9tU3RhcnRPZkJsb2NrKGNvbnN0IFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbiBvZmZz
ZXQpOwogCiBXZWJDb3JlOjpGcmFtZSogaW5jcmVtZW50RnJhbWUoV2ViQ29yZTo6RnJhbWUqIGN1
cnIsIGJvb2wgZm9yd2FyZCwgYm9vbCB3cmFwRmxhZyk7CiAKIFBhc3NSZWZQdHI8V2ViQ29yZTo6
UmFuZ2U+IHRyaW1XaGl0ZXNwYWNlRnJvbVJhbmdlKFBhc3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+
KTsKIFBhc3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IHRyaW1XaGl0ZXNwYWNlRnJvbVJhbmdlKFdl
YkNvcmU6OlZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uLCBXZWJDb3JlOjpWaXNpYmxlUG9z
aXRpb24gZW5kUG9zaXRpb24pOwotYm9vbCBpc0VtcHR5UmFuZ2VPckFsbFNwYWNlcyhXZWJDb3Jl
OjpWaXNpYmxlUG9zaXRpb24sIFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbik7Citib29sIGlzUmFu
Z2VUZXh0QWxsV2hpdGVzcGFjZShXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlv
biwgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIGVuZFBvc2l0aW9uKTsKIAogYm9vbCBpc0ZpeGVk
UG9zaXRpb25Pckhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihXZWJDb3JlOjpSZW5kZXJPYmplY3Qq
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
SW5wdXRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0
L0lucHV0SGFuZGxlci5jcHAKaW5kZXggZWM5NmZkYTgxNGQyNzE1MzIyNmQwYTQ5YzA5ZmE1N2M5
MjVlODQ4Zi4uYTUyMDk3YTU0YTMzMWQyNDViYmE3YWI2ZTQyODhlZWEyMGRlYzQ4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1dEhh
bmRsZXIuY3BwCkBAIC02MTIsMTcgKzYxMiwyMCBAQCB2b2lkIElucHV0SGFuZGxlcjo6cmVxdWVz
dENoZWNraW5nT2ZTdHJpbmcoUGFzc1JlZlB0cjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHJlcXVlc3RMZW5ndGggPiBNYXhTcGVs
bENoZWNraW5nU3RyaW5nTGVuZ3RoKSB7CisgICAgaWYgKHJlcXVlc3RMZW5ndGggPj0gTWF4U3Bl
bGxDaGVja2luZ1N0cmluZ0xlbmd0aCkgewogICAgICAgICAvLyBCYXRjaCByZXF1ZXN0cyB3aGlj
aCBhcmUgZ2VuZXJhbGx5IGNyZWF0ZWQgYnkgdXMgb24gZm9jdXMsIHNob3VsZCBub3QgZXhjZWVk
IHRoaXMgbGltaXQuIENoZWNrIHRoYXQgdGhpcyBpcyBpbiBmYWN0IG9mIEluY3JlbWVudGFsIHR5
cGUuCiAgICAgICAgIEFTU0VSVCh0ZXh0Q2hlY2tpbmdSZXF1ZXN0LT5wcm9jZXNzVHlwZSgpID09
IFRleHRDaGVja2luZ1Byb2Nlc3NJbmNyZW1lbnRhbCk7CiAKICAgICAgICAgLy8gQ2FuY2VsIHRo
aXMgcmVxdWVzdCBhbmQgc2VuZCBpdCBvZmYgaW4gbmV3bHkgY3JlYXRlZCBjaHVua3MuCiAgICAg
ICAgIG1fcmVxdWVzdC0+ZGlkQ2FuY2VsKCk7CiAgICAgICAgIGlmIChtX2N1cnJlbnRGb2N1c0Vs
ZW1lbnQtPmRvY3VtZW50KCkgJiYgbV9jdXJyZW50Rm9jdXNFbGVtZW50LT5kb2N1bWVudCgpLT5m
cmFtZSgpICYmIG1fY3VycmVudEZvY3VzRWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+c2Vs
ZWN0aW9uKCkpIHsKLSAgICAgICAgICAgIC8vIENvbnZlcnQgZnJvbSBwb3NpdGlvbiBiYWNrIHRv
IHNlbGVjdGlvbiBzbyB3ZSBjYW4gZXhwYW5kIHRoZSByYW5nZSB0byBpbmNsdWRlIHRoZSBwcmV2
aW91cyBsaW5lLiBUaGlzIHNob3VsZCBoYW5kbGUgY2FzZXMgd2hlbiB0aGUgdXNlciBoaXRzCi0g
ICAgICAgICAgICAvLyBlbnRlciB0byBmaW5pc2ggY29tcG9zaW5nIGEgd29yZCBhbmQgY3JlYXRl
IGEgbmV3IGxpbmUuCiAgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gY2FyZXRQb3NpdGlvbiA9
IG1fY3VycmVudEZvY3VzRWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+c2VsZWN0aW9uKCkt
PnN0YXJ0KCk7Ci0gICAgICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIHZpc2libGVTZWxlY3Rpb24g
PSBWaXNpYmxlU2VsZWN0aW9uKHByZXZpb3VzTGluZVBvc2l0aW9uKGNhcmV0UG9zaXRpb24sIGNh
cmV0UG9zaXRpb24ubGluZURpcmVjdGlvblBvaW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZpZ2F0aW9u
KCkpLCBjYXJldFBvc2l0aW9uKTsKKyAgICAgICAgICAgIC8vIENvbnZlcnQgZnJvbSBwb3NpdGlv
biBiYWNrIHRvIHNlbGVjdGlvbiBzbyB3ZSBjYW4gZXhwYW5kIHRoZSByYW5nZSB0byBpbmNsdWRl
IHRoZSBwcmV2aW91cyBsaW5lLiBUaGlzIHNob3VsZCBoYW5kbGUgY2FzZXMgd2hlbiB0aGUgdXNl
ciBoaXRzCisgICAgICAgICAgICAvLyBlbnRlciB0byBmaW5pc2ggY29tcG9zaW5nIGEgd29yZCBh
bmQgY3JlYXRlIGEgbmV3IGxpbmUuIEFjY291bnQgZm9yIHdvcmQgd3JhcHBpbmcgYnkganVtcGlu
ZyB0byB0aGUgc3RhcnQgb2YgdGhlIHByZXZpb3VzIGxpbmUsIHRoZW4gbW92aW5nCisgICAgICAg
ICAgICAvLyB0byB0aGUgc3RhcnQgb2YgYW55IHdvcmQgd2hpY2ggbWlnaHQgYmUgdGhlcmUuCisg
ICAgICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIHZpc2libGVTZWxlY3Rpb24gPSBWaXNpYmxlU2Vs
ZWN0aW9uKAorICAgICAgICAgICAgICAgIHN0YXJ0T2ZXb3JkKHN0YXJ0T2ZMaW5lKHByZXZpb3Vz
TGluZVBvc2l0aW9uKGNhcmV0UG9zaXRpb24sIGNhcmV0UG9zaXRpb24ubGluZURpcmVjdGlvblBv
aW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZpZ2F0aW9uKCkpKSksCisgICAgICAgICAgICAgICAgZW5k
T2ZXb3JkKGVuZE9mTGluZShjYXJldFBvc2l0aW9uKSkpOwogICAgICAgICAgICAgbV9zcGVsbGlu
Z0hhbmRsZXItPnNwZWxsQ2hlY2tUZXh0QmxvY2sodmlzaWJsZVNlbGVjdGlvbiwgVGV4dENoZWNr
aW5nUHJvY2Vzc0luY3JlbWVudGFsKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CkBAIC0x
MDkyLDggKzEwOTUsOCBAQCB2b2lkIElucHV0SGFuZGxlcjo6c2V0RWxlbWVudEZvY3VzZWQoRWxl
bWVudCogZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gU3BlbGxjaGVjayB0aGUg
ZmllbGQgaW4gaXRzIGVudGlyZXR5LgotICAgIFZpc2libGVTZWxlY3Rpb24gZm9jdXNlZEJsb2Nr
ID0gRE9NU3VwcG9ydDo6dmlzaWJsZVNlbGVjdGlvbkZvcklucHV0RWxlbWVudChlbGVtZW50KTsK
LSAgICBtX3NwZWxsaW5nSGFuZGxlci0+c3BlbGxDaGVja1RleHRCbG9jayhmb2N1c2VkQmxvY2ss
IFRleHRDaGVja2luZ1Byb2Nlc3NCYXRjaCk7CisgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiB2
aXNpYmxlU2VsZWN0aW9uID0gRE9NU3VwcG9ydDo6dmlzaWJsZVNlbGVjdGlvbkZvckZvY3VzZWRC
bG9jayhlbGVtZW50KTsKKyAgICBtX3NwZWxsaW5nSGFuZGxlci0+c3BlbGxDaGVja1RleHRCbG9j
ayh2aXNpYmxlU2VsZWN0aW9uLCBUZXh0Q2hlY2tpbmdQcm9jZXNzQmF0Y2gpOwogCiAjaWZkZWYg
RU5BQkxFX1NQRUxMSU5HX0xPRwogICAgIFNwZWxsaW5nTG9nKFBsYXRmb3JtOjpMb2dMZXZlbElu
Zm8sICJJbnB1dEhhbmRsZXI6OnNldEVsZW1lbnRGb2N1c2VkIFNwZWxsY2hlY2tpbmcgdGhlIGZp
ZWxkIGluY3JlYXNlZCB0aGUgdG90YWwgdGltZSB0byBmb2N1cyB0byAlZiBzZWNvbmRzLiIsIHRp
bWVyLmVsYXBzZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
S2l0U3VwcG9ydC9TcGVsbGluZ0hhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYktpdFN1cHBvcnQvU3BlbGxpbmdIYW5kbGVyLmNwcAppbmRleCA1NDJhNTRiNGE5ZjAyYzAz
Yzk5NDRlNWQ0ZjczZGY0ZDgzMmFjMmI3Li45ZGQ1OWE5YTczMTFiMDMzN2IzMDA4NTkwYjBmZmM5
MWZkNjg2NDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3Vw
cG9ydC9TcGVsbGluZ0hhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJLaXRTdXBwb3J0L1NwZWxsaW5nSGFuZGxlci5jcHAKQEAgLTQxLDE4ICs0MSwxOCBAQCBTcGVs
bGluZ0hhbmRsZXI6On5TcGVsbGluZ0hhbmRsZXIoKQogewogfQogCi12b2lkIFNwZWxsaW5nSGFu
ZGxlcjo6c3BlbGxDaGVja1RleHRCbG9jayhXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uJiB2aXNp
YmxlU2VsZWN0aW9uLCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSB0ZXh0Q2hlY2tp
bmdQcm9jZXNzVHlwZSkKK3ZvaWQgU3BlbGxpbmdIYW5kbGVyOjpzcGVsbENoZWNrVGV4dEJsb2Nr
KGNvbnN0IFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24mIHZpc2libGVTZWxlY3Rpb24sIFdlYkNv
cmU6OlRleHRDaGVja2luZ1Byb2Nlc3NUeXBlIHRleHRDaGVja2luZ1Byb2Nlc3NUeXBlKQogewot
ICAgIFNwZWxsaW5nTG9nKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJTcGVsbGluZ0hhbmRsZXI6
OnNwZWxsQ2hlY2tUZXh0QmxvY2siKTsKLQogICAgIC8vIENoZWNrIGlmIHRoaXMgcmVxdWVzdCBj
YW4gYmUgc2VudCBvZmYgaW4gb25lIG1lc3NhZ2UsIG9yIGlmIGl0IG5lZWRzIHRvIGJlIGJyb2tl
biBkb3duLgogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VGb3JTcGVsbENoZWNraW5nID0gdmlzaWJs
ZVNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgIGlmICghcmFuZ2VGb3JTcGVsbENo
ZWNraW5nIHx8ICFyYW5nZUZvclNwZWxsQ2hlY2tpbmctPnRleHQoKSB8fCAhcmFuZ2VGb3JTcGVs
bENoZWNraW5nLT50ZXh0KCkubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIG1fdGV4
dENoZWNraW5nUHJvY2Vzc1R5cGUgPSB0ZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZTsKKwogICAgIC8v
IFNwZWxsY2hlY2sgQmF0Y2ggcmVxdWVzdHMgYXJlIHVzZWQgd2hlbiBmb2N1c2luZyBhbiBlbGVt
ZW50LiBEdXJpbmcgdGhpcyB0aW1lLCB3ZSBtaWdodCBoYXZlIGEgbGluZ2VyaW5nIHJlcXVlc3QK
ICAgICAvLyBmcm9tIGEgcHJldmlvdXNseSBmb2N1c2VkIGVsZW1lbnQuCi0gICAgaWYgKHRleHRD
aGVja2luZ1Byb2Nlc3NUeXBlID09IFRleHRDaGVja2luZ1Byb2Nlc3NCYXRjaCkgeworICAgIGlm
IChtX3RleHRDaGVja2luZ1Byb2Nlc3NUeXBlID09IFRleHRDaGVja2luZ1Byb2Nlc3NCYXRjaCkg
ewogICAgICAgICAvLyBJZiBhIHByZXZpb3VzIHJlcXVlc3QgaXMgYmVpbmcgcHJvY2Vzc2VkLCBz
dG9wIGl0IGJlZm9yZSBjb250aW51ZWluZy4KICAgICAgICAgaWYgKG1fdGltZXIuaXNBY3RpdmUo
KSkKICAgICAgICAgICAgIG1fdGltZXIuc3RvcCgpOwpAQCAtNjEsMTA2ICs2MSwxMTIgQEAgdm9p
ZCBTcGVsbGluZ0hhbmRsZXI6OnNwZWxsQ2hlY2tUZXh0QmxvY2soV2ViQ29yZTo6VmlzaWJsZVNl
bGVjdGlvbiYgdmlzaWJsZVNlbGUKICAgICBtX2lzU3BlbGxDaGVja0FjdGl2ZSA9IHRydWU7CiAK
ICAgICAvLyBJZiB3ZSBoYXZlIGEgYmF0Y2ggcmVxdWVzdCwgdHJ5IHRvIHNlbmQgb2ZmIHRoZSBl
bnRpcmUgYmxvY2suCi0gICAgaWYgKHRleHRDaGVja2luZ1Byb2Nlc3NUeXBlID09IFRleHRDaGVj
a2luZ1Byb2Nlc3NCYXRjaCkgeworICAgIGlmIChtX3RleHRDaGVja2luZ1Byb2Nlc3NUeXBlID09
IFRleHRDaGVja2luZ1Byb2Nlc3NCYXRjaCkgewogICAgICAgICAvLyBJZiB0b3RhbCBibG9jayB0
ZXh0IGlzIHVuZGVyIHRoZSBsaW1pdGVkIGFtb3VudCwgc2VuZCB0aGUgZW50aXJlIGNodW5rLgog
ICAgICAgICBpZiAocmFuZ2VGb3JTcGVsbENoZWNraW5nLT50ZXh0KCkubGVuZ3RoKCkgPCBNYXhT
cGVsbENoZWNraW5nU3RyaW5nTGVuZ3RoKSB7Ci0gICAgICAgICAgICBjcmVhdGVTcGVsbENoZWNr
UmVxdWVzdChyYW5nZUZvclNwZWxsQ2hlY2tpbmcsIFRleHRDaGVja2luZ1Byb2Nlc3NCYXRjaCk7
CisgICAgICAgICAgICBjcmVhdGVTcGVsbENoZWNrUmVxdWVzdChyYW5nZUZvclNwZWxsQ2hlY2tp
bmcpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gU2lu
Y2Ugd2UgY291bGRuJ3QgY2hlY2sgdGhlIGVudGlyZSBibG9jayBhdCBvbmNlLCBzZXQgdXAgc3Rh
cnRpbmcgYW5kIGVuZGluZyBtYXJrZXJzIHRvIGZpcmUgaW5jcmVtZW50YWxseS4KLSAgICBtX3N0
YXJ0T2ZDdXJyZW50TGluZSA9IHN0YXJ0T2ZMaW5lKHZpc2libGVTZWxlY3Rpb24udmlzaWJsZVN0
YXJ0KCkpOwotICAgIG1fZW5kT2ZDdXJyZW50TGluZSA9IGVuZE9mTGluZShtX3N0YXJ0T2ZDdXJy
ZW50TGluZSk7Ci0gICAgbV90ZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSA9IHRleHRDaGVja2luZ1By
b2Nlc3NUeXBlOworICAgIC8vIEZpbmQgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIHJlZ2lvbiB3
ZSdyZSBpbnRlbmRpbmcgb24gY2hlY2tpbmcKKyAgICBtX3N0YXJ0UG9zaXRpb24gPSB2aXNpYmxl
U2VsZWN0aW9uLnZpc2libGVTdGFydCgpOworICAgIG1fZW5kUG9zaXRpb24gPSBlbmRPZldvcmQo
bV9zdGFydFBvc2l0aW9uKTsKKyAgICBtX2VuZE9mUmFuZ2UgPSB2aXNpYmxlU2VsZWN0aW9uLnZp
c2libGVFbmQoKTsKKyAgICBtX2NhY2hlZEVuZFBvc2l0aW9uID0gbV9lbmRPZlJhbmdlOwogCi0g
ICAgLy8gRmluZCB0aGUgZW5kIG9mIHRoZSByZWdpb24gd2UncmUgaW50ZW5kaW5nIG9uIGNoZWNr
aW5nLgotICAgIG1fZW5kT2ZSYW5nZSA9IGVuZE9mTGluZSh2aXNpYmxlU2VsZWN0aW9uLnZpc2li
bGVFbmQoKSk7CiAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKLXZvaWQgU3BlbGxp
bmdIYW5kbGVyOjpjcmVhdGVTcGVsbENoZWNrUmVxdWVzdChQYXNzUmVmUHRyPFdlYkNvcmU6OlJh
bmdlPiByYW5nZUZvclNwZWxsQ2hlY2tpbmdQdHIsIFdlYkNvcmU6OlRleHRDaGVja2luZ1Byb2Nl
c3NUeXBlIHRleHRDaGVja2luZ1Byb2Nlc3NUeXBlKQordm9pZCBTcGVsbGluZ0hhbmRsZXI6OmNy
ZWF0ZVNwZWxsQ2hlY2tSZXF1ZXN0KGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IHJh
bmdlRm9yU3BlbGxDaGVja2luZ1B0cikKIHsKICAgICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IHJh
bmdlRm9yU3BlbGxDaGVja2luZyA9IHJhbmdlRm9yU3BlbGxDaGVja2luZ1B0cjsKICAgICByYW5n
ZUZvclNwZWxsQ2hlY2tpbmcgPSBET01TdXBwb3J0Ojp0cmltV2hpdGVzcGFjZUZyb21SYW5nZShy
YW5nZUZvclNwZWxsQ2hlY2tpbmcpOwogICAgIGlmICghcmFuZ2VGb3JTcGVsbENoZWNraW5nKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBTcGVsbGluZ0xvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZv
LCAiU3BlbGxpbmdIYW5kbGVyOjpjcmVhdGVTcGVsbENoZWNrUmVxdWVzdCBTdWJzdHJpbmcgdGV4
dCBpcyAnJXMnLCBvZiBzaXplICVkIgotICAgICAgICAsIHJhbmdlRm9yU3BlbGxDaGVja2luZy0+
dGV4dCgpLmxhdGluMSgpLmRhdGEoKQotICAgICAgICAsIHJhbmdlRm9yU3BlbGxDaGVja2luZy0+
dGV4dCgpLmxlbmd0aCgpKTsKLQotICAgIGlmIChyYW5nZUZvclNwZWxsQ2hlY2tpbmctPnRleHQo
KS5sZW5ndGgoKSA+PSBNaW5TcGVsbENoZWNraW5nU3RyaW5nTGVuZ3RoKQotICAgICAgICBtX2lu
cHV0SGFuZGxlci0+Y2FsbFJlcXVlc3RDaGVja2luZ0ZvcihTcGVsbENoZWNrUmVxdWVzdDo6Y3Jl
YXRlKFRleHRDaGVja2luZ1R5cGVTcGVsbGluZywgdGV4dENoZWNraW5nUHJvY2Vzc1R5cGUsIHJh
bmdlRm9yU3BlbGxDaGVja2luZywgcmFuZ2VGb3JTcGVsbENoZWNraW5nKSk7CisgICAgaWYgKHJh
bmdlRm9yU3BlbGxDaGVja2luZy0+dGV4dCgpLmxlbmd0aCgpID49IE1pblNwZWxsQ2hlY2tpbmdT
dHJpbmdMZW5ndGgpIHsKKyAgICAgICAgU3BlbGxpbmdMb2coUGxhdGZvcm06OkxvZ0xldmVsSW5m
bywgIlNwZWxsaW5nSGFuZGxlcjo6Y3JlYXRlU3BlbGxDaGVja1JlcXVlc3QgU3Vic3RyaW5nIHRl
eHQgaXMgJyVzJywgb2Ygc2l6ZSAlZCIKKyAgICAgICAgICAgICwgcmFuZ2VGb3JTcGVsbENoZWNr
aW5nLT50ZXh0KCkubGF0aW4xKCkuZGF0YSgpCisgICAgICAgICAgICAsIHJhbmdlRm9yU3BlbGxD
aGVja2luZy0+dGV4dCgpLmxlbmd0aCgpKTsKKyAgICAgICAgbV9pbnB1dEhhbmRsZXItPmNhbGxS
ZXF1ZXN0Q2hlY2tpbmdGb3IoU3BlbGxDaGVja1JlcXVlc3Q6OmNyZWF0ZShUZXh0Q2hlY2tpbmdU
eXBlU3BlbGxpbmcsIG1fdGV4dENoZWNraW5nUHJvY2Vzc1R5cGUsIHJhbmdlRm9yU3BlbGxDaGVj
a2luZywgcmFuZ2VGb3JTcGVsbENoZWNraW5nKSk7CisgICAgfQogfQogCiB2b2lkIFNwZWxsaW5n
SGFuZGxlcjo6cGFyc2VCbG9ja0ZvclNwZWxsQ2hlY2tpbmcoV2ViQ29yZTo6VGltZXI8U3BlbGxp
bmdIYW5kbGVyPiopCiB7Ci0gICAgLy8gQ3JlYXRlIGEgc2VsZWN0aW9uIHdpdGggdGhlIHN0YXJ0
IGFuZCBlbmQgcG9pbnRzIG9mIHRoZSBsaW5lLCBhbmQgY29udmVydCB0byBSYW5nZSB0byBjcmVh
dGUgYSBTcGVsbENoZWNrUmVxdWVzdC4KLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yU3BlbGxD
aGVja2luZyA9IG1ha2VSYW5nZShtX3N0YXJ0T2ZDdXJyZW50TGluZSwgbV9lbmRPZkN1cnJlbnRM
aW5lKTsKKyAgICBTcGVsbGluZ0xvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiU3BlbGxpbmdI
YW5kbGVyOjpwYXJzZUJsb2NrRm9yU3BlbGxDaGVja2luZyBtX3N0YXJ0UG9zaXRpb24gPSAlZCwg
bV9lbmRQb3NpdGlvbiA9ICVkLCBtX2NhY2hlZEVuZFBvc2l0aW9uID0gJWQsIG1fZW5kT2ZSYW5n
ZSA9ICVkIgorICAgICAgICAsIERPTVN1cHBvcnQ6Om9mZnNldEZyb21TdGFydE9mQmxvY2sobV9z
dGFydFBvc2l0aW9uKQorICAgICAgICAsIERPTVN1cHBvcnQ6Om9mZnNldEZyb21TdGFydE9mQmxv
Y2sobV9lbmRQb3NpdGlvbikKKyAgICAgICAgLCBET01TdXBwb3J0OjpvZmZzZXRGcm9tU3RhcnRP
ZkJsb2NrKG1fY2FjaGVkRW5kUG9zaXRpb24pCisgICAgICAgICwgRE9NU3VwcG9ydDo6b2Zmc2V0
RnJvbVN0YXJ0T2ZCbG9jayhtX2VuZE9mUmFuZ2UpKTsKKworICAgIGlmIChtX3N0YXJ0UG9zaXRp
b24gPT0gbV9lbmRPZlJhbmdlKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8UmFuZ2U+
IHJhbmdlRm9yU3BlbGxDaGVja2luZyA9IG1ha2VSYW5nZShtX3N0YXJ0UG9zaXRpb24sIG1fZW5k
UG9zaXRpb24pOwogICAgIGlmICghcmFuZ2VGb3JTcGVsbENoZWNraW5nKSB7CiAgICAgICAgIFNw
ZWxsaW5nTG9nKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJTcGVsbGluZ0hhbmRsZXI6OnBhcnNl
QmxvY2tGb3JTcGVsbENoZWNraW5nIEZhaWxlZCB0byBzZXQgdGV4dCByYW5nZSBmb3Igc3BlbGxj
aGVja2luZy4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChyYW5nZUZvclNw
ZWxsQ2hlY2tpbmctPnRleHQoKS5sZW5ndGgoKSA8IE1heFNwZWxsQ2hlY2tpbmdTdHJpbmdMZW5n
dGgpIHsKLSAgICAgICAgaWYgKG1fZW5kT2ZDdXJyZW50TGluZSA9PSBtX2VuZE9mUmFuZ2UpIHsK
LSAgICAgICAgICAgIGNyZWF0ZVNwZWxsQ2hlY2tSZXF1ZXN0KHJhbmdlRm9yU3BlbGxDaGVja2lu
ZywgbV90ZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSk7CisgICAgICAgIGlmIChtX2VuZFBvc2l0aW9u
ID09IG1fZW5kT2ZSYW5nZSB8fCBtX2NhY2hlZEVuZFBvc2l0aW9uID09IG1fZW5kUG9zaXRpb24p
IHsKKyAgICAgICAgICAgIGNyZWF0ZVNwZWxsQ2hlY2tSZXF1ZXN0KHJhbmdlRm9yU3BlbGxDaGVj
a2luZyk7CiAgICAgICAgICAgICBtX2lzU3BlbGxDaGVja0FjdGl2ZSA9IGZhbHNlOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1fZW5kT2ZDdXJyZW50TGluZSA9IGVu
ZE9mTGluZShuZXh0TGluZVBvc2l0aW9uKG1fZW5kT2ZDdXJyZW50TGluZSwgbV9lbmRPZkN1cnJl
bnRMaW5lLmxpbmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0aW9uTmF2aWdhdGlvbigpKSk7
CisKKyAgICAgICAgaW5jcmVtZW50U2VudGluZWxzKGZhbHNlIC8qIHNob3VsZEluY3JlbWVudFN0
YXJ0UG9zaXRpb24gKi8pOwogICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChzX3RpbWVvdXQp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gSXRlcmF0ZSB0aHJvdWdoIHdvcmRz
IGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBsaW5lIHRvIHRoZSBlbmQuCi0gICAgcmFuZ2VGb3JTcGVs
bENoZWNraW5nID0gZ2V0UmFuZ2VGb3JTcGVsbENoZWNrV2l0aEZpbmVHcmFudWxhcml0eShtX3N0
YXJ0T2ZDdXJyZW50TGluZSwgbV9lbmRPZkN1cnJlbnRMaW5lKTsKLSAgICBpZiAoIXJhbmdlRm9y
U3BlbGxDaGVja2luZykKLSAgICAgICAgcmV0dXJuOworICAgIC8vIENyZWF0ZSBhIHNwZWxsY2hl
Y2sgcmVxdWVzdCB3aXRoIHRoZSBzdWJzdHJpbmcgaWYgd2UgaGF2ZSBhIHJhbmdlIHRoYXQgaXMg
b2Ygc2l6ZSBsZXNzIHRoYW4gTWF4U3BlbGxDaGVja2luZ1N0cmluZ0xlbmd0aAorICAgIGlmIChy
YW5nZUZvclNwZWxsQ2hlY2tpbmcgPSBoYW5kbGVPdmVyc2l6ZWRSYW5nZSgpKQorICAgICAgICBj
cmVhdGVTcGVsbENoZWNrUmVxdWVzdChyYW5nZUZvclNwZWxsQ2hlY2tpbmcpOwogCi0gICAgbV9z
dGFydE9mQ3VycmVudExpbmUgPSBWaXNpYmxlUG9zaXRpb24ocmFuZ2VGb3JTcGVsbENoZWNraW5n
LT5lbmRQb3NpdGlvbigpKTsKLSAgICBtX2VuZE9mQ3VycmVudExpbmUgPSBlbmRPZkxpbmUobV9z
dGFydE9mQ3VycmVudExpbmUpOwotCi0gICAgLy8gQ2FsbCBzcGVsbGNoZWNrIHdpdGggc3Vic3Ry
aW5nLgotICAgIGNyZWF0ZVNwZWxsQ2hlY2tSZXF1ZXN0KHJhbmdlRm9yU3BlbGxDaGVja2luZywg
bV90ZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSk7CiAgICAgaWYgKGlzU3BlbGxDaGVja0FjdGl2ZSgp
KQogICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChzX3RpbWVvdXQpOwogfQogCi1QYXNzUmVm
UHRyPFJhbmdlPiBTcGVsbGluZ0hhbmRsZXI6OmdldFJhbmdlRm9yU3BlbGxDaGVja1dpdGhGaW5l
R3JhbnVsYXJpdHkoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24sIFdlYkNv
cmU6OlZpc2libGVQb3NpdGlvbiBlbmRQb3NpdGlvbikKK1Bhc3NSZWZQdHI8UmFuZ2U+IFNwZWxs
aW5nSGFuZGxlcjo6aGFuZGxlT3ZlcnNpemVkUmFuZ2UoKQogewotICAgIFNwZWxsaW5nTG9nKFBs
YXRmb3JtOjpMb2dMZXZlbFdhcm4sICJTcGVsbGluZ0hhbmRsZXI6OmdldFJhbmdlRm9yU3BlbGxD
aGVja1dpdGhGaW5lR3JhbnVsYXJpdHkiKTsKLSAgICBWaXNpYmxlUG9zaXRpb24gZW5kT2ZDdXJy
ZW50V29yZCA9IGVuZE9mV29yZChzdGFydFBvc2l0aW9uKTsKLSAgICBSZWZQdHI8UmFuZ2U+IGN1
cnJlbnRSYW5nZTsKLQotICAgIC8vIEtlZXAgaXRlcmF0aW5nIHVudGlsIG9uZSBvZiBvdXIgY2Fz
ZXMgaXMgaGl0LCBvciB3ZSd2ZSBpbmNyZW1lbnRlZCB0aGUgc3RhcnRpbmcgcG9zaXRpb24gcmln
aHQgdG8gdGhlIGVuZC4KLSAgICB3aGlsZSAoc3RhcnRQb3NpdGlvbiAhPSBlbmRQb3NpdGlvbikg
ewotICAgICAgICBjdXJyZW50UmFuZ2UgPSBtYWtlUmFuZ2Uoc3RhcnRQb3NpdGlvbiwgZW5kT2ZD
dXJyZW50V29yZCk7Ci0gICAgICAgIGlmICghY3VycmVudFJhbmdlKQotICAgICAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICAgICAgLy8gQ2hlY2sgdGhlIHRleHQgbGVuZ3RoIHdpdGhpbiB0aGlzIHJh
bmdlLgotICAgICAgICBpZiAoY3VycmVudFJhbmdlLT50ZXh0KCkubGVuZ3RoKCkgPj0gTWF4U3Bl
bGxDaGVja2luZ1N0cmluZ0xlbmd0aCkgewotICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBub3Qg
dGhlIGZpcnN0IHdvcmQsIHJldHVybiBhIFJhbmdlIHdpdGggZW5kIGJvdW5kYXJ5IHNldCB0byB0
aGUgcHJldmlvdXMgd29yZC4KLSAgICAgICAgICAgIGlmIChzdGFydE9mV29yZChlbmRPZkN1cnJl
bnRXb3JkLCBMZWZ0V29yZElmT25Cb3VuZGFyeSkgIT0gc3RhcnRQb3NpdGlvbiAmJiAhRE9NU3Vw
cG9ydDo6aXNFbXB0eVJhbmdlT3JBbGxTcGFjZXMoc3RhcnRQb3NpdGlvbiwgZW5kT2ZDdXJyZW50
V29yZCkpIHsKLSAgICAgICAgICAgICAgICAvLyBXaGVuIGEgc2VyaWVzIG9mIHdoaXRlc3BhY2Ug
Zm9sbG93cyBhIHdvcmQsIHByZXZpb3VzV29yZFBvc2l0aW9uIHdpbGwganVtcCBwYXNzZWQgYWxs
IG9mIHRoZW0sIGFuZCB1c2luZyBMZWZ0V29yZElmT25Cb3VuZGFyeSBicmluZ3MgdXMgdG8KLSAg
ICAgICAgICAgICAgICAvLyBvdXIgc3RhcnRpbmcgcG9zaXRpb24uIENoZWNrIGZvciB0aGlzIGNh
c2UgYW5kIHVzZSBSaWdodFdvcmRJZk9uQm91bmRhcnkgdG8ganVtcCBiYWNrIG92ZXIgdGhlIHdv
cmQuCi0gICAgICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGVuZE9mUHJldmlvdXNXb3JkID0g
ZW5kT2ZXb3JkKHByZXZpb3VzV29yZFBvc2l0aW9uKGVuZE9mQ3VycmVudFdvcmQpLCBMZWZ0V29y
ZElmT25Cb3VuZGFyeSk7Ci0gICAgICAgICAgICAgICAgaWYgKHN0YXJ0UG9zaXRpb24gPT0gZW5k
T2ZQcmV2aW91c1dvcmQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtlUmFuZ2Uoc3Rh
cnRQb3NpdGlvbiwgZW5kT2ZXb3JkKHByZXZpb3VzV29yZFBvc2l0aW9uKGVuZE9mQ3VycmVudFdv
cmQpLCBSaWdodFdvcmRJZk9uQm91bmRhcnkpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFr
ZVJhbmdlKHN0YXJ0UG9zaXRpb24sIGVuZE9mUHJldmlvdXNXb3JkKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIC8vIE91ciBmaXJzdCB3b3JkIGhhcyBnb25lIG92ZXIgdGhlIGNoYXJhY3Rl
ciBsaW1pdC4gSW5jcmVtZW50IHRoZSBzdGFydGluZyBwb3NpdGlvbiBwYXN0IGFuIHVuY2hlY2th
YmxlIHdvcmQuCi0gICAgICAgICAgICBzdGFydFBvc2l0aW9uID0gZW5kT2ZDdXJyZW50V29yZDsK
LSAgICAgICAgICAgIGVuZE9mQ3VycmVudFdvcmQgPSBlbmRPZldvcmQobmV4dFdvcmRQb3NpdGlv
bihlbmRPZkN1cnJlbnRXb3JkKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoZW5kT2ZDdXJyZW50V29y
ZCA9PSBlbmRQb3NpdGlvbikKLSAgICAgICAgICAgIHJldHVybiBtYWtlUmFuZ2Uoc3RhcnRQb3Np
dGlvbiwgZW5kUG9zaXRpb24pOyAvLyBSZXR1cm4gdGhlIGxhc3Qgc2VnbWVudCBpZiB0aGUgZW5k
IG9mIG91ciB3b3JkIGxpZXMgYXQgdGhlIGVuZCBvZiB0aGUgcmFuZ2UuCi0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGVuZE9mQ3VycmVudFdvcmQgPSBlbmRPZldvcmQobmV4dFdvcmRQb3NpdGlv
bihlbmRPZkN1cnJlbnRXb3JkKSk7IC8vIEluY3JlbWVudCB0aGUgY3VycmVudCB3b3JkLgorICAg
IFNwZWxsaW5nTG9nKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJTcGVsbGluZ0hhbmRsZXI6Omhh
bmRsZU92ZXJzaXplZFJhbmdlIik7CisKKyAgICBpZiAobV9zdGFydFBvc2l0aW9uID09IG1fY2Fj
aGVkRW5kUG9zaXRpb24gfHwgbV9zdGFydFBvc2l0aW9uID09IHN0YXJ0T2ZXb3JkKG1fZW5kUG9z
aXRpb24sIExlZnRXb3JkSWZPbkJvdW5kYXJ5KSkgeworICAgICAgICAvLyBPdXIgZmlyc3Qgd29y
ZCBoYXMgZ29uZSBvdmVyIHRoZSBjaGFyYWN0ZXIgbGltaXQuIEluY3JlbWVudCB0aGUgc3RhcnRp
bmcgcG9zaXRpb24gcGFzdCBhbiB1bmNoZWNrYWJsZSB3b3JkLgorICAgICAgICBpbmNyZW1lbnRT
ZW50aW5lbHModHJ1ZSAvKiBzaG91bGRJbmNyZW1lbnRTdGFydFBvc2l0aW9uICovKTsKKyAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQotICAgIC8vIFRoaXMgd2lsbCByZXR1cm4gYW4gcmFuZ2Ugd2l0
aCBubyBzdHJpbmcsIGJ1dCBhbGxvd3MgcHJvY2Vzc2luZyB0byBjb250aW51ZQotICAgIHJldHVy
biBtYWtlUmFuZ2Uoc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOworCisgICAgLy8gSWYgdGhp
cyBpcyBub3QgdGhlIGZpcnN0IHdvcmQsIHJldHVybiBhIFJhbmdlIHdpdGggZW5kIGJvdW5kYXJ5
IHNldCB0byB0aGUgcHJldmlvdXMgd29yZC4KKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlVG9TdGFy
dE9mT3ZlcnNpemVkV29yZCA9IG1ha2VSYW5nZShtX3N0YXJ0UG9zaXRpb24sIG1fY2FjaGVkRW5k
UG9zaXRpb24pOworICAgIC8vIFdlJ3ZlIGNyZWF0ZWQgdGhlIHJhbmdlIHVzaW5nIHRoZSBjYWNo
ZWQgZW5kIHBvc2l0aW9uLiBOb3cgaW5jcmVtZW50IHRoZSBzZW50aW5hbHMgZm9yd2FyZC4KKyAg
ICAvLyBGSVhNRSBJbmNyZW1lbnRpbmcgdGhlIHN0YXJ0L2VuZCBwb3NpdGlvbnMgb3V0c2lkZSBv
ZiBpbmNyZW1lbnRTZW50aW5lbHMKKyAgICBtX3N0YXJ0UG9zaXRpb24gPSBtX2NhY2hlZEVuZFBv
c2l0aW9uOworICAgIG1fZW5kUG9zaXRpb24gPSBlbmRPZldvcmQobV9zdGFydFBvc2l0aW9uKTsK
KyAgICByZXR1cm4gcmFuZ2VUb1N0YXJ0T2ZPdmVyc2l6ZWRXb3JkOworfQorCit2b2lkIFNwZWxs
aW5nSGFuZGxlcjo6aW5jcmVtZW50U2VudGluZWxzKGJvb2wgc2hvdWxkSW5jcmVtZW50U3RhcnRQ
b3NpdGlvbikKK3sKKyAgICBTcGVsbGluZ0xvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiU3Bl
bGxpbmdIYW5kbGVyOjppbmNyZW1lbnRTZW50aW5lbHMgc2hvdWxkSW5jcmVtZW50U3RhcnRQb3Np
dGlvbiAlcyIsIHNob3VsZEluY3JlbWVudFN0YXJ0UG9zaXRpb24gPyAidHJ1ZSIgOiAiZmFsc2Ui
KTsKKworICAgIGlmIChzaG91bGRJbmNyZW1lbnRTdGFydFBvc2l0aW9uKQorICAgICAgICBtX3N0
YXJ0UG9zaXRpb24gPSBtX2VuZFBvc2l0aW9uOworCisgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRX
b3JkID0gbmV4dFdvcmRQb3NpdGlvbihtX2VuZFBvc2l0aW9uKTsKKyAgICBWaXNpYmxlUG9zaXRp
b24gc3RhcnRPZk5leHRXb3JkID0gc3RhcnRPZldvcmQobmV4dFdvcmQsIExlZnRXb3JkSWZPbkJv
dW5kYXJ5KTsKKyAgICBpZiAoRE9NU3VwcG9ydDo6aXNSYW5nZVRleHRBbGxXaGl0ZXNwYWNlKG1f
ZW5kUG9zaXRpb24sIHN0YXJ0T2ZOZXh0V29yZCkpIHsKKyAgICAgICAgbV9jYWNoZWRFbmRQb3Np
dGlvbiA9IHN0YXJ0T2ZOZXh0V29yZDsKKyAgICAgICAgbV9lbmRQb3NpdGlvbiA9IGVuZE9mV29y
ZChzdGFydE9mTmV4dFdvcmQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jYWNo
ZWRFbmRQb3NpdGlvbiA9IG1fZW5kUG9zaXRpb247CisgICAgbV9lbmRQb3NpdGlvbiA9IGVuZE9m
V29yZChuZXh0V29yZCk7CiB9CiAKIH0gLy8gV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9TcGVsbGluZ0hhbmRsZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NwZWxsaW5nSGFuZGxlci5oCmluZGV4IDIy
YTkwNTI1NWUwM2I3YzUzOGNkZmM0NzU0MmQ0YzZmZDg5MDNjMDkuLjFlNTkyMzFkYTljNmFkYzA3
YjQ2NDZlMjE0YjYxYTMzNmFjNTI2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L1NwZWxsaW5nSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NwZWxsaW5nSGFuZGxlci5oCkBAIC0zMCwyMSArMzAs
MjMgQEAgcHVibGljOgogICAgIFNwZWxsaW5nSGFuZGxlcihJbnB1dEhhbmRsZXIqKTsKICAgICB+
U3BlbGxpbmdIYW5kbGVyKCk7CiAKLSAgICB2b2lkIHNwZWxsQ2hlY2tUZXh0QmxvY2soV2ViQ29y
ZTo6VmlzaWJsZVNlbGVjdGlvbiYsIFdlYkNvcmU6OlRleHRDaGVja2luZ1Byb2Nlc3NUeXBlKTsK
KyAgICB2b2lkIHNwZWxsQ2hlY2tUZXh0QmxvY2soY29uc3QgV2ViQ29yZTo6VmlzaWJsZVNlbGVj
dGlvbiYsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1Byb2Nlc3NUeXBlKTsKICAgICBib29s
IGlzU3BlbGxDaGVja0FjdGl2ZSgpIHsgcmV0dXJuIG1faXNTcGVsbENoZWNrQWN0aXZlOyB9CiAg
ICAgdm9pZCBzZXRTcGVsbENoZWNrQWN0aXZlKGJvb2wgYWN0aXZlKSB7IG1faXNTcGVsbENoZWNr
QWN0aXZlID0gYWN0aXZlOyB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBjcmVhdGVTcGVsbENoZWNr
UmVxdWVzdChQYXNzUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiByYW5nZUZvclNwZWxsQ2hlY2tpbmdQ
dHIsIFdlYkNvcmU6OlRleHRDaGVja2luZ1Byb2Nlc3NUeXBlKTsKKyAgICB2b2lkIGNyZWF0ZVNw
ZWxsQ2hlY2tSZXF1ZXN0KFBhc3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IHJhbmdlRm9yU3BlbGxD
aGVja2luZ1B0cik7CiAgICAgdm9pZCBwYXJzZUJsb2NrRm9yU3BlbGxDaGVja2luZyhXZWJDb3Jl
OjpUaW1lcjxTcGVsbGluZ0hhbmRsZXI+Kik7Ci0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpSYW5n
ZT4gZ2V0UmFuZ2VGb3JTcGVsbENoZWNrV2l0aEZpbmVHcmFudWxhcml0eShXZWJDb3JlOjpWaXNp
YmxlUG9zaXRpb24gc3RhcnRQb3NpdGlvbiwgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIGVuZFBv
c2l0aW9uKTsKKyAgICB2b2lkIGluY3JlbWVudFNlbnRpbmVscyhib29sIHNob3VsZEluY3JlbWVu
dFN0YXJ0UG9zaXRpb24pOworICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IGhhbmRsZU92
ZXJzaXplZFJhbmdlKCk7CiAKICAgICBJbnB1dEhhbmRsZXIqIG1faW5wdXRIYW5kbGVyOwogCiAg
ICAgV2ViQ29yZTo6VGltZXI8U3BlbGxpbmdIYW5kbGVyPiBtX3RpbWVyOwotICAgIFdlYkNvcmU6
OlZpc2libGVQb3NpdGlvbiBtX3N0YXJ0T2ZDdXJyZW50TGluZTsKLSAgICBXZWJDb3JlOjpWaXNp
YmxlUG9zaXRpb24gbV9lbmRPZkN1cnJlbnRMaW5lOwotICAgIFdlYkNvcmU6OlZpc2libGVTZWxl
Y3Rpb24gbV9lbmRPZlJhbmdlOworICAgIFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbiBtX3N0YXJ0
UG9zaXRpb247CisgICAgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIG1fZW5kUG9zaXRpb247Cisg
ICAgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIG1fY2FjaGVkRW5kUG9zaXRpb247CisgICAgV2Vi
Q29yZTo6VmlzaWJsZVBvc2l0aW9uIG1fZW5kT2ZSYW5nZTsKICAgICBXZWJDb3JlOjpUZXh0Q2hl
Y2tpbmdQcm9jZXNzVHlwZSBtX3RleHRDaGVja2luZ1Byb2Nlc3NUeXBlOwogICAgIGJvb2wgbV9p
c1NwZWxsQ2hlY2tBY3RpdmU7CiB9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>