<?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>108295</bug_id>
          
          <creation_ts>2013-01-29 22:17:46 -0800</creation_ts>
          <short_desc>Coordinated Graphics: Remove GraphicsLayerTextureMapper dependency from CoordinatedGraphicsScene.</short_desc>
          <delta_ts>2013-04-15 08:21:04 -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>Layout and Rendering</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>
          <dependson>108294</dependson>
          <blocked>103854</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dongseong Hwang">dongseong.hwang</reporter>
          <assigned_to name="Noam Rosenthal">noam</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>helder.correia</cc>
    
    <cc>jturcotte</cc>
    
    <cc>luiz</cc>
    
    <cc>noam</cc>
    
    <cc>ossy</cc>
    
    <cc>rafael.lobo</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>zarvai</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>819801</commentid>
    <comment_count>0</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-01-29 22:17:46 -0800</bug_when>
    <thetext>Currently, TextureMapperScene uses GraphicsLayerTextureMapper to store pending layer states until flush.
However, now TextureMapperScene executes all operations at the time to flush, so we don&apos;t need to use GraphicsLayerTextureMapper anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872733</commentid>
    <comment_count>1</comment_count>
      <attachid>197250</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-04-10 05:48:12 -0700</bug_when>
    <thetext>Created attachment 197250
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875746</commentid>
    <comment_count>2</comment_count>
      <attachid>197250</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-15 06:22:50 -0700</bug_when>
    <thetext>Comment on attachment 197250
Patch

Clearing flags on attachment: 197250

Committed r148433: &lt;http://trac.webkit.org/changeset/148433&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875747</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-15 06:22:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875813</commentid>
    <comment_count>4</comment_count>
    <who name="Zoltan Arvai">zarvai</who>
    <bug_when>2013-04-15 07:48:31 -0700</bug_when>
    <thetext>It seems Qt debug builds are broken after this patch:

http://build.webkit.sed.hu/builders/x86-32%20Linux%20Qt%20Debug/builds/25334
http://build.webkit.sed.hu/builders/x86-64%20Linux%20Qt%20Debug/builds/28558

/home/webkitbuildbot/slaves/debug64bit/buildslave/qt-linux-64-debug/build/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.cpp: In member function &apos;void WebCore::CoordinatedGraphicsScene::setRootLayerID(WebCore::CoordinatedLayerID)&apos;:
[1;31m/home/webkitbuildbot/slaves/debug64bit/buildslave/qt-linux-64-debug/build/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.cpp:431:21: error: &apos;WTF::OwnPtr&lt;WebCore::TextureMapperLayer&gt;::ValueType&apos; has no member named &apos;children&apos;[0m


And layout test is slowed down on 32bit Qt:
http://build.webkit.org/builders/Qt%20Linux%20Release/builds/59340
http://build.webkit.sed.hu/builders/x86-32%20Linux%20Qt%20Release%20WebKit2/builds/34753</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875835</commentid>
    <comment_count>5</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-04-15 08:15:31 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875836</commentid>
    <comment_count>6</comment_count>
      <attachid>198128</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-04-15 08:15:36 -0700</bug_when>
    <thetext>Created attachment 198128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875838</commentid>
    <comment_count>7</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-04-15 08:16:33 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=198128) [details]
&gt; Patch

Proposed buildfix.

Ooops, it wasn&apos;t the bot, but me. I should remove the EWS credentials from my git config. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875841</commentid>
    <comment_count>8</comment_count>
      <attachid>198128</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-04-15 08:20:58 -0700</bug_when>
    <thetext>Comment on attachment 198128
Patch

Clearing flags on attachment: 198128

Committed r148437: &lt;http://trac.webkit.org/changeset/148437&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>875842</commentid>
    <comment_count>9</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-04-15 08:21:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>197250</attachid>
            <date>2013-04-10 05:48:12 -0700</date>
            <delta_ts>2013-04-15 08:15:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108295-20130410144753.patch</filename>
            <type>text/plain</type>
            <size>34274</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4MDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWZiODExMDM0NDQ2ZWI1
ZmM0MjZlNWI5NWMxZGRjNjU0YTA0MDhkNi4uMjBiYWZhNDNlODdkOTNiMDc2MTQ3YWQ5NzZkYjI1
OTk4Yjk3Njg3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEzLTA0LTEwICBOb2Ft
IFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBDb29yZGluYXRlZCBHcmFw
aGljczogUmVtb3ZlIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIGRlcGVuZGVuY3kgZnJvbSBD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDgyOTUKKworICAgICAgICBTaW5jZSBhbGwgdGhlIGNoYW5nZXMg
dG8gdGhlIFRleHR1cmVNYXBwZXJMYXllciB0cmVlIG5vdyBjb21lIGluIGEgc2luZ2xlIElQQyBt
ZXNzYWdlIHZpYQorICAgICAgICBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUsIHdlIGRvbid0IG5l
ZWQgdGhlIGFkZGl0aW9uYWwgYnVmZmVyaW5nIGRvbmUgaW4gR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuCisKKyAgICAgICAgVGhpcyByZWR1Y2VzIHVubmVjZXNzYXJ5IGZ1bmN0aW9uIGNhbGxz
LCBhbmQgYWxzbyBzdHJlYW1saW5lcyBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciB0byBiZSB1
c2VkCisgICAgICAgIG9ubHkgaW4gV2ViS2l0MSAod2l0aG91dCBDb29yZGluYXRlZEdyYXBoaWNz
KS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMsIHJlZmFjdG9yIG9ubHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXROZWVkc0Rp
c3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNl
dE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6c2V0RHJhd3NDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZURlYnVnQm9yZGVy
QW5kUmVwYWludENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjp1cGRhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuaDoKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToKKyAgICAgICAg
ICAgIFJlbW92ZWQgcmVmZXJlbmNlcyB0byBtX2hhc093bkJhY2tpbmdTdG9yZSwgd2hpY2ggd2Fz
IGRvbmUgdG8gc2VwYXJhdGUgdGhlIENvb3JkaW5hdGVkR3JhcGhpY3MKKyAgICAgICAgICAgIHBh
dGggZnJvbSB0aGUgV0sxIHBhdGguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
TGF5ZXI6OmRyYXdzQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5
ZXI6OmNvbnRlbnRzQXJlVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
TGF5ZXI6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpvcGFj
aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6dHJhbnNmb3JtKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6aXNTaG93aW5nUmVwYWludENv
dW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpmaXhlZFRvVmll
d3BvcnQpOgorICAgICAgICAoVGV4dHVyZU1hcHBlckxheWVyKToKKyAgICAgICAgICAgIEFkZGVk
IGEgZmV3IHB1YmxpYyBmdW5jdGlvbnMgbmVlZGVkIGJ5IENvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGF5ZXJTaG91bGRI
YXZlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZTo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lOjpwYWludFRvR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6YWRqdXN0UG9zaXRpb25Gb3JGaXhlZExh
eWVycyk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0
ZUNhbnZhc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZTo6c3luY0NhbnZhc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZTo6ZGVzdHJveUNhbnZhc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0TGF5ZXJSZXBhaW50Q291bnRJZk5lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnNldExheWVyQ2hp
bGRyZW5JZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2Nl
bmU6OnNldExheWVyRmlsdGVyc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZTo6c2V0TGF5ZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmU6OmdldExheWVyQnlJRElmRXhpc3RzKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRlTGF5ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpkZWxldGVMYXllcik6CisgICAgICAg
IChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnNldFJvb3RMYXllcklEKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cHJlcGFyZUNvbnRlbnRC
YWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
OjpjcmVhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmU6OnJlbW92ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cmVzZXRCYWNraW5nU3RvcmVTaXpl
VG9MYXllclNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
OjpjcmVhdGVUaWxlc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6cmVtb3ZlVGlsZXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZVRpbGVzSWZOZWVkZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjphc3NpZ25JbWFnZUJhY2tpbmdUb0xheWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y29tbWl0U2Nl
bmVTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmVu
c3VyZVJvb3RMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2Nl
bmU6OnNldExheWVyQW5pbWF0aW9uc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZTo6ZmluZFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzU2NlbmUuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmxheWVyQnlJRCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnJvb3RMYXllcik6CisgICAg
ICAgICAgICBVc2UgVGV4dHVyZU1hcHBlckxheWVyIGluc3RlYWQgb2YgR3JhcGhpY3NMYXllciBh
bmQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuCisKIDIwMTMtMDQtMDkgIE5vYW0gUm9zZW50
aGFsICA8bm9hbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtUZXhtYXBdIEluIGNlcnRhaW4gc2l0
dWF0aW9ucyBuZXN0ZWQgYmxlbmRpbmcgd2l0aCBvdmVyZmxvdzpoaWRkZW4gZGlzcGxheXMgY2xp
cHBlZCByZXN1bHRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApp
bmRleCBmMzI2MjM1ODViMWQzZWRjM2VmODlhNzcwNDFiNWMzYmFlMDQ0YzAyLi44YTA0NjE3MmNk
Y2VhYjc5MjU0OTg1MjcwYTkzMmI2ODZmNGI0YTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlci5jcHAKQEAgLTUyLDcgKzUyLDYgQEAgR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKEdyYXBoaWNzTGF5ZXJDbGllbnQq
IGNsaWUKICAgICAsIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyKDApCiAgICAgLCBtX2NoYW5n
ZU1hc2soTm9DaGFuZ2VzKQogICAgICwgbV9uZWVkc0Rpc3BsYXkoZmFsc2UpCi0gICAgLCBtX2hh
c093bkJhY2tpbmdTdG9yZSh0cnVlKQogICAgICwgbV9maXhlZFRvVmlld3BvcnQoZmFsc2UpCiAg
ICAgLCBtX2RlYnVnQm9yZGVyV2lkdGgoMCkKICAgICAsIG1fY29udGVudHNMYXllcigwKQpAQCAt
ODgsNyArODcsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp3aWxsQmVEZXN0
cm95ZWQoKQogKi8KIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldE5lZWRzRGlz
cGxheSgpCiB7Ci0gICAgaWYgKCFkcmF3c0NvbnRlbnQoKSB8fCAhbV9oYXNPd25CYWNraW5nU3Rv
cmUpCisgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9u
ZWVkc0Rpc3BsYXkgPSB0cnVlOwpAQCAtMTA4LDcgKzEwNyw3IEBAIHZvaWQgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldENvbnRlbnRzTmVlZHNEaXNwbGF5KCkKICovCiB2b2lkIEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRS
ZWN0JiByZWN0KQogewotICAgIGlmICghZHJhd3NDb250ZW50KCkgfHwgIW1faGFzT3duQmFja2lu
Z1N0b3JlKQorICAgIGlmICghZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmIChtX25lZWRzRGlzcGxheSkKQEAgLTI4MSw3ICsyODAsNyBAQCB2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpzZXREcmF3c0NvbnRlbnQoYm9vbCB2YWx1ZSkKICAgICBHcmFwaGlj
c0xheWVyOjpzZXREcmF3c0NvbnRlbnQodmFsdWUpOwogICAgIG5vdGlmeUNoYW5nZShEcmF3c0Nv
bnRlbnRDaGFuZ2UpOwogCi0gICAgaWYgKHZhbHVlICYmIG1faGFzT3duQmFja2luZ1N0b3JlKQor
ICAgIGlmICh2YWx1ZSkKICAgICAgICAgc2V0TmVlZHNEaXNwbGF5KCk7CiB9CiAKQEAgLTQzNCw4
ICs0MzMsNiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpmbHVzaENvbXBvc2l0
aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkKIAogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6cHJlcGFyZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCkKIHsKLSAgICBpZiAoIW1faGFzT3du
QmFja2luZ1N0b3JlKQotICAgICAgICByZXR1cm47CiAgICAgaWYgKCFzaG91bGRIYXZlQmFja2lu
Z1N0b3JlKCkpIHsKICAgICAgICAgbV9iYWNraW5nU3RvcmUuY2xlYXIoKTsKICAgICAgICAgbV9j
aGFuZ2VNYXNrIHw9IEJhY2tpbmdTdG9yZUNoYW5nZTsKQEAgLTQ1MSw3ICs0NDgsNiBAQCB2b2lk
IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlSWZOZWVkZWQo
KQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRhdGVEZWJ1Z0JvcmRlckFu
ZFJlcGFpbnRDb3VudCgpCiB7Ci0gICAgQVNTRVJUKG1faGFzT3duQmFja2luZ1N0b3JlKTsKICAg
ICBpZiAoaXNTaG93aW5nRGVidWdCb3JkZXIoKSkKICAgICAgICAgdXBkYXRlRGVidWdJbmRpY2F0
b3JzKCk7CiAKQEAgLTU5MCw5ICs1ODYsNiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGUoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogCiB2b2lk
IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCgp
CiB7Ci0gICAgaWYgKCFtX2hhc093bkJhY2tpbmdTdG9yZSkKLSAgICAgICAgcmV0dXJuOwotCiAg
ICAgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciA9IG1fbGF5ZXItPnRleHR1cmVNYXBwZXIo
KTsKICAgICBpZiAoIXRleHR1cmVNYXBwZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTY3NSwxNiAr
NjY4LDYgQEAgYm9vbCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0RmlsdGVycyhjb25z
dCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogfQogI2VuZGlmCiAKLXZvaWQgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnNldEJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFRleHR1cmVNYXBw
ZXJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSkKLXsKLSAgICBBU1NFUlQoIW1faGFzT3duQmFj
a2luZ1N0b3JlKTsKLSAgICBpZiAobV9iYWNraW5nU3RvcmUgPT0gYmFja2luZ1N0b3JlKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBtX2JhY2tpbmdTdG9yZSA9IGJhY2tpbmdTdG9yZTsKLSAgICBu
b3RpZnlDaGFuZ2UoQmFja2luZ1N0b3JlQ2hhbmdlKTsKLX0KLQogdm9pZCBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6c2V0Rml4ZWRUb1ZpZXdwb3J0KGJvb2wgZml4ZWQpCiB7CiAgICAgaWYg
KG1fZml4ZWRUb1ZpZXdwb3J0ID09IGZpeGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuaAppbmRleCA2MDQ0NGVlNjFiNjI2Y2RjODgzNzFlNmMzZGRlNzA5NTIwYjNlNzBj
Li4yZDlkMzc4Mzc1MGEwZTc2OWM2YmNjNDlkYjFmNTAzMmUyZDM4NGQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApAQCAtOTIsMTAgKzkyLDYgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKTsKICNl
bmRpZgogCi0gICAgLy8gRklYTUU6IEl0IHdpbGwgYmUgcmVtb3ZlZCBhZnRlciByZW1vdmluZyBk
ZXBlbmRlbmN5IG9mIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSBvbiBHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci4KLSAgICB2b2lkIHNldEhhc093bkJhY2tpbmdTdG9yZShib29sIGIpIHsgbV9o
YXNPd25CYWNraW5nU3RvcmUgPSBiOyB9Ci0gICAgdm9pZCBzZXRCYWNraW5nU3RvcmUoUGFzc1Jl
ZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPik7Ci0KICAgICB2b2lkIHNldEZpeGVkVG9W
aWV3cG9ydChib29sKTsKICAgICBib29sIGZpeGVkVG9WaWV3cG9ydCgpIGNvbnN0IHsgcmV0dXJu
IG1fZml4ZWRUb1ZpZXdwb3J0OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAppbmRleCBlZTc2
ZDFhODIyYTEzNjYwNTBmYWIzN2E1YTc5MjhmMjgwNWVkYmFmLi5hZjM0MTNlOGVmMzk3N2MxMjY5
MDkwOGYxNmJjZGNiMzYwMGU2MmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCkBAIC04Nyw2
ICs4NywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgSW50UmVj
dCYpOwogICAgIHZvaWQgc2V0TWFza3NUb0JvdW5kcyhib29sKTsKICAgICB2b2lkIHNldERyYXdz
Q29udGVudChib29sKTsKKyAgICBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdGUuZHJhd3NDb250ZW50OyB9CisgICAgYm9vbCBjb250ZW50c0FyZVZpc2libGUoKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlLmNvbnRlbnRzVmlzaWJsZTsgfQorICAgIEZsb2F0U2l6ZSBzaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaXplOyB9CisgICAgZmxvYXQgb3BhY2l0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGUub3BhY2l0eTsgfQorICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUudHJhbnNmb3JtOyB9CiAgICAgdm9p
ZCBzZXRDb250ZW50c1Zpc2libGUoYm9vbCk7CiAgICAgdm9pZCBzZXRDb250ZW50c09wYXF1ZShi
b29sKTsKICAgICB2b2lkIHNldEJhY2tmYWNlVmlzaWJpbGl0eShib29sKTsKQEAgLTEwNiwxMCAr
MTExLDEyIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2b2lkIHNldERlYnVnVmlzdWFscyhib29s
IHNob3dEZWJ1Z0JvcmRlcnMsIGNvbnN0IENvbG9yJiBkZWJ1Z0JvcmRlckNvbG9yLCBmbG9hdCBk
ZWJ1Z0JvcmRlcldpZHRoLCBib29sIHNob3dSZXBhaW50Q291bnRlcik7CisgICAgYm9vbCBpc1No
b3dpbmdSZXBhaW50Q291bnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hvd1JlcGFpbnRD
b3VudGVyOyB9CiAgICAgdm9pZCBzZXRSZXBhaW50Q291bnQoaW50KTsKICAgICB2b2lkIHNldENv
bnRlbnRzTGF5ZXIoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIqKTsKICAgICB2b2lkIHNldEFu
aW1hdGlvbnMoY29uc3QgR3JhcGhpY3NMYXllckFuaW1hdGlvbnMmKTsKICAgICB2b2lkIHNldEZp
eGVkVG9WaWV3cG9ydChib29sKTsKKyAgICBib29sIGZpeGVkVG9WaWV3cG9ydCgpIGNvbnN0IHsg
cmV0dXJuIG1fZml4ZWRUb1ZpZXdwb3J0OyB9CiAgICAgdm9pZCBzZXRCYWNraW5nU3RvcmUoUGFz
c1JlZlB0cjxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPik7CiAKICAgICB2b2lkIHN5bmNBbmlt
YXRpb25zKCk7CkBAIC0xMjAsNiArMTI3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2Nyb2xs
UG9zaXRpb25EZWx0YUlmTmVlZGVkKGNvbnN0IEZsb2F0U2l6ZSYpOwogCiAgICAgdm9pZCBhcHBs
eUFuaW1hdGlvbnNSZWN1cnNpdmVseSgpOworICAgIHZvaWQgYWRkQ2hpbGQoVGV4dHVyZU1hcHBl
ckxheWVyKik7CiAKIHByaXZhdGU6CiAgICAgY29uc3QgVGV4dHVyZU1hcHBlckxheWVyKiByb290
TGF5ZXIoKSBjb25zdDsKQEAgLTEzMiw3ICsxNDAsNiBAQCBwcml2YXRlOgogICAgIEZsb2F0UG9p
bnQgYWRqdXN0ZWRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUucG9zICsgbV9zY3Jv
bGxQb3NpdGlvbkRlbHRhIC0gbV91c2VyU2Nyb2xsT2Zmc2V0OyB9CiAgICAgYm9vbCBpc0FuY2Vz
dG9yRml4ZWRUb1ZpZXdwb3J0KCkgY29uc3Q7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVw
bGljYVRyYW5zZm9ybSgpOwotICAgIHZvaWQgYWRkQ2hpbGQoVGV4dHVyZU1hcHBlckxheWVyKik7
CiAgICAgdm9pZCByZW1vdmVGcm9tUGFyZW50KCk7CiAgICAgdm9pZCByZW1vdmVBbGxDaGlsZHJl
bigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzU2NlbmUuY3BwCmluZGV4IDIxZmJjNDA2NzBkNGMzY2U4Yzc2N2NkYWQ3ZmI5NTRlOTg4MzZl
YmIuLjY3OTU4MGMzODk5M2JhOGMwMjQ1YTliZWE0ZWNhNzBlZTAyZjEyNTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCkBA
IC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgiCiAK
ICNpbmNsdWRlICJDb29yZGluYXRlZEJhY2tpbmdTdG9yZS5oIgotI2luY2x1ZGUgIkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgogI2luY2x1
ZGUgIlRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
R0wuaCIKQEAgLTUxLDcgKzUwLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmRp
c3BhdGNoT25NYWluVGhyZWFkKGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmMKICAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChmdW5jdGlvbik7CiB9CiAKLXN0YXRpYyBib29sIGxheWVyU2hvdWxk
SGF2ZUJhY2tpbmdTdG9yZShHcmFwaGljc0xheWVyKiBsYXllcikKK3N0YXRpYyBib29sIGxheWVy
U2hvdWxkSGF2ZUJhY2tpbmdTdG9yZShUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyKQogewogICAg
IHJldHVybiBsYXllci0+ZHJhd3NDb250ZW50KCkgJiYgbGF5ZXItPmNvbnRlbnRzQXJlVmlzaWJs
ZSgpICYmICFsYXllci0+c2l6ZSgpLmlzRW1wdHkoKTsKIH0KQEAgLTg1LDExICs4NCwxMSBAQCB2
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaQogICAgIHN5bmNSZW1vdGVDb250ZW50KCk7CiAKICAgICBh
ZGp1c3RQb3NpdGlvbkZvckZpeGVkTGF5ZXJzKCk7Ci0gICAgR3JhcGhpY3NMYXllciogY3VycmVu
dFJvb3RMYXllciA9IHJvb3RMYXllcigpOworICAgIFRleHR1cmVNYXBwZXJMYXllciogY3VycmVu
dFJvb3RMYXllciA9IHJvb3RMYXllcigpOwogICAgIGlmICghY3VycmVudFJvb3RMYXllcikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciA9IHRvVGV4dHVy
ZU1hcHBlckxheWVyKGN1cnJlbnRSb290TGF5ZXIpOworICAgIFRleHR1cmVNYXBwZXJMYXllciog
bGF5ZXIgPSBjdXJyZW50Um9vdExheWVyOwogCiAgICAgaWYgKCFsYXllcikKICAgICAgICAgcmV0
dXJuOwpAQCAtMTEwLDcgKzEwOSw2IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpw
YWludFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpCiAgICAgaWYg
KGN1cnJlbnRSb290TGF5ZXItPm9wYWNpdHkoKSAhPSBvcGFjaXR5IHx8IGN1cnJlbnRSb290TGF5
ZXItPnRyYW5zZm9ybSgpICE9IG1hdHJpeCkgewogICAgICAgICBjdXJyZW50Um9vdExheWVyLT5z
ZXRPcGFjaXR5KG9wYWNpdHkpOwogICAgICAgICBjdXJyZW50Um9vdExheWVyLT5zZXRUcmFuc2Zv
cm0obWF0cml4KTsKLSAgICAgICAgY3VycmVudFJvb3RMYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0
YXRlRm9yVGhpc0xheWVyT25seSgpOwogICAgIH0KIAogICAgIGxheWVyLT5wYWludCgpOwpAQCAt
MTQ5LDcgKzE0Nyw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWludFRvR3Jh
cGhpY3NDb250ZXh0KFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBwCiAgICAgICAgIG1fdGV4dHVy
ZU1hcHBlciA9IFRleHR1cmVNYXBwZXI6OmNyZWF0ZSgpOwogICAgIEFTU0VSVChtX3RleHR1cmVN
YXBwZXItPmFjY2VsZXJhdGlvbk1vZGUoKSA9PSBUZXh0dXJlTWFwcGVyOjpTb2Z0d2FyZU1vZGUp
OwogICAgIHN5bmNSZW1vdGVDb250ZW50KCk7Ci0gICAgVGV4dHVyZU1hcHBlckxheWVyKiBsYXll
ciA9IHRvVGV4dHVyZU1hcHBlckxheWVyKHJvb3RMYXllcigpKTsKKyAgICBUZXh0dXJlTWFwcGVy
TGF5ZXIqIGxheWVyID0gcm9vdExheWVyKCk7CiAKICAgICBpZiAoIWxheWVyKQogICAgICAgICBy
ZXR1cm47CkBAIC0xOTIsMTEgKzE5MCwxMSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZTo6YWRqdXN0UG9zaXRpb25Gb3JGaXhlZExheWVycygpCiAKICAgICBMYXllclJhd1B0ck1hcDo6
aXRlcmF0b3IgZW5kID0gbV9maXhlZExheWVycy5lbmQoKTsKICAgICBmb3IgKExheWVyUmF3UHRy
TWFwOjppdGVyYXRvciBpdCA9IG1fZml4ZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KQotICAgICAgICB0b1RleHR1cmVNYXBwZXJMYXllcihpdC0+dmFsdWUpLT5zZXRTY3JvbGxQb3Np
dGlvbkRlbHRhSWZOZWVkZWQoZGVsdGEpOworICAgICAgICBpdC0+dmFsdWUtPnNldFNjcm9sbFBv
c2l0aW9uRGVsdGFJZk5lZWRlZChkZWx0YSk7CiB9CiAKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFD
RSkKLXZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjcmVhdGVDYW52YXNJZk5lZWRlZChH
cmFwaGljc0xheWVyKiBsYXllciwgY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUm
IHN0YXRlKQordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0ZUNhbnZhc0lmTmVl
ZGVkKFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIsIGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllclN0YXRlJiBzdGF0ZSkKIHsKICAgICBpZiAoIXN0YXRlLmNhbnZhc1Rva2VuLmlzVmFsaWQo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjA0LDEwICsyMDIsMTAgQEAgdm9pZCBDb29yZGluYXRl
ZEdyYXBoaWNzU2NlbmU6OmNyZWF0ZUNhbnZhc0lmTmVlZGVkKEdyYXBoaWNzTGF5ZXIqIGxheWVy
LCBjb25zdAogICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZT4gY2Fu
dmFzQmFja2luZ1N0b3JlKFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpjcmVhdGUo
KSk7CiAgICAgbV9zdXJmYWNlQmFja2luZ1N0b3Jlcy5zZXQobGF5ZXIsIGNhbnZhc0JhY2tpbmdT
dG9yZSk7CiAgICAgY2FudmFzQmFja2luZ1N0b3JlLT5zZXRHcmFwaGljc1N1cmZhY2UoR3JhcGhp
Y3NTdXJmYWNlOjpjcmVhdGUoc3RhdGUuY2FudmFzU2l6ZSwgc3RhdGUuY2FudmFzU3VyZmFjZUZs
YWdzLCBzdGF0ZS5jYW52YXNUb2tlbikpOwotICAgIGxheWVyLT5zZXRDb250ZW50c1RvTWVkaWEo
Y2FudmFzQmFja2luZ1N0b3JlLmdldCgpKTsKKyAgICBsYXllci0+c2V0QmFja2luZ1N0b3JlKGNh
bnZhc0JhY2tpbmdTdG9yZS5nZXQoKSk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lOjpzeW5jQ2FudmFzSWZOZWVkZWQoR3JhcGhpY3NMYXllciogbGF5ZXIsIGNvbnN0IENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJiBzdGF0ZSkKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lOjpzeW5jQ2FudmFzSWZOZWVkZWQoVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciwgY29u
c3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmIHN0YXRlKQogewogICAgIEFTU0VSVCht
X3RleHR1cmVNYXBwZXIpOwogCkBAIC0yMjQsNDEgKzIyMiw0MSBAQCB2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZTo6c3luY0NhbnZhc0lmTmVlZGVkKEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBj
b25zdCBDbwogICAgIH0KIH0KIAotdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmRlc3Ry
b3lDYW52YXNJZk5lZWRlZChHcmFwaGljc0xheWVyKiBsYXllciwgY29uc3QgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyU3RhdGUmIHN0YXRlKQordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6
OmRlc3Ryb3lDYW52YXNJZk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyLCBjb25zdCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYgc3RhdGUpCiB7CiAgICAgaWYgKHN0YXRlLmNh
bnZhc1Rva2VuLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zdXJmYWNlQmFj
a2luZ1N0b3Jlcy5yZW1vdmUobGF5ZXIpOwotICAgIGxheWVyLT5zZXRDb250ZW50c1RvTWVkaWEo
MCk7CisgICAgbGF5ZXItPnNldEJhY2tpbmdTdG9yZSgwKTsKIH0KICNlbmRpZgogCi12b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0TGF5ZXJSZXBhaW50Q291bnRJZk5lZWRlZChHcmFw
aGljc0xheWVyKiBsYXllciwgY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmIHN0
YXRlKQordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnNldExheWVyUmVwYWludENvdW50
SWZOZWVkZWQoVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciwgY29uc3QgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyU3RhdGUmIHN0YXRlKQogewogICAgIGlmICghbGF5ZXItPmlzU2hvd2luZ1JlcGFp
bnRDb3VudGVyKCkgfHwgIXN0YXRlLnJlcGFpbnRDb3VudENoYW5nZWQpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIobGF5ZXIpLT5zZXRSZXBhaW50
Q291bnQoc3RhdGUucmVwYWludENvdW50KTsKKyAgICBsYXllci0+c2V0UmVwYWludENvdW50KHN0
YXRlLnJlcGFpbnRDb3VudCk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpz
ZXRMYXllckNoaWxkcmVuSWZOZWVkZWQoR3JhcGhpY3NMYXllciogbGF5ZXIsIGNvbnN0IENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJiBzdGF0ZSkKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lOjpzZXRMYXllckNoaWxkcmVuSWZOZWVkZWQoVGV4dHVyZU1hcHBlckxheWVyKiBsYXll
ciwgY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmIHN0YXRlKQogewogICAgIGlm
ICghc3RhdGUuY2hpbGRyZW5DaGFuZ2VkKQogICAgICAgICByZXR1cm47CiAKLSAgICBWZWN0b3I8
R3JhcGhpY3NMYXllcio+IGNoaWxkcmVuOworICAgIFZlY3RvcjxUZXh0dXJlTWFwcGVyTGF5ZXIq
PiBjaGlsZHJlbjsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGUuY2hpbGRyZW4u
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgQ29vcmRpbmF0ZWRMYXllcklEIGNoaWxkSUQgPSBzdGF0
ZS5jaGlsZHJlbltpXTsKLSAgICAgICAgR3JhcGhpY3NMYXllciogY2hpbGQgPSBsYXllckJ5SUQo
Y2hpbGRJRCk7CisgICAgICAgIFRleHR1cmVNYXBwZXJMYXllciogY2hpbGQgPSBsYXllckJ5SUQo
Y2hpbGRJRCk7CiAgICAgICAgIGNoaWxkcmVuLmFwcGVuZChjaGlsZCk7CiAgICAgfQogICAgIGxh
eWVyLT5zZXRDaGlsZHJlbihjaGlsZHJlbik7CiB9CiAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMp
Ci12b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0TGF5ZXJGaWx0ZXJzSWZOZWVkZWQo
R3JhcGhpY3NMYXllciogbGF5ZXIsIGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRl
JiBzdGF0ZSkKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzZXRMYXllckZpbHRlcnNJ
Zk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyLCBjb25zdCBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXJTdGF0ZSYgc3RhdGUpCiB7CiAgICAgaWYgKCFzdGF0ZS5maWx0ZXJzQ2hhbmdlZCkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMzA1LDcgKzMwMyw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lOjpyZW1vdmVDdXN0b21GaWx0ZXJQcm9ncmFtKGludCBpZCkKIHZvaWQgQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lOjpzZXRMYXllclN0YXRlKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwg
Y29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmIGxheWVyU3RhdGUpCiB7CiAgICAg
QVNTRVJUKG1fcm9vdExheWVySUQgIT0gSW52YWxpZENvb3JkaW5hdGVkTGF5ZXJJRCk7Ci0gICAg
R3JhcGhpY3NMYXllciogbGF5ZXIgPSBsYXllckJ5SUQoaWQpOworICAgIFRleHR1cmVNYXBwZXJM
YXllciogbGF5ZXIgPSBsYXllckJ5SUQoaWQpOwogCiAgICAgaWYgKGxheWVyU3RhdGUucG9zaXRp
b25DaGFuZ2VkKQogICAgICAgICBsYXllci0+c2V0UG9zaXRpb24obGF5ZXJTdGF0ZS5wb3MpOwpA
QCAtMzI5LDEzICszMjcsMTMgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnNldExh
eWVyU3RhdGUoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBjb25zdCBDb29yZGkKICAgICAgICAgbGF5
ZXItPnNldE9wYWNpdHkobGF5ZXJTdGF0ZS5vcGFjaXR5KTsKIAogICAgIGlmIChsYXllclN0YXRl
LnNvbGlkQ29sb3JDaGFuZ2VkKQotICAgICAgICBsYXllci0+c2V0Q29udGVudHNUb1NvbGlkQ29s
b3IobGF5ZXJTdGF0ZS5zb2xpZENvbG9yKTsKKyAgICAgICAgbGF5ZXItPnNldFNvbGlkQ29sb3Io
bGF5ZXJTdGF0ZS5zb2xpZENvbG9yKTsKIAogICAgIGlmIChsYXllclN0YXRlLmRlYnVnQm9yZGVy
Q29sb3JDaGFuZ2VkIHx8IGxheWVyU3RhdGUuZGVidWdCb3JkZXJXaWR0aENoYW5nZWQpCi0gICAg
ICAgIGxheWVyLT5zZXREZWJ1Z0JvcmRlcihsYXllclN0YXRlLmRlYnVnQm9yZGVyQ29sb3IsIGxh
eWVyU3RhdGUuZGVidWdCb3JkZXJXaWR0aCk7CisgICAgICAgIGxheWVyLT5zZXREZWJ1Z1Zpc3Vh
bHMobGF5ZXJTdGF0ZS5zaG93RGVidWdCb3JkZXJzLCBsYXllclN0YXRlLmRlYnVnQm9yZGVyQ29s
b3IsIGxheWVyU3RhdGUuZGVidWdCb3JkZXJXaWR0aCwgbGF5ZXJTdGF0ZS5zaG93UmVwYWludENv
dW50ZXIpOwogCiAgICAgaWYgKGxheWVyU3RhdGUucmVwbGljYUNoYW5nZWQpCi0gICAgICAgIGxh
eWVyLT5zZXRSZXBsaWNhdGVkQnlMYXllcihnZXRMYXllckJ5SURJZkV4aXN0cyhsYXllclN0YXRl
LnJlcGxpY2EpKTsKKyAgICAgICAgbGF5ZXItPnNldFJlcGxpY2FMYXllcihnZXRMYXllckJ5SURJ
ZkV4aXN0cyhsYXllclN0YXRlLnJlcGxpY2EpKTsKIAogICAgIGlmIChsYXllclN0YXRlLm1hc2tD
aGFuZ2VkKQogICAgICAgICBsYXllci0+c2V0TWFza0xheWVyKGdldExheWVyQnlJRElmRXhpc3Rz
KGxheWVyU3RhdGUubWFzaykpOwpAQCAtMzUzLDggKzM1MSw4IEBAIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lOjpzZXRMYXllclN0YXRlKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgY29uc3Qg
Q29vcmRpCiAgICAgICAgIGxheWVyLT5zZXRNYXNrc1RvQm91bmRzKGlkID09IG1fcm9vdExheWVy
SUQgPyBmYWxzZSA6IGxheWVyU3RhdGUubWFza3NUb0JvdW5kcyk7CiAgICAgICAgIGxheWVyLT5z
ZXRQcmVzZXJ2ZXMzRChsYXllclN0YXRlLnByZXNlcnZlczNEKTsKIAotICAgICAgICBib29sIGZp
eGVkVG9WaWV3cG9ydENoYW5nZWQgPSB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGxheWVy
KS0+Zml4ZWRUb1ZpZXdwb3J0KCkgIT0gbGF5ZXJTdGF0ZS5maXhlZFRvVmlld3BvcnQ7Ci0gICAg
ICAgIHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIobGF5ZXIpLT5zZXRGaXhlZFRvVmlld3Bv
cnQobGF5ZXJTdGF0ZS5maXhlZFRvVmlld3BvcnQpOworICAgICAgICBib29sIGZpeGVkVG9WaWV3
cG9ydENoYW5nZWQgPSBsYXllci0+Zml4ZWRUb1ZpZXdwb3J0KCkgIT0gbGF5ZXJTdGF0ZS5maXhl
ZFRvVmlld3BvcnQ7CisgICAgICAgIGxheWVyLT5zZXRGaXhlZFRvVmlld3BvcnQobGF5ZXJTdGF0
ZS5maXhlZFRvVmlld3BvcnQpOwogICAgICAgICBpZiAoZml4ZWRUb1ZpZXdwb3J0Q2hhbmdlZCkg
ewogICAgICAgICAgICAgaWYgKGxheWVyU3RhdGUuZml4ZWRUb1ZpZXdwb3J0KQogICAgICAgICAg
ICAgICAgIG1fZml4ZWRMYXllcnMuYWRkKGlkLCBsYXllcik7CkBAIC0zNjIsMTQgKzM2MCwxMSBA
QCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0TGF5ZXJTdGF0ZShDb29yZGluYXRl
ZExheWVySUQgaWQsIGNvbnN0IENvb3JkaQogICAgICAgICAgICAgICAgIG1fZml4ZWRMYXllcnMu
cmVtb3ZlKGlkKTsKICAgICAgICAgfQogCi0gICAgICAgIGxheWVyLT5zZXRTaG93RGVidWdCb3Jk
ZXIobGF5ZXJTdGF0ZS5zaG93RGVidWdCb3JkZXJzKTsKLSAgICAgICAgbGF5ZXItPnNldFNob3dS
ZXBhaW50Q291bnRlcihsYXllclN0YXRlLnNob3dSZXBhaW50Q291bnRlcik7Ci0KLSAgICAgICAg
dG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihsYXllciktPnNldElzU2Nyb2xsYWJsZShsYXll
clN0YXRlLmlzU2Nyb2xsYWJsZSk7CisgICAgICAgIGxheWVyLT5zZXRJc1Njcm9sbGFibGUobGF5
ZXJTdGF0ZS5pc1Njcm9sbGFibGUpOwogICAgIH0KIAogICAgIGlmIChsYXllclN0YXRlLmNvbW1p
dHRlZFNjcm9sbE9mZnNldENoYW5nZWQpCi0gICAgICAgIHRvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIobGF5ZXIpLT5kaWRDb21taXRTY3JvbGxPZmZzZXQobGF5ZXJTdGF0ZS5jb21taXR0ZWRT
Y3JvbGxPZmZzZXQpOworICAgICAgICBsYXllci0+ZGlkQ29tbWl0U2Nyb2xsT2Zmc2V0KGxheWVy
U3RhdGUuY29tbWl0dGVkU2Nyb2xsT2Zmc2V0KTsKIAogICAgIHByZXBhcmVDb250ZW50QmFja2lu
Z1N0b3JlKGxheWVyKTsKIApAQCAtMzg4LDcgKzM4Myw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lOjpzZXRMYXllclN0YXRlKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgY29uc3QgQ29v
cmRpCiAgICAgc2V0TGF5ZXJSZXBhaW50Q291bnRJZk5lZWRlZChsYXllciwgbGF5ZXJTdGF0ZSk7
CiB9CiAKLUdyYXBoaWNzTGF5ZXIqIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Z2V0TGF5ZXJC
eUlESWZFeGlzdHMoQ29vcmRpbmF0ZWRMYXllcklEIGlkKQorVGV4dHVyZU1hcHBlckxheWVyKiBD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmdldExheWVyQnlJRElmRXhpc3RzKENvb3JkaW5hdGVk
TGF5ZXJJRCBpZCkKIHsKICAgICByZXR1cm4gKGlkICE9IEludmFsaWRDb29yZGluYXRlZExheWVy
SUQpID8gbGF5ZXJCeUlEKGlkKSA6IDA7CiB9CkBAIC00MDEsMTAgKzM5Niw5IEBAIHZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjcmVhdGVMYXllcnMoY29uc3QgVmVjdG9yPENvb3JkaW5h
dGVkTGF5ZXJJRD4mIGlkCiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjcmVhdGVM
YXllcihDb29yZGluYXRlZExheWVySUQgaWQpCiB7Ci0gICAgT3duUHRyPEdyYXBoaWNzTGF5ZXI+
IG5ld0xheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKDAgLyogZmFjdG9yeSAqLywgdGhpcyk7
Ci0gICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihuZXdMYXllci5nZXQoKSktPnNldEhh
c093bkJhY2tpbmdTdG9yZShmYWxzZSk7Ci0gICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cihuZXdMYXllci5nZXQoKSktPnNldElEKGlkKTsKLSAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyKG5ld0xheWVyLmdldCgpKS0+c2V0U2Nyb2xsQ2xpZW50KHRoaXMpOworICAgIE93blB0
cjxUZXh0dXJlTWFwcGVyTGF5ZXI+IG5ld0xheWVyID0gYWRvcHRQdHIobmV3IFRleHR1cmVNYXBw
ZXJMYXllcik7CisgICAgbmV3TGF5ZXItPnNldElEKGlkKTsKKyAgICBuZXdMYXllci0+c2V0U2Ny
b2xsQ2xpZW50KHRoaXMpOwogICAgIG1fbGF5ZXJzLmFkZChpZCwgbmV3TGF5ZXIucmVsZWFzZSgp
KTsKIH0KIApAQCAtNDE2LDcgKzQxMCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
OjpkZWxldGVMYXllcnMoY29uc3QgVmVjdG9yPENvb3JkaW5hdGVkTGF5ZXJJRD4mIGxhCiAKIHZv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpkZWxldGVMYXllcihDb29yZGluYXRlZExheWVy
SUQgbGF5ZXJJRCkKIHsKLSAgICBPd25QdHI8R3JhcGhpY3NMYXllcj4gbGF5ZXIgPSBtX2xheWVy
cy50YWtlKGxheWVySUQpOworICAgIE93blB0cjxUZXh0dXJlTWFwcGVyTGF5ZXI+IGxheWVyID0g
bV9sYXllcnMudGFrZShsYXllcklEKTsKICAgICBBU1NFUlQobGF5ZXIpOwogCiAgICAgbV9iYWNr
aW5nU3RvcmVzLnJlbW92ZShsYXllci5nZXQoKSk7CkBAIC00MzMsNTAgKzQyNyw1MCBAQCB2b2lk
IENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0Um9vdExheWVySUQoQ29vcmRpbmF0ZWRMYXll
cklEIGxheWVySUQpCiAKICAgICBtX3Jvb3RMYXllcklEID0gbGF5ZXJJRDsKIAotICAgIEdyYXBo
aWNzTGF5ZXIqIGxheWVyID0gbGF5ZXJCeUlEKGxheWVySUQpOworICAgIFRleHR1cmVNYXBwZXJM
YXllciogbGF5ZXIgPSBsYXllckJ5SUQobGF5ZXJJRCk7CiAgICAgQVNTRVJUKG1fcm9vdExheWVy
LT5jaGlsZHJlbigpLmlzRW1wdHkoKSk7CiAgICAgbV9yb290TGF5ZXItPmFkZENoaWxkKGxheWVy
KTsKIH0KIAotdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnByZXBhcmVDb250ZW50QmFj
a2luZ1N0b3JlKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCit2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZTo6cHJlcGFyZUNvbnRlbnRCYWNraW5nU3RvcmUoVGV4dHVyZU1hcHBlckxh
eWVyKiBsYXllcikKIHsKLSAgICBpZiAoIWxheWVyU2hvdWxkSGF2ZUJhY2tpbmdTdG9yZShncmFw
aGljc0xheWVyKSkgewotICAgICAgICByZW1vdmVCYWNraW5nU3RvcmVJZk5lZWRlZChncmFwaGlj
c0xheWVyKTsKKyAgICBpZiAoIWxheWVyU2hvdWxkSGF2ZUJhY2tpbmdTdG9yZShsYXllcikpIHsK
KyAgICAgICAgcmVtb3ZlQmFja2luZ1N0b3JlSWZOZWVkZWQobGF5ZXIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgY3JlYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoZ3JhcGhpY3NMYXll
cik7Ci0gICAgcmVzZXRCYWNraW5nU3RvcmVTaXplVG9MYXllclNpemUoZ3JhcGhpY3NMYXllcik7
CisgICAgY3JlYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQobGF5ZXIpOworICAgIHJlc2V0QmFja2lu
Z1N0b3JlU2l6ZVRvTGF5ZXJTaXplKGxheWVyKTsKIH0KIAotdm9pZCBDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmU6OmNyZWF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKEdyYXBoaWNzTGF5ZXIqIGdyYXBo
aWNzTGF5ZXIpCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRlQmFja2luZ1N0
b3JlSWZOZWVkZWQoVGV4dHVyZU1hcHBlckxheWVyKiBsYXllcikKIHsKLSAgICBpZiAobV9iYWNr
aW5nU3RvcmVzLmNvbnRhaW5zKGdyYXBoaWNzTGF5ZXIpKQorICAgIGlmIChtX2JhY2tpbmdTdG9y
ZXMuY29udGFpbnMobGF5ZXIpKQogICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8Q29vcmRp
bmF0ZWRCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZShDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6
Y3JlYXRlKCkpOwotICAgIG1fYmFja2luZ1N0b3Jlcy5hZGQoZ3JhcGhpY3NMYXllciwgYmFja2lu
Z1N0b3JlKTsKLSAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBoaWNzTGF5ZXIp
LT5zZXRCYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKTsKKyAgICBtX2JhY2tpbmdTdG9yZXMuYWRk
KGxheWVyLCBiYWNraW5nU3RvcmUpOworICAgIGxheWVyLT5zZXRCYWNraW5nU3RvcmUoYmFja2lu
Z1N0b3JlKTsKIH0KIAotdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnJlbW92ZUJhY2tp
bmdTdG9yZUlmTmVlZGVkKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCit2b2lkIENvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZTo6cmVtb3ZlQmFja2luZ1N0b3JlSWZOZWVkZWQoVGV4dHVyZU1h
cHBlckxheWVyKiBsYXllcikKIHsKLSAgICBSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+
IGJhY2tpbmdTdG9yZSA9IG1fYmFja2luZ1N0b3Jlcy50YWtlKGdyYXBoaWNzTGF5ZXIpOworICAg
IFJlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlID0gbV9iYWNraW5n
U3RvcmVzLnRha2UobGF5ZXIpOwogICAgIGlmICghYmFja2luZ1N0b3JlKQogICAgICAgICByZXR1
cm47CiAKLSAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGdyYXBoaWNzTGF5ZXIpLT5z
ZXRCYWNraW5nU3RvcmUoMCk7CisgICAgbGF5ZXItPnNldEJhY2tpbmdTdG9yZSgwKTsKIH0KIAot
dm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnJlc2V0QmFja2luZ1N0b3JlU2l6ZVRvTGF5
ZXJTaXplKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCit2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6cmVzZXRCYWNraW5nU3RvcmVTaXplVG9MYXllclNpemUoVGV4dHVyZU1hcHBl
ckxheWVyKiBsYXllcikKIHsKLSAgICBSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+IGJh
Y2tpbmdTdG9yZSA9IG1fYmFja2luZ1N0b3Jlcy5nZXQoZ3JhcGhpY3NMYXllcik7CisgICAgUmVm
UHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUgPSBtX2JhY2tpbmdTdG9y
ZXMuZ2V0KGxheWVyKTsKICAgICBBU1NFUlQoYmFja2luZ1N0b3JlKTsKLSAgICBiYWNraW5nU3Rv
cmUtPnNldFNpemUoZ3JhcGhpY3NMYXllci0+c2l6ZSgpKTsKKyAgICBiYWNraW5nU3RvcmUtPnNl
dFNpemUobGF5ZXItPnNpemUoKSk7CiAgICAgbV9iYWNraW5nU3RvcmVzV2l0aFBlbmRpbmdCdWZm
ZXJzLmFkZChiYWNraW5nU3RvcmUpOwogfQogCi12b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZTo6Y3JlYXRlVGlsZXNJZk5lZWRlZChHcmFwaGljc0xheWVyKiBsYXllciwgY29uc3QgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmIHN0YXRlKQordm9pZCBDb29yZGluYXRlZEdyYXBoaWNz
U2NlbmU6OmNyZWF0ZVRpbGVzSWZOZWVkZWQoVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciwgY29u
c3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmIHN0YXRlKQogewogICAgIGlmIChzdGF0
ZS50aWxlc1RvQ3JlYXRlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDg4LDcgKzQ4
Miw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjcmVhdGVUaWxlc0lmTmVlZGVk
KEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBjb25zdCBDCiAgICAgICAgIGJhY2tpbmdTdG9yZS0+Y3Jl
YXRlVGlsZShzdGF0ZS50aWxlc1RvQ3JlYXRlW2ldLnRpbGVJRCwgc3RhdGUudGlsZXNUb0NyZWF0
ZVtpXS5zY2FsZSk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpyZW1vdmVU
aWxlc0lmTmVlZGVkKEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBjb25zdCBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXJTdGF0ZSYgc3RhdGUpCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cmVt
b3ZlVGlsZXNJZk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyLCBjb25zdCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYgc3RhdGUpCiB7CiAgICAgaWYgKHN0YXRlLnRpbGVzVG9S
ZW1vdmUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC01MDMsNyArNDk3LDcgQEAgdm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnJlbW92ZVRpbGVzSWZOZWVkZWQoR3JhcGhpY3NM
YXllciogbGF5ZXIsIGNvbnN0IEMKICAgICBtX2JhY2tpbmdTdG9yZXNXaXRoUGVuZGluZ0J1ZmZl
cnMuYWRkKGJhY2tpbmdTdG9yZSk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
Ojp1cGRhdGVUaWxlc0lmTmVlZGVkKEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBjb25zdCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYgc3RhdGUpCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZTo6dXBkYXRlVGlsZXNJZk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyLCBjb25z
dCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYgc3RhdGUpCiB7CiAgICAgaWYgKHN0YXRl
LnRpbGVzVG9VcGRhdGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC01NzYsNyArNTcw
LDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnJlbW92ZUltYWdlQmFja2luZyhD
b29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWcKICAgICBtX3JlbGVhc2VkSW1hZ2VCYWNraW5n
cy5hcHBlbmQobV9pbWFnZUJhY2tpbmdzLnRha2UoaW1hZ2VJRCkpOwogfQogCi12b2lkIENvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZTo6YXNzaWduSW1hZ2VCYWNraW5nVG9MYXllcihHcmFwaGljc0xh
eWVyKiBsYXllciwgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlEKQordm9pZCBDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmU6OmFzc2lnbkltYWdlQmFja2luZ1RvTGF5ZXIoVGV4dHVyZU1h
cHBlckxheWVyKiBsYXllciwgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlEKQogewog
I2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgIGlmIChtX3N1cmZhY2VCYWNraW5nU3RvcmVz
LmNvbnRhaW5zKGxheWVyKSkKQEAgLTU4NCwxMiArNTc4LDEyIEBAIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lOjphc3NpZ25JbWFnZUJhY2tpbmdUb0xheWVyKEdyYXBoaWNzTGF5ZXIqIGxh
eWVyLCBDCiAjZW5kaWYKIAogICAgIGlmIChpbWFnZUlEID09IEludmFsaWRDb29yZGluYXRlZElt
YWdlQmFja2luZ0lEKSB7Ci0gICAgICAgIGxheWVyLT5zZXRDb250ZW50c1RvTWVkaWEoMCk7Cisg
ICAgICAgIGxheWVyLT5zZXRCYWNraW5nU3RvcmUoMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgSW1hZ2VCYWNraW5nTWFwOjppdGVyYXRvciBpdCA9IG1faW1hZ2VCYWNraW5ncy5maW5k
KGltYWdlSUQpOwogICAgIEFTU0VSVChpdCAhPSBtX2ltYWdlQmFja2luZ3MuZW5kKCkpOwotICAg
IGxheWVyLT5zZXRDb250ZW50c1RvTWVkaWEoaXQtPnZhbHVlLmdldCgpKTsKKyAgICBsYXllci0+
c2V0QmFja2luZ1N0b3JlKGl0LT52YWx1ZS5nZXQoKSk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lOjpyZW1vdmVSZWxlYXNlZEltYWdlQmFja2luZ3NJZk5lZWRlZCgpCkBAIC02
MjUsNyArNjE5LDYgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNvbW1pdFNjZW5l
U3RhdGUoY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJgogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc3RhdGUubGF5ZXJzVG9VcGRhdGUuc2l6ZSgpOyArK2kpCiAgICAgICAgIHNldExh
eWVyU3RhdGUoc3RhdGUubGF5ZXJzVG9VcGRhdGVbaV0uZmlyc3QsIHN0YXRlLmxheWVyc1RvVXBk
YXRlW2ldLnNlY29uZCk7CiAKLSAgICBtX3Jvb3RMYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRl
KEZsb2F0UmVjdCgpKTsKICAgICBjb21taXRQZW5kaW5nQmFja2luZ1N0b3JlT3BlcmF0aW9ucygp
OwogICAgIHJlbW92ZVJlbGVhc2VkSW1hZ2VCYWNraW5nc0lmTmVlZGVkKCk7CiAKQEAgLTY0NCw3
ICs2MzcsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6ZW5zdXJlUm9vdExheWVy
KCkKICAgICBpZiAobV9yb290TGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcm9vdExh
eWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKDAgLyogZmFjdG9yeSAqLywgdGhpcyk7CisgICAg
bV9yb290TGF5ZXIgPSBhZG9wdFB0cihuZXcgVGV4dHVyZU1hcHBlckxheWVyKTsKICAgICBtX3Jv
b3RMYXllci0+c2V0TWFza3NUb0JvdW5kcyhmYWxzZSk7CiAgICAgbV9yb290TGF5ZXItPnNldERy
YXdzQ29udGVudChmYWxzZSk7CiAgICAgbV9yb290TGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0
UG9pbnQzRCgwLCAwLCAwKSk7CkBAIC02NTMsNyArNjQ2LDcgQEAgdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmU6OmVuc3VyZVJvb3RMYXllcigpCiAgICAgbV9yb290TGF5ZXItPnNldFNpemUo
RmxvYXRTaXplKDEuMCwgMS4wKSk7CiAKICAgICBBU1NFUlQobV90ZXh0dXJlTWFwcGVyKTsKLSAg
ICB0b1RleHR1cmVNYXBwZXJMYXllcihtX3Jvb3RMYXllci5nZXQoKSktPnNldFRleHR1cmVNYXBw
ZXIobV90ZXh0dXJlTWFwcGVyLmdldCgpKTsKKyAgICBtX3Jvb3RMYXllci0+c2V0VGV4dHVyZU1h
cHBlcihtX3RleHR1cmVNYXBwZXIuZ2V0KCkpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZTo6c3luY1JlbW90ZUNvbnRlbnQoKQpAQCAtNzEwLDEzICs3MDMsMTEgQEAgdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnB1cmdlQmFja2luZ1N0b3JlcygpCiAgICAgICAgIG1f
Y2xpZW50LT5wdXJnZUJhY2tpbmdTdG9yZXMoKTsKIH0KIAotdm9pZCBDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmU6OnNldExheWVyQW5pbWF0aW9uc0lmTmVlZGVkKEdyYXBoaWNzTGF5ZXIqIGdyYXBo
aWNzTGF5ZXIsIGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJiBzdGF0ZSkKK3Zv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzZXRMYXllckFuaW1hdGlvbnNJZk5lZWRlZChU
ZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyLCBjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJT
dGF0ZSYgc3RhdGUpCiB7CiAgICAgaWYgKCFzdGF0ZS5hbmltYXRpb25zQ2hhbmdlZCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIqIGxheWVyID0gdG9H
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihncmFwaGljc0xheWVyKTsKLQogI2lmIEVOQUJMRShD
U1NfU0hBREVSUykKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YXRlLmFuaW1hdGlvbnMu
YW5pbWF0aW9ucygpLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGNvbnN0IEtleWZyYW1lVmFsdWVM
aXN0JiBrZXlmcmFtZXMgPSBzdGF0ZS5hbmltYXRpb25zLmFuaW1hdGlvbnMoKS5hdChpKS5rZXlm
cmFtZXMoKTsKQEAgLTc3NCw3ICs3NjUsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZTo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIAogVGV4dHVyZU1hcHBl
ckxheWVyKiBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmZpbmRTY3JvbGxhYmxlQ29udGVudHNM
YXllckF0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQogewotICAgIHJldHVybiByb290TGF5ZXIo
KSA/IHRvVGV4dHVyZU1hcHBlckxheWVyKHJvb3RMYXllcigpKS0+ZmluZFNjcm9sbGFibGVDb250
ZW50c0xheWVyQXQocG9pbnQpIDogMDsKKyAgICByZXR1cm4gcm9vdExheWVyKCkgPyByb290TGF5
ZXIoKS0+ZmluZFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQocG9pbnQpIDogMDsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZS5oCmluZGV4IDY4ZmM2MTlmMTQ4MWE4ZTNlOTRhY2U4ZDM0ODA1
OGRkNTI4NGM0OGIuLmUyMmI2ZmUxZDlmNTc1ZDAzZWYwZDk5ZjI4YWM4Y2VmYzdiMzk3YmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
LmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb21taXRTY3Jv
bGxPZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgSW50U2l6ZSYgb2Zmc2V0KSA9IDA7CiB9
OwogCi1jbGFzcyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lPiwgcHVibGljIEdyYXBoaWNzTGF5ZXJD
bGllbnQsIHB1YmxpYyBUZXh0dXJlTWFwcGVyTGF5ZXI6OlNjcm9sbGluZ0NsaWVudCB7CitjbGFz
cyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lPiwgcHVibGljIFRleHR1cmVNYXBwZXJMYXllcjo6U2Ny
b2xsaW5nQ2xpZW50IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBDb29yZGluYXRlZEdyYXBoaWNz
U2NlbmUoQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+Q29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lKCk7CkBAIC0xMDksMzggKzEwOSwzMyBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIHZvaWQgc2V0Um9vdExheWVySUQoQ29vcmRpbmF0ZWRMYXllcklEKTsKICAg
ICB2b2lkIHNldExheWVyU3RhdGUoQ29vcmRpbmF0ZWRMYXllcklELCBjb25zdCBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwotICAgIHZvaWQgc2V0TGF5ZXJDaGlsZHJlbklmTmVlZGVk
KEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwot
ICAgIHZvaWQgdXBkYXRlVGlsZXNJZk5lZWRlZChHcmFwaGljc0xheWVyKiwgY29uc3QgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKLSAgICB2b2lkIGNyZWF0ZVRpbGVzSWZOZWVkZWQo
R3JhcGhpY3NMYXllciosIGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJik7Ci0g
ICAgdm9pZCByZW1vdmVUaWxlc0lmTmVlZGVkKEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOworICAgIHZvaWQgc2V0TGF5ZXJDaGlsZHJlbklmTmVl
ZGVkKFRleHR1cmVNYXBwZXJMYXllciosIGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0
YXRlJik7CisgICAgdm9pZCB1cGRhdGVUaWxlc0lmTmVlZGVkKFRleHR1cmVNYXBwZXJMYXllcios
IGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJik7CisgICAgdm9pZCBjcmVhdGVU
aWxlc0lmTmVlZGVkKFRleHR1cmVNYXBwZXJMYXllciosIGNvbnN0IENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllclN0YXRlJik7CisgICAgdm9pZCByZW1vdmVUaWxlc0lmTmVlZGVkKFRleHR1cmVNYXBw
ZXJMYXllciosIGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJik7CiAjaWYgRU5B
QkxFKENTU19GSUxURVJTKQotICAgIHZvaWQgc2V0TGF5ZXJGaWx0ZXJzSWZOZWVkZWQoR3JhcGhp
Y3NMYXllciosIGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJik7CisgICAgdm9p
ZCBzZXRMYXllckZpbHRlcnNJZk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIqLCBjb25zdCBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwogI2VuZGlmCi0gICAgdm9pZCBzZXRMYXllckFu
aW1hdGlvbnNJZk5lZWRlZChHcmFwaGljc0xheWVyKiwgY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyU3RhdGUmKTsKKyAgICB2b2lkIHNldExheWVyQW5pbWF0aW9uc0lmTmVlZGVkKFRleHR1
cmVNYXBwZXJMYXllciosIGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJik7CiAj
aWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgdm9pZCBjcmVhdGVDYW52YXNJZk5lZWRlZChH
cmFwaGljc0xheWVyKiwgY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKLSAg
ICB2b2lkIHN5bmNDYW52YXNJZk5lZWRlZChHcmFwaGljc0xheWVyKiwgY29uc3QgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKLSAgICB2b2lkIGRlc3Ryb3lDYW52YXNJZk5lZWRlZChH
cmFwaGljc0xheWVyKiwgY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKKyAg
ICB2b2lkIGNyZWF0ZUNhbnZhc0lmTmVlZGVkKFRleHR1cmVNYXBwZXJMYXllciosIGNvbnN0IENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJik7CisgICAgdm9pZCBzeW5jQ2FudmFzSWZOZWVk
ZWQoVGV4dHVyZU1hcHBlckxheWVyKiwgY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3Rh
dGUmKTsKKyAgICB2b2lkIGRlc3Ryb3lDYW52YXNJZk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIq
LCBjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwogI2VuZGlmCi0gICAgdm9p
ZCBzZXRMYXllclJlcGFpbnRDb3VudElmTmVlZGVkKEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOworICAgIHZvaWQgc2V0TGF5ZXJSZXBhaW50Q291
bnRJZk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIqLCBjb25zdCBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXJTdGF0ZSYpOwogCi0gICAgR3JhcGhpY3NMYXllciogbGF5ZXJCeUlEKENvb3JkaW5hdGVk
TGF5ZXJJRCBpZCkKKyAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyQnlJRChDb29yZGluYXRl
ZExheWVySUQgaWQpCiAgICAgewogICAgICAgICBBU1NFUlQobV9sYXllcnMuY29udGFpbnMoaWQp
KTsKICAgICAgICAgQVNTRVJUKGlkICE9IEludmFsaWRDb29yZGluYXRlZExheWVySUQpOwogICAg
ICAgICByZXR1cm4gbV9sYXllcnMuZ2V0KGlkKTsKICAgICB9Ci0gICAgR3JhcGhpY3NMYXllciog
Z2V0TGF5ZXJCeUlESWZFeGlzdHMoQ29vcmRpbmF0ZWRMYXllcklEKTsKLSAgICBHcmFwaGljc0xh
eWVyKiByb290TGF5ZXIoKSB7IHJldHVybiBtX3Jvb3RMYXllci5nZXQoKTsgfQorICAgIFRleHR1
cmVNYXBwZXJMYXllciogZ2V0TGF5ZXJCeUlESWZFeGlzdHMoQ29vcmRpbmF0ZWRMYXllcklEKTsK
KyAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIHJvb3RMYXllcigpIHsgcmV0dXJuIG1fcm9vdExheWVy
LmdldCgpOyB9CiAKICAgICB2b2lkIHN5bmNSZW1vdGVDb250ZW50KCk7CiAgICAgdm9pZCBhZGp1
c3RQb3NpdGlvbkZvckZpeGVkTGF5ZXJzKCk7CiAKLSAgICAvLyBSZWltcGxlbWVudGF0aW9ucyBm
cm9tIEdyYXBoaWNzTGF5ZXJDbGllbnQuCi0gICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlv
blN0YXJ0ZWQoY29uc3QgR3JhcGhpY3NMYXllciosIGRvdWJsZSkgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIG5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0Nv
bnRleHQmLCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgSW50UmVjdCYpIE9WRVJS
SURFIHsgfQotCiAgICAgdm9pZCBkaXNwYXRjaE9uTWFpblRocmVhZChjb25zdCBGdW5jdGlvbjx2
b2lkKCk+Jik7CiAgICAgdm9pZCB1cGRhdGVWaWV3cG9ydCgpOwogI2lmIEVOQUJMRShSRVFVRVNU
X0FOSU1BVElPTl9GUkFNRSkKQEAgLTE1MiwxNSArMTQ3LDE1IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjcmVhdGVMYXllcihDb29yZGluYXRlZExheWVySUQpOwogICAgIHZvaWQgZGVsZXRlTGF5ZXIo
Q29vcmRpbmF0ZWRMYXllcklEKTsKIAotICAgIHZvaWQgYXNzaWduSW1hZ2VCYWNraW5nVG9MYXll
cihHcmFwaGljc0xheWVyKiwgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7CisgICAgdm9pZCBh
c3NpZ25JbWFnZUJhY2tpbmdUb0xheWVyKFRleHR1cmVNYXBwZXJMYXllciosIENvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nSUQpOwogICAgIHZvaWQgcmVtb3ZlUmVsZWFzZWRJbWFnZUJhY2tpbmdzSWZO
ZWVkZWQoKTsKICAgICB2b2lkIGVuc3VyZVJvb3RMYXllcigpOwogICAgIHZvaWQgY29tbWl0UGVu
ZGluZ0JhY2tpbmdTdG9yZU9wZXJhdGlvbnMoKTsKIAotICAgIHZvaWQgcHJlcGFyZUNvbnRlbnRC
YWNraW5nU3RvcmUoR3JhcGhpY3NMYXllciopOwotICAgIHZvaWQgY3JlYXRlQmFja2luZ1N0b3Jl
SWZOZWVkZWQoR3JhcGhpY3NMYXllciopOwotICAgIHZvaWQgcmVtb3ZlQmFja2luZ1N0b3JlSWZO
ZWVkZWQoR3JhcGhpY3NMYXllciopOwotICAgIHZvaWQgcmVzZXRCYWNraW5nU3RvcmVTaXplVG9M
YXllclNpemUoR3JhcGhpY3NMYXllciopOworICAgIHZvaWQgcHJlcGFyZUNvbnRlbnRCYWNraW5n
U3RvcmUoVGV4dHVyZU1hcHBlckxheWVyKik7CisgICAgdm9pZCBjcmVhdGVCYWNraW5nU3RvcmVJ
Zk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIqKTsKKyAgICB2b2lkIHJlbW92ZUJhY2tpbmdTdG9y
ZUlmTmVlZGVkKFRleHR1cmVNYXBwZXJMYXllciopOworICAgIHZvaWQgcmVzZXRCYWNraW5nU3Rv
cmVTaXplVG9MYXllclNpemUoVGV4dHVyZU1hcHBlckxheWVyKik7CiAKICAgICB2b2lkIGRpc3Bh
dGNoQ29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IEludFNpemUmIG9m
ZnNldCk7CiAKQEAgLTE3NCwxMyArMTY5LDEzIEBAIHByaXZhdGU6CiAgICAgSW1hZ2VCYWNraW5n
TWFwIG1faW1hZ2VCYWNraW5nczsKICAgICBWZWN0b3I8UmVmUHRyPENvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlPiA+IG1fcmVsZWFzZWRJbWFnZUJhY2tpbmdzOwogCi0gICAgdHlwZWRlZiBIYXNoTWFw
PEdyYXBoaWNzTGF5ZXIqLCBSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+ID4gQmFja2lu
Z1N0b3JlTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxUZXh0dXJlTWFwcGVyTGF5ZXIqLCBSZWZQ
dHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+ID4gQmFja2luZ1N0b3JlTWFwOwogICAgIEJhY2tp
bmdTdG9yZU1hcCBtX2JhY2tpbmdTdG9yZXM7CiAKICAgICBIYXNoU2V0PFJlZlB0cjxDb29yZGlu
YXRlZEJhY2tpbmdTdG9yZT4gPiBtX2JhY2tpbmdTdG9yZXNXaXRoUGVuZGluZ0J1ZmZlcnM7CiAK
ICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSAgICB0eXBlZGVmIEhhc2hNYXA8R3JhcGhpY3NM
YXllciosIFJlZlB0cjxUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZT4gPiBTdXJmYWNl
QmFja2luZ1N0b3JlTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxUZXh0dXJlTWFwcGVyTGF5ZXIq
LCBSZWZQdHI8VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU+ID4gU3VyZmFjZUJhY2tp
bmdTdG9yZU1hcDsKICAgICBTdXJmYWNlQmFja2luZ1N0b3JlTWFwIG1fc3VyZmFjZUJhY2tpbmdT
dG9yZXM7CiAjZW5kaWYKIApAQCAtMTkxLDExICsxODYsMTEgQEAgcHJpdmF0ZToKICAgICBDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmVDbGllbnQqIG1fY2xpZW50OwogICAgIGJvb2wgbV9pc0FjdGl2
ZTsKIAotICAgIE93blB0cjxHcmFwaGljc0xheWVyPiBtX3Jvb3RMYXllcjsKKyAgICBPd25QdHI8
VGV4dHVyZU1hcHBlckxheWVyPiBtX3Jvb3RMYXllcjsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxD
b29yZGluYXRlZExheWVySUQsIE93blB0cjxHcmFwaGljc0xheWVyPiA+IExheWVyTWFwOworICAg
IHR5cGVkZWYgSGFzaE1hcDxDb29yZGluYXRlZExheWVySUQsIE93blB0cjxUZXh0dXJlTWFwcGVy
TGF5ZXI+ID4gTGF5ZXJNYXA7CiAgICAgTGF5ZXJNYXAgbV9sYXllcnM7Ci0gICAgdHlwZWRlZiBI
YXNoTWFwPENvb3JkaW5hdGVkTGF5ZXJJRCwgR3JhcGhpY3NMYXllcio+IExheWVyUmF3UHRyTWFw
OworICAgIHR5cGVkZWYgSGFzaE1hcDxDb29yZGluYXRlZExheWVySUQsIFRleHR1cmVNYXBwZXJM
YXllcio+IExheWVyUmF3UHRyTWFwOwogICAgIExheWVyUmF3UHRyTWFwIG1fZml4ZWRMYXllcnM7
CiAgICAgQ29vcmRpbmF0ZWRMYXllcklEIG1fcm9vdExheWVySUQ7CiAgICAgRmxvYXRQb2ludCBt
X3Njcm9sbFBvc2l0aW9uOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198128</attachid>
            <date>2013-04-15 08:15:36 -0700</date>
            <delta_ts>2013-04-15 08:20:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108295-20130415081515.patch</filename>
            <type>text/plain</type>
            <size>1458</size>
            <attacher name="Early Warning System Bot">webkit-ews</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4NDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTQ2NGRjMmZhODY2YTgz
YWQ3MGE3MmEwZDMzNTFmYjRmYzhkZjgzOS4uNmNkNjYyZWNjY2RlOTRmNzkwZjE5ZTFiN2VhOGE5
NzdmOTQ5ZmYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTA0LTE1ICBDc2Fi
YSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CisKKyAgICAgICAgRGVidWcgYnVpbGRm
aXggYWZ0ZXIgcjE0ODQzMy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwODI5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5o
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpjaGlsZHJlbik6IEFkZGVk
LgorCiAyMDEzLTA0LTE1ICBOb2FtIFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBDb29yZGluYXRlZCBHcmFwaGljczogUmVtb3ZlIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyIGRlcGVuZGVuY3kgZnJvbSBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckxheWVyLmgKaW5kZXggYWYzNDEzZThlZjM5NzdjMTI2OTA5MDhmMTZiY2RjYjM2MDBlNjJi
ZS4uY2ExMDQ3NGRlOGVkNjVjYjM3YTIxM2I3MmQwNmNhZjIyNGZiNmM4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXll
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyTGF5ZXIuaApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJRCh1
aW50MzJfdCBpZCkgeyBtX2lkID0gaWQ7IH0KICAgICB1aW50MzJfdCBpZCgpIHsgcmV0dXJuIG1f
aWQ7IH0KIAorICAgIGNvbnN0IFZlY3RvcjxUZXh0dXJlTWFwcGVyTGF5ZXIqPiYgY2hpbGRyZW4o
KSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuOyB9CiAgICAgVGV4dHVyZU1hcHBlckxheWVyKiBm
aW5kU2Nyb2xsYWJsZUNvbnRlbnRzTGF5ZXJBdChjb25zdCBGbG9hdFBvaW50JiBwb3MpOwogCiAg
ICAgdm9pZCBzZXRTY3JvbGxDbGllbnQoU2Nyb2xsaW5nQ2xpZW50KiBzY3JvbGxDbGllbnQpIHsg
bV9zY3JvbGxDbGllbnQgPSBzY3JvbGxDbGllbnQ7IH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>