<?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>173238</bug_id>
          
          <creation_ts>2017-06-11 08:49:34 -0700</creation_ts>
          <short_desc>[iOS DnD] Allow the injected bundle to add client data when writing an image to the pasteboard</short_desc>
          <delta_ts>2017-06-14 11:57:37 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>rniwa</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1317998</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-06-11 08:49:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/31943370&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318003</commentid>
    <comment_count>1</comment_count>
      <attachid>312600</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-06-11 09:04:01 -0700</bug_when>
    <thetext>Created attachment 312600
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318015</commentid>
    <comment_count>2</comment_count>
      <attachid>312604</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-06-11 10:01:59 -0700</bug_when>
    <thetext>Created attachment 312604
Fix GTK build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318097</commentid>
    <comment_count>3</comment_count>
      <attachid>312604</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-11 18:55:59 -0700</bug_when>
    <thetext>Comment on attachment 312604
Fix GTK build

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

&gt; Source/WebKit2/Shared/WebCoreArgumentCoders.cpp:1431
&gt; +    encoder &lt;&lt; types;

We should assert that the size of data &amp; types are the same.

&gt; Source/WebKit2/Shared/WebCoreArgumentCoders.cpp:1433
&gt; +    for (size_t i = 0; i &lt; data.size(); i++)

Why don&apos;t we save the size like you did in PlatformPasteboardIOS.mm?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318241</commentid>
    <comment_count>4</comment_count>
      <attachid>312604</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-06-12 08:51:33 -0700</bug_when>
    <thetext>Comment on attachment 312604
Fix GTK build

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

Thanks Ryosuke! I think we&apos;ll still need a WK2 reviewer to rubberstamp this though, since it touches WebKit2.

&gt;&gt; Source/WebKit2/Shared/WebCoreArgumentCoders.cpp:1431
&gt;&gt; +    encoder &lt;&lt; types;
&gt; 
&gt; We should assert that the size of data &amp; types are the same.

Good idea -- added an assert.

&gt;&gt; Source/WebKit2/Shared/WebCoreArgumentCoders.cpp:1433
&gt;&gt; +    for (size_t i = 0; i &lt; data.size(); i++)
&gt; 
&gt; Why don&apos;t we save the size like you did in PlatformPasteboardIOS.mm?

Done!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318292</commentid>
    <comment_count>5</comment_count>
      <attachid>312604</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-06-12 11:01:24 -0700</bug_when>
    <thetext>Comment on attachment 312604
Fix GTK build

wk2r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318328</commentid>
    <comment_count>6</comment_count>
      <attachid>312684</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-06-12 12:25:56 -0700</bug_when>
    <thetext>Created attachment 312684
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318345</commentid>
    <comment_count>7</comment_count>
      <attachid>312684</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-12 13:05:11 -0700</bug_when>
    <thetext>Comment on attachment 312684
Patch for landing

Clearing flags on attachment: 312684

Committed r218128: &lt;http://trac.webkit.org/changeset/218128&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312600</attachid>
            <date>2017-06-11 09:04:01 -0700</date>
            <delta_ts>2017-06-11 10:01:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173238-20170611090400.patch</filename>
            <type>text/plain</type>
            <size>16443</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4MDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGNhMjMzYzZmZGFlYzdh
ODE2YWM5NjI1ZWE2OWUzYzA1NmM3NTJjYy4uZWNmNzMxNTA0NGE0NWQ0YzU3OGYxNjlhMmExNGMz
ZGU3ZDA4ZDc0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTA2LTExICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgRG5EXSBB
bGxvdyB0aGUgaW5qZWN0ZWQgYnVuZGxlIHRvIGFkZCBjbGllbnQgZGF0YSB3aGVuIHdyaXRpbmcg
YW4gaW1hZ2UgdG8gdGhlIHBhc3RlYm9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3MzIzOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzE5NDMz
NzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IGNsaWVudFR5cGVzIGFuZCBjbGllbnREYXRhIHRvIFBhc3RlYm9hcmRJbWFnZSwgYW5kIGNhbGwg
b3V0IHRvIHRoZSBpbmplY3RlZCBidW5kbGUgdXNpbmcKKyAgICAgICAgZ2V0Q2xpZW50UGFzdGVi
b2FyZERhdGFGb3JSYW5nZSB3aGVuIHdyaXRpbmcgYSBQYXN0ZWJvYXJkSW1hZ2UuIFdoZW4gZ2Vu
ZXJhdGluZyBpdGVtIHByb3ZpZGVycyBmb3IgZHJhZ2dpbmcgaW4KKyAgICAgICAgdGhlIFVJIHBy
b2Nlc3MgaW4gUGxhdGZvcm1QYXN0ZWJvYXJkLCBhZGQgYW55IGF2YWlsYWJsZSBjbGllbnQgZGF0
YSBhcyByZXByZXNlbnRhdGlvbnMgdG8gdGhlIGluaXRpYWxpemF0aW9uCisgICAgICAgIGxpc3Qg
dXNlZCB0byBzZXQgdGhlIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuCisKKyAgICAgICAgVGVz
dDogRGF0YUludGVyYWN0aW9uLkluamVjdGVkQnVuZGxlSW1hZ2VFbGVtZW50RGF0YQorCisgICAg
ICAgICogZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Ojp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJk
Lmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVPYmplY3RSZXByZXNlbnRh
dGlvbnMpOgorCiAyMDE3LTA2LTA5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgog
CiAgICAgICAgIE1lZGlhIGVsZW1lbnRzIGFyZSBhbGxvd2VkIHRvIGNvbnRpbnVlIHRvIGxvYWQg
bWVkaWEgZGF0YSBhZnRlciBuYXZpZ2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTIxYmY4NTUwNmVmZTVl
OWUyMTBmNDUyNzY3Y2ZmMzM4NWZlMjk1YS4uYWI2ODRiNjY5NjAxYjI3Y2IzZDViODAzNmMyZjMx
NTZiNTNhYzBjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTA2LTExICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgRG5EXSBB
bGxvdyB0aGUgaW5qZWN0ZWQgYnVuZGxlIHRvIGFkZCBjbGllbnQgZGF0YSB3aGVuIHdyaXRpbmcg
YW4gaW1hZ2UgdG8gdGhlIHBhc3RlYm9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3MzIzOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzE5NDMz
NzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Vu
ZCBQYXN0ZWJvYXJkSW1hZ2UuY2xpZW50VHlwZXMgYW5kIFBhc3RlYm9hcmRJbWFnZS5jbGllbnRE
YXRhIG92ZXIgSVBDLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHA6CisgICAgICAgIChJUEM6OmVuY29kZUNsaWVudFR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJ
UEM6OmRlY29kZUNsaWVudFR5cGVzQW5kRGF0YSk6CisKKyAgICAgICAgRmFjdG9yIG91dCBjb21t
b24gbG9naWMgdXNlZCB0byBlbmNvZGUgYW5kIGRlY29kZSBjbGllbnQgdHlwZXMgYW5kIGRhdGEg
aW50byBzdGF0aWMgaGVscGVycy4KKworICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBhc3Rl
Ym9hcmRXZWJDb250ZW50Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxQ
YXN0ZWJvYXJkV2ViQ29udGVudD46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8UGFzdGVib2FyZEltYWdlPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2Rl
cjxQYXN0ZWJvYXJkSW1hZ2U+OjpkZWNvZGUpOgorCiAyMDE3LTA2LTA5ICBEYW5pZWwgQmF0ZXMg
IDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBDU1A6IEFwcGx5IGltZy1zcmMgZGlyZWN0
aXZlIHRvIGZhdmljb24gbG9hZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
aW9zL0VkaXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5t
bQppbmRleCA5NTA0MDI5MDhhMzcwZDczNDMxMjVhZWY3YTAwODIyNjBmYWUxYjMwLi4wNjMzNjAx
NzJmYzg4M2NiYWM3NTFmN2VlMjdhNzdiMmVjYjYyZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9pb3MvRWRpdG9ySU9TLm1tCkBAIC0yMTEsNiArMjExLDExIEBAIHZvaWQgRWRpdG9yOjp3cml0
ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQsIEVsZW1lbnQmIGltYWdl
RWxlbWVuCiAgICAgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUgPSBwYXN0ZWJvYXJk
LnJlc291cmNlTUlNRVR5cGUoY2FjaGVkSW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSk7CiAg
ICAgcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YSA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1
ZmZlcigpOwogCisgICAgUG9zaXRpb24gYmVmb3JlSW1hZ2VQb3NpdGlvbigmaW1hZ2VFbGVtZW50
LCBQb3NpdGlvbjo6UG9zaXRpb25Jc0JlZm9yZUFuY2hvcik7CisgICAgUG9zaXRpb24gYWZ0ZXJJ
bWFnZVBvc2l0aW9uKCZpbWFnZUVsZW1lbnQsIFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJBbmNo
b3IpOworICAgIFJlZlB0cjxSYW5nZT4gaW1hZ2VSYW5nZSA9IFJhbmdlOjpjcmVhdGUoaW1hZ2VF
bGVtZW50LmRvY3VtZW50KCksIGJlZm9yZUltYWdlUG9zaXRpb24sIGFmdGVySW1hZ2VQb3NpdGlv
bik7CisgICAgY2xpZW50KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoaW1hZ2VS
YW5nZS5nZXQoKSwgcGFzdGVib2FyZEltYWdlLmNsaWVudFR5cGVzLCBwYXN0ZWJvYXJkSW1hZ2Uu
Y2xpZW50RGF0YSk7CisKICAgICBwYXN0ZWJvYXJkLndyaXRlKHBhc3RlYm9hcmRJbWFnZSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCBlMzZmNzdmMDRlOTEzNDA4
MzY2ZWIzNDQ4ZDA5MGJlODdlZmUyYmRkLi5jM2VlYmVlZDIyYzZjODY2NWQxMzdiZjQ2MjBiNDdh
Y2NhZjI5ZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC0xMTIsNiAr
MTEyLDkgQEAgc3RydWN0IFBhc3RlYm9hcmRJbWFnZSB7CiAgICAgU3RyaW5nIHJlc291cmNlTUlN
RVR5cGU7CiAjZW5kaWYKICAgICBTdHJpbmcgc3VnZ2VzdGVkTmFtZTsKKworICAgIFZlY3RvcjxT
dHJpbmc+IGNsaWVudFR5cGVzOworICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xp
ZW50RGF0YTsKIH07CiAKIC8vIEZvciByZWFkaW5nIGZyb20gdGhlIHBhc3RlYm9hcmQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5t
bQppbmRleCAzMTZkYTJjNTRlMjE0YjBmNjM1ODZhNTU0ODJkMTQ0YmEwYmYwODA0Li4zYTZiYWVm
NjQ1MWQ2YzkzZmQwYjIyYTYwZjhkODRmMmRiY2M2YjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTI2Niw2ICsy
NjYsMTIgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlT2JqZWN0UmVwcmVzZW50YXRp
b25zKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGUKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFD
VElPTikKICAgICBSZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Q+
IGl0ZW1zVG9SZWdpc3RlciA9IGFkb3B0TlMoW1tXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25J
bmZvTGlzdCBhbGxvY10gaW5pdF0pOwogCisgICAgYXV0byYgdHlwZXMgPSBwYXN0ZWJvYXJkSW1h
Z2UuY2xpZW50VHlwZXM7CisgICAgYXV0byYgZGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5jbGllbnRE
YXRhOworICAgIEFTU0VSVCh0eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwLCBzaXplID0gdHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQorICAgICAg
ICBbaXRlbXNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
Zm9yVHlwZTp0eXBlc1tpXV07CisKICAgICBpZiAoYXV0byBpbWFnZSA9IHBhc3RlYm9hcmRJbWFn
ZS5pbWFnZSkgewogICAgICAgICBOU1N0cmluZyAqbWltZVR5cGUgPSBwYXN0ZWJvYXJkSW1hZ2Uu
cmVzb3VyY2VNSU1FVHlwZTsKICAgICAgICAgaWYgKFVUVHlwZUlzRGVjbGFyZWQoKENGU3RyaW5n
UmVmKW1pbWVUeXBlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcAppbmRleCA3Zjk5MjA3ZTQ4YWNkMWViODYxNjFhOGEzMjc0YmYwNzQ3MzRl
MjM3Li42NTc5MDhkZDM5MzM4OWIzNTQ5MTkyYjNiM2U4YmExODZiYzZlYTY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTQyNiw2
ICsxNDI2LDMyIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkVVJMPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIsIFBhc3RlYm9hcmRVUkwmIGNvbnRlCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKK3N0YXRpYyB2b2lkIGVuY29kZUNsaWVudFR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2hhcmVk
QnVmZmVyPj4mIGRhdGEpCit7CisgICAgZW5jb2RlciA8PCB0eXBlczsKKyAgICBlbmNvZGVyIDw8
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihkYXRhLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBkYXRhLnNpemUoKTsgaSsrKQorICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5j
b2RlciwgZGF0YVtpXS5nZXQoKSk7Cit9CisKK3N0YXRpYyBib29sIGRlY29kZUNsaWVudFR5cGVz
QW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCit7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0
eXBlcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVpbnQ2NF90IGNsaWVudERhdGFT
aXplOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY2xpZW50RGF0YVNpemUpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoY2xpZW50RGF0YVNpemUpCisgICAgICAgIGRhdGEucmVz
aXplKGNsaWVudERhdGFTaXplKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2xpZW50
RGF0YVNpemU7IGkrKykKKyAgICAgICAgZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGRhdGFb
aV0pOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgQXJndW1lbnRDb2RlcjxQYXN0ZWJv
YXJkV2ViQ29udGVudD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBQYXN0ZWJvYXJk
V2ViQ29udGVudCYgY29udGVudCkKIHsKICAgICBlbmNvZGVyIDw8IGNvbnRlbnQuY2FuU21hcnRD
b3B5T3JEZWxldGU7CkBAIC0xNDM2LDEwICsxNDYyLDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFBh
c3RlYm9hcmRXZWJDb250ZW50Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFBhc3Rl
Ym8KICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgY29udGVudC5kYXRhSW5SVEZGb3Jt
YXQuZ2V0KCkpOwogICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBjb250ZW50LmRhdGFJ
bkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQuZ2V0KCkpOwogCi0gICAgZW5jb2RlciA8PCBjb250ZW50
LmNsaWVudFR5cGVzOwotICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGNvbnRl
bnQuY2xpZW50RGF0YS5zaXplKCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29udGVu
dC5jbGllbnREYXRhLnNpemUoKTsgaSsrKQotICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5j
b2RlciwgY29udGVudC5jbGllbnREYXRhW2ldLmdldCgpKTsKKyAgICBlbmNvZGVDbGllbnRUeXBl
c0FuZERhdGEoZW5jb2RlciwgY29udGVudC5jbGllbnRUeXBlcywgY29udGVudC5jbGllbnREYXRh
KTsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRXZWJDb250ZW50Pjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQpAQCAtMTQ1
NiwxNSArMTQ3OSw4IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkV2ViQ29udGVudD46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWJvYXJkV2ViCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBjb250ZW50LmRhdGFJ
bkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZShjb250ZW50LmNsaWVudFR5cGVzKSkKKyAgICBpZiAoIWRlY29kZUNs
aWVudFR5cGVzQW5kRGF0YShkZWNvZGVyLCBjb250ZW50LmNsaWVudFR5cGVzLCBjb250ZW50LmNs
aWVudERhdGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdWludDY0X3QgY2xpZW50RGF0
YVNpemU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShjbGllbnREYXRhU2l6ZSkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAoY2xpZW50RGF0YVNpemUpCi0gICAgICAgIGNvbnRlbnQu
Y2xpZW50RGF0YS5yZXNpemUoY2xpZW50RGF0YVNpemUpOwotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY2xpZW50RGF0YVNpemU7IGkrKykKLSAgICAgICAgZGVjb2RlU2hhcmVkQnVmZmVyKGRl
Y29kZXIsIGNvbnRlbnQuY2xpZW50RGF0YVtpXSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTE0NzcsNiArMTQ5Myw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkSW1hZ2U+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUGFzdGVib2FyZEltCiAgICAgZW5jb2RlciA8
PCBwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFtZTsKICAgICBpZiAocGFzdGVib2FyZEltYWdl
LnJlc291cmNlRGF0YSkKICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIHBhc3Rl
Ym9hcmRJbWFnZS5yZXNvdXJjZURhdGEuZ2V0KCkpOworICAgIGVuY29kZUNsaWVudFR5cGVzQW5k
RGF0YShlbmNvZGVyLCBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50VHlwZXMsIHBhc3RlYm9hcmRJbWFn
ZS5jbGllbnREYXRhKTsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRJbWFnZT46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFn
ZSkKQEAgLTE0OTMsNiArMTUxMCw4IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkSW1h
Z2U+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUGFzdGVib2FyZEltYWdlJiBwCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBwYXN0
ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
ICghZGVjb2RlQ2xpZW50VHlwZXNBbmREYXRhKGRlY29kZXIsIHBhc3RlYm9hcmRJbWFnZS5jbGll
bnRUeXBlcywgcGFzdGVib2FyZEltYWdlLmNsaWVudERhdGEpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkZTY1ZDJhNjljY2MzMmMyYTE3MmY2OTdkNTMxZTE5ZWVj
OWRlZTMxLi4zNDQwNzIyMTdiZDk0ZjNjMTJkMmI5MDc4YTZmNjU4MjM2OTJmZTY1IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTctMDYtMTEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisK
KyAgICAgICAgW2lPUyBEbkRdIEFsbG93IHRoZSBpbmplY3RlZCBidW5kbGUgdG8gYWRkIGNsaWVu
dCBkYXRhIHdoZW4gd3JpdGluZyBhbiBpbWFnZSB0byB0aGUgcGFzdGVib2FyZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczMjM4CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8zMTk0MzM3MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgdW5pdCB0ZXN0IHRvIHZlcmlmeSB0aGF0IGRhdGEg
aW5zZXJ0ZWQgYnkgdGhlIGluamVjdGVkIGJ1bmRsZSB3aGVuIGJlZ2lubmluZyBhIGRyYWcgb24g
YW4gaW1hZ2UKKyAgICAgICAgZWxlbWVudCBpcyBwbHVtYmVkIGFjcm9zcyB0byB0aGUgVUkgZGVs
ZWdhdGUuIEFsc28gcmVmYWN0b3JzIGluamVjdGVkIGJ1bmRsZSB1bml0IHRlc3RzIHRvIHVzZSB0
aGUgbmV3IHZlcnNpb24KKyAgICAgICAgb2YgYWRqdXN0ZWREYXRhSW50ZXJhY3Rpb25JdGVtUHJv
dmlkZXJzRm9ySXRlbVByb3ZpZGVyOiB0aGF0IHRha2VzIHJlcHJlc2VudGluZyBvYmplY3RzIGFu
ZCBhZGRpdGlvbmFsIGRhdGEuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9E
YXRhSW50ZXJhY3Rpb25UZXN0cy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5oOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5tbToK
KyAgICAgICAgKC1bRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIF93ZWJWaWV3OmFkanVzdGVkRGF0
YUludGVyYWN0aW9uSXRlbVByb3ZpZGVyc0Zvckl0ZW1Qcm92aWRlcjpyZXByZXNlbnRpbmdPYmpl
Y3RzOmFkZGl0aW9uYWxEYXRhOl0pOgorICAgICAgICAoLVtEYXRhSW50ZXJhY3Rpb25TaW11bGF0
b3IgX3dlYlZpZXc6YWRqdXN0ZWREYXRhSW50ZXJhY3Rpb25JdGVtUHJvdmlkZXJzOl0pOiBEZWxl
dGVkLgorCiAyMDE3LTA2LTA5ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgogCiAgICAgICAgIFtpT1MgRG5EXSBBZGQgYSBob29rIHRvIHBlcmZvcm0gdHdvLXN0ZXAgZHJv
cHMgaW4gZWRpdGFibGUgY29udGVudApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQppbmRleCA3NTBkZGE2MThmZGM1ZGY4MzEw
M2ZlMTExYzk1MjlkNWFhNmNhZTI2Li42OGQzMzVlNTc4MWI5NTQwYTJjMjhmODYyOGZkZDRlZjM0
YmY5M2Q4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50
ZXJhY3Rpb25UZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRh
SW50ZXJhY3Rpb25UZXN0cy5tbQpAQCAtNDQsNiArNDQsOCBAQAogdHlwZWRlZiB2b2lkICheRmls
ZUxvYWRDb21wbGV0aW9uQmxvY2spKE5TVVJMICosIEJPT0wsIE5TRXJyb3IgKik7CiB0eXBlZGVm
IHZvaWQgKF5EYXRhTG9hZENvbXBsZXRpb25CbG9jaykoTlNEYXRhICosIE5TRXJyb3IgKik7CiAK
K3N0YXRpYyBOU1N0cmluZyAqSW5qZWN0ZWRCdW5kbGVQYXN0ZWJvYXJkRGF0YVR5cGUgPSBAIm9y
Zy53ZWJraXQuZGF0YSI7CisKIHN0YXRpYyBVSUltYWdlICp0ZXN0SWNvbkltYWdlKCkKIHsKICAg
ICByZXR1cm4gW1VJSW1hZ2UgaW1hZ2VOYW1lZDpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzL2lj
b24ucG5nIl07CkBAIC03NTgsMjYgKzc2MCwzOSBAQCBURVNUKERhdGFJbnRlcmFjdGlvblRlc3Rz
LCBJbmplY3RlZEJ1bmRsZUFsbG93UGVyZm9ybVR3b1N0ZXBEcm9wKQogICAgIEVYUEVDVF9XS19T
VFJFUSgiSGVsbG8gd29ybGQiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiZWRpdG9yLnRleHRDb250ZW50Il0uVVRGOFN0cmluZyk7CiB9CiAKLVRFU1QoRGF0YUludGVy
YWN0aW9uVGVzdHMsIEF0dGFjaG1lbnRFbGVtZW50SXRlbVByb3ZpZGVycykKK1RFU1QoRGF0YUlu
dGVyYWN0aW9uVGVzdHMsIEluamVjdGVkQnVuZGxlSW1hZ2VFbGVtZW50RGF0YSkKK3sKKyAgICBX
S1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiQnVuZGxl
RWRpdGluZ0RlbGVnYXRlUGx1Z0luIl07CisgICAgW2NvbmZpZ3VyYXRpb24gX3NldEF0dGFjaG1l
bnRFbGVtZW50RW5hYmxlZDpZRVNdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3Vz
bHlMb2FkVGVzdFBhZ2VOYW1lZDpAImltYWdlLWFuZC1jb250ZW50ZWRpdGFibGUiXTsKKworICAg
IF9fYmxvY2sgUmV0YWluUHRyPE5TU3RyaW5nPiBpbmplY3RlZFN0cmluZzsKKyAgICBhdXRvIGRh
dGFJbnRlcmFjdGlvblNpbXVsYXRvciA9IGFkb3B0TlMoW1tEYXRhSW50ZXJhY3Rpb25TaW11bGF0
b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CisgICAgW2RhdGFJbnRl
cmFjdGlvblNpbXVsYXRvciBzZXRDb252ZXJ0SXRlbVByb3ZpZGVyc0Jsb2NrOl5OU0FycmF5ICoo
VUlJdGVtUHJvdmlkZXIgKml0ZW1Qcm92aWRlciwgTlNBcnJheSAqLCBOU0RpY3Rpb25hcnkgKmRh
dGEpCisgICAgeworICAgICAgICBpbmplY3RlZFN0cmluZyA9IGFkb3B0TlMoW1tOU1N0cmluZyBh
bGxvY10gaW5pdFdpdGhEYXRhOmRhdGFbSW5qZWN0ZWRCdW5kbGVQYXN0ZWJvYXJkRGF0YVR5cGVd
IGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgIHJldHVybiBAWyBpdGVt
UHJvdmlkZXIgXTsKKyAgICB9XTsKKworICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgcnVu
RnJvbTpDR1BvaW50TWFrZSgxMDAsIDUwKSB0bzpDR1BvaW50TWFrZSgxMDAsIDI1MCldOworCisg
ICAgRVhQRUNUX1dLX1NUUkVRKCJoZWxsbyIsIFtpbmplY3RlZFN0cmluZyBVVEY4U3RyaW5nXSk7
Cit9CisKK1RFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIEluamVjdGVkQnVuZGxlQXR0YWNobWVu
dEVsZW1lbnREYXRhKQogewotICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBj
b25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlv
bldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiQnVuZGxlRWRpdGluZ0RlbGVnYXRlUGx1Z0luIl07
CisgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdD
b25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpA
IkJ1bmRsZUVkaXRpbmdEZWxlZ2F0ZVBsdWdJbiJdOwogICAgIFtjb25maWd1cmF0aW9uIF9zZXRB
dHRhY2htZW50RWxlbWVudEVuYWJsZWQ6WUVTXTsKLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMy
MCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKICAg
ICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJhdHRhY2htZW50LWVs
ZW1lbnQiXTsKIAotICAgIE5TU3RyaW5nICppbmplY3RlZFR5cGVJZGVudGlmaWVyID0gQCJvcmcu
d2Via2l0LmRhdGEiOwogICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TU3RyaW5nPiBpbmplY3RlZFN0
cmluZzsKICAgICBhdXRvIGRhdGFJbnRlcmFjdGlvblNpbXVsYXRvciA9IGFkb3B0TlMoW1tEYXRh
SW50ZXJhY3Rpb25TaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgp
XSk7Ci0gICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBzZXRDb252ZXJ0SXRlbVByb3ZpZGVy
c0Jsb2NrOl5OU0FycmF5ICooTlNBcnJheSAqb3JpZ2luYWxJdGVtUHJvdmlkZXJzKQorICAgIFtk
YXRhSW50ZXJhY3Rpb25TaW11bGF0b3Igc2V0Q29udmVydEl0ZW1Qcm92aWRlcnNCbG9jazpeTlNB
cnJheSAqKFVJSXRlbVByb3ZpZGVyICppdGVtUHJvdmlkZXIsIE5TQXJyYXkgKiwgTlNEaWN0aW9u
YXJ5ICpkYXRhKQogICAgIHsKLSAgICAgICAgZm9yIChVSUl0ZW1Qcm92aWRlciAqcHJvdmlkZXIg
aW4gb3JpZ2luYWxJdGVtUHJvdmlkZXJzKSB7Ci0gICAgICAgICAgICBOU0RhdGEgKmluamVjdGVk
RGF0YSA9IFtwcm92aWRlciBjb3B5RGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6
aW5qZWN0ZWRUeXBlSWRlbnRpZmllciBlcnJvcjpuaWxdOwotICAgICAgICAgICAgaWYgKCFpbmpl
Y3RlZERhdGEubGVuZ3RoKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
aW5qZWN0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpp
bmplY3RlZERhdGEgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBvcmlnaW5hbEl0ZW1Qcm92aWRlcnM7
CisgICAgICAgIGluamVjdGVkU3RyaW5nID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0
V2l0aERhdGE6ZGF0YVtJbmplY3RlZEJ1bmRsZVBhc3RlYm9hcmREYXRhVHlwZV0gZW5jb2Rpbmc6
TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKKyAgICAgICAgcmV0dXJuIEBbIGl0ZW1Qcm92aWRlciBd
OwogICAgIH1dOwogCiAgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBydW5Gcm9tOkNHUG9p
bnRNYWtlKDUwLCA1MCkgdG86Q0dQb2ludE1ha2UoNTAsIDQwMCldOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmggYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuaAppbmRleCBjMTE0OTAz
NjhkNjMwZjI4NDEwOTJmNjYxZDRhMWMyYWE4ODJjNTlmLi42OWU0Zjk2MGM4MTU5YTNlNzVlNzA2
NmZiNjEwOGU2Yzk2YWE0NGRiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9E
YXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9E
YXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuaApAQCAtNzUsNyArNzUsNyBAQCB0eXBlZGVmIE5TX0VO
VU0oTlNJbnRlZ2VyLCBEYXRhSW50ZXJhY3Rpb25QaGFzZSkgewogQHByb3BlcnR5IChub25hdG9t
aWMpIEJPT0wgYWxsb3dzRm9jdXNUb1N0YXJ0SW5wdXRTZXNzaW9uOwogQHByb3BlcnR5IChub25h
dG9taWMpIEJPT0wgc2hvdWxkRW5zdXJlVUlBcHBsaWNhdGlvbjsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljKSBCbG9ja1B0cjxCT09MKF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopPiBzaG93Q3VzdG9t
QWN0aW9uU2hlZXRCbG9jazsKLUBwcm9wZXJ0eSAobm9uYXRvbWljKSBCbG9ja1B0cjxOU0FycmF5
ICooTlNBcnJheSAqKT4gY29udmVydEl0ZW1Qcm92aWRlcnNCbG9jazsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljKSBCbG9ja1B0cjxOU0FycmF5ICooVUlJdGVtUHJvdmlkZXIgKiwgTlNBcnJheSAqLCBO
U0RpY3Rpb25hcnkgKik+IGNvbnZlcnRJdGVtUHJvdmlkZXJzQmxvY2s7CiBAcHJvcGVydHkgKG5v
bmF0b21pYywgc3Ryb25nKSBOU0FycmF5ICpleHRlcm5hbEl0ZW1Qcm92aWRlcnM7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYykgQmxvY2tQdHI8TlNVSW50ZWdlcihOU1VJbnRlZ2VyLCBpZCk+IG92ZXJy
aWRlRGF0YUludGVyYWN0aW9uT3BlcmF0aW9uQmxvY2s7CiBAcHJvcGVydHkgKG5vbmF0b21pYykg
QmxvY2tQdHI8dm9pZChCT09MLCBOU0FycmF5ICopPiBkYXRhSW50ZXJhY3Rpb25PcGVyYXRpb25D
b21wbGV0aW9uQmxvY2s7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRh
SW50ZXJhY3Rpb25TaW11bGF0b3IubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50
ZXJhY3Rpb25TaW11bGF0b3IubW0KaW5kZXggMjAwZDcwNGY4Y2QzMGEyN2IzNjUwNmEwNzNlZWI4
NzI2YTdmYWEyZi4uODMwMTRhODAxODhjY2U1YmM5N2EwYjk3Y2Y1NWIyOWFjMjYyMmU1ZCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9y
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRv
ci5tbQpAQCAtMzA1LDkgKzMwNSw5IEBAIC0gKE5TVUludGVnZXIpX3dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgd2lsbFVwZGF0ZURhdGFJbnRlcmFjdGlvbk9wZXJhdGlvblRvCiAgICAgcmV0
dXJuIHNlbGYub3ZlcnJpZGVEYXRhSW50ZXJhY3Rpb25PcGVyYXRpb25CbG9jayA/IHNlbGYub3Zl
cnJpZGVEYXRhSW50ZXJhY3Rpb25PcGVyYXRpb25CbG9jayhvcGVyYXRpb24sIHNlc3Npb24pIDog
b3BlcmF0aW9uOwogfQogCi0tIChOU0FycmF5PFVJSXRlbVByb3ZpZGVyICo+Kilfd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBhZGp1c3RlZERhdGFJbnRlcmFjdGlvbkl0ZW1Qcm92aWRlcnM6
KE5TQXJyYXk8VUlJdGVtUHJvdmlkZXIgKj4qKW9yaWdpbmFsSXRlbVByb3ZpZGVycworLSAoTlNB
cnJheSAqKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGFkanVzdGVkRGF0YUludGVyYWN0
aW9uSXRlbVByb3ZpZGVyc0Zvckl0ZW1Qcm92aWRlcjooVUlJdGVtUHJvdmlkZXIgKilpdGVtUHJv
dmlkZXIgcmVwcmVzZW50aW5nT2JqZWN0czooTlNBcnJheSAqKXJlcHJlc2VudGluZ09iamVjdHMg
YWRkaXRpb25hbERhdGE6KE5TRGljdGlvbmFyeSAqKWFkZGl0aW9uYWxEYXRhCiB7Ci0gICAgcmV0
dXJuIHNlbGYuY29udmVydEl0ZW1Qcm92aWRlcnNCbG9jayA/IHNlbGYuY29udmVydEl0ZW1Qcm92
aWRlcnNCbG9jayhvcmlnaW5hbEl0ZW1Qcm92aWRlcnMpIDogb3JpZ2luYWxJdGVtUHJvdmlkZXJz
OworICAgIHJldHVybiBzZWxmLmNvbnZlcnRJdGVtUHJvdmlkZXJzQmxvY2sgPyBzZWxmLmNvbnZl
cnRJdGVtUHJvdmlkZXJzQmxvY2soaXRlbVByb3ZpZGVyLCByZXByZXNlbnRpbmdPYmplY3RzLCBh
ZGRpdGlvbmFsRGF0YSkgOiBAWyBpdGVtUHJvdmlkZXIgXTsKIH0KIAogLSAoQk9PTClfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBzaG93Q3VzdG9tU2hlZXRGb3JFbGVtZW50OihfV0tBY3Rp
dmF0ZWRFbGVtZW50SW5mbyAqKWVsZW1lbnQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312604</attachid>
            <date>2017-06-11 10:01:59 -0700</date>
            <delta_ts>2017-06-11 18:55:59 -0700</delta_ts>
            <desc>Fix GTK build</desc>
            <filename>bug-173238-20170611100159.patch</filename>
            <type>text/plain</type>
            <size>16481</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4MDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGNhMjMzYzZmZGFlYzdh
ODE2YWM5NjI1ZWE2OWUzYzA1NmM3NTJjYy4uZWNmNzMxNTA0NGE0NWQ0YzU3OGYxNjlhMmExNGMz
ZGU3ZDA4ZDc0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTA2LTExICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgRG5EXSBB
bGxvdyB0aGUgaW5qZWN0ZWQgYnVuZGxlIHRvIGFkZCBjbGllbnQgZGF0YSB3aGVuIHdyaXRpbmcg
YW4gaW1hZ2UgdG8gdGhlIHBhc3RlYm9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3MzIzOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzE5NDMz
NzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IGNsaWVudFR5cGVzIGFuZCBjbGllbnREYXRhIHRvIFBhc3RlYm9hcmRJbWFnZSwgYW5kIGNhbGwg
b3V0IHRvIHRoZSBpbmplY3RlZCBidW5kbGUgdXNpbmcKKyAgICAgICAgZ2V0Q2xpZW50UGFzdGVi
b2FyZERhdGFGb3JSYW5nZSB3aGVuIHdyaXRpbmcgYSBQYXN0ZWJvYXJkSW1hZ2UuIFdoZW4gZ2Vu
ZXJhdGluZyBpdGVtIHByb3ZpZGVycyBmb3IgZHJhZ2dpbmcgaW4KKyAgICAgICAgdGhlIFVJIHBy
b2Nlc3MgaW4gUGxhdGZvcm1QYXN0ZWJvYXJkLCBhZGQgYW55IGF2YWlsYWJsZSBjbGllbnQgZGF0
YSBhcyByZXByZXNlbnRhdGlvbnMgdG8gdGhlIGluaXRpYWxpemF0aW9uCisgICAgICAgIGxpc3Qg
dXNlZCB0byBzZXQgdGhlIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuCisKKyAgICAgICAgVGVz
dDogRGF0YUludGVyYWN0aW9uLkluamVjdGVkQnVuZGxlSW1hZ2VFbGVtZW50RGF0YQorCisgICAg
ICAgICogZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Ojp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJk
Lmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVPYmplY3RSZXByZXNlbnRh
dGlvbnMpOgorCiAyMDE3LTA2LTA5ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgog
CiAgICAgICAgIE1lZGlhIGVsZW1lbnRzIGFyZSBhbGxvd2VkIHRvIGNvbnRpbnVlIHRvIGxvYWQg
bWVkaWEgZGF0YSBhZnRlciBuYXZpZ2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTIxYmY4NTUwNmVmZTVl
OWUyMTBmNDUyNzY3Y2ZmMzM4NWZlMjk1YS4uYWI2ODRiNjY5NjAxYjI3Y2IzZDViODAzNmMyZjMx
NTZiNTNhYzBjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTA2LTExICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgRG5EXSBB
bGxvdyB0aGUgaW5qZWN0ZWQgYnVuZGxlIHRvIGFkZCBjbGllbnQgZGF0YSB3aGVuIHdyaXRpbmcg
YW4gaW1hZ2UgdG8gdGhlIHBhc3RlYm9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3MzIzOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzE5NDMz
NzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Vu
ZCBQYXN0ZWJvYXJkSW1hZ2UuY2xpZW50VHlwZXMgYW5kIFBhc3RlYm9hcmRJbWFnZS5jbGllbnRE
YXRhIG92ZXIgSVBDLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHA6CisgICAgICAgIChJUEM6OmVuY29kZUNsaWVudFR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJ
UEM6OmRlY29kZUNsaWVudFR5cGVzQW5kRGF0YSk6CisKKyAgICAgICAgRmFjdG9yIG91dCBjb21t
b24gbG9naWMgdXNlZCB0byBlbmNvZGUgYW5kIGRlY29kZSBjbGllbnQgdHlwZXMgYW5kIGRhdGEg
aW50byBzdGF0aWMgaGVscGVycy4KKworICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBhc3Rl
Ym9hcmRXZWJDb250ZW50Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxQ
YXN0ZWJvYXJkV2ViQ29udGVudD46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8UGFzdGVib2FyZEltYWdlPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2Rl
cjxQYXN0ZWJvYXJkSW1hZ2U+OjpkZWNvZGUpOgorCiAyMDE3LTA2LTA5ICBEYW5pZWwgQmF0ZXMg
IDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBDU1A6IEFwcGx5IGltZy1zcmMgZGlyZWN0
aXZlIHRvIGZhdmljb24gbG9hZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
aW9zL0VkaXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5t
bQppbmRleCA5NTA0MDI5MDhhMzcwZDczNDMxMjVhZWY3YTAwODIyNjBmYWUxYjMwLi4wNjMzNjAx
NzJmYzg4M2NiYWM3NTFmN2VlMjdhNzdiMmVjYjYyZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9pb3MvRWRpdG9ySU9TLm1tCkBAIC0yMTEsNiArMjExLDExIEBAIHZvaWQgRWRpdG9yOjp3cml0
ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQsIEVsZW1lbnQmIGltYWdl
RWxlbWVuCiAgICAgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUgPSBwYXN0ZWJvYXJk
LnJlc291cmNlTUlNRVR5cGUoY2FjaGVkSW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSk7CiAg
ICAgcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YSA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1
ZmZlcigpOwogCisgICAgUG9zaXRpb24gYmVmb3JlSW1hZ2VQb3NpdGlvbigmaW1hZ2VFbGVtZW50
LCBQb3NpdGlvbjo6UG9zaXRpb25Jc0JlZm9yZUFuY2hvcik7CisgICAgUG9zaXRpb24gYWZ0ZXJJ
bWFnZVBvc2l0aW9uKCZpbWFnZUVsZW1lbnQsIFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJBbmNo
b3IpOworICAgIFJlZlB0cjxSYW5nZT4gaW1hZ2VSYW5nZSA9IFJhbmdlOjpjcmVhdGUoaW1hZ2VF
bGVtZW50LmRvY3VtZW50KCksIGJlZm9yZUltYWdlUG9zaXRpb24sIGFmdGVySW1hZ2VQb3NpdGlv
bik7CisgICAgY2xpZW50KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoaW1hZ2VS
YW5nZS5nZXQoKSwgcGFzdGVib2FyZEltYWdlLmNsaWVudFR5cGVzLCBwYXN0ZWJvYXJkSW1hZ2Uu
Y2xpZW50RGF0YSk7CisKICAgICBwYXN0ZWJvYXJkLndyaXRlKHBhc3RlYm9hcmRJbWFnZSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCBlMzZmNzdmMDRlOTEzNDA4
MzY2ZWIzNDQ4ZDA5MGJlODdlZmUyYmRkLi43ZDU4ODk5Nzg3MzUyN2RlYjIwZDhiNzg2OWIzYjlk
NTVjNTEwNjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC0xMTAsNiAr
MTEwLDggQEAgc3RydWN0IFBhc3RlYm9hcmRJbWFnZSB7CiAjaWYgIShQTEFURk9STShHVEspIHx8
IFBMQVRGT1JNKFdJTikpCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhOwog
ICAgIFN0cmluZyByZXNvdXJjZU1JTUVUeXBlOworICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5
cGVzOworICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRp
ZgogICAgIFN0cmluZyBzdWdnZXN0ZWROYW1lOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDMxNmRhMmM1NGUy
MTRiMGY2MzU4NmE1NTQ4MmQxNDRiYTBiZjA4MDQuLjNhNmJhZWY2NDUxZDZjOTNmZDBiMjJhNjBm
OGQ4NGYyZGJjYzZiNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
bGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtMjY2LDYgKzI2NiwxMiBAQCB2b2lkIFBsYXRm
b3JtUGFzdGVib2FyZDo6d3JpdGVPYmplY3RSZXByZXNlbnRhdGlvbnMoY29uc3QgUGFzdGVib2Fy
ZEltYWdlJiBwYXN0ZQogI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQogICAgIFJldGFpblB0
cjxXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdD4gaXRlbXNUb1JlZ2lzdGVyID0g
YWRvcHROUyhbW1dlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0IGFsbG9jXSBpbml0
XSk7CiAKKyAgICBhdXRvJiB0eXBlcyA9IHBhc3RlYm9hcmRJbWFnZS5jbGllbnRUeXBlczsKKyAg
ICBhdXRvJiBkYXRhID0gcGFzdGVib2FyZEltYWdlLmNsaWVudERhdGE7CisgICAgQVNTRVJUKHR5
cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUg
PSB0eXBlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCisgICAgICAgIFtpdGVtc1RvUmVnaXN0ZXIg
YWRkRGF0YTpkYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsK
KwogICAgIGlmIChhdXRvIGltYWdlID0gcGFzdGVib2FyZEltYWdlLmltYWdlKSB7CiAgICAgICAg
IE5TU3RyaW5nICptaW1lVHlwZSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlOwog
ICAgICAgICBpZiAoVVRUeXBlSXNEZWNsYXJlZCgoQ0ZTdHJpbmdSZWYpbWltZVR5cGUpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4
IDdmOTkyMDdlNDhhY2QxZWI4NjE2MWE4YTMyNzRiZjA3NDczNGUyMzcuLjY1NzkwOGRkMzkzMzg5
YjM1NDkxOTJiM2IzZThiYTE4NmJjNmVhNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xNDI2LDYgKzE0MjYsMzIgQEAgYm9vbCBB
cmd1bWVudENvZGVyPFBhc3RlYm9hcmRVUkw+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUGFz
dGVib2FyZFVSTCYgY29udGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIHZvaWQgZW5j
b2RlQ2xpZW50VHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiB0eXBlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3sK
KyAgICBlbmNvZGVyIDw8IHR5cGVzOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KGRhdGEuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRhdGEuc2l6ZSgp
OyBpKyspCisgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBkYXRhW2ldLmdldCgp
KTsKK30KKworc3RhdGljIGJvb2wgZGVjb2RlQ2xpZW50VHlwZXNBbmREYXRhKERlY29kZXImIGRl
Y29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiYgZGF0YSkKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGVzKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgdWludDY0X3QgY2xpZW50RGF0YVNpemU7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShjbGllbnREYXRhU2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmIChjbGllbnREYXRhU2l6ZSkKKyAgICAgICAgZGF0YS5yZXNpemUoY2xpZW50RGF0YVNpemUp
OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjbGllbnREYXRhU2l6ZTsgaSsrKQorICAg
ICAgICBkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgZGF0YVtpXSk7CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwogdm9pZCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRXZWJDb250ZW50Pjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50
KQogewogICAgIGVuY29kZXIgPDwgY29udGVudC5jYW5TbWFydENvcHlPckRlbGV0ZTsKQEAgLTE0
MzYsMTAgKzE0NjIsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZFdlYkNvbnRlbnQ+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUGFzdGVibwogICAgIGVuY29kZVNoYXJl
ZEJ1ZmZlcihlbmNvZGVyLCBjb250ZW50LmRhdGFJblJURkZvcm1hdC5nZXQoKSk7CiAgICAgZW5j
b2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zv
cm1hdC5nZXQoKSk7CiAKLSAgICBlbmNvZGVyIDw8IGNvbnRlbnQuY2xpZW50VHlwZXM7Ci0gICAg
ZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oY29udGVudC5jbGllbnREYXRhLnNpemUo
KSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb250ZW50LmNsaWVudERhdGEuc2l6ZSgp
OyBpKyspCi0gICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBjb250ZW50LmNsaWVu
dERhdGFbaV0uZ2V0KCkpOworICAgIGVuY29kZUNsaWVudFR5cGVzQW5kRGF0YShlbmNvZGVyLCBj
b250ZW50LmNsaWVudFR5cGVzLCBjb250ZW50LmNsaWVudERhdGEpOwogfQogCiBib29sIEFyZ3Vt
ZW50Q29kZXI8UGFzdGVib2FyZFdlYkNvbnRlbnQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
UGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCkBAIC0xNDU2LDE1ICsxNDc5LDggQEAgYm9v
bCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRXZWJDb250ZW50Pjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIFBhc3RlYm9hcmRXZWIKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVj
b2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zv
cm1hdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNv
bnRlbnQuY2xpZW50VHlwZXMpKQorICAgIGlmICghZGVjb2RlQ2xpZW50VHlwZXNBbmREYXRhKGRl
Y29kZXIsIGNvbnRlbnQuY2xpZW50VHlwZXMsIGNvbnRlbnQuY2xpZW50RGF0YSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB1aW50NjRfdCBjbGllbnREYXRhU2l6ZTsKLSAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGNsaWVudERhdGFTaXplKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmIChjbGllbnREYXRhU2l6ZSkKLSAgICAgICAgY29udGVudC5jbGllbnREYXRhLnJlc2l6ZShj
bGllbnREYXRhU2l6ZSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjbGllbnREYXRhU2l6
ZTsgaSsrKQotICAgICAgICBkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgY29udGVudC5jbGll
bnREYXRhW2ldKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTQ3Nyw2ICsxNDkzLDcgQEAg
dm9pZCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRJbWFnZT46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBQYXN0ZWJvYXJkSW0KICAgICBlbmNvZGVyIDw8IHBhc3RlYm9hcmRJbWFnZS5z
dWdnZXN0ZWROYW1lOwogICAgIGlmIChwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhKQogICAg
ICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgcGFzdGVib2FyZEltYWdlLnJlc291cmNl
RGF0YS5nZXQoKSk7CisgICAgZW5jb2RlQ2xpZW50VHlwZXNBbmREYXRhKGVuY29kZXIsIHBhc3Rl
Ym9hcmRJbWFnZS5jbGllbnRUeXBlcywgcGFzdGVib2FyZEltYWdlLmNsaWVudERhdGEpOwogfQog
CiBib29sIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEltYWdlPjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQpAQCAtMTQ5Myw2ICsxNTEw
LDggQEAgYm9vbCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRJbWFnZT46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyLCBQYXN0ZWJvYXJkSW1hZ2UmIHAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJj
ZURhdGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVDbGllbnRUeXBl
c0FuZERhdGEoZGVjb2RlciwgcGFzdGVib2FyZEltYWdlLmNsaWVudFR5cGVzLCBwYXN0ZWJvYXJk
SW1hZ2UuY2xpZW50RGF0YSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGRlNjVkMmE2OWNjYzMyYzJhMTcyZjY5N2Q1MzFlMTllZWM5ZGVlMzEuLjM0NDA3MjIxN2Jk
OTRmM2MxMmQyYjkwNzhhNmY2NTgyMzY5MmZlNjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNy0wNi0xMSAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TIERuRF0g
QWxsb3cgdGhlIGluamVjdGVkIGJ1bmRsZSB0byBhZGQgY2xpZW50IGRhdGEgd2hlbiB3cml0aW5n
IGFuIGltYWdlIHRvIHRoZSBwYXN0ZWJvYXJkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMyMzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMxOTQz
MzcwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBhIG5ldyB1bml0IHRlc3QgdG8gdmVyaWZ5IHRoYXQgZGF0YSBpbnNlcnRlZCBieSB0aGUgaW5q
ZWN0ZWQgYnVuZGxlIHdoZW4gYmVnaW5uaW5nIGEgZHJhZyBvbiBhbiBpbWFnZQorICAgICAgICBl
bGVtZW50IGlzIHBsdW1iZWQgYWNyb3NzIHRvIHRoZSBVSSBkZWxlZ2F0ZS4gQWxzbyByZWZhY3Rv
cnMgaW5qZWN0ZWQgYnVuZGxlIHVuaXQgdGVzdHMgdG8gdXNlIHRoZSBuZXcgdmVyc2lvbgorICAg
ICAgICBvZiBhZGp1c3RlZERhdGFJbnRlcmFjdGlvbkl0ZW1Qcm92aWRlcnNGb3JJdGVtUHJvdmlk
ZXI6IHRoYXQgdGFrZXMgcmVwcmVzZW50aW5nIG9iamVjdHMgYW5kIGFkZGl0aW9uYWwgZGF0YS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3Rz
Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmg6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLm1tOgorICAgICAgICAoLVtEYXRhSW50
ZXJhY3Rpb25TaW11bGF0b3IgX3dlYlZpZXc6YWRqdXN0ZWREYXRhSW50ZXJhY3Rpb25JdGVtUHJv
dmlkZXJzRm9ySXRlbVByb3ZpZGVyOnJlcHJlc2VudGluZ09iamVjdHM6YWRkaXRpb25hbERhdGE6
XSk6CisgICAgICAgICgtW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBfd2ViVmlldzphZGp1c3Rl
ZERhdGFJbnRlcmFjdGlvbkl0ZW1Qcm92aWRlcnM6XSk6IERlbGV0ZWQuCisKIDIwMTctMDYtMDkg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPUyBE
bkRdIEFkZCBhIGhvb2sgdG8gcGVyZm9ybSB0d28tc3RlcCBkcm9wcyBpbiBlZGl0YWJsZSBjb250
ZW50CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJh
Y3Rpb25UZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFj
dGlvblRlc3RzLm1tCmluZGV4IDc1MGRkYTYxOGZkYzVkZjgzMTAzZmUxMTFjOTUyOWQ1YWE2Y2Fl
MjYuLjY4ZDMzNWU1NzgxYjk1NDBhMmMyOGY4NjI4ZmRkNGVmMzRiZjkzZDggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1t
CkBAIC00NCw2ICs0NCw4IEBACiB0eXBlZGVmIHZvaWQgKF5GaWxlTG9hZENvbXBsZXRpb25CbG9j
aykoTlNVUkwgKiwgQk9PTCwgTlNFcnJvciAqKTsKIHR5cGVkZWYgdm9pZCAoXkRhdGFMb2FkQ29t
cGxldGlvbkJsb2NrKShOU0RhdGEgKiwgTlNFcnJvciAqKTsKIAorc3RhdGljIE5TU3RyaW5nICpJ
bmplY3RlZEJ1bmRsZVBhc3RlYm9hcmREYXRhVHlwZSA9IEAib3JnLndlYmtpdC5kYXRhIjsKKwog
c3RhdGljIFVJSW1hZ2UgKnRlc3RJY29uSW1hZ2UoKQogewogICAgIHJldHVybiBbVUlJbWFnZSBp
bWFnZU5hbWVkOkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMvaWNvbi5wbmciXTsKQEAgLTc1OCwy
NiArNzYwLDM5IEBAIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIEluamVjdGVkQnVuZGxlQWxs
b3dQZXJmb3JtVHdvU3RlcERyb3ApCiAgICAgRVhQRUNUX1dLX1NUUkVRKCJIZWxsbyB3b3JsZCIs
IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJlZGl0b3IudGV4dENvbnRl
bnQiXS5VVEY4U3RyaW5nKTsKIH0KIAotVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgQXR0YWNo
bWVudEVsZW1lbnRJdGVtUHJvdmlkZXJzKQorVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgSW5q
ZWN0ZWRCdW5kbGVJbWFnZUVsZW1lbnREYXRhKQoreworICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRp
b24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1
cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJCdW5kbGVFZGl0aW5nRGVsZWdhdGVQbHVn
SW4iXTsKKyAgICBbY29uZmlndXJhdGlvbiBfc2V0QXR0YWNobWVudEVsZW1lbnRFbmFibGVkOllF
U107CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVk
OkAiaW1hZ2UtYW5kLWNvbnRlbnRlZGl0YWJsZSJdOworCisgICAgX19ibG9jayBSZXRhaW5QdHI8
TlNTdHJpbmc+IGluamVjdGVkU3RyaW5nOworICAgIGF1dG8gZGF0YUludGVyYWN0aW9uU2ltdWxh
dG9yID0gYWRvcHROUyhbW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhX
ZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKKyAgICBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHNl
dENvbnZlcnRJdGVtUHJvdmlkZXJzQmxvY2s6Xk5TQXJyYXkgKihVSUl0ZW1Qcm92aWRlciAqaXRl
bVByb3ZpZGVyLCBOU0FycmF5ICosIE5TRGljdGlvbmFyeSAqZGF0YSkKKyAgICB7CisgICAgICAg
IGluamVjdGVkU3RyaW5nID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6
ZGF0YVtJbmplY3RlZEJ1bmRsZVBhc3RlYm9hcmREYXRhVHlwZV0gZW5jb2Rpbmc6TlNVVEY4U3Ry
aW5nRW5jb2RpbmddKTsKKyAgICAgICAgcmV0dXJuIEBbIGl0ZW1Qcm92aWRlciBdOworICAgIH1d
OworCisgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDEw
MCwgNTApIHRvOkNHUG9pbnRNYWtlKDEwMCwgMjUwKV07CisKKyAgICBFWFBFQ1RfV0tfU1RSRVEo
ImhlbGxvIiwgW2luamVjdGVkU3RyaW5nIFVURjhTdHJpbmddKTsKK30KKworVEVTVChEYXRhSW50
ZXJhY3Rpb25UZXN0cywgSW5qZWN0ZWRCdW5kbGVBdHRhY2htZW50RWxlbWVudERhdGEpCiB7Ci0g
ICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFz
c05hbWU6QCJCdW5kbGVFZGl0aW5nRGVsZWdhdGVQbHVnSW4iXTsKKyAgICBXS1dlYlZpZXdDb25m
aWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3Rf
Y29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiQnVuZGxlRWRpdGluZ0RlbGVn
YXRlUGx1Z0luIl07CiAgICAgW2NvbmZpZ3VyYXRpb24gX3NldEF0dGFjaG1lbnRFbGVtZW50RW5h
YmxlZDpZRVNdOwotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwogICAgIFt3ZWJWaWV3IHN5bmNocm9u
b3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImF0dGFjaG1lbnQtZWxlbWVudCJdOwogCi0gICAgTlNT
dHJpbmcgKmluamVjdGVkVHlwZUlkZW50aWZpZXIgPSBAIm9yZy53ZWJraXQuZGF0YSI7CiAgICAg
X19ibG9jayBSZXRhaW5QdHI8TlNTdHJpbmc+IGluamVjdGVkU3RyaW5nOwogICAgIGF1dG8gZGF0
YUludGVyYWN0aW9uU2ltdWxhdG9yID0gYWRvcHROUyhbW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRv
ciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKLSAgICBbZGF0YUludGVy
YWN0aW9uU2ltdWxhdG9yIHNldENvbnZlcnRJdGVtUHJvdmlkZXJzQmxvY2s6Xk5TQXJyYXkgKihO
U0FycmF5ICpvcmlnaW5hbEl0ZW1Qcm92aWRlcnMpCisgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVs
YXRvciBzZXRDb252ZXJ0SXRlbVByb3ZpZGVyc0Jsb2NrOl5OU0FycmF5ICooVUlJdGVtUHJvdmlk
ZXIgKml0ZW1Qcm92aWRlciwgTlNBcnJheSAqLCBOU0RpY3Rpb25hcnkgKmRhdGEpCiAgICAgewot
ICAgICAgICBmb3IgKFVJSXRlbVByb3ZpZGVyICpwcm92aWRlciBpbiBvcmlnaW5hbEl0ZW1Qcm92
aWRlcnMpIHsKLSAgICAgICAgICAgIE5TRGF0YSAqaW5qZWN0ZWREYXRhID0gW3Byb3ZpZGVyIGNv
cHlEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjppbmplY3RlZFR5cGVJZGVudGlm
aWVyIGVycm9yOm5pbF07Ci0gICAgICAgICAgICBpZiAoIWluamVjdGVkRGF0YS5sZW5ndGgpCi0g
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpbmplY3RlZFN0cmluZyA9IGFk
b3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmluamVjdGVkRGF0YSBlbmNvZGlu
ZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIG9yaWdpbmFsSXRlbVByb3ZpZGVyczsKKyAgICAgICAgaW5qZWN0ZWRT
dHJpbmcgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhW0luamVj
dGVkQnVuZGxlUGFzdGVib2FyZERhdGFUeXBlXSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGlu
Z10pOworICAgICAgICByZXR1cm4gQFsgaXRlbVByb3ZpZGVyIF07CiAgICAgfV07CiAKICAgICBb
ZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoNTAsIDUwKSB0bzpD
R1BvaW50TWFrZSg1MCwgNDAwKV07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lv
cy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0Rh
dGFJbnRlcmFjdGlvblNpbXVsYXRvci5oCmluZGV4IGMxMTQ5MDM2OGQ2MzBmMjg0MTA5MmY2NjFk
NGExYzJhYTg4MmM1OWYuLjY5ZTRmOTYwYzgxNTlhM2U3NWU3MDY2ZmI2MTA4ZTZjOTZhYTQ0ZGIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVs
YXRvci5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVs
YXRvci5oCkBAIC03NSw3ICs3NSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIERhdGFJ
bnRlcmFjdGlvblBoYXNlKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBhbGxvd3NGb2N1
c1RvU3RhcnRJbnB1dFNlc3Npb247CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBzaG91bGRF
bnN1cmVVSUFwcGxpY2F0aW9uOwogQHByb3BlcnR5IChub25hdG9taWMpIEJsb2NrUHRyPEJPT0wo
X1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKik+IHNob3dDdXN0b21BY3Rpb25TaGVldEJsb2NrOwot
QHByb3BlcnR5IChub25hdG9taWMpIEJsb2NrUHRyPE5TQXJyYXkgKihOU0FycmF5ICopPiBjb252
ZXJ0SXRlbVByb3ZpZGVyc0Jsb2NrOworQHByb3BlcnR5IChub25hdG9taWMpIEJsb2NrUHRyPE5T
QXJyYXkgKihVSUl0ZW1Qcm92aWRlciAqLCBOU0FycmF5ICosIE5TRGljdGlvbmFyeSAqKT4gY29u
dmVydEl0ZW1Qcm92aWRlcnNCbG9jazsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcpIE5T
QXJyYXkgKmV4dGVybmFsSXRlbVByb3ZpZGVyczsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCbG9j
a1B0cjxOU1VJbnRlZ2VyKE5TVUludGVnZXIsIGlkKT4gb3ZlcnJpZGVEYXRhSW50ZXJhY3Rpb25P
cGVyYXRpb25CbG9jazsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCbG9ja1B0cjx2b2lkKEJPT0ws
IE5TQXJyYXkgKik+IGRhdGFJbnRlcmFjdGlvbk9wZXJhdGlvbkNvbXBsZXRpb25CbG9jazsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRv
ci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5t
bQppbmRleCAyMDBkNzA0ZjhjZDMwYTI3YjM2NTA2YTA3M2VlYjg3MjZhN2ZhYTJmLi44MzAxNGE4
MDE4OGNjZTViYzk3YTBiOTdjZjU1YjI5YWMyNjIyZTVkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLm1tCkBAIC0zMDUsOSArMzA1
LDkgQEAgLSAoTlNVSW50ZWdlcilfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyB3aWxsVXBk
YXRlRGF0YUludGVyYWN0aW9uT3BlcmF0aW9uVG8KICAgICByZXR1cm4gc2VsZi5vdmVycmlkZURh
dGFJbnRlcmFjdGlvbk9wZXJhdGlvbkJsb2NrID8gc2VsZi5vdmVycmlkZURhdGFJbnRlcmFjdGlv
bk9wZXJhdGlvbkJsb2NrKG9wZXJhdGlvbiwgc2Vzc2lvbikgOiBvcGVyYXRpb247CiB9CiAKLS0g
KE5TQXJyYXk8VUlJdGVtUHJvdmlkZXIgKj4qKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IGFkanVzdGVkRGF0YUludGVyYWN0aW9uSXRlbVByb3ZpZGVyczooTlNBcnJheTxVSUl0ZW1Qcm92
aWRlciAqPiopb3JpZ2luYWxJdGVtUHJvdmlkZXJzCistIChOU0FycmF5ICopX3dlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgYWRqdXN0ZWREYXRhSW50ZXJhY3Rpb25JdGVtUHJvdmlkZXJzRm9y
SXRlbVByb3ZpZGVyOihVSUl0ZW1Qcm92aWRlciAqKWl0ZW1Qcm92aWRlciByZXByZXNlbnRpbmdP
YmplY3RzOihOU0FycmF5ICopcmVwcmVzZW50aW5nT2JqZWN0cyBhZGRpdGlvbmFsRGF0YTooTlNE
aWN0aW9uYXJ5ICopYWRkaXRpb25hbERhdGEKIHsKLSAgICByZXR1cm4gc2VsZi5jb252ZXJ0SXRl
bVByb3ZpZGVyc0Jsb2NrID8gc2VsZi5jb252ZXJ0SXRlbVByb3ZpZGVyc0Jsb2NrKG9yaWdpbmFs
SXRlbVByb3ZpZGVycykgOiBvcmlnaW5hbEl0ZW1Qcm92aWRlcnM7CisgICAgcmV0dXJuIHNlbGYu
Y29udmVydEl0ZW1Qcm92aWRlcnNCbG9jayA/IHNlbGYuY29udmVydEl0ZW1Qcm92aWRlcnNCbG9j
ayhpdGVtUHJvdmlkZXIsIHJlcHJlc2VudGluZ09iamVjdHMsIGFkZGl0aW9uYWxEYXRhKSA6IEBb
IGl0ZW1Qcm92aWRlciBdOwogfQogCiAtIChCT09MKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IHNob3dDdXN0b21TaGVldEZvckVsZW1lbnQ6KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICop
ZWxlbWVudAo=
</data>
<flag name="review"
          id="333526"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312684</attachid>
            <date>2017-06-12 12:25:56 -0700</date>
            <delta_ts>2017-06-12 13:05:11 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-173238-20170612122555.patch</filename>
            <type>text/plain</type>
            <size>16650</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4MTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDI2YjgwMGMzZThjZjA3
MzFjY2UyYTNjNzBhNzc3MGMyZTYzMWEyYS4uNDlmODE1NThkZGFhNDA1YWE1NGE0YmMwZWJjMjZh
ODc4N2VkZjgwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTA2LTExICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgRG5EXSBB
bGxvdyB0aGUgaW5qZWN0ZWQgYnVuZGxlIHRvIGFkZCBjbGllbnQgZGF0YSB3aGVuIHdyaXRpbmcg
YW4gaW1hZ2UgdG8gdGhlIHBhc3RlYm9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3MzIzOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzE5NDMz
NzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhIGFuZCBUaW0gSG9ydG9uLgor
CisgICAgICAgIEFkZCBjbGllbnRUeXBlcyBhbmQgY2xpZW50RGF0YSB0byBQYXN0ZWJvYXJkSW1h
Z2UsIGFuZCBjYWxsIG91dCB0byB0aGUgaW5qZWN0ZWQgYnVuZGxlIHVzaW5nCisgICAgICAgIGdl
dENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Ugd2hlbiB3cml0aW5nIGEgUGFzdGVib2FyZElt
YWdlLiBXaGVuIGdlbmVyYXRpbmcgaXRlbSBwcm92aWRlcnMgZm9yIGRyYWdnaW5nIGluCisgICAg
ICAgIHRoZSBVSSBwcm9jZXNzIGluIFBsYXRmb3JtUGFzdGVib2FyZCwgYWRkIGFueSBhdmFpbGFi
bGUgY2xpZW50IGRhdGEgYXMgcmVwcmVzZW50YXRpb25zIHRvIHRoZSBpbml0aWFsaXphdGlvbgor
ICAgICAgICBsaXN0IHVzZWQgdG8gc2V0IHRoZSBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLgor
CisgICAgICAgIFRlc3Q6IERhdGFJbnRlcmFjdGlvbi5JbmplY3RlZEJ1bmRsZUltYWdlRWxlbWVu
dERhdGEKKworICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZCk6CisgICAgICAgICogcGxhdGZv
cm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9h
cmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlT2Jq
ZWN0UmVwcmVzZW50YXRpb25zKToKKwogMjAxNy0wNi0xMiAgSmVyZW15IEpvbmVzICA8amVyZW15
akBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQVZQbGF5ZXJDb250cm9sbGVyIG1pblRpbWUgYW5k
IG1heFRpbWUgc2hvdWxkIGJlIGNhbGN1bGF0ZWQgcHJvcGVydGllcyB0byBwcm92aWRlIGNvcnJl
Y3QgdmFsdWVzIHdoZW4gc3RyZWFtaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDYxNjJkNzhjMGFkYmViZDFh
MzgxMjkwNTQ3OTVkYjgwMjZiYTc2OTMuLjkyYzc5NDE3OTI0MDk1N2E5ODY5ZTNmY2ZiYTk2YmI1
MmYzMjk3YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxNy0wNi0xMSAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TIERuRF0gQWxs
b3cgdGhlIGluamVjdGVkIGJ1bmRsZSB0byBhZGQgY2xpZW50IGRhdGEgd2hlbiB3cml0aW5nIGFu
IGltYWdlIHRvIHRoZSBwYXN0ZWJvYXJkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzMyMzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMxOTQzMzcw
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YSBhbmQgVGltIEhvcnRvbi4KKwor
ICAgICAgICBTZW5kIFBhc3RlYm9hcmRJbWFnZS5jbGllbnRUeXBlcyBhbmQgUGFzdGVib2FyZElt
YWdlLmNsaWVudERhdGEgb3ZlciBJUEMuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6ZW5jb2RlQ2xpZW50VHlwZXNBbmREYXRhKToK
KyAgICAgICAgKElQQzo6ZGVjb2RlQ2xpZW50VHlwZXNBbmREYXRhKToKKworICAgICAgICBGYWN0
b3Igb3V0IGNvbW1vbiBsb2dpYyB1c2VkIHRvIGVuY29kZSBhbmQgZGVjb2RlIGNsaWVudCB0eXBl
cyBhbmQgZGF0YSBpbnRvIHN0YXRpYyBoZWxwZXJzLgorCisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8UGFzdGVib2FyZFdlYkNvbnRlbnQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFBhc3RlYm9hcmRXZWJDb250ZW50Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkSW1hZ2U+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFBhc3RlYm9hcmRJbWFnZT46OmRlY29kZSk6CisKIDIwMTctMDYtMTIgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWdyZXNzaW9uKHIyMTc4
NjcpOiBMZWdhY3kgU2Vzc2lvbkhpc3RvcnlFbnRyeURhdGEgZm9ybWF0IHNob3VsZCBub3QgY2hh
bmdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KaW5kZXggOTUwNDAyOTA4
YTM3MGQ3MzQzMTI1YWVmN2EwMDgyMjYwZmFlMWIzMC4uMDYzMzYwMTcyZmM4ODNjYmFjNzUxZjdl
ZTI3YTc3YjJlY2I2MmY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3Mv
RWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5t
bQpAQCAtMjExLDYgKzIxMSwxMSBAQCB2b2lkIEVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2Fy
ZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkLCBFbGVtZW50JiBpbWFnZUVsZW1lbgogICAgIHBhc3Rl
Ym9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlID0gcGFzdGVib2FyZC5yZXNvdXJjZU1JTUVUeXBl
KGNhY2hlZEltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCkpOwogICAgIHBhc3RlYm9hcmRJbWFn
ZS5yZXNvdXJjZURhdGEgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKTsKIAorICAgIFBv
c2l0aW9uIGJlZm9yZUltYWdlUG9zaXRpb24oJmltYWdlRWxlbWVudCwgUG9zaXRpb246OlBvc2l0
aW9uSXNCZWZvcmVBbmNob3IpOworICAgIFBvc2l0aW9uIGFmdGVySW1hZ2VQb3NpdGlvbigmaW1h
Z2VFbGVtZW50LCBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9yKTsKKyAgICBSZWZQdHI8
UmFuZ2U+IGltYWdlUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGltYWdlRWxlbWVudC5kb2N1bWVudCgp
LCBiZWZvcmVJbWFnZVBvc2l0aW9uLCBhZnRlckltYWdlUG9zaXRpb24pOworICAgIGNsaWVudCgp
LT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKGltYWdlUmFuZ2UuZ2V0KCksIHBhc3Rl
Ym9hcmRJbWFnZS5jbGllbnRUeXBlcywgcGFzdGVib2FyZEltYWdlLmNsaWVudERhdGEpOworCiAg
ICAgcGFzdGVib2FyZC53cml0ZShwYXN0ZWJvYXJkSW1hZ2UpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggZTM2Zjc3ZjA0ZTkxMzQwODM2NmViMzQ0OGQwOTBiZTg3
ZWZlMmJkZC4uN2Q1ODg5OTc4NzM1MjdkZWIyMGQ4Yjc4NjliM2I5ZDU1YzUxMDY5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtMTEwLDYgKzExMCw4IEBAIHN0cnVjdCBQ
YXN0ZWJvYXJkSW1hZ2UgewogI2lmICEoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pKQog
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKICAgICBTdHJpbmcgcmVzb3Vy
Y2VNSU1FVHlwZTsKKyAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKKyAgICBWZWN0b3I8
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAgICBTdHJpbmcgc3Vn
Z2VzdGVkTmFtZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bs
YXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCAzMTZkYTJjNTRlMjE0YjBmNjM1ODZhNTU0ODJk
MTQ0YmEwYmYwODA0Li4zYTZiYWVmNjQ1MWQ2YzkzZmQwYjIyYTYwZjhkODRmMmRiY2M2YjQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJk
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9h
cmRJT1MubW0KQEAgLTI2Niw2ICsyNjYsMTIgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6Ondy
aXRlT2JqZWN0UmVwcmVzZW50YXRpb25zKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGUKICNp
ZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKICAgICBSZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVy
UmVnaXN0cmF0aW9uSW5mb0xpc3Q+IGl0ZW1zVG9SZWdpc3RlciA9IGFkb3B0TlMoW1tXZWJJdGVt
UHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdCBhbGxvY10gaW5pdF0pOwogCisgICAgYXV0byYg
dHlwZXMgPSBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50VHlwZXM7CisgICAgYXV0byYgZGF0YSA9IHBh
c3RlYm9hcmRJbWFnZS5jbGllbnREYXRhOworICAgIEFTU0VSVCh0eXBlcy5zaXplKCkgPT0gZGF0
YS5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gdHlwZXMuc2l6ZSgpOyBp
IDwgc2l6ZTsgKytpKQorICAgICAgICBbaXRlbXNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CisKICAgICBpZiAoYXV0byBp
bWFnZSA9IHBhc3RlYm9hcmRJbWFnZS5pbWFnZSkgewogICAgICAgICBOU1N0cmluZyAqbWltZVR5
cGUgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZTsKICAgICAgICAgaWYgKFVUVHlw
ZUlzRGVjbGFyZWQoKENGU3RyaW5nUmVmKW1pbWVUeXBlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA3Zjk5MjA3ZTQ4YWNkMWVi
ODYxNjFhOGEzMjc0YmYwNzQ3MzRlMjM3Li43NDdjNjc5YzkzYzQwMjIyZWQ2NzFmMTAzZTkwNDY4
NjU1MjY4NDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcApAQCAtMTQyNiw2ICsxNDI2LDMzIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0
ZWJvYXJkVVJMPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFBhc3RlYm9hcmRVUkwmIGNvbnRl
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyB2b2lkIGVuY29kZUNsaWVudFR5cGVzQW5k
RGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0
IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCit7CisgICAgQVNTRVJUKHR5cGVz
LnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CisgICAgZW5jb2RlciA8PCB0eXBlczsKKyAgICBlbmNv
ZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihkYXRhLnNpemUoKSk7CisgICAgZm9yIChzaXpl
X3QgaSA9IDAsIHNpemUgPSB0eXBlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCisgICAgICAgIGVu
Y29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBkYXRhW2ldLmdldCgpKTsKK30KKworc3RhdGljIGJv
b2wgZGVjb2RlQ2xpZW50VHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJp
bmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3sKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHR5cGVzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
dWludDY0X3QgY2xpZW50RGF0YVNpemU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjbGllbnRE
YXRhU2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChjbGllbnREYXRhU2l6
ZSkKKyAgICAgICAgZGF0YS5yZXNpemUoY2xpZW50RGF0YVNpemUpOworCisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBjbGllbnREYXRhU2l6ZTsgaSsrKQorICAgICAgICBkZWNvZGVTaGFyZWRC
dWZmZXIoZGVjb2RlciwgZGF0YVtpXSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBB
cmd1bWVudENvZGVyPFBhc3RlYm9hcmRXZWJDb250ZW50Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQogewogICAgIGVuY29kZXIg
PDwgY29udGVudC5jYW5TbWFydENvcHlPckRlbGV0ZTsKQEAgLTE0MzYsMTAgKzE0NjMsNyBAQCB2
b2lkIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZFdlYkNvbnRlbnQ+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgUGFzdGVibwogICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBj
b250ZW50LmRhdGFJblJURkZvcm1hdC5nZXQoKSk7CiAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVu
Y29kZXIsIGNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC5nZXQoKSk7CiAKLSAg
ICBlbmNvZGVyIDw8IGNvbnRlbnQuY2xpZW50VHlwZXM7Ci0gICAgZW5jb2RlciA8PCBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4oY29udGVudC5jbGllbnREYXRhLnNpemUoKSk7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBjb250ZW50LmNsaWVudERhdGEuc2l6ZSgpOyBpKyspCi0gICAgICAgIGVu
Y29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBjb250ZW50LmNsaWVudERhdGFbaV0uZ2V0KCkpOwor
ICAgIGVuY29kZUNsaWVudFR5cGVzQW5kRGF0YShlbmNvZGVyLCBjb250ZW50LmNsaWVudFR5cGVz
LCBjb250ZW50LmNsaWVudERhdGEpOwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8UGFzdGVib2Fy
ZFdlYkNvbnRlbnQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUGFzdGVib2FyZFdlYkNvbnRl
bnQmIGNvbnRlbnQpCkBAIC0xNDU2LDE1ICsxNDgwLDggQEAgYm9vbCBBcmd1bWVudENvZGVyPFBh
c3RlYm9hcmRXZWJDb250ZW50Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFBhc3RlYm9hcmRX
ZWIKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRl
Y29kZXIsIGNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbnRlbnQuY2xpZW50VHlwZXMp
KQorICAgIGlmICghZGVjb2RlQ2xpZW50VHlwZXNBbmREYXRhKGRlY29kZXIsIGNvbnRlbnQuY2xp
ZW50VHlwZXMsIGNvbnRlbnQuY2xpZW50RGF0YSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB1aW50NjRfdCBjbGllbnREYXRhU2l6ZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNsaWVu
dERhdGFTaXplKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChjbGllbnREYXRhU2l6
ZSkKLSAgICAgICAgY29udGVudC5jbGllbnREYXRhLnJlc2l6ZShjbGllbnREYXRhU2l6ZSk7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjbGllbnREYXRhU2l6ZTsgaSsrKQotICAgICAgICBk
ZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgY29udGVudC5jbGllbnREYXRhW2ldKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTQ3Nyw2ICsxNDk0LDcgQEAgdm9pZCBBcmd1bWVudENvZGVy
PFBhc3RlYm9hcmRJbWFnZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBQYXN0ZWJv
YXJkSW0KICAgICBlbmNvZGVyIDw8IHBhc3RlYm9hcmRJbWFnZS5zdWdnZXN0ZWROYW1lOwogICAg
IGlmIChwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhKQogICAgICAgICBlbmNvZGVTaGFyZWRC
dWZmZXIoZW5jb2RlciwgcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS5nZXQoKSk7CisgICAg
ZW5jb2RlQ2xpZW50VHlwZXNBbmREYXRhKGVuY29kZXIsIHBhc3RlYm9hcmRJbWFnZS5jbGllbnRU
eXBlcywgcGFzdGVib2FyZEltYWdlLmNsaWVudERhdGEpOwogfQogCiBib29sIEFyZ3VtZW50Q29k
ZXI8UGFzdGVib2FyZEltYWdlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFBhc3RlYm9hcmRJ
bWFnZSYgcGFzdGVib2FyZEltYWdlKQpAQCAtMTQ5Myw2ICsxNTExLDggQEAgYm9vbCBBcmd1bWVu
dENvZGVyPFBhc3RlYm9hcmRJbWFnZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWJv
YXJkSW1hZ2UmIHAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2RlU2hhcmVk
QnVmZmVyKGRlY29kZXIsIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVDbGllbnRUeXBlc0FuZERhdGEoZGVjb2Rlciwg
cGFzdGVib2FyZEltYWdlLmNsaWVudFR5cGVzLCBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDc5MjA0ZGI2YzIwOTQ5
YzA0ZDkxZTg5MDYyYzIzZDRhMTRmODllZjIuLjc0MGRjNTAzMjhlZDU4YzNlNDVmYmQzMDRlOTgw
NWYzMjA4MTU0MWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNy0wNi0xMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TIERuRF0gQWxsb3cgdGhlIGluamVjdGVk
IGJ1bmRsZSB0byBhZGQgY2xpZW50IGRhdGEgd2hlbiB3cml0aW5nIGFuIGltYWdlIHRvIHRoZSBw
YXN0ZWJvYXJkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzMyMzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMxOTQzMzcwPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFJ5b3N1a2UgTml3YSBhbmQgVGltIEhvcnRvbi4KKworICAgICAgICBBZGQgYSBu
ZXcgdW5pdCB0ZXN0IHRvIHZlcmlmeSB0aGF0IGRhdGEgaW5zZXJ0ZWQgYnkgdGhlIGluamVjdGVk
IGJ1bmRsZSB3aGVuIGJlZ2lubmluZyBhIGRyYWcgb24gYW4gaW1hZ2UKKyAgICAgICAgZWxlbWVu
dCBpcyBwbHVtYmVkIGFjcm9zcyB0byB0aGUgVUkgZGVsZWdhdGUuIEFsc28gcmVmYWN0b3JzIGlu
amVjdGVkIGJ1bmRsZSB1bml0IHRlc3RzIHRvIHVzZSB0aGUgbmV3IHZlcnNpb24KKyAgICAgICAg
b2YgYWRqdXN0ZWREYXRhSW50ZXJhY3Rpb25JdGVtUHJvdmlkZXJzRm9ySXRlbVByb3ZpZGVyOiB0
aGF0IHRha2VzIHJlcHJlc2VudGluZyBvYmplY3RzIGFuZCBhZGRpdGlvbmFsIGRhdGEuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
aW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
aW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5tbToKKyAgICAgICAgKC1bRGF0YUludGVyYWN0
aW9uU2ltdWxhdG9yIF93ZWJWaWV3OmFkanVzdGVkRGF0YUludGVyYWN0aW9uSXRlbVByb3ZpZGVy
c0Zvckl0ZW1Qcm92aWRlcjpyZXByZXNlbnRpbmdPYmplY3RzOmFkZGl0aW9uYWxEYXRhOl0pOgor
ICAgICAgICAoLVtEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgX3dlYlZpZXc6YWRqdXN0ZWREYXRh
SW50ZXJhY3Rpb25JdGVtUHJvdmlkZXJzOl0pOiBEZWxldGVkLgorCiAyMDE3LTA2LTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lvbihyMjE3ODY3
KTogTGVnYWN5IFNlc3Npb25IaXN0b3J5RW50cnlEYXRhIGZvcm1hdCBzaG91bGQgbm90IGNoYW5n
ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0
aW9uVGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rp
b25UZXN0cy5tbQppbmRleCA3NTBkZGE2MThmZGM1ZGY4MzEwM2ZlMTExYzk1MjlkNWFhNmNhZTI2
Li42OGQzMzVlNTc4MWI5NTQwYTJjMjhmODYyOGZkZDRlZjM0YmY5M2Q4IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQpA
QCAtNDQsNiArNDQsOCBAQAogdHlwZWRlZiB2b2lkICheRmlsZUxvYWRDb21wbGV0aW9uQmxvY2sp
KE5TVVJMICosIEJPT0wsIE5TRXJyb3IgKik7CiB0eXBlZGVmIHZvaWQgKF5EYXRhTG9hZENvbXBs
ZXRpb25CbG9jaykoTlNEYXRhICosIE5TRXJyb3IgKik7CiAKK3N0YXRpYyBOU1N0cmluZyAqSW5q
ZWN0ZWRCdW5kbGVQYXN0ZWJvYXJkRGF0YVR5cGUgPSBAIm9yZy53ZWJraXQuZGF0YSI7CisKIHN0
YXRpYyBVSUltYWdlICp0ZXN0SWNvbkltYWdlKCkKIHsKICAgICByZXR1cm4gW1VJSW1hZ2UgaW1h
Z2VOYW1lZDpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzL2ljb24ucG5nIl07CkBAIC03NTgsMjYg
Kzc2MCwzOSBAQCBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBJbmplY3RlZEJ1bmRsZUFsbG93
UGVyZm9ybVR3b1N0ZXBEcm9wKQogICAgIEVYUEVDVF9XS19TVFJFUSgiSGVsbG8gd29ybGQiLCBb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZWRpdG9yLnRleHRDb250ZW50
Il0uVVRGOFN0cmluZyk7CiB9CiAKLVRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIEF0dGFjaG1l
bnRFbGVtZW50SXRlbVByb3ZpZGVycykKK1RFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIEluamVj
dGVkQnVuZGxlSW1hZ2VFbGVtZW50RGF0YSkKK3sKKyAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9u
ICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJh
dGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiQnVuZGxlRWRpdGluZ0RlbGVnYXRlUGx1Z0lu
Il07CisgICAgW2NvbmZpZ3VyYXRpb24gX3NldEF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZDpZRVNd
OworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbl0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpA
ImltYWdlLWFuZC1jb250ZW50ZWRpdGFibGUiXTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5T
U3RyaW5nPiBpbmplY3RlZFN0cmluZzsKKyAgICBhdXRvIGRhdGFJbnRlcmFjdGlvblNpbXVsYXRv
ciA9IGFkb3B0TlMoW1tEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2Vi
Vmlldzp3ZWJWaWV3LmdldCgpXSk7CisgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBzZXRD
b252ZXJ0SXRlbVByb3ZpZGVyc0Jsb2NrOl5OU0FycmF5ICooVUlJdGVtUHJvdmlkZXIgKml0ZW1Q
cm92aWRlciwgTlNBcnJheSAqLCBOU0RpY3Rpb25hcnkgKmRhdGEpCisgICAgeworICAgICAgICBp
bmplY3RlZFN0cmluZyA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmRh
dGFbSW5qZWN0ZWRCdW5kbGVQYXN0ZWJvYXJkRGF0YVR5cGVdIGVuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXSk7CisgICAgICAgIHJldHVybiBAWyBpdGVtUHJvdmlkZXIgXTsKKyAgICB9XTsK
KworICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgxMDAs
IDUwKSB0bzpDR1BvaW50TWFrZSgxMDAsIDI1MCldOworCisgICAgRVhQRUNUX1dLX1NUUkVRKCJo
ZWxsbyIsIFtpbmplY3RlZFN0cmluZyBVVEY4U3RyaW5nXSk7Cit9CisKK1RFU1QoRGF0YUludGVy
YWN0aW9uVGVzdHMsIEluamVjdGVkQnVuZGxlQXR0YWNobWVudEVsZW1lbnREYXRhKQogewotICAg
IFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NO
YW1lOkAiQnVuZGxlRWRpdGluZ0RlbGVnYXRlUGx1Z0luIl07CisgICAgV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2Nv
bmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIkJ1bmRsZUVkaXRpbmdEZWxlZ2F0
ZVBsdWdJbiJdOwogICAgIFtjb25maWd1cmF0aW9uIF9zZXRBdHRhY2htZW50RWxlbWVudEVuYWJs
ZWQ6WUVTXTsKLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKICAgICBbd2ViVmlldyBzeW5jaHJvbm91
c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJhdHRhY2htZW50LWVsZW1lbnQiXTsKIAotICAgIE5TU3Ry
aW5nICppbmplY3RlZFR5cGVJZGVudGlmaWVyID0gQCJvcmcud2Via2l0LmRhdGEiOwogICAgIF9f
YmxvY2sgUmV0YWluUHRyPE5TU3RyaW5nPiBpbmplY3RlZFN0cmluZzsKICAgICBhdXRvIGRhdGFJ
bnRlcmFjdGlvblNpbXVsYXRvciA9IGFkb3B0TlMoW1tEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Ig
YWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7Ci0gICAgW2RhdGFJbnRlcmFj
dGlvblNpbXVsYXRvciBzZXRDb252ZXJ0SXRlbVByb3ZpZGVyc0Jsb2NrOl5OU0FycmF5ICooTlNB
cnJheSAqb3JpZ2luYWxJdGVtUHJvdmlkZXJzKQorICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0
b3Igc2V0Q29udmVydEl0ZW1Qcm92aWRlcnNCbG9jazpeTlNBcnJheSAqKFVJSXRlbVByb3ZpZGVy
ICppdGVtUHJvdmlkZXIsIE5TQXJyYXkgKiwgTlNEaWN0aW9uYXJ5ICpkYXRhKQogICAgIHsKLSAg
ICAgICAgZm9yIChVSUl0ZW1Qcm92aWRlciAqcHJvdmlkZXIgaW4gb3JpZ2luYWxJdGVtUHJvdmlk
ZXJzKSB7Ci0gICAgICAgICAgICBOU0RhdGEgKmluamVjdGVkRGF0YSA9IFtwcm92aWRlciBjb3B5
RGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6aW5qZWN0ZWRUeXBlSWRlbnRpZmll
ciBlcnJvcjpuaWxdOwotICAgICAgICAgICAgaWYgKCFpbmplY3RlZERhdGEubGVuZ3RoKQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaW5qZWN0ZWRTdHJpbmcgPSBhZG9w
dE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbmplY3RlZERhdGEgZW5jb2Rpbmc6
TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiBvcmlnaW5hbEl0ZW1Qcm92aWRlcnM7CisgICAgICAgIGluamVjdGVkU3Ry
aW5nID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YVtJbmplY3Rl
ZEJ1bmRsZVBhc3RlYm9hcmREYXRhVHlwZV0gZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rpbmdd
KTsKKyAgICAgICAgcmV0dXJuIEBbIGl0ZW1Qcm92aWRlciBdOwogICAgIH1dOwogCiAgICAgW2Rh
dGFJbnRlcmFjdGlvblNpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDUwLCA1MCkgdG86Q0dQ
b2ludE1ha2UoNTAsIDQwMCldOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3Mv
RGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRh
SW50ZXJhY3Rpb25TaW11bGF0b3IuaAppbmRleCBjMTE0OTAzNjhkNjMwZjI4NDEwOTJmNjYxZDRh
MWMyYWE4ODJjNTlmLi42OWU0Zjk2MGM4MTU5YTNlNzVlNzA2NmZiNjEwOGU2Yzk2YWE0NGRiIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0
b3IuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0
b3IuaApAQCAtNzUsNyArNzUsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBEYXRhSW50
ZXJhY3Rpb25QaGFzZSkgewogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgYWxsb3dzRm9jdXNU
b1N0YXJ0SW5wdXRTZXNzaW9uOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgc2hvdWxkRW5z
dXJlVUlBcHBsaWNhdGlvbjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCbG9ja1B0cjxCT09MKF9X
S0FjdGl2YXRlZEVsZW1lbnRJbmZvICopPiBzaG93Q3VzdG9tQWN0aW9uU2hlZXRCbG9jazsKLUBw
cm9wZXJ0eSAobm9uYXRvbWljKSBCbG9ja1B0cjxOU0FycmF5ICooTlNBcnJheSAqKT4gY29udmVy
dEl0ZW1Qcm92aWRlcnNCbG9jazsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCbG9ja1B0cjxOU0Fy
cmF5ICooVUlJdGVtUHJvdmlkZXIgKiwgTlNBcnJheSAqLCBOU0RpY3Rpb25hcnkgKik+IGNvbnZl
cnRJdGVtUHJvdmlkZXJzQmxvY2s7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nKSBOU0Fy
cmF5ICpleHRlcm5hbEl0ZW1Qcm92aWRlcnM7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQmxvY2tQ
dHI8TlNVSW50ZWdlcihOU1VJbnRlZ2VyLCBpZCk+IG92ZXJyaWRlRGF0YUludGVyYWN0aW9uT3Bl
cmF0aW9uQmxvY2s7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQmxvY2tQdHI8dm9pZChCT09MLCBO
U0FycmF5ICopPiBkYXRhSW50ZXJhY3Rpb25PcGVyYXRpb25Db21wbGV0aW9uQmxvY2s7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Iu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IubW0K
aW5kZXggMjAwZDcwNGY4Y2QzMGEyN2IzNjUwNmEwNzNlZWI4NzI2YTdmYWEyZi4uODMwMTRhODAx
ODhjY2U1YmM5N2EwYjk3Y2Y1NWIyOWFjMjYyMmU1ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5tbQpAQCAtMzA1LDkgKzMwNSw5
IEBAIC0gKE5TVUludGVnZXIpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgd2lsbFVwZGF0
ZURhdGFJbnRlcmFjdGlvbk9wZXJhdGlvblRvCiAgICAgcmV0dXJuIHNlbGYub3ZlcnJpZGVEYXRh
SW50ZXJhY3Rpb25PcGVyYXRpb25CbG9jayA/IHNlbGYub3ZlcnJpZGVEYXRhSW50ZXJhY3Rpb25P
cGVyYXRpb25CbG9jayhvcGVyYXRpb24sIHNlc3Npb24pIDogb3BlcmF0aW9uOwogfQogCi0tIChO
U0FycmF5PFVJSXRlbVByb3ZpZGVyICo+Kilfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBh
ZGp1c3RlZERhdGFJbnRlcmFjdGlvbkl0ZW1Qcm92aWRlcnM6KE5TQXJyYXk8VUlJdGVtUHJvdmlk
ZXIgKj4qKW9yaWdpbmFsSXRlbVByb3ZpZGVycworLSAoTlNBcnJheSAqKV93ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IGFkanVzdGVkRGF0YUludGVyYWN0aW9uSXRlbVByb3ZpZGVyc0Zvckl0
ZW1Qcm92aWRlcjooVUlJdGVtUHJvdmlkZXIgKilpdGVtUHJvdmlkZXIgcmVwcmVzZW50aW5nT2Jq
ZWN0czooTlNBcnJheSAqKXJlcHJlc2VudGluZ09iamVjdHMgYWRkaXRpb25hbERhdGE6KE5TRGlj
dGlvbmFyeSAqKWFkZGl0aW9uYWxEYXRhCiB7Ci0gICAgcmV0dXJuIHNlbGYuY29udmVydEl0ZW1Q
cm92aWRlcnNCbG9jayA/IHNlbGYuY29udmVydEl0ZW1Qcm92aWRlcnNCbG9jayhvcmlnaW5hbEl0
ZW1Qcm92aWRlcnMpIDogb3JpZ2luYWxJdGVtUHJvdmlkZXJzOworICAgIHJldHVybiBzZWxmLmNv
bnZlcnRJdGVtUHJvdmlkZXJzQmxvY2sgPyBzZWxmLmNvbnZlcnRJdGVtUHJvdmlkZXJzQmxvY2so
aXRlbVByb3ZpZGVyLCByZXByZXNlbnRpbmdPYmplY3RzLCBhZGRpdGlvbmFsRGF0YSkgOiBAWyBp
dGVtUHJvdmlkZXIgXTsKIH0KIAogLSAoQk9PTClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBzaG93Q3VzdG9tU2hlZXRGb3JFbGVtZW50OihfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqKWVs
ZW1lbnQK
</data>

          </attachment>
      

    </bug>

</bugzilla>