<?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>193646</bug_id>
          
          <creation_ts>2019-01-20 23:17:04 -0800</creation_ts>
          <short_desc>[JSC] Lazily initialize JSModuleLoader</short_desc>
          <delta_ts>2019-01-21 16:28:40 -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>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>193606</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1496527</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-20 23:17:04 -0800</bug_when>
    <thetext>[JSC] Lazily initialize JSModuleLoader</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496529</commentid>
    <comment_count>1</comment_count>
      <attachid>359672</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-20 23:18:43 -0800</bug_when>
    <thetext>Created attachment 359672
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496536</commentid>
    <comment_count>2</comment_count>
      <attachid>359673</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-20 23:38:35 -0800</bug_when>
    <thetext>Created attachment 359673
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496597</commentid>
    <comment_count>3</comment_count>
      <attachid>359673</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-01-21 08:45:22 -0800</bug_when>
    <thetext>Comment on attachment 359673
Patch

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496615</commentid>
    <comment_count>4</comment_count>
      <attachid>359673</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-01-21 10:42:54 -0800</bug_when>
    <thetext>Comment on attachment 359673
Patch

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

&gt; Source/JavaScriptCore/runtime/HashMapImpl.h:206
&gt; +    static HashMapBuffer* create(ExecState* nullOrExecForOOM, VM&amp; vm, JSCell*, uint32_t capacity)

not a fan of this, why not globalExec?

&gt; Source/JavaScriptCore/runtime/JSModuleLoader.cpp:109
&gt; +    JSMap* map = JSMap::create(nullptr, vm, globalObject-&gt;mapStructure());

why not globalExec?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496616</commentid>
    <comment_count>5</comment_count>
      <attachid>359673</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-01-21 10:44:00 -0800</bug_when>
    <thetext>Comment on attachment 359673
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/JSModuleLoader.cpp:109
&gt;&gt; +    JSMap* map = JSMap::create(nullptr, vm, globalObject-&gt;mapStructure());
&gt; 
&gt; why not globalExec?

If you don&apos;t want an exception to be thrown, I&apos;d use globalExec, and then releaseAssertNoException here instead of passing in nullptr. I think the abstraction is backwards this way, but not in the way I propose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496652</commentid>
    <comment_count>6</comment_count>
      <attachid>359673</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-21 13:53:23 -0800</bug_when>
    <thetext>Comment on attachment 359673
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/runtime/HashMapImpl.h:206
&gt;&gt; +    static HashMapBuffer* create(ExecState* nullOrExecForOOM, VM&amp; vm, JSCell*, uint32_t capacity)
&gt; 
&gt; not a fan of this, why not globalExec?

Personally, rather, I would like to drop this ExecState* parameter for simple `JSMap::create()` / `JSModuleLoader::create` cases because it allocates fixed amount of memory which is not so large.
But in the meantime, we still have this parameter. So, using globalExec makes sense. Fixed.

&gt;&gt;&gt; Source/JavaScriptCore/runtime/JSModuleLoader.cpp:109
&gt;&gt;&gt; +    JSMap* map = JSMap::create(nullptr, vm, globalObject-&gt;mapStructure());
&gt;&gt; 
&gt;&gt; why not globalExec?
&gt; 
&gt; If you don&apos;t want an exception to be thrown, I&apos;d use globalExec, and then releaseAssertNoException here instead of passing in nullptr. I think the abstraction is backwards this way, but not in the way I propose.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496653</commentid>
    <comment_count>7</comment_count>
      <attachid>359709</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-21 13:54:20 -0800</bug_when>
    <thetext>Created attachment 359709
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496654</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-21 14:01:22 -0800</bug_when>
    <thetext>Committed r240242: &lt;https://trac.webkit.org/changeset/240242&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496655</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-21 14:02:28 -0800</bug_when>
    <thetext>&lt;rdar://problem/47432806&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359672</attachid>
            <date>2019-01-20 23:18:43 -0800</date>
            <delta_ts>2019-01-20 23:38:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193646-20190120231842.patch</filename>
            <type>text/plain</type>
            <size>4377</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
YmM3ZDQ2YWQxODllMGU5NDA3ZGE1OTM1MTc3MTczYWE5MjVjMGI4Li40NjY0ZDkzYTNmMjAyYWQ5
ZTViYTI0YmQyNjQ4YzlkNzJjMzkyZDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxOS0wMS0yMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIExhemlseSBpbml0aWFsaXplIEpTTW9kdWxlTG9hZGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2NDYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMYXppbHkgaW5pdGlh
bGl6ZSBKU01vZHVsZUxvYWRlciBzbyB0aGF0IHdlIGRvIG5vdCBuZWVkIHRvIGluaXRpYWxpemUg
aXQgdW50aWwgd2UgbmVlZCBtb2R1bGVzLgorCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om1vZHVsZUxv
YWRlciBjb25zdCk6CisKIDIwMTktMDEtMjAgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5j
b20+CiAKICAgICAgICAgREZHOiBXaGVuIGlubGluaW5nIERhdGFWaWV3IHNldCogaW50cmluc2lj
cyB3ZSBuZWVkIHRvIHNldCB1bmRlZmluZWQgYXMgb3VyIHJlc3VsdApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGU1NDAwNDhlZDhh
OGI3OTBkOWQ4NmRkOTE5MDFmZWY4NWY0YzlhN2YuLjQzZDk1MDgxZWM2OWQyMWYxYmU5NTY3NDNk
MjI0ZjRhYjdjOWM5NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKQEAgLTc4OCw5ICs3ODgsMTMgQEAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25z
dHJ1Y3QKICAgICBSZWZsZWN0T2JqZWN0KiByZWZsZWN0T2JqZWN0ID0gUmVmbGVjdE9iamVjdDo6
Y3JlYXRlKHZtLCB0aGlzLCBSZWZsZWN0T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMs
IG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPlJlZmxlY3QsIHJlZmxlY3RPYmplY3QsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAotICAgIG1fbW9k
dWxlTG9hZGVyLnNldCh2bSwgdGhpcywgSlNNb2R1bGVMb2FkZXI6OmNyZWF0ZShnbG9iYWxFeGVj
KCksIHZtLCB0aGlzLCBKU01vZHVsZUxvYWRlcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBq
c051bGwoKSkpKTsKKyAgICBtX21vZHVsZUxvYWRlci5pbml0TGF0ZXIoCisgICAgICAgIFtdIChj
b25zdCBJbml0aWFsaXplcjxKU01vZHVsZUxvYWRlcj4mIGluaXQpIHsKKyAgICAgICAgICAgIGlu
aXQuc2V0KEpTTW9kdWxlTG9hZGVyOjpjcmVhdGUoZ2xvYmFsRXhlYygpLCB2bSwgdGhpcywgSlNN
b2R1bGVMb2FkZXI6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKSk7CisgICAg
ICAgIH0pOworCiAgICAgaWYgKE9wdGlvbnM6OmV4cG9zZUludGVybmFsTW9kdWxlTG9hZGVyKCkp
Ci0gICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5Mb2FkZXIsIG1fbW9kdWxlTG9hZGVyLmdldCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5Mb2FkZXIsIG1vZHVsZUxvYWRlcigpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAKICAgICBK
U0Z1bmN0aW9uKiBidWlsdGluTG9nID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCB2
bS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXIuc3RyaW5nKCksIGdsb2JhbEZ1bmNCdWls
dGluTG9nKTsKICAgICBKU0Z1bmN0aW9uKiBidWlsdGluRGVzY3JpYmUgPSBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIHRoaXMsIDEsIHZtLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllci5zdHJp
bmcoKSwgZ2xvYmFsRnVuY0J1aWx0aW5EZXNjcmliZSk7CkBAIC0xNTc0LDcgKzE1NzgsNyBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9mdW5jdGlvblBy
b3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbik7CiAgICAgdGhpc09iamVjdC0+bV90aHJvd1R5
cGVFcnJvckdldHRlclNldHRlci52aXNpdCh2aXNpdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0
aGlzT2JqZWN0LT5tX3Rocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyR2V0dGVy
U2V0dGVyKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21vZHVsZUxvYWRlcik7
CisgICAgdGhpc09iamVjdC0+bV9tb2R1bGVMb2FkZXIudmlzaXQodmlzaXRvcik7CiAKICAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX29iamVjdFByb3RvdHlwZSk7CiAgICAgdmlzaXRv
ci5hcHBlbmQodGhpc09iamVjdC0+bV9mdW5jdGlvblByb3RvdHlwZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBkNTJkMGZiZmM5ODI4
ZTY5NjY2YWY1YjUyMDE0YjhmMzljNmU1NmVmLi5iMWQ5NmFkM2I1ODU4NGI3MjI4NzFjNjgyYjE4
MDcxYWFiOWM0MmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKQEAgLTMwMCw3ICszMDAsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1
YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8SlNPYmpl
Y3Q+IG1fcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyOwogICAgIFdyaXRlQmFycmllcjxHZXR0ZXJT
ZXR0ZXI+IG1fdGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXJHZXR0ZXJTZXR0
ZXI7CiAKLSAgICBXcml0ZUJhcnJpZXI8SlNNb2R1bGVMb2FkZXI+IG1fbW9kdWxlTG9hZGVyOwor
ICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNNb2R1bGVMb2FkZXI+IG1fbW9kdWxl
TG9hZGVyOwogCiAgICAgV3JpdGVCYXJyaWVyPE9iamVjdFByb3RvdHlwZT4gbV9vYmplY3RQcm90
b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEZ1bmN0aW9uUHJvdG90eXBlPiBtX2Z1bmN0aW9uUHJv
dG90eXBlOwpAQCAtNjExLDcgKzYxMSw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGlj
IEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgICAgICByZXR1cm4gbV90aHJvd1R5cGVF
cnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlckdldHRlclNldHRlci5nZXQoKTsKICAgICB9CiAg
ICAgCi0gICAgSlNNb2R1bGVMb2FkZXIqIG1vZHVsZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1f
bW9kdWxlTG9hZGVyLmdldCgpOyB9CisgICAgSlNNb2R1bGVMb2FkZXIqIG1vZHVsZUxvYWRlcigp
IGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlTG9hZGVyLmdldCh0aGlzKTsgfQogCiAgICAgT2JqZWN0
UHJvdG90eXBlKiBvYmplY3RQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX29iamVjdFByb3Rv
dHlwZS5nZXQoKTsgfQogICAgIEZ1bmN0aW9uUHJvdG90eXBlKiBmdW5jdGlvblByb3RvdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCk7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359673</attachid>
            <date>2019-01-20 23:38:35 -0800</date>
            <delta_ts>2019-01-21 13:54:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193646-20190120233834.patch</filename>
            <type>text/plain</type>
            <size>10866</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
YmM3ZDQ2YWQxODllMGU5NDA3ZGE1OTM1MTc3MTczYWE5MjVjMGI4Li4wZDBmNGNmYjU3M2UwZjg2
YzgzNTJhYjE5NTUyNzlhMDIwODE1MzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAxOS0wMS0yMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIExhemlseSBpbml0aWFsaXplIEpTTW9kdWxlTG9hZGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2NDYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMYXppbHkgaW5pdGlh
bGl6ZSBKU01vZHVsZUxvYWRlciBzbyB0aGF0IHdlIGRvIG5vdCBuZWVkIHRvIGluaXRpYWxpemUg
aXQgdW50aWwgd2UgbmVlZCBtb2R1bGVzLgorCisgICAgICAgICogcnVudGltZS9IYXNoTWFwSW1w
bC5oOgorICAgICAgICAoSlNDOjpIYXNoTWFwQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpIYXNoTWFwSW1wbDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpIYXNoTWFwSW1w
bDo6c2V0VXBIZWFkQW5kVGFpbCk6CisgICAgICAgIChKU0M6Okhhc2hNYXBJbXBsOjptYWtlQW5k
U2V0TmV3QnVmZmVyKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyIGNvbnN0KToK
KyAgICAgICAgKiBydW50aW1lL0pTTWFwLmg6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZUxv
YWRlci5jcHA6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTG9hZGVyOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgICogcnVudGltZS9KU01vZHVsZUxvYWRlci5oOgorCiAyMDE5LTAxLTIwICBTYWFt
IEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIERGRzogV2hlbiBpbmxpbmlu
ZyBEYXRhVmlldyBzZXQqIGludHJpbnNpY3Mgd2UgbmVlZCB0byBzZXQgdW5kZWZpbmVkIGFzIG91
ciByZXN1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hN
YXBJbXBsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5oCmlu
ZGV4IDRlODdjODkyZjkxZGQ2MmY2ZDYzNGVlMzEyMzAyZDJiMzJlNGQ2NGUuLmMzMzJhMmI3MTQx
ZTI0MTRhYzdlZGI1YmZmN2FkMWQ2NjEzMDMxNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSGFzaE1hcEltcGwuaApAQCAtMjAzLDEzICsyMDMsMTQgQEAgY2xhc3MgSGFzaE1h
cEJ1ZmZlciB7CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8QnVja2V0VHlwZSoqPih0aGlz
KTsKICAgICB9CiAKLSAgICBzdGF0aWMgSGFzaE1hcEJ1ZmZlciogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgVk0mIHZtLCBKU0NlbGwqLCB1aW50MzJfdCBjYXBhY2l0eSkKKyAgICBzdGF0aWMgSGFz
aE1hcEJ1ZmZlciogY3JlYXRlKEV4ZWNTdGF0ZSogbnVsbE9yRXhlY0Zvck9PTSwgVk0mIHZtLCBK
U0NlbGwqLCB1aW50MzJfdCBjYXBhY2l0eSkKICAgICB7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAgICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0g
SGFzaE1hcEJ1ZmZlcjo6YWxsb2NhdGlvblNpemUoY2FwYWNpdHkpOwogICAgICAgICB2b2lkKiBk
YXRhID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25WaXJ0dWFs
KHZtLCBhbGxvY2F0aW9uU2l6ZSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1
cm5OdWxsKTsKICAgICAgICAgaWYgKCFkYXRhKSB7Ci0gICAgICAgICAgICB0aHJvd091dE9mTWVt
b3J5RXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobnVsbE9y
RXhlY0Zvck9PTSk7CisgICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IobnVsbE9yRXhl
Y0Zvck9PTSwgc2NvcGUpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0K
IApAQCAtMzcxLDE3ICszNzIsMTcgQEAgY2xhc3MgSGFzaE1hcEltcGwgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CiAgICAgICAgIHJldHVybiBtX2J1ZmZlci0+YnVmZmVyKCk7CiAgICAgfQog
Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSkKKyAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogbnVsbE9yRXhlY0Zvck9PTSwgVk0mIHZtKQog
ICAgIHsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShIYXNoTWFwQnVja2V0PEhhc2hNYXBC
dWNrZXREYXRhS2V5Pjo6b2Zmc2V0T2ZLZXkoKSA9PSBIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNr
ZXREYXRhS2V5VmFsdWU+OjpvZmZzZXRPZktleSgpLCAiV2UgYXNzdW1lIHRoaXMgdG8gYmUgdHJ1
ZSBpbiB0aGUgREZHIGFuZCBGVEwgSklULiIpOwogCiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwog
Ci0gICAgICAgIG1ha2VBbmRTZXROZXdCdWZmZXIoZXhlYywgdm0pOworICAgICAgICBtYWtlQW5k
U2V0TmV3QnVmZmVyKG51bGxPckV4ZWNGb3JPT00sIHZtKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAotICAgICAgICBzZXRVcEhlYWRBbmRUYWlsKGV4ZWMs
IHZtKTsKKyAgICAgICAgc2V0VXBIZWFkQW5kVGFpbCh2bSk7CiAgICAgfQogCiAgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSGFzaE1hcEltcGwqIGJhc2Up
CkBAIC0zOTcsNyArMzk4LDcgQEAgY2xhc3MgSGFzaE1hcEltcGwgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7CiAgICAgICAgIG1ha2VBbmRTZXROZXdCdWZmZXIoZXhlYywgdm0pOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCi0gICAgICAgIHNldFVwSGVh
ZEFuZFRhaWwoZXhlYywgdm0pOworICAgICAgICBzZXRVcEhlYWRBbmRUYWlsKHZtKTsKIAogICAg
ICAgICBIYXNoTWFwQnVja2V0VHlwZSogYnVja2V0ID0gYmFzZS0+bV9oZWFkLmdldCgpLT5uZXh0
KCk7CiAgICAgICAgIHdoaWxlIChidWNrZXQpIHsKQEAgLTU3Niw3ICs1NzcsNyBAQCBjbGFzcyBI
YXNoTWFwSW1wbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAgICAgcmV0dXJuIEpT
Qzo6c2hvdWxkU2hyaW5rKG1fY2FwYWNpdHksIG1fa2V5Q291bnQpOwogICAgIH0KIAotICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXRVcEhlYWRBbmRUYWlsKEV4ZWNTdGF0ZSosIFZNJiB2bSkKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0VXBIZWFkQW5kVGFpbChWTSYgdm0pCiAgICAgewogICAg
ICAgICBtX2hlYWQuc2V0KHZtLCB0aGlzLCBIYXNoTWFwQnVja2V0VHlwZTo6Y3JlYXRlKHZtKSk7
CiAgICAgICAgIG1fdGFpbC5zZXQodm0sIHRoaXMsIEhhc2hNYXBCdWNrZXRUeXBlOjpjcmVhdGUo
dm0pKTsKQEAgLTcwOSwxMSArNzEwLDExIEBAIGNsYXNzIEhhc2hNYXBJbXBsIDogcHVibGljIEpT
Tm9uRmluYWxPYmplY3QgewogICAgICAgICB9CiAgICAgfQogCi0gICAgdm9pZCBtYWtlQW5kU2V0
TmV3QnVmZmVyKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtKQorICAgIHZvaWQgbWFrZUFuZFNldE5l
d0J1ZmZlcihFeGVjU3RhdGUqIG51bGxPckV4ZWNGb3JPT00sIFZNJiB2bSkKICAgICB7CiAgICAg
ICAgIEFTU0VSVCghKG1fY2FwYWNpdHkgJiAobV9jYXBhY2l0eSAtIDEpKSk7CiAKLSAgICAgICAg
SGFzaE1hcEJ1ZmZlclR5cGUqIGJ1ZmZlciA9IEhhc2hNYXBCdWZmZXJUeXBlOjpjcmVhdGUoZXhl
Yywgdm0sIHRoaXMsIG1fY2FwYWNpdHkpOworICAgICAgICBIYXNoTWFwQnVmZmVyVHlwZSogYnVm
ZmVyID0gSGFzaE1hcEJ1ZmZlclR5cGU6OmNyZWF0ZShudWxsT3JFeGVjRm9yT09NLCB2bSwgdGhp
cywgbV9jYXBhY2l0eSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghYnVmZmVyKSkKICAgICAgICAg
ICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCmluZGV4IGU1NDAwNDhlZDhhOGI3OTBkOWQ4NmRkOTE5MDFmZWY4NWY0Yzlh
N2YuLjJjNmVkZjBkMmM4MDkzYzY1ODgxZGU1YTdiYzQzODg1NGUxMjhhMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTc4OCw5
ICs3ODgsMTIgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICBSZWZsZWN0T2JqZWN0KiBy
ZWZsZWN0T2JqZWN0ID0gUmVmbGVjdE9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBSZWZsZWN0T2Jq
ZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7
CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPlJl
ZmxlY3QsIHJlZmxlY3RPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKTsKIAotICAgIG1fbW9kdWxlTG9hZGVyLnNldCh2bSwgdGhpcywgSlNN
b2R1bGVMb2FkZXI6OmNyZWF0ZShnbG9iYWxFeGVjKCksIHZtLCB0aGlzLCBKU01vZHVsZUxvYWRl
cjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBqc051bGwoKSkpKTsKKyAgICBtX21vZHVsZUxv
YWRlci5pbml0TGF0ZXIoCisgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxKU01vZHVsZUxv
YWRlcj4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTTW9kdWxlTG9hZGVyOjpjcmVh
dGUoaW5pdC52bSwgaW5pdC5vd25lciwgSlNNb2R1bGVMb2FkZXI6OmNyZWF0ZVN0cnVjdHVyZShp
bml0LnZtLCBpbml0Lm93bmVyLCBqc051bGwoKSkpKTsKKyAgICAgICAgfSk7CiAgICAgaWYgKE9w
dGlvbnM6OmV4cG9zZUludGVybmFsTW9kdWxlTG9hZGVyKCkpCi0gICAgICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5Mb2FkZXIsIG1fbW9kdWxlTG9h
ZGVyLmdldCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSk7CisgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5Mb2FkZXIsIG1vZHVsZUxvYWRlcigpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAKICAgICBKU0Z1bmN0aW9uKiBidWlsdGluTG9n
ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCB2bS5wcm9wZXJ0eU5hbWVzLT5lbXB0
eUlkZW50aWZpZXIuc3RyaW5nKCksIGdsb2JhbEZ1bmNCdWlsdGluTG9nKTsKICAgICBKU0Z1bmN0
aW9uKiBidWlsdGluRGVzY3JpYmUgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIHZt
LnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllci5zdHJpbmcoKSwgZ2xvYmFsRnVuY0J1aWx0
aW5EZXNjcmliZSk7CkBAIC0xNTc0LDcgKzE1NzcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xG
dW5jdGlvbik7CiAgICAgdGhpc09iamVjdC0+bV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlci52
aXNpdCh2aXNpdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Rocm93VHlw
ZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyR2V0dGVyU2V0dGVyKTsKLSAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX21vZHVsZUxvYWRlcik7CisgICAgdGhpc09iamVjdC0+bV9t
b2R1bGVMb2FkZXIudmlzaXQodmlzaXRvcik7CiAKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX29iamVjdFByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+
bV9mdW5jdGlvblByb3RvdHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAppbmRleCBkNTJkMGZiZmM5ODI4ZTY5NjY2YWY1YjUyMDE0YjhmMzlj
NmU1NmVmLi5iMWQ5NmFkM2I1ODU4NGI3MjI4NzFjNjgyYjE4MDcxYWFiOWM0MmZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTMwMCw3
ICszMDAsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fcmVnRXhwUHJvdG9Vbmlj
b2RlR2V0dGVyOwogICAgIFdyaXRlQmFycmllcjxHZXR0ZXJTZXR0ZXI+IG1fdGhyb3dUeXBlRXJy
b3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXJHZXR0ZXJTZXR0ZXI7CiAKLSAgICBXcml0ZUJhcnJp
ZXI8SlNNb2R1bGVMb2FkZXI+IG1fbW9kdWxlTG9hZGVyOworICAgIExhenlQcm9wZXJ0eTxKU0ds
b2JhbE9iamVjdCwgSlNNb2R1bGVMb2FkZXI+IG1fbW9kdWxlTG9hZGVyOwogCiAgICAgV3JpdGVC
YXJyaWVyPE9iamVjdFByb3RvdHlwZT4gbV9vYmplY3RQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJy
aWVyPEZ1bmN0aW9uUHJvdG90eXBlPiBtX2Z1bmN0aW9uUHJvdG90eXBlOwpAQCAtNjExLDcgKzYx
MSw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QgewogICAgICAgICByZXR1cm4gbV90aHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFu
ZENhbGxlckdldHRlclNldHRlci5nZXQoKTsKICAgICB9CiAgICAgCi0gICAgSlNNb2R1bGVMb2Fk
ZXIqIG1vZHVsZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlTG9hZGVyLmdldCgpOyB9
CisgICAgSlNNb2R1bGVMb2FkZXIqIG1vZHVsZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fbW9k
dWxlTG9hZGVyLmdldCh0aGlzKTsgfQogCiAgICAgT2JqZWN0UHJvdG90eXBlKiBvYmplY3RQcm90
b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX29iamVjdFByb3RvdHlwZS5nZXQoKTsgfQogICAgIEZ1
bmN0aW9uUHJvdG90eXBlKiBmdW5jdGlvblByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcC5o
CmluZGV4IGYwZWJiNTRkMTg0MmMwZjM0ZjBmYTMwMzQ2NTRhMGRmNjVjMTVmMTEuLmMyNWViYjI4
NmY2YzIwYWFmMGY3NjZjN2Y1YWQwYTgwYTVkNTQ3NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNYXAuaApAQCAtNDEsMTAgKzQxLDEwIEBAIGNsYXNzIEpTTWFwIGZpbmFsIDogcHVi
bGljIEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXlWYWx1ZT4+
CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIFR5cGVJbmZvKEpTTWFwVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAg
IH0KIAotICAgIHN0YXRpYyBKU01hcCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICBzdGF0aWMgSlNNYXAqIGNyZWF0ZShFeGVjU3RhdGUq
IG51bGxPckV4ZWNGb3JPT00sIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewog
ICAgICAgICBKU01hcCogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU01h
cD4odm0uaGVhcCkpIEpTTWFwKHZtLCBzdHJ1Y3R1cmUpOwotICAgICAgICBpbnN0YW5jZS0+Zmlu
aXNoQ3JlYXRpb24oZXhlYywgdm0pOworICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24o
bnVsbE9yRXhlY0Zvck9PTSwgdm0pOwogICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAK
aW5kZXggOTgyYmFhN2E1OGY0N2ZkY2UwYmUyNzE4NGFmZjBkYmQwMzE3NTE2My4uMmZkYTBlZDVh
ZTFhOTk2MWM5YTUwOTY1NTFhZmI3ZTk4MTA4YjkyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcApAQCAtMTAwLDEzICsxMDAsMTMgQEAg
SlNNb2R1bGVMb2FkZXI6OkpTTW9kdWxlTG9hZGVyKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiB7CiB9CiAKLXZvaWQgSlNNb2R1bGVMb2FkZXI6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQordm9pZCBKU01v
ZHVsZUxvYWRlcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKIAog
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGlu
Zm8oKSkpOwotICAgIEpTTWFwKiBtYXAgPSBKU01hcDo6Y3JlYXRlKGV4ZWMsIHZtLCBnbG9iYWxP
YmplY3QtPm1hcFN0cnVjdHVyZSgpKTsKKyAgICBKU01hcCogbWFwID0gSlNNYXA6OmNyZWF0ZShu
dWxscHRyLCB2bSwgZ2xvYmFsT2JqZWN0LT5tYXBTdHJ1Y3R1cmUoKSk7CiAgICAgc2NvcGUucmVs
ZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgInJlZ2lzdHJ5IiksIG1hcCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaAppbmRleCAzM2ViYzQyZTA3NWJiODMyMGE3
ZDg2MzZjNjE5NTNhZTMzMzZjYWRmLi5lYWE4ZTU3MTVkNzVhYjZiMDgwZjlmN2NiMzhjODk3MzIy
YWQxYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9h
ZGVyLmgKQEAgLTUwLDEwICs1MCwxMCBAQCBjbGFzcyBKU01vZHVsZUxvYWRlciBmaW5hbCA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAgICAgUmVhZHksCiAgICAgfTsKIAotICAgIHN0
YXRpYyBKU01vZHVsZUxvYWRlciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICBzdGF0
aWMgSlNNb2R1bGVMb2FkZXIqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgSlNNb2R1bGVMb2Fk
ZXIqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTW9kdWxlTG9hZGVyPih2
bS5oZWFwKSkgSlNNb2R1bGVMb2FkZXIodm0sIHN0cnVjdHVyZSk7Ci0gICAgICAgIG9iamVjdC0+
ZmluaXNoQ3JlYXRpb24oZXhlYywgdm0sIGdsb2JhbE9iamVjdCk7CisgICAgICAgIG9iamVjdC0+
ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBvYmplY3Q7
CiAgICAgfQogCkBAIC04NSw3ICs4NSw3IEBAIGNsYXNzIEpTTW9kdWxlTG9hZGVyIGZpbmFsIDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBn
ZXRNb2R1bGVOYW1lc3BhY2VPYmplY3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSBtb2R1bGVSZWNvcmQp
OwogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBWTSYs
IEpTR2xvYmFsT2JqZWN0Kik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFs
T2JqZWN0Kik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359709</attachid>
            <date>2019-01-21 13:54:20 -0800</date>
            <delta_ts>2019-01-21 14:00:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193646-20190121135420.patch</filename>
            <type>text/plain</type>
            <size>4481</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ZTcxZWE3M2M1NTRiZWNiZGFlOGRhZDE3Y2NlNjliODc5ZGQxYTIwLi41ZTNhOGQxYzExMjBjZjA2
NTdhNjRmODM4ZDhjNDUyODJjY2FlNWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxOS0wMS0yMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIExhemlseSBpbml0aWFsaXplIEpTTW9kdWxlTG9hZGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2NDYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMYXppbHkgaW5pdGlh
bGl6ZSBKU01vZHVsZUxvYWRlciBzbyB0aGF0IHdlIGRvIG5vdCBuZWVkIHRvIGluaXRpYWxpemUg
aXQgdW50aWwgd2UgbmVlZCBtb2R1bGVzLgorCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om1vZHVsZUxv
YWRlciBjb25zdCk6CisKIDIwMTktMDEtMjAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxl
LmNvbT4KIAogICAgICAgICBbSlNDXSBzdWIgb3Agd2l0aCAwIHNob3VsZCBiZSBvcHRpbWl6ZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApp
bmRleCBlNTQwMDQ4ZWQ4YThiNzkwZDlkODZkZDkxOTAxZmVmODVmNGM5YTdmLi4xYTYxZjlkYjMw
ZjRhODllMmMyNDg3OThlY2QyNTI5YjVmZGVjNGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC03ODgsOSArNzg4LDE0IEBAIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBs
b3dlck5hbWUgIyMgQ29uc3RydWN0CiAgICAgUmVmbGVjdE9iamVjdCogcmVmbGVjdE9iamVjdCA9
IFJlZmxlY3RPYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgUmVmbGVjdE9iamVjdDo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwogICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5SZWZsZWN0LCByZWZsZWN0
T2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7CiAKLSAgICBtX21vZHVsZUxvYWRlci5zZXQodm0sIHRoaXMsIEpTTW9kdWxlTG9hZGVyOjpj
cmVhdGUoZ2xvYmFsRXhlYygpLCB2bSwgdGhpcywgSlNNb2R1bGVMb2FkZXI6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgdGhpcywganNOdWxsKCkpKSk7CisgICAgbV9tb2R1bGVMb2FkZXIuaW5pdExhdGVy
KAorICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNNb2R1bGVMb2FkZXI+JiBpbml0KSB7
CisgICAgICAgICAgICBhdXRvIGNhdGNoU2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKGluaXQu
dm0pOworICAgICAgICAgICAgaW5pdC5zZXQoSlNNb2R1bGVMb2FkZXI6OmNyZWF0ZShpbml0Lm93
bmVyLT5nbG9iYWxFeGVjKCksIGluaXQudm0sIGluaXQub3duZXIsIEpTTW9kdWxlTG9hZGVyOjpj
cmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5vd25lciwganNOdWxsKCkpKSk7CisgICAgICAg
ICAgICBjYXRjaFNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOworICAgICAgICB9KTsK
ICAgICBpZiAoT3B0aW9uczo6ZXhwb3NlSW50ZXJuYWxNb2R1bGVMb2FkZXIoKSkKLSAgICAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkxvYWRlciwg
bV9tb2R1bGVMb2FkZXIuZ2V0KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKTsKKyAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPkxvYWRlciwgbW9kdWxlTG9hZGVyKCksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAogICAgIEpTRnVuY3Rpb24q
IGJ1aWx0aW5Mb2cgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIHZtLnByb3BlcnR5
TmFtZXMtPmVtcHR5SWRlbnRpZmllci5zdHJpbmcoKSwgZ2xvYmFsRnVuY0J1aWx0aW5Mb2cpOwog
ICAgIEpTRnVuY3Rpb24qIGJ1aWx0aW5EZXNjcmliZSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
dGhpcywgMSwgdm0ucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyLnN0cmluZygpLCBnbG9i
YWxGdW5jQnVpbHRpbkRlc2NyaWJlKTsKQEAgLTE1NzQsNyArMTU3OSw3IEBAIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uUHJvdG9IYXNJbnN0
YW5jZVN5bWJvbEZ1bmN0aW9uKTsKICAgICB0aGlzT2JqZWN0LT5tX3Rocm93VHlwZUVycm9yR2V0
dGVyU2V0dGVyLnZpc2l0KHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3Qt
Pm1fdGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXJHZXR0ZXJTZXR0ZXIpOwot
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbW9kdWxlTG9hZGVyKTsKKyAgICB0aGlz
T2JqZWN0LT5tX21vZHVsZUxvYWRlci52aXNpdCh2aXNpdG9yKTsKIAogICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fb2JqZWN0UHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0
aGlzT2JqZWN0LT5tX2Z1bmN0aW9uUHJvdG90eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGQ1MmQwZmJmYzk4MjhlNjk2NjZhZjVi
NTIwMTRiOGYzOWM2ZTU2ZWYuLmIxZDk2YWQzYjU4NTg0YjcyMjg3MWM2ODJiMTgwNzFhYWI5YzQy
ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aApAQCAtMzAwLDcgKzMwMCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2Vn
bWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4gbV9yZWdF
eHBQcm90b1VuaWNvZGVHZXR0ZXI7CiAgICAgV3JpdGVCYXJyaWVyPEdldHRlclNldHRlcj4gbV90
aHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlckdldHRlclNldHRlcjsKIAotICAg
IFdyaXRlQmFycmllcjxKU01vZHVsZUxvYWRlcj4gbV9tb2R1bGVMb2FkZXI7CisgICAgTGF6eVBy
b3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU01vZHVsZUxvYWRlcj4gbV9tb2R1bGVMb2FkZXI7CiAK
ICAgICBXcml0ZUJhcnJpZXI8T2JqZWN0UHJvdG90eXBlPiBtX29iamVjdFByb3RvdHlwZTsKICAg
ICBXcml0ZUJhcnJpZXI8RnVuY3Rpb25Qcm90b3R5cGU+IG1fZnVuY3Rpb25Qcm90b3R5cGU7CkBA
IC02MTEsNyArNjExLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50
ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgICAgIHJldHVybiBtX3Rocm93VHlwZUVycm9yQXJndW1l
bnRzQ2FsbGVlQW5kQ2FsbGVyR2V0dGVyU2V0dGVyLmdldCgpOwogICAgIH0KICAgICAKLSAgICBK
U01vZHVsZUxvYWRlciogbW9kdWxlTG9hZGVyKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVMb2Fk
ZXIuZ2V0KCk7IH0KKyAgICBKU01vZHVsZUxvYWRlciogbW9kdWxlTG9hZGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9tb2R1bGVMb2FkZXIuZ2V0KHRoaXMpOyB9CiAKICAgICBPYmplY3RQcm90b3R5cGUq
IG9iamVjdFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0UHJvdG90eXBlLmdldCgp
OyB9CiAgICAgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmN0aW9uUHJvdG90eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKTsgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>