<?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>83131</bug_id>
          
          <creation_ts>2012-04-04 02:09:56 -0700</creation_ts>
          <short_desc>[BlackBerry] Force compositing mode when backing store is not active</short_desc>
          <delta_ts>2012-04-05 08:57:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>0</everconfirmed>
          <reporter name="Arvid Nilsson">anilsson</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>fspacek</cc>
    
    <cc>jkjiang</cc>
    
    <cc>jpetsovits</cc>
    
    <cc>manyoso</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>595326</commentid>
    <comment_count>0</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-04-04 02:09:56 -0700</bug_when>
    <thetext>Normally, we&apos;d resort to direct rendering when the backing store is not active. However, direct rendering is broken with OpenGL compositing code path, and we have a better option anyway - use accelerated compositing layer to render the root layer instead of backing store. This will give us a tiled layer backing the root layer.

This in turn will enable multiple web pages to be composited at once with the new WebPageCompositor API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595341</commentid>
    <comment_count>1</comment_count>
      <attachid>135536</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-04-04 02:39:50 -0700</bug_when>
    <thetext>Created attachment 135536
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595342</commentid>
    <comment_count>2</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-04-04 02:41:05 -0700</bug_when>
    <thetext>I think this patch could use an internal reviewer as well as an external, since I think this is not Antonio or Rob&apos;s area of expertise. But you&apos;re certainly welcome to do it if you feel up to the task =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595832</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Spacek">fspacek</who>
    <bug_when>2012-04-04 13:10:04 -0700</bug_when>
    <thetext>The patch looks great to me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596465</commentid>
    <comment_count>4</comment_count>
      <attachid>135800</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-04-05 04:18:48 -0700</bug_when>
    <thetext>Created attachment 135800
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596467</commentid>
    <comment_count>5</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-04-05 04:19:39 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=135800) [details]
&gt; Patch

ChangeLog entry updated with the fact that it was reviewed internally by Filip Spacek. Ready for external review =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596508</commentid>
    <comment_count>6</comment_count>
      <attachid>135800</attachid>
    <who name="George Staikos">staikos</who>
    <bug_when>2012-04-05 05:41:32 -0700</bug_when>
    <thetext>Comment on attachment 135800
Patch

Second r+!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596573</commentid>
    <comment_count>7</comment_count>
      <attachid>135800</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-04-05 08:10:05 -0700</bug_when>
    <thetext>Comment on attachment 135800
Patch

This can be landed indepently of the webcore patch we&apos;re depending on. I&apos;ll just remove the dependency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596615</commentid>
    <comment_count>8</comment_count>
      <attachid>135800</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-05 08:57:27 -0700</bug_when>
    <thetext>Comment on attachment 135800
Patch

Clearing flags on attachment: 135800

Committed r113325: &lt;http://trac.webkit.org/changeset/113325&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596616</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-05 08:57:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135536</attachid>
            <date>2012-04-04 02:39:50 -0700</date>
            <delta_ts>2012-04-05 04:18:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83131-20120404113948.patch</filename>
            <type>text/plain</type>
            <size>40314</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCA0YWJkYWQ4NjVkZjcwZTU5YWI3NDQ5Nzc4ZjQxN2YwYmI3MjY5MmI3Li5kZjViYmIxYzM3
OTBkZWY0MDc0NDE3MzcyYTU5NDU1ZDg5ZTBiYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAxMi0wNC0wNCAgQXJ2aWQgTmlsc3NvbiAgPGFuaWxz
c29uQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIEZvcmNlIGNvbXBvc2l0aW5nIG1v
ZGUgd2hlbiBiYWNraW5nIHN0b3JlIGlzIG5vdCBhY3RpdmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUklNIFBSOiAxMzYzODEKKyAgICAgICAgTm9ybWFs
bHksIHRoZSBCbGFja0JlcnJ5IFdlYktpdCBwb3J0IHJlc29ydHMgdG8gZGlyZWN0IHJlbmRlcmlu
ZyB3aGVuCisgICAgICAgIHRoZSBiYWNraW5nIHN0b3JlIGlzIG5vdCBhY3RpdmUuIEhvd2V2ZXIs
IGRpcmVjdCByZW5kZXJpbmcgaXMgYnJva2VuCisgICAgICAgIHdpdGggdGhlIE9wZW5HTCBjb2Rl
IHBhdGguIFRoaXMgcHJldmVudGVkIG11bHRpcGxlIHdlYiBwYWdlcyBmcm9tIGJlaW5nCisgICAg
ICAgIGRpc3BsYXllZCBhdCBvbmNlIHdpdGggdGhlIG5ldyBXZWJQYWdlQ29tcG9zaXRvciBBUEku
CisKKyAgICAgICAgRml4ZWQgYnkgdXNpbmcgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgbGF5ZXIg
dG8gcmVuZGVyIHRoZSByb290IGxheWVyCisgICAgICAgIGluc3RlYWQgb2YgYmFja2luZyBzdG9y
ZS4gVGhpcyB3aWxsIGdpdmUgdXMgYSB0aWxlZCBsYXllciBiYWNraW5nIHRoZQorICAgICAgICBy
b290IGxheWVyLCB3aGljaCBmb3Igc29tZSB1c2UgY2FzZXMgaXMgZXZlbiBiZXR0ZXIgdGhhbiBk
aXJlY3QKKyAgICAgICAgcmVuZGVyaW5nLgorCisgICAgICAgICogQXBpL0JhY2tpbmdTdG9yZS5j
cHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OnNo
b3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktp
dDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6YmxpdENvbnRlbnRzKToKKyAgICAgICAgKiBBcGkvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpz
ZXRMb2FkU3RhdGUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlOjpzZXRW
aXNpYmxlKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OnN1
c3BlbmRCYWNraW5nU3RvcmUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdl
UHJpdmF0ZTo6cmVzdW1lQmFja2luZ1N0b3JlKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktp
dDo6V2ViUGFnZVByaXZhdGU6OmNvbXBvc2l0b3JEcmF3c1Jvb3RMYXllcik6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6c2V0
Q29tcG9zaXRvckRyYXdzUm9vdExheWVyKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6
V2ViUGFnZVByaXZhdGU6OmRyYXdMYXllcnNPbkNvbW1pdCk6CisgICAgICAgIChCbGFja0JlcnJ5
OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpzY2hlZHVsZVJvb3RMYXllckNvbW1pdCk6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpjb21taXRSb290TGF5ZXIp
OgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6Y29tbWl0Um9v
dExheWVySWZOZWVkZWQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJp
dmF0ZTo6cm9vdExheWVyQ29tbWl0VGltZXJGaXJlZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpX
ZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpzZXRSb290TGF5ZXJDb21wb3NpdGluZ1RocmVhZCk6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpjcmVhdGVDb21wb3Np
dG9yKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OnN1c3Bl
bmRSb290TGF5ZXJDb21taXQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdl
UHJpdmF0ZTo6c2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9uaXphdGlvbik6CisgICAgICAg
ICogQXBpL1dlYlBhZ2VDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktp
dDo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGUpOgor
ICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OmRy
YXdzUm9vdExheWVyKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpX
ZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6ZHJhd0xheWVycyk6CisgICAgICAgICog
QXBpL1dlYlBhZ2VDb21wb3NpdG9yX3AuaDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6
V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpyb290TGF5ZXIpOgorICAgICAgICAoV2ViUGFnZUNv
bXBvc2l0b3JQcml2YXRlKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNv
bXBvc2l0b3JQcml2YXRlOjpzZXREcmF3c1Jvb3RMYXllcik6CisgICAgICAgICogQXBpL1dlYlBh
Z2VfcC5oOgorICAgICAgICAoV2ViUGFnZVByaXZhdGUpOgorCiAyMDEyLTA0LTAzICBNaWtlIExh
dHRhbnppbyAgPG1sYXR0YW56aW9AcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gRXhw
b3NlIENhc2VTZW5zaXRpdmUsIFdyYXAsIGFuZCBIaWdobGlnaHRBbGxNYXRjaGVzIGluIFdlYlBh
Z2U6OmZpbmROZXh0U3RyaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9BcGkvQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFj
a2luZ1N0b3JlLmNwcAppbmRleCBkZTMyMWI4NWM3Yzg5NjVlMGNmZTJjMGQ0ZjU2NzVmYjQ0MGU5
MDg5Li42YTk5OTgxMmFjM2EyNTc3ZWY1YzIyZjZiMjdkODgzM2Q3Y2ZmYzBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuY3BwCkBAIC0yNDMsOSArMjQz
LDIxIEBAIEJhY2tpbmdTdG9yZVByaXZhdGU6On5CYWNraW5nU3RvcmVQcml2YXRlKCkKIAogYm9v
bCBCYWNraW5nU3RvcmVQcml2YXRlOjpzaG91bGREaXJlY3RSZW5kZXJpbmdUb1dpbmRvdygpIGNv
bnN0CiB7Ci0gICAgaWYgKG1fd2ViUGFnZS0+c2V0dGluZ3MoKS0+aXNEaXJlY3RSZW5kZXJpbmdU
b1dpbmRvd0VuYWJsZWQoKSB8fCAhaXNBY3RpdmUoKSkKKyAgICAvLyBEaXJlY3QgcmVuZGVyaW5n
IGRvZXNuJ3Qgd29yayB3aXRoIE9wZW5HTCBjb21wb3NpdGluZyBjb2RlIHBhdGhzIGR1ZSB0bwor
ICAgIC8vIGEgcmFjZSBjb25kaXRpb24gb24gd2hpY2ggdGhyZWFkJ3MgRUdMIGNvbnRleHQgZ2V0
cyB0byBtYWtlIHRoZSBzdXJmYWNlCisgICAgLy8gY3VycmVudCwgc2VlIFBSIDEwNTc1MC4KKyAg
ICAvLyBBcyBhIHdvcmthcm91bmQsIHdlIHdpbGwgYmUgdXNpbmcgY29tcG9zaXRvciB0byBkcmF3
IHRoZSByb290IGxheWVyLgorICAgIGlmIChpc09wZW5HTENvbXBvc2l0aW5nKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX3dlYlBhZ2UtPnNldHRpbmdzKCktPmlzRGlyZWN0
UmVuZGVyaW5nVG9XaW5kb3dFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAg
Ly8gSWYgdGhlIEJhY2tpbmdTdG9yZSBpcyBpbmFjdGl2ZSwgc2VlIGlmIHRoZXJlJ3MgYSBjb21w
b3NpdG9yIHRvIGRvIHRoZQorICAgIC8vIHdvcmsgb2YgcmVuZGVyaW5nIHRoZSByb290IGxheWVy
LgorICAgIGlmICghaXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuICFtX3dlYlBhZ2UtPmQtPmNv
bXBvc2l0b3JEcmF3c1Jvb3RMYXllcigpOworCiAgICAgY29uc3QgQmFja2luZ1N0b3JlR2VvbWV0
cnkqIGN1cnJlbnRTdGF0ZSA9IGZyb250U3RhdGUoKTsKICAgICBjb25zdCB1bnNpZ25lZCB0aWxl
c05lY2Vzc2FyeSA9IG1pbmltdW1OdW1iZXJPZlRpbGVzV2lkZSgpICogbWluaW11bU51bWJlck9m
VGlsZXNIaWdoKCk7CiAgICAgY29uc3QgdW5zaWduZWQgdGlsZXNBdmFpbGFibGUgPSBjdXJyZW50
U3RhdGUtPm51bWJlck9mVGlsZXNXaWRlKCkgKiBjdXJyZW50U3RhdGUtPm51bWJlck9mVGlsZXNI
aWdoKCk7CkBAIC0xMjIyLDcgKzEyMzQsNyBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJs
aXRDb250ZW50cyhjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgZHN0UmVjdCwKICAgICBpZiAoc2hv
dWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KCFtX3dlYlBhZ2UtPmlzVmlzaWJsZSgpIHx8IG1fc3VzcGVuZFNjcmVlblVwZGF0ZXMgfHwgIWlz
QWN0aXZlKCkpIHsKKyAgICBpZiAoIW1fd2ViUGFnZS0+aXNWaXNpYmxlKCkgfHwgbV9zdXNwZW5k
U2NyZWVuVXBkYXRlcykgewogICAgICAgICAvLyBBdm9pZCBjbGllbnQgZ29pbmcgaW50byBidXN5
IGxvb3Agd2hpbGUgYmxpdCBpcyBpbXBvc3NpYmxlLgogICAgICAgICBpZiAoZm9yY2UpCiAgICAg
ICAgICAgICBtX2hhc0JsaXRKb2JzID0gZmFsc2U7CkBAIC0xMjU4LDcgKzEyNzAsNiBAQCB2b2lk
IEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRDb250ZW50cyhjb25zdCBQbGF0Zm9ybTo6SW50UmVj
dCYgZHN0UmVjdCwKIAogICAgIG1faGFzQmxpdEpvYnMgPSBmYWxzZTsKIAotICAgIEJhY2tpbmdT
dG9yZUdlb21ldHJ5KiBjdXJyZW50U3RhdGUgPSBmcm9udFN0YXRlKCk7CiAgICAgY29uc3QgUGxh
dGZvcm06OkludFJlY3QgY29udGVudHNSZWN0ID0gUGxhdGZvcm06OkludFJlY3QoUGxhdGZvcm06
OkludFBvaW50KDAsIDApLCBtX2NsaWVudC0+dHJhbnNmb3JtZWRDb250ZW50c1NpemUoKSk7CiAK
ICNpZiBERUJVR19WSVNVQUxJWkUKQEAgLTEyNjcsNyArMTI3OCw3IEBAIHZvaWQgQmFja2luZ1N0
b3JlUHJpdmF0ZTo6YmxpdENvbnRlbnRzKGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBkc3RSZWN0
LAogICAgIC8vIGNhbiB2aXN1YWxpemUgdGhlIGVudGlyZSBiYWNraW5nc3RvcmUgYW5kIHdoYXQg
aXQgaXMgZG9pbmcgd2hlbiB3ZQogICAgIC8vIHNjcm9sbCBhbmQgem9vbSEKICAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgbm90IGV4cGxpY2l0ZWx5IGRlcGVuZCBvbiBXZWJDb3JlOjouCi0gICAg
V2ViQ29yZTo6SW50UmVjdCBkZWJ1Z1JlY3QgPSBjdXJyZW50U3RhdGUtPmJhY2tpbmdTdG9yZVJl
Y3QoKTsKKyAgICBXZWJDb3JlOjpJbnRSZWN0IGRlYnVnUmVjdCA9IGZyb250U3RhdGUoKS0+YmFj
a2luZ1N0b3JlUmVjdCgpOwogICAgIGRlYnVnUmVjdC51bml0ZShtX3dlYlBhZ2UtPmNsaWVudCgp
LT51c2VySW50ZXJmYWNlQmxpdHRlZFZpc2libGVDb250ZW50c1JlY3QoKSk7CiAgICAgaWYgKGRl
YnVnUmVjdC53aWR0aCgpIDwgZGVidWdSZWN0LmhlaWdodCgpKQogICAgICAgICBkZWJ1Z1JlY3Qu
c2V0V2lkdGgoY2VpbChkb3VibGUoc3JjUmVjdC53aWR0aCgpKSAqIChkb3VibGUoZGVidWdSZWN0
LmhlaWdodCgpKSAvIHNyY1JlY3QuaGVpZ2h0KCkpKSk7CkBAIC0xMjgzLDggKzEyOTQsNiBAQCB2
b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRDb250ZW50cyhjb25zdCBQbGF0Zm9ybTo6SW50
UmVjdCYgZHN0UmVjdCwKICAgICBpZiAoIWNvbnRlbnRzLmlzRW1wdHkoKSkKICAgICAgICAgdHJh
bnNmb3JtYXRpb24gPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVjdFRvUmVjdChGbG9hdFJlY3Qo
RmxvYXRQb2ludCgwLjAsIDAuMCksIFdlYkNvcmU6OkludFNpemUoY29udGVudHMuc2l6ZSgpKSks
IFdlYkNvcmU6OkludFJlY3QoZHN0UmVjdCkpOwogCi0gICAgYm9vbCBibGl0dGluZ0RpcmVjdGx5
VG9Db21wb3NpdGluZ1dpbmRvdyA9IGlzT3BlbkdMQ29tcG9zaXRpbmcoKTsKLQogI2lmIERFQlVH
X0JBQ0tJTkdTVE9SRQogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpsb2coQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
QmFja2luZ1N0b3JlUHJpdmF0ZTo6YmxpdENvbnRlbnRzIGRzdFJlY3Q9KCVkLCVkICVkeCVkKSBz
cmNSZWN0PSglZCwlZCAlZHglZCkiLApAQCAtMTI5NSwxNjEgKzEzMDQsMTY4IEBAIHZvaWQgQmFj
a2luZ1N0b3JlUHJpdmF0ZTo6YmxpdENvbnRlbnRzKGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBk
c3RSZWN0LAogICAgIFBsYXRmb3JtOjpJbnRQb2ludCBvcmlnaW4gPSBjb250ZW50cy5sb2NhdGlv
bigpOwogICAgIFBsYXRmb3JtOjpJbnRSZWN0IGNvbnRlbnRzQ2xpcHBlZCA9IGNvbnRlbnRzOwog
Ci0gICAgcGFpbnREZWZhdWx0QmFja2dyb3VuZChjb250ZW50cywgdHJhbnNmb3JtYXRpb24sIGZh
bHNlIC8qZmx1c2gqLyk7CisgICAgVmVjdG9yPFRpbGVCdWZmZXIqPiBibGl0dGVkVGlsZXM7CiAK
LSAgICBUaWxlTWFwIGN1cnJlbnRNYXAgPSBjdXJyZW50U3RhdGUtPnRpbGVNYXAoKTsKKyAgICBp
ZiAoaXNBY3RpdmUoKSAmJiAhbV93ZWJQYWdlLT5kLT5jb21wb3NpdG9yRHJhd3NSb290TGF5ZXIo
KSkgeworICAgICAgICBwYWludERlZmF1bHRCYWNrZ3JvdW5kKGNvbnRlbnRzLCB0cmFuc2Zvcm1h
dGlvbiwgZmFsc2UgLypmbHVzaCovKTsKKworICAgICAgICBCYWNraW5nU3RvcmVHZW9tZXRyeSog
Y3VycmVudFN0YXRlID0gZnJvbnRTdGF0ZSgpOworICAgICAgICBUaWxlTWFwIGN1cnJlbnRNYXAg
PSBjdXJyZW50U3RhdGUtPnRpbGVNYXAoKTsKIAogI2lmIERFQlVHX0NIRUNLRVJCT0FSRAotICAg
IGJvb2wgYmxpdENoZWNrZXJlZCA9IGZhbHNlOworICAgICAgICBib29sIGJsaXRDaGVja2VyZWQg
PSBmYWxzZTsKICNlbmRpZgogCi0gICAgLy8gRG9uJ3QgY2xpcCB0byBjb250ZW50cyBpZiBpdCBp
cyBlbXB0eSBzbyB3ZSBjYW4gc3RpbGwgcGFpbnQgZGVmYXVsdCBiYWNrZ3JvdW5kLgotICAgIGlm
ICghY29udGVudHNSZWN0LmlzRW1wdHkoKSkgewotICAgICAgICBjb250ZW50c0NsaXBwZWQuaW50
ZXJzZWN0KGNvbnRlbnRzUmVjdCk7Ci0gICAgICAgIGlmIChjb250ZW50c0NsaXBwZWQuaXNFbXB0
eSgpKSB7Ci0gICAgICAgICAgICBpbnZhbGlkYXRlV2luZG93KGRzdFJlY3QpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIC8vIERvbid0IGNsaXAgdG8gY29udGVudHMg
aWYgaXQgaXMgZW1wdHkgc28gd2UgY2FuIHN0aWxsIHBhaW50IGRlZmF1bHQgYmFja2dyb3VuZC4K
KyAgICAgICAgaWYgKCFjb250ZW50c1JlY3QuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBjb250
ZW50c0NsaXBwZWQuaW50ZXJzZWN0KGNvbnRlbnRzUmVjdCk7CisgICAgICAgICAgICBpZiAoY29u
dGVudHNDbGlwcGVkLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIGludmFsaWRhdGVXaW5k
b3coZHN0UmVjdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogCi0g
ICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uIGNvbnRlbnRzUmVnaW9uID0gY29udGVudHND
bGlwcGVkOwotICAgICAgICBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbiBiYWNraW5nU3RvcmVSZWdp
b24gPSBjdXJyZW50U3RhdGUtPmJhY2tpbmdTdG9yZVJlY3QoKTsKLSAgICAgICAgUGxhdGZvcm06
OkludFJlY3RSZWdpb24gY2hlY2tlcmVkUmVnaW9uCi0gICAgICAgICAgICA9IFBsYXRmb3JtOjpJ
bnRSZWN0UmVnaW9uOjpzdWJ0cmFjdFJlZ2lvbnMoY29udGVudHNSZWdpb24sIGJhY2tpbmdTdG9y
ZVJlZ2lvbik7Ci0KLSAgICAgICAgLy8gQmxpdCBjaGVja2VyZWQgdG8gdGhvc2UgcGFydHMgdGhh
dCBhcmUgbm90IGNvdmVyZWQgYnkgdGhlIGJhY2tpbmdTdG9yZVJlY3QuCi0gICAgICAgIEludFJl
Y3RMaXN0IGNoZWNrZXJlZFJlY3RzID0gY2hlY2tlcmVkUmVnaW9uLnJlY3RzKCk7Ci0gICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hlY2tlcmVkUmVjdHMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0IGRzdFJlY3QgPSB0cmFuc2Zvcm1hdGlvbi5tYXBS
ZWN0KFBsYXRmb3JtOjpJbnRSZWN0KAotICAgICAgICAgICAgICAgIFBsYXRmb3JtOjpJbnRQb2lu
dChjaGVja2VyZWRSZWN0cy5hdChpKS54KCkgLSBvcmlnaW4ueCgpLCBjaGVja2VyZWRSZWN0cy5h
dChpKS55KCkgLSBvcmlnaW4ueSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hlY2tlcmVkUmVjdHMuYXQoaSkuc2l6ZSgpKSk7CisgICAgICAgICAgICBQbGF0Zm9ybTo6
SW50UmVjdFJlZ2lvbiBjb250ZW50c1JlZ2lvbiA9IGNvbnRlbnRzQ2xpcHBlZDsKKyAgICAgICAg
ICAgIFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uIGJhY2tpbmdTdG9yZVJlZ2lvbiA9IGN1cnJlbnRT
dGF0ZS0+YmFja2luZ1N0b3JlUmVjdCgpOworICAgICAgICAgICAgUGxhdGZvcm06OkludFJlY3RS
ZWdpb24gY2hlY2tlcmVkUmVnaW9uCisgICAgICAgICAgICAgICAgPSBQbGF0Zm9ybTo6SW50UmVj
dFJlZ2lvbjo6c3VidHJhY3RSZWdpb25zKGNvbnRlbnRzUmVnaW9uLCBiYWNraW5nU3RvcmVSZWdp
b24pOworCisgICAgICAgICAgICAvLyBCbGl0IGNoZWNrZXJlZCB0byB0aG9zZSBwYXJ0cyB0aGF0
IGFyZSBub3QgY292ZXJlZCBieSB0aGUgYmFja2luZ1N0b3JlUmVjdC4KKyAgICAgICAgICAgIElu
dFJlY3RMaXN0IGNoZWNrZXJlZFJlY3RzID0gY2hlY2tlcmVkUmVnaW9uLnJlY3RzKCk7CisgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoZWNrZXJlZFJlY3RzLnNpemUoKTsgKytp
KSB7CisgICAgICAgICAgICAgICAgUGxhdGZvcm06OkludFJlY3QgZHN0UmVjdCA9IHRyYW5zZm9y
bWF0aW9uLm1hcFJlY3QoUGxhdGZvcm06OkludFJlY3QoCisgICAgICAgICAgICAgICAgICAgIFBs
YXRmb3JtOjpJbnRQb2ludChjaGVja2VyZWRSZWN0cy5hdChpKS54KCkgLSBvcmlnaW4ueCgpLCBj
aGVja2VyZWRSZWN0cy5hdChpKS55KCkgLSBvcmlnaW4ueSgpKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZXJlZFJlY3RzLmF0KGkpLnNpemUoKSkpOwogI2lm
IERFQlVHX0NIRUNLRVJCT0FSRAotICAgICAgICAgICAgYmxpdENoZWNrZXJlZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgYmxpdENoZWNrZXJlZCA9IHRydWU7CiAjZW5kaWYKLSAgICAgICAgICAg
IGNoZWNrZXJXaW5kb3coZHN0UmVjdCwgY2hlY2tlcmVkUmVjdHMuYXQoaSkubG9jYXRpb24oKSwg
dHJhbnNmb3JtYXRpb24uYSgpKTsKKyAgICAgICAgICAgICAgICBjaGVja2VyV2luZG93KGRzdFJl
Y3QsIGNoZWNrZXJlZFJlY3RzLmF0KGkpLmxvY2F0aW9uKCksIHRyYW5zZm9ybWF0aW9uLmEoKSk7
CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9CiAKLSAgICBWZWN0b3I8VGlsZUJ1ZmZl
cio+IGJsaXR0ZWRUaWxlczsKKyAgICAgICAgLy8gR2V0IHRoZSBsaXN0IG9mIHRpbGUgcmVjdHMg
dGhhdCBtYWtldXAgdGhlIGNvbnRlbnQuCisgICAgICAgIFRpbGVSZWN0TGlzdCB0aWxlUmVjdExp
c3QgPSBtYXBGcm9tVHJhbnNmb3JtZWRDb250ZW50c1RvVGlsZXMoY29udGVudHNDbGlwcGVkLCBj
dXJyZW50U3RhdGUpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRpbGVSZWN0TGlz
dC5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgVGlsZVJlY3QgdGlsZVJlY3QgPSB0aWxlUmVj
dExpc3RbaV07CisgICAgICAgICAgICBUaWxlSW5kZXggaW5kZXggPSB0aWxlUmVjdC5maXJzdDsK
KyAgICAgICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0IGRpcnR5VGlsZVJlY3QgPSB0aWxlUmVjdC5z
ZWNvbmQ7CisgICAgICAgICAgICBCYWNraW5nU3RvcmVUaWxlKiB0aWxlID0gY3VycmVudE1hcC5n
ZXQoaW5kZXgpOworICAgICAgICAgICAgVGlsZUJ1ZmZlciogdGlsZUJ1ZmZlciA9IHRpbGUtPmZy
b250QnVmZmVyKCk7CiAKLSAgICAvLyBHZXQgdGhlIGxpc3Qgb2YgdGlsZSByZWN0cyB0aGF0IG1h
a2V1cCB0aGUgY29udGVudC4KLSAgICBUaWxlUmVjdExpc3QgdGlsZVJlY3RMaXN0ID0gbWFwRnJv
bVRyYW5zZm9ybWVkQ29udGVudHNUb1RpbGVzKGNvbnRlbnRzQ2xpcHBlZCwgY3VycmVudFN0YXRl
KTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRpbGVSZWN0TGlzdC5zaXplKCk7ICsraSkg
ewotICAgICAgICBUaWxlUmVjdCB0aWxlUmVjdCA9IHRpbGVSZWN0TGlzdFtpXTsKLSAgICAgICAg
VGlsZUluZGV4IGluZGV4ID0gdGlsZVJlY3QuZmlyc3Q7Ci0gICAgICAgIFBsYXRmb3JtOjpJbnRS
ZWN0IGRpcnR5VGlsZVJlY3QgPSB0aWxlUmVjdC5zZWNvbmQ7Ci0gICAgICAgIEJhY2tpbmdTdG9y
ZVRpbGUqIHRpbGUgPSBjdXJyZW50TWFwLmdldChpbmRleCk7Ci0gICAgICAgIFRpbGVCdWZmZXIq
IHRpbGVCdWZmZXIgPSB0aWxlLT5mcm9udEJ1ZmZlcigpOworICAgICAgICAgICAgLy8gVGhpcyBk
aXJ0eSByZWN0IGlzIGluIHRpbGUgY29vcmRpbmF0ZXMsIGJ1dCBpdCBuZWVkcyB0byBiZSBpbgor
ICAgICAgICAgICAgLy8gdHJhbnNmb3JtZWQgY29udGVudHMgY29vcmRpbmF0ZXMuCisgICAgICAg
ICAgICBQbGF0Zm9ybTo6SW50UmVjdCBkaXJ0eVJlY3QKKyAgICAgICAgICAgICAgICA9IG1hcEZy
b21UaWxlc1RvVHJhbnNmb3JtZWRDb250ZW50cyh0aWxlUmVjdCwgY3VycmVudFN0YXRlLT5iYWNr
aW5nU3RvcmVSZWN0KCkpOwogCi0gICAgICAgIC8vIFRoaXMgZGlydHkgcmVjdCBpcyBpbiB0aWxl
IGNvb3JkaW5hdGVzLCBidXQgaXQgbmVlZHMgdG8gYmUgaW4KLSAgICAgICAgLy8gdHJhbnNmb3Jt
ZWQgY29udGVudHMgY29vcmRpbmF0ZXMuCi0gICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0IGRpcnR5
UmVjdAotICAgICAgICAgICAgPSBtYXBGcm9tVGlsZXNUb1RyYW5zZm9ybWVkQ29udGVudHModGls
ZVJlY3QsIGN1cnJlbnRTdGF0ZS0+YmFja2luZ1N0b3JlUmVjdCgpKTsKKyAgICAgICAgICAgIC8v
IERvbid0IGNsaXAgdG8gY29udGVudHMgaWYgaXQgaXMgZW1wdHkgc28gd2UgY2FuIHN0aWxsIHBh
aW50IGRlZmF1bHQgYmFja2dyb3VuZC4KKyAgICAgICAgICAgIGlmICghY29udGVudHNSZWN0Lmlz
RW1wdHkoKSkgeworICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSB3ZSBzaG91bGQgY2xpcCB0
aGUgY29udGVudHMgc2l6ZSBhbmQgYmxpdC4KKyAgICAgICAgICAgICAgICBkaXJ0eVJlY3QuaW50
ZXJzZWN0KGNvbnRlbnRzUmVjdCk7CiAKLSAgICAgICAgLy8gRG9uJ3QgY2xpcCB0byBjb250ZW50
cyBpZiBpdCBpcyBlbXB0eSBzbyB3ZSBjYW4gc3RpbGwgcGFpbnQgZGVmYXVsdCBiYWNrZ3JvdW5k
LgotICAgICAgICBpZiAoIWNvbnRlbnRzUmVjdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIC8v
IE90aGVyd2lzZSB3ZSBzaG91bGQgY2xpcCB0aGUgY29udGVudHMgc2l6ZSBhbmQgYmxpdC4KLSAg
ICAgICAgICAgIGRpcnR5UmVjdC5pbnRlcnNlY3QoY29udGVudHNSZWN0KTsKKyAgICAgICAgICAg
ICAgICAvLyBXZSBwcm9iYWJseSBoYXZlIGV4dHJhIHRpbGVzIHNpbmNlIHRoZSBjb250ZW50cyBz
aXplIGlzIHNvIHNtYWxsLgorICAgICAgICAgICAgICAgIC8vIFNhdmUgc29tZSBjeWNsZXMgaGVy
ZS4uLgorICAgICAgICAgICAgICAgIGlmIChkaXJ0eVJlY3QuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gTm93
LCB0aGlzIGRpcnR5IHJlY3QgaXMgaW4gdHJhbnNmb3JtZWQgY29vcmRpbmF0ZXMgcmVsYXRpdmUg
dG8gdGhlCisgICAgICAgICAgICAvLyB0cmFuc2Zvcm1lZCBjb250ZW50cywgYnV0IHVsdGltYXRl
bHkgaXQgbmVlZHMgdG8gYmUgdHJhbnNmb3JtZWQKKyAgICAgICAgICAgIC8vIGNvb3JkaW5hdGVz
IHJlbGF0aXZlIHRvIHRoZSB2aWV3cG9ydC4KKyAgICAgICAgICAgIGRpcnR5UmVjdC5tb3ZlKC1v
cmlnaW4ueCgpLCAtb3JpZ2luLnkoKSk7CiAKLSAgICAgICAgICAgIC8vIFdlIHByb2JhYmx5IGhh
dmUgZXh0cmEgdGlsZXMgc2luY2UgdGhlIGNvbnRlbnRzIHNpemUgaXMgc28gc21hbGwuCiAgICAg
ICAgICAgICAvLyBTYXZlIHNvbWUgY3ljbGVzIGhlcmUuLi4KLSAgICAgICAgICAgIGlmIChkaXJ0
eVJlY3QuaXNFbXB0eSgpKQorICAgICAgICAgICAgaWYgKGRpcnR5UmVjdC5pc0VtcHR5KCkgfHwg
ZGlydHlUaWxlUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIH0KIAotICAgICAgICAvLyBOb3csIHRoaXMgZGlydHkgcmVjdCBpcyBpbiB0cmFuc2Zvcm1l
ZCBjb29yZGluYXRlcyByZWxhdGl2ZSB0byB0aGUKLSAgICAgICAgLy8gdHJhbnNmb3JtZWQgY29u
dGVudHMsIGJ1dCB1bHRpbWF0ZWx5IGl0IG5lZWRzIHRvIGJlIHRyYW5zZm9ybWVkCi0gICAgICAg
IC8vIGNvb3JkaW5hdGVzIHJlbGF0aXZlIHRvIHRoZSB2aWV3cG9ydC4KLSAgICAgICAgZGlydHlS
ZWN0Lm1vdmUoLW9yaWdpbi54KCksIC1vcmlnaW4ueSgpKTsKKyAgICAgICAgICAgIFRpbGVSZWN0
IHdob2xlVGlsZVJlY3Q7CisgICAgICAgICAgICB3aG9sZVRpbGVSZWN0LmZpcnN0ID0gaW5kZXg7
CisgICAgICAgICAgICB3aG9sZVRpbGVSZWN0LnNlY29uZCA9IHRoaXMtPnRpbGVSZWN0KCk7CiAK
LSAgICAgICAgLy8gU2F2ZSBzb21lIGN5Y2xlcyBoZXJlLi4uCi0gICAgICAgIGlmIChkaXJ0eVJl
Y3QuaXNFbXB0eSgpIHx8IGRpcnR5VGlsZVJlY3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICBib29sIGNvbW1pdHRlZCA9IHRpbGUtPmlzQ29tbWl0dGVkKCk7
CisgICAgICAgICAgICBib29sIHJlbmRlcmVkID0gdGlsZUJ1ZmZlci0+aXNSZW5kZXJlZChkaXJ0
eVRpbGVSZWN0KTsKKyAgICAgICAgICAgIGJvb2wgcGFpbnRDaGVja2VyZWQgPSAhY29tbWl0dGVk
IHx8ICFyZW5kZXJlZDsKIAotICAgICAgICBUaWxlUmVjdCB3aG9sZVRpbGVSZWN0OwotICAgICAg
ICB3aG9sZVRpbGVSZWN0LmZpcnN0ID0gaW5kZXg7Ci0gICAgICAgIHdob2xlVGlsZVJlY3Quc2Vj
b25kID0gdGhpcy0+dGlsZVJlY3QoKTsKLQotICAgICAgICBib29sIGNvbW1pdHRlZCA9IHRpbGUt
PmlzQ29tbWl0dGVkKCk7Ci0gICAgICAgIGJvb2wgcmVuZGVyZWQgPSB0aWxlQnVmZmVyLT5pc1Jl
bmRlcmVkKGRpcnR5VGlsZVJlY3QpOwotICAgICAgICBib29sIHBhaW50Q2hlY2tlcmVkID0gIWNv
bW1pdHRlZCB8fCAhcmVuZGVyZWQ7Ci0KLSAgICAgICAgaWYgKHBhaW50Q2hlY2tlcmVkKSB7Ci0g
ICAgICAgICAgICBQbGF0Zm9ybTo6SW50UmVjdCBkaXJ0eVJlY3RUID0gdHJhbnNmb3JtYXRpb24u
bWFwUmVjdChkaXJ0eVJlY3QpOworICAgICAgICAgICAgaWYgKHBhaW50Q2hlY2tlcmVkKSB7Cisg
ICAgICAgICAgICAgICAgUGxhdGZvcm06OkludFJlY3QgZGlydHlSZWN0VCA9IHRyYW5zZm9ybWF0
aW9uLm1hcFJlY3QoZGlydHlSZWN0KTsKIAotICAgICAgICAgICAgaWYgKCF0cmFuc2Zvcm1hdGlv
bi5pc0lkZW50aXR5KCkpIHsKLSAgICAgICAgICAgICAgICAvLyBCZWNhdXNlIG9mIHJvdW5kaW5n
IGl0IGlzIHBvc3NpYmxlIHRoYXQgZGlydHlSZWN0IGNvdWxkIGJlIG9mZi1ieS1vbmUgbGFyZ2Vy
Ci0gICAgICAgICAgICAgICAgLy8gdGhhbiB0aGUgc3VyZmFjZSBzaXplIG9mIHRoZSBkc3QgYnVm
ZmVyLiBXZSBwcmV2ZW50IHRoaXMgaGVyZSwgYnkgY2xhbXBpbmcKLSAgICAgICAgICAgICAgICAv
LyBpdCB0byBlbnN1cmUgdGhhdCBjYW4ndCBoYXBwZW4uCi0gICAgICAgICAgICAgICAgZGlydHlS
ZWN0VC5pbnRlcnNlY3QoUGxhdGZvcm06OkludFJlY3QoUGxhdGZvcm06OkludFBvaW50KDAsIDAp
LCBzdXJmYWNlU2l6ZSgpKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb25zdCBQbGF0
Zm9ybTo6SW50UG9pbnQgY29udGVudHNPcmlnaW4oZGlydHlSZWN0LngoKSArIG9yaWdpbi54KCks
IGRpcnR5UmVjdC55KCkgKyBvcmlnaW4ueSgpKTsKKyAgICAgICAgICAgICAgICBpZiAoIXRyYW5z
Zm9ybWF0aW9uLmlzSWRlbnRpdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBCZWNhdXNl
IG9mIHJvdW5kaW5nIGl0IGlzIHBvc3NpYmxlIHRoYXQgZGlydHlSZWN0IGNvdWxkIGJlIG9mZi1i
eS1vbmUgbGFyZ2VyCisgICAgICAgICAgICAgICAgICAgIC8vIHRoYW4gdGhlIHN1cmZhY2Ugc2l6
ZSBvZiB0aGUgZHN0IGJ1ZmZlci4gV2UgcHJldmVudCB0aGlzIGhlcmUsIGJ5IGNsYW1waW5nCisg
ICAgICAgICAgICAgICAgICAgIC8vIGl0IHRvIGVuc3VyZSB0aGF0IGNhbid0IGhhcHBlbi4KKyAg
ICAgICAgICAgICAgICAgICAgZGlydHlSZWN0VC5pbnRlcnNlY3QoUGxhdGZvcm06OkludFJlY3Qo
UGxhdGZvcm06OkludFBvaW50KDAsIDApLCBzdXJmYWNlU2l6ZSgpKSk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGNvbnN0IFBsYXRmb3JtOjpJbnRQb2ludCBjb250ZW50c09y
aWdpbihkaXJ0eVJlY3QueCgpICsgb3JpZ2luLngoKSwgZGlydHlSZWN0LnkoKSArIG9yaWdpbi55
KCkpOwogI2lmIERFQlVHX0NIRUNLRVJCT0FSRAotICAgICAgICAgICAgYmxpdENoZWNrZXJlZCA9
IHRydWU7CisgICAgICAgICAgICAgICAgYmxpdENoZWNrZXJlZCA9IHRydWU7CiAjZW5kaWYKLSAg
ICAgICAgICAgIGNoZWNrZXJXaW5kb3coZGlydHlSZWN0VCwgY29udGVudHNPcmlnaW4sIHRyYW5z
Zm9ybWF0aW9uLmEoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgICAgICBjaGVja2VyV2luZG93
KGRpcnR5UmVjdFQsIGNvbnRlbnRzT3JpZ2luLCB0cmFuc2Zvcm1hdGlvbi5hKCkpOworICAgICAg
ICAgICAgfQogCi0gICAgICAgIC8vIEJsaXQgdGhlIHZpc2libGUgYnVmZmVyIGhlcmUgaWYgd2Ug
aGF2ZSB2aXNpYmxlIHpvb20gam9icy4KLSAgICAgICAgaWYgKG1fcmVuZGVyUXVldWUtPmhhc0N1
cnJlbnRWaXNpYmxlWm9vbUpvYigpKSB7CisgICAgICAgICAgICAvLyBCbGl0IHRoZSB2aXNpYmxl
IGJ1ZmZlciBoZXJlIGlmIHdlIGhhdmUgdmlzaWJsZSB6b29tIGpvYnMuCisgICAgICAgICAgICBp
ZiAobV9yZW5kZXJRdWV1ZS0+aGFzQ3VycmVudFZpc2libGVab29tSm9iKCkpIHsKIAotICAgICAg
ICAgICAgLy8gTmVlZHMgdG8gYmUgaW4gc2FtZSBjb29yZGluYXRlIHN5c3RlbSBhcyBkaXJ0eVJl
Y3QuCi0gICAgICAgICAgICBQbGF0Zm9ybTo6SW50UmVjdCB2aXNpYmxlVGlsZUJ1ZmZlclJlY3Qg
PSBtX3Zpc2libGVUaWxlQnVmZmVyUmVjdDsKLSAgICAgICAgICAgIHZpc2libGVUaWxlQnVmZmVy
UmVjdC5tb3ZlKC1vcmlnaW4ueCgpLCAtb3JpZ2luLnkoKSk7CisgICAgICAgICAgICAgICAgLy8g
TmVlZHMgdG8gYmUgaW4gc2FtZSBjb29yZGluYXRlIHN5c3RlbSBhcyBkaXJ0eVJlY3QuCisgICAg
ICAgICAgICAgICAgUGxhdGZvcm06OkludFJlY3QgdmlzaWJsZVRpbGVCdWZmZXJSZWN0ID0gbV92
aXNpYmxlVGlsZUJ1ZmZlclJlY3Q7CisgICAgICAgICAgICAgICAgdmlzaWJsZVRpbGVCdWZmZXJS
ZWN0Lm1vdmUoLW9yaWdpbi54KCksIC1vcmlnaW4ueSgpKTsKIAotICAgICAgICAgICAgLy8gQ2xp
cCB0byB0aGUgdmlzaWJsZVRpbGVCdWZmZXJSZWN0LgotICAgICAgICAgICAgZGlydHlSZWN0Lmlu
dGVyc2VjdCh2aXNpYmxlVGlsZUJ1ZmZlclJlY3QpOworICAgICAgICAgICAgICAgIC8vIENsaXAg
dG8gdGhlIHZpc2libGVUaWxlQnVmZmVyUmVjdC4KKyAgICAgICAgICAgICAgICBkaXJ0eVJlY3Qu
aW50ZXJzZWN0KHZpc2libGVUaWxlQnVmZmVyUmVjdCk7CiAKLSAgICAgICAgICAgIC8vIENsaXAg
dG8gdGhlIGRpcnR5UmVjdC4KLSAgICAgICAgICAgIHZpc2libGVUaWxlQnVmZmVyUmVjdC5pbnRl
cnNlY3QoZGlydHlSZWN0KTsKKyAgICAgICAgICAgICAgICAvLyBDbGlwIHRvIHRoZSBkaXJ0eVJl
Y3QuCisgICAgICAgICAgICAgICAgdmlzaWJsZVRpbGVCdWZmZXJSZWN0LmludGVyc2VjdChkaXJ0
eVJlY3QpOwogCi0gICAgICAgICAgICBpZiAoIWRpcnR5UmVjdC5pc0VtcHR5KCkgJiYgIXZpc2li
bGVUaWxlQnVmZmVyUmVjdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBCYWNraW5nU3Rv
cmVUaWxlKiB2aXNpYmxlVGlsZUJ1ZmZlcgotICAgICAgICAgICAgICAgICAgICA9IFN1cmZhY2VQ
b29sOjpnbG9iYWxTdXJmYWNlUG9vbCgpLT52aXNpYmxlVGlsZUJ1ZmZlcigpOwotICAgICAgICAg
ICAgICAgIEFTU0VSVCh2aXNpYmxlVGlsZUJ1ZmZlci0+c2l6ZSgpID09IHZpc2libGVDb250ZW50
c1JlY3QoKS5zaXplKCkpOworICAgICAgICAgICAgICAgIGlmICghZGlydHlSZWN0LmlzRW1wdHko
KSAmJiAhdmlzaWJsZVRpbGVCdWZmZXJSZWN0LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAg
ICAgICBCYWNraW5nU3RvcmVUaWxlKiB2aXNpYmxlVGlsZUJ1ZmZlcgorICAgICAgICAgICAgICAg
ICAgICAgICAgPSBTdXJmYWNlUG9vbDo6Z2xvYmFsU3VyZmFjZVBvb2woKS0+dmlzaWJsZVRpbGVC
dWZmZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHZpc2libGVUaWxlQnVmZmVyLT5z
aXplKCkgPT0gdmlzaWJsZUNvbnRlbnRzUmVjdCgpLnNpemUoKSk7CiAKLSAgICAgICAgICAgICAg
ICAvLyBUaGUgb2Zmc2V0IG9mIHRoZSBjdXJyZW50IHZpZXdwb3J0IHdpdGggdGhlIHZpc2JsZSB0
aWxlIGJ1ZmZlci4KLSAgICAgICAgICAgICAgICBQbGF0Zm9ybTo6SW50UG9pbnQgZGlmZmVyZW5j
ZSA9IG9yaWdpbiAtIG1fdmlzaWJsZVRpbGVCdWZmZXJSZWN0LmxvY2F0aW9uKCk7Ci0gICAgICAg
ICAgICAgICAgUGxhdGZvcm06OkludFNpemUgb2Zmc2V0ID0gUGxhdGZvcm06OkludFNpemUoZGlm
ZmVyZW5jZS54KCksIGRpZmZlcmVuY2UueSgpKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhl
IG9mZnNldCBvZiB0aGUgY3VycmVudCB2aWV3cG9ydCB3aXRoIHRoZSB2aXNibGUgdGlsZSBidWZm
ZXIuCisgICAgICAgICAgICAgICAgICAgIFBsYXRmb3JtOjpJbnRQb2ludCBkaWZmZXJlbmNlID0g
b3JpZ2luIC0gbV92aXNpYmxlVGlsZUJ1ZmZlclJlY3QubG9jYXRpb24oKTsKKyAgICAgICAgICAg
ICAgICAgICAgUGxhdGZvcm06OkludFNpemUgb2Zmc2V0ID0gUGxhdGZvcm06OkludFNpemUoZGlm
ZmVyZW5jZS54KCksIGRpZmZlcmVuY2UueSgpKTsKIAotICAgICAgICAgICAgICAgIC8vIE1hcCB0
byB0aGUgdmlzaWJsZVRpbGVCdWZmZXIgY29vcmRpbmF0ZXMuCi0gICAgICAgICAgICAgICAgUGxh
dGZvcm06OkludFJlY3QgZGlydHlUaWxlUmVjdCA9IHZpc2libGVUaWxlQnVmZmVyUmVjdDsKLSAg
ICAgICAgICAgICAgICBkaXJ0eVRpbGVSZWN0Lm1vdmUob2Zmc2V0LndpZHRoKCksIG9mZnNldC5o
ZWlnaHQoKSk7CisgICAgICAgICAgICAgICAgICAgIC8vIE1hcCB0byB0aGUgdmlzaWJsZVRpbGVC
dWZmZXIgY29vcmRpbmF0ZXMuCisgICAgICAgICAgICAgICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0
IGRpcnR5VGlsZVJlY3QgPSB2aXNpYmxlVGlsZUJ1ZmZlclJlY3Q7CisgICAgICAgICAgICAgICAg
ICAgIGRpcnR5VGlsZVJlY3QubW92ZShvZmZzZXQud2lkdGgoKSwgb2Zmc2V0LmhlaWdodCgpKTsK
IAotICAgICAgICAgICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0IGRpcnR5UmVjdFQgPSB0cmFuc2Zv
cm1hdGlvbi5tYXBSZWN0KGRpcnR5UmVjdCk7CisgICAgICAgICAgICAgICAgICAgIFBsYXRmb3Jt
OjpJbnRSZWN0IGRpcnR5UmVjdFQgPSB0cmFuc2Zvcm1hdGlvbi5tYXBSZWN0KGRpcnR5UmVjdCk7
CiAKLSAgICAgICAgICAgICAgICBpZiAoIXRyYW5zZm9ybWF0aW9uLmlzSWRlbnRpdHkoKSkgewot
ICAgICAgICAgICAgICAgICAgICAvLyBCZWNhdXNlIG9mIHJvdW5kaW5nIGl0IGlzIHBvc3NpYmxl
IHRoYXQgZGlydHlSZWN0IGNvdWxkIGJlIG9mZi1ieS1vbmUgbGFyZ2VyCi0gICAgICAgICAgICAg
ICAgICAgIC8vIHRoYW4gdGhlIHN1cmZhY2Ugc2l6ZSBvZiB0aGUgZHN0IGJ1ZmZlci4gV2UgcHJl
dmVudCB0aGlzIGhlcmUsIGJ5IGNsYW1waW5nCi0gICAgICAgICAgICAgICAgICAgIC8vIGl0IHRv
IGVuc3VyZSB0aGF0IGNhbid0IGhhcHBlbi4KLSAgICAgICAgICAgICAgICAgICAgZGlydHlSZWN0
VC5pbnRlcnNlY3QoUGxhdGZvcm06OkludFJlY3QoUGxhdGZvcm06OkludFBvaW50KDAsIDApLCBz
dXJmYWNlU2l6ZSgpKSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBp
ZiAoIXRyYW5zZm9ybWF0aW9uLmlzSWRlbnRpdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gQmVjYXVzZSBvZiByb3VuZGluZyBpdCBpcyBwb3NzaWJsZSB0aGF0IGRpcnR5UmVjdCBj
b3VsZCBiZSBvZmYtYnktb25lIGxhcmdlcgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhh
biB0aGUgc3VyZmFjZSBzaXplIG9mIHRoZSBkc3QgYnVmZmVyLiBXZSBwcmV2ZW50IHRoaXMgaGVy
ZSwgYnkgY2xhbXBpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0IHRvIGVuc3VyZSB0
aGF0IGNhbid0IGhhcHBlbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIGRpcnR5UmVjdFQuaW50
ZXJzZWN0KFBsYXRmb3JtOjpJbnRSZWN0KFBsYXRmb3JtOjpJbnRQb2ludCgwLCAwKSwgc3VyZmFj
ZVNpemUoKSkpOworICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBibGl0
VG9XaW5kb3coZGlydHlSZWN0VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJs
ZVRpbGVCdWZmZXItPmZyb250QnVmZmVyKCktPm5hdGl2ZUJ1ZmZlcigpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkaXJ0eVRpbGVSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmYWxzZSAvKmJsZW5kKi8sIDI1NSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxz
ZSBpZiAoY29tbWl0dGVkKSB7Ci0gICAgICAgICAgICAvLyBJbnRlcnNlY3QgdGhlIHJlbmRlcmVk
IHJlZ2lvbi4KLSAgICAgICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uIHJlbmRlcmVkUmVn
aW9uID0gdGlsZUJ1ZmZlci0+cmVuZGVyZWRSZWdpb24oKTsKLSAgICAgICAgICAgIEludFJlY3RM
aXN0IGRpcnR5UmVuZGVyZWRSZWN0cyA9IHJlbmRlcmVkUmVnaW9uLnJlY3RzKCk7Ci0gICAgICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRpcnR5UmVuZGVyZWRSZWN0cy5zaXplKCk7ICsr
aSkgewotICAgICAgICAgICAgICAgIFRpbGVSZWN0IHRpbGVSZWN0OwotICAgICAgICAgICAgICAg
IHRpbGVSZWN0LmZpcnN0ID0gaW5kZXg7Ci0gICAgICAgICAgICAgICAgdGlsZVJlY3Quc2Vjb25k
ID0gaW50ZXJzZWN0aW9uKGRpcnR5VGlsZVJlY3QsIGRpcnR5UmVuZGVyZWRSZWN0cy5hdChpKSk7
Ci0gICAgICAgICAgICAgICAgaWYgKHRpbGVSZWN0LnNlY29uZC5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIC8vIEJsaXQgdGhlIHJlbmRl
cmVkIHBhcnRzLgotICAgICAgICAgICAgICAgIGJsaXRUaWxlUmVjdCh0aWxlQnVmZmVyLCB0aWxl
UmVjdCwgb3JpZ2luLCB0cmFuc2Zvcm1hdGlvbiwgY3VycmVudFN0YXRlKTsKKyAgICAgICAgICAg
ICAgICAgICAgYmxpdFRvV2luZG93KGRpcnR5UmVjdFQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2aXNpYmxlVGlsZUJ1ZmZlci0+ZnJvbnRCdWZmZXIoKS0+bmF0aXZlQnVmZmVy
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJ0eVRpbGVSZWN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgLypibGVuZCovLCAyNTUpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY29tbWl0dGVkKSB7CisgICAg
ICAgICAgICAgICAgLy8gSW50ZXJzZWN0IHRoZSByZW5kZXJlZCByZWdpb24uCisgICAgICAgICAg
ICAgICAgUGxhdGZvcm06OkludFJlY3RSZWdpb24gcmVuZGVyZWRSZWdpb24gPSB0aWxlQnVmZmVy
LT5yZW5kZXJlZFJlZ2lvbigpOworICAgICAgICAgICAgICAgIEludFJlY3RMaXN0IGRpcnR5UmVu
ZGVyZWRSZWN0cyA9IHJlbmRlcmVkUmVnaW9uLnJlY3RzKCk7CisgICAgICAgICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBkaXJ0eVJlbmRlcmVkUmVjdHMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgICAgICAgICAgICAgVGlsZVJlY3QgdGlsZVJlY3Q7CisgICAgICAgICAgICAgICAgICAg
IHRpbGVSZWN0LmZpcnN0ID0gaW5kZXg7CisgICAgICAgICAgICAgICAgICAgIHRpbGVSZWN0LnNl
Y29uZCA9IGludGVyc2VjdGlvbihkaXJ0eVRpbGVSZWN0LCBkaXJ0eVJlbmRlcmVkUmVjdHMuYXQo
aSkpOworICAgICAgICAgICAgICAgICAgICBpZiAodGlsZVJlY3Quc2Vjb25kLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAv
LyBCbGl0IHRoZSByZW5kZXJlZCBwYXJ0cy4KKyAgICAgICAgICAgICAgICAgICAgYmxpdFRpbGVS
ZWN0KHRpbGVCdWZmZXIsIHRpbGVSZWN0LCBvcmlnaW4sIHRyYW5zZm9ybWF0aW9uLCBjdXJyZW50
U3RhdGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBibGl0dGVkVGlsZXMu
YXBwZW5kKHRpbGVCdWZmZXIpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgYmxpdHRlZFRp
bGVzLmFwcGVuZCh0aWxlQnVmZmVyKTsKICAgICAgICAgfQogICAgIH0KIAorICAgIGJvb2wgYmxp
dHRpbmdEaXJlY3RseVRvQ29tcG9zaXRpbmdXaW5kb3cgPSBpc09wZW5HTENvbXBvc2l0aW5nKCk7
CisKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKFdlYlBhZ2VDb21w
b3NpdG9yUHJpdmF0ZSogY29tcG9zaXRvciA9IG1fd2ViUGFnZS0+ZC0+Y29tcG9zaXRvcigpKSB7
CiAgICAgICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBjb250ZW50c1JlY3QgPSBtX3dlYlBhZ2UtPmQt
Pm1hcEZyb21UcmFuc2Zvcm1lZEZsb2F0UmVjdChXZWJDb3JlOjpGbG9hdFJlY3QoV2ViQ29yZTo6
SW50UmVjdChjb250ZW50cykpKTsKICAgICAgICAgY29tcG9zaXRvci0+ZHJhd0xheWVycyhkc3RS
ZWN0LCBjb250ZW50c1JlY3QpOworICAgICAgICBpZiAoY29tcG9zaXRvci0+ZHJhd3NSb290TGF5
ZXIoKSkKKyAgICAgICAgICAgIHBhaW50RGVmYXVsdEJhY2tncm91bmQoY29udGVudHMsIHRyYW5z
Zm9ybWF0aW9uLCBmYWxzZSAvKmZsdXNoKi8pOwogICAgIH0KIAogICAgIGlmICghYmxpdHRpbmdE
aXJlY3RseVRvQ29tcG9zaXRpbmdXaW5kb3cpCkBAIC0xNTE0LDcgKzE1MzAsNyBAQCB2b2lkIEJh
Y2tpbmdTdG9yZVByaXZhdGU6OmJsaXRDb250ZW50cyhjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYg
ZHN0UmVjdCwKIAogICAgIGludmFsaWRhdGVXaW5kb3coZHN0UmVjdCk7CiAKLSAgICBpZiAoYmxp
dHRpbmdEaXJlY3RseVRvQ29tcG9zaXRpbmdXaW5kb3cpIHsKKyAgICBpZiAoYmxpdHRpbmdEaXJl
Y3RseVRvQ29tcG9zaXRpbmdXaW5kb3cgJiYgIWJsaXR0ZWRUaWxlcy5pc0VtcHR5KCkpIHsKICAg
ICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCZtX2JsaXRHZW5lcmF0aW9uTG9jayk7CiAKICAgICAg
ICAgKyttX2JsaXRHZW5lcmF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0FwaS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFn
ZS5jcHAKaW5kZXggYTdmNGM1ZDQyZjQ5OWE4MjE5NjcwM2NkMDk0MTdjZDEyNDRjODRmNi4uNDIw
ZDdjNmY2NWY0OTMxNjdkMGE2ZWM3ZDhiMDJiN2Q5NTY5NDc2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCkBAIC04Myw2ICs4Myw4IEBACiAjaW5jbHVkZSAiUGxh
dGZvcm1XaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YWJhc2UuaCIKICNpbmNsdWRl
ICJQbHVnaW5WaWV3LmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNraW5nLmgiCisjaW5jbHVk
ZSAiUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2lu
Y2x1ZGUgIlJlbmRlclRoZW1lQmxhY2tCZXJyeS5oIgogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1Rl
eHQuaCIKQEAgLTE1NSw2ICsxNTcsNyBAQAogI2RlZmluZSBERUJVR19CTE9DS19aT09NIDAKICNk
ZWZpbmUgREVCVUdfVE9VQ0hfRVZFTlRTIDAKICNkZWZpbmUgREVCVUdfV0VCUEFHRV9MT0FEIDAK
KyNkZWZpbmUgREVCVUdfQUNfQ09NTUlUIDAKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtODA1LDEyICs4MDgsOCBAQCB2b2lkIFdlYlBhZ2VQcml2
YXRlOjpzZXRMb2FkU3RhdGUoTG9hZFN0YXRlIHN0YXRlKQogI2VuZGlmCiAKICNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgICAgICAgICAvLyBGSVhNRTogY29tcG9zaXRvciBt
YXkgb25seSBiZSB0b3VjaGVkIG9uIHRoZSBjb21wb3NpdGluZyB0aHJlYWQuCi0gICAgICAgICAg
ICAvLyBIb3dldmVyLCBpdCdzIGNyZWF0ZWQvZGVzdHJveWVkIGJ5IGEgc3luYyBjb21tYW5kIHNv
IHRoaXMgaXMgaGFybWxlc3MuCi0gICAgICAgICAgICBpZiAobV9jb21wb3NpdG9yKSB7Ci0gICAg
ICAgICAgICAgICAgbV9jb21wb3NpdG9yLT5zZXRMYXlvdXRSZWN0Rm9yQ29tcG9zaXRpbmcoSW50
UmVjdCgpKTsKLSAgICAgICAgICAgICAgICBtX2NvbXBvc2l0b3ItPnNldENvbnRlbnRzU2l6ZUZv
ckNvbXBvc2l0aW5nKEludFNpemUoKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
aXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkgJiYgIWNvbXBvc2l0b3JEcmF3c1Jvb3RM
YXllcigpKQorICAgICAgICAgICAgICAgIHN5bmNEZXN0cm95Q29tcG9zaXRvck9uQ29tcG9zaXRp
bmdUaHJlYWQoKTsKICNlbmRpZgogICAgICAgICAgICAgbV9wcmV2aW91c0NvbnRlbnRzU2l6ZSA9
IEludFNpemUoKTsKICAgICAgICAgICAgIG1fYmFja2luZ1N0b3JlLT5kLT5yZXNldFJlbmRlclF1
ZXVlKCk7CkBAIC0yOTkxLDYgKzI5OTAsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldFZpc2libGUoYm9v
bCB2aXNpYmxlKQogICAgICAgICAvLyBBbmQgcmVsZWFzZSBsYXllciByZXNvdXJjZXMgY2FuIHJl
ZHVjZSBtZW1vcnkgY29uc3VtcHRpb24uCiAgICAgICAgIGQtPnN1c3BlbmRSb290TGF5ZXJDb21t
aXQoKTsKICNlbmRpZgorCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMxODgsNiArMzE4
OCwxNSBAQCB2b2lkIFdlYlBhZ2U6Om9uSW5wdXRMb2NhbGVDaGFuZ2VkKGJvb2wgaXNSVEwpCiB2
b2lkIFdlYlBhZ2VQcml2YXRlOjpzdXNwZW5kQmFja2luZ1N0b3JlKCkKIHsKICNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgaWYgKG1fYmFja2luZ1N0b3JlLT5kLT5pc09wZW5H
TENvbXBvc2l0aW5nKCkpIHsKKyAgICAgICAgLy8gQSB2aXNpYmxlIHdlYiBwYWdlJ3MgYmFja2lu
ZyBzdG9yZSBjYW4gYmUgc3VzcGVuZGVkIHdoZW4gYW5vdGhlciB3ZWIKKyAgICAgICAgLy8gcGFn
ZSBpcyB0YWtpbmcgb3ZlciB0aGUgYmFja2luZyBzdG9yZS4KKyAgICAgICAgaWYgKG1fdmlzaWJs
ZSkKKyAgICAgICAgICAgIHNldENvbXBvc2l0b3JEcmF3c1Jvb3RMYXllcih0cnVlKTsKKworICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgcmVzZXRDb21wb3NpdGluZ1N1cmZhY2UoKTsKICNl
bmRpZgogfQpAQCAtMzE5NiwxMCArMzIwNSw2IEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6OnJlc3Vt
ZUJhY2tpbmdTdG9yZSgpCiB7CiAgICAgQVNTRVJUKG1fd2ViUGFnZS0+aXNWaXNpYmxlKCkpOwog
Ci0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIHNldE5lZWRzT25lU2hvdERy
YXdpbmdTeW5jaHJvbml6YXRpb24oKTsKLSNlbmRpZgotCiAgICAgYm9vbCBkaXJlY3RSZW5kZXJp
bmcgPSBtX2JhY2tpbmdTdG9yZS0+ZC0+c2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKTsK
ICAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5kLT5pc0FjdGl2ZSgpCiAgICAgICAgIHx8IHNob3Vs
ZFJlc2V0VGlsZXNXaGVuU2hvd24oKQpAQCAtMzIwNyw2ICszMjEyLDEyIEBAIHZvaWQgV2ViUGFn
ZVByaXZhdGU6OnJlc3VtZUJhY2tpbmdTdG9yZSgpCiAgICAgICAgIC8vIFdlIG5lZWQgdG8gcmVz
ZXQgYWxsIHRpbGVzIHNvIHRoYXQgd2UgZG8gbm90IHNob3cgYW55IHRpbGVzIHdob3NlIGNvbnRl
bnQgbWF5CiAgICAgICAgIC8vIGhhdmUgYmVlbiByZXBsYWNlZCBieSBhbm90aGVyIFdlYlBhZ2Ug
aW5zdGFuY2UgKGkuZS4gYW5vdGhlciB0YWIpLgogICAgICAgICBCYWNraW5nU3RvcmVQcml2YXRl
OjpzZXRDdXJyZW50QmFja2luZ1N0b3JlT3duZXIobV93ZWJQYWdlKTsKKworICAgICAgICAvLyBJ
ZiB3ZSdyZSBPcGVuR0wgY29tcG9zaXRpbmcsIHN3aXRjaGluZyB0byBhY2NlbCBjb21wIGRyYXdp
bmcgb2YgdGhlIHJvb3QgbGF5ZXIKKyAgICAgICAgLy8gaXMgYSBnb29kIHN1YnN0aXR1dGUgZm9y
IGJhY2tpbmdzdG9yZSBibGl0dGluZy4KKyAgICAgICAgaWYgKG1fYmFja2luZ1N0b3JlLT5kLT5p
c09wZW5HTENvbXBvc2l0aW5nKCkpCisgICAgICAgICAgICBzZXRDb21wb3NpdG9yRHJhd3NSb290
TGF5ZXIoIW1fYmFja2luZ1N0b3JlLT5kLT5pc0FjdGl2ZSgpKTsKKwogICAgICAgICBtX2JhY2tp
bmdTdG9yZS0+ZC0+b3JpZW50YXRpb25DaGFuZ2VkKCk7IC8vIFVwZGF0ZXMgdGlsZSBnZW9tZXRy
eSBhbmQgY3JlYXRlcyB2aXNpYmxlIHRpbGUgYnVmZmVyLgogICAgICAgICBtX2JhY2tpbmdTdG9y
ZS0+ZC0+cmVzZXRUaWxlcyh0cnVlIC8qIHJlc2V0QmFja2dyb3VuZCAqLyk7CiAgICAgICAgIG1f
YmFja2luZ1N0b3JlLT5kLT51cGRhdGVUaWxlcyhmYWxzZSAvKiB1cGRhdGVWaXNpYmxlICovLCBm
YWxzZSAvKiBpbW1lZGlhdGUgKi8pOwpAQCAtMzIxNSwxMCArMzIyNiwxNyBAQCB2b2lkIFdlYlBh
Z2VQcml2YXRlOjpyZXN1bWVCYWNraW5nU3RvcmUoKQogICAgICAgICBpZiAobV9iYWNraW5nU3Rv
cmUtPmQtPnJlbmRlclZpc2libGVDb250ZW50cygpICYmICFtX2JhY2tpbmdTdG9yZS0+ZC0+aXNT
dXNwZW5kZWQoKSAmJiAhZGlyZWN0UmVuZGVyaW5nKQogICAgICAgICAgICAgbV9iYWNraW5nU3Rv
cmUtPmQtPmJsaXRWaXNpYmxlQ29udGVudHMoKTsKICAgICB9IGVsc2UgeworICAgICAgICBpZiAo
bV9iYWNraW5nU3RvcmUtPmQtPmlzT3BlbkdMQ29tcG9zaXRpbmcoKSkKKyAgICAgICAgICAgc2V0
Q29tcG9zaXRvckRyYXdzUm9vdExheWVyKGZhbHNlKTsKKwogICAgICAgICAvLyBSZW5kZXJpbmcg
d2FzIGRpc2FibGVkIHdoaWxlIHdlIHdlcmUgaGlkZGVuLCBzbyB3ZSBuZWVkIHRvIHVwZGF0ZSBh
bGwgdGlsZXMuCiAgICAgICAgIG1fYmFja2luZ1N0b3JlLT5kLT51cGRhdGVUaWxlcyh0cnVlIC8q
IHVwZGF0ZVZpc2libGUgKi8sIGZhbHNlIC8qIGltbWVkaWF0ZSAqLyk7CiAgICAgfQogCisjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIHNldE5lZWRzT25lU2hvdERyYXdpbmdT
eW5jaHJvbml6YXRpb24oKTsKKyNlbmRpZgorCiAgICAgc2V0U2hvdWxkUmVzZXRUaWxlc1doZW5T
aG93bihmYWxzZSk7CiB9CiAKQEAgLTUxNzIsNiArNTE5MCwzNyBAQCB2b2lkIFdlYlBhZ2U6OmRp
c3BhdGNoSW5zcGVjdG9yTWVzc2FnZShjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSkKICAgICBk
LT5tX3BhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250
ZW5kKHN0cmluZ01lc3NhZ2UpOwogfQogCitib29sIFdlYlBhZ2VQcml2YXRlOjpjb21wb3NpdG9y
RHJhd3NSb290TGF5ZXIoKSBjb25zdAoreworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKKyAgICBpZiAoUGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xpZW50KCkt
PmlzQ3VycmVudFRocmVhZCgpKQorICAgICAgICByZXR1cm4gbV9jb21wb3NpdG9yICYmIG1fY29t
cG9zaXRvci0+ZHJhd3NSb290TGF5ZXIoKTsKKworICAgIC8vIFdlYktpdCB0aHJlYWQgaW1wbGVt
ZW50YXRpb246CisgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IG1fbWFpbkZyYW1lLT5jb250
ZW50UmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlclZpZXcgfHwgIXJlbmRlclZpZXctPmxheWVy
KCkgfHwgIXJlbmRlclZpZXctPmxheWVyKCktPmJhY2tpbmcoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuICFyZW5kZXJWaWV3LT5sYXllcigpLT5iYWNraW5nKCktPnBhaW50
aW5nR29lc1RvV2luZG93KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQor
Cit2b2lkIFdlYlBhZ2VQcml2YXRlOjpzZXRDb21wb3NpdG9yRHJhd3NSb290TGF5ZXIoYm9vbCBj
b21wb3NpdG9yRHJhd3NSb290TGF5ZXIpCit7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQorICAgIGlmIChtX3BhZ2UtPnNldHRpbmdzKCktPmZvcmNlQ29tcG9zaXRpbmdNb2RlKCkg
PT0gY29tcG9zaXRvckRyYXdzUm9vdExheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBX
aGVuIHRoZSBCbGFja0JlcnJ5IHBvcnQgZm9yY2VzIGNvbXBvc2l0aW5nIG1vZGUsIHRoZSByb290
IGxheWVyIHN0b3BzCisgICAgLy8gcGFpbnRpbmcgdG8gd2luZG93IGFuZCBzdGFydHMgcGFpbnRp
bmcgdG8gbGF5ZXIgaW5zdGVhZC4KKyAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldEZvcmNlQ29t
cG9zaXRpbmdNb2RlKGNvbXBvc2l0b3JEcmF3c1Jvb3RMYXllcik7CisgICAgaWYgKEZyYW1lVmll
dyogdmlldyA9IG1fbWFpbkZyYW1lLT52aWV3KCkpCisgICAgICAgIHZpZXctPnVwZGF0ZUNvbXBv
c2l0aW5nTGF5ZXJzKCk7CisjZW5kaWYKK30KKwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKIHZvaWQgV2ViUGFnZVByaXZhdGU6OmRyYXdMYXllcnNPbkNvbW1pdCgpCiB7CkBAIC01
MTgwLDcgKzUyMjksNyBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjpkcmF3TGF5ZXJzT25Db21taXQo
KQogICAgICAgICAvLyBhbmltYXRpb25zLiBBbmQgb25seSBpZiB3ZSBkb24ndCBuZWVkIGEgb25l
IHNob3QgZHJhd2luZyBzeW5jLgogICAgICAgICBBU1NFUlQoIW5lZWRzT25lU2hvdERyYXdpbmdT
eW5jaHJvbml6YXRpb24oKSk7CiAKLSAgICAgICAgaWYgKCFtX3dlYlBhZ2UtPmlzVmlzaWJsZSgp
IHx8ICFtX2JhY2tpbmdTdG9yZS0+ZC0+aXNBY3RpdmUoKSkKKyAgICAgICAgaWYgKCFtX3dlYlBh
Z2UtPmlzVmlzaWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1fYmFja2lu
Z1N0b3JlLT5kLT53aWxsRHJhd0xheWVyc09uQ29tbWl0KCk7CkBAIC01MTkwLDYgKzUyMzksMTAg
QEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6ZHJhd0xheWVyc09uQ29tbWl0KCkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAorI2lmIERFQlVHX0FDX0NPTU1JVAorICAgIFBsYXRmb3JtOjpsb2coUGxh
dGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsICIlcyIsIFdURl9QUkVUVFlfRlVOQ1RJT04pOworI2Vu
ZGlmCisKICAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5kLT5zaG91bGREaXJlY3RSZW5kZXJpbmdU
b1dpbmRvdygpKQogICAgICAgICBtX2JhY2tpbmdTdG9yZS0+ZC0+YmxpdFZpc2libGVDb250ZW50
cygpOwogfQpAQCAtNTIwMCw4ICs1MjUzLDEyIEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6OnNjaGVk
dWxlUm9vdExheWVyQ29tbWl0KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9uZWVkc0NvbW1p
dCA9IHRydWU7Ci0gICAgaWYgKCFtX3Jvb3RMYXllckNvbW1pdFRpbWVyLT5pc0FjdGl2ZSgpKQor
ICAgIGlmICghbV9yb290TGF5ZXJDb21taXRUaW1lci0+aXNBY3RpdmUoKSkgeworI2lmIERFQlVH
X0FDX0NPTU1JVAorICAgICAgICBQbGF0Zm9ybTo6bG9nKFBsYXRmb3JtOjpMb2dMZXZlbENyaXRp
Y2FsLCAiJXM6IG1fcm9vdExheWVyQ29tbWl0VGltZXItPmlzQWN0aXZlKCkgPSAlZCIsIFdURl9Q
UkVUVFlfRlVOQ1RJT04sIG1fcm9vdExheWVyQ29tbWl0VGltZXItPmlzQWN0aXZlKCkpOworI2Vu
ZGlmCiAgICAgICAgIG1fcm9vdExheWVyQ29tbWl0VGltZXItPnN0YXJ0T25lU2hvdCgwKTsKKyAg
ICB9CiB9CiAKIHN0YXRpYyBib29sIG5lZWRzTGF5b3V0UmVjdXJzaXZlKEZyYW1lVmlldyogdmll
dykKQEAgLTUyNDcsMTggKzUzMDQsMzggQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6c2V0Q29tcG9z
aXRvcihQYXNzUmVmUHRyPFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZT4gY29tcG9zaXQKIH0KIAog
dm9pZCBXZWJQYWdlUHJpdmF0ZTo6Y29tbWl0Um9vdExheWVyKGNvbnN0IEludFJlY3QmIGxheW91
dFJlY3RGb3JDb21wb3NpdGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBJbnRTaXplJiBjb250ZW50c1NpemVGb3JDb21wb3NpdGluZykKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRTaXplJiBjb250ZW50c1NpemVGb3JD
b21wb3NpdGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRy
YXdzUm9vdExheWVyKQogeworI2lmIERFQlVHX0FDX0NPTU1JVAorICAgIFBsYXRmb3JtOjpsb2co
UGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsICIlczogbV9jb21wb3NpdG9yID0gMHgleCIsCisg
ICAgICAgICAgICBXVEZfUFJFVFRZX0ZVTkNUSU9OLCBtX2NvbXBvc2l0b3IuZ2V0KCkpOworI2Vu
ZGlmCisKICAgICBpZiAoIW1fZnJhbWVMYXllcnMgfHwgIW1fY29tcG9zaXRvcikKICAgICAgICAg
cmV0dXJuOwogCisgICAgaWYgKG1fZnJhbWVMYXllcnMtPnJvb3RMYXllcigpICYmIG1fZnJhbWVM
YXllcnMtPnJvb3RMYXllcigpLT5sYXllckNvbXBvc2l0aW5nVGhyZWFkKCkgIT0gbV9jb21wb3Np
dG9yLT5yb290TGF5ZXIoKSkKKyAgICAgICAgbV9jb21wb3NpdG9yLT5zZXRSb290TGF5ZXIobV9m
cmFtZUxheWVycy0+cm9vdExheWVyKCktPmxheWVyQ29tcG9zaXRpbmdUaHJlYWQoKSk7CisKICAg
ICBtX2NvbXBvc2l0b3ItPnNldExheW91dFJlY3RGb3JDb21wb3NpdGluZyhsYXlvdXRSZWN0Rm9y
Q29tcG9zaXRpbmcpOwogICAgIG1fY29tcG9zaXRvci0+c2V0Q29udGVudHNTaXplRm9yQ29tcG9z
aXRpbmcoY29udGVudHNTaXplRm9yQ29tcG9zaXRpbmcpOworICAgIG1fY29tcG9zaXRvci0+c2V0
RHJhd3NSb290TGF5ZXIoZHJhd3NSb290TGF5ZXIpOwogICAgIG1fY29tcG9zaXRvci0+Y29tbWl0
KG1fZnJhbWVMYXllcnMtPnJvb3RMYXllcigpKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJpdmF0ZTo6
Y29tbWl0Um9vdExheWVySWZOZWVkZWQoKQogeworI2lmIERFQlVHX0FDX0NPTU1JVAorICAgIFBs
YXRmb3JtOjpsb2coUGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsICIlczogbV9zdXNwZW5kUm9v
dExheWVyQ29tbWl0ID0gJWQsIG1fbmVlZHNDb21taXQgPSAlZCwgbV9mcmFtZUxheWVycyA9IDB4
JXgsIG1fZnJhbWVMYXllcnMtPmhhc0xheWVyKCkgPSAlZCwgbmVlZHNMYXlvdXRSZWN1cnNpdmUo
KSA9ICVkIiwKKyAgICAgICAgICAgIFdURl9QUkVUVFlfRlVOQ1RJT04sCisgICAgICAgICAgICBt
X3N1c3BlbmRSb290TGF5ZXJDb21taXQsCisgICAgICAgICAgICBtX25lZWRzQ29tbWl0LAorICAg
ICAgICAgICAgbV9mcmFtZUxheWVycy5nZXQoKSwKKyAgICAgICAgICAgIG1fZnJhbWVMYXllcnMg
JiYgbV9mcmFtZUxheWVycy0+aGFzTGF5ZXIoKSwKKyAgICAgICAgICAgIG1fbWFpbkZyYW1lICYm
IG1fbWFpbkZyYW1lLT52aWV3KCkgJiYgbmVlZHNMYXlvdXRSZWN1cnNpdmUobV9tYWluRnJhbWUt
PnZpZXcoKSkpOworI2VuZGlmCisKICAgICBpZiAobV9zdXNwZW5kUm9vdExheWVyQ29tbWl0KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTUyOTgsNiArNTM3NSw3IEBAIGJvb2wgV2ViUGFn
ZVByaXZhdGU6OmNvbW1pdFJvb3RMYXllcklmTmVlZGVkKCkKICAgICAvLyBhbmQgdGhhdCdzIHdo
YXQgdGhlIGxheWVyIHJlbmRlcmVyIHdhbnRzLgogICAgIEludFJlY3QgbGF5b3V0UmVjdEZvckNv
bXBvc2l0aW5nKHNjcm9sbFBvc2l0aW9uKCksIGFjdHVhbFZpc2libGVTaXplKCkpOwogICAgIElu
dFNpemUgY29udGVudHNTaXplRm9yQ29tcG9zaXRpbmcgPSBjb250ZW50c1NpemUoKTsKKyAgICBi
b29sIGRyYXdzUm9vdExheWVyID0gY29tcG9zaXRvckRyYXdzUm9vdExheWVyKCk7CiAKICAgICAv
LyBDb21taXQgY2hhbmdlcyBtYWRlIHRvIHRoZSBsYXllcnMgc3luY2hyb25vdXNseSB3aXRoIHRo
ZSBjb21wb3NpdGluZyB0aHJlYWQuCiAgICAgUGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRN
ZXNzYWdlQ2xpZW50KCktPmRpc3BhdGNoU3luY01lc3NhZ2UoCkBAIC01MzA1LDcgKzUzODMsOCBA
QCBib29sIFdlYlBhZ2VQcml2YXRlOjpjb21taXRSb290TGF5ZXJJZk5lZWRlZCgpCiAgICAgICAg
ICAgICAmV2ViUGFnZVByaXZhdGU6OmNvbW1pdFJvb3RMYXllciwKICAgICAgICAgICAgIHRoaXMs
CiAgICAgICAgICAgICBsYXlvdXRSZWN0Rm9yQ29tcG9zaXRpbmcsCi0gICAgICAgICAgICBjb250
ZW50c1NpemVGb3JDb21wb3NpdGluZykpOworICAgICAgICAgICAgY29udGVudHNTaXplRm9yQ29t
cG9zaXRpbmcsCisgICAgICAgICAgICBkcmF3c1Jvb3RMYXllcikpOwogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CkBAIC01MzE1LDYgKzUzOTQsMTAgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6cm9vdExh
eWVyQ29tbWl0VGltZXJGaXJlZChUaW1lcjxXZWJQYWdlUHJpdmF0ZT4qKQogICAgIGlmIChtX3N1
c3BlbmRSb290TGF5ZXJDb21taXQpCiAgICAgICAgIHJldHVybjsKIAorI2lmIERFQlVHX0FDX0NP
TU1JVAorICAgIFBsYXRmb3JtOjpsb2coUGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsICIlcyIs
IFdURl9QUkVUVFlfRlVOQ1RJT04pOworI2VuZGlmCisKICAgICAvLyBUaGUgY29tbWl0IHRpbWVy
IG1heSBoYXZlIGZpcmVkIGp1c3QgYmVmb3JlIHRoZSBsYXlvdXQgdGltZXIsIG9yIGZvciBzb21l
CiAgICAgLy8gb3RoZXIgcmVhc29uIHdlIG5lZWQgbGF5b3V0LiBJdCdzIG5vdCBhbGxvd2VkIHRv
IGNvbW1pdCB3aGVuIGEgbGF5b3V0IGlzCiAgICAgLy8gcGVuZGluZywgYmVjYXVlcyBhIGNvbW1p
dCBjYW4gY2F1c2UgcGFydHMgb2YgdGhlIHdlYiBwYWdlIHRvIGJlIHJlbmRlcmVkCkBAIC01MzIz
LDIwICs1NDA2LDMwIEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6OnJvb3RMYXllckNvbW1pdFRpbWVy
RmlyZWQoVGltZXI8V2ViUGFnZVByaXZhdGU+KikKICAgICAvLyB0byBoYW5kbGUgYSBvbmUgc2hv
dCBkcmF3aW5nIHN5bmNocm9uaXphdGlvbiBhZnRlciB0aGUgbGF5b3V0LgogICAgIHJlcXVlc3RM
YXlvdXRJZk5lZWRlZCgpOwogCi0gICAgYm9vbCBpc1NpbmdsZVRhcmdldFdpbmRvdyA9IFN1cmZh
Y2VQb29sOjpnbG9iYWxTdXJmYWNlUG9vbCgpLT5jb21wb3NpdGluZ1N1cmZhY2UoKQotICAgICAg
ICB8fCBtX2JhY2tpbmdTdG9yZS0+ZC0+aXNPcGVuR0xDb21wb3NpdGluZygpOwotCi0gICAgLy8g
SWYgd2UgYXJlIGRvaW5nIGRpcmVjdCByZW5kZXJpbmcgYW5kIGhhdmUgYSBzaW5nbGUgcmVuZGVy
aW5nIHRhcmdldCwKLSAgICAvLyBjb21taXR0aW5nIGlzIGVxdWl2YWxlbnQgdG8gYSBvbmUgc2hv
dCBkcmF3aW5nIHN5bmNocm9uaXphdGlvbi4KLSAgICAvLyBXZSBuZWVkIHRvIHJlLXJlbmRlciB0
aGUgd2ViIHBhZ2UsIHJlLXJlbmRlciB0aGUgbGF5ZXJzLCBhbmQKLSAgICAvLyB0aGVuIGJsaXQg
dGhlbSBvbiB0b3Agb2YgdGhlIHJlLXJlbmRlcmVkIHdlYiBwYWdlLgotICAgIGlmIChpc1Npbmds
ZVRhcmdldFdpbmRvdyAmJiBtX2JhY2tpbmdTdG9yZS0+ZC0+c2hvdWxkRGlyZWN0UmVuZGVyaW5n
VG9XaW5kb3coKSkKLSAgICAgICAgc2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9uaXphdGlv
bigpOworICAgIC8vIElmIHdlIHRyYW5zaXRpb25lZCB0byBkcmF3aW5nIHRoZSByb290IGxheWVy
IHVzaW5nIGNvbXBvc2l0b3IgaW5zdGVhZCBvZgorICAgIC8vIGJhY2tpbmcgc3RvcmUsIGRvaW5n
IGEgb25lIHNob3QgZHJhd2luZyBzeW5jaHJvbml6YXRpb24gd2l0aCB0aGUKKyAgICAvLyBiYWNr
aW5nIHN0b3JlIGlzIG5ldmVyIG5lY2Vzc2FyeSwgYmVjYXVzZSB0aGUgYmFja2luZyBzdG9yZSBk
cmF3cworICAgIC8vIG5vdGhpbmcuCisgICAgaWYgKGNvbXBvc2l0b3JEcmF3c1Jvb3RMYXllcigp
KSB7CisgICAgICAgIGJvb2wgaXNTaW5nbGVUYXJnZXRXaW5kb3cgPSBTdXJmYWNlUG9vbDo6Z2xv
YmFsU3VyZmFjZVBvb2woKS0+Y29tcG9zaXRpbmdTdXJmYWNlKCkKKyAgICAgICAgICAgIHx8IG1f
YmFja2luZ1N0b3JlLT5kLT5pc09wZW5HTENvbXBvc2l0aW5nKCk7CisKKyAgICAgICAgLy8gSWYg
d2UgYXJlIGRvaW5nIGRpcmVjdCByZW5kZXJpbmcgYW5kIGhhdmUgYSBzaW5nbGUgcmVuZGVyaW5n
IHRhcmdldCwKKyAgICAgICAgLy8gY29tbWl0dGluZyBpcyBlcXVpdmFsZW50IHRvIGEgb25lIHNo
b3QgZHJhd2luZyBzeW5jaHJvbml6YXRpb24uCisgICAgICAgIC8vIFdlIG5lZWQgdG8gcmUtcmVu
ZGVyIHRoZSB3ZWIgcGFnZSwgcmUtcmVuZGVyIHRoZSBsYXllcnMsIGFuZAorICAgICAgICAvLyB0
aGVuIGJsaXQgdGhlbSBvbiB0b3Agb2YgdGhlIHJlLXJlbmRlcmVkIHdlYiBwYWdlLgorICAgICAg
ICBpZiAoaXNTaW5nbGVUYXJnZXRXaW5kb3cgJiYgbV9iYWNraW5nU3RvcmUtPmQtPnNob3VsZERp
cmVjdFJlbmRlcmluZ1RvV2luZG93KCkpCisgICAgICAgICAgICBzZXROZWVkc09uZVNob3REcmF3
aW5nU3luY2hyb25pemF0aW9uKCk7CisKKyAgICAgICAgaWYgKG5lZWRzT25lU2hvdERyYXdpbmdT
eW5jaHJvbml6YXRpb24oKSkgeworI2lmIERFQlVHX0FDX0NPTU1JVAorICAgICAgICAgICAgUGxh
dGZvcm06OmxvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIiVzOiBPbmVTaG90RHJhd2lu
Z1N5bmNocm9uaXphdGlvbiBjb2RlIHBhdGghIiwgV1RGX1BSRVRUWV9GVU5DVElPTik7CisjZW5k
aWYKIAotICAgIGlmIChuZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9uKCkpIHsKLSAg
ICAgICAgY29uc3QgSW50UmVjdCB3aW5kb3dSZWN0ID0gSW50UmVjdChJbnRQb2ludDo6emVybygp
LCB2aWV3cG9ydFNpemUoKSk7Ci0gICAgICAgIG1fYmFja2luZ1N0b3JlLT5kLT5yZXBhaW50KHdp
bmRvd1JlY3QsIHRydWUgLypjb250ZW50Q2hhbmdlZCovLCB0cnVlIC8qaW1tZWRpYXRlKi8pOwot
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjb25zdCBJbnRSZWN0IHdpbmRvd1JlY3QgPSBJ
bnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHZpZXdwb3J0U2l6ZSgpKTsKKyAgICAgICAgICAgIG1f
YmFja2luZ1N0b3JlLT5kLT5yZXBhaW50KHdpbmRvd1JlY3QsIHRydWUgLypjb250ZW50Q2hhbmdl
ZCovLCB0cnVlIC8qaW1tZWRpYXRlKi8pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CiAgICAgfQogCiAgICAgLy8gSWYgdGhlIHdlYiBwYWdlIG5lZWRzIGxheW91dCwgdGhlIGNvbW1p
dCB3aWxsIGZhaWwuCkBAIC01Mzk2LDE5ICs1NDg5LDEyIEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6
OnNldFJvb3RMYXllckNvbXBvc2l0aW5nVGhyZWFkKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxh
eWVyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBEZXBlbmRpbmcgb24gd2hldGhl
ciB3ZSBoYXZlIGEgcm9vdCBsYXllciBvciBub3QsCi0gICAgLy8gdGhpcyBtZXRob2Qgd2lsbCB0
dXJuIG9uIG9yIG9mZiBhY2NlbGVyYXRlZCBjb21wb3NpdGluZy4KICAgICBpZiAoIWxheWVyKSB7
Ci0gICAgICAgICAvLyBEb24ndCBBU1NFUlQobV9jb21wb3NpdG9yKSBoZXJlIGJlY2F1c2Ugd2Ug
bWF5IGJlIGNhbGxlZCBpbgotICAgICAgICAgLy8gdGhlIHByb2Nlc3Mgb2YgZGVzdHJ1Y3Rpb24g
b2YgV2ViUGFnZSB3aGVyZSB3ZSBoYXZlIGFscmVhZHkKLSAgICAgICAgIC8vIGNhbGxlZCBzeW5j
RGVzdHJveUNvbXBvc2l0b3JPbkNvbXBvc2l0aW5nVGhyZWFkKCkgdG8gZGVzdHJveQotICAgICAg
ICAgLy8gdGhlIGNvbXBvc2l0b3IuCi0gICAgICAgICBkZXN0cm95Q29tcG9zaXRvcigpOwotICAg
ICAgICAgcmVzZXRDb21wb3NpdGluZ1N1cmZhY2UoKTsKLSAgICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoIW1fY29tcG9zaXRvcikKKyAgICAgICAgLy8gS2VlcCB0aGUgY29tcG9zaXRv
ciBhcm91bmQsIGEgc2luZ2xlIHdlYiBwYWdlIHdpbGwgZnJlcXVlbnRseSBlbnRlcgorICAgICAg
ICAvLyBhbmQgbGVhdmUgY29tcG9zaXRpbmcgbW9kZSBtYW55IHRpbWVzLiBJbnN0ZWFkIHdlIGRl
c3Ryb3kgaXQgd2hlbgorICAgICAgICAvLyBuYXZpZ2F0aW5nIHRvIGEgbmV3IHBhZ2UuCisgICAg
ICAgIHJlc2V0Q29tcG9zaXRpbmdTdXJmYWNlKCk7CisgICAgfSBlbHNlIGlmICghbV9jb21wb3Np
dG9yKQogICAgICAgICBjcmVhdGVDb21wb3NpdG9yKCk7CiAKICAgICAvLyBEb24ndCBBU1NFUlQo
bV9jb21wb3NpdG9yKSBoZXJlIGJlY2F1c2Ugc2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0
aXZlKHRydWUpCkBAIC01NDE5LDYgKzU1MDUsMTAgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6c2V0
Um9vdExheWVyQ29tcG9zaXRpbmdUaHJlYWQoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogbGF5ZXIK
IAogYm9vbCBXZWJQYWdlUHJpdmF0ZTo6Y3JlYXRlQ29tcG9zaXRvcigpCiB7CisgICAgLy8gSWYg
dGhlcmUncyBubyB3aW5kb3csIHRoZSBjb21wb3NpdG9yIHdpbGwgYmUgc3VwcGxpZWQgYnkgdGhl
IEFQSSBjbGllbnQKKyAgICBpZiAoIW1fY2xpZW50LT53aW5kb3coKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCiAgICAgbV9vd25lZENvbnRleHQgPSBHTEVTMkNvbnRleHQ6OmNyZWF0ZSh0aGlz
KTsKICAgICBtX2NvbXBvc2l0b3IgPSBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OmNyZWF0ZSh0
aGlzLCAwKTsKICAgICBtX2NvbXBvc2l0b3ItPnNldENvbnRleHQobV9vd25lZENvbnRleHQuZ2V0
KCkpOwpAQCAtNTQ2NSw3ICs1NTU1LDcgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6c3VzcGVuZFJv
b3RMYXllckNvbW1pdCgpCiAKICAgICBtX3N1c3BlbmRSb290TGF5ZXJDb21taXQgPSB0cnVlOwog
Ci0gICAgaWYgKCFtX2ZyYW1lTGF5ZXJzIHx8ICFtX2ZyYW1lTGF5ZXJzLT5oYXNMYXllcigpIHx8
ICFtX2NvbXBvc2l0b3IpCisgICAgaWYgKCFtX2NvbXBvc2l0b3IpCiAgICAgICAgIHJldHVybjsK
IAogICAgIFBsYXRmb3JtOjp1c2VySW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNsaWVudCgpLT5kaXNw
YXRjaFN5bmNNZXNzYWdlKApAQCAtNTQ5MSw2ICs1NTgxLDExIEBAIGJvb2wgV2ViUGFnZVByaXZh
dGU6Om5lZWRzT25lU2hvdERyYXdpbmdTeW5jaHJvbml6YXRpb24oKQogCiB2b2lkIFdlYlBhZ2VQ
cml2YXRlOjpzZXROZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9uKCkKIHsKKyAgICBp
ZiAoY29tcG9zaXRvckRyYXdzUm9vdExheWVyKCkpIHsKKyAgICAgICAgc2NoZWR1bGVSb290TGF5
ZXJDb21taXQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIC8vIFRoaXMgbWVhbnMg
d2UgaGF2ZSB0byBjb21taXQgbGF5ZXJzIG9uIG5leHQgcmVuZGVyLCBvciByZW5kZXIgb24gdGhl
IG5leHQgY29tbWl0LAogICAgIC8vIHdoaWNoZXZlciBoYXBwZW5zIGZpcnN0LgogICAgIG1fbmVl
ZHNDb21taXQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0Fw
aS9XZWJQYWdlQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dl
YlBhZ2VDb21wb3NpdG9yLmNwcAppbmRleCBkYTViZjc2YTIyZmRlNWQ0MzdiODE5NjQ2M2JmMDBk
MzI5ZjQzOTI0Li5lOTI2MjFjMmMwYTAyMWQwZTFkNDllOTZmMDQ3ZjgyZDhhMzg3OWI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yLmNw
cApAQCAtNDQsNiArNDQsNyBAQCBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OldlYlBhZ2VDb21w
b3NpdG9yUHJpdmF0ZShXZWJQYWdlUHJpdmF0ZSogcGFnZSwgV2ViUGFnZQogICAgIDogbV9jbGll
bnQoY2xpZW50KQogICAgICwgbV93ZWJQYWdlKHBhZ2UpCiAgICAgLCBtX3BlbmRpbmdBbmltYXRp
b25GcmFtZSgwLjApCisgICAgLCBtX2RyYXdzUm9vdExheWVyKGZhbHNlKQogewogICAgIHNldE9u
ZVNob3QodHJ1ZSk7IC8vIG9uZS1zaG90IGFuaW1hdGlvbiBjbGllbnQKIH0KQEAgLTEwNyw2ICsx
MDgsMTEgQEAgdm9pZCBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OnJlbmRlcihjb25zdCBJbnRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRSZWN0JiB0cmEKICAgICB9CiB9CiAKK2Jvb2wgV2ViUGFn
ZUNvbXBvc2l0b3JQcml2YXRlOjpkcmF3c1Jvb3RMYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fZHJhd3NSb290TGF5ZXI7Cit9CisKIGJvb2wgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpk
cmF3TGF5ZXJzKGNvbnN0IEludFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY29udGVu
dHMpCiB7CiAgICAgaWYgKCFtX2xheWVyUmVuZGVyZXIpCkBAIC0xMTQsOSArMTIwLDkgQEAgYm9v
bCBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OmRyYXdMYXllcnMoY29uc3QgSW50UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWMKIAogICAgIG1fcGVuZGluZ0FuaW1hdGlvbkZyYW1lID0gMC4w
OwogCi0gICAgYm9vbCBzaG91bGRDbGVhciA9IGZhbHNlOworICAgIGJvb2wgc2hvdWxkQ2xlYXIg
PSBkcmF3c1Jvb3RMYXllcigpOwogICAgIGlmIChCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9
IG1fd2ViUGFnZS0+bV9iYWNraW5nU3RvcmUpCi0gICAgICAgIHNob3VsZENsZWFyID0gIWJhY2tp
bmdTdG9yZS0+ZC0+aXNPcGVuR0xDb21wb3NpdGluZygpOworICAgICAgICBzaG91bGRDbGVhciA9
IHNob3VsZENsZWFyIHx8ICFiYWNraW5nU3RvcmUtPmQtPmlzT3BlbkdMQ29tcG9zaXRpbmcoKTsK
ICAgICBtX2xheWVyUmVuZGVyZXItPnNldENsZWFyU3VyZmFjZU9uRHJhd0xheWVycyhzaG91bGRD
bGVhcik7CiAKICAgICBtX2xheWVyUmVuZGVyZXItPmRyYXdMYXllcnMoY29udGVudHMsIG1fbGF5
b3V0UmVjdEZvckNvbXBvc2l0aW5nLCBtX2NvbnRlbnRzU2l6ZUZvckNvbXBvc2l0aW5nLCBkc3RS
ZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNv
bXBvc2l0b3JfcC5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9z
aXRvcl9wLmgKaW5kZXggZWI0YjAyNDg4ZGQyN2M4NDQ1ZjRiOTk4ODMyMDNhMTRhMDZlMmJmYy4u
OTAyYzRmNTQyMzYzMmViZTBjNWM0MGZkOTA1NTU2ODcyNDgyYmUxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRvcl9wLmgKKysrIGIvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRvcl9wLmgKQEAgLTU1LDYg
KzU1LDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtOjpHcmFwaGljczo6R0xFUzJDb250ZXh0KiBj
b250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0OyB9CiAgICAgdm9pZCBzZXRDb250ZXh0
KFBsYXRmb3JtOjpHcmFwaGljczo6R0xFUzJDb250ZXh0Kik7CiAKKyAgICBXZWJDb3JlOjpMYXll
ckNvbXBvc2l0aW5nVGhyZWFkKiByb290TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RMYXll
ci5nZXQoKTsgfQogICAgIHZvaWQgc2V0Um9vdExheWVyKFdlYkNvcmU6OkxheWVyQ29tcG9zaXRp
bmdUaHJlYWQqKTsKIAogICAgIHZvaWQgY29tbWl0KFdlYkNvcmU6OkxheWVyV2ViS2l0VGhyZWFk
KiByb290TGF5ZXJQcm94eSk7CkBAIC02Miw3ICs2MywxMSBAQCBwdWJsaWM6CiAgICAgLy8gVGhp
cyBpcyBtYXBwZWQgZnJvbSB0aGUgcHVibGljIEFQSSwgdGh1cyB0YWtlcyB0cmFuc2Zvcm1lZCBj
b250ZW50cwogICAgIHZvaWQgcmVuZGVyKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRzdFJlY3Qs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHRyYW5zZm9ybWVkQ29udGVudHMpOwogCi0gICAgLy8g
UmVuZGVyIGV2ZXJ5dGhpbmcgYnV0IHRoZSByb290IGxheWVyCisgICAgLy8gUmV0dXJucyB0cnVl
IGlmIHRoZSBXZWJQYWdlQ29tcG9zaXRvciBkcmF3cyB0aGUgcm9vdCBsYXllciwgZmFsc2UgaWYg
dGhlIEJhY2tpbmdTdG9yZSBkcmF3cyB0aGUgcm9vdCBsYXllcgorICAgIGJvb2wgZHJhd3NSb290
TGF5ZXIoKSBjb25zdDsKKyAgICB2b2lkIHNldERyYXdzUm9vdExheWVyKGJvb2wgZHJhd3NSb290
TGF5ZXIpIHsgbV9kcmF3c1Jvb3RMYXllciA9IGRyYXdzUm9vdExheWVyOyB9CisKKyAgICAvLyBS
ZW5kZXIgZXZlcnl0aGluZyBidXQgdGhlIHJvb3QgbGF5ZXIsIG9yIGV2ZXJ5dGhpbmcgaWYgZHJh
d3NSb290TGF5ZXIoKSBpcyB0cnVlLgogICAgIGJvb2wgZHJhd0xheWVycyhjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBkc3RSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGNvbnRlbnRzKTsK
IAogICAgIFdlYkNvcmU6OkludFJlY3QgbGF5b3V0UmVjdEZvckNvbXBvc2l0aW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9sYXlvdXRSZWN0Rm9yQ29tcG9zaXRpbmc7IH0KQEAgLTk3LDYgKzEwMiw3IEBA
IHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2NvbnRlbnRzU2l6ZUZvckNvbXBvc2l0
aW5nOwogICAgIFdlYkNvcmU6OkxheWVyUmVuZGVyaW5nUmVzdWx0cyBtX2xhc3RDb21wb3NpdGlu
Z1Jlc3VsdHM7CiAgICAgZG91YmxlIG1fcGVuZGluZ0FuaW1hdGlvbkZyYW1lOworICAgIGJvb2wg
bV9kcmF3c1Jvb3RMYXllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaCBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgKaW5kZXggNjk2NjQ1MWEzODBjODllYTA2NWMw
MGUwZGJjN2U3YTZhMmEyYjRlNS4uZTBjYWMwNTE1ZWY4YTIxNWFmZmY4MzMzNzUxMDMxMTg0MWM0
NDRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3Au
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5oCkBAIC0zNTYs
NiArMzU2LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV90cmFuc2Zvcm1hdGlvbk1hdHJp
eDsKICAgICB9CiAKKyAgICBib29sIGNvbXBvc2l0b3JEcmF3c1Jvb3RMYXllcigpIGNvbnN0OyAv
LyBUaHJlYWQgc2FmZQorICAgIHZvaWQgc2V0Q29tcG9zaXRvckRyYXdzUm9vdExheWVyKGJvb2wp
OyAvLyBXZWJLaXQgdGhyZWFkIG9ubHkKKwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKICAgICAvLyBXZWJLaXQgdGhyZWFkLgogICAgIGJvb2wgbmVlZHNPbmVTaG90RHJhd2luZ1N5
bmNocm9uaXphdGlvbigpOwpAQCAtMzc0LDcgKzM3Nyw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENv
bXBvc2l0aW5nIHRocmVhZC4KICAgICB2b2lkIHNldFJvb3RMYXllckNvbXBvc2l0aW5nVGhyZWFk
KFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQqKTsKLSAgICB2b2lkIGNvbW1pdFJvb3RM
YXllcihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwor
ICAgIHZvaWQgY29tbWl0Um9vdExheWVyKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiwgYm9vbCk7CiAgICAgYm9vbCBpc0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdBY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0b3I7IH0KICAgICBXZWJQYWdlQ29t
cG9zaXRvclByaXZhdGUqIGNvbXBvc2l0b3IoKSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0b3Iu
Z2V0KCk7IH0KICAgICB2b2lkIHNldENvbXBvc2l0b3IoUGFzc1JlZlB0cjxXZWJQYWdlQ29tcG9z
aXRvclByaXZhdGU+KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135800</attachid>
            <date>2012-04-05 04:18:48 -0700</date>
            <delta_ts>2012-04-05 08:57:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83131-20120405071847.patch</filename>
            <type>text/plain</type>
            <size>40364</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCAyNGQ1N2MxYjEyOTYwM2E5NzZiOThkNjM5ODIxNDA3OWE0NWYyNGE1Li42ZWExZmJmZjMz
ZDNkOGI2NDBhNTgyZjQwZWEwNTBlZTIyMTEwNzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAxMi0wNC0wNCAgQXJ2aWQgTmlsc3NvbiAgPGFuaWxz
c29uQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIEZvcmNlIGNvbXBvc2l0aW5nIG1v
ZGUgd2hlbiBiYWNraW5nIHN0b3JlIGlzIG5vdCBhY3RpdmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUklNIFBSOiAxMzYzODEKKyAgICAgICAgTm9ybWFs
bHksIHRoZSBCbGFja0JlcnJ5IFdlYktpdCBwb3J0IHJlc29ydHMgdG8gZGlyZWN0IHJlbmRlcmlu
ZyB3aGVuCisgICAgICAgIHRoZSBiYWNraW5nIHN0b3JlIGlzIG5vdCBhY3RpdmUuIEhvd2V2ZXIs
IGRpcmVjdCByZW5kZXJpbmcgaXMgYnJva2VuCisgICAgICAgIHdpdGggdGhlIE9wZW5HTCBjb2Rl
IHBhdGguIFRoaXMgcHJldmVudGVkIG11bHRpcGxlIHdlYiBwYWdlcyBmcm9tIGJlaW5nCisgICAg
ICAgIGRpc3BsYXllZCBhdCBvbmNlIHdpdGggdGhlIG5ldyBXZWJQYWdlQ29tcG9zaXRvciBBUEku
CisKKyAgICAgICAgRml4ZWQgYnkgdXNpbmcgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgbGF5ZXIg
dG8gcmVuZGVyIHRoZSByb290IGxheWVyCisgICAgICAgIGluc3RlYWQgb2YgYmFja2luZyBzdG9y
ZS4gVGhpcyB3aWxsIGdpdmUgdXMgYSB0aWxlZCBsYXllciBiYWNraW5nIHRoZQorICAgICAgICBy
b290IGxheWVyLCB3aGljaCBmb3Igc29tZSB1c2UgY2FzZXMgaXMgZXZlbiBiZXR0ZXIgdGhhbiBk
aXJlY3QKKyAgICAgICAgcmVuZGVyaW5nLgorCisgICAgICAgIFJldmlld2VkIGludGVybmFsbHkg
YnkgRmlsaXAgU3BhY2VrLgorCisgICAgICAgICogQXBpL0JhY2tpbmdTdG9yZS5jcHA6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OnNob3VsZERpcmVj
dFJlbmRlcmluZ1RvV2luZG93KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2lu
Z1N0b3JlUHJpdmF0ZTo6YmxpdENvbnRlbnRzKToKKyAgICAgICAgKiBBcGkvV2ViUGFnZS5jcHA6
CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpzZXRMb2FkU3Rh
dGUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlOjpzZXRWaXNpYmxlKToK
KyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OnN1c3BlbmRCYWNr
aW5nU3RvcmUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6
cmVzdW1lQmFja2luZ1N0b3JlKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFn
ZVByaXZhdGU6OmNvbXBvc2l0b3JEcmF3c1Jvb3RMYXllcik6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6c2V0Q29tcG9zaXRv
ckRyYXdzUm9vdExheWVyKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVBy
aXZhdGU6OmRyYXdMYXllcnNPbkNvbW1pdCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OldlYlBhZ2VQcml2YXRlOjpzY2hlZHVsZVJvb3RMYXllckNvbW1pdCk6CisgICAgICAgIChCbGFj
a0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpjb21taXRSb290TGF5ZXIpOgorICAgICAg
ICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6Y29tbWl0Um9vdExheWVySWZO
ZWVkZWQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6cm9v
dExheWVyQ29tbWl0VGltZXJGaXJlZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6Oldl
YlBhZ2VQcml2YXRlOjpzZXRSb290TGF5ZXJDb21wb3NpdGluZ1RocmVhZCk6CisgICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpjcmVhdGVDb21wb3NpdG9yKToKKyAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OnN1c3BlbmRSb290TGF5
ZXJDb21taXQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6
c2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9uaXphdGlvbik6CisgICAgICAgICogQXBpL1dl
YlBhZ2VDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFn
ZUNvbXBvc2l0b3JQcml2YXRlOjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGUpOgorICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OmRyYXdzUm9vdExh
eWVyKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6Oldl
YlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6ZHJhd0xheWVycyk6CisgICAgICAgICogQXBpL1dlYlBh
Z2VDb21wb3NpdG9yX3AuaDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNv
bXBvc2l0b3JQcml2YXRlOjpyb290TGF5ZXIpOgorICAgICAgICAoV2ViUGFnZUNvbXBvc2l0b3JQ
cml2YXRlKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQ
cml2YXRlOjpzZXREcmF3c1Jvb3RMYXllcik6CisgICAgICAgICogQXBpL1dlYlBhZ2VfcC5oOgor
ICAgICAgICAoV2ViUGFnZVByaXZhdGUpOgorCiAyMDEyLTA0LTA1ICBKb25hdGhhbiBEb25nICA8
am9uYXRoYW4uZG9uZ0B0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgW0JsYWNrQmVycnld
IENsZWFyIGxvY2FsIHN0b3JhZ2Ugd29uJ3QgdGFrZSBlZmZlY3QgdW50aWwgYnJvd3NlciBleGl0
IGFuZCByZWxhdW5jaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9C
YWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3Rv
cmUuY3BwCmluZGV4IGRlMzIxYjg1YzdjODk2NWUwY2ZlMmMwZDRmNTY3NWZiNDQwZTkwODkuLjZh
OTk5ODEyYWMzYTI1NzdlZjVjMjJmNmIyN2Q4ODMzZDdjZmZjMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZS5jcHAKQEAgLTI0Myw5ICsyNDMsMjEgQEAg
QmFja2luZ1N0b3JlUHJpdmF0ZTo6fkJhY2tpbmdTdG9yZVByaXZhdGUoKQogCiBib29sIEJhY2tp
bmdTdG9yZVByaXZhdGU6OnNob3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93KCkgY29uc3QKIHsK
LSAgICBpZiAobV93ZWJQYWdlLT5zZXR0aW5ncygpLT5pc0RpcmVjdFJlbmRlcmluZ1RvV2luZG93
RW5hYmxlZCgpIHx8ICFpc0FjdGl2ZSgpKQorICAgIC8vIERpcmVjdCByZW5kZXJpbmcgZG9lc24n
dCB3b3JrIHdpdGggT3BlbkdMIGNvbXBvc2l0aW5nIGNvZGUgcGF0aHMgZHVlIHRvCisgICAgLy8g
YSByYWNlIGNvbmRpdGlvbiBvbiB3aGljaCB0aHJlYWQncyBFR0wgY29udGV4dCBnZXRzIHRvIG1h
a2UgdGhlIHN1cmZhY2UKKyAgICAvLyBjdXJyZW50LCBzZWUgUFIgMTA1NzUwLgorICAgIC8vIEFz
IGEgd29ya2Fyb3VuZCwgd2Ugd2lsbCBiZSB1c2luZyBjb21wb3NpdG9yIHRvIGRyYXcgdGhlIHJv
b3QgbGF5ZXIuCisgICAgaWYgKGlzT3BlbkdMQ29tcG9zaXRpbmcoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKG1fd2ViUGFnZS0+c2V0dGluZ3MoKS0+aXNEaXJlY3RSZW5kZXJp
bmdUb1dpbmRvd0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICAvLyBJZiB0
aGUgQmFja2luZ1N0b3JlIGlzIGluYWN0aXZlLCBzZWUgaWYgdGhlcmUncyBhIGNvbXBvc2l0b3Ig
dG8gZG8gdGhlCisgICAgLy8gd29yayBvZiByZW5kZXJpbmcgdGhlIHJvb3QgbGF5ZXIuCisgICAg
aWYgKCFpc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm4gIW1fd2ViUGFnZS0+ZC0+Y29tcG9zaXRv
ckRyYXdzUm9vdExheWVyKCk7CisKICAgICBjb25zdCBCYWNraW5nU3RvcmVHZW9tZXRyeSogY3Vy
cmVudFN0YXRlID0gZnJvbnRTdGF0ZSgpOwogICAgIGNvbnN0IHVuc2lnbmVkIHRpbGVzTmVjZXNz
YXJ5ID0gbWluaW11bU51bWJlck9mVGlsZXNXaWRlKCkgKiBtaW5pbXVtTnVtYmVyT2ZUaWxlc0hp
Z2goKTsKICAgICBjb25zdCB1bnNpZ25lZCB0aWxlc0F2YWlsYWJsZSA9IGN1cnJlbnRTdGF0ZS0+
bnVtYmVyT2ZUaWxlc1dpZGUoKSAqIGN1cnJlbnRTdGF0ZS0+bnVtYmVyT2ZUaWxlc0hpZ2goKTsK
QEAgLTEyMjIsNyArMTIzNCw3IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6YmxpdENvbnRl
bnRzKGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBkc3RSZWN0LAogICAgIGlmIChzaG91bGREaXJl
Y3RSZW5kZXJpbmdUb1dpbmRvdygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fd2Vi
UGFnZS0+aXNWaXNpYmxlKCkgfHwgbV9zdXNwZW5kU2NyZWVuVXBkYXRlcyB8fCAhaXNBY3RpdmUo
KSkgeworICAgIGlmICghbV93ZWJQYWdlLT5pc1Zpc2libGUoKSB8fCBtX3N1c3BlbmRTY3JlZW5V
cGRhdGVzKSB7CiAgICAgICAgIC8vIEF2b2lkIGNsaWVudCBnb2luZyBpbnRvIGJ1c3kgbG9vcCB3
aGlsZSBibGl0IGlzIGltcG9zc2libGUuCiAgICAgICAgIGlmIChmb3JjZSkKICAgICAgICAgICAg
IG1faGFzQmxpdEpvYnMgPSBmYWxzZTsKQEAgLTEyNTgsNyArMTI3MCw2IEBAIHZvaWQgQmFja2lu
Z1N0b3JlUHJpdmF0ZTo6YmxpdENvbnRlbnRzKGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBkc3RS
ZWN0LAogCiAgICAgbV9oYXNCbGl0Sm9icyA9IGZhbHNlOwogCi0gICAgQmFja2luZ1N0b3JlR2Vv
bWV0cnkqIGN1cnJlbnRTdGF0ZSA9IGZyb250U3RhdGUoKTsKICAgICBjb25zdCBQbGF0Zm9ybTo6
SW50UmVjdCBjb250ZW50c1JlY3QgPSBQbGF0Zm9ybTo6SW50UmVjdChQbGF0Zm9ybTo6SW50UG9p
bnQoMCwgMCksIG1fY2xpZW50LT50cmFuc2Zvcm1lZENvbnRlbnRzU2l6ZSgpKTsKIAogI2lmIERF
QlVHX1ZJU1VBTElaRQpAQCAtMTI2Nyw3ICsxMjc4LDcgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2
YXRlOjpibGl0Q29udGVudHMoY29uc3QgUGxhdGZvcm06OkludFJlY3QmIGRzdFJlY3QsCiAgICAg
Ly8gY2FuIHZpc3VhbGl6ZSB0aGUgZW50aXJlIGJhY2tpbmdzdG9yZSBhbmQgd2hhdCBpdCBpcyBk
b2luZyB3aGVuIHdlCiAgICAgLy8gc2Nyb2xsIGFuZCB6b29tIQogICAgIC8vIEZJWE1FOiBUaGlz
IHNob3VsZCBub3QgZXhwbGljaXRlbHkgZGVwZW5kIG9uIFdlYkNvcmU6Oi4KLSAgICBXZWJDb3Jl
OjpJbnRSZWN0IGRlYnVnUmVjdCA9IGN1cnJlbnRTdGF0ZS0+YmFja2luZ1N0b3JlUmVjdCgpOwor
ICAgIFdlYkNvcmU6OkludFJlY3QgZGVidWdSZWN0ID0gZnJvbnRTdGF0ZSgpLT5iYWNraW5nU3Rv
cmVSZWN0KCk7CiAgICAgZGVidWdSZWN0LnVuaXRlKG1fd2ViUGFnZS0+Y2xpZW50KCktPnVzZXJJ
bnRlcmZhY2VCbGl0dGVkVmlzaWJsZUNvbnRlbnRzUmVjdCgpKTsKICAgICBpZiAoZGVidWdSZWN0
LndpZHRoKCkgPCBkZWJ1Z1JlY3QuaGVpZ2h0KCkpCiAgICAgICAgIGRlYnVnUmVjdC5zZXRXaWR0
aChjZWlsKGRvdWJsZShzcmNSZWN0LndpZHRoKCkpICogKGRvdWJsZShkZWJ1Z1JlY3QuaGVpZ2h0
KCkpIC8gc3JjUmVjdC5oZWlnaHQoKSkpKTsKQEAgLTEyODMsOCArMTI5NCw2IEBAIHZvaWQgQmFj
a2luZ1N0b3JlUHJpdmF0ZTo6YmxpdENvbnRlbnRzKGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBk
c3RSZWN0LAogICAgIGlmICghY29udGVudHMuaXNFbXB0eSgpKQogICAgICAgICB0cmFuc2Zvcm1h
dGlvbiA9IFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0KEZsb2F0UmVjdChGbG9hdFBv
aW50KDAuMCwgMC4wKSwgV2ViQ29yZTo6SW50U2l6ZShjb250ZW50cy5zaXplKCkpKSwgV2ViQ29y
ZTo6SW50UmVjdChkc3RSZWN0KSk7CiAKLSAgICBib29sIGJsaXR0aW5nRGlyZWN0bHlUb0NvbXBv
c2l0aW5nV2luZG93ID0gaXNPcGVuR0xDb21wb3NpdGluZygpOwotCiAjaWYgREVCVUdfQkFDS0lO
R1NUT1JFCiAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OmxvZyhCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6TG9nTGV2ZWxDcml0aWNhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCYWNraW5n
U3RvcmVQcml2YXRlOjpibGl0Q29udGVudHMgZHN0UmVjdD0oJWQsJWQgJWR4JWQpIHNyY1JlY3Q9
KCVkLCVkICVkeCVkKSIsCkBAIC0xMjk1LDE2MSArMTMwNCwxNjggQEAgdm9pZCBCYWNraW5nU3Rv
cmVQcml2YXRlOjpibGl0Q29udGVudHMoY29uc3QgUGxhdGZvcm06OkludFJlY3QmIGRzdFJlY3Qs
CiAgICAgUGxhdGZvcm06OkludFBvaW50IG9yaWdpbiA9IGNvbnRlbnRzLmxvY2F0aW9uKCk7CiAg
ICAgUGxhdGZvcm06OkludFJlY3QgY29udGVudHNDbGlwcGVkID0gY29udGVudHM7CiAKLSAgICBw
YWludERlZmF1bHRCYWNrZ3JvdW5kKGNvbnRlbnRzLCB0cmFuc2Zvcm1hdGlvbiwgZmFsc2UgLypm
bHVzaCovKTsKKyAgICBWZWN0b3I8VGlsZUJ1ZmZlcio+IGJsaXR0ZWRUaWxlczsKIAotICAgIFRp
bGVNYXAgY3VycmVudE1hcCA9IGN1cnJlbnRTdGF0ZS0+dGlsZU1hcCgpOworICAgIGlmIChpc0Fj
dGl2ZSgpICYmICFtX3dlYlBhZ2UtPmQtPmNvbXBvc2l0b3JEcmF3c1Jvb3RMYXllcigpKSB7Cisg
ICAgICAgIHBhaW50RGVmYXVsdEJhY2tncm91bmQoY29udGVudHMsIHRyYW5zZm9ybWF0aW9uLCBm
YWxzZSAvKmZsdXNoKi8pOworCisgICAgICAgIEJhY2tpbmdTdG9yZUdlb21ldHJ5KiBjdXJyZW50
U3RhdGUgPSBmcm9udFN0YXRlKCk7CisgICAgICAgIFRpbGVNYXAgY3VycmVudE1hcCA9IGN1cnJl
bnRTdGF0ZS0+dGlsZU1hcCgpOwogCiAjaWYgREVCVUdfQ0hFQ0tFUkJPQVJECi0gICAgYm9vbCBi
bGl0Q2hlY2tlcmVkID0gZmFsc2U7CisgICAgICAgIGJvb2wgYmxpdENoZWNrZXJlZCA9IGZhbHNl
OwogI2VuZGlmCiAKLSAgICAvLyBEb24ndCBjbGlwIHRvIGNvbnRlbnRzIGlmIGl0IGlzIGVtcHR5
IHNvIHdlIGNhbiBzdGlsbCBwYWludCBkZWZhdWx0IGJhY2tncm91bmQuCi0gICAgaWYgKCFjb250
ZW50c1JlY3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNvbnRlbnRzQ2xpcHBlZC5pbnRlcnNlY3Qo
Y29udGVudHNSZWN0KTsKLSAgICAgICAgaWYgKGNvbnRlbnRzQ2xpcHBlZC5pc0VtcHR5KCkpIHsK
LSAgICAgICAgICAgIGludmFsaWRhdGVXaW5kb3coZHN0UmVjdCk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KKyAgICAgICAgLy8gRG9uJ3QgY2xpcCB0byBjb250ZW50cyBpZiBpdCBp
cyBlbXB0eSBzbyB3ZSBjYW4gc3RpbGwgcGFpbnQgZGVmYXVsdCBiYWNrZ3JvdW5kLgorICAgICAg
ICBpZiAoIWNvbnRlbnRzUmVjdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGNvbnRlbnRzQ2xp
cHBlZC5pbnRlcnNlY3QoY29udGVudHNSZWN0KTsKKyAgICAgICAgICAgIGlmIChjb250ZW50c0Ns
aXBwZWQuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgaW52YWxpZGF0ZVdpbmRvdyhkc3RS
ZWN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAKLSAgICAgICAg
UGxhdGZvcm06OkludFJlY3RSZWdpb24gY29udGVudHNSZWdpb24gPSBjb250ZW50c0NsaXBwZWQ7
Ci0gICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9uIGJhY2tpbmdTdG9yZVJlZ2lvbiA9IGN1
cnJlbnRTdGF0ZS0+YmFja2luZ1N0b3JlUmVjdCgpOwotICAgICAgICBQbGF0Zm9ybTo6SW50UmVj
dFJlZ2lvbiBjaGVja2VyZWRSZWdpb24KLSAgICAgICAgICAgID0gUGxhdGZvcm06OkludFJlY3RS
ZWdpb246OnN1YnRyYWN0UmVnaW9ucyhjb250ZW50c1JlZ2lvbiwgYmFja2luZ1N0b3JlUmVnaW9u
KTsKLQotICAgICAgICAvLyBCbGl0IGNoZWNrZXJlZCB0byB0aG9zZSBwYXJ0cyB0aGF0IGFyZSBu
b3QgY292ZXJlZCBieSB0aGUgYmFja2luZ1N0b3JlUmVjdC4KLSAgICAgICAgSW50UmVjdExpc3Qg
Y2hlY2tlcmVkUmVjdHMgPSBjaGVja2VyZWRSZWdpb24ucmVjdHMoKTsKLSAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBjaGVja2VyZWRSZWN0cy5zaXplKCk7ICsraSkgewotICAgICAgICAg
ICAgUGxhdGZvcm06OkludFJlY3QgZHN0UmVjdCA9IHRyYW5zZm9ybWF0aW9uLm1hcFJlY3QoUGxh
dGZvcm06OkludFJlY3QoCi0gICAgICAgICAgICAgICAgUGxhdGZvcm06OkludFBvaW50KGNoZWNr
ZXJlZFJlY3RzLmF0KGkpLngoKSAtIG9yaWdpbi54KCksIGNoZWNrZXJlZFJlY3RzLmF0KGkpLnko
KSAtIG9yaWdpbi55KCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVj
a2VyZWRSZWN0cy5hdChpKS5zaXplKCkpKTsKKyAgICAgICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0
UmVnaW9uIGNvbnRlbnRzUmVnaW9uID0gY29udGVudHNDbGlwcGVkOworICAgICAgICAgICAgUGxh
dGZvcm06OkludFJlY3RSZWdpb24gYmFja2luZ1N0b3JlUmVnaW9uID0gY3VycmVudFN0YXRlLT5i
YWNraW5nU3RvcmVSZWN0KCk7CisgICAgICAgICAgICBQbGF0Zm9ybTo6SW50UmVjdFJlZ2lvbiBj
aGVja2VyZWRSZWdpb24KKyAgICAgICAgICAgICAgICA9IFBsYXRmb3JtOjpJbnRSZWN0UmVnaW9u
OjpzdWJ0cmFjdFJlZ2lvbnMoY29udGVudHNSZWdpb24sIGJhY2tpbmdTdG9yZVJlZ2lvbik7CisK
KyAgICAgICAgICAgIC8vIEJsaXQgY2hlY2tlcmVkIHRvIHRob3NlIHBhcnRzIHRoYXQgYXJlIG5v
dCBjb3ZlcmVkIGJ5IHRoZSBiYWNraW5nU3RvcmVSZWN0LgorICAgICAgICAgICAgSW50UmVjdExp
c3QgY2hlY2tlcmVkUmVjdHMgPSBjaGVja2VyZWRSZWdpb24ucmVjdHMoKTsKKyAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hlY2tlcmVkUmVjdHMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgICAgICAgICBQbGF0Zm9ybTo6SW50UmVjdCBkc3RSZWN0ID0gdHJhbnNmb3JtYXRpb24u
bWFwUmVjdChQbGF0Zm9ybTo6SW50UmVjdCgKKyAgICAgICAgICAgICAgICAgICAgUGxhdGZvcm06
OkludFBvaW50KGNoZWNrZXJlZFJlY3RzLmF0KGkpLngoKSAtIG9yaWdpbi54KCksIGNoZWNrZXJl
ZFJlY3RzLmF0KGkpLnkoKSAtIG9yaWdpbi55KCkpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hlY2tlcmVkUmVjdHMuYXQoaSkuc2l6ZSgpKSk7CiAjaWYgREVCVUdf
Q0hFQ0tFUkJPQVJECi0gICAgICAgICAgICBibGl0Q2hlY2tlcmVkID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICBibGl0Q2hlY2tlcmVkID0gdHJ1ZTsKICNlbmRpZgotICAgICAgICAgICAgY2hlY2tl
cldpbmRvdyhkc3RSZWN0LCBjaGVja2VyZWRSZWN0cy5hdChpKS5sb2NhdGlvbigpLCB0cmFuc2Zv
cm1hdGlvbi5hKCkpOworICAgICAgICAgICAgICAgIGNoZWNrZXJXaW5kb3coZHN0UmVjdCwgY2hl
Y2tlcmVkUmVjdHMuYXQoaSkubG9jYXRpb24oKSwgdHJhbnNmb3JtYXRpb24uYSgpKTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfQotICAgIH0KIAotICAgIFZlY3RvcjxUaWxlQnVmZmVyKj4gYmxp
dHRlZFRpbGVzOworICAgICAgICAvLyBHZXQgdGhlIGxpc3Qgb2YgdGlsZSByZWN0cyB0aGF0IG1h
a2V1cCB0aGUgY29udGVudC4KKyAgICAgICAgVGlsZVJlY3RMaXN0IHRpbGVSZWN0TGlzdCA9IG1h
cEZyb21UcmFuc2Zvcm1lZENvbnRlbnRzVG9UaWxlcyhjb250ZW50c0NsaXBwZWQsIGN1cnJlbnRT
dGF0ZSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGlsZVJlY3RMaXN0LnNpemUo
KTsgKytpKSB7CisgICAgICAgICAgICBUaWxlUmVjdCB0aWxlUmVjdCA9IHRpbGVSZWN0TGlzdFtp
XTsKKyAgICAgICAgICAgIFRpbGVJbmRleCBpbmRleCA9IHRpbGVSZWN0LmZpcnN0OworICAgICAg
ICAgICAgUGxhdGZvcm06OkludFJlY3QgZGlydHlUaWxlUmVjdCA9IHRpbGVSZWN0LnNlY29uZDsK
KyAgICAgICAgICAgIEJhY2tpbmdTdG9yZVRpbGUqIHRpbGUgPSBjdXJyZW50TWFwLmdldChpbmRl
eCk7CisgICAgICAgICAgICBUaWxlQnVmZmVyKiB0aWxlQnVmZmVyID0gdGlsZS0+ZnJvbnRCdWZm
ZXIoKTsKIAotICAgIC8vIEdldCB0aGUgbGlzdCBvZiB0aWxlIHJlY3RzIHRoYXQgbWFrZXVwIHRo
ZSBjb250ZW50LgotICAgIFRpbGVSZWN0TGlzdCB0aWxlUmVjdExpc3QgPSBtYXBGcm9tVHJhbnNm
b3JtZWRDb250ZW50c1RvVGlsZXMoY29udGVudHNDbGlwcGVkLCBjdXJyZW50U3RhdGUpOwotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGlsZVJlY3RMaXN0LnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIFRpbGVSZWN0IHRpbGVSZWN0ID0gdGlsZVJlY3RMaXN0W2ldOwotICAgICAgICBUaWxlSW5k
ZXggaW5kZXggPSB0aWxlUmVjdC5maXJzdDsKLSAgICAgICAgUGxhdGZvcm06OkludFJlY3QgZGly
dHlUaWxlUmVjdCA9IHRpbGVSZWN0LnNlY29uZDsKLSAgICAgICAgQmFja2luZ1N0b3JlVGlsZSog
dGlsZSA9IGN1cnJlbnRNYXAuZ2V0KGluZGV4KTsKLSAgICAgICAgVGlsZUJ1ZmZlciogdGlsZUJ1
ZmZlciA9IHRpbGUtPmZyb250QnVmZmVyKCk7CisgICAgICAgICAgICAvLyBUaGlzIGRpcnR5IHJl
Y3QgaXMgaW4gdGlsZSBjb29yZGluYXRlcywgYnV0IGl0IG5lZWRzIHRvIGJlIGluCisgICAgICAg
ICAgICAvLyB0cmFuc2Zvcm1lZCBjb250ZW50cyBjb29yZGluYXRlcy4KKyAgICAgICAgICAgIFBs
YXRmb3JtOjpJbnRSZWN0IGRpcnR5UmVjdAorICAgICAgICAgICAgICAgID0gbWFwRnJvbVRpbGVz
VG9UcmFuc2Zvcm1lZENvbnRlbnRzKHRpbGVSZWN0LCBjdXJyZW50U3RhdGUtPmJhY2tpbmdTdG9y
ZVJlY3QoKSk7CiAKLSAgICAgICAgLy8gVGhpcyBkaXJ0eSByZWN0IGlzIGluIHRpbGUgY29vcmRp
bmF0ZXMsIGJ1dCBpdCBuZWVkcyB0byBiZSBpbgotICAgICAgICAvLyB0cmFuc2Zvcm1lZCBjb250
ZW50cyBjb29yZGluYXRlcy4KLSAgICAgICAgUGxhdGZvcm06OkludFJlY3QgZGlydHlSZWN0Ci0g
ICAgICAgICAgICA9IG1hcEZyb21UaWxlc1RvVHJhbnNmb3JtZWRDb250ZW50cyh0aWxlUmVjdCwg
Y3VycmVudFN0YXRlLT5iYWNraW5nU3RvcmVSZWN0KCkpOworICAgICAgICAgICAgLy8gRG9uJ3Qg
Y2xpcCB0byBjb250ZW50cyBpZiBpdCBpcyBlbXB0eSBzbyB3ZSBjYW4gc3RpbGwgcGFpbnQgZGVm
YXVsdCBiYWNrZ3JvdW5kLgorICAgICAgICAgICAgaWYgKCFjb250ZW50c1JlY3QuaXNFbXB0eSgp
KSB7CisgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHdlIHNob3VsZCBjbGlwIHRoZSBjb250
ZW50cyBzaXplIGFuZCBibGl0LgorICAgICAgICAgICAgICAgIGRpcnR5UmVjdC5pbnRlcnNlY3Qo
Y29udGVudHNSZWN0KTsKIAotICAgICAgICAvLyBEb24ndCBjbGlwIHRvIGNvbnRlbnRzIGlmIGl0
IGlzIGVtcHR5IHNvIHdlIGNhbiBzdGlsbCBwYWludCBkZWZhdWx0IGJhY2tncm91bmQuCi0gICAg
ICAgIGlmICghY29udGVudHNSZWN0LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgLy8gT3RoZXJ3
aXNlIHdlIHNob3VsZCBjbGlwIHRoZSBjb250ZW50cyBzaXplIGFuZCBibGl0LgotICAgICAgICAg
ICAgZGlydHlSZWN0LmludGVyc2VjdChjb250ZW50c1JlY3QpOworICAgICAgICAgICAgICAgIC8v
IFdlIHByb2JhYmx5IGhhdmUgZXh0cmEgdGlsZXMgc2luY2UgdGhlIGNvbnRlbnRzIHNpemUgaXMg
c28gc21hbGwuCisgICAgICAgICAgICAgICAgLy8gU2F2ZSBzb21lIGN5Y2xlcyBoZXJlLi4uCisg
ICAgICAgICAgICAgICAgaWYgKGRpcnR5UmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBOb3csIHRoaXMg
ZGlydHkgcmVjdCBpcyBpbiB0cmFuc2Zvcm1lZCBjb29yZGluYXRlcyByZWxhdGl2ZSB0byB0aGUK
KyAgICAgICAgICAgIC8vIHRyYW5zZm9ybWVkIGNvbnRlbnRzLCBidXQgdWx0aW1hdGVseSBpdCBu
ZWVkcyB0byBiZSB0cmFuc2Zvcm1lZAorICAgICAgICAgICAgLy8gY29vcmRpbmF0ZXMgcmVsYXRp
dmUgdG8gdGhlIHZpZXdwb3J0LgorICAgICAgICAgICAgZGlydHlSZWN0Lm1vdmUoLW9yaWdpbi54
KCksIC1vcmlnaW4ueSgpKTsKIAotICAgICAgICAgICAgLy8gV2UgcHJvYmFibHkgaGF2ZSBleHRy
YSB0aWxlcyBzaW5jZSB0aGUgY29udGVudHMgc2l6ZSBpcyBzbyBzbWFsbC4KICAgICAgICAgICAg
IC8vIFNhdmUgc29tZSBjeWNsZXMgaGVyZS4uLgotICAgICAgICAgICAgaWYgKGRpcnR5UmVjdC5p
c0VtcHR5KCkpCisgICAgICAgICAgICBpZiAoZGlydHlSZWN0LmlzRW1wdHkoKSB8fCBkaXJ0eVRp
bGVSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQog
Ci0gICAgICAgIC8vIE5vdywgdGhpcyBkaXJ0eSByZWN0IGlzIGluIHRyYW5zZm9ybWVkIGNvb3Jk
aW5hdGVzIHJlbGF0aXZlIHRvIHRoZQotICAgICAgICAvLyB0cmFuc2Zvcm1lZCBjb250ZW50cywg
YnV0IHVsdGltYXRlbHkgaXQgbmVlZHMgdG8gYmUgdHJhbnNmb3JtZWQKLSAgICAgICAgLy8gY29v
cmRpbmF0ZXMgcmVsYXRpdmUgdG8gdGhlIHZpZXdwb3J0LgotICAgICAgICBkaXJ0eVJlY3QubW92
ZSgtb3JpZ2luLngoKSwgLW9yaWdpbi55KCkpOworICAgICAgICAgICAgVGlsZVJlY3Qgd2hvbGVU
aWxlUmVjdDsKKyAgICAgICAgICAgIHdob2xlVGlsZVJlY3QuZmlyc3QgPSBpbmRleDsKKyAgICAg
ICAgICAgIHdob2xlVGlsZVJlY3Quc2Vjb25kID0gdGhpcy0+dGlsZVJlY3QoKTsKIAotICAgICAg
ICAvLyBTYXZlIHNvbWUgY3ljbGVzIGhlcmUuLi4KLSAgICAgICAgaWYgKGRpcnR5UmVjdC5pc0Vt
cHR5KCkgfHwgZGlydHlUaWxlUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIGJvb2wgY29tbWl0dGVkID0gdGlsZS0+aXNDb21taXR0ZWQoKTsKKyAgICAg
ICAgICAgIGJvb2wgcmVuZGVyZWQgPSB0aWxlQnVmZmVyLT5pc1JlbmRlcmVkKGRpcnR5VGlsZVJl
Y3QpOworICAgICAgICAgICAgYm9vbCBwYWludENoZWNrZXJlZCA9ICFjb21taXR0ZWQgfHwgIXJl
bmRlcmVkOwogCi0gICAgICAgIFRpbGVSZWN0IHdob2xlVGlsZVJlY3Q7Ci0gICAgICAgIHdob2xl
VGlsZVJlY3QuZmlyc3QgPSBpbmRleDsKLSAgICAgICAgd2hvbGVUaWxlUmVjdC5zZWNvbmQgPSB0
aGlzLT50aWxlUmVjdCgpOwotCi0gICAgICAgIGJvb2wgY29tbWl0dGVkID0gdGlsZS0+aXNDb21t
aXR0ZWQoKTsKLSAgICAgICAgYm9vbCByZW5kZXJlZCA9IHRpbGVCdWZmZXItPmlzUmVuZGVyZWQo
ZGlydHlUaWxlUmVjdCk7Ci0gICAgICAgIGJvb2wgcGFpbnRDaGVja2VyZWQgPSAhY29tbWl0dGVk
IHx8ICFyZW5kZXJlZDsKLQotICAgICAgICBpZiAocGFpbnRDaGVja2VyZWQpIHsKLSAgICAgICAg
ICAgIFBsYXRmb3JtOjpJbnRSZWN0IGRpcnR5UmVjdFQgPSB0cmFuc2Zvcm1hdGlvbi5tYXBSZWN0
KGRpcnR5UmVjdCk7CisgICAgICAgICAgICBpZiAocGFpbnRDaGVja2VyZWQpIHsKKyAgICAgICAg
ICAgICAgICBQbGF0Zm9ybTo6SW50UmVjdCBkaXJ0eVJlY3RUID0gdHJhbnNmb3JtYXRpb24ubWFw
UmVjdChkaXJ0eVJlY3QpOwogCi0gICAgICAgICAgICBpZiAoIXRyYW5zZm9ybWF0aW9uLmlzSWRl
bnRpdHkoKSkgewotICAgICAgICAgICAgICAgIC8vIEJlY2F1c2Ugb2Ygcm91bmRpbmcgaXQgaXMg
cG9zc2libGUgdGhhdCBkaXJ0eVJlY3QgY291bGQgYmUgb2ZmLWJ5LW9uZSBsYXJnZXIKLSAgICAg
ICAgICAgICAgICAvLyB0aGFuIHRoZSBzdXJmYWNlIHNpemUgb2YgdGhlIGRzdCBidWZmZXIuIFdl
IHByZXZlbnQgdGhpcyBoZXJlLCBieSBjbGFtcGluZwotICAgICAgICAgICAgICAgIC8vIGl0IHRv
IGVuc3VyZSB0aGF0IGNhbid0IGhhcHBlbi4KLSAgICAgICAgICAgICAgICBkaXJ0eVJlY3RULmlu
dGVyc2VjdChQbGF0Zm9ybTo6SW50UmVjdChQbGF0Zm9ybTo6SW50UG9pbnQoMCwgMCksIHN1cmZh
Y2VTaXplKCkpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnN0IFBsYXRmb3JtOjpJ
bnRQb2ludCBjb250ZW50c09yaWdpbihkaXJ0eVJlY3QueCgpICsgb3JpZ2luLngoKSwgZGlydHlS
ZWN0LnkoKSArIG9yaWdpbi55KCkpOworICAgICAgICAgICAgICAgIGlmICghdHJhbnNmb3JtYXRp
b24uaXNJZGVudGl0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEJlY2F1c2Ugb2Ygcm91
bmRpbmcgaXQgaXMgcG9zc2libGUgdGhhdCBkaXJ0eVJlY3QgY291bGQgYmUgb2ZmLWJ5LW9uZSBs
YXJnZXIKKyAgICAgICAgICAgICAgICAgICAgLy8gdGhhbiB0aGUgc3VyZmFjZSBzaXplIG9mIHRo
ZSBkc3QgYnVmZmVyLiBXZSBwcmV2ZW50IHRoaXMgaGVyZSwgYnkgY2xhbXBpbmcKKyAgICAgICAg
ICAgICAgICAgICAgLy8gaXQgdG8gZW5zdXJlIHRoYXQgY2FuJ3QgaGFwcGVuLgorICAgICAgICAg
ICAgICAgICAgICBkaXJ0eVJlY3RULmludGVyc2VjdChQbGF0Zm9ybTo6SW50UmVjdChQbGF0Zm9y
bTo6SW50UG9pbnQoMCwgMCksIHN1cmZhY2VTaXplKCkpKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgY29uc3QgUGxhdGZvcm06OkludFBvaW50IGNvbnRlbnRzT3JpZ2luKGRp
cnR5UmVjdC54KCkgKyBvcmlnaW4ueCgpLCBkaXJ0eVJlY3QueSgpICsgb3JpZ2luLnkoKSk7CiAj
aWYgREVCVUdfQ0hFQ0tFUkJPQVJECi0gICAgICAgICAgICBibGl0Q2hlY2tlcmVkID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICBibGl0Q2hlY2tlcmVkID0gdHJ1ZTsKICNlbmRpZgotICAgICAgICAg
ICAgY2hlY2tlcldpbmRvdyhkaXJ0eVJlY3RULCBjb250ZW50c09yaWdpbiwgdHJhbnNmb3JtYXRp
b24uYSgpKTsKLSAgICAgICAgfQorICAgICAgICAgICAgICAgIGNoZWNrZXJXaW5kb3coZGlydHlS
ZWN0VCwgY29udGVudHNPcmlnaW4sIHRyYW5zZm9ybWF0aW9uLmEoKSk7CisgICAgICAgICAgICB9
CiAKLSAgICAgICAgLy8gQmxpdCB0aGUgdmlzaWJsZSBidWZmZXIgaGVyZSBpZiB3ZSBoYXZlIHZp
c2libGUgem9vbSBqb2JzLgotICAgICAgICBpZiAobV9yZW5kZXJRdWV1ZS0+aGFzQ3VycmVudFZp
c2libGVab29tSm9iKCkpIHsKKyAgICAgICAgICAgIC8vIEJsaXQgdGhlIHZpc2libGUgYnVmZmVy
IGhlcmUgaWYgd2UgaGF2ZSB2aXNpYmxlIHpvb20gam9icy4KKyAgICAgICAgICAgIGlmIChtX3Jl
bmRlclF1ZXVlLT5oYXNDdXJyZW50VmlzaWJsZVpvb21Kb2IoKSkgewogCi0gICAgICAgICAgICAv
LyBOZWVkcyB0byBiZSBpbiBzYW1lIGNvb3JkaW5hdGUgc3lzdGVtIGFzIGRpcnR5UmVjdC4KLSAg
ICAgICAgICAgIFBsYXRmb3JtOjpJbnRSZWN0IHZpc2libGVUaWxlQnVmZmVyUmVjdCA9IG1fdmlz
aWJsZVRpbGVCdWZmZXJSZWN0OwotICAgICAgICAgICAgdmlzaWJsZVRpbGVCdWZmZXJSZWN0Lm1v
dmUoLW9yaWdpbi54KCksIC1vcmlnaW4ueSgpKTsKKyAgICAgICAgICAgICAgICAvLyBOZWVkcyB0
byBiZSBpbiBzYW1lIGNvb3JkaW5hdGUgc3lzdGVtIGFzIGRpcnR5UmVjdC4KKyAgICAgICAgICAg
ICAgICBQbGF0Zm9ybTo6SW50UmVjdCB2aXNpYmxlVGlsZUJ1ZmZlclJlY3QgPSBtX3Zpc2libGVU
aWxlQnVmZmVyUmVjdDsKKyAgICAgICAgICAgICAgICB2aXNpYmxlVGlsZUJ1ZmZlclJlY3QubW92
ZSgtb3JpZ2luLngoKSwgLW9yaWdpbi55KCkpOwogCi0gICAgICAgICAgICAvLyBDbGlwIHRvIHRo
ZSB2aXNpYmxlVGlsZUJ1ZmZlclJlY3QuCi0gICAgICAgICAgICBkaXJ0eVJlY3QuaW50ZXJzZWN0
KHZpc2libGVUaWxlQnVmZmVyUmVjdCk7CisgICAgICAgICAgICAgICAgLy8gQ2xpcCB0byB0aGUg
dmlzaWJsZVRpbGVCdWZmZXJSZWN0LgorICAgICAgICAgICAgICAgIGRpcnR5UmVjdC5pbnRlcnNl
Y3QodmlzaWJsZVRpbGVCdWZmZXJSZWN0KTsKIAotICAgICAgICAgICAgLy8gQ2xpcCB0byB0aGUg
ZGlydHlSZWN0LgotICAgICAgICAgICAgdmlzaWJsZVRpbGVCdWZmZXJSZWN0LmludGVyc2VjdChk
aXJ0eVJlY3QpOworICAgICAgICAgICAgICAgIC8vIENsaXAgdG8gdGhlIGRpcnR5UmVjdC4KKyAg
ICAgICAgICAgICAgICB2aXNpYmxlVGlsZUJ1ZmZlclJlY3QuaW50ZXJzZWN0KGRpcnR5UmVjdCk7
CiAKLSAgICAgICAgICAgIGlmICghZGlydHlSZWN0LmlzRW1wdHkoKSAmJiAhdmlzaWJsZVRpbGVC
dWZmZXJSZWN0LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIEJhY2tpbmdTdG9yZVRpbGUq
IHZpc2libGVUaWxlQnVmZmVyCi0gICAgICAgICAgICAgICAgICAgID0gU3VyZmFjZVBvb2w6Omds
b2JhbFN1cmZhY2VQb29sKCktPnZpc2libGVUaWxlQnVmZmVyKCk7Ci0gICAgICAgICAgICAgICAg
QVNTRVJUKHZpc2libGVUaWxlQnVmZmVyLT5zaXplKCkgPT0gdmlzaWJsZUNvbnRlbnRzUmVjdCgp
LnNpemUoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFkaXJ0eVJlY3QuaXNFbXB0eSgpICYmICF2
aXNpYmxlVGlsZUJ1ZmZlclJlY3QuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIEJh
Y2tpbmdTdG9yZVRpbGUqIHZpc2libGVUaWxlQnVmZmVyCisgICAgICAgICAgICAgICAgICAgICAg
ICA9IFN1cmZhY2VQb29sOjpnbG9iYWxTdXJmYWNlUG9vbCgpLT52aXNpYmxlVGlsZUJ1ZmZlcigp
OworICAgICAgICAgICAgICAgICAgICBBU1NFUlQodmlzaWJsZVRpbGVCdWZmZXItPnNpemUoKSA9
PSB2aXNpYmxlQ29udGVudHNSZWN0KCkuc2l6ZSgpKTsKIAotICAgICAgICAgICAgICAgIC8vIFRo
ZSBvZmZzZXQgb2YgdGhlIGN1cnJlbnQgdmlld3BvcnQgd2l0aCB0aGUgdmlzYmxlIHRpbGUgYnVm
ZmVyLgotICAgICAgICAgICAgICAgIFBsYXRmb3JtOjpJbnRQb2ludCBkaWZmZXJlbmNlID0gb3Jp
Z2luIC0gbV92aXNpYmxlVGlsZUJ1ZmZlclJlY3QubG9jYXRpb24oKTsKLSAgICAgICAgICAgICAg
ICBQbGF0Zm9ybTo6SW50U2l6ZSBvZmZzZXQgPSBQbGF0Zm9ybTo6SW50U2l6ZShkaWZmZXJlbmNl
LngoKSwgZGlmZmVyZW5jZS55KCkpOworICAgICAgICAgICAgICAgICAgICAvLyBUaGUgb2Zmc2V0
IG9mIHRoZSBjdXJyZW50IHZpZXdwb3J0IHdpdGggdGhlIHZpc2JsZSB0aWxlIGJ1ZmZlci4KKyAg
ICAgICAgICAgICAgICAgICAgUGxhdGZvcm06OkludFBvaW50IGRpZmZlcmVuY2UgPSBvcmlnaW4g
LSBtX3Zpc2libGVUaWxlQnVmZmVyUmVjdC5sb2NhdGlvbigpOworICAgICAgICAgICAgICAgICAg
ICBQbGF0Zm9ybTo6SW50U2l6ZSBvZmZzZXQgPSBQbGF0Zm9ybTo6SW50U2l6ZShkaWZmZXJlbmNl
LngoKSwgZGlmZmVyZW5jZS55KCkpOwogCi0gICAgICAgICAgICAgICAgLy8gTWFwIHRvIHRoZSB2
aXNpYmxlVGlsZUJ1ZmZlciBjb29yZGluYXRlcy4KLSAgICAgICAgICAgICAgICBQbGF0Zm9ybTo6
SW50UmVjdCBkaXJ0eVRpbGVSZWN0ID0gdmlzaWJsZVRpbGVCdWZmZXJSZWN0OwotICAgICAgICAg
ICAgICAgIGRpcnR5VGlsZVJlY3QubW92ZShvZmZzZXQud2lkdGgoKSwgb2Zmc2V0LmhlaWdodCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgLy8gTWFwIHRvIHRoZSB2aXNpYmxlVGlsZUJ1ZmZlciBj
b29yZGluYXRlcy4KKyAgICAgICAgICAgICAgICAgICAgUGxhdGZvcm06OkludFJlY3QgZGlydHlU
aWxlUmVjdCA9IHZpc2libGVUaWxlQnVmZmVyUmVjdDsKKyAgICAgICAgICAgICAgICAgICAgZGly
dHlUaWxlUmVjdC5tb3ZlKG9mZnNldC53aWR0aCgpLCBvZmZzZXQuaGVpZ2h0KCkpOwogCi0gICAg
ICAgICAgICAgICAgUGxhdGZvcm06OkludFJlY3QgZGlydHlSZWN0VCA9IHRyYW5zZm9ybWF0aW9u
Lm1hcFJlY3QoZGlydHlSZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgUGxhdGZvcm06OkludFJl
Y3QgZGlydHlSZWN0VCA9IHRyYW5zZm9ybWF0aW9uLm1hcFJlY3QoZGlydHlSZWN0KTsKIAotICAg
ICAgICAgICAgICAgIGlmICghdHJhbnNmb3JtYXRpb24uaXNJZGVudGl0eSgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIC8vIEJlY2F1c2Ugb2Ygcm91bmRpbmcgaXQgaXMgcG9zc2libGUgdGhhdCBk
aXJ0eVJlY3QgY291bGQgYmUgb2ZmLWJ5LW9uZSBsYXJnZXIKLSAgICAgICAgICAgICAgICAgICAg
Ly8gdGhhbiB0aGUgc3VyZmFjZSBzaXplIG9mIHRoZSBkc3QgYnVmZmVyLiBXZSBwcmV2ZW50IHRo
aXMgaGVyZSwgYnkgY2xhbXBpbmcKLSAgICAgICAgICAgICAgICAgICAgLy8gaXQgdG8gZW5zdXJl
IHRoYXQgY2FuJ3QgaGFwcGVuLgotICAgICAgICAgICAgICAgICAgICBkaXJ0eVJlY3RULmludGVy
c2VjdChQbGF0Zm9ybTo6SW50UmVjdChQbGF0Zm9ybTo6SW50UG9pbnQoMCwgMCksIHN1cmZhY2VT
aXplKCkpKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICghdHJh
bnNmb3JtYXRpb24uaXNJZGVudGl0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBC
ZWNhdXNlIG9mIHJvdW5kaW5nIGl0IGlzIHBvc3NpYmxlIHRoYXQgZGlydHlSZWN0IGNvdWxkIGJl
IG9mZi1ieS1vbmUgbGFyZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGFuIHRoZSBz
dXJmYWNlIHNpemUgb2YgdGhlIGRzdCBidWZmZXIuIFdlIHByZXZlbnQgdGhpcyBoZXJlLCBieSBj
bGFtcGluZworICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXQgdG8gZW5zdXJlIHRoYXQgY2Fu
J3QgaGFwcGVuLgorICAgICAgICAgICAgICAgICAgICAgICAgZGlydHlSZWN0VC5pbnRlcnNlY3Qo
UGxhdGZvcm06OkludFJlY3QoUGxhdGZvcm06OkludFBvaW50KDAsIDApLCBzdXJmYWNlU2l6ZSgp
KSk7CisgICAgICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGJsaXRUb1dpbmRv
dyhkaXJ0eVJlY3RULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlVGlsZUJ1
ZmZlci0+ZnJvbnRCdWZmZXIoKS0+bmF0aXZlQnVmZmVyKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRpcnR5VGlsZVJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZh
bHNlIC8qYmxlbmQqLywgMjU1KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChj
b21taXR0ZWQpIHsKLSAgICAgICAgICAgIC8vIEludGVyc2VjdCB0aGUgcmVuZGVyZWQgcmVnaW9u
LgotICAgICAgICAgICAgUGxhdGZvcm06OkludFJlY3RSZWdpb24gcmVuZGVyZWRSZWdpb24gPSB0
aWxlQnVmZmVyLT5yZW5kZXJlZFJlZ2lvbigpOwotICAgICAgICAgICAgSW50UmVjdExpc3QgZGly
dHlSZW5kZXJlZFJlY3RzID0gcmVuZGVyZWRSZWdpb24ucmVjdHMoKTsKLSAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZGlydHlSZW5kZXJlZFJlY3RzLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgICAgICAgICAgVGlsZVJlY3QgdGlsZVJlY3Q7Ci0gICAgICAgICAgICAgICAgdGlsZVJl
Y3QuZmlyc3QgPSBpbmRleDsKLSAgICAgICAgICAgICAgICB0aWxlUmVjdC5zZWNvbmQgPSBpbnRl
cnNlY3Rpb24oZGlydHlUaWxlUmVjdCwgZGlydHlSZW5kZXJlZFJlY3RzLmF0KGkpKTsKLSAgICAg
ICAgICAgICAgICBpZiAodGlsZVJlY3Quc2Vjb25kLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgLy8gQmxpdCB0aGUgcmVuZGVyZWQgcGFy
dHMuCi0gICAgICAgICAgICAgICAgYmxpdFRpbGVSZWN0KHRpbGVCdWZmZXIsIHRpbGVSZWN0LCBv
cmlnaW4sIHRyYW5zZm9ybWF0aW9uLCBjdXJyZW50U3RhdGUpOworICAgICAgICAgICAgICAgICAg
ICBibGl0VG9XaW5kb3coZGlydHlSZWN0VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZpc2libGVUaWxlQnVmZmVyLT5mcm9udEJ1ZmZlcigpLT5uYXRpdmVCdWZmZXIoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcnR5VGlsZVJlY3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSAvKmJsZW5kKi8sIDI1NSk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChjb21taXR0ZWQpIHsKKyAgICAgICAgICAg
ICAgICAvLyBJbnRlcnNlY3QgdGhlIHJlbmRlcmVkIHJlZ2lvbi4KKyAgICAgICAgICAgICAgICBQ
bGF0Zm9ybTo6SW50UmVjdFJlZ2lvbiByZW5kZXJlZFJlZ2lvbiA9IHRpbGVCdWZmZXItPnJlbmRl
cmVkUmVnaW9uKCk7CisgICAgICAgICAgICAgICAgSW50UmVjdExpc3QgZGlydHlSZW5kZXJlZFJl
Y3RzID0gcmVuZGVyZWRSZWdpb24ucmVjdHMoKTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGRpcnR5UmVuZGVyZWRSZWN0cy5zaXplKCk7ICsraSkgeworICAgICAgICAg
ICAgICAgICAgICBUaWxlUmVjdCB0aWxlUmVjdDsKKyAgICAgICAgICAgICAgICAgICAgdGlsZVJl
Y3QuZmlyc3QgPSBpbmRleDsKKyAgICAgICAgICAgICAgICAgICAgdGlsZVJlY3Quc2Vjb25kID0g
aW50ZXJzZWN0aW9uKGRpcnR5VGlsZVJlY3QsIGRpcnR5UmVuZGVyZWRSZWN0cy5hdChpKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICh0aWxlUmVjdC5zZWNvbmQuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIC8vIEJsaXQg
dGhlIHJlbmRlcmVkIHBhcnRzLgorICAgICAgICAgICAgICAgICAgICBibGl0VGlsZVJlY3QodGls
ZUJ1ZmZlciwgdGlsZVJlY3QsIG9yaWdpbiwgdHJhbnNmb3JtYXRpb24sIGN1cnJlbnRTdGF0ZSk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJsaXR0ZWRUaWxlcy5hcHBlbmQo
dGlsZUJ1ZmZlcik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBibGl0dGVkVGlsZXMuYXBw
ZW5kKHRpbGVCdWZmZXIpOwogICAgICAgICB9CiAgICAgfQogCisgICAgYm9vbCBibGl0dGluZ0Rp
cmVjdGx5VG9Db21wb3NpdGluZ1dpbmRvdyA9IGlzT3BlbkdMQ29tcG9zaXRpbmcoKTsKKwogI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBpZiAoV2ViUGFnZUNvbXBvc2l0b3JQ
cml2YXRlKiBjb21wb3NpdG9yID0gbV93ZWJQYWdlLT5kLT5jb21wb3NpdG9yKCkpIHsKICAgICAg
ICAgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnRlbnRzUmVjdCA9IG1fd2ViUGFnZS0+ZC0+bWFwRnJv
bVRyYW5zZm9ybWVkRmxvYXRSZWN0KFdlYkNvcmU6OkZsb2F0UmVjdChXZWJDb3JlOjpJbnRSZWN0
KGNvbnRlbnRzKSkpOwogICAgICAgICBjb21wb3NpdG9yLT5kcmF3TGF5ZXJzKGRzdFJlY3QsIGNv
bnRlbnRzUmVjdCk7CisgICAgICAgIGlmIChjb21wb3NpdG9yLT5kcmF3c1Jvb3RMYXllcigpKQor
ICAgICAgICAgICAgcGFpbnREZWZhdWx0QmFja2dyb3VuZChjb250ZW50cywgdHJhbnNmb3JtYXRp
b24sIGZhbHNlIC8qZmx1c2gqLyk7CiAgICAgfQogCiAgICAgaWYgKCFibGl0dGluZ0RpcmVjdGx5
VG9Db21wb3NpdGluZ1dpbmRvdykKQEAgLTE1MTQsNyArMTUzMCw3IEBAIHZvaWQgQmFja2luZ1N0
b3JlUHJpdmF0ZTo6YmxpdENvbnRlbnRzKGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBkc3RSZWN0
LAogCiAgICAgaW52YWxpZGF0ZVdpbmRvdyhkc3RSZWN0KTsKIAotICAgIGlmIChibGl0dGluZ0Rp
cmVjdGx5VG9Db21wb3NpdGluZ1dpbmRvdykgeworICAgIGlmIChibGl0dGluZ0RpcmVjdGx5VG9D
b21wb3NpdGluZ1dpbmRvdyAmJiAhYmxpdHRlZFRpbGVzLmlzRW1wdHkoKSkgewogICAgICAgICBw
dGhyZWFkX211dGV4X2xvY2soJm1fYmxpdEdlbmVyYXRpb25Mb2NrKTsKIAogICAgICAgICArK21f
YmxpdEdlbmVyYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBp
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcApp
bmRleCBlYmExMGZiYTg5M2Q2Mjg4OTRhYzIzM2RkMjg3NmUzZmU0NzQzMTE1Li5iMWFkZWQ2OTBl
YzcyNDk3YzY1MWIyMzdjYTU1ZTkxYzU3NjU5NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9BcGkvV2ViUGFnZS5jcHAKQEAgLTgzLDYgKzgzLDggQEAKICNpbmNsdWRlICJQbGF0Zm9ybVdo
ZWVsRXZlbnQuaCIKICNpbmNsdWRlICJQbHVnaW5EYXRhYmFzZS5oIgogI2luY2x1ZGUgIlBsdWdp
blZpZXcuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllckJhY2tpbmcuaCIKKyNpbmNsdWRlICJSZW5k
ZXJMYXllckNvbXBvc2l0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAi
UmVuZGVyVGhlbWVCbGFja0JlcnJ5LmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgpA
QCAtMTU1LDYgKzE1Nyw3IEBACiAjZGVmaW5lIERFQlVHX0JMT0NLX1pPT00gMAogI2RlZmluZSBE
RUJVR19UT1VDSF9FVkVOVFMgMAogI2RlZmluZSBERUJVR19XRUJQQUdFX0xPQUQgMAorI2RlZmlu
ZSBERUJVR19BQ19DT01NSVQgMAogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CkBAIC04MDUsMTIgKzgwOCw4IEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6OnNl
dExvYWRTdGF0ZShMb2FkU3RhdGUgc3RhdGUpCiAjZW5kaWYKIAogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKLSAgICAgICAgICAgIC8vIEZJWE1FOiBjb21wb3NpdG9yIG1heSBvbmx5
IGJlIHRvdWNoZWQgb24gdGhlIGNvbXBvc2l0aW5nIHRocmVhZC4KLSAgICAgICAgICAgIC8vIEhv
d2V2ZXIsIGl0J3MgY3JlYXRlZC9kZXN0cm95ZWQgYnkgYSBzeW5jIGNvbW1hbmQgc28gdGhpcyBp
cyBoYXJtbGVzcy4KLSAgICAgICAgICAgIGlmIChtX2NvbXBvc2l0b3IpIHsKLSAgICAgICAgICAg
ICAgICBtX2NvbXBvc2l0b3ItPnNldExheW91dFJlY3RGb3JDb21wb3NpdGluZyhJbnRSZWN0KCkp
OwotICAgICAgICAgICAgICAgIG1fY29tcG9zaXRvci0+c2V0Q29udGVudHNTaXplRm9yQ29tcG9z
aXRpbmcoSW50U2l6ZSgpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpc0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSAmJiAhY29tcG9zaXRvckRyYXdzUm9vdExheWVyKCkp
CisgICAgICAgICAgICAgICAgc3luY0Rlc3Ryb3lDb21wb3NpdG9yT25Db21wb3NpdGluZ1RocmVh
ZCgpOwogI2VuZGlmCiAgICAgICAgICAgICBtX3ByZXZpb3VzQ29udGVudHNTaXplID0gSW50U2l6
ZSgpOwogICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUtPmQtPnJlc2V0UmVuZGVyUXVldWUoKTsK
QEAgLTI5OTEsNiArMjk5MCw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0VmlzaWJsZShib29sIHZpc2li
bGUpCiAgICAgICAgIC8vIEFuZCByZWxlYXNlIGxheWVyIHJlc291cmNlcyBjYW4gcmVkdWNlIG1l
bW9yeSBjb25zdW1wdGlvbi4KICAgICAgICAgZC0+c3VzcGVuZFJvb3RMYXllckNvbW1pdCgpOwog
I2VuZGlmCisKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzE4OCw2ICszMTg4LDE1IEBA
IHZvaWQgV2ViUGFnZTo6b25JbnB1dExvY2FsZUNoYW5nZWQoYm9vbCBpc1JUTCkKIHZvaWQgV2Vi
UGFnZVByaXZhdGU6OnN1c3BlbmRCYWNraW5nU3RvcmUoKQogewogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKKyAgICBpZiAobV9iYWNraW5nU3RvcmUtPmQtPmlzT3BlbkdMQ29tcG9z
aXRpbmcoKSkgeworICAgICAgICAvLyBBIHZpc2libGUgd2ViIHBhZ2UncyBiYWNraW5nIHN0b3Jl
IGNhbiBiZSBzdXNwZW5kZWQgd2hlbiBhbm90aGVyIHdlYgorICAgICAgICAvLyBwYWdlIGlzIHRh
a2luZyBvdmVyIHRoZSBiYWNraW5nIHN0b3JlLgorICAgICAgICBpZiAobV92aXNpYmxlKQorICAg
ICAgICAgICAgc2V0Q29tcG9zaXRvckRyYXdzUm9vdExheWVyKHRydWUpOworCisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKICAgICByZXNldENvbXBvc2l0aW5nU3VyZmFjZSgpOwogI2VuZGlmCiB9
CkBAIC0zMTk2LDEwICszMjA1LDYgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6cmVzdW1lQmFja2lu
Z1N0b3JlKCkKIHsKICAgICBBU1NFUlQobV93ZWJQYWdlLT5pc1Zpc2libGUoKSk7CiAKLSNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgc2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5
bmNocm9uaXphdGlvbigpOwotI2VuZGlmCi0KICAgICBib29sIGRpcmVjdFJlbmRlcmluZyA9IG1f
YmFja2luZ1N0b3JlLT5kLT5zaG91bGREaXJlY3RSZW5kZXJpbmdUb1dpbmRvdygpOwogICAgIGlm
ICghbV9iYWNraW5nU3RvcmUtPmQtPmlzQWN0aXZlKCkKICAgICAgICAgfHwgc2hvdWxkUmVzZXRU
aWxlc1doZW5TaG93bigpCkBAIC0zMjA3LDYgKzMyMTIsMTIgQEAgdm9pZCBXZWJQYWdlUHJpdmF0
ZTo6cmVzdW1lQmFja2luZ1N0b3JlKCkKICAgICAgICAgLy8gV2UgbmVlZCB0byByZXNldCBhbGwg
dGlsZXMgc28gdGhhdCB3ZSBkbyBub3Qgc2hvdyBhbnkgdGlsZXMgd2hvc2UgY29udGVudCBtYXkK
ICAgICAgICAgLy8gaGF2ZSBiZWVuIHJlcGxhY2VkIGJ5IGFub3RoZXIgV2ViUGFnZSBpbnN0YW5j
ZSAoaS5lLiBhbm90aGVyIHRhYikuCiAgICAgICAgIEJhY2tpbmdTdG9yZVByaXZhdGU6OnNldEN1
cnJlbnRCYWNraW5nU3RvcmVPd25lcihtX3dlYlBhZ2UpOworCisgICAgICAgIC8vIElmIHdlJ3Jl
IE9wZW5HTCBjb21wb3NpdGluZywgc3dpdGNoaW5nIHRvIGFjY2VsIGNvbXAgZHJhd2luZyBvZiB0
aGUgcm9vdCBsYXllcgorICAgICAgICAvLyBpcyBhIGdvb2Qgc3Vic3RpdHV0ZSBmb3IgYmFja2lu
Z3N0b3JlIGJsaXR0aW5nLgorICAgICAgICBpZiAobV9iYWNraW5nU3RvcmUtPmQtPmlzT3BlbkdM
Q29tcG9zaXRpbmcoKSkKKyAgICAgICAgICAgIHNldENvbXBvc2l0b3JEcmF3c1Jvb3RMYXllcigh
bV9iYWNraW5nU3RvcmUtPmQtPmlzQWN0aXZlKCkpOworCiAgICAgICAgIG1fYmFja2luZ1N0b3Jl
LT5kLT5vcmllbnRhdGlvbkNoYW5nZWQoKTsgLy8gVXBkYXRlcyB0aWxlIGdlb21ldHJ5IGFuZCBj
cmVhdGVzIHZpc2libGUgdGlsZSBidWZmZXIuCiAgICAgICAgIG1fYmFja2luZ1N0b3JlLT5kLT5y
ZXNldFRpbGVzKHRydWUgLyogcmVzZXRCYWNrZ3JvdW5kICovKTsKICAgICAgICAgbV9iYWNraW5n
U3RvcmUtPmQtPnVwZGF0ZVRpbGVzKGZhbHNlIC8qIHVwZGF0ZVZpc2libGUgKi8sIGZhbHNlIC8q
IGltbWVkaWF0ZSAqLyk7CkBAIC0zMjE1LDEwICszMjI2LDE3IEBAIHZvaWQgV2ViUGFnZVByaXZh
dGU6OnJlc3VtZUJhY2tpbmdTdG9yZSgpCiAgICAgICAgIGlmIChtX2JhY2tpbmdTdG9yZS0+ZC0+
cmVuZGVyVmlzaWJsZUNvbnRlbnRzKCkgJiYgIW1fYmFja2luZ1N0b3JlLT5kLT5pc1N1c3BlbmRl
ZCgpICYmICFkaXJlY3RSZW5kZXJpbmcpCiAgICAgICAgICAgICBtX2JhY2tpbmdTdG9yZS0+ZC0+
YmxpdFZpc2libGVDb250ZW50cygpOwogICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtX2JhY2tp
bmdTdG9yZS0+ZC0+aXNPcGVuR0xDb21wb3NpdGluZygpKQorICAgICAgICAgICBzZXRDb21wb3Np
dG9yRHJhd3NSb290TGF5ZXIoZmFsc2UpOworCiAgICAgICAgIC8vIFJlbmRlcmluZyB3YXMgZGlz
YWJsZWQgd2hpbGUgd2Ugd2VyZSBoaWRkZW4sIHNvIHdlIG5lZWQgdG8gdXBkYXRlIGFsbCB0aWxl
cy4KICAgICAgICAgbV9iYWNraW5nU3RvcmUtPmQtPnVwZGF0ZVRpbGVzKHRydWUgLyogdXBkYXRl
VmlzaWJsZSAqLywgZmFsc2UgLyogaW1tZWRpYXRlICovKTsKICAgICB9CiAKKyNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgc2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9u
aXphdGlvbigpOworI2VuZGlmCisKICAgICBzZXRTaG91bGRSZXNldFRpbGVzV2hlblNob3duKGZh
bHNlKTsKIH0KIApAQCAtNTE3MSw2ICs1MTg5LDM3IEBAIHZvaWQgV2ViUGFnZTo6ZGlzcGF0Y2hJ
bnNwZWN0b3JNZXNzYWdlKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlKQogICAgIGQtPm1fcGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoc3Ry
aW5nTWVzc2FnZSk7CiB9CiAKK2Jvb2wgV2ViUGFnZVByaXZhdGU6OmNvbXBvc2l0b3JEcmF3c1Jv
b3RMYXllcigpIGNvbnN0Cit7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAg
IGlmIChQbGF0Zm9ybTo6dXNlckludGVyZmFjZVRocmVhZE1lc3NhZ2VDbGllbnQoKS0+aXNDdXJy
ZW50VGhyZWFkKCkpCisgICAgICAgIHJldHVybiBtX2NvbXBvc2l0b3IgJiYgbV9jb21wb3NpdG9y
LT5kcmF3c1Jvb3RMYXllcigpOworCisgICAgLy8gV2ViS2l0IHRocmVhZCBpbXBsZW1lbnRhdGlv
bjoKKyAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gbV9tYWluRnJhbWUtPmNvbnRlbnRSZW5k
ZXJlcigpOworICAgIGlmICghcmVuZGVyVmlldyB8fCAhcmVuZGVyVmlldy0+bGF5ZXIoKSB8fCAh
cmVuZGVyVmlldy0+bGF5ZXIoKS0+YmFja2luZygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICByZXR1cm4gIXJlbmRlclZpZXctPmxheWVyKCktPmJhY2tpbmcoKS0+cGFpbnRpbmdHb2Vz
VG9XaW5kb3coKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK3ZvaWQg
V2ViUGFnZVByaXZhdGU6OnNldENvbXBvc2l0b3JEcmF3c1Jvb3RMYXllcihib29sIGNvbXBvc2l0
b3JEcmF3c1Jvb3RMYXllcikKK3sKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisg
ICAgaWYgKG1fcGFnZS0+c2V0dGluZ3MoKS0+Zm9yY2VDb21wb3NpdGluZ01vZGUoKSA9PSBjb21w
b3NpdG9yRHJhd3NSb290TGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFdoZW4gdGhl
IEJsYWNrQmVycnkgcG9ydCBmb3JjZXMgY29tcG9zaXRpbmcgbW9kZSwgdGhlIHJvb3QgbGF5ZXIg
c3RvcHMKKyAgICAvLyBwYWludGluZyB0byB3aW5kb3cgYW5kIHN0YXJ0cyBwYWludGluZyB0byBs
YXllciBpbnN0ZWFkLgorICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0Rm9yY2VDb21wb3NpdGlu
Z01vZGUoY29tcG9zaXRvckRyYXdzUm9vdExheWVyKTsKKyAgICBpZiAoRnJhbWVWaWV3KiB2aWV3
ID0gbV9tYWluRnJhbWUtPnZpZXcoKSkKKyAgICAgICAgdmlldy0+dXBkYXRlQ29tcG9zaXRpbmdM
YXllcnMoKTsKKyNlbmRpZgorfQorCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQog
dm9pZCBXZWJQYWdlUHJpdmF0ZTo6ZHJhd0xheWVyc09uQ29tbWl0KCkKIHsKQEAgLTUxNzksNyAr
NTIyOCw3IEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6OmRyYXdMYXllcnNPbkNvbW1pdCgpCiAgICAg
ICAgIC8vIGFuaW1hdGlvbnMuIEFuZCBvbmx5IGlmIHdlIGRvbid0IG5lZWQgYSBvbmUgc2hvdCBk
cmF3aW5nIHN5bmMuCiAgICAgICAgIEFTU0VSVCghbmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9u
aXphdGlvbigpKTsKIAotICAgICAgICBpZiAoIW1fd2ViUGFnZS0+aXNWaXNpYmxlKCkgfHwgIW1f
YmFja2luZ1N0b3JlLT5kLT5pc0FjdGl2ZSgpKQorICAgICAgICBpZiAoIW1fd2ViUGFnZS0+aXNW
aXNpYmxlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgbV9iYWNraW5nU3RvcmUt
PmQtPndpbGxEcmF3TGF5ZXJzT25Db21taXQoKTsKQEAgLTUxODksNiArNTIzOCwxMCBAQCB2b2lk
IFdlYlBhZ2VQcml2YXRlOjpkcmF3TGF5ZXJzT25Db21taXQoKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCisjaWYgREVCVUdfQUNfQ09NTUlUCisgICAgUGxhdGZvcm06OmxvZyhQbGF0Zm9ybTo6
TG9nTGV2ZWxDcml0aWNhbCwgIiVzIiwgV1RGX1BSRVRUWV9GVU5DVElPTik7CisjZW5kaWYKKwog
ICAgIGlmICghbV9iYWNraW5nU3RvcmUtPmQtPnNob3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93
KCkpCiAgICAgICAgIG1fYmFja2luZ1N0b3JlLT5kLT5ibGl0VmlzaWJsZUNvbnRlbnRzKCk7CiB9
CkBAIC01MTk5LDggKzUyNTIsMTIgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6c2NoZWR1bGVSb290
TGF5ZXJDb21taXQoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX25lZWRzQ29tbWl0ID0gdHJ1
ZTsKLSAgICBpZiAoIW1fcm9vdExheWVyQ29tbWl0VGltZXItPmlzQWN0aXZlKCkpCisgICAgaWYg
KCFtX3Jvb3RMYXllckNvbW1pdFRpbWVyLT5pc0FjdGl2ZSgpKSB7CisjaWYgREVCVUdfQUNfQ09N
TUlUCisgICAgICAgIFBsYXRmb3JtOjpsb2coUGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsICIl
czogbV9yb290TGF5ZXJDb21taXRUaW1lci0+aXNBY3RpdmUoKSA9ICVkIiwgV1RGX1BSRVRUWV9G
VU5DVElPTiwgbV9yb290TGF5ZXJDb21taXRUaW1lci0+aXNBY3RpdmUoKSk7CisjZW5kaWYKICAg
ICAgICAgbV9yb290TGF5ZXJDb21taXRUaW1lci0+c3RhcnRPbmVTaG90KDApOworICAgIH0KIH0K
IAogc3RhdGljIGJvb2wgbmVlZHNMYXlvdXRSZWN1cnNpdmUoRnJhbWVWaWV3KiB2aWV3KQpAQCAt
NTI0NiwxOCArNTMwMywzOCBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjpzZXRDb21wb3NpdG9yKFBh
c3NSZWZQdHI8V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlPiBjb21wb3NpdAogfQogCiB2b2lkIFdl
YlBhZ2VQcml2YXRlOjpjb21taXRSb290TGF5ZXIoY29uc3QgSW50UmVjdCYgbGF5b3V0UmVjdEZv
ckNvbXBvc2l0aW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEludFNpemUmIGNvbnRlbnRzU2l6ZUZvckNvbXBvc2l0aW5nKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFNpemUmIGNvbnRlbnRzU2l6ZUZvckNvbXBvc2l0
aW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZHJhd3NSb290
TGF5ZXIpCiB7CisjaWYgREVCVUdfQUNfQ09NTUlUCisgICAgUGxhdGZvcm06OmxvZyhQbGF0Zm9y
bTo6TG9nTGV2ZWxDcml0aWNhbCwgIiVzOiBtX2NvbXBvc2l0b3IgPSAweCV4IiwKKyAgICAgICAg
ICAgIFdURl9QUkVUVFlfRlVOQ1RJT04sIG1fY29tcG9zaXRvci5nZXQoKSk7CisjZW5kaWYKKwog
ICAgIGlmICghbV9mcmFtZUxheWVycyB8fCAhbV9jb21wb3NpdG9yKQogICAgICAgICByZXR1cm47
CiAKKyAgICBpZiAobV9mcmFtZUxheWVycy0+cm9vdExheWVyKCkgJiYgbV9mcmFtZUxheWVycy0+
cm9vdExheWVyKCktPmxheWVyQ29tcG9zaXRpbmdUaHJlYWQoKSAhPSBtX2NvbXBvc2l0b3ItPnJv
b3RMYXllcigpKQorICAgICAgICBtX2NvbXBvc2l0b3ItPnNldFJvb3RMYXllcihtX2ZyYW1lTGF5
ZXJzLT5yb290TGF5ZXIoKS0+bGF5ZXJDb21wb3NpdGluZ1RocmVhZCgpKTsKKwogICAgIG1fY29t
cG9zaXRvci0+c2V0TGF5b3V0UmVjdEZvckNvbXBvc2l0aW5nKGxheW91dFJlY3RGb3JDb21wb3Np
dGluZyk7CiAgICAgbV9jb21wb3NpdG9yLT5zZXRDb250ZW50c1NpemVGb3JDb21wb3NpdGluZyhj
b250ZW50c1NpemVGb3JDb21wb3NpdGluZyk7CisgICAgbV9jb21wb3NpdG9yLT5zZXREcmF3c1Jv
b3RMYXllcihkcmF3c1Jvb3RMYXllcik7CiAgICAgbV9jb21wb3NpdG9yLT5jb21taXQobV9mcmFt
ZUxheWVycy0+cm9vdExheWVyKCkpOwogfQogCiBib29sIFdlYlBhZ2VQcml2YXRlOjpjb21taXRS
b290TGF5ZXJJZk5lZWRlZCgpCiB7CisjaWYgREVCVUdfQUNfQ09NTUlUCisgICAgUGxhdGZvcm06
OmxvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIiVzOiBtX3N1c3BlbmRSb290TGF5ZXJD
b21taXQgPSAlZCwgbV9uZWVkc0NvbW1pdCA9ICVkLCBtX2ZyYW1lTGF5ZXJzID0gMHgleCwgbV9m
cmFtZUxheWVycy0+aGFzTGF5ZXIoKSA9ICVkLCBuZWVkc0xheW91dFJlY3Vyc2l2ZSgpID0gJWQi
LAorICAgICAgICAgICAgV1RGX1BSRVRUWV9GVU5DVElPTiwKKyAgICAgICAgICAgIG1fc3VzcGVu
ZFJvb3RMYXllckNvbW1pdCwKKyAgICAgICAgICAgIG1fbmVlZHNDb21taXQsCisgICAgICAgICAg
ICBtX2ZyYW1lTGF5ZXJzLmdldCgpLAorICAgICAgICAgICAgbV9mcmFtZUxheWVycyAmJiBtX2Zy
YW1lTGF5ZXJzLT5oYXNMYXllcigpLAorICAgICAgICAgICAgbV9tYWluRnJhbWUgJiYgbV9tYWlu
RnJhbWUtPnZpZXcoKSAmJiBuZWVkc0xheW91dFJlY3Vyc2l2ZShtX21haW5GcmFtZS0+dmlldygp
KSk7CisjZW5kaWYKKwogICAgIGlmIChtX3N1c3BlbmRSb290TGF5ZXJDb21taXQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIApAQCAtNTI5Nyw2ICs1Mzc0LDcgQEAgYm9vbCBXZWJQYWdlUHJpdmF0
ZTo6Y29tbWl0Um9vdExheWVySWZOZWVkZWQoKQogICAgIC8vIGFuZCB0aGF0J3Mgd2hhdCB0aGUg
bGF5ZXIgcmVuZGVyZXIgd2FudHMuCiAgICAgSW50UmVjdCBsYXlvdXRSZWN0Rm9yQ29tcG9zaXRp
bmcoc2Nyb2xsUG9zaXRpb24oKSwgYWN0dWFsVmlzaWJsZVNpemUoKSk7CiAgICAgSW50U2l6ZSBj
b250ZW50c1NpemVGb3JDb21wb3NpdGluZyA9IGNvbnRlbnRzU2l6ZSgpOworICAgIGJvb2wgZHJh
d3NSb290TGF5ZXIgPSBjb21wb3NpdG9yRHJhd3NSb290TGF5ZXIoKTsKIAogICAgIC8vIENvbW1p
dCBjaGFuZ2VzIG1hZGUgdG8gdGhlIGxheWVycyBzeW5jaHJvbm91c2x5IHdpdGggdGhlIGNvbXBv
c2l0aW5nIHRocmVhZC4KICAgICBQbGF0Zm9ybTo6dXNlckludGVyZmFjZVRocmVhZE1lc3NhZ2VD
bGllbnQoKS0+ZGlzcGF0Y2hTeW5jTWVzc2FnZSgKQEAgLTUzMDQsNyArNTM4Miw4IEBAIGJvb2wg
V2ViUGFnZVByaXZhdGU6OmNvbW1pdFJvb3RMYXllcklmTmVlZGVkKCkKICAgICAgICAgICAgICZX
ZWJQYWdlUHJpdmF0ZTo6Y29tbWl0Um9vdExheWVyLAogICAgICAgICAgICAgdGhpcywKICAgICAg
ICAgICAgIGxheW91dFJlY3RGb3JDb21wb3NpdGluZywKLSAgICAgICAgICAgIGNvbnRlbnRzU2l6
ZUZvckNvbXBvc2l0aW5nKSk7CisgICAgICAgICAgICBjb250ZW50c1NpemVGb3JDb21wb3NpdGlu
ZywKKyAgICAgICAgICAgIGRyYXdzUm9vdExheWVyKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
QEAgLTUzMTQsNiArNTM5MywxMCBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjpyb290TGF5ZXJDb21t
aXRUaW1lckZpcmVkKFRpbWVyPFdlYlBhZ2VQcml2YXRlPiopCiAgICAgaWYgKG1fc3VzcGVuZFJv
b3RMYXllckNvbW1pdCkKICAgICAgICAgcmV0dXJuOwogCisjaWYgREVCVUdfQUNfQ09NTUlUCisg
ICAgUGxhdGZvcm06OmxvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIiVzIiwgV1RGX1BS
RVRUWV9GVU5DVElPTik7CisjZW5kaWYKKwogICAgIC8vIFRoZSBjb21taXQgdGltZXIgbWF5IGhh
dmUgZmlyZWQganVzdCBiZWZvcmUgdGhlIGxheW91dCB0aW1lciwgb3IgZm9yIHNvbWUKICAgICAv
LyBvdGhlciByZWFzb24gd2UgbmVlZCBsYXlvdXQuIEl0J3Mgbm90IGFsbG93ZWQgdG8gY29tbWl0
IHdoZW4gYSBsYXlvdXQgaXMKICAgICAvLyBwZW5kaW5nLCBiZWNhdWVzIGEgY29tbWl0IGNhbiBj
YXVzZSBwYXJ0cyBvZiB0aGUgd2ViIHBhZ2UgdG8gYmUgcmVuZGVyZWQKQEAgLTUzMjIsMjAgKzU0
MDUsMzAgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6cm9vdExheWVyQ29tbWl0VGltZXJGaXJlZChU
aW1lcjxXZWJQYWdlUHJpdmF0ZT4qKQogICAgIC8vIHRvIGhhbmRsZSBhIG9uZSBzaG90IGRyYXdp
bmcgc3luY2hyb25pemF0aW9uIGFmdGVyIHRoZSBsYXlvdXQuCiAgICAgcmVxdWVzdExheW91dElm
TmVlZGVkKCk7CiAKLSAgICBib29sIGlzU2luZ2xlVGFyZ2V0V2luZG93ID0gU3VyZmFjZVBvb2w6
Omdsb2JhbFN1cmZhY2VQb29sKCktPmNvbXBvc2l0aW5nU3VyZmFjZSgpCi0gICAgICAgIHx8IG1f
YmFja2luZ1N0b3JlLT5kLT5pc09wZW5HTENvbXBvc2l0aW5nKCk7Ci0KLSAgICAvLyBJZiB3ZSBh
cmUgZG9pbmcgZGlyZWN0IHJlbmRlcmluZyBhbmQgaGF2ZSBhIHNpbmdsZSByZW5kZXJpbmcgdGFy
Z2V0LAotICAgIC8vIGNvbW1pdHRpbmcgaXMgZXF1aXZhbGVudCB0byBhIG9uZSBzaG90IGRyYXdp
bmcgc3luY2hyb25pemF0aW9uLgotICAgIC8vIFdlIG5lZWQgdG8gcmUtcmVuZGVyIHRoZSB3ZWIg
cGFnZSwgcmUtcmVuZGVyIHRoZSBsYXllcnMsIGFuZAotICAgIC8vIHRoZW4gYmxpdCB0aGVtIG9u
IHRvcCBvZiB0aGUgcmUtcmVuZGVyZWQgd2ViIHBhZ2UuCi0gICAgaWYgKGlzU2luZ2xlVGFyZ2V0
V2luZG93ICYmIG1fYmFja2luZ1N0b3JlLT5kLT5zaG91bGREaXJlY3RSZW5kZXJpbmdUb1dpbmRv
dygpKQotICAgICAgICBzZXROZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9uKCk7Cisg
ICAgLy8gSWYgd2UgdHJhbnNpdGlvbmVkIHRvIGRyYXdpbmcgdGhlIHJvb3QgbGF5ZXIgdXNpbmcg
Y29tcG9zaXRvciBpbnN0ZWFkIG9mCisgICAgLy8gYmFja2luZyBzdG9yZSwgZG9pbmcgYSBvbmUg
c2hvdCBkcmF3aW5nIHN5bmNocm9uaXphdGlvbiB3aXRoIHRoZQorICAgIC8vIGJhY2tpbmcgc3Rv
cmUgaXMgbmV2ZXIgbmVjZXNzYXJ5LCBiZWNhdXNlIHRoZSBiYWNraW5nIHN0b3JlIGRyYXdzCisg
ICAgLy8gbm90aGluZy4KKyAgICBpZiAoY29tcG9zaXRvckRyYXdzUm9vdExheWVyKCkpIHsKKyAg
ICAgICAgYm9vbCBpc1NpbmdsZVRhcmdldFdpbmRvdyA9IFN1cmZhY2VQb29sOjpnbG9iYWxTdXJm
YWNlUG9vbCgpLT5jb21wb3NpdGluZ1N1cmZhY2UoKQorICAgICAgICAgICAgfHwgbV9iYWNraW5n
U3RvcmUtPmQtPmlzT3BlbkdMQ29tcG9zaXRpbmcoKTsKKworICAgICAgICAvLyBJZiB3ZSBhcmUg
ZG9pbmcgZGlyZWN0IHJlbmRlcmluZyBhbmQgaGF2ZSBhIHNpbmdsZSByZW5kZXJpbmcgdGFyZ2V0
LAorICAgICAgICAvLyBjb21taXR0aW5nIGlzIGVxdWl2YWxlbnQgdG8gYSBvbmUgc2hvdCBkcmF3
aW5nIHN5bmNocm9uaXphdGlvbi4KKyAgICAgICAgLy8gV2UgbmVlZCB0byByZS1yZW5kZXIgdGhl
IHdlYiBwYWdlLCByZS1yZW5kZXIgdGhlIGxheWVycywgYW5kCisgICAgICAgIC8vIHRoZW4gYmxp
dCB0aGVtIG9uIHRvcCBvZiB0aGUgcmUtcmVuZGVyZWQgd2ViIHBhZ2UuCisgICAgICAgIGlmIChp
c1NpbmdsZVRhcmdldFdpbmRvdyAmJiBtX2JhY2tpbmdTdG9yZS0+ZC0+c2hvdWxkRGlyZWN0UmVu
ZGVyaW5nVG9XaW5kb3coKSkKKyAgICAgICAgICAgIHNldE5lZWRzT25lU2hvdERyYXdpbmdTeW5j
aHJvbml6YXRpb24oKTsKKworICAgICAgICBpZiAobmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9u
aXphdGlvbigpKSB7CisjaWYgREVCVUdfQUNfQ09NTUlUCisgICAgICAgICAgICBQbGF0Zm9ybTo6
bG9nKFBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiJXM6IE9uZVNob3REcmF3aW5nU3luY2hy
b25pemF0aW9uIGNvZGUgcGF0aCEiLCBXVEZfUFJFVFRZX0ZVTkNUSU9OKTsKKyNlbmRpZgogCi0g
ICAgaWYgKG5lZWRzT25lU2hvdERyYXdpbmdTeW5jaHJvbml6YXRpb24oKSkgewotICAgICAgICBj
b25zdCBJbnRSZWN0IHdpbmRvd1JlY3QgPSBJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHZpZXdw
b3J0U2l6ZSgpKTsKLSAgICAgICAgbV9iYWNraW5nU3RvcmUtPmQtPnJlcGFpbnQod2luZG93UmVj
dCwgdHJ1ZSAvKmNvbnRlbnRDaGFuZ2VkKi8sIHRydWUgLyppbW1lZGlhdGUqLyk7Ci0gICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIGNvbnN0IEludFJlY3Qgd2luZG93UmVjdCA9IEludFJlY3Qo
SW50UG9pbnQ6Onplcm8oKSwgdmlld3BvcnRTaXplKCkpOworICAgICAgICAgICAgbV9iYWNraW5n
U3RvcmUtPmQtPnJlcGFpbnQod2luZG93UmVjdCwgdHJ1ZSAvKmNvbnRlbnRDaGFuZ2VkKi8sIHRy
dWUgLyppbW1lZGlhdGUqLyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICB9
CiAKICAgICAvLyBJZiB0aGUgd2ViIHBhZ2UgbmVlZHMgbGF5b3V0LCB0aGUgY29tbWl0IHdpbGwg
ZmFpbC4KQEAgLTUzOTUsMTkgKzU0ODgsMTIgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6c2V0Um9v
dExheWVyQ29tcG9zaXRpbmdUaHJlYWQoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogbGF5ZXIKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIERlcGVuZGluZyBvbiB3aGV0aGVyIHdlIGhh
dmUgYSByb290IGxheWVyIG9yIG5vdCwKLSAgICAvLyB0aGlzIG1ldGhvZCB3aWxsIHR1cm4gb24g
b3Igb2ZmIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nLgogICAgIGlmICghbGF5ZXIpIHsKLSAgICAg
ICAgIC8vIERvbid0IEFTU0VSVChtX2NvbXBvc2l0b3IpIGhlcmUgYmVjYXVzZSB3ZSBtYXkgYmUg
Y2FsbGVkIGluCi0gICAgICAgICAvLyB0aGUgcHJvY2VzcyBvZiBkZXN0cnVjdGlvbiBvZiBXZWJQ
YWdlIHdoZXJlIHdlIGhhdmUgYWxyZWFkeQotICAgICAgICAgLy8gY2FsbGVkIHN5bmNEZXN0cm95
Q29tcG9zaXRvck9uQ29tcG9zaXRpbmdUaHJlYWQoKSB0byBkZXN0cm95Ci0gICAgICAgICAvLyB0
aGUgY29tcG9zaXRvci4KLSAgICAgICAgIGRlc3Ryb3lDb21wb3NpdG9yKCk7Ci0gICAgICAgICBy
ZXNldENvbXBvc2l0aW5nU3VyZmFjZSgpOwotICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmICghbV9jb21wb3NpdG9yKQorICAgICAgICAvLyBLZWVwIHRoZSBjb21wb3NpdG9yIGFyb3Vu
ZCwgYSBzaW5nbGUgd2ViIHBhZ2Ugd2lsbCBmcmVxdWVudGx5IGVudGVyCisgICAgICAgIC8vIGFu
ZCBsZWF2ZSBjb21wb3NpdGluZyBtb2RlIG1hbnkgdGltZXMuIEluc3RlYWQgd2UgZGVzdHJveSBp
dCB3aGVuCisgICAgICAgIC8vIG5hdmlnYXRpbmcgdG8gYSBuZXcgcGFnZS4KKyAgICAgICAgcmVz
ZXRDb21wb3NpdGluZ1N1cmZhY2UoKTsKKyAgICB9IGVsc2UgaWYgKCFtX2NvbXBvc2l0b3IpCiAg
ICAgICAgIGNyZWF0ZUNvbXBvc2l0b3IoKTsKIAogICAgIC8vIERvbid0IEFTU0VSVChtX2NvbXBv
c2l0b3IpIGhlcmUgYmVjYXVzZSBzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUodHJ1
ZSkKQEAgLTU0MTgsNiArNTUwNCwxMCBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjpzZXRSb290TGF5
ZXJDb21wb3NpdGluZ1RocmVhZChMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBsYXllcgogCiBib29s
IFdlYlBhZ2VQcml2YXRlOjpjcmVhdGVDb21wb3NpdG9yKCkKIHsKKyAgICAvLyBJZiB0aGVyZSdz
IG5vIHdpbmRvdywgdGhlIGNvbXBvc2l0b3Igd2lsbCBiZSBzdXBwbGllZCBieSB0aGUgQVBJIGNs
aWVudAorICAgIGlmICghbV9jbGllbnQtPndpbmRvdygpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKICAgICBtX293bmVkQ29udGV4dCA9IEdMRVMyQ29udGV4dDo6Y3JlYXRlKHRoaXMpOwogICAg
IG1fY29tcG9zaXRvciA9IFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6Y3JlYXRlKHRoaXMsIDAp
OwogICAgIG1fY29tcG9zaXRvci0+c2V0Q29udGV4dChtX293bmVkQ29udGV4dC5nZXQoKSk7CkBA
IC01NDY0LDcgKzU1NTQsNyBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjpzdXNwZW5kUm9vdExheWVy
Q29tbWl0KCkKIAogICAgIG1fc3VzcGVuZFJvb3RMYXllckNvbW1pdCA9IHRydWU7CiAKLSAgICBp
ZiAoIW1fZnJhbWVMYXllcnMgfHwgIW1fZnJhbWVMYXllcnMtPmhhc0xheWVyKCkgfHwgIW1fY29t
cG9zaXRvcikKKyAgICBpZiAoIW1fY29tcG9zaXRvcikKICAgICAgICAgcmV0dXJuOwogCiAgICAg
UGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmRpc3BhdGNoU3lu
Y01lc3NhZ2UoCkBAIC01NDkwLDYgKzU1ODAsMTEgQEAgYm9vbCBXZWJQYWdlUHJpdmF0ZTo6bmVl
ZHNPbmVTaG90RHJhd2luZ1N5bmNocm9uaXphdGlvbigpCiAKIHZvaWQgV2ViUGFnZVByaXZhdGU6
OnNldE5lZWRzT25lU2hvdERyYXdpbmdTeW5jaHJvbml6YXRpb24oKQogeworICAgIGlmIChjb21w
b3NpdG9yRHJhd3NSb290TGF5ZXIoKSkgeworICAgICAgICBzY2hlZHVsZVJvb3RMYXllckNvbW1p
dCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgLy8gVGhpcyBtZWFucyB3ZSBoYXZl
IHRvIGNvbW1pdCBsYXllcnMgb24gbmV4dCByZW5kZXIsIG9yIHJlbmRlciBvbiB0aGUgbmV4dCBj
b21taXQsCiAgICAgLy8gd2hpY2hldmVyIGhhcHBlbnMgZmlyc3QuCiAgICAgbV9uZWVkc0NvbW1p
dCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBh
Z2VDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNv
bXBvc2l0b3IuY3BwCmluZGV4IGRhNWJmNzZhMjJmZGU1ZDQzN2I4MTk2NDYzYmYwMGQzMjlmNDM5
MjQuLmU5MjYyMWMyYzBhMDIxZDBlMWQ0OWU5NmYwNDdmODJkOGEzODc5YjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3IuY3BwCkBAIC00
NCw2ICs0NCw3IEBAIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6V2ViUGFnZUNvbXBvc2l0b3JQ
cml2YXRlKFdlYlBhZ2VQcml2YXRlKiBwYWdlLCBXZWJQYWdlCiAgICAgOiBtX2NsaWVudChjbGll
bnQpCiAgICAgLCBtX3dlYlBhZ2UocGFnZSkKICAgICAsIG1fcGVuZGluZ0FuaW1hdGlvbkZyYW1l
KDAuMCkKKyAgICAsIG1fZHJhd3NSb290TGF5ZXIoZmFsc2UpCiB7CiAgICAgc2V0T25lU2hvdCh0
cnVlKTsgLy8gb25lLXNob3QgYW5pbWF0aW9uIGNsaWVudAogfQpAQCAtMTA3LDYgKzEwOCwxMSBA
QCB2b2lkIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6cmVuZGVyKGNvbnN0IEludFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEludFJlY3QmIHRyYQogICAgIH0KIH0KIAorYm9vbCBXZWJQYWdlQ29tcG9z
aXRvclByaXZhdGU6OmRyYXdzUm9vdExheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kcmF3
c1Jvb3RMYXllcjsKK30KKwogYm9vbCBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OmRyYXdMYXll
cnMoY29uc3QgSW50UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjb250ZW50cykKIHsK
ICAgICBpZiAoIW1fbGF5ZXJSZW5kZXJlcikKQEAgLTExNCw5ICsxMjAsOSBAQCBib29sIFdlYlBh
Z2VDb21wb3NpdG9yUHJpdmF0ZTo6ZHJhd0xheWVycyhjb25zdCBJbnRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlYwogCiAgICAgbV9wZW5kaW5nQW5pbWF0aW9uRnJhbWUgPSAwLjA7CiAKLSAg
ICBib29sIHNob3VsZENsZWFyID0gZmFsc2U7CisgICAgYm9vbCBzaG91bGRDbGVhciA9IGRyYXdz
Um9vdExheWVyKCk7CiAgICAgaWYgKEJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlID0gbV93ZWJQ
YWdlLT5tX2JhY2tpbmdTdG9yZSkKLSAgICAgICAgc2hvdWxkQ2xlYXIgPSAhYmFja2luZ1N0b3Jl
LT5kLT5pc09wZW5HTENvbXBvc2l0aW5nKCk7CisgICAgICAgIHNob3VsZENsZWFyID0gc2hvdWxk
Q2xlYXIgfHwgIWJhY2tpbmdTdG9yZS0+ZC0+aXNPcGVuR0xDb21wb3NpdGluZygpOwogICAgIG1f
bGF5ZXJSZW5kZXJlci0+c2V0Q2xlYXJTdXJmYWNlT25EcmF3TGF5ZXJzKHNob3VsZENsZWFyKTsK
IAogICAgIG1fbGF5ZXJSZW5kZXJlci0+ZHJhd0xheWVycyhjb250ZW50cywgbV9sYXlvdXRSZWN0
Rm9yQ29tcG9zaXRpbmcsIG1fY29udGVudHNTaXplRm9yQ29tcG9zaXRpbmcsIGRzdFJlY3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRv
cl9wLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yX3Au
aAppbmRleCBlYjRiMDI0ODhkZDI3Yzg0NDVmNGI5OTg4MzIwM2ExNGEwNmUyYmZjLi45MDJjNGY1
NDIzNjMyZWJlMGM1YzQwZmQ5MDU1NTY4NzI0ODJiZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yX3AuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yX3AuaApAQCAtNTUsNiArNTUsNyBA
QCBwdWJsaWM6CiAgICAgUGxhdGZvcm06OkdyYXBoaWNzOjpHTEVTMkNvbnRleHQqIGNvbnRleHQo
KSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQ7IH0KICAgICB2b2lkIHNldENvbnRleHQoUGxhdGZv
cm06OkdyYXBoaWNzOjpHTEVTMkNvbnRleHQqKTsKIAorICAgIFdlYkNvcmU6OkxheWVyQ29tcG9z
aXRpbmdUaHJlYWQqIHJvb3RMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdExheWVyLmdldCgp
OyB9CiAgICAgdm9pZCBzZXRSb290TGF5ZXIoV2ViQ29yZTo6TGF5ZXJDb21wb3NpdGluZ1RocmVh
ZCopOwogCiAgICAgdm9pZCBjb21taXQoV2ViQ29yZTo6TGF5ZXJXZWJLaXRUaHJlYWQqIHJvb3RM
YXllclByb3h5KTsKQEAgLTYyLDcgKzYzLDExIEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIGlzIG1h
cHBlZCBmcm9tIHRoZSBwdWJsaWMgQVBJLCB0aHVzIHRha2VzIHRyYW5zZm9ybWVkIGNvbnRlbnRz
CiAgICAgdm9pZCByZW5kZXIoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZHN0UmVjdCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgdHJhbnNmb3JtZWRDb250ZW50cyk7CiAKLSAgICAvLyBSZW5kZXIg
ZXZlcnl0aGluZyBidXQgdGhlIHJvb3QgbGF5ZXIKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhl
IFdlYlBhZ2VDb21wb3NpdG9yIGRyYXdzIHRoZSByb290IGxheWVyLCBmYWxzZSBpZiB0aGUgQmFj
a2luZ1N0b3JlIGRyYXdzIHRoZSByb290IGxheWVyCisgICAgYm9vbCBkcmF3c1Jvb3RMYXllcigp
IGNvbnN0OworICAgIHZvaWQgc2V0RHJhd3NSb290TGF5ZXIoYm9vbCBkcmF3c1Jvb3RMYXllcikg
eyBtX2RyYXdzUm9vdExheWVyID0gZHJhd3NSb290TGF5ZXI7IH0KKworICAgIC8vIFJlbmRlciBl
dmVyeXRoaW5nIGJ1dCB0aGUgcm9vdCBsYXllciwgb3IgZXZlcnl0aGluZyBpZiBkcmF3c1Jvb3RM
YXllcigpIGlzIHRydWUuCiAgICAgYm9vbCBkcmF3TGF5ZXJzKGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIGRzdFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgY29udGVudHMpOwogCiAgICAg
V2ViQ29yZTo6SW50UmVjdCBsYXlvdXRSZWN0Rm9yQ29tcG9zaXRpbmcoKSBjb25zdCB7IHJldHVy
biBtX2xheW91dFJlY3RGb3JDb21wb3NpdGluZzsgfQpAQCAtOTcsNiArMTAyLDcgQEAgcHJpdmF0
ZToKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fY29udGVudHNTaXplRm9yQ29tcG9zaXRpbmc7CiAg
ICAgV2ViQ29yZTo6TGF5ZXJSZW5kZXJpbmdSZXN1bHRzIG1fbGFzdENvbXBvc2l0aW5nUmVzdWx0
czsKICAgICBkb3VibGUgbV9wZW5kaW5nQW5pbWF0aW9uRnJhbWU7CisgICAgYm9vbCBtX2RyYXdz
Um9vdExheWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5oIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L0FwaS9XZWJQYWdlX3AuaAppbmRleCA2OTY2NDUxYTM4MGM4OWVhMDY1YzAwZTBkYmM3
ZTdhNmEyYTJiNGU1Li5lMGNhYzA1MTVlZjhhMjE1YWZmZjgzMzM3NTEwMzExODQxYzQ0NGMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgKQEAgLTM1Niw2ICszNTYs
OSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3RyYW5zZm9ybWF0aW9uTWF0cml4OwogICAg
IH0KIAorICAgIGJvb2wgY29tcG9zaXRvckRyYXdzUm9vdExheWVyKCkgY29uc3Q7IC8vIFRocmVh
ZCBzYWZlCisgICAgdm9pZCBzZXRDb21wb3NpdG9yRHJhd3NSb290TGF5ZXIoYm9vbCk7IC8vIFdl
YktpdCB0aHJlYWQgb25seQorCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAg
IC8vIFdlYktpdCB0aHJlYWQuCiAgICAgYm9vbCBuZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25p
emF0aW9uKCk7CkBAIC0zNzQsNyArMzc3LDcgQEAgcHVibGljOgogCiAgICAgLy8gQ29tcG9zaXRp
bmcgdGhyZWFkLgogICAgIHZvaWQgc2V0Um9vdExheWVyQ29tcG9zaXRpbmdUaHJlYWQoV2ViQ29y
ZTo6TGF5ZXJDb21wb3NpdGluZ1RocmVhZCopOwotICAgIHZvaWQgY29tbWl0Um9vdExheWVyKGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CisgICAgdm9p
ZCBjb21taXRSb290TGF5ZXIoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmLCBib29sKTsKICAgICBib29sIGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcG9zaXRvcjsgfQogICAgIFdlYlBhZ2VDb21wb3NpdG9y
UHJpdmF0ZSogY29tcG9zaXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29tcG9zaXRvci5nZXQoKTsg
fQogICAgIHZvaWQgc2V0Q29tcG9zaXRvcihQYXNzUmVmUHRyPFdlYlBhZ2VDb21wb3NpdG9yUHJp
dmF0ZT4pOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>