<?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>129074</bug_id>
          
          <creation_ts>2014-02-19 16:38:38 -0800</creation_ts>
          <short_desc>[UI-Side Compositing] 6% of main thread time spent copying LayerProperties when adding to hash table</short_desc>
          <delta_ts>2014-02-21 00:46:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>barraclough</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>982602</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-02-19 16:38:38 -0800</bug_when>
    <thetext>[UI-Side Compositing] 6% of main thread time spent copying LayerProperties when adding to hash table</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982603</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-02-19 16:39:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/15741031&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982604</commentid>
    <comment_count>2</comment_count>
      <attachid>224691</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-02-19 16:41:41 -0800</bug_when>
    <thetext>Created attachment 224691
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982609</commentid>
    <comment_count>3</comment_count>
      <attachid>224691</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-02-19 16:49:05 -0800</bug_when>
    <thetext>Comment on attachment 224691
Patch

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

&gt; Source/WebKit2/Shared/mac/RemoteLayerTreeTransaction.mm:214
&gt;      if (changedProperties &amp; BackingStoreChanged) {
&gt; -        encoder &lt;&lt; backingStore.hasFrontBuffer();
&gt; -        if (backingStore.hasFrontBuffer())
&gt; -            encoder &lt;&lt; backingStore;
&gt; +        encoder &lt;&lt; backingStore-&gt;hasFrontBuffer();
&gt; +        if (backingStore-&gt;hasFrontBuffer())
&gt; +            encoder &lt;&lt; *backingStore;
&gt;      }

What if BackingStoreChanged because it went away?? I guess we&apos;ll still have one, it&apos;ll just be one that doesn&apos;t paint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982625</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-02-19 17:58:45 -0800</bug_when>
    <thetext>https://trac.webkit.org/r164405</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983131</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-02-21 00:05:44 -0800</bug_when>
    <thetext>Looks like this was ~1.5% performance improvement on DoYouEvenBench:
https://perf.webkit.org/#mode=charts&amp;chartList=%5B%5B%22mac-mavericks%22%2C%22DoYouEvenBench%2FFull%3ATime%3ATotal%22%5D%5D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983132</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-02-21 00:07:33 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Looks like this was ~1.5% performance improvement on DoYouEvenBench:
&gt; https://perf.webkit.org/#mode=charts&amp;chartList=%5B%5B%22mac-mavericks%22%2C%22DoYouEvenBench%2FFull%3ATime%3ATotal%22%5D%5D

That would be a bit concerning, as this code isn&apos;t used at all on Mac at the moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983143</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-02-21 00:46:37 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Looks like this was ~1.5% performance improvement on DoYouEvenBench:
&gt; &gt; https://perf.webkit.org/#mode=charts&amp;chartList=%5B%5B%22mac-mavericks%22%2C%22DoYouEvenBench%2FFull%3ATime%3ATotal%22%5D%5D
&gt; 
&gt; That would be a bit concerning, as this code isn&apos;t used at all on Mac at the moment.

Okay. It&apos;s probably http://trac.webkit.org/changeset/164401 then.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224691</attachid>
            <date>2014-02-19 16:41:41 -0800</date>
            <delta_ts>2014-02-19 16:49:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129074-20140219164138.patch</filename>
            <type>text/plain</type>
            <size>30846</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0MzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzY1MmYxMTRjN2JiZWI5
ZGIxNjI2NDI4M2Q2OTlmNmFlODE0MzU0NC4uZTQyNThkODAxYmY0ZDhlYWMyMDg3YmQxMjA1MmU0
Y2NlZDQ2OGI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE0LTAyLTE5ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtVSS1TaWRlIENv
bXBvc2l0aW5nXSA2JSBvZiBtYWluIHRocmVhZCB0aW1lIHNwZW50IGNvcHlpbmcgTGF5ZXJQcm9w
ZXJ0aWVzIHdoZW4gYWRkaW5nIHRvIGhhc2ggdGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTA3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgTWFrZSBSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzIHNtYWxsZXIgYW5kIG5vdCBjb3BpZWQgYnkKKyAgICAg
ICAgdmFsdWUgZXZlcnl3aGVyZS4KKyAgICAgICAgCisgICAgICAgIFB1dCBzb21lIGJpZyBtZW1i
ZXJzIGludG8gdW5pcXVlX3B0cnMsIGFuZCBzdG9yZSB1bmlxdWVfcHRycworICAgICAgICBpbiB0
aGUgaGFzaCBvZiBsYXllcklEIHRvIHByb3BlcnRpZXMuCisgICAgICAgIAorICAgICAgICBDbGVh
biB1cCBtZW1iZXIgdmFyaWFibGUgb3JkZXIgb2YgTGF5ZXJQcm9wZXJ0aWVzIHRvIGltcHJvdmUg
cGFja2luZy4KKyAgICAgICAgCisgICAgICAgIEFsc28gaGF2ZSBhcHBseVByb3BlcnRpZXNUb0xh
eWVyKCkgdGFrZSByZWZlcmVuY2VzIHRvIHRoaW5ncyB0byBhdm9pZAorICAgICAgICBjb3BpZXMu
CisgICAgICAgIAorICAgICAgICAqIFNoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlB
cHBsaWVyLmg6CisgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFw
cGxpZXIubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGll
cjo6YXBwbHlQcm9wZXJ0aWVzVG9MYXllcik6CisgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbjo6Y2hhbmdlZExheWVycyk6CisgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6TGF5ZXJQcm9wZXJ0aWVzKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZW5j
b2RlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVy
UHJvcGVydGllczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb246OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbjo6bGF5ZXJQcm9wZXJ0aWVzQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OmR1bXBDaGFu
Z2VkTGF5ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZUhvc3Qu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZUhvc3QubW06CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVyVHJlZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUhvc3Q6OmNyZWF0ZUxheWVyKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHA6CisgICAg
ICAgIChQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZSk6CisgICAgICAgIChQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGU6OlBsYXRmb3JtQ0FMYXllclJlbW90ZSk6CisgICAgICAgIChQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGU6OmNsb25lKToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6cmVj
dXJzaXZlQnVpbGRUcmFuc2FjdGlvbik6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6
OmVuc3VyZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNl
dE5lZWRzRGlzcGxheSk6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnRyYW5zZm9y
bSk6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldFRyYW5zZm9ybSk6CisgICAg
ICAgIChQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnN1YmxheWVyVHJhbnNmb3JtKToKKyAgICAgICAg
KFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0pOgorICAgICAgICAo
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRGaWx0ZXJzKToKKyAgICAgICAgKFBsYXRmb3JtQ0FM
YXllclJlbW90ZTo6ZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oOgorCiAyMDE0LTAyLTE5ICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgRmVhdHVyZURl
ZmluZXMgZm9yIGltYWdlIGNvbnRyb2xzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaAppbmRleCAxMzMzODc3
YTZkMTUzM2Y0OWI1NzEyN2U5ZjVlNGI5YjNhZGM4OWNmLi5lMGI2YjY4ZjRkOTQ3NWQwM2EwYjc4
ZjY3YTY4NjI4NDY3MDYxNTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFj
L1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmgKQEAgLTM0LDcgKzM0LDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxp
ZXIgewogcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpHcmFwaGljc0xheWVy
OjpQbGF0Zm9ybUxheWVySUQsIENBTGF5ZXIgKj4gUmVsYXRlZExheWVyTWFwOwotICAgIHN0YXRp
YyB2b2lkIGFwcGx5UHJvcGVydGllc1RvTGF5ZXIoQ0FMYXllciAqLCBSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzLCBSZWxhdGVkTGF5ZXJNYXApOworICAgIHN0YXRp
YyB2b2lkIGFwcGx5UHJvcGVydGllc1RvTGF5ZXIoQ0FMYXllciAqLCBjb25zdCBSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzJiwgY29uc3QgUmVsYXRlZExheWVyTWFw
Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW0KaW5k
ZXggM2VjMzgzNzY3MGM1NmM1YWQ4NmM3N2U5YjBmMjY3MmRkZTM1MDI0Ny4uYTQzNGJlNmQ4OWQ1
YTM4NjY4Y2ZhMjUzOWVlZjdiYjA4MTIzZTM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW0KKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW0KQEAg
LTc5LDcgKzc5LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlQ3VzdG9tQXBwZWFyYW5jZShDQUxheWVy
ICpsYXllciwgR3JhcGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW4KICNlbmRpZgogfQogCi12b2lk
IFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllcjo6YXBwbHlQcm9wZXJ0aWVzVG9MYXllcihD
QUxheWVyICpsYXllciwgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGll
cyBwcm9wZXJ0aWVzLCBSZWxhdGVkTGF5ZXJNYXAgcmVsYXRlZExheWVycykKK3ZvaWQgUmVtb3Rl
TGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyOjphcHBseVByb3BlcnRpZXNUb0xheWVyKENBTGF5ZXIg
KmxheWVyLCBjb25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVz
JiBwcm9wZXJ0aWVzLCBjb25zdCBSZWxhdGVkTGF5ZXJNYXAmIHJlbGF0ZWRMYXllcnMpCiB7CiAg
ICAgaWYgKHByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6TmFtZUNoYW5nZWQpCiAgICAgICAgIGxheWVyLm5hbWUgPSBwcm9wZXJ0aWVzLm5h
bWU7CkBAIC0xMTcsMTAgKzExNywxMCBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBw
bGllcjo6YXBwbHlQcm9wZXJ0aWVzVG9MYXllcihDQUxheWVyICpsYXllciwgUmVtbwogICAgICAg
ICBsYXllci5vcGFjaXR5ID0gcHJvcGVydGllcy5vcGFjaXR5OwogCiAgICAgaWYgKHByb3BlcnRp
ZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6VHJhbnNm
b3JtQ2hhbmdlZCkKLSAgICAgICAgbGF5ZXIudHJhbnNmb3JtID0gcHJvcGVydGllcy50cmFuc2Zv
cm07CisgICAgICAgIGxheWVyLnRyYW5zZm9ybSA9IHByb3BlcnRpZXMudHJhbnNmb3JtID8gKENB
VHJhbnNmb3JtM0QpKnByb3BlcnRpZXMudHJhbnNmb3JtLmdldCgpIDogQ0FUcmFuc2Zvcm0zRElk
ZW50aXR5OwogCiAgICAgaWYgKHByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbjo6U3VibGF5ZXJUcmFuc2Zvcm1DaGFuZ2VkKQotICAgICAgICBs
YXllci5zdWJsYXllclRyYW5zZm9ybSA9IHByb3BlcnRpZXMuc3VibGF5ZXJUcmFuc2Zvcm07Cisg
ICAgICAgIGxheWVyLnN1YmxheWVyVHJhbnNmb3JtID0gcHJvcGVydGllcy5zdWJsYXllclRyYW5z
Zm9ybSA/IChDQVRyYW5zZm9ybTNEKSpwcm9wZXJ0aWVzLnN1YmxheWVyVHJhbnNmb3JtLmdldCgp
IDogQ0FUcmFuc2Zvcm0zRElkZW50aXR5OwogCiAgICAgaWYgKHByb3BlcnRpZXMuY2hhbmdlZFBy
b3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6SGlkZGVuQ2hhbmdlZCkKICAg
ICAgICAgbGF5ZXIuaGlkZGVuID0gcHJvcGVydGllcy5oaWRkZW47CkBAIC0xNjgsMTcgKzE2OCwx
NyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllcjo6YXBwbHlQcm9wZXJ0aWVz
VG9MYXllcihDQUxheWVyICpsYXllciwgUmVtbwogCiAgICAgaWYgKHByb3BlcnRpZXMuY2hhbmdl
ZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6QmFja2luZ1N0b3JlQ2hh
bmdlZCkgewogI2lmIFVTRShJT1NVUkZBQ0UpCi0gICAgICAgIGlmIChwcm9wZXJ0aWVzLmJhY2tp
bmdTdG9yZS5hY2NlbGVyYXRlc0RyYXdpbmcoKSkKLSAgICAgICAgICAgIGxheWVyLmNvbnRlbnRz
ID0gKGlkKXByb3BlcnRpZXMuYmFja2luZ1N0b3JlLnN1cmZhY2UoKS5nZXQoKTsKKyAgICAgICAg
aWYgKHByb3BlcnRpZXMuYmFja2luZ1N0b3JlLT5hY2NlbGVyYXRlc0RyYXdpbmcoKSkKKyAgICAg
ICAgICAgIGxheWVyLmNvbnRlbnRzID0gKGlkKXByb3BlcnRpZXMuYmFja2luZ1N0b3JlLT5zdXJm
YWNlKCkuZ2V0KCk7CiAgICAgICAgIGVsc2UKICNlbHNlCi0gICAgICAgICAgICBBU1NFUlQoIXBy
b3BlcnRpZXMuYmFja2luZ1N0b3JlLmFjY2VsZXJhdGVzRHJhd2luZygpKTsKKyAgICAgICAgICAg
IEFTU0VSVCghcHJvcGVydGllcy5iYWNraW5nU3RvcmUgfHwgIXByb3BlcnRpZXMuYmFja2luZ1N0
b3JlLT5hY2NlbGVyYXRlc0RyYXdpbmcoKSk7CiAjZW5kaWYKLSAgICAgICAgbGF5ZXIuY29udGVu
dHMgPSAoaWQpcHJvcGVydGllcy5iYWNraW5nU3RvcmUuaW1hZ2UoKS5nZXQoKTsKKyAgICAgICAg
bGF5ZXIuY29udGVudHMgPSBwcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSA/IChpZClwcm9wZXJ0aWVz
LmJhY2tpbmdTdG9yZS0+aW1hZ2UoKS5nZXQoKSA6IG5pbDsKICAgICB9CiAKICAgICBpZiAocHJv
cGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpG
aWx0ZXJzQ2hhbmdlZCkKLSAgICAgICAgUGxhdGZvcm1DQUZpbHRlcnM6OnNldEZpbHRlcnNPbkxh
eWVyKGxheWVyLCBwcm9wZXJ0aWVzLmZpbHRlcnMpOworICAgICAgICBQbGF0Zm9ybUNBRmlsdGVy
czo6c2V0RmlsdGVyc09uTGF5ZXIobGF5ZXIsIHByb3BlcnRpZXMuZmlsdGVycyA/ICpwcm9wZXJ0
aWVzLmZpbHRlcnMgOiBGaWx0ZXJPcGVyYXRpb25zKCkpOwogCiAgICAgaWYgKHByb3BlcnRpZXMu
Y2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6RWRnZUFudGlh
bGlhc2luZ01hc2tDaGFuZ2VkKQogICAgICAgICBsYXllci5lZGdlQW50aWFsaWFzaW5nTWFzayA9
IHByb3BlcnRpZXMuZWRnZUFudGlhbGlhc2luZ01hc2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKaW5kZXggNDQ1NTBl
Y2NiMzNjZjFmNzQ3YTNkZGRiN2MyOGI3ZmNkMjA2ODlkYi4uNDIzNWI2OWQ3OGJjNjFlZTBjYjNm
MWJkNzIwOWQzZGMzNWMyZjliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21h
Yy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaApAQCAtOTIsNiArOTIsNyBAQCBwdWJs
aWM6CiAKICAgICBzdHJ1Y3QgTGF5ZXJQcm9wZXJ0aWVzIHsKICAgICAgICAgTGF5ZXJQcm9wZXJ0
aWVzKCk7CisgICAgICAgIExheWVyUHJvcGVydGllcyhjb25zdCBMYXllclByb3BlcnRpZXMmIG90
aGVyKTsKIAogICAgICAgICB2b2lkIGVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYpIGNvbnN0
OwogICAgICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImLCBMYXll
clByb3BlcnRpZXMmKTsKQEAgLTEwNiwzMiArMTA3LDMyIEBAIHB1YmxpYzoKICAgICAgICAgTGF5
ZXJDaGFuZ2UgZXZlckNoYW5nZWRQcm9wZXJ0aWVzOwogCiAgICAgICAgIFN0cmluZyBuYW1lOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+IHRy
YW5zZm9ybTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9u
TWF0cml4PiBzdWJsYXllclRyYW5zZm9ybTsKICAgICAgICAgVmVjdG9yPFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4gY2hpbGRyZW47CiAgICAgICAgIFdlYkNvcmU6OkZs
b2F0UG9pbnQzRCBwb3NpdGlvbjsKLSAgICAgICAgV2ViQ29yZTo6RmxvYXRTaXplIHNpemU7Ci0g
ICAgICAgIFdlYkNvcmU6OkNvbG9yIGJhY2tncm91bmRDb2xvcjsKICAgICAgICAgV2ViQ29yZTo6
RmxvYXRQb2ludDNEIGFuY2hvclBvaW50OworICAgICAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2l6
ZTsKKyAgICAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnRlbnRzUmVjdDsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUxheWVyQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmU7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPiBmaWx0ZXJzOwor
ICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgbWFza0xheWVy
SUQ7CisgICAgICAgIGRvdWJsZSB0aW1lT2Zmc2V0OworICAgICAgICBmbG9hdCBzcGVlZDsKKyAg
ICAgICAgZmxvYXQgY29udGVudHNTY2FsZTsKICAgICAgICAgZmxvYXQgYm9yZGVyV2lkdGg7Ci0g
ICAgICAgIFdlYkNvcmU6OkNvbG9yIGJvcmRlckNvbG9yOwogICAgICAgICBmbG9hdCBvcGFjaXR5
OwotICAgICAgICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07Ci0gICAg
ICAgIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4IHN1YmxheWVyVHJhbnNmb3JtOworICAg
ICAgICBXZWJDb3JlOjpDb2xvciBiYWNrZ3JvdW5kQ29sb3I7CisgICAgICAgIFdlYkNvcmU6OkNv
bG9yIGJvcmRlckNvbG9yOworICAgICAgICB1bnNpZ25lZCBlZGdlQW50aWFsaWFzaW5nTWFzazsK
KyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZSBjdXN0b21B
cHBlYXJhbmNlOworICAgICAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkZpbHRlclR5cGUg
bWluaWZpY2F0aW9uRmlsdGVyOworICAgICAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkZp
bHRlclR5cGUgbWFnbmlmaWNhdGlvbkZpbHRlcjsKICAgICAgICAgYm9vbCBoaWRkZW47CiAgICAg
ICAgIGJvb2wgZ2VvbWV0cnlGbGlwcGVkOwogICAgICAgICBib29sIGRvdWJsZVNpZGVkOwogICAg
ICAgICBib29sIG1hc2tzVG9Cb3VuZHM7CiAgICAgICAgIGJvb2wgb3BhcXVlOwotICAgICAgICBX
ZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgbWFza0xheWVySUQ7Ci0gICAg
ICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBjb250ZW50c1JlY3Q7Ci0gICAgICAgIGZsb2F0IGNvbnRl
bnRzU2NhbGU7Ci0gICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6RmlsdGVyVHlwZSBt
aW5pZmljYXRpb25GaWx0ZXI7Ci0gICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6Rmls
dGVyVHlwZSBtYWduaWZpY2F0aW9uRmlsdGVyOwotICAgICAgICBmbG9hdCBzcGVlZDsKLSAgICAg
ICAgZG91YmxlIHRpbWVPZmZzZXQ7Ci0gICAgICAgIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIGJh
Y2tpbmdTdG9yZTsKLSAgICAgICAgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwot
ICAgICAgICB1bnNpZ25lZCBlZGdlQW50aWFsaWFzaW5nTWFzazsKLSAgICAgICAgV2ViQ29yZTo6
R3JhcGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZSBjdXN0b21BcHBlYXJhbmNlOwogICAgIH07
CiAKICAgICBleHBsaWNpdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbigpOwpAQCAtMTUxLDgg
KzE1MiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkdW1wKCkgY29uc3Q7CiAjZW5kaWYKIAorICAg
IHR5cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQs
IHN0ZDo6dW5pcXVlX3B0cjxMYXllclByb3BlcnRpZXM+PiBMYXllclByb3BlcnRpZXNNYXA7Cisg
ICAgCiAgICAgVmVjdG9yPExheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzPiBjcmVhdGVkTGF5ZXJzKCkg
Y29uc3QgeyByZXR1cm4gbV9jcmVhdGVkTGF5ZXJzOyB9Ci0gICAgSGFzaE1hcDxXZWJDb3JlOjpH
cmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQsIExheWVyUHJvcGVydGllcz4gY2hhbmdlZExh
eWVycygpIGNvbnN0IHsgcmV0dXJuIG1fY2hhbmdlZExheWVyUHJvcGVydGllczsgfQorICAgIGNv
bnN0IExheWVyUHJvcGVydGllc01hcCYgY2hhbmdlZExheWVycygpIGNvbnN0IHsgcmV0dXJuIG1f
Y2hhbmdlZExheWVyUHJvcGVydGllczsgfQorICAgIExheWVyUHJvcGVydGllc01hcCYgY2hhbmdl
ZExheWVycygpIHsgcmV0dXJuIG1fY2hhbmdlZExheWVyUHJvcGVydGllczsgfQogICAgIFZlY3Rv
cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+IGRlc3Ryb3llZExheWVy
cygpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdHJveWVkTGF5ZXJJRHM7IH0KIAogICAgIFdlYkNvcmU6
OkludFNpemUgY29udGVudHNTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c1NpemU7IH0K
QEAgLTE3NSw3ICsxNzksNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6R3Jh
cGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIG1fcm9vdExheWVySUQ7Ci0gICAgSGFzaE1hcDxX
ZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQsIExheWVyUHJvcGVydGllcz4g
bV9jaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzOworICAgIExheWVyUHJvcGVydGllc01hcCBtX2NoYW5n
ZWRMYXllclByb3BlcnRpZXM7CiAgICAgVmVjdG9yPExheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzPiBt
X2NyZWF0ZWRMYXllcnM7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRm
b3JtTGF5ZXJJRD4gbV9kZXN0cm95ZWRMYXllcklEczsKICAgICBXZWJDb3JlOjpJbnRTaXplIG1f
Y29udGVudHNTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KaW5kZXggNTEyYzQwZmUxOTQwNDQxMGZmNjMyYjlk
Y2M2ZDU1ZTYxMDBhOTcwMy4uZTY2MTIwMTAwZDczOGE5NjQ4ZTM2ZDhmZmEzNjgzMjYyMDQzODM2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uLm1tCkBAIC03MiwyOCArNzIsNjggQEAgYm9vbCBSZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmVhdGlvblByb3BlcnRpZXM6OmRlY29kZShJUEM6OkFyZ3Vt
ZW50RGUKIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OkxheWVy
UHJvcGVydGllcygpCiAgICAgOiBjaGFuZ2VkUHJvcGVydGllcyhOb0NoYW5nZSkKICAgICAsIGV2
ZXJDaGFuZ2VkUHJvcGVydGllcyhOb0NoYW5nZSkKLSAgICAsIGJhY2tncm91bmRDb2xvcihDb2xv
cjo6dHJhbnNwYXJlbnQpCiAgICAgLCBhbmNob3JQb2ludCgwLjUsIDAuNSwgMCkKKyAgICAsIGNv
bnRlbnRzUmVjdChGbG9hdFBvaW50KCksIEZsb2F0U2l6ZSgxLCAxKSkKKyAgICAsIG1hc2tMYXll
cklEKDApCisgICAgLCB0aW1lT2Zmc2V0KDApCisgICAgLCBzcGVlZCgxKQorICAgICwgY29udGVu
dHNTY2FsZSgxKQogICAgICwgYm9yZGVyV2lkdGgoMCkKLSAgICAsIGJvcmRlckNvbG9yKENvbG9y
OjpibGFjaykKICAgICAsIG9wYWNpdHkoMSkKKyAgICAsIGJhY2tncm91bmRDb2xvcihDb2xvcjo6
dHJhbnNwYXJlbnQpCisgICAgLCBib3JkZXJDb2xvcihDb2xvcjo6YmxhY2spCisgICAgLCBlZGdl
QW50aWFsaWFzaW5nTWFzayhrQ0FMYXllckxlZnRFZGdlIHwga0NBTGF5ZXJSaWdodEVkZ2UgfCBr
Q0FMYXllckJvdHRvbUVkZ2UgfCBrQ0FMYXllclRvcEVkZ2UpCisgICAgLCBjdXN0b21BcHBlYXJh
bmNlKEdyYXBoaWNzTGF5ZXI6Ok5vQ3VzdG9tQXBwZWFyYW5jZSkKKyAgICAsIG1pbmlmaWNhdGlv
bkZpbHRlcihQbGF0Zm9ybUNBTGF5ZXI6OkZpbHRlclR5cGU6OkxpbmVhcikKKyAgICAsIG1hZ25p
ZmljYXRpb25GaWx0ZXIoUGxhdGZvcm1DQUxheWVyOjpGaWx0ZXJUeXBlOjpMaW5lYXIpCiAgICAg
LCBoaWRkZW4oZmFsc2UpCiAgICAgLCBnZW9tZXRyeUZsaXBwZWQoZmFsc2UpCiAgICAgLCBkb3Vi
bGVTaWRlZCh0cnVlKQogICAgICwgbWFza3NUb0JvdW5kcyhmYWxzZSkKICAgICAsIG9wYXF1ZShm
YWxzZSkKLSAgICAsIG1hc2tMYXllcklEKDApCi0gICAgLCBjb250ZW50c1JlY3QoRmxvYXRQb2lu
dCgpLCBGbG9hdFNpemUoMSwgMSkpCi0gICAgLCBjb250ZW50c1NjYWxlKDEpCi0gICAgLCBtaW5p
ZmljYXRpb25GaWx0ZXIoUGxhdGZvcm1DQUxheWVyOjpGaWx0ZXJUeXBlOjpMaW5lYXIpCi0gICAg
LCBtYWduaWZpY2F0aW9uRmlsdGVyKFBsYXRmb3JtQ0FMYXllcjo6RmlsdGVyVHlwZTo6TGluZWFy
KQotICAgICwgc3BlZWQoMSkKLSAgICAsIHRpbWVPZmZzZXQoMCkKLSAgICAsIGVkZ2VBbnRpYWxp
YXNpbmdNYXNrKGtDQUxheWVyTGVmdEVkZ2UgfCBrQ0FMYXllclJpZ2h0RWRnZSB8IGtDQUxheWVy
Qm90dG9tRWRnZSB8IGtDQUxheWVyVG9wRWRnZSkKLSAgICAsIGN1c3RvbUFwcGVhcmFuY2UoR3Jh
cGhpY3NMYXllcjo6Tm9DdXN0b21BcHBlYXJhbmNlKQogewogfQogCitSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpMYXllclByb3BlcnRpZXMoY29uc3QgTGF5ZXJQ
cm9wZXJ0aWVzJiBvdGhlcikKKyAgICA6IGNoYW5nZWRQcm9wZXJ0aWVzKG90aGVyLmNoYW5nZWRQ
cm9wZXJ0aWVzKQorICAgICwgZXZlckNoYW5nZWRQcm9wZXJ0aWVzKG90aGVyLmV2ZXJDaGFuZ2Vk
UHJvcGVydGllcykKKyAgICAsIG5hbWUob3RoZXIubmFtZSkKKyAgICAsIGNoaWxkcmVuKG90aGVy
LmNoaWxkcmVuKQorICAgICwgcG9zaXRpb24ob3RoZXIucG9zaXRpb24pCisgICAgLCBhbmNob3JQ
b2ludChvdGhlci5hbmNob3JQb2ludCkKKyAgICAsIHNpemUob3RoZXIuc2l6ZSkKKyAgICAsIGNv
bnRlbnRzUmVjdChvdGhlci5jb250ZW50c1JlY3QpCisgICAgLCBtYXNrTGF5ZXJJRChvdGhlci5t
YXNrTGF5ZXJJRCkKKyAgICAsIHRpbWVPZmZzZXQob3RoZXIudGltZU9mZnNldCkKKyAgICAsIHNw
ZWVkKG90aGVyLnNwZWVkKQorICAgICwgY29udGVudHNTY2FsZShvdGhlci5jb250ZW50c1NjYWxl
KQorICAgICwgYm9yZGVyV2lkdGgob3RoZXIuYm9yZGVyV2lkdGgpCisgICAgLCBvcGFjaXR5KG90
aGVyLm9wYWNpdHkpCisgICAgLCBiYWNrZ3JvdW5kQ29sb3Iob3RoZXIuYmFja2dyb3VuZENvbG9y
KQorICAgICwgYm9yZGVyQ29sb3Iob3RoZXIuYm9yZGVyQ29sb3IpCisgICAgLCBlZGdlQW50aWFs
aWFzaW5nTWFzayhvdGhlci5lZGdlQW50aWFsaWFzaW5nTWFzaykKKyAgICAsIGN1c3RvbUFwcGVh
cmFuY2Uob3RoZXIuY3VzdG9tQXBwZWFyYW5jZSkKKyAgICAsIG1pbmlmaWNhdGlvbkZpbHRlcihv
dGhlci5taW5pZmljYXRpb25GaWx0ZXIpCisgICAgLCBtYWduaWZpY2F0aW9uRmlsdGVyKG90aGVy
Lm1hZ25pZmljYXRpb25GaWx0ZXIpCisgICAgLCBoaWRkZW4ob3RoZXIuaGlkZGVuKQorICAgICwg
Z2VvbWV0cnlGbGlwcGVkKG90aGVyLmdlb21ldHJ5RmxpcHBlZCkKKyAgICAsIGRvdWJsZVNpZGVk
KG90aGVyLmRvdWJsZVNpZGVkKQorICAgICwgbWFza3NUb0JvdW5kcyhvdGhlci5tYXNrc1RvQm91
bmRzKQorICAgICwgb3BhcXVlKG90aGVyLm9wYXF1ZSkKK3sKKyAgICBpZiAob3RoZXIudHJhbnNm
b3JtKQorICAgICAgICB0cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9u
TWF0cml4Pigqb3RoZXIudHJhbnNmb3JtKTsKKworICAgIGlmIChvdGhlci5zdWJsYXllclRyYW5z
Zm9ybSkKKyAgICAgICAgc3VibGF5ZXJUcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5z
Zm9ybWF0aW9uTWF0cml4Pigqb3RoZXIuc3VibGF5ZXJUcmFuc2Zvcm0pOworICAgIAorICAgIGlm
IChvdGhlci5iYWNraW5nU3RvcmUpCisgICAgICAgIGJhY2tpbmdTdG9yZSA9IHN0ZDo6bWFrZV91
bmlxdWU8UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU+KCpvdGhlci5iYWNraW5nU3RvcmUpOworCisg
ICAgaWYgKG90aGVyLmZpbHRlcnMpCisgICAgICAgIGZpbHRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZpbHRlck9wZXJhdGlvbnM+KCpvdGhlci5maWx0ZXJzKTsKK30KKwogdm9pZCBSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjplbmNvZGUoSVBDOjpBcmd1bWVudEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGNoYW5nZWRQ
cm9wZXJ0aWVzKTsKQEAgLTEyNiwxMCArMTY2LDEwIEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBl
CiAgICAgICAgIGVuY29kZXIgPDwgb3BhY2l0eTsKIAogICAgIGlmIChjaGFuZ2VkUHJvcGVydGll
cyAmIFRyYW5zZm9ybUNoYW5nZWQpCi0gICAgICAgIGVuY29kZXIgPDwgdHJhbnNmb3JtOworICAg
ICAgICBlbmNvZGVyIDw8ICp0cmFuc2Zvcm07CiAKICAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMg
JiBTdWJsYXllclRyYW5zZm9ybUNoYW5nZWQpCi0gICAgICAgIGVuY29kZXIgPDwgc3VibGF5ZXJU
cmFuc2Zvcm07CisgICAgICAgIGVuY29kZXIgPDwgKnN1YmxheWVyVHJhbnNmb3JtOwogCiAgICAg
aWYgKGNoYW5nZWRQcm9wZXJ0aWVzICYgSGlkZGVuQ2hhbmdlZCkKICAgICAgICAgZW5jb2RlciA8
PCBoaWRkZW47CkBAIC0xNjgsMTMgKzIwOCwxMyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uOjpMYXllclByb3BlcnRpZXM6OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZQog
ICAgICAgICBlbmNvZGVyIDw8IHRpbWVPZmZzZXQ7CiAKICAgICBpZiAoY2hhbmdlZFByb3BlcnRp
ZXMgJiBCYWNraW5nU3RvcmVDaGFuZ2VkKSB7Ci0gICAgICAgIGVuY29kZXIgPDwgYmFja2luZ1N0
b3JlLmhhc0Zyb250QnVmZmVyKCk7Ci0gICAgICAgIGlmIChiYWNraW5nU3RvcmUuaGFzRnJvbnRC
dWZmZXIoKSkKLSAgICAgICAgICAgIGVuY29kZXIgPDwgYmFja2luZ1N0b3JlOworICAgICAgICBl
bmNvZGVyIDw8IGJhY2tpbmdTdG9yZS0+aGFzRnJvbnRCdWZmZXIoKTsKKyAgICAgICAgaWYgKGJh
Y2tpbmdTdG9yZS0+aGFzRnJvbnRCdWZmZXIoKSkKKyAgICAgICAgICAgIGVuY29kZXIgPDwgKmJh
Y2tpbmdTdG9yZTsKICAgICB9CiAKICAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMgJiBGaWx0ZXJz
Q2hhbmdlZCkKLSAgICAgICAgZW5jb2RlciA8PCBmaWx0ZXJzOworICAgICAgICBlbmNvZGVyIDw8
ICpmaWx0ZXJzOwogCiAgICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzICYgRWRnZUFudGlhbGlhc2lu
Z01hc2tDaGFuZ2VkKQogICAgICAgICBlbmNvZGVyIDw8IGVkZ2VBbnRpYWxpYXNpbmdNYXNrOwpA
QCAtMjM5LDEzICsyNzksMTkgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5
ZXJQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGQKICAgICB9CiAKICAg
ICBpZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYgVHJhbnNmb3JtQ2hhbmdlZCkgewotICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC50cmFuc2Zvcm0pKQorICAgICAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
dHJhbnNmb3JtKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAg
IHJlc3VsdC50cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4
Pih0cmFuc2Zvcm0pOwogICAgIH0KIAogICAgIGlmIChyZXN1bHQuY2hhbmdlZFByb3BlcnRpZXMg
JiBTdWJsYXllclRyYW5zZm9ybUNoYW5nZWQpIHsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQuc3VibGF5ZXJUcmFuc2Zvcm0pKQorICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCB0cmFuc2Zvcm07CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHJhbnNmb3JtKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXN1bHQuc3VibGF5ZXJUcmFuc2Zv
cm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm0pOwog
ICAgIH0KIAogICAgIGlmIChyZXN1bHQuY2hhbmdlZFByb3BlcnRpZXMgJiBIaWRkZW5DaGFuZ2Vk
KSB7CkBAIC0zMTIsMTMgKzM1OCwyMCBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpMYXllclByb3BlcnRpZXM6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZAogICAgICAg
ICBib29sIGhhc0Zyb250QnVmZmVyID0gZmFsc2U7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoaGFzRnJvbnRCdWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBp
ZiAoaGFzRnJvbnRCdWZmZXIgJiYgIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5iYWNraW5nU3RvcmUp
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoaGFzRnJvbnRCdWZmZXIp
IHsKKyAgICAgICAgICAgIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIGJhY2tpbmdTdG9yZTsKKyAg
ICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYmFja2luZ1N0b3JlKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJlc3VsdC5iYWNr
aW5nU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyQmFja2luZ1N0b3JlPihiYWNr
aW5nU3RvcmUpOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKHJlc3VsdC5jaGFuZ2VkUHJv
cGVydGllcyAmIEZpbHRlcnNDaGFuZ2VkKSB7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LmZpbHRlcnMpKQorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyT3BlcmF0aW9u
cz4gZmlsdGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyT3BlcmF0aW9ucz4oKTsKKyAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqZmlsdGVycykpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHJlc3VsdC5maWx0ZXJzID0gc3RkOjptb3ZlKGZpbHRlcnMpOwogICAgIH0K
IAogICAgIGlmIChyZXN1bHQuY2hhbmdlZFByb3BlcnRpZXMgJiBFZGdlQW50aWFsaWFzaW5nTWFz
a0NoYW5nZWQpIHsKQEAgLTM0Niw3ICszOTksMTQgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6ZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewog
ICAgIGVuY29kZXIgPDwgbV9yb290TGF5ZXJJRDsKICAgICBlbmNvZGVyIDw8IG1fY3JlYXRlZExh
eWVyczsKLSAgICBlbmNvZGVyIDw8IG1fY2hhbmdlZExheWVyUHJvcGVydGllczsKKworICAgIGVu
Y29kZXIgPDwgbV9jaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzLnNpemUoKTsKKworICAgIGZvciAoY29u
c3QgYXV0byYgbGF5ZXJQcm9wZXJ0aWVzIDogbV9jaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzKSB7Cisg
ICAgICAgIGVuY29kZXIgPDwgbGF5ZXJQcm9wZXJ0aWVzLmtleTsKKyAgICAgICAgZW5jb2RlciA8
PCAqbGF5ZXJQcm9wZXJ0aWVzLnZhbHVlOworICAgIH0KKyAgICAKICAgICBlbmNvZGVyIDw8IG1f
ZGVzdHJveWVkTGF5ZXJJRHM7CiAgICAgZW5jb2RlciA8PCBtX2NvbnRlbnRzU2l6ZTsKICAgICBl
bmNvZGVyIDw8IG1fcGFnZVNjYWxlRmFjdG9yOwpAQCAtMzY2LDkgKzQyNiwyMiBAQCBib29sIFJl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRl
Y29kZXIsIFJlbW90ZUxheQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fY3JlYXRl
ZExheWVycykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0Lm1fY2hhbmdlZExheWVyUHJvcGVydGllcykpCisgICAgaW50IG51bUNoYW5nZWRM
YXllclByb3BlcnRpZXM7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShudW1DaGFuZ2VkTGF5ZXJQ
cm9wZXJ0aWVzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBudW1DaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzOyArK2kpIHsKKyAgICAgICAgR3JhcGhpY3NM
YXllcjo6UGxhdGZvcm1MYXllcklEIGxheWVySUQ7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUobGF5ZXJJRCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPExheWVyUHJvcGVydGllcz4gbGF5ZXJQcm9wZXJ0aWVzID0gc3RkOjptYWtlX3Vu
aXF1ZTxMYXllclByb3BlcnRpZXM+KCk7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKmxh
eWVyUHJvcGVydGllcykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmVz
dWx0LmNoYW5nZWRMYXllcnMoKS5zZXQobGF5ZXJJRCwgc3RkOjptb3ZlKGxheWVyUHJvcGVydGll
cykpOworICAgIH0KKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fZGVzdHJveWVk
TGF5ZXJJRHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTQwNyw3ICs0ODAsNyBAQCB2
b2lkIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpzZXRSb290TGF5ZXJJRChHcmFwaGljc0xh
eWVyOjpQbGF0Zm9ybUxheWVySUQgcgogCiB2b2lkIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpsYXllclByb3BlcnRpZXNDaGFuZ2VkKFBsYXRmb3JtQ0FMYXllclJlbW90ZSogcmVtb3RlTGF5
ZXIsIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXMmIHByb3BlcnRp
ZXMpCiB7Ci0gICAgbV9jaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzLnNldChyZW1vdGVMYXllci0+bGF5
ZXJJRCgpLCBwcm9wZXJ0aWVzKTsKKyAgICBtX2NoYW5nZWRMYXllclByb3BlcnRpZXMuc2V0KHJl
bW90ZUxheWVyLT5sYXllcklEKCksIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb246OkxheWVyUHJvcGVydGllcz4ocHJvcGVydGllcykpOwogfQogCiB2b2lkIFJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpzZXRDcmVhdGVkTGF5ZXJzKFZlY3RvcjxMYXllckNyZWF0
aW9uUHJvcGVydGllcz4gY3JlYXRlZExheWVycykKQEAgLTU5MCw3ICs2NjMsNyBAQCBzdGF0aWMg
dm9pZCBkdW1wUHJvcGVydHkoUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgdHMsIFN0cmluZyBu
YW1lLCBUIHZhbHVlKQogICAgIHRzLmRlY3JlYXNlSW5kZW50KCk7CiB9CiAKLXN0YXRpYyB2b2lk
IGR1bXBDaGFuZ2VkTGF5ZXJzKFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIHRzLCBjb25zdCBI
YXNoTWFwPEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCwgUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb246OkxheWVyUHJvcGVydGllcz4mIGNoYW5nZWRMYXllclByb3BlcnRpZXMpCitzdGF0
aWMgdm9pZCBkdW1wQ2hhbmdlZExheWVycyhSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiB0cywg
Y29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllc01hcCYgY2hh
bmdlZExheWVyUHJvcGVydGllcykKIHsKICAgICBpZiAoY2hhbmdlZExheWVyUHJvcGVydGllcy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTYwNSw3ICs2NzgsNyBAQCBzdGF0aWMgdm9p
ZCBkdW1wQ2hhbmdlZExheWVycyhSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiB0cywgY29uc3Qg
SGFzaE1hcDxHcmFwaAogICAgIHN0ZDo6c29ydChsYXllcklEcy5iZWdpbigpLCBsYXllcklEcy5l
bmQoKSk7CiAKICAgICBmb3IgKGF1dG8gbGF5ZXJJRCA6IGxheWVySURzKSB7Ci0gICAgICAgIGNv
bnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXMmIGxheWVyUHJv
cGVydGllcyA9IGNoYW5nZWRMYXllclByb3BlcnRpZXMuZ2V0KGxheWVySUQpOworICAgICAgICBj
b25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzJiBsYXllclBy
b3BlcnRpZXMgPSAqY2hhbmdlZExheWVyUHJvcGVydGllcy5nZXQobGF5ZXJJRCk7CiAKICAgICAg
ICAgdHMgPDwgIlxuIjsKICAgICAgICAgdHMuaW5jcmVhc2VJbmRlbnQoKTsKQEAgLTY0MCwxMCAr
NzEzLDEwIEBAIHN0YXRpYyB2b2lkIGR1bXBDaGFuZ2VkTGF5ZXJzKFJlbW90ZUxheWVyVHJlZVRl
eHRTdHJlYW0mIHRzLCBjb25zdCBIYXNoTWFwPEdyYXBoCiAgICAgICAgICAgICBkdW1wUHJvcGVy
dHk8ZmxvYXQ+KHRzLCAib3BhY2l0eSIsIGxheWVyUHJvcGVydGllcy5vcGFjaXR5KTsKIAogICAg
ICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb246OlRyYW5zZm9ybUNoYW5nZWQpCi0gICAgICAgICAgICBkdW1wUHJvcGVy
dHk8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRzLCAidHJhbnNmb3JtIiwgbGF5ZXJQcm9wZXJ0aWVz
LnRyYW5zZm9ybSk7CisgICAgICAgICAgICBkdW1wUHJvcGVydHk8VHJhbnNmb3JtYXRpb25NYXRy
aXg+KHRzLCAidHJhbnNmb3JtIiwgbGF5ZXJQcm9wZXJ0aWVzLnRyYW5zZm9ybSA/ICpsYXllclBy
b3BlcnRpZXMudHJhbnNmb3JtIDogVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAKICAgICAgICAg
aWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uOjpTdWJsYXllclRyYW5zZm9ybUNoYW5nZWQpCi0gICAgICAgICAgICBkdW1wUHJv
cGVydHk8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRzLCAic3VibGF5ZXJUcmFuc2Zvcm0iLCBsYXll
clByb3BlcnRpZXMuc3VibGF5ZXJUcmFuc2Zvcm0pOworICAgICAgICAgICAgZHVtcFByb3BlcnR5
PFRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cywgInN1YmxheWVyVHJhbnNmb3JtIiwgbGF5ZXJQcm9w
ZXJ0aWVzLnN1YmxheWVyVHJhbnNmb3JtID8gKmxheWVyUHJvcGVydGllcy5zdWJsYXllclRyYW5z
Zm9ybSA6IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwogCiAgICAgICAgIGlmIChsYXllclByb3Bl
cnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6SGlk
ZGVuQ2hhbmdlZCkKICAgICAgICAgICAgIGR1bXBQcm9wZXJ0eTxib29sPih0cywgImhpZGRlbiIs
IGxheWVyUHJvcGVydGllcy5oaWRkZW4pOwpAQCAtNjgyLDEwICs3NTUsMTAgQEAgc3RhdGljIHZv
aWQgZHVtcENoYW5nZWRMYXllcnMoUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IEhhc2hNYXA8R3JhcGgKICAgICAgICAgICAgIGR1bXBQcm9wZXJ0eTxkb3VibGU+KHRzLCAidGlt
ZU9mZnNldCIsIGxheWVyUHJvcGVydGllcy50aW1lT2Zmc2V0KTsKIAogICAgICAgICBpZiAobGF5
ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b246OkJhY2tpbmdTdG9yZUNoYW5nZWQpCi0gICAgICAgICAgICBkdW1wUHJvcGVydHk8SW50U2l6
ZT4odHMsICJiYWNraW5nU3RvcmUiLCBsYXllclByb3BlcnRpZXMuYmFja2luZ1N0b3JlLnNpemUo
KSk7CisgICAgICAgICAgICBkdW1wUHJvcGVydHk8SW50U2l6ZT4odHMsICJiYWNraW5nU3RvcmUi
LCBsYXllclByb3BlcnRpZXMuYmFja2luZ1N0b3JlID8gbGF5ZXJQcm9wZXJ0aWVzLmJhY2tpbmdT
dG9yZS0+c2l6ZSgpIDogSW50U2l6ZSgpKTsKIAogICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVz
LmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkZpbHRlcnND
aGFuZ2VkKQotICAgICAgICAgICAgZHVtcFByb3BlcnR5PEZpbHRlck9wZXJhdGlvbnM+KHRzLCAi
ZmlsdGVycyIsIGxheWVyUHJvcGVydGllcy5maWx0ZXJzKTsKKyAgICAgICAgICAgIGR1bXBQcm9w
ZXJ0eTxGaWx0ZXJPcGVyYXRpb25zPih0cywgImZpbHRlcnMiLCBsYXllclByb3BlcnRpZXMuZmls
dGVycyA/ICpsYXllclByb3BlcnRpZXMuZmlsdGVycyA6IEZpbHRlck9wZXJhdGlvbnMoKSk7CiAK
ICAgICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uOjpFZGdlQW50aWFsaWFzaW5nTWFza0NoYW5nZWQpCiAgICAgICAg
ICAgICBkdW1wUHJvcGVydHk8dW5zaWduZWQ+KHRzLCAiZWRnZUFudGlhbGlhc2luZ01hc2siLCBs
YXllclByb3BlcnRpZXMuZWRnZUFudGlhbGlhc2luZ01hc2spOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZUhvc3QuaAppbmRleCA2YjJiNWQyNmM2
MWFkMDM3OTAwNDA4MGIwYWI2MzY1ZmVhZWJmNWJhLi40OGFjMDgxZDRlMTdkNzExYjBhYTg4NDNi
MjNkMGZjZGQ4ZmI0MGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1JlbW90ZUxheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1JlbW90ZUxheWVyVHJlZUhvc3QuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc0RlYnVnTGF5ZXJUcmVlSG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZWJ1Z0xheWVyVHJl
ZUhvc3Q7IH0KIAogcHJpdmF0ZToKLSAgICBDQUxheWVyICpjcmVhdGVMYXllcihSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmVhdGlvblByb3BlcnRpZXMpOworICAgIENBTGF5ZXIg
KmNyZWF0ZUxheWVyKGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZWF0
aW9uUHJvcGVydGllcyYpOwogCiAgICAgQ0FMYXllciAqbV9yb290TGF5ZXI7CiAgICAgSGFzaE1h
cDxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQsIFJldGFpblB0cjxDQUxh
eWVyPj4gbV9sYXllcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1JlbW90ZUxheWVyVHJlZUhvc3QubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1Jl
bW90ZUxheWVyVHJlZUhvc3QubW0KaW5kZXggOGZhOGI1ZWNlYjFmZWM2MTRjYjQ1NjdmYmZmMWVi
ZmQxOTcwN2JmMS4uMjU3OWRkMzExMzIzNjZkYzVlYThlNmFhZGZkYTA4ZjQ5M2Y3OGE2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVIb3N0
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9z
dC5tbQpAQCAtNjgsNyArNjgsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZUhvc3Q6OnVwZGF0ZUxh
eWVyVHJlZShjb25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYgdHJhbgogCiAgICAgZm9y
IChhdXRvJiBjaGFuZ2VkTGF5ZXIgOiB0cmFuc2FjdGlvbi5jaGFuZ2VkTGF5ZXJzKCkpIHsKICAg
ICAgICAgYXV0byBsYXllcklEID0gY2hhbmdlZExheWVyLmtleTsKLSAgICAgICAgY29uc3QgYXV0
byYgcHJvcGVydGllcyA9IGNoYW5nZWRMYXllci52YWx1ZTsKKyAgICAgICAgY29uc3QgUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllcyYgcHJvcGVydGllcyA9ICpjaGFu
Z2VkTGF5ZXIudmFsdWU7CiAKICAgICAgICAgQ0FMYXllciAqbGF5ZXIgPSBnZXRMYXllcihsYXll
cklEKTsKICAgICAgICAgQVNTRVJUKGxheWVyKTsKQEAgLTEwNyw3ICsxMDcsNyBAQCBDQUxheWVy
ICpSZW1vdGVMYXllclRyZWVIb3N0OjpnZXRMYXllcihHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxh
eWVySUQgbGF5ZXJJRCkgYwogICAgIHJldHVybiBtX2xheWVycy5nZXQobGF5ZXJJRCkuZ2V0KCk7
CiB9CiAKLUNBTGF5ZXIgKlJlbW90ZUxheWVyVHJlZUhvc3Q6OmNyZWF0ZUxheWVyKFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZWF0aW9uUHJvcGVydGllcyBwcm9wZXJ0aWVzKQor
Q0FMYXllciAqUmVtb3RlTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlTGF5ZXIoY29uc3QgUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKQog
ewogICAgIFJldGFpblB0cjxDQUxheWVyPiYgbGF5ZXIgPSBtX2xheWVycy5hZGQocHJvcGVydGll
cy5sYXllcklELCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVy
UmVtb3RlLmNwcAppbmRleCBjMzIzMGU5YzMyNTk0YTM2ZTQ2MTczZmFhMmFjMjM2MTk5YWE0NzUw
Li5iMDI2YjM1NWZhN2Q3YmY0MDM1Yjc5ODY5NDI5NjVmNGViMDQxNmE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9y
bUNBTGF5ZXJSZW1vdGUuY3BwCkBAIC02Nyw2ICs2NywxNSBAQCBQYXNzUmVmUHRyPFBsYXRmb3Jt
Q0FMYXllclJlbW90ZT4gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUoUGxhdGZvcm1MYXll
ciAqcAogICAgIHJldHVybiBsYXllci5yZWxlYXNlKCk7CiB9CiAKK1Bhc3NSZWZQdHI8UGxhdGZv
cm1DQUxheWVyUmVtb3RlPiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZShjb25zdCBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUmIG90aGVyLCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQq
IG93bmVyLCBSZW1vdGVMYXllclRyZWVDb250ZXh0KiBjb250ZXh0KQoreworICAgIFJlZlB0cjxQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IGxheWVyID0gYWRvcHRSZWYobmV3IFBsYXRmb3JtQ0FMYXll
clJlbW90ZShvdGhlciwgb3duZXIsIGNvbnRleHQpKTsKKworICAgIGNvbnRleHQtPmxheWVyV2Fz
Q3JlYXRlZChsYXllci5nZXQoKSwgTGF5ZXJUeXBlQ3VzdG9tKTsKKworICAgIHJldHVybiBsYXll
ci5yZWxlYXNlKCk7Cit9CisKIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6UGxhdGZvcm1DQUxheWVy
UmVtb3RlKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIs
IFJlbW90ZUxheWVyVHJlZUNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBQbGF0Zm9ybUNBTGF5ZXIo
bGF5ZXJUeXBlLCBvd25lcikKICAgICAsIG1fc3VwZXJsYXllcihudWxscHRyKQpAQCAtNzYsMTEg
Kzg1LDIwIEBAIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6UGxhdGZvcm1DQUxheWVyUmVtb3RlKExh
eWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FMYXllCiB7CiB9CiAKK1BsYXRmb3JtQ0FMYXll
clJlbW90ZTo6UGxhdGZvcm1DQUxheWVyUmVtb3RlKGNvbnN0IFBsYXRmb3JtQ0FMYXllclJlbW90
ZSYgb3RoZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNv
bnRleHQqIGNvbnRleHQpCisgICAgOiBQbGF0Zm9ybUNBTGF5ZXIob3RoZXIubGF5ZXJUeXBlKCks
IG93bmVyKQorICAgICwgbV9wcm9wZXJ0aWVzKG90aGVyLm1fcHJvcGVydGllcykKKyAgICAsIG1f
c3VwZXJsYXllcihudWxscHRyKQorICAgICwgbV9tYXNrTGF5ZXIobnVsbHB0cikKKyAgICAsIG1f
YWNjZWxlcmF0ZXNEcmF3aW5nKG90aGVyLmFjY2VsZXJhdGVzRHJhd2luZygpKQorICAgICwgbV9j
b250ZXh0KGNvbnRleHQpCit7Cit9CisKIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGU6OmNsb25lKFBsYXRmb3JtQ0FMYXllckNsaWVudCogY2xpZW50KSBj
b25zdAogewotICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IGNsb25lID0gUGxhdGZv
cm1DQUxheWVyUmVtb3RlOjpjcmVhdGUobGF5ZXJUeXBlKCksIGNsaWVudCwgbV9jb250ZXh0KTsK
KyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBjbG9uZSA9IFBsYXRmb3JtQ0FMYXll
clJlbW90ZTo6Y3JlYXRlKCp0aGlzLCBjbGllbnQsIG1fY29udGV4dCk7CiAKLSAgICBjbG9uZS0+
bV9wcm9wZXJ0aWVzID0gbV9wcm9wZXJ0aWVzOwogICAgIGNsb25lLT5tX3Byb3BlcnRpZXMubm90
ZVByb3BlcnRpZXNDaGFuZ2VkKHN0YXRpY19jYXN0PFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpMYXllckNoYW5nZT4obV9wcm9wZXJ0aWVzLmV2ZXJDaGFuZ2VkUHJvcGVydGllcyAmIH5SZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbjo6QmFja2luZ1N0b3JlQ2hhbmdlZCkpOwogCiAgICAgcmV0
dXJuIGNsb25lLnJlbGVhc2UoKTsKQEAgLTk1LDcgKzExMyw3IEBAIFBsYXRmb3JtQ0FMYXllclJl
bW90ZTo6flBsYXRmb3JtQ0FMYXllclJlbW90ZSgpCiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVt
b3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5zYWN0aW9uKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
JiB0cmFuc2FjdGlvbikKIHsKLSAgICBpZiAobV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS5kaXNw
bGF5KCkpCisgICAgaWYgKG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgJiYgbV9wcm9wZXJ0aWVz
LmJhY2tpbmdTdG9yZS0+ZGlzcGxheSgpKQogICAgICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3Bl
cnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCYWNraW5nU3RvcmVDaGFu
Z2VkKTsKIAogICAgIGlmIChtX3Byb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgIT0gUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246Ok5vQ2hhbmdlKSB7CkBAIC0xMzEsNyArMTQ5LDkgQEAgdm9p
ZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmFuaW1hdGlvblN0YXJ0ZWQoQ0ZUaW1lSW50ZXJ2YWwg
YmVnaW5UaW1lKQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6ZW5zdXJlQmFja2luZ1N0
b3JlKCkKIHsKLSAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlLmVuc3VyZUJhY2tpbmdTdG9y
ZSh0aGlzLCBleHBhbmRlZEludFNpemUobV9wcm9wZXJ0aWVzLnNpemUpLCBtX3Byb3BlcnRpZXMu
Y29udGVudHNTY2FsZSwgbV9hY2NlbGVyYXRlc0RyYXdpbmcpOworICAgIGlmICghbV9wcm9wZXJ0
aWVzLmJhY2tpbmdTdG9yZSkKKyAgICAgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSA9IHN0
ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU+KCk7CisgICAgbV9wcm9wZXJ0
aWVzLmJhY2tpbmdTdG9yZS0+ZW5zdXJlQmFja2luZ1N0b3JlKHRoaXMsIGV4cGFuZGVkSW50U2l6
ZShtX3Byb3BlcnRpZXMuc2l6ZSksIG1fcHJvcGVydGllcy5jb250ZW50c1NjYWxlLCBtX2FjY2Vs
ZXJhdGVzRHJhd2luZyk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROZWVk
c0Rpc3BsYXkoY29uc3QgRmxvYXRSZWN0KiByZWN0KQpAQCAtMTM5LDEyICsxNTksMTIgQEAgdm9p
ZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE5lZWRzRGlzcGxheShjb25zdCBGbG9hdFJlY3Qq
IHJlY3QpCiAgICAgZW5zdXJlQmFja2luZ1N0b3JlKCk7CiAKICAgICBpZiAoIXJlY3QpIHsKLSAg
ICAgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICAg
ICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS0+c2V0TmVlZHNEaXNwbGF5KCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICAvLyBGSVhNRTogTmVlZCB0byBtYXAgdGhpcyB0aHJvdWdo
IGNvbnRlbnRzUmVjdC9ldGMuCi0gICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS5zZXROZWVk
c0Rpc3BsYXkoZW5jbG9zaW5nSW50UmVjdCgqcmVjdCkpOworICAgIG1fcHJvcGVydGllcy5iYWNr
aW5nU3RvcmUtPnNldE5lZWRzRGlzcGxheShlbmNsb3NpbmdJbnRSZWN0KCpyZWN0KSk7CiB9CiAK
IHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRDb250ZW50c0NoYW5nZWQoKQpAQCAtMzE3
LDIzICszMzcsMjMgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldEFuY2hvclBvaW50
KGNvbnN0IEZsb2F0UG9pbnQzRCYgdmFsdWUpCiAKIFRyYW5zZm9ybWF0aW9uTWF0cml4IFBsYXRm
b3JtQ0FMYXllclJlbW90ZTo6dHJhbnNmb3JtKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcm9w
ZXJ0aWVzLnRyYW5zZm9ybTsKKyAgICByZXR1cm4gbV9wcm9wZXJ0aWVzLnRyYW5zZm9ybSA/ICpt
X3Byb3BlcnRpZXMudHJhbnNmb3JtIDogVHJhbnNmb3JtYXRpb25NYXRyaXgoKTsKIH0KIAogdm9p
ZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgdmFsdWUpCiB7Ci0gICAgbV9wcm9wZXJ0aWVzLnRyYW5zZm9ybSA9IHZhbHVlOwor
ICAgIG1fcHJvcGVydGllcy50cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0
aW9uTWF0cml4Pih2YWx1ZSk7CiAgICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdl
ZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6VHJhbnNmb3JtQ2hhbmdlZCk7CiB9CiAKIFRy
YW5zZm9ybWF0aW9uTWF0cml4IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c3VibGF5ZXJUcmFuc2Zv
cm0oKSBjb25zdAogewotICAgIHJldHVybiBtX3Byb3BlcnRpZXMuc3VibGF5ZXJUcmFuc2Zvcm07
CisgICAgcmV0dXJuIG1fcHJvcGVydGllcy5zdWJsYXllclRyYW5zZm9ybSA/ICptX3Byb3BlcnRp
ZXMuc3VibGF5ZXJUcmFuc2Zvcm0gOiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpOwogfQogCiB2b2lk
IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHZhbHVlKQogewotICAgIG1fcHJvcGVydGllcy5zdWJsYXllclRyYW5z
Zm9ybSA9IHZhbHVlOworICAgIG1fcHJvcGVydGllcy5zdWJsYXllclRyYW5zZm9ybSA9IHN0ZDo6
bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHZhbHVlKTsKICAgICBtX3Byb3BlcnRp
ZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpTdWJs
YXllclRyYW5zZm9ybUNoYW5nZWQpOwogfQogCkBAIC00NDYsNyArNDY2LDcgQEAgdm9pZCBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE9wYWNpdHkoZmxvYXQgdmFsdWUpCiAjaWYgRU5BQkxFKENT
U19GSUxURVJTKQogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldEZpbHRlcnMoY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsKLSAgICBtX3Byb3BlcnRpZXMuZmlsdGVycyA9
IGZpbHRlcnM7CisgICAgbV9wcm9wZXJ0aWVzLmZpbHRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEZp
bHRlck9wZXJhdGlvbnM+KGZpbHRlcnMpOwogICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGll
c0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkZpbHRlcnNDaGFuZ2VkKTsKIH0K
IApAQCAtNTIxLDcgKzU0MSw3IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZUNvbXBhdGlibGVMYXllcihQbGF0Zm9yCiAKIHZvaWQgUGxh
dGZvcm1DQUxheWVyUmVtb3RlOjplbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24oQ0dDb250ZXh0UmVm
IGNvbnRleHQsIHZvaWQgKF5ibG9jaykoQ0dSZWN0KSkKIHsKLSAgICBtX3Byb3BlcnRpZXMuYmFj
a2luZ1N0b3JlLmVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bihjb250ZXh0LCBibG9jayk7CisgICAg
bV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS0+ZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKGNvbnRl
eHQsIGJsb2NrKTsKIH0KIAogdWludDMyX3QgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpob3N0aW5n
Q29udGV4dElEKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCmluZGV4IDQ2OWRkZTUzMjkyMWMz
NzM5MjU4NTE2ODUxOWFmMTY4YTQ3MGNlZDQuLjI0MDFlNzA2NGY0YTQ0MWQyMmU5NDIwYmQ0YmFm
MzJmYTZjY2JkYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaApAQCAtMzksNiArMzksNyBA
QCBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1D
QUxheWVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGU+IGNyZWF0ZShXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSwgV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCopOwogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gY3JlYXRlKFBsYXRmb3Jt
TGF5ZXIgKiwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiwgUmVtb3RlTGF5ZXJUcmVl
Q29udGV4dCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4g
Y3JlYXRlKGNvbnN0IFBsYXRmb3JtQ0FMYXllclJlbW90ZSYsIFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllckNsaWVudCosIFJlbW90ZUxheWVyVHJlZUNvbnRleHQqKTsKIAogICAgIHZpcnR1YWwgflBs
YXRmb3JtQ0FMYXllclJlbW90ZSgpOwogCkBAIC0xNDksNiArMTUwLDcgQEAgcHVibGljOgogCiBw
cm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlKFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlLCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyLCBS
ZW1vdGVMYXllclRyZWVDb250ZXh0KiBjb250ZXh0KTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGUoY29uc3QgUGxhdGZvcm1DQUxheWVyUmVtb3RlJiwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVy
Q2xpZW50KiwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCopOwogCiBwcml2YXRlOgogICAgIHZpcnR1
YWwgYm9vbCBpc1BsYXRmb3JtQ0FMYXllclJlbW90ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0K
</data>
<flag name="review"
          id="248798"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>