<?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>185539</bug_id>
          
          <creation_ts>2018-05-10 21:11:12 -0700</creation_ts>
          <short_desc>Don&apos;t use inferred types when the JIT is disabled</short_desc>
          <delta_ts>2018-07-02 08:31:16 -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>JavaScriptCore</component>
          <version>Safari Technology Preview</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>185524</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1423025</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-05-10 21:11:12 -0700</bug_when>
    <thetext>They use memory and do nothing good if you&apos;re only running in the LLInt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423035</commentid>
    <comment_count>1</comment_count>
      <attachid>340169</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-05-10 21:46:22 -0700</bug_when>
    <thetext>Created attachment 340169
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423038</commentid>
    <comment_count>2</comment_count>
      <attachid>340169</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-10 21:51:23 -0700</bug_when>
    <thetext>Comment on attachment 340169
patch

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

Patch looks good. But I have one question.

&gt; Source/JavaScriptCore/runtime/VM.h:558
&gt; +    ALWAYS_INLINE bool canUseJIT() const { return m_canUseJIT; }

Why do we change this to VM&apos;s member function? IIRC, our CSSJIT selector compiler uses VM::canUseJIT(). And since it is a static function, we can remove VM&amp; reference from CSS JIT compiler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423039</commentid>
    <comment_count>3</comment_count>
      <attachid>340169</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-05-10 21:53:18 -0700</bug_when>
    <thetext>Comment on attachment 340169
patch

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

&gt;&gt; Source/JavaScriptCore/runtime/VM.h:558
&gt;&gt; +    ALWAYS_INLINE bool canUseJIT() const { return m_canUseJIT; }
&gt; 
&gt; Why do we change this to VM&apos;s member function? IIRC, our CSSJIT selector compiler uses VM::canUseJIT(). And since it is a static function, we can remove VM&amp; reference from CSS JIT compiler.

I just wanted it to be a single load instead of an out of line function call. I didn&apos;t realize the CSSJIT uses this. I&apos;ll fix that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423040</commentid>
    <comment_count>4</comment_count>
      <attachid>340169</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-10 21:55:03 -0700</bug_when>
    <thetext>Comment on attachment 340169
patch

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

&gt;&gt;&gt; Source/JavaScriptCore/runtime/VM.h:558
&gt;&gt;&gt; +    ALWAYS_INLINE bool canUseJIT() const { return m_canUseJIT; }
&gt;&gt; 
&gt;&gt; Why do we change this to VM&apos;s member function? IIRC, our CSSJIT selector compiler uses VM::canUseJIT(). And since it is a static function, we can remove VM&amp; reference from CSS JIT compiler.
&gt; 
&gt; I just wanted it to be a single load instead of an out of line function call. I didn&apos;t realize the CSSJIT uses this. I&apos;ll fix that.

OK, it is performance reason. If it is critical, I&apos;m OK to have m_canUseJIT in VM side :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423041</commentid>
    <comment_count>5</comment_count>
      <attachid>340169</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-10 21:55:36 -0700</bug_when>
    <thetext>Comment on attachment 340169
patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/runtime/VM.h:558
&gt;&gt;&gt;&gt; +    ALWAYS_INLINE bool canUseJIT() const { return m_canUseJIT; }
&gt;&gt;&gt; 
&gt;&gt;&gt; Why do we change this to VM&apos;s member function? IIRC, our CSSJIT selector compiler uses VM::canUseJIT(). And since it is a static function, we can remove VM&amp; reference from CSS JIT compiler.
&gt;&gt; 
&gt;&gt; I just wanted it to be a single load instead of an out of line function call. I didn&apos;t realize the CSSJIT uses this. I&apos;ll fix that.
&gt; 
&gt; OK, it is performance reason. If it is critical, I&apos;m OK to have m_canUseJIT in VM side :)

And calling processCanUseJIT things from CSSJIT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423042</commentid>
    <comment_count>6</comment_count>
      <attachid>340169</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-05-10 21:59:08 -0700</bug_when>
    <thetext>Comment on attachment 340169
patch

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

&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/runtime/VM.h:558
&gt;&gt;&gt;&gt;&gt; +    ALWAYS_INLINE bool canUseJIT() const { return m_canUseJIT; }
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Why do we change this to VM&apos;s member function? IIRC, our CSSJIT selector compiler uses VM::canUseJIT(). And since it is a static function, we can remove VM&amp; reference from CSS JIT compiler.
&gt;&gt;&gt; 
&gt;&gt;&gt; I just wanted it to be a single load instead of an out of line function call. I didn&apos;t realize the CSSJIT uses this. I&apos;ll fix that.
&gt;&gt; 
&gt;&gt; OK, it is performance reason. If it is critical, I&apos;m OK to have m_canUseJIT in VM side :)
&gt; 
&gt; And calling processCanUseJIT things from CSSJIT.

I doubt it&apos;s critical. I just don&apos;t like it when we generate more code to make a function call than if that function call were inlined. I think what I&apos;ll do is just define an exported extern bool or something like that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423054</commentid>
    <comment_count>7</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-05-10 22:52:36 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #6)
&gt; Comment on attachment 340169 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=340169&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/runtime/VM.h:558
&gt; &gt;&gt;&gt;&gt;&gt; +    ALWAYS_INLINE bool canUseJIT() const { return m_canUseJIT; }
&gt; &gt;&gt;&gt;&gt; 
&gt; &gt;&gt;&gt;&gt; Why do we change this to VM&apos;s member function? IIRC, our CSSJIT selector compiler uses VM::canUseJIT(). And since it is a static function, we can remove VM&amp; reference from CSS JIT compiler.
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; I just wanted it to be a single load instead of an out of line function call. I didn&apos;t realize the CSSJIT uses this. I&apos;ll fix that.
&gt; &gt;&gt; 
&gt; &gt;&gt; OK, it is performance reason. If it is critical, I&apos;m OK to have m_canUseJIT in VM side :)
&gt; &gt; 
&gt; &gt; And calling processCanUseJIT things from CSSJIT.
&gt; 
&gt; I doubt it&apos;s critical. I just don&apos;t like it when we generate more code to
&gt; make a function call than if that function call were inlined. I think what
&gt; I&apos;ll do is just define an exported extern bool or something like that.

Ima just keep it as an out of line call for now. That&apos;s the simplest thing to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423058</commentid>
    <comment_count>8</comment_count>
      <attachid>340173</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-05-10 23:05:26 -0700</bug_when>
    <thetext>Created attachment 340173
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423142</commentid>
    <comment_count>9</comment_count>
      <attachid>340173</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-11 09:08:48 -0700</bug_when>
    <thetext>Comment on attachment 340173
patch for landing

Clearing flags on attachment: 340173

Committed r231703: &lt;https://trac.webkit.org/changeset/231703&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423143</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-11 09:08:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423144</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-11 09:09:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/40164001&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438322</commentid>
    <comment_count>12</comment_count>
      <attachid>340173</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-07-01 12:08:58 -0700</bug_when>
    <thetext>Comment on attachment 340173
patch for landing

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

&gt; Source/JavaScriptCore/runtime/Structure.h:611
&gt; +        if (hasBeenDictionary() || (!shouldOptimize &amp;&amp; !m_inferredTypeTable) || !VM::canUseJIT())

I don&apos;t like that canUseJIT is not inline, and that there are so many conditions here.  willStoreValueSlow() is a slow path, but it&apos;s not such a slow path that we wan&apos;t to add out-of-line calls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438335</commentid>
    <comment_count>13</comment_count>
      <attachid>340173</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-07-01 12:54:25 -0700</bug_when>
    <thetext>Comment on attachment 340173
patch for landing

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

&gt;&gt; Source/JavaScriptCore/runtime/Structure.h:611
&gt;&gt; +        if (hasBeenDictionary() || (!shouldOptimize &amp;&amp; !m_inferredTypeTable) || !VM::canUseJIT())
&gt; 
&gt; I don&apos;t like that canUseJIT is not inline, and that there are so many conditions here.  willStoreValueSlow() is a slow path, but it&apos;s not such a slow path that we wan&apos;t to add out-of-line calls.

I thought about this when landing this, but I opted for just doing the out of line call because it was slightly annoying to add a fast path for canUseJIT. We can add a fast path for this. Or we can also just set this value in initializeThreading and make it a single load from a static variable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438480</commentid>
    <comment_count>14</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-07-02 08:06:24 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #13)
&gt; Comment on attachment 340173 [details]
&gt; patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=340173&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/runtime/Structure.h:611
&gt; &gt;&gt; +        if (hasBeenDictionary() || (!shouldOptimize &amp;&amp; !m_inferredTypeTable) || !VM::canUseJIT())
&gt; &gt; 
&gt; &gt; I don&apos;t like that canUseJIT is not inline, and that there are so many conditions here.  willStoreValueSlow() is a slow path, but it&apos;s not such a slow path that we wan&apos;t to add out-of-line calls.
&gt; 
&gt; I thought about this when landing this, but I opted for just doing the out
&gt; of line call because it was slightly annoying to add a fast path for
&gt; canUseJIT. We can add a fast path for this. Or we can also just set this
&gt; value in initializeThreading and make it a single load from a static variable

By the time any of these functions are called, at least one VM had to have been constructed.  So it&apos;s a bit weird that VM::canUseJIT() is a thing that does lazy initialization.  Maybe other users of it benefit from the lazy initialization, but this sure doesn&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1438489</commentid>
    <comment_count>15</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-07-02 08:31:16 -0700</bug_when>
    <thetext>(In reply to Filip Pizlo from comment #14)
&gt; (In reply to Saam Barati from comment #13)
&gt; &gt; Comment on attachment 340173 [details]
&gt; &gt; patch for landing
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=340173&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/JavaScriptCore/runtime/Structure.h:611
&gt; &gt; &gt;&gt; +        if (hasBeenDictionary() || (!shouldOptimize &amp;&amp; !m_inferredTypeTable) || !VM::canUseJIT())
&gt; &gt; &gt; 
&gt; &gt; &gt; I don&apos;t like that canUseJIT is not inline, and that there are so many conditions here.  willStoreValueSlow() is a slow path, but it&apos;s not such a slow path that we wan&apos;t to add out-of-line calls.
&gt; &gt; 
&gt; &gt; I thought about this when landing this, but I opted for just doing the out
&gt; &gt; of line call because it was slightly annoying to add a fast path for
&gt; &gt; canUseJIT. We can add a fast path for this. Or we can also just set this
&gt; &gt; value in initializeThreading and make it a single load from a static variable
&gt; 
&gt; By the time any of these functions are called, at least one VM had to have
&gt; been constructed.  So it&apos;s a bit weird that VM::canUseJIT() is a thing that
&gt; does lazy initialization.  Maybe other users of it benefit from the lazy
&gt; initialization, but this sure doesn&apos;t.
Agreed. I’m pretty sure we even call this during VM construction, so no reason for any laziness. I’ll prepare a fix</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340169</attachid>
            <date>2018-05-10 21:46:22 -0700</date>
            <delta_ts>2018-05-10 23:05:26 -0700</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>11281</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMxNjg3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBA
CisyMDE4LTA1LTEwICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IERvbid0IHVzZSBpbmZlcnJlZCB0eXBlcyB3aGVuIHRoZSBKSVQgaXMgZGlzYWJsZWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTUzOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXJlIGFyZSBtYW55
IEpTQyBBUEkgY2xpZW50cyB0aGF0IHJ1biB3aXRoIHRoZSBKSVQgZGlzYWJsZWQuIFRoZXkgd2Vy
ZQorICAgICAgICBhbGwgYWxsb2NhdGluZyBhbmQgdHJhY2tpbmcgaW5mZXJyZWQgdHlwZXMgZm9y
IG5vIGJlbmVmaXQuIEluZmVycmVkIHR5cGVzCisgICAgICAgIG9ubHkgYmVuZWZpdCBwcm9ncmFt
cyB3aGVuIHRoZXkgbWFrZSBpdCB0byB0aGUgREZHL0ZUTC4gSSB3YXMgc2VlaW5nIGNhc2VzCisg
ICAgICAgIHdoZXJlIHRoZSBpbmZlcnJlZCB0eXBlIG1hY2hpbmVyeSB1c2VkIH4wLjVNQi4gVGhp
cyBwYXRjaCBtYWtlcyBpcyBzbyB3ZQorICAgICAgICBkb24ndCBhbGxvY2F0ZSB0aGF0IG1hY2hp
bmVyeSB3aGVuIHRoZSBKSVQgaXMgZGlzYWJsZWQuCisKKyAgICAgICAgKiBpbnRlcnByZXRlci9B
YnN0cmFjdFBDLmNwcDoKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RQQzo6QWJzdHJhY3RQQyk6Cisg
ICAgICAgICogaml0L0pJVFRodW5rcy5jcHA6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6Y3Rp
TmF0aXZlQ2FsbCk6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6Y3RpTmF0aXZlQ29uc3RydWN0
KToKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjpjdGlOYXRpdmVUYWlsQ2FsbCk6CisgICAgICAg
IChKU0M6OkpJVFRodW5rczo6Y3RpTmF0aXZlVGFpbENhbGxXaXRob3V0U2F2ZWRUYWdzKToKKyAg
ICAgICAgKEpTQzo6SklUVGh1bmtzOjpjdGlJbnRlcm5hbEZ1bmN0aW9uQ2FsbCk6CisgICAgICAg
IChKU0M6OkpJVFRodW5rczo6Y3RpSW50ZXJuYWxGdW5jdGlvbkNvbnN0cnVjdCk6CisgICAgICAg
IChKU0M6OkpJVFRodW5rczo6aG9zdEZ1bmN0aW9uU3R1Yik6CisgICAgICAgICogbGxpbnQvTExJ
bnRFbnRyeXBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldEZ1bmN0aW9uRW50cnlw
b2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRFdmFsRW50cnlwb2ludCk6CisgICAgICAg
IChKU0M6OkxMSW50OjpzZXRQcm9ncmFtRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50
OjpzZXRNb2R1bGVQcm9ncmFtRW50cnlwb2ludCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6c2hvdWxkSklUKToKKyAgICAgICAgKiBy
dW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6d2lsbFN0b3Jl
VmFsdWVTbG93KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpwcm9jZXNzQ2FuVXNlSklUKToKKyAgICAgICAg
KEpTQzo6Vk06OlZNKToKKyAgICAgICAgKEpTQzo6Vk06OmNhblVzZUpJVCk6IERlbGV0ZWQuCisg
ICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6Y2FuVXNlSklUIGNvbnN0
KToKKwogMjAxOC0wNS0wOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4K
IAogICAgICAgICBbSlNDXSBPYmplY3QuYXNzaWduIGZvciBmaW5hbCBvYmplY3RzIHNob3VsZCBi
ZSBmYXN0ZXIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9BYnN0cmFj
dFBDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
QWJzdHJhY3RQQy5jcHAJKHJldmlzaW9uIDIzMTY4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9BYnN0cmFjdFBDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzks
NyBAQCBBYnN0cmFjdFBDOjpBYnN0cmFjdFBDKFZNJiB2bSwgRXhlY1N0YXRlCiAgICAgVU5VU0VE
X1BBUkFNKGV4ZWMpOwogICAgIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKFZNOjpjYW5Vc2VK
SVQoKSkgeworICAgIGlmICh2bS5jYW5Vc2VKSVQoKSkgewogICAgICAgICBtX3BvaW50ZXIgPSBl
eGVjLT5yZXR1cm5QQygpLnZhbHVlKCk7CiAgICAgICAgIG1fbW9kZSA9IEpJVDsKICAgICAgICAg
cmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAkocmV2
aXNpb24gMjMxNjg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NywzNyArNDcsMzcgQEAgSklUVGh1bmtzOjp+SklUVGh1bmtz
KCkKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpJVFRodW5rUHRyVGFnPiBKSVRUaHVua3M6OmN0
aU5hdGl2ZUNhbGwoVk0qIHZtKQogewotICAgIEFTU0VSVChWTTo6Y2FuVXNlSklUKCkpOworICAg
IEFTU0VSVCh2bS0+Y2FuVXNlSklUKCkpOwogICAgIHJldHVybiBjdGlTdHViKHZtLCBuYXRpdmVD
YWxsR2VuZXJhdG9yKS5jb2RlKCk7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKSVRUaHVu
a1B0clRhZz4gSklUVGh1bmtzOjpjdGlOYXRpdmVDb25zdHJ1Y3QoVk0qIHZtKQogewotICAgIEFT
U0VSVChWTTo6Y2FuVXNlSklUKCkpOworICAgIEFTU0VSVCh2bS0+Y2FuVXNlSklUKCkpOwogICAg
IHJldHVybiBjdGlTdHViKHZtLCBuYXRpdmVDb25zdHJ1Y3RHZW5lcmF0b3IpLmNvZGUoKTsKIH0K
IAogTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpJVFRodW5rUHRyVGFnPiBKSVRUaHVua3M6OmN0aU5h
dGl2ZVRhaWxDYWxsKFZNKiB2bSkKIHsKLSAgICBBU1NFUlQoVk06OmNhblVzZUpJVCgpKTsKKyAg
ICBBU1NFUlQodm0tPmNhblVzZUpJVCgpKTsKICAgICByZXR1cm4gY3RpU3R1Yih2bSwgbmF0aXZl
VGFpbENhbGxHZW5lcmF0b3IpLmNvZGUoKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpJ
VFRodW5rUHRyVGFnPiBKSVRUaHVua3M6OmN0aU5hdGl2ZVRhaWxDYWxsV2l0aG91dFNhdmVkVGFn
cyhWTSogdm0pCiB7Ci0gICAgQVNTRVJUKFZNOjpjYW5Vc2VKSVQoKSk7CisgICAgQVNTRVJUKHZt
LT5jYW5Vc2VKSVQoKSk7CiAgICAgcmV0dXJuIGN0aVN0dWIodm0sIG5hdGl2ZVRhaWxDYWxsV2l0
aG91dFNhdmVkVGFnc0dlbmVyYXRvcikuY29kZSgpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI8SklUVGh1bmtQdHJUYWc+IEpJVFRodW5rczo6Y3RpSW50ZXJuYWxGdW5jdGlvbkNhbGwoVk0q
IHZtKQogewotICAgIEFTU0VSVChWTTo6Y2FuVXNlSklUKCkpOworICAgIEFTU0VSVCh2bS0+Y2Fu
VXNlSklUKCkpOwogICAgIHJldHVybiBjdGlTdHViKHZtLCBpbnRlcm5hbEZ1bmN0aW9uQ2FsbEdl
bmVyYXRvcikuY29kZSgpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SklUVGh1bmtQdHJU
YWc+IEpJVFRodW5rczo6Y3RpSW50ZXJuYWxGdW5jdGlvbkNvbnN0cnVjdChWTSogdm0pCiB7Ci0g
ICAgQVNTRVJUKFZNOjpjYW5Vc2VKSVQoKSk7CisgICAgQVNTRVJUKHZtLT5jYW5Vc2VKSVQoKSk7
CiAgICAgcmV0dXJuIGN0aVN0dWIodm0sIGludGVybmFsRnVuY3Rpb25Db25zdHJ1Y3RHZW5lcmF0
b3IpLmNvZGUoKTsKIH0KIApAQCAtMTE2LDcgKzExNiw3IEBAIE5hdGl2ZUV4ZWN1dGFibGUqIEpJ
VFRodW5rczo6aG9zdEZ1bmN0aW8KIE5hdGl2ZUV4ZWN1dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1
bmN0aW9uU3R1YihWTSogdm0sIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBUYWdnZWRO
YXRpdmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgVGh1bmtHZW5lcmF0b3IgZ2VuZXJhdG9yLCBJbnRy
aW5zaWMgaW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25z
dCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOyAg
ICAKLSAgICBBU1NFUlQoVk06OmNhblVzZUpJVCgpKTsKKyAgICBBU1NFUlQodm0tPmNhblVzZUpJ
VCgpKTsKIAogICAgIGlmIChOYXRpdmVFeGVjdXRhYmxlKiBuYXRpdmVFeGVjdXRhYmxlID0gbV9o
b3N0RnVuY3Rpb25TdHViTWFwLT5nZXQoc3RkOjptYWtlX3R1cGxlKGZ1bmN0aW9uLCBjb25zdHJ1
Y3RvciwgbmFtZSkpKQogICAgICAgICByZXR1cm4gbmF0aXZlRXhlY3V0YWJsZTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCShyZXZp
c2lvbiAyMzE2ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBv
aW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgdm9pZCBzZXRG
dW5jdGlvbkVudHJ5cG9pbnQoVk0mIHZtCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
ID0gY29kZUJsb2NrLT5zcGVjaWFsaXphdGlvbktpbmQoKTsKICAgICAKICNpZiBFTkFCTEUoSklU
KQotICAgIGlmIChWTTo6Y2FuVXNlSklUKCkpIHsKKyAgICBpZiAodm0uY2FuVXNlSklUKCkpIHsK
ICAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKICAgICAgICAgICAgIGNvZGVCbG9j
ay0+c2V0SklUQ29kZSgKICAgICAgICAgICAgICAgICBhZG9wdFJlZigqbmV3IERpcmVjdEpJVENv
ZGUodm0uZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKS5yZXRh
Z2dlZDxKU0VudHJ5UHRyVGFnPigpLCB2bS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEFyaXR5
Q2hlY2tUaHVua0dlbmVyYXRvcikucmV0YWdnZWRDb2RlPEpTRW50cnlQdHJUYWc+KCksIEpJVENv
ZGU6OkludGVycHJldGVyVGh1bmspKSk7CkBAIC03MCw3ICs3MCw3IEBAIHN0YXRpYyB2b2lkIHNl
dEZ1bmN0aW9uRW50cnlwb2ludChWTSYgdm0KIHN0YXRpYyB2b2lkIHNldEV2YWxFbnRyeXBvaW50
KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAjaWYgRU5BQkxFKEpJVCkKLSAgICBp
ZiAoVk06OmNhblVzZUpJVCgpKSB7CisgICAgaWYgKHZtLmNhblVzZUpJVCgpKSB7CiAgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBjb2RlUmVmID0gdm0uZ2V0Q1RJ
U3R1YihldmFsRW50cnlUaHVua0dlbmVyYXRvcikucmV0YWdnZWQ8SlNFbnRyeVB0clRhZz4oKTsK
ICAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKAogICAgICAgICAgICAgYWRvcHRSZWYoKm5l
dyBEaXJlY3RKSVRDb2RlKGNvZGVSZWYsIGNvZGVSZWYuY29kZSgpLCBKSVRDb2RlOjpJbnRlcnBy
ZXRlclRodW5rKSkpOwpAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgdm9pZCBzZXRFdmFsRW50cnlw
b2ludChWTSYgdm0sIENvCiBzdGF0aWMgdm9pZCBzZXRQcm9ncmFtRW50cnlwb2ludChWTSYgdm0s
IENvZGVCbG9jayogY29kZUJsb2NrKQogewogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKFZNOjpj
YW5Vc2VKSVQoKSkgeworICAgIGlmICh2bS5jYW5Vc2VKSVQoKSkgewogICAgICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gY29kZVJlZiA9IHZtLmdldENUSVN0dWIocHJv
Z3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLnJldGFnZ2VkPEpTRW50cnlQdHJUYWc+KCk7CiAgICAg
ICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKICAgICAgICAgICAgIGFkb3B0UmVmKCpuZXcgRGly
ZWN0SklUQ29kZShjb2RlUmVmLCBjb2RlUmVmLmNvZGUoKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJU
aHVuaykpKTsKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgdm9pZCBzZXRQcm9ncmFtRW50cnlw
b2ludChWTSYgdm0sCiBzdGF0aWMgdm9pZCBzZXRNb2R1bGVQcm9ncmFtRW50cnlwb2ludChWTSYg
dm0sIENvZGVCbG9jayogY29kZUJsb2NrKQogewogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKFZN
OjpjYW5Vc2VKSVQoKSkgeworICAgIGlmICh2bS5jYW5Vc2VKSVQoKSkgewogICAgICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gY29kZVJlZiA9IHZtLmdldENUSVN0dWIo
bW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLnJldGFnZ2VkPEpTRW50cnlQdHJUYWc+
KCk7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSgKICAgICAgICAgICAgIGFkb3B0UmVm
KCpuZXcgRGlyZWN0SklUQ29kZShjb2RlUmVmLCBjb2RlUmVmLmNvZGUoKSwgSklUQ29kZTo6SW50
ZXJwcmV0ZXJUaHVuaykpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjMxNjg3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI1LDcg
KzMyNSw3IEBAIGlubGluZSBib29sIHNob3VsZEpJVChDb2RlQmxvY2sqIGNvZGVCbG8KICAgICAg
ICAgfHwgIWVuc3VyZUdsb2JhbEpJVFdoaXRlbGlzdCgpLmNvbnRhaW5zKGNvZGVCbG9jaykpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBWTTo6Y2FuVXNlSklUKCkgJiYgT3B0
aW9uczo6dXNlQmFzZWxpbmVKSVQoKTsKKyAgICByZXR1cm4gY29kZUJsb2NrLT52bSgpLT5jYW5V
c2VKSVQoKSAmJiBPcHRpb25zOjp1c2VCYXNlbGluZUpJVCgpOwogfQogCiAvLyBSZXR1cm5zIHRy
dWUgaWYgd2Ugc2hvdWxkIHRyeSB0byBPU1IuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHJldmlzaW9uIDIzMTY4NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5NSw2
ICs4OTUsOCBAQCB2b2lkIFN0cnVjdHVyZTo6d2lsbFN0b3JlVmFsdWVTbG93KAogICAgIEFTU0VS
VChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gaW5mbygpKTsKICAgICBBU1NFUlQoIWhhc0Jl
ZW5EaWN0aW9uYXJ5KCkpOwogCisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh2bS5jYW5Vc2VKSVQo
KSwgIldlIGRvbid0IHdhbnQgdG8gdXNlIG1lbW9yeSBmb3IgaW5mZXJyZWQgdHlwZXMgdW5sZXNz
IHdlJ3JlIHVzaW5nIHRoZSBKSVQuIik7CisKICAgICAvLyBDcmVhdGUgdGhlIGluZmVycmVkIHR5
cGUgdGFibGUgYmVmb3JlIGRvaW5nIGFueXRoaW5nIGVsc2UsIHNvIHRoYXQgd2UgZG9uJ3QgR0Mg
YWZ0ZXIgd2UgaGF2ZSBhbHJlYWR5CiAgICAgLy8gZ3JhYmJlZCBhIHBvaW50ZXIgaW50byB0aGUg
cHJvcGVydHkgbWFwLgogICAgIEluZmVycmVkVHlwZVRhYmxlKiB0YWJsZSA9IG1faW5mZXJyZWRU
eXBlVGFibGUuZ2V0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuaAkocmV2aXNpb24gMjMxNjg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwOCw3ICs2MDgsNyBAQCBwdWJsaWM6
CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHdpbGxTdG9yZVZhbHVlRm9yTmV3VHJhbnNpdGlvbigK
ICAgICAgICAgVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBib29sIHNob3VsZE9wdGltaXplKQogICAgIHsKLSAgICAgICAgaWYgKGhhc0JlZW5EaWN0aW9u
YXJ5KCkgfHwgKCFzaG91bGRPcHRpbWl6ZSAmJiAhbV9pbmZlcnJlZFR5cGVUYWJsZSkpCisgICAg
ICAgIGlmIChoYXNCZWVuRGljdGlvbmFyeSgpIHx8ICghc2hvdWxkT3B0aW1pemUgJiYgIW1faW5m
ZXJyZWRUeXBlVGFibGUpIHx8ICF2bS5jYW5Vc2VKSVQoKSkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgd2lsbFN0b3JlVmFsdWVTbG93KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91
bGRPcHRpbWl6ZSwgSW5mZXJyZWRUeXBlVGFibGU6Ok5ld1Byb3BlcnR5KTsKICAgICB9CkBAIC02
MTksNyArNjE5LDcgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCB3aWxsU3RvcmVW
YWx1ZUZvckV4aXN0aW5nVHJhbnNpdGlvbigKICAgICAgICAgVk0mIHZtLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZE9wdGltaXplKQogICAgIHsK
LSAgICAgICAgaWYgKGhhc0JlZW5EaWN0aW9uYXJ5KCkgfHwgIW1faW5mZXJyZWRUeXBlVGFibGUp
CisgICAgICAgIGlmIChoYXNCZWVuRGljdGlvbmFyeSgpIHx8ICFtX2luZmVycmVkVHlwZVRhYmxl
IHx8ICF2bS5jYW5Vc2VKSVQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgd2lsbFN0
b3JlVmFsdWVTbG93KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRPcHRpbWl6ZSwgSW5m
ZXJyZWRUeXBlVGFibGU6Ok5ld1Byb3BlcnR5KTsKICAgICB9CkBAIC02MjgsNyArNjI4LDcgQEAg
cHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCB3aWxsU3RvcmVWYWx1ZUZvclJlcGxhY2Uo
CiAgICAgICAgIFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgYm9vbCBzaG91bGRPcHRpbWl6ZSkKICAgICB7Ci0gICAgICAgIGlmIChoYXNCZWVuRGljdGlv
bmFyeSgpKQorICAgICAgICBpZiAoaGFzQmVlbkRpY3Rpb25hcnkoKSB8fCAhdm0uY2FuVXNlSklU
KCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHdpbGxTdG9yZVZhbHVlU2xvdyh2bSwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkT3B0aW1pemUsIEluZmVycmVkVHlwZVRhYmxlOjpP
bGRQcm9wZXJ0eSk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAkocmV2aXNpb24gMjMxNjg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTAsNyArMjEwLDcgQEAgYm9vbCBWTTo6Y2FuVXNlQXNz
ZW1ibGVyKCkKICNlbmRpZgogfQogCi1ib29sIFZNOjpjYW5Vc2VKSVQoKQorc3RhdGljIGJvb2wg
cHJvY2Vzc0NhblVzZUpJVCgpCiB7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgb25jZUtleTsKQEAgLTM0NSw2ICszNDUsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlw
ZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2NvZGVDYWNoZShzdGQ6Om1ha2VfdW5pcXVl
PENvZGVDYWNoZT4oKSkKICAgICAsIG1fYnVpbHRpbkV4ZWN1dGFibGVzKHN0ZDo6bWFrZV91bmlx
dWU8QnVpbHRpbkV4ZWN1dGFibGVzPigqdGhpcykpCiAgICAgLCBtX3R5cGVQcm9maWxlckVuYWJs
ZWRDb3VudCgwKQorICAgICwgbV9jYW5Vc2VKSVQocHJvY2Vzc0NhblVzZUpJVCgpKQogICAgICwg
bV9wcmltaXRpdmVHaWdhY2FnZUVuYWJsZWQoSXNXYXRjaGVkKQogICAgICwgbV9jb250cm9sRmxv
d1Byb2ZpbGVyRW5hYmxlZENvdW50KDApCiAgICAgLCBtX3NoYWRvd0NoaWNrZW4oc3RkOjptYWtl
X3VuaXF1ZTxTaGFkb3dDaGlja2VuPigpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCShyZXZpc2lvbiAyMzE2ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NTUsNyArNTU1LDcgQEAgcHVibGljOgogICAgIH07CiAK
ICAgICBzdGF0aWMgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjYW5Vc2VBc3NlbWJsZXIoKTsKLSAg
ICBzdGF0aWMgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjYW5Vc2VKSVQoKTsKKyAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgY2FuVXNlSklUKCkgY29uc3QgeyByZXR1cm4gbV9jYW5Vc2VKSVQ7IH0KICAg
ICBzdGF0aWMgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjYW5Vc2VSZWdFeHBKSVQoKTsKIAogICAg
IFNvdXJjZVByb3ZpZGVyQ2FjaGUqIGFkZFNvdXJjZVByb3ZpZGVyQ2FjaGUoU291cmNlUHJvdmlk
ZXIqKTsKQEAgLTkwMSw2ICs5MDEsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxU
eXBlUHJvZmlsZXJMb2c+IG1fdHlwZVByb2ZpbGVyTG9nOwogICAgIHVuc2lnbmVkIG1fdHlwZVBy
b2ZpbGVyRW5hYmxlZENvdW50OwogICAgIGJvb2wgbV9uZWVkVG9GaXJlUHJpbWl0aXZlR2lnYWNh
Z2VFbmFibGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fY2FuVXNlSklUOwogICAgIExvY2sgbV9z
Y3JhdGNoQnVmZmVyTG9jazsKICAgICBWZWN0b3I8U2NyYXRjaEJ1ZmZlcio+IG1fc2NyYXRjaEJ1
ZmZlcnM7CiAgICAgc2l6ZV90IG1fc2l6ZU9mTGFzdFNjcmF0Y2hCdWZmZXIgeyAwIH07Cg==
</data>
<flag name="review"
          id="358416"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340173</attachid>
            <date>2018-05-10 23:05:26 -0700</date>
            <delta_ts>2018-05-11 09:08:48 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>3340</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMxNjkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE4LTA1LTEwICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IERvbid0IHVzZSBpbmZlcnJlZCB0eXBlcyB3aGVuIHRoZSBKSVQgaXMgZGlzYWJsZWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTUzOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgVGhlcmUgYXJlIG1hbnkg
SlNDIEFQSSBjbGllbnRzIHRoYXQgcnVuIHdpdGggdGhlIEpJVCBkaXNhYmxlZC4gVGhleSB3ZXJl
CisgICAgICAgIGFsbCBhbGxvY2F0aW5nIGFuZCB0cmFja2luZyBpbmZlcnJlZCB0eXBlcyBmb3Ig
bm8gYmVuZWZpdC4gSW5mZXJyZWQgdHlwZXMKKyAgICAgICAgb25seSBiZW5lZml0IHByb2dyYW1z
IHdoZW4gdGhleSBtYWtlIGl0IHRvIHRoZSBERkcvRlRMLiBJIHdhcyBzZWVpbmcgY2FzZXMKKyAg
ICAgICAgd2hlcmUgdGhlIGluZmVycmVkIHR5cGUgbWFjaGluZXJ5IHVzZWQgfjAuNU1CLiBUaGlz
IHBhdGNoIG1ha2VzIGlzIHNvIHdlCisgICAgICAgIGRvbid0IGFsbG9jYXRlIHRoYXQgbWFjaGlu
ZXJ5IHdoZW4gdGhlIEpJVCBpcyBkaXNhYmxlZC4KKworICAgICAgICAqIHJ1bnRpbWUvU3RydWN0
dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp3aWxsU3RvcmVWYWx1ZVNsb3cpOgor
ICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisKIDIwMTgtMDUtMTAgIFl1c3VrZSBTdXp1
a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0pTQ10gTWFrZSByZXR1cm4g
dHlwZXMgb2YgY29uc3RydWN0aW9uIGZ1bmN0aW9ucyB0aWdodApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAyMzE2ODcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04OTUsNiArODk1LDggQEAgdm9pZCBTdHJ1Y3R1cmU6OndpbGxTdG9yZVZhbHVlU2xvdygK
ICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09IGluZm8oKSk7CiAgICAgQVNT
RVJUKCFoYXNCZWVuRGljdGlvbmFyeSgpKTsKIAorICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoVk06
OmNhblVzZUpJVCgpLCAiV2UgZG9uJ3Qgd2FudCB0byB1c2UgbWVtb3J5IGZvciBpbmZlcnJlZCB0
eXBlcyB1bmxlc3Mgd2UncmUgdXNpbmcgdGhlIEpJVC4iKTsKKwogICAgIC8vIENyZWF0ZSB0aGUg
aW5mZXJyZWQgdHlwZSB0YWJsZSBiZWZvcmUgZG9pbmcgYW55dGhpbmcgZWxzZSwgc28gdGhhdCB3
ZSBkb24ndCBHQyBhZnRlciB3ZSBoYXZlIGFscmVhZHkKICAgICAvLyBncmFiYmVkIGEgcG9pbnRl
ciBpbnRvIHRoZSBwcm9wZXJ0eSBtYXAuCiAgICAgSW5mZXJyZWRUeXBlVGFibGUqIHRhYmxlID0g
bV9pbmZlcnJlZFR5cGVUYWJsZS5nZXQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAyMzE2ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtNjA4LDcgKzYwOCw3
IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgd2lsbFN0b3JlVmFsdWVGb3JOZXdU
cmFuc2l0aW9uKAogICAgICAgICBWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkT3B0aW1pemUpCiAgICAgewotICAgICAgICBpZiAoaGFz
QmVlbkRpY3Rpb25hcnkoKSB8fCAoIXNob3VsZE9wdGltaXplICYmICFtX2luZmVycmVkVHlwZVRh
YmxlKSkKKyAgICAgICAgaWYgKGhhc0JlZW5EaWN0aW9uYXJ5KCkgfHwgKCFzaG91bGRPcHRpbWl6
ZSAmJiAhbV9pbmZlcnJlZFR5cGVUYWJsZSkgfHwgIVZNOjpjYW5Vc2VKSVQoKSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgd2lsbFN0b3JlVmFsdWVTbG93KHZtLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzaG91bGRPcHRpbWl6ZSwgSW5mZXJyZWRUeXBlVGFibGU6Ok5ld1Byb3BlcnR5KTsK
ICAgICB9CkBAIC02MTksNyArNjE5LDcgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCB3aWxsU3RvcmVWYWx1ZUZvckV4aXN0aW5nVHJhbnNpdGlvbigKICAgICAgICAgVk0mIHZtLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZE9wdGlt
aXplKQogICAgIHsKLSAgICAgICAgaWYgKGhhc0JlZW5EaWN0aW9uYXJ5KCkgfHwgIW1faW5mZXJy
ZWRUeXBlVGFibGUpCisgICAgICAgIGlmIChoYXNCZWVuRGljdGlvbmFyeSgpIHx8ICFtX2luZmVy
cmVkVHlwZVRhYmxlIHx8ICFWTTo6Y2FuVXNlSklUKCkpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIHdpbGxTdG9yZVZhbHVlU2xvdyh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxk
T3B0aW1pemUsIEluZmVycmVkVHlwZVRhYmxlOjpOZXdQcm9wZXJ0eSk7CiAgICAgfQpAQCAtNjI4
LDcgKzYyOCw3IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgd2lsbFN0b3JlVmFs
dWVGb3JSZXBsYWNlKAogICAgICAgICBWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkT3B0aW1pemUpCiAgICAgewotICAgICAgICBpZiAo
aGFzQmVlbkRpY3Rpb25hcnkoKSkKKyAgICAgICAgaWYgKGhhc0JlZW5EaWN0aW9uYXJ5KCkgfHwg
IVZNOjpjYW5Vc2VKSVQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgd2lsbFN0b3Jl
VmFsdWVTbG93KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRPcHRpbWl6ZSwgSW5mZXJy
ZWRUeXBlVGFibGU6Ok9sZFByb3BlcnR5KTsKICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>