<?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>143298</bug_id>
          
          <creation_ts>2015-04-01 01:43:17 -0700</creation_ts>
          <short_desc>[TexMap] Clean up BitmapTexture and BitmapTextureGL.</short_desc>
          <delta_ts>2015-10-25 07:23:53 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>143299</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Gwang Yoon Hwang">yoon</reporter>
          <assigned_to name="Gwang Yoon Hwang">yoon</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>mrobinson</cc>
    
    <cc>noam</cc>
    
    <cc>ossy</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1081932</commentid>
    <comment_count>0</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-04-01 01:43:17 -0700</bug_when>
    <thetext>[TexMap] Clean up BitmapTexture and BitmapTextureGL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081933</commentid>
    <comment_count>1</comment_count>
      <attachid>249905</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-04-01 01:44:36 -0700</bug_when>
    <thetext>Created attachment 249905
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081947</commentid>
    <comment_count>2</comment_count>
      <attachid>249905</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-04-01 02:26:51 -0700</bug_when>
    <thetext>Comment on attachment 249905
Patch

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

This looks almost perfect. Left a few comments though.
While the patch looks harmless, I wouldn&apos;t land it before the EFL port fixes the last regression.

&gt; Source/WebCore/platform/graphics/texmap/BitmapTexture.h:70
&gt; +    virtual bool canReuseWith(const IntSize&amp; /* contentsSize */, bool /* hasAlpha */ = 0) { return false; }

Can we drop the hasAlpha parameter? It&apos;s unused in the current code.

&gt; Source/WebCore/platform/graphics/texmap/BitmapTextureGL.cpp:65
&gt; +static bool driverSupportsExternalTextureBGRA(GraphicsContext3D* context)

This can just take in a reference to the GraphicsContext3D object.

&gt; Source/WebCore/platform/graphics/texmap/BitmapTextureGL.cpp:91
&gt; +        if (driverSupportsExternalTextureBGRA(m_context3D.get()))

Can we afford caching the return value of driverSupportsExternalTextureBGRA() in a member variable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081991</commentid>
    <comment_count>3</comment_count>
      <attachid>249919</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-04-01 06:59:20 -0700</bug_when>
    <thetext>Created attachment 249919
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081992</commentid>
    <comment_count>4</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-04-01 07:02:33 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 249905 [details]
&gt; Patch
&gt; &gt; Source/WebCore/platform/graphics/texmap/BitmapTexture.h:70
&gt; &gt; +    virtual bool canReuseWith(const IntSize&amp; /* contentsSize */, bool /* hasAlpha */ = 0) { return false; }
&gt; 
&gt; Can we drop the hasAlpha parameter? It&apos;s unused in the current code.
&gt;

I just removed canReuseWith, this method is not needed anymore.
 
&gt; &gt; Source/WebCore/platform/graphics/texmap/BitmapTextureGL.cpp:65
&gt; &gt; +static bool driverSupportsExternalTextureBGRA(GraphicsContext3D* context)
&gt; 
&gt; This can just take in a reference to the GraphicsContext3D object.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/BitmapTextureGL.cpp:91
&gt; &gt; +        if (driverSupportsExternalTextureBGRA(m_context3D.get()))
&gt; 
&gt; Can we afford caching the return value of
&gt; driverSupportsExternalTextureBGRA() in a member variable?

Good catch. we can test it with a m_format whether swizzling is needed or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096521</commentid>
    <comment_count>5</comment_count>
      <attachid>249919</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-05-21 00:41:38 -0700</bug_when>
    <thetext>Comment on attachment 249919
Patch

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096579</commentid>
    <comment_count>6</comment_count>
      <attachid>249919</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2015-05-21 07:55:27 -0700</bug_when>
    <thetext>Comment on attachment 249919
Patch

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

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperTile.cpp:66
&gt; +        m_texture-&gt;reset(targetRect.size(), true);

Here I think you should either keep the enum or put in a comment, because of this style rule:

&quot;Prefer enums to bools on function parameters if callers are likely to be passing constants, since named constants are easier to read at the call site. An exception to this rule is a setter function, where the name of the function already makes clear what the boolean is.&quot;

The new version is a little harder to understand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136326</commentid>
    <comment_count>7</comment_count>
      <attachid>263995</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-10-24 18:17:10 -0700</bug_when>
    <thetext>Created attachment 263995
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136330</commentid>
    <comment_count>8</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-10-24 18:30:25 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 249919 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=249919&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperTile.cpp:66
&gt; &gt; +        m_texture-&gt;reset(targetRect.size(), true);
&gt; 
&gt; Here I think you should either keep the enum or put in a comment, because of
&gt; this style rule:
&gt; 
&gt; &quot;Prefer enums to bools on function parameters if callers are likely to be
&gt; passing constants, since named constants are easier to read at the call
&gt; site. An exception to this rule is a setter function, where the name of the
&gt; function already makes clear what the boolean is.&quot;
&gt; 
&gt; The new version is a little harder to understand.

Ah, I thought this patch was already landed. :/
Anyway, I agree with your review, thank you so much for quoting the guideline.
I learned one more thing today.
I reverted changes related with Flags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136338</commentid>
    <comment_count>9</comment_count>
      <attachid>263995</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-24 19:24:04 -0700</bug_when>
    <thetext>Comment on attachment 263995
Patch

Clearing flags on attachment: 263995

Committed r191541: &lt;http://trac.webkit.org/changeset/191541&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249905</attachid>
            <date>2015-04-01 01:44:36 -0700</date>
            <delta_ts>2015-04-01 06:59:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143298-20150401174353.patch</filename>
            <type>text/plain</type>
            <size>15579</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGJjMGE2NTAzZWY1OTNm
MjQ0YmNjZDJhOWU2MjFhYTcwYjA1NzA4OS4uYTdmODY0NGNkODFlMTAyMjVmM2I2MTUwOTMyODIw
NWJjODY0Zjg3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE1LTAzLTMxICBHd2Fu
ZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtUZXhNYXBdIENsZWFu
IHVwIEJpdG1hcFRleHR1cmUgYW5kIEJpdG1hcFRleHR1cmVHTC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzI5OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhpcyBpcyBqdXN0
IGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFw
VGV4dHVyZS5oOgorICAgICAgICBCaXRtYXBUZXh0dXJlOjpGbGFnIGlzIHVzZWQgZm9yIGNoZWNr
aW5nIHRoZSB0ZXh0dXJlIHN1cHBvcnRzIGFscGhhIG9yCisgICAgICAgIG5vdC4gVGhpcyBwYXRj
aCByZXBsYWNlcyBCaXRtYXBUZXh0dXJlOjpGbGFnIHRvIGEgc2luZ2xlIGJvb2xlYW4gdG8KKyAg
ICAgICAgaW1wcm92ZSByZWFkYWJpbGl0eS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuaDoKKyAgICAgICAgV2UgZG8gbm90IGhhdmUgdG8gY2hl
Y2sgYSBzdWl0YWJsZSB0ZXh0dXJlIGZvcm1hdCBpbiBldmVyeQorICAgICAgICB1cGRhdGUvcmVz
ZXQuIEl0IGlzIGVub3VnaCB0byBzdG9yZSB0aGUgZm9ybWF0cyBpbiBjb25zdHJ1Y3Rpb24gdGlt
ZQorICAgICAgICBhbmQgcmV1c2UgdGhlbS4KKwogMjAxNS0wMS0wOCAgR3dhbmcgWW9vbiBId2Fu
ZyAgPHlvb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBbQ29vcmRpbmF0ZWRHcmFwaGljc10gTm9u
LW92ZXJsYXkgc2Nyb2xsYmFyIGlzIG5vdCByZW5kZXJlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IGZlMjFiNzVhMmYxZmM2
OWM4NTIzNTMzOGI3M2MzNzVkNDc1NmUwZWEuLjk0NTZlNTk5YWQwZWRmYjMzNjNiYWYxNTU2ZWM2
ODgxODYyZGRhMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyQmFzZS5jcHAKQEAgLTI5NSw3ICsyOTUsNyBAQCBQYXNzUmVmUHRyPEJpdG1hcFRl
eHR1cmU+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRleHR1cmUoVGV4
dHVyZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEludFNpemUgc2l6ZSA9IEludFNp
emUoR1NUX1ZJREVPX0lORk9fV0lEVEgoJnZpZGVvSW5mbyksIEdTVF9WSURFT19JTkZPX0hFSUdI
VCgmdmlkZW9JbmZvKSk7Ci0gICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUgPSB0ZXh0
dXJlTWFwcGVyLT5hY3F1aXJlVGV4dHVyZUZyb21Qb29sKHNpemUsIEdTVF9WSURFT19JTkZPX0hB
U19BTFBIQSgmdmlkZW9JbmZvKSA/IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEgOiBCaXRt
YXBUZXh0dXJlOjpOb0ZsYWcpOworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlID0g
dGV4dHVyZU1hcHBlci0+YWNxdWlyZVRleHR1cmVGcm9tUG9vbChzaXplLCBHU1RfVklERU9fSU5G
T19IQVNfQUxQSEEoJnZpZGVvSW5mbykpOwogICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X3Nh
bXBsZV9nZXRfYnVmZmVyKG1fc2FtcGxlKTsKIAogI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDEs
IDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Qml0bWFwVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0JpdG1hcFRleHR1cmUuaAppbmRleCA2NjI1ZjJmZjcwYzM4NDkwMmNjMjNjNDQ1ZGU5NDk2ZmNk
NzNkMmM3Li5iZWViZWViYTM1YzI2MDc1MmMzMDUwOTA4NWY4YmUzM2RiODJhOWFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVy
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBU
ZXh0dXJlLmgKQEAgLTQ3LDIwICs0NywxMyBAQCBjbGFzcyBUZXh0dXJlTWFwcGVyOwogLy8gQSAy
RCB0ZXh0dXJlIHRoYXQgY2FuIGJlIHRoZSB0YXJnZXQgb2Ygc29mdHdhcmUgb3IgR0wgcmVuZGVy
aW5nLgogY2xhc3MgQml0bWFwVGV4dHVyZSA6IHB1YmxpYyBSZWZDb3VudGVkPEJpdG1hcFRleHR1
cmU+IHsKIHB1YmxpYzoKLSAgICBlbnVtIEZsYWcgewotICAgICAgICBOb0ZsYWcgPSAwLAotICAg
ICAgICBTdXBwb3J0c0FscGhhID0gMHgwMQotICAgIH07Ci0KICAgICBlbnVtIFVwZGF0ZUNvbnRl
bnRzRmxhZyB7CiAgICAgICAgIFVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhLAogICAg
ICAgICBVcGRhdGVDYW5ub3RNb2RpZnlPcmlnaW5hbEltYWdlRGF0YQogICAgIH07CiAKLSAgICB0
eXBlZGVmIHVuc2lnbmVkIEZsYWdzOwotCiAgICAgQml0bWFwVGV4dHVyZSgpCi0gICAgICAgIDog
bV9mbGFncygwKQorICAgICAgICA6IG1faGFzQWxwaGEoZmFsc2UpCiAgICAgewogICAgIH0KIApA
QCAtNzIsMTMgKzY1LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29udGVu
dHMoVGV4dHVyZU1hcHBlciosIEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBJbnRSZWN0JiB0YXJnZXQs
IGNvbnN0IEludFBvaW50JiBvZmZzZXQsIFVwZGF0ZUNvbnRlbnRzRmxhZyk7CiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqLCBjb25zdCBJbnRSZWN0JiB0YXJnZXQs
IGNvbnN0IEludFBvaW50JiBvZmZzZXQsIGludCBieXRlc1BlckxpbmUsIFVwZGF0ZUNvbnRlbnRz
RmxhZykgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgPSAwOwotICAgIGlu
bGluZSBGbGFncyBmbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7IH0KIAogICAgIHZpcnR1
YWwgaW50IGJwcCgpIGNvbnN0IHsgcmV0dXJuIDMyOyB9Ci0gICAgdmlydHVhbCBib29sIGNhblJl
dXNlV2l0aChjb25zdCBJbnRTaXplJiAvKiBjb250ZW50c1NpemUgKi8sIEZsYWdzID0gMCkgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2b2lkIHJlc2V0KGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdz
IGZsYWdzID0gMCkKKyAgICB2aXJ0dWFsIGJvb2wgY2FuUmV1c2VXaXRoKGNvbnN0IEludFNpemUm
IC8qIGNvbnRlbnRzU2l6ZSAqLywgYm9vbCAvKiBoYXNBbHBoYSAqLyA9IDApIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdm9pZCByZXNldChjb25zdCBJbnRTaXplJiBzaXplLCBib29sIGhhc0FscGhh
ID0gZmFsc2UpCiAgICAgewotICAgICAgICBtX2ZsYWdzID0gZmxhZ3M7CisgICAgICAgIG1faGFz
QWxwaGEgPSBoYXNBbHBoYTsKICAgICAgICAgbV9jb250ZW50U2l6ZSA9IHNpemU7CiAgICAgICAg
IGRpZFJlc2V0KCk7CiAgICAgfQpAQCAtODYsNyArNzgsNyBAQCBwdWJsaWM6CiAKICAgICBpbmxp
bmUgSW50U2l6ZSBjb250ZW50U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudFNpemU7IH0K
ICAgICBpbmxpbmUgaW50IG51bWJlck9mQnl0ZXMoKSBjb25zdCB7IHJldHVybiBzaXplKCkud2lk
dGgoKSAqIHNpemUoKS5oZWlnaHQoKSAqIGJwcCgpID4+IDM7IH0KLSAgICBpbmxpbmUgYm9vbCBp
c09wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuICEobV9mbGFncyAmIFN1cHBvcnRzQWxwaGEpOyB9Cisg
ICAgaW5saW5lIGJvb2wgaXNPcGFxdWUoKSBjb25zdCB7IHJldHVybiAhbV9oYXNBbHBoYTsgfQog
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGFwcGx5RmlsdGVycyhUZXh0
dXJlTWFwcGVyKiwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpIHsgcmV0dXJuIHRoaXM7IH0KIApA
QCAtOTQsNyArODYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSW50U2l6ZSBtX2NvbnRlbnRTaXplOwog
CiBwcml2YXRlOgotICAgIEZsYWdzIG1fZmxhZ3M7CisgICAgYm9vbCBtX2hhc0FscGhhOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0JpdG1hcFRleHR1cmVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAppbmRleCA5NzVjMzhmMmZmNGIxOTE4MjhkN2QxZWNl
MTZlNGQ2MDliMDkwYmY2Li40ZTg4MWMyOWE0NTczNGIxNWZjYzhkYmM0NWM5NjYwNDAzYzFjMmU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0
bWFwVGV4dHVyZUdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcApAQCAtNjAsNiArNjAsMTggQEAgQml0bWFwVGV4dHVy
ZUdMKiB0b0JpdG1hcFRleHR1cmVHTChCaXRtYXBUZXh0dXJlKiB0ZXh0dXJlKQogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wqPih0ZXh0dXJlKTsKIH0KIAorLy8gSWYgR0xf
RVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4IGlzIHN1cHBvcnRlZCBpbiB0aGUgT3BlbkdMRVMK
Ky8vIGludGVybmFsIGFuZCBleHRlcm5hbCBmb3JtYXRzIG5lZWQgdG8gYmUgQkdSQQorc3RhdGlj
IGJvb2wgZHJpdmVyU3VwcG9ydHNFeHRlcm5hbFRleHR1cmVCR1JBKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0KQoreworICAgIGlmIChjb250ZXh0LT5pc0dMRVMyQ29tcGxpYW50KCkpIHsKKyAg
ICAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNFeHRlcm5hbFRleHR1cmVCR1JBID0gY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4
Iik7CisgICAgICAgIHJldHVybiBzdXBwb3J0c0V4dGVybmFsVGV4dHVyZUJHUkE7CisgICAgfQor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKIEJpdG1hcFRleHR1cmVHTDo6Qml0bWFwVGV4dHVyZUdM
KFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQzRCkKICAgICA6IG1faWQoMCkK
ICAgICAsIG1fZmJvKDApCkBAIC02NywyMCArNzksMjcgQEAgQml0bWFwVGV4dHVyZUdMOjpCaXRt
YXBUZXh0dXJlR0woUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dDNEKQogICAg
ICwgbV9kZXB0aEJ1ZmZlck9iamVjdCgwKQogICAgICwgbV9zaG91bGRDbGVhcih0cnVlKQogICAg
ICwgbV9jb250ZXh0M0QoY29udGV4dDNEKQorI2lmIE9TKERBUldJTikKKyAgICAsIG1fdHlwZShH
TF9VTlNJR05FRF9JTlRfOF84XzhfOF9SRVYpCisjZWxzZQorICAgICwgbV90eXBlKEdyYXBoaWNz
Q29udGV4dDNEOjpVTlNJR05FRF9CWVRFKQorI2VuZGlmCiB7CisgICAgbV9pbnRlcm5hbEZvcm1h
dCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOworICAgIG1fZm9ybWF0ID0gR3JhcGhpY3NDb250
ZXh0M0Q6OkJHUkE7CisgICAgaWYgKG1fY29udGV4dDNELT5pc0dMRVMyQ29tcGxpYW50KCkpIHsK
KyAgICAgICAgaWYgKGRyaXZlclN1cHBvcnRzRXh0ZXJuYWxUZXh0dXJlQkdSQShtX2NvbnRleHQz
RC5nZXQoKSkpCisgICAgICAgICAgICBtX2ludGVybmFsRm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0
M0Q6OkJHUkE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fZm9ybWF0ID0gR3JhcGhpY3ND
b250ZXh0M0Q6OlJHQkE7CisgICAgfQogfQogCi1ib29sIEJpdG1hcFRleHR1cmVHTDo6Y2FuUmV1
c2VXaXRoKGNvbnN0IEludFNpemUmIGNvbnRlbnRzU2l6ZSwgRmxhZ3MpCitib29sIEJpdG1hcFRl
eHR1cmVHTDo6Y2FuUmV1c2VXaXRoKGNvbnN0IEludFNpemUmIGNvbnRlbnRzU2l6ZSwgYm9vbCkK
IHsKICAgICByZXR1cm4gY29udGVudHNTaXplID09IG1fdGV4dHVyZVNpemU7CiB9CiAKLSNpZiBP
UyhEQVJXSU4pCi0jZGVmaW5lIERFRkFVTFRfVEVYVFVSRV9QSVhFTF9UUkFOU0ZFUl9UWVBFIEdM
X1VOU0lHTkVEX0lOVF84XzhfOF84X1JFVgotI2Vsc2UKLSNkZWZpbmUgREVGQVVMVF9URVhUVVJF
X1BJWEVMX1RSQU5TRkVSX1RZUEUgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUKLSNl
bmRpZgotCiBzdGF0aWMgdm9pZCBzd2l6emxlQkdSQVRvUkdCQSh1aW50MzJfdCogZGF0YSwgY29u
c3QgSW50UmVjdCYgcmVjdCwgaW50IHN0cmlkZSA9IDApCiB7CiAgICAgc3RyaWRlID0gc3RyaWRl
ID8gc3RyaWRlIDogcmVjdC53aWR0aCgpOwpAQCAtOTEsMTggKzExMCw2IEBAIHN0YXRpYyB2b2lk
IHN3aXp6bGVCR1JBVG9SR0JBKHVpbnQzMl90KiBkYXRhLCBjb25zdCBJbnRSZWN0JiByZWN0LCBp
bnQgc3RyaWRlID0KICAgICB9CiB9CiAKLS8vIElmIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JB
ODg4OCBpcyBzdXBwb3J0ZWQgaW4gdGhlIE9wZW5HTEVTCi0vLyBpbnRlcm5hbCBhbmQgZXh0ZXJu
YWwgZm9ybWF0cyBuZWVkIHRvIGJlIEJHUkEKLXN0YXRpYyBib29sIGRyaXZlclN1cHBvcnRzRXh0
ZXJuYWxUZXh0dXJlQkdSQShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKLXsKLSAgICBpZiAo
Y29udGV4dC0+aXNHTEVTMkNvbXBsaWFudCgpKSB7Ci0gICAgICAgIHN0YXRpYyBib29sIHN1cHBv
cnRzRXh0ZXJuYWxUZXh0dXJlQkdSQSA9IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9y
dHMoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIpOwotICAgICAgICByZXR1cm4gc3Vw
cG9ydHNFeHRlcm5hbFRleHR1cmVCR1JBOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQot
CiBzdGF0aWMgYm9vbCBkcml2ZXJTdXBwb3J0c1N1YkltYWdlKEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0KQogewogICAgIGlmIChjb250ZXh0LT5pc0dMRVMyQ29tcGxpYW50KCkpIHsKQEAgLTEy
Miw3ICsxMjksNiBAQCB2b2lkIEJpdG1hcFRleHR1cmVHTDo6ZGlkUmVzZXQoKQogICAgIGlmICht
X3RleHR1cmVTaXplID09IGNvbnRlbnRTaXplKCkpCiAgICAgICAgIHJldHVybjsKIAotCiAgICAg
bV90ZXh0dXJlU2l6ZSA9IGNvbnRlbnRTaXplKCk7CiAgICAgbV9jb250ZXh0M0QtPmJpbmRUZXh0
dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX2lkKTsKICAgICBtX2NvbnRleHQz
RC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7
CkBAIC0xMzAsMTYgKzEzNiw3IEBAIHZvaWQgQml0bWFwVGV4dHVyZUdMOjpkaWRSZXNldCgpCiAg
ICAgbV9jb250ZXh0M0QtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfUywgR3JhcGhpY3NDb250ZXh0M0Q6
OkNMQU1QX1RPX0VER0UpOwogICAgIG1fY29udGV4dDNELT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1Qs
IEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKTsKIAotICAgIFBsYXRmb3JtM0RPYmpl
Y3QgaW50ZXJuYWxGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQTsKLSAgICBQbGF0Zm9y
bTNET2JqZWN0IGV4dGVybmFsRm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OkJHUkE7Ci0gICAg
aWYgKG1fY29udGV4dDNELT5pc0dMRVMyQ29tcGxpYW50KCkpIHsKLSAgICAgICAgaWYgKGRyaXZl
clN1cHBvcnRzRXh0ZXJuYWxUZXh0dXJlQkdSQShtX2NvbnRleHQzRC5nZXQoKSkpCi0gICAgICAg
ICAgICBpbnRlcm5hbEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpCR1JBOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBleHRlcm5hbEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JB
OwotICAgIH0KLQotICAgIG1fY29udGV4dDNELT50ZXhJbWFnZTJERGlyZWN0KEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCAwLCBpbnRlcm5hbEZvcm1hdCwgbV90ZXh0dXJlU2l6ZS53aWR0
aCgpLCBtX3RleHR1cmVTaXplLmhlaWdodCgpLCAwLCBleHRlcm5hbEZvcm1hdCwgREVGQVVMVF9U
RVhUVVJFX1BJWEVMX1RSQU5TRkVSX1RZUEUsIDApOworICAgIG1fY29udGV4dDNELT50ZXhJbWFn
ZTJERGlyZWN0KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBtX2ludGVybmFsRm9y
bWF0LCBtX3RleHR1cmVTaXplLndpZHRoKCksIG1fdGV4dHVyZVNpemUuaGVpZ2h0KCksIDAsIG1f
Zm9ybWF0LCBtX3R5cGUsIDApOwogfQogCiB2b2lkIEJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29u
dGVudHNOb1N3aXp6bGUoY29uc3Qgdm9pZCogc3JjRGF0YSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0
UmVjdCwgY29uc3QgSW50UG9pbnQmIHNvdXJjZU9mZnNldCwgaW50IGJ5dGVzUGVyTGluZSwgdW5z
aWduZWQgYnl0ZXNQZXJQaXhlbCwgUGxhdGZvcm0zRE9iamVjdCBnbEZvcm1hdCkKQEAgLTE1Myw3
ICsxNTAsNyBAQCB2b2lkIEJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHNOb1N3aXp6bGUo
Y29uc3Qgdm9pZCogc3JjRGF0YSwgY29uc3QgSW50UmVjdAogICAgICAgICBtX2NvbnRleHQzRC0+
cGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUElYRUxTLCBzb3VyY2VPZmZzZXQueCgpKTsKICAg
ICB9CiAKLSAgICBtX2NvbnRleHQzRC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgMCwgdGFyZ2V0UmVjdC54KCksIHRhcmdldFJlY3QueSgpLCB0YXJnZXRSZWN0
LndpZHRoKCksIHRhcmdldFJlY3QuaGVpZ2h0KCksIGdsRm9ybWF0LCBERUZBVUxUX1RFWFRVUkVf
UElYRUxfVFJBTlNGRVJfVFlQRSwgc3JjRGF0YSk7CisgICAgbV9jb250ZXh0M0QtPnRleFN1Yklt
YWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIHRhcmdldFJlY3QueCgpLCB0
YXJnZXRSZWN0LnkoKSwgdGFyZ2V0UmVjdC53aWR0aCgpLCB0YXJnZXRSZWN0LmhlaWdodCgpLCBn
bEZvcm1hdCwgbV90eXBlLCBzcmNEYXRhKTsKIAogICAgIC8vIEZvciBFUyBkcml2ZXJzIHRoYXQg
ZG9uJ3Qgc3VwcG9ydCBzdWItaW1hZ2VzLgogICAgIGlmIChkcml2ZXJTdXBwb3J0c1N1YkltYWdl
KG1fY29udGV4dDNELmdldCgpKSkgewpAQCAtMTY1LDcgKzE2Miw2IEBAIHZvaWQgQml0bWFwVGV4
dHVyZUdMOjp1cGRhdGVDb250ZW50c05vU3dpenpsZShjb25zdCB2b2lkKiBzcmNEYXRhLCBjb25z
dCBJbnRSZWN0CiAKIHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250ZW50cyhjb25zdCB2
b2lkKiBzcmNEYXRhLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBJbnRQb2ludCYg
c291cmNlT2Zmc2V0LCBpbnQgYnl0ZXNQZXJMaW5lLCBVcGRhdGVDb250ZW50c0ZsYWcgdXBkYXRl
Q29udGVudHNGbGFnKQogewotICAgIFBsYXRmb3JtM0RPYmplY3QgZ2xGb3JtYXQgPSBHcmFwaGlj
c0NvbnRleHQzRDo6UkdCQTsKICAgICBtX2NvbnRleHQzRC0+YmluZFRleHR1cmUoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1faWQpOwogCiAgICAgY29uc3QgdW5zaWduZWQgYnl0ZXNQ
ZXJQaXhlbCA9IDQ7CkBAIC0xOTUsMTIgKzE5MSwxMCBAQCB2b2lkIEJpdG1hcFRleHR1cmVHTDo6
dXBkYXRlQ29udGVudHMoY29uc3Qgdm9pZCogc3JjRGF0YSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0
UgogICAgICAgICBhZGp1c3RlZFNvdXJjZU9mZnNldCA9IEludFBvaW50KDAsIDApOwogICAgIH0K
IAotICAgIGlmIChkcml2ZXJTdXBwb3J0c0V4dGVybmFsVGV4dHVyZUJHUkEobV9jb250ZXh0M0Qu
Z2V0KCkpKQotICAgICAgICBnbEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpCR1JBOwotICAg
IGVsc2UKKyAgICBpZiAoIWRyaXZlclN1cHBvcnRzRXh0ZXJuYWxUZXh0dXJlQkdSQShtX2NvbnRl
eHQzRC5nZXQoKSkpCiAgICAgICAgIHN3aXp6bGVCR1JBVG9SR0JBKHJlaW50ZXJwcmV0X2Nhc3Rf
cHRyPHVpbnQzMl90Kj4oZGF0YSksIEludFJlY3QoYWRqdXN0ZWRTb3VyY2VPZmZzZXQsIHRhcmdl
dFJlY3Quc2l6ZSgpKSwgYnl0ZXNQZXJMaW5lIC8gYnl0ZXNQZXJQaXhlbCk7CiAKLSAgICB1cGRh
dGVDb250ZW50c05vU3dpenpsZShkYXRhLCB0YXJnZXRSZWN0LCBhZGp1c3RlZFNvdXJjZU9mZnNl
dCwgYnl0ZXNQZXJMaW5lLCBieXRlc1BlclBpeGVsLCBnbEZvcm1hdCk7CisgICAgdXBkYXRlQ29u
dGVudHNOb1N3aXp6bGUoZGF0YSwgdGFyZ2V0UmVjdCwgYWRqdXN0ZWRTb3VyY2VPZmZzZXQsIGJ5
dGVzUGVyTGluZSwgYnl0ZXNQZXJQaXhlbCwgbV9mb3JtYXQpOwogfQogCiB2b2lkIEJpdG1hcFRl
eHR1cmVHTDo6dXBkYXRlQ29udGVudHMoSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRSZWN0JiB0YXJn
ZXRSZWN0LCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0LCBVcGRhdGVDb250ZW50c0ZsYWcgdXBkYXRl
Q29udGVudHNGbGFnKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5oCmluZGV4IDdlMGU0MmUzYzU5ZTg2ZWVkOTg4
YmVhMzJlOGZjOGE5NDEzNzc2ZjkuLjY4OTdiMTJiNzZlZjNhOTBjMDdiMGIwMzBkMGY2ZWNiMDEy
ZmMxMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9CaXRtYXBUZXh0dXJlR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxp
ZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBjYW5SZXVzZVdpdGgoY29uc3QgSW50U2l6ZSYg
Y29udGVudHNTaXplLCBGbGFncyA9IDApOworICAgIHZpcnR1YWwgYm9vbCBjYW5SZXVzZVdpdGgo
Y29uc3QgSW50U2l6ZSYgY29udGVudHNTaXplLCBib29sIGhhc0FscGhhID0gdHJ1ZSk7CiAgICAg
dmlydHVhbCB2b2lkIGRpZFJlc2V0KCk7CiAgICAgdm9pZCBiaW5kQXNTdXJmYWNlKEdyYXBoaWNz
Q29udGV4dDNEKik7CiAgICAgdm9pZCBpbml0aWFsaXplU3RlbmNpbCgpOwpAQCAtODYsNiArODYs
MTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZUZib0lmTmVlZGVkKCk7CiAKICAgICBGaWx0
ZXJJbmZvIG1fZmlsdGVySW5mbzsKKworICAgIEdDM0RpbnQgbV9pbnRlcm5hbEZvcm1hdDsKKyAg
ICBHQzNEZW51bSBtX2Zvcm1hdDsKKyAgICBHQzNEZW51bSBtX3R5cGU7CiB9OwogCiBCaXRtYXBU
ZXh0dXJlR0wqIHRvQml0bWFwVGV4dHVyZUdMKEJpdG1hcFRleHR1cmUqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
LmNwcAppbmRleCAwMzNhNjFlNzdkM2YzNDFlMDMzMmJhY2U4ZmNjNjUyZTBjOGY4NTc1Li40NTU1
OGE3YTk5MjNjNjlmMTVmNGQwYzI5YzMxMWU2ZmVlNTM3NWZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3Bw
CkBAIC0zMSwxMCArMzEsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRy
PEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXI6OmFjcXVpcmVUZXh0dXJlRnJvbVBvb2woY29u
c3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgQml0bWFwVGV4dHVyZTo6RmxhZ3MgZmxhZ3MpCitQYXNz
UmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXI6OmFjcXVpcmVUZXh0dXJlRnJvbVBv
b2woY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBoYXNBbHBoYSkKIHsKICAgICBSZWZQdHI8Qml0
bWFwVGV4dHVyZT4gc2VsZWN0ZWRUZXh0dXJlID0gbV90ZXh0dXJlUG9vbC0+YWNxdWlyZVRleHR1
cmUoc2l6ZSk7Ci0gICAgc2VsZWN0ZWRUZXh0dXJlLT5yZXNldChzaXplLCBmbGFncyk7CisgICAg
c2VsZWN0ZWRUZXh0dXJlLT5yZXNldChzaXplLCBoYXNBbHBoYSk7CiAgICAgcmV0dXJuIHNlbGVj
dGVkVGV4dHVyZS5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCmluZGV4IDk3ZTIzZTU3NzA2
NWI1YzIyZWRhMTgzMjcyNDY4ZDc2ZGVmNGUyYWUuLjgzMDViNDU2NGI1ODA0ZTlhYTBkZDIwNTk0
MzdjZTdlZjk5ZjNiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaApAQCAtMTAyLDcgKzEwMiw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgSW50U2l6ZSBtYXhUZXh0dXJlU2l6ZSgpIGNvbnN0ID0gMDsKIAot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBhY3F1aXJlVGV4dHVyZUZyb21Q
b29sKGNvbnN0IEludFNpemUmLCBjb25zdCBCaXRtYXBUZXh0dXJlOjpGbGFncyA9IEJpdG1hcFRl
eHR1cmU6OlN1cHBvcnRzQWxwaGEpOworICAgIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gYWNx
dWlyZVRleHR1cmVGcm9tUG9vbChjb25zdCBJbnRTaXplJiwgYm9vbCBoYXNBbHBoYSA9IHRydWUp
OwogCiAgICAgdm9pZCBzZXRQYXR0ZXJuVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBwKSB7IG1fcGF0dGVyblRyYW5zZm9ybSA9IHA7IH0KICAgICB2b2lkIHNldFdyYXBNb2Rl
KFdyYXBNb2RlIG0pIHsgbV93cmFwTW9kZSA9IG07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuY3Bw
CmluZGV4IGU2ZjNmZTgwZWU2ODIyYmMwYTQ1MDZmNzA3ZjUxOTc4ZTQ2NTZhYTIuLjA5MzVkMDk4
NzQ0Y2Y1MDcxN2I3MWM0YTlkODJiM2U0MzY3MWU5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxl
LmNwcApAQCAtNDQsNyArNDQsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJUaWxlOjp1cGRhdGVDb250
ZW50cyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBJbWFnZSogaW1hZwogICAgIHRhcmdl
dFJlY3QubW92ZSgtbV9yZWN0LngoKSwgLW1fcmVjdC55KCkpOwogICAgIGlmICghbV90ZXh0dXJl
KSB7CiAgICAgICAgIG1fdGV4dHVyZSA9IHRleHR1cmVNYXBwZXItPmNyZWF0ZVRleHR1cmUoKTsK
LSAgICAgICAgbV90ZXh0dXJlLT5yZXNldCh0YXJnZXRSZWN0LnNpemUoKSwgaW1hZ2UtPmN1cnJl
bnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpID8gMCA6IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxw
aGEpOworICAgICAgICBtX3RleHR1cmUtPnJlc2V0KHRhcmdldFJlY3Quc2l6ZSgpLCAhaW1hZ2Ut
PmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpKTsKICAgICB9CiAKICAgICBtX3RleHR1cmUt
PnVwZGF0ZUNvbnRlbnRzKGltYWdlLCB0YXJnZXRSZWN0LCBzb3VyY2VPZmZzZXQsIHVwZGF0ZUNv
bnRlbnRzRmxhZyk7CkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlclRpbGU6OnVw
ZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEdyYXBoaWNzTGF5CiAK
ICAgICBpZiAoIW1fdGV4dHVyZSkgewogICAgICAgICBtX3RleHR1cmUgPSB0ZXh0dXJlTWFwcGVy
LT5jcmVhdGVUZXh0dXJlKCk7Ci0gICAgICAgIG1fdGV4dHVyZS0+cmVzZXQodGFyZ2V0UmVjdC5z
aXplKCksIEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEpOworICAgICAgICBtX3RleHR1cmUt
PnJlc2V0KHRhcmdldFJlY3Quc2l6ZSgpLCB0cnVlKTsKICAgICB9CiAKICAgICBtX3RleHR1cmUt
PnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIHNvdXJjZUxheWVyLCB0YXJnZXRSZWN0LCBz
b3VyY2VPZmZzZXQsIHVwZGF0ZUNvbnRlbnRzRmxhZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwCmluZGV4IDIwODA0NjIzOTNiZGJiOWNiMDE0ODIy
ODM5NGU4YjJmNjVmMGM2ZDcuLjc4NGEwZmVmMjE1ODNkNzM2MjdlN2MwZDFmYzE4YWNiMTI1ODM1
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3Bw
CkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6
OmNyZWF0ZU9yRGVzdHJveVRpbGVzSWZOZWVkZWQoY29uc3QgRmxvYXRTaXoKICAgICAgICAgICAg
IHRpbGUuc2V0UmVjdChyZWN0KTsKIAogICAgICAgICAgICAgaWYgKHRpbGUudGV4dHVyZSgpKQot
ICAgICAgICAgICAgICAgIHRpbGUudGV4dHVyZSgpLT5yZXNldChlbmNsb3NpbmdJbnRSZWN0KHRp
bGUucmVjdCgpKS5zaXplKCksIGhhc0FscGhhID8gQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBo
YSA6IDApOworICAgICAgICAgICAgICAgIHRpbGUudGV4dHVyZSgpLT5yZXNldChlbmNsb3NpbmdJ
bnRSZWN0KHRpbGUucmVjdCgpKS5zaXplKCksIGhhc0FscGhhKTsKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249919</attachid>
            <date>2015-04-01 06:59:20 -0700</date>
            <delta_ts>2015-05-21 00:41:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143298-20150401225834.patch</filename>
            <type>text/plain</type>
            <size>16461</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzI4ZTMxZjRiZGY0Y2Ix
YzYxMjFmYzNkY2RlNzJlZjA4MTI0N2JhMi4uZjJmM2JlZWMzMTk2OTlhODM4ZWNmZmJlMjllYjY3
ODkxN2JlZTlkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE1LTAzLTMxICBHd2Fu
ZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtUZXhNYXBdIENsZWFu
IHVwIEJpdG1hcFRleHR1cmUgYW5kIEJpdG1hcFRleHR1cmVHTC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzI5OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhpcyBpcyBqdXN0
IGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFw
VGV4dHVyZS5oOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZTo6ZmxhZ3MpOiBEZWxl
dGVkLgorICAgICAgICBCaXRtYXBUZXh0dXJlOjpGbGFnIGlzIHVzZWQgZm9yIGNoZWNraW5nIHRo
ZSB0ZXh0dXJlIHN1cHBvcnRzIGFscGhhIG9yCisgICAgICAgIG5vdC4gVGhpcyBwYXRjaCByZXBs
YWNlcyBCaXRtYXBUZXh0dXJlOjpGbGFnIHRvIGEgc2luZ2xlIGJvb2xlYW4gdG8KKyAgICAgICAg
aW1wcm92ZSByZWFkYWJpbGl0eS4KKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmU6OmNh
blJldXNlV2l0aCk6IERlbGV0ZWQuCisgICAgICAgIFJldXNlYWJpbGl0eSBvZiBhIEJpdG1hcFRl
eHR1cmUgaXMgb25seSBkZWNpZGVkIGJ5IGl0cyBzaXplLgorICAgICAgICBXZSBjYW4gdXNlIHNp
emUoKSBpbnN0ZWFkIG9mIHRoaXMgbWV0aG9kLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5oOgorICAgICAgICAoV2ViQ29yZTo6ZHJpdmVyU3Vw
cG9ydHNFeHRlcm5hbFRleHR1cmVCR1JBKTogRGVsZXRlZC4KKyAgICAgICAgV2UgZG8gbm90IGhh
dmUgdG8gY2hlY2sgYSBzdWl0YWJsZSB0ZXh0dXJlIGZvcm1hdCBpbiBldmVyeQorICAgICAgICB1
cGRhdGUvcmVzZXQuIEl0IGlzIGVub3VnaCB0byBzdG9yZSB0aGUgZm9ybWF0cyBpbiBjb25zdHJ1
Y3Rpb24gdGltZQorICAgICAgICBhbmQgcmV1c2UgdGhlbS4KKwogMjAxNS0wMS0wOCAgR3dhbmcg
WW9vbiBId2FuZyAgPHlvb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBbQ29vcmRpbmF0ZWRHcmFw
aGljc10gTm9uLW92ZXJsYXkgc2Nyb2xsYmFyIGlzIG5vdCByZW5kZXJlZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IDQ5OTU1
Mzk0YjI5NWEzMzYxZTUwYmNiYTNmOTNjOTNjMTZmMjlkMDguLmVjMzI3YjZmODAwMDgzZjA5NjE1
MTRmYTk3NDQ3NmI0OWY2Y2I0MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKQEAgLTQyNCw3ICs0MjQsNyBAQCBQYXNzUmVmUHRy
PEJpdG1hcFRleHR1cmU+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnVwZGF0ZVRl
eHR1cmUoVGV4dHVyZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEludFNpemUgc2l6
ZSA9IEludFNpemUoR1NUX1ZJREVPX0lORk9fV0lEVEgoJnZpZGVvSW5mbyksIEdTVF9WSURFT19J
TkZPX0hFSUdIVCgmdmlkZW9JbmZvKSk7Ci0gICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1
cmUgPSB0ZXh0dXJlTWFwcGVyLT5hY3F1aXJlVGV4dHVyZUZyb21Qb29sKHNpemUsIEdTVF9WSURF
T19JTkZPX0hBU19BTFBIQSgmdmlkZW9JbmZvKSA/IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxw
aGEgOiBCaXRtYXBUZXh0dXJlOjpOb0ZsYWcpOworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0
ZXh0dXJlID0gdGV4dHVyZU1hcHBlci0+YWNxdWlyZVRleHR1cmVGcm9tUG9vbChzaXplLCBHU1Rf
VklERU9fSU5GT19IQVNfQUxQSEEoJnZpZGVvSW5mbykpOwogICAgIEdzdEJ1ZmZlciogYnVmZmVy
ID0gZ3N0X3NhbXBsZV9nZXRfYnVmZmVyKG1fc2FtcGxlLmdldCgpKTsKIAogI2lmIEdTVF9DSEVD
S19WRVJTSU9OKDEsIDEsIDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuaAppbmRleCA2NjI1ZjJmZjcwYzM4NDkwMmNj
MjNjNDQ1ZGU5NDk2ZmNkNzNkMmM3Li41YzViMmEzMGE1NjE3OGU5MDNiZWI1NjRlMjE1ODA0MjIx
YTUyZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvQml0bWFwVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9CaXRtYXBUZXh0dXJlLmgKQEAgLTQ3LDIwICs0NywxMyBAQCBjbGFzcyBUZXh0dXJl
TWFwcGVyOwogLy8gQSAyRCB0ZXh0dXJlIHRoYXQgY2FuIGJlIHRoZSB0YXJnZXQgb2Ygc29mdHdh
cmUgb3IgR0wgcmVuZGVyaW5nLgogY2xhc3MgQml0bWFwVGV4dHVyZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEJpdG1hcFRleHR1cmU+IHsKIHB1YmxpYzoKLSAgICBlbnVtIEZsYWcgewotICAgICAgICBO
b0ZsYWcgPSAwLAotICAgICAgICBTdXBwb3J0c0FscGhhID0gMHgwMQotICAgIH07Ci0KICAgICBl
bnVtIFVwZGF0ZUNvbnRlbnRzRmxhZyB7CiAgICAgICAgIFVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFs
SW1hZ2VEYXRhLAogICAgICAgICBVcGRhdGVDYW5ub3RNb2RpZnlPcmlnaW5hbEltYWdlRGF0YQog
ICAgIH07CiAKLSAgICB0eXBlZGVmIHVuc2lnbmVkIEZsYWdzOwotCiAgICAgQml0bWFwVGV4dHVy
ZSgpCi0gICAgICAgIDogbV9mbGFncygwKQorICAgICAgICA6IG1faGFzQWxwaGEoZmFsc2UpCiAg
ICAgewogICAgIH0KIApAQCAtNzIsMTMgKzY1LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBJ
bnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBvZmZzZXQsIFVwZGF0ZUNvbnRlbnRzRmxh
Zyk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqLCBjb25zdCBJ
bnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBvZmZzZXQsIGludCBieXRlc1BlckxpbmUs
IFVwZGF0ZUNvbnRlbnRzRmxhZykgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29u
c3QgPSAwOwotICAgIGlubGluZSBGbGFncyBmbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7
IH0KIAogICAgIHZpcnR1YWwgaW50IGJwcCgpIGNvbnN0IHsgcmV0dXJuIDMyOyB9Ci0gICAgdmly
dHVhbCBib29sIGNhblJldXNlV2l0aChjb25zdCBJbnRTaXplJiAvKiBjb250ZW50c1NpemUgKi8s
IEZsYWdzID0gMCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2b2lkIHJlc2V0KGNvbnN0IEludFNp
emUmIHNpemUsIEZsYWdzIGZsYWdzID0gMCkKKyAgICB2b2lkIHJlc2V0KGNvbnN0IEludFNpemUm
IHNpemUsIGJvb2wgaGFzQWxwaGEgPSBmYWxzZSkKICAgICB7Ci0gICAgICAgIG1fZmxhZ3MgPSBm
bGFnczsKKyAgICAgICAgbV9oYXNBbHBoYSA9IGhhc0FscGhhOwogICAgICAgICBtX2NvbnRlbnRT
aXplID0gc2l6ZTsKICAgICAgICAgZGlkUmVzZXQoKTsKICAgICB9CkBAIC04Niw3ICs3Nyw3IEBA
IHB1YmxpYzoKIAogICAgIGlubGluZSBJbnRTaXplIGNvbnRlbnRTaXplKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZW50U2l6ZTsgfQogICAgIGlubGluZSBpbnQgbnVtYmVyT2ZCeXRlcygpIGNvbnN0
IHsgcmV0dXJuIHNpemUoKS53aWR0aCgpICogc2l6ZSgpLmhlaWdodCgpICogYnBwKCkgPj4gMzsg
fQotICAgIGlubGluZSBib29sIGlzT3BhcXVlKCkgY29uc3QgeyByZXR1cm4gIShtX2ZsYWdzICYg
U3VwcG9ydHNBbHBoYSk7IH0KKyAgICBpbmxpbmUgYm9vbCBpc09wYXF1ZSgpIGNvbnN0IHsgcmV0
dXJuICFtX2hhc0FscGhhOyB9CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVy
ZT4gYXBwbHlGaWx0ZXJzKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJikg
eyByZXR1cm4gdGhpczsgfQogCkBAIC05NCw3ICs4NSw3IEBAIHByb3RlY3RlZDoKICAgICBJbnRT
aXplIG1fY29udGVudFNpemU7CiAKIHByaXZhdGU6Ci0gICAgRmxhZ3MgbV9mbGFnczsKKyAgICBi
b29sIG1faGFzQWxwaGE7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCmluZGV4IDk3NWMz
OGYyZmY0YjE5MTgyOGQ3ZDFlY2UxNmU0ZDYwOWIwOTBiZjYuLjliYjU5ODI2M2Y5MzkyYTI2OTM5
MGRiN2M3MDZlNDBjMmFiN2MyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCkBAIC02NywxOSAr
NjcsMjMgQEAgQml0bWFwVGV4dHVyZUdMOjpCaXRtYXBUZXh0dXJlR0woUGFzc1JlZlB0cjxHcmFw
aGljc0NvbnRleHQzRD4gY29udGV4dDNEKQogICAgICwgbV9kZXB0aEJ1ZmZlck9iamVjdCgwKQog
ICAgICwgbV9zaG91bGRDbGVhcih0cnVlKQogICAgICwgbV9jb250ZXh0M0QoY29udGV4dDNEKQot
ewotfQotCi1ib29sIEJpdG1hcFRleHR1cmVHTDo6Y2FuUmV1c2VXaXRoKGNvbnN0IEludFNpemUm
IGNvbnRlbnRzU2l6ZSwgRmxhZ3MpCi17Ci0gICAgcmV0dXJuIGNvbnRlbnRzU2l6ZSA9PSBtX3Rl
eHR1cmVTaXplOwotfQotCiAjaWYgT1MoREFSV0lOKQotI2RlZmluZSBERUZBVUxUX1RFWFRVUkVf
UElYRUxfVFJBTlNGRVJfVFlQRSBHTF9VTlNJR05FRF9JTlRfOF84XzhfOF9SRVYKKyAgICAsIG1f
dHlwZShHTF9VTlNJR05FRF9JTlRfOF84XzhfOF9SRVYpCiAjZWxzZQotI2RlZmluZSBERUZBVUxU
X1RFWFRVUkVfUElYRUxfVFJBTlNGRVJfVFlQRSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURf
QllURQorICAgICwgbV90eXBlKEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFKQogI2Vu
ZGlmCit7CisgICAgLy8gSWYgR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4IGlzIHN1cHBv
cnRlZCBpbiB0aGUgT3BlbkdMRVMKKyAgICAvLyBpbnRlcm5hbCBhbmQgZXh0ZXJuYWwgZm9ybWF0
cyBuZWVkIHRvIGJlIEJHUkEKKyAgICBtX2ludGVybmFsRm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0
M0Q6OlJHQkE7CisgICAgbV9mb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6QkdSQTsKKyAgICBp
ZiAobV9jb250ZXh0M0QtPmlzR0xFUzJDb21wbGlhbnQoKSkgeworICAgICAgICBpZiAobV9jb250
ZXh0M0QtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9C
R1JBODg4OCIpKQorICAgICAgICAgICAgbV9pbnRlcm5hbEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4
dDNEOjpCR1JBOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Zvcm1hdCA9IEdyYXBoaWNz
Q29udGV4dDNEOjpSR0JBOworICAgIH0KK30KIAogc3RhdGljIHZvaWQgc3dpenpsZUJHUkFUb1JH
QkEodWludDMyX3QqIGRhdGEsIGNvbnN0IEludFJlY3QmIHJlY3QsIGludCBzdHJpZGUgPSAwKQog
ewpAQCAtOTEsMTggKzk1LDYgQEAgc3RhdGljIHZvaWQgc3dpenpsZUJHUkFUb1JHQkEodWludDMy
X3QqIGRhdGEsIGNvbnN0IEludFJlY3QmIHJlY3QsIGludCBzdHJpZGUgPQogICAgIH0KIH0KIAot
Ly8gSWYgR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4IGlzIHN1cHBvcnRlZCBpbiB0aGUg
T3BlbkdMRVMKLS8vIGludGVybmFsIGFuZCBleHRlcm5hbCBmb3JtYXRzIG5lZWQgdG8gYmUgQkdS
QQotc3RhdGljIGJvb2wgZHJpdmVyU3VwcG9ydHNFeHRlcm5hbFRleHR1cmVCR1JBKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0KQotewotICAgIGlmIChjb250ZXh0LT5pc0dMRVMyQ29tcGxpYW50
KCkpIHsKLSAgICAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNFeHRlcm5hbFRleHR1cmVCR1JBID0g
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfZm9ybWF0
X0JHUkE4ODg4Iik7Ci0gICAgICAgIHJldHVybiBzdXBwb3J0c0V4dGVybmFsVGV4dHVyZUJHUkE7
Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHN0YXRpYyBib29sIGRyaXZlclN1cHBv
cnRzU3ViSW1hZ2UoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiB7CiAgICAgaWYgKGNvbnRl
eHQtPmlzR0xFUzJDb21wbGlhbnQoKSkgewpAQCAtMTIyLDcgKzExNCw2IEBAIHZvaWQgQml0bWFw
VGV4dHVyZUdMOjpkaWRSZXNldCgpCiAgICAgaWYgKG1fdGV4dHVyZVNpemUgPT0gY29udGVudFNp
emUoKSkKICAgICAgICAgcmV0dXJuOwogCi0KICAgICBtX3RleHR1cmVTaXplID0gY29udGVudFNp
emUoKTsKICAgICBtX2NvbnRleHQzRC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIG1faWQpOwogICAgIG1fY29udGV4dDNELT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklM
VEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKTsKQEAgLTEzMCwxNiArMTIxLDcgQEAgdm9p
ZCBCaXRtYXBUZXh0dXJlR0w6OmRpZFJlc2V0KCkKICAgICBtX2NvbnRleHQzRC0+dGV4UGFyYW1l
dGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7CiAgICAgbV9j
b250ZXh0M0QtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1Q
X1RPX0VER0UpOwogCi0gICAgUGxhdGZvcm0zRE9iamVjdCBpbnRlcm5hbEZvcm1hdCA9IEdyYXBo
aWNzQ29udGV4dDNEOjpSR0JBOwotICAgIFBsYXRmb3JtM0RPYmplY3QgZXh0ZXJuYWxGb3JtYXQg
PSBHcmFwaGljc0NvbnRleHQzRDo6QkdSQTsKLSAgICBpZiAobV9jb250ZXh0M0QtPmlzR0xFUzJD
b21wbGlhbnQoKSkgewotICAgICAgICBpZiAoZHJpdmVyU3VwcG9ydHNFeHRlcm5hbFRleHR1cmVC
R1JBKG1fY29udGV4dDNELmdldCgpKSkKLSAgICAgICAgICAgIGludGVybmFsRm9ybWF0ID0gR3Jh
cGhpY3NDb250ZXh0M0Q6OkJHUkE7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGV4dGVybmFs
Rm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE7Ci0gICAgfQotCi0gICAgbV9jb250ZXh0
M0QtPnRleEltYWdlMkREaXJlY3QoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIGlu
dGVybmFsRm9ybWF0LCBtX3RleHR1cmVTaXplLndpZHRoKCksIG1fdGV4dHVyZVNpemUuaGVpZ2h0
KCksIDAsIGV4dGVybmFsRm9ybWF0LCBERUZBVUxUX1RFWFRVUkVfUElYRUxfVFJBTlNGRVJfVFlQ
RSwgMCk7CisgICAgbV9jb250ZXh0M0QtPnRleEltYWdlMkREaXJlY3QoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIDAsIG1faW50ZXJuYWxGb3JtYXQsIG1fdGV4dHVyZVNpemUud2lkdGgo
KSwgbV90ZXh0dXJlU2l6ZS5oZWlnaHQoKSwgMCwgbV9mb3JtYXQsIG1fdHlwZSwgMCk7CiB9CiAK
IHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250ZW50c05vU3dpenpsZShjb25zdCB2b2lk
KiBzcmNEYXRhLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBJbnRQb2ludCYgc291
cmNlT2Zmc2V0LCBpbnQgYnl0ZXNQZXJMaW5lLCB1bnNpZ25lZCBieXRlc1BlclBpeGVsLCBQbGF0
Zm9ybTNET2JqZWN0IGdsRm9ybWF0KQpAQCAtMTUzLDcgKzEzNSw3IEBAIHZvaWQgQml0bWFwVGV4
dHVyZUdMOjp1cGRhdGVDb250ZW50c05vU3dpenpsZShjb25zdCB2b2lkKiBzcmNEYXRhLCBjb25z
dCBJbnRSZWN0CiAgICAgICAgIG1fY29udGV4dDNELT5waXhlbFN0b3JlaShHTF9VTlBBQ0tfU0tJ
UF9QSVhFTFMsIHNvdXJjZU9mZnNldC54KCkpOwogICAgIH0KIAotICAgIG1fY29udGV4dDNELT50
ZXhTdWJJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCB0YXJnZXRSZWN0
LngoKSwgdGFyZ2V0UmVjdC55KCksIHRhcmdldFJlY3Qud2lkdGgoKSwgdGFyZ2V0UmVjdC5oZWln
aHQoKSwgZ2xGb3JtYXQsIERFRkFVTFRfVEVYVFVSRV9QSVhFTF9UUkFOU0ZFUl9UWVBFLCBzcmNE
YXRhKTsKKyAgICBtX2NvbnRleHQzRC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgMCwgdGFyZ2V0UmVjdC54KCksIHRhcmdldFJlY3QueSgpLCB0YXJnZXRSZWN0
LndpZHRoKCksIHRhcmdldFJlY3QuaGVpZ2h0KCksIGdsRm9ybWF0LCBtX3R5cGUsIHNyY0RhdGEp
OwogCiAgICAgLy8gRm9yIEVTIGRyaXZlcnMgdGhhdCBkb24ndCBzdXBwb3J0IHN1Yi1pbWFnZXMu
CiAgICAgaWYgKGRyaXZlclN1cHBvcnRzU3ViSW1hZ2UobV9jb250ZXh0M0QuZ2V0KCkpKSB7CkBA
IC0xNjUsNyArMTQ3LDYgQEAgdm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzTm9T
d2l6emxlKGNvbnN0IHZvaWQqIHNyY0RhdGEsIGNvbnN0IEludFJlY3QKIAogdm9pZCBCaXRtYXBU
ZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqIHNyY0RhdGEsIGNvbnN0IEludFJl
Y3QmIHRhcmdldFJlY3QsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQsIGludCBieXRlc1Bl
ckxpbmUsIFVwZGF0ZUNvbnRlbnRzRmxhZyB1cGRhdGVDb250ZW50c0ZsYWcpCiB7Ci0gICAgUGxh
dGZvcm0zRE9iamVjdCBnbEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOwogICAgIG1f
Y29udGV4dDNELT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9p
ZCk7CiAKICAgICBjb25zdCB1bnNpZ25lZCBieXRlc1BlclBpeGVsID0gNDsKQEAgLTE3OCw3ICsx
NTksNyBAQCB2b2lkIEJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMoY29uc3Qgdm9pZCog
c3JjRGF0YSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UgogICAgICAgICAmJiAhKGJ5dGVzUGVyTGlu
ZSA9PSBzdGF0aWNfY2FzdDxpbnQ+KHRhcmdldFJlY3Qud2lkdGgoKSAqIGJ5dGVzUGVyUGl4ZWwp
ICYmIGFkanVzdGVkU291cmNlT2Zmc2V0ID09IEludFBvaW50Ojp6ZXJvKCkpOwogCiAgICAgLy8g
cHJlcGFyZSB0ZW1wb3JhcnlEYXRhIGlmIG5lY2Vzc2FyeQotICAgIGlmICgoIWRyaXZlclN1cHBv
cnRzRXh0ZXJuYWxUZXh0dXJlQkdSQShtX2NvbnRleHQzRC5nZXQoKSkgJiYgdXBkYXRlQ29udGVu
dHNGbGFnID09IFVwZGF0ZUNhbm5vdE1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKSB8fCByZXF1aXJl
U3ViSW1hZ2VCdWZmZXIpIHsKKyAgICBpZiAoKG1fZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNE
OjpSR0JBICYmIHVwZGF0ZUNvbnRlbnRzRmxhZyA9PSBVcGRhdGVDYW5ub3RNb2RpZnlPcmlnaW5h
bEltYWdlRGF0YSkgfHwgcmVxdWlyZVN1YkltYWdlQnVmZmVyKSB7CiAgICAgICAgIHRlbXBvcmFy
eURhdGEucmVzaXplKHRhcmdldFJlY3Qud2lkdGgoKSAqIHRhcmdldFJlY3QuaGVpZ2h0KCkgKiBi
eXRlc1BlclBpeGVsKTsKICAgICAgICAgZGF0YSA9IHRlbXBvcmFyeURhdGEuZGF0YSgpOwogICAg
ICAgICBjb25zdCBjaGFyKiBiaXRzID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHNyY0RhdGEp
OwpAQCAtMTk1LDEyICsxNzYsMTAgQEAgdm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRl
bnRzKGNvbnN0IHZvaWQqIHNyY0RhdGEsIGNvbnN0IEludFJlY3QmIHRhcmdldFIKICAgICAgICAg
YWRqdXN0ZWRTb3VyY2VPZmZzZXQgPSBJbnRQb2ludCgwLCAwKTsKICAgICB9CiAKLSAgICBpZiAo
ZHJpdmVyU3VwcG9ydHNFeHRlcm5hbFRleHR1cmVCR1JBKG1fY29udGV4dDNELmdldCgpKSkKLSAg
ICAgICAgZ2xGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6QkdSQTsKLSAgICBlbHNlCisgICAg
aWYgKG1fZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKQogICAgICAgICBzd2l6emxl
QkdSQVRvUkdCQShyZWludGVycHJldF9jYXN0X3B0cjx1aW50MzJfdCo+KGRhdGEpLCBJbnRSZWN0
KGFkanVzdGVkU291cmNlT2Zmc2V0LCB0YXJnZXRSZWN0LnNpemUoKSksIGJ5dGVzUGVyTGluZSAv
IGJ5dGVzUGVyUGl4ZWwpOwogCi0gICAgdXBkYXRlQ29udGVudHNOb1N3aXp6bGUoZGF0YSwgdGFy
Z2V0UmVjdCwgYWRqdXN0ZWRTb3VyY2VPZmZzZXQsIGJ5dGVzUGVyTGluZSwgYnl0ZXNQZXJQaXhl
bCwgZ2xGb3JtYXQpOworICAgIHVwZGF0ZUNvbnRlbnRzTm9Td2l6emxlKGRhdGEsIHRhcmdldFJl
Y3QsIGFkanVzdGVkU291cmNlT2Zmc2V0LCBieXRlc1BlckxpbmUsIGJ5dGVzUGVyUGl4ZWwsIG1f
Zm9ybWF0KTsKIH0KIAogdm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKEltYWdl
KiBpbWFnZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgSW50UG9pbnQmIG9mZnNl
dCwgVXBkYXRlQ29udGVudHNGbGFnIHVwZGF0ZUNvbnRlbnRzRmxhZykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wu
aAppbmRleCA3ZTBlNDJlM2M1OWU4NmVlZDk4OGJlYTMyZThmYzhhOTQxMzc3NmY5Li5hOTlmZGM5
ZmQzZmNiNjA4ZjM0ZDI3YTU3ZTM1MzRhNTU5ZTA5ZWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5oCkBA
IC0zOSw3ICszOSw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29u
c3Q7CiAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
Y2FuUmV1c2VXaXRoKGNvbnN0IEludFNpemUmIGNvbnRlbnRzU2l6ZSwgRmxhZ3MgPSAwKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVzZXQoKTsKICAgICB2b2lkIGJpbmRBc1N1cmZhY2UoR3JhcGhp
Y3NDb250ZXh0M0QqKTsKICAgICB2b2lkIGluaXRpYWxpemVTdGVuY2lsKCk7CkBAIC04Niw2ICs4
NSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlRmJvSWZOZWVkZWQoKTsKIAogICAgIEZp
bHRlckluZm8gbV9maWx0ZXJJbmZvOworCisgICAgR0MzRGludCBtX2ludGVybmFsRm9ybWF0Owor
ICAgIEdDM0RlbnVtIG1fZm9ybWF0OworICAgIEdDM0RlbnVtIG1fdHlwZTsKIH07CiAKIEJpdG1h
cFRleHR1cmVHTCogdG9CaXRtYXBUZXh0dXJlR0woQml0bWFwVGV4dHVyZSopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVQ
b29sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBU
ZXh0dXJlUG9vbC5jcHAKaW5kZXggYTQ0NDI4MDVmOTI5YmIwYTE1MGZiOTg1ZWI3ZjljOGZlNjJm
N2I4ZC4uMDgxYmUwOTRkODYyYTdiYTcxODZkMTM3NWRhZWNkYTllN2I0MjYzMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVQ
b29sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0
bWFwVGV4dHVyZVBvb2wuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4
dHVyZT4gQml0bWFwVGV4dHVyZVBvb2w6OmFjcXVpcmVUZXh0dXJlKGNvbnN0IEludFNpemUmIHNp
emUpCiAgICAgICAgIGlmIChlbnRyeS5tX3RleHR1cmUtPnJlZkNvdW50KCkgPiAxKQogICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKGVudHJ5Lm1fdGV4dHVyZS0+Y2FuUmV1c2VX
aXRoKHNpemUpKSB7CisgICAgICAgIGlmIChlbnRyeS5tX3RleHR1cmUtPnNpemUoKSA9PSBzaXpl
KSB7CiAgICAgICAgICAgICBzZWxlY3RlZEVudHJ5ID0gJmVudHJ5OwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcAppbmRleCAwMzNhNjFlNzdkM2YzNDFlMDMz
MmJhY2U4ZmNjNjUyZTBjOGY4NTc1Li40NTU1OGE3YTk5MjNjNjlmMTVmNGQwYzI5YzMxMWU2ZmVl
NTM3NWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwCkBAIC0zMSwxMCArMzEsMTAgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXI6
OmFjcXVpcmVUZXh0dXJlRnJvbVBvb2woY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgQml0bWFw
VGV4dHVyZTo6RmxhZ3MgZmxhZ3MpCitQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVN
YXBwZXI6OmFjcXVpcmVUZXh0dXJlRnJvbVBvb2woY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBo
YXNBbHBoYSkKIHsKICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gc2VsZWN0ZWRUZXh0dXJlID0g
bV90ZXh0dXJlUG9vbC0+YWNxdWlyZVRleHR1cmUoc2l6ZSk7Ci0gICAgc2VsZWN0ZWRUZXh0dXJl
LT5yZXNldChzaXplLCBmbGFncyk7CisgICAgc2VsZWN0ZWRUZXh0dXJlLT5yZXNldChzaXplLCBo
YXNBbHBoYSk7CiAgICAgcmV0dXJuIHNlbGVjdGVkVGV4dHVyZS5yZWxlYXNlKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlci5oCmluZGV4IDk3ZTIzZTU3NzA2NWI1YzIyZWRhMTgzMjcyNDY4ZDc2ZGVmNGUyYWUu
LjgzMDViNDU2NGI1ODA0ZTlhYTBkZDIwNTk0MzdjZTdlZjk5ZjNiYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIu
aApAQCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgSW50U2l6ZSBtYXhU
ZXh0dXJlU2l6ZSgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBU
ZXh0dXJlPiBhY3F1aXJlVGV4dHVyZUZyb21Qb29sKGNvbnN0IEludFNpemUmLCBjb25zdCBCaXRt
YXBUZXh0dXJlOjpGbGFncyA9IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEpOworICAgIFBh
c3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gYWNxdWlyZVRleHR1cmVGcm9tUG9vbChjb25zdCBJbnRT
aXplJiwgYm9vbCBoYXNBbHBoYSA9IHRydWUpOwogCiAgICAgdm9pZCBzZXRQYXR0ZXJuVHJhbnNm
b3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwKSB7IG1fcGF0dGVyblRyYW5zZm9ybSA9
IHA7IH0KICAgICB2b2lkIHNldFdyYXBNb2RlKFdyYXBNb2RlIG0pIHsgbV93cmFwTW9kZSA9IG07
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyVGlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuY3BwCmluZGV4IGU2ZjNmZTgwZWU2ODIyYmMwYTQ1MDZm
NzA3ZjUxOTc4ZTQ2NTZhYTIuLjA5MzVkMDk4NzQ0Y2Y1MDcxN2I3MWM0YTlkODJiM2U0MzY3MWU5
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyVGlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmNwcApAQCAtNDQsNyArNDQsNyBAQCB2b2lkIFRl
eHR1cmVNYXBwZXJUaWxlOjp1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFw
cGVyLCBJbWFnZSogaW1hZwogICAgIHRhcmdldFJlY3QubW92ZSgtbV9yZWN0LngoKSwgLW1fcmVj
dC55KCkpOwogICAgIGlmICghbV90ZXh0dXJlKSB7CiAgICAgICAgIG1fdGV4dHVyZSA9IHRleHR1
cmVNYXBwZXItPmNyZWF0ZVRleHR1cmUoKTsKLSAgICAgICAgbV90ZXh0dXJlLT5yZXNldCh0YXJn
ZXRSZWN0LnNpemUoKSwgaW1hZ2UtPmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpID8gMCA6
IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEpOworICAgICAgICBtX3RleHR1cmUtPnJlc2V0
KHRhcmdldFJlY3Quc2l6ZSgpLCAhaW1hZ2UtPmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgp
KTsKICAgICB9CiAKICAgICBtX3RleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKGltYWdlLCB0YXJnZXRS
ZWN0LCBzb3VyY2VPZmZzZXQsIHVwZGF0ZUNvbnRlbnRzRmxhZyk7CkBAIC02Myw3ICs2Myw3IEBA
IHZvaWQgVGV4dHVyZU1hcHBlclRpbGU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqIHRl
eHR1cmVNYXBwZXIsIEdyYXBoaWNzTGF5CiAKICAgICBpZiAoIW1fdGV4dHVyZSkgewogICAgICAg
ICBtX3RleHR1cmUgPSB0ZXh0dXJlTWFwcGVyLT5jcmVhdGVUZXh0dXJlKCk7Ci0gICAgICAgIG1f
dGV4dHVyZS0+cmVzZXQodGFyZ2V0UmVjdC5zaXplKCksIEJpdG1hcFRleHR1cmU6OlN1cHBvcnRz
QWxwaGEpOworICAgICAgICBtX3RleHR1cmUtPnJlc2V0KHRhcmdldFJlY3Quc2l6ZSgpLCB0cnVl
KTsKICAgICB9CiAKICAgICBtX3RleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIs
IHNvdXJjZUxheWVyLCB0YXJnZXRSZWN0LCBzb3VyY2VPZmZzZXQsIHVwZGF0ZUNvbnRlbnRzRmxh
Zyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwCmlu
ZGV4IDIwODA0NjIzOTNiZGJiOWNiMDE0ODIyODM5NGU4YjJmNjVmMGM2ZDcuLjc4NGEwZmVmMjE1
ODNkNzM2MjdlN2MwZDFmYzE4YWNiMTI1ODM1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBUZXh0
dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZU9yRGVzdHJveVRpbGVzSWZOZWVkZWQo
Y29uc3QgRmxvYXRTaXoKICAgICAgICAgICAgIHRpbGUuc2V0UmVjdChyZWN0KTsKIAogICAgICAg
ICAgICAgaWYgKHRpbGUudGV4dHVyZSgpKQotICAgICAgICAgICAgICAgIHRpbGUudGV4dHVyZSgp
LT5yZXNldChlbmNsb3NpbmdJbnRSZWN0KHRpbGUucmVjdCgpKS5zaXplKCksIGhhc0FscGhhID8g
Qml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSA6IDApOworICAgICAgICAgICAgICAgIHRpbGUu
dGV4dHVyZSgpLT5yZXNldChlbmNsb3NpbmdJbnRSZWN0KHRpbGUucmVjdCgpKS5zaXplKCksIGhh
c0FscGhhKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAK
</data>
<flag name="review"
          id="274760"
          type_id="1"
          status="+"
          setter="zan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263995</attachid>
            <date>2015-10-24 18:17:10 -0700</date>
            <delta_ts>2015-10-24 19:24:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143298-20151025101622.patch</filename>
            <type>text/plain</type>
            <size>9868</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmZkODYxZTVhMmFmM2Uw
NDNlMWNiNGVhYjVlMzQ2MzBiYmM5YjNlYy4uOGNmZDIzOTEzMGU0MjViMjY5ZjJmZTBjZTgyZWFi
MzUzMzc1OGQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE1LTEwLTI0ICBHd2Fu
ZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtUZXhNYXBdIENsZWFu
IHVwIEJpdG1hcFRleHR1cmUgYW5kIEJpdG1hcFRleHR1cmVHTC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzI5OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IMW9YW4gRG9iZXLFoWVrLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhpcyBpcyBqdXN0
IGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFw
VGV4dHVyZS5oOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZTo6Y2FuUmV1c2VXaXRo
KTogRGVsZXRlZC4KKyAgICAgICAgUmV1c2VhYmlsaXR5IG9mIGEgQml0bWFwVGV4dHVyZSBpcyBv
bmx5IGRlY2lkZWQgYnkgaXRzIHNpemUuCisgICAgICAgIFdlIGNhbiB1c2Ugc2l6ZSgpIGluc3Rl
YWQgb2YgdGhpcyBtZXRob2QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Qml0bWFwVGV4dHVyZUdMLmg6CisgICAgICAgIChXZWJDb3JlOjpkcml2ZXJTdXBwb3J0c0V4dGVy
bmFsVGV4dHVyZUJHUkEpOiBEZWxldGVkLgorICAgICAgICBXZSBkbyBub3QgaGF2ZSB0byBjaGVj
ayBhIHN1aXRhYmxlIHRleHR1cmUgZm9ybWF0IGluIGV2ZXJ5CisgICAgICAgIHVwZGF0ZS9yZXNl
dC4gSXQgaXMgZW5vdWdoIHRvIHN0b3JlIHRoZSBmb3JtYXRzIGluIGNvbnN0cnVjdGlvbiB0aW1l
CisgICAgICAgIGFuZCByZXVzZSB0aGVtLgorCiAyMDE1LTEwLTIzICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmFkaW9Ob2RlTGlzdCBzaG91bGQgYmUgZXhwb3Nl
ZCBvbiBXaW5kb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9CaXRtYXBUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvQml0bWFwVGV4dHVyZS5oCmluZGV4IDdkNjE3MmUzNTdhN2Y3YTc4YTlkYjBkY2Vi
NzVkZTI2ODFhNWRjM2EuLjNkOGIwYTlkMDg4NGZkY2NkMmY4NGE2ZTA0M2Q2MWEyOWY4YmY0OTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRt
YXBUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0JpdG1hcFRleHR1cmUuaApAQCAtNzUsNyArNzUsNiBAQCBwdWJsaWM6CiAgICAgaW5saW5lIEZs
YWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQogCiAgICAgdmlydHVhbCBpbnQg
YnBwKCkgY29uc3QgeyByZXR1cm4gMzI7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuUmV1c2VXaXRo
KGNvbnN0IEludFNpemUmIC8qIGNvbnRlbnRzU2l6ZSAqLywgRmxhZ3MgPSAwKSB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZvaWQgcmVzZXQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3Mg
PSAwKQogICAgIHsKICAgICAgICAgbV9mbGFncyA9IGZsYWdzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNw
cAppbmRleCA0OTRkNzVlN2NkZDAxMGI1MmZlMzZkZjdjNWJjNDc0NTM1NjZmZDYxLi5mYzM0ZjBi
YjFmMDgxZTk2MTYzMWU4NThkZmQ0NjExNDMyZDI0YjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNw
cApAQCAtNjksMTkgKzY5LDIzIEBAIEJpdG1hcFRleHR1cmVHTDo6Qml0bWFwVGV4dHVyZUdMKFBh
c3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQzRCkKICAgICAsIG1fZGVwdGhCdWZm
ZXJPYmplY3QoMCkKICAgICAsIG1fc2hvdWxkQ2xlYXIodHJ1ZSkKICAgICAsIG1fY29udGV4dDNE
KGNvbnRleHQzRCkKLXsKLX0KLQotYm9vbCBCaXRtYXBUZXh0dXJlR0w6OmNhblJldXNlV2l0aChj
b25zdCBJbnRTaXplJiBjb250ZW50c1NpemUsIEZsYWdzKQotewotICAgIHJldHVybiBjb250ZW50
c1NpemUgPT0gbV90ZXh0dXJlU2l6ZTsKLX0KLQogI2lmIE9TKERBUldJTikKLSNkZWZpbmUgREVG
QVVMVF9URVhUVVJFX1BJWEVMX1RSQU5TRkVSX1RZUEUgR0xfVU5TSUdORURfSU5UXzhfOF84Xzhf
UkVWCisgICAgLCBtX3R5cGUoR0xfVU5TSUdORURfSU5UXzhfOF84XzhfUkVWKQogI2Vsc2UKLSNk
ZWZpbmUgREVGQVVMVF9URVhUVVJFX1BJWEVMX1RSQU5TRkVSX1RZUEUgR3JhcGhpY3NDb250ZXh0
M0Q6OlVOU0lHTkVEX0JZVEUKKyAgICAsIG1fdHlwZShHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdO
RURfQllURSkKICNlbmRpZgoreworICAgIC8vIElmIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JB
ODg4OCBpcyBzdXBwb3J0ZWQgaW4gdGhlIE9wZW5HTEVTCisgICAgLy8gaW50ZXJuYWwgYW5kIGV4
dGVybmFsIGZvcm1hdHMgbmVlZCB0byBiZSBCR1JBCisgICAgbV9pbnRlcm5hbEZvcm1hdCA9IEdy
YXBoaWNzQ29udGV4dDNEOjpSR0JBOworICAgIG1fZm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6
OkJHUkE7CisgICAgaWYgKG1fY29udGV4dDNELT5pc0dMRVMyQ29tcGxpYW50KCkpIHsKKyAgICAg
ICAgaWYgKG1fY29udGV4dDNELT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfdGV4
dHVyZV9mb3JtYXRfQkdSQTg4ODgiKSkKKyAgICAgICAgICAgIG1faW50ZXJuYWxGb3JtYXQgPSBH
cmFwaGljc0NvbnRleHQzRDo6QkdSQTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9mb3Jt
YXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQTsKKyAgICB9Cit9CiAKIHN0YXRpYyB2b2lkIHN3
aXp6bGVCR1JBVG9SR0JBKHVpbnQzMl90KiBkYXRhLCBjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQg
c3RyaWRlID0gMCkKIHsKQEAgLTkzLDE4ICs5Nyw2IEBAIHN0YXRpYyB2b2lkIHN3aXp6bGVCR1JB
VG9SR0JBKHVpbnQzMl90KiBkYXRhLCBjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQgc3RyaWRlID0K
ICAgICB9CiB9CiAKLS8vIElmIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCBpcyBzdXBw
b3J0ZWQgaW4gdGhlIE9wZW5HTEVTCi0vLyBpbnRlcm5hbCBhbmQgZXh0ZXJuYWwgZm9ybWF0cyBu
ZWVkIHRvIGJlIEJHUkEKLXN0YXRpYyBib29sIGRyaXZlclN1cHBvcnRzRXh0ZXJuYWxUZXh0dXJl
QkdSQShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKLXsKLSAgICBpZiAoY29udGV4dC0+aXNH
TEVTMkNvbXBsaWFudCgpKSB7Ci0gICAgICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRXh0ZXJuYWxU
ZXh0dXJlQkdSQSA9IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VYVF90
ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIpOwotICAgICAgICByZXR1cm4gc3VwcG9ydHNFeHRlcm5h
bFRleHR1cmVCR1JBOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCiBzdGF0aWMgYm9v
bCBkcml2ZXJTdXBwb3J0c1N1YkltYWdlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogewog
ICAgIGlmIChjb250ZXh0LT5pc0dMRVMyQ29tcGxpYW50KCkpIHsKQEAgLTEyNCw3ICsxMTYsNiBA
QCB2b2lkIEJpdG1hcFRleHR1cmVHTDo6ZGlkUmVzZXQoKQogICAgIGlmIChtX3RleHR1cmVTaXpl
ID09IGNvbnRlbnRTaXplKCkpCiAgICAgICAgIHJldHVybjsKIAotCiAgICAgbV90ZXh0dXJlU2l6
ZSA9IGNvbnRlbnRTaXplKCk7CiAgICAgbV9jb250ZXh0M0QtPmJpbmRUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCBtX2lkKTsKICAgICBtX2NvbnRleHQzRC0+dGV4UGFyYW1l
dGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7CkBAIC0xMzIsMTYg
KzEyMyw3IEBAIHZvaWQgQml0bWFwVGV4dHVyZUdMOjpkaWRSZXNldCgpCiAgICAgbV9jb250ZXh0
M0QtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFX1dSQVBfUywgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VE
R0UpOwogICAgIG1fY29udGV4dDNELT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29u
dGV4dDNEOjpDTEFNUF9UT19FREdFKTsKIAotICAgIFBsYXRmb3JtM0RPYmplY3QgaW50ZXJuYWxG
b3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQTsKLSAgICBQbGF0Zm9ybTNET2JqZWN0IGV4
dGVybmFsRm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OkJHUkE7Ci0gICAgaWYgKG1fY29udGV4
dDNELT5pc0dMRVMyQ29tcGxpYW50KCkpIHsKLSAgICAgICAgaWYgKGRyaXZlclN1cHBvcnRzRXh0
ZXJuYWxUZXh0dXJlQkdSQShtX2NvbnRleHQzRC5nZXQoKSkpCi0gICAgICAgICAgICBpbnRlcm5h
bEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpCR1JBOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBleHRlcm5hbEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOwotICAgIH0KLQot
ICAgIG1fY29udGV4dDNELT50ZXhJbWFnZTJERGlyZWN0KEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCAwLCBpbnRlcm5hbEZvcm1hdCwgbV90ZXh0dXJlU2l6ZS53aWR0aCgpLCBtX3RleHR1
cmVTaXplLmhlaWdodCgpLCAwLCBleHRlcm5hbEZvcm1hdCwgREVGQVVMVF9URVhUVVJFX1BJWEVM
X1RSQU5TRkVSX1RZUEUsIDApOworICAgIG1fY29udGV4dDNELT50ZXhJbWFnZTJERGlyZWN0KEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBtX2ludGVybmFsRm9ybWF0LCBtX3RleHR1
cmVTaXplLndpZHRoKCksIG1fdGV4dHVyZVNpemUuaGVpZ2h0KCksIDAsIG1fZm9ybWF0LCBtX3R5
cGUsIDApOwogfQogCiB2b2lkIEJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHNOb1N3aXp6
bGUoY29uc3Qgdm9pZCogc3JjRGF0YSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3Qg
SW50UG9pbnQmIHNvdXJjZU9mZnNldCwgaW50IGJ5dGVzUGVyTGluZSwgdW5zaWduZWQgYnl0ZXNQ
ZXJQaXhlbCwgUGxhdGZvcm0zRE9iamVjdCBnbEZvcm1hdCkKQEAgLTE1NSw3ICsxMzcsNyBAQCB2
b2lkIEJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHNOb1N3aXp6bGUoY29uc3Qgdm9pZCog
c3JjRGF0YSwgY29uc3QgSW50UmVjdAogICAgICAgICBtX2NvbnRleHQzRC0+cGl4ZWxTdG9yZWko
R0xfVU5QQUNLX1NLSVBfUElYRUxTLCBzb3VyY2VPZmZzZXQueCgpKTsKICAgICB9CiAKLSAgICBt
X2NvbnRleHQzRC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
MCwgdGFyZ2V0UmVjdC54KCksIHRhcmdldFJlY3QueSgpLCB0YXJnZXRSZWN0LndpZHRoKCksIHRh
cmdldFJlY3QuaGVpZ2h0KCksIGdsRm9ybWF0LCBERUZBVUxUX1RFWFRVUkVfUElYRUxfVFJBTlNG
RVJfVFlQRSwgc3JjRGF0YSk7CisgICAgbV9jb250ZXh0M0QtPnRleFN1YkltYWdlMkQoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIHRhcmdldFJlY3QueCgpLCB0YXJnZXRSZWN0Lnko
KSwgdGFyZ2V0UmVjdC53aWR0aCgpLCB0YXJnZXRSZWN0LmhlaWdodCgpLCBnbEZvcm1hdCwgbV90
eXBlLCBzcmNEYXRhKTsKIAogICAgIC8vIEZvciBFUyBkcml2ZXJzIHRoYXQgZG9uJ3Qgc3VwcG9y
dCBzdWItaW1hZ2VzLgogICAgIGlmIChkcml2ZXJTdXBwb3J0c1N1YkltYWdlKG1fY29udGV4dDNE
LmdldCgpKSkgewpAQCAtMTY3LDcgKzE0OSw2IEBAIHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1cGRh
dGVDb250ZW50c05vU3dpenpsZShjb25zdCB2b2lkKiBzcmNEYXRhLCBjb25zdCBJbnRSZWN0CiAK
IHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1cGRhdGVDb250ZW50cyhjb25zdCB2b2lkKiBzcmNEYXRh
LCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBJbnRQb2ludCYgc291cmNlT2Zmc2V0
LCBpbnQgYnl0ZXNQZXJMaW5lLCBVcGRhdGVDb250ZW50c0ZsYWcgdXBkYXRlQ29udGVudHNGbGFn
KQogewotICAgIFBsYXRmb3JtM0RPYmplY3QgZ2xGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6
UkdCQTsKICAgICBtX2NvbnRleHQzRC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIG1faWQpOwogCiAgICAgY29uc3QgdW5zaWduZWQgYnl0ZXNQZXJQaXhlbCA9IDQ7
CkBAIC0xODAsNyArMTYxLDcgQEAgdm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRz
KGNvbnN0IHZvaWQqIHNyY0RhdGEsIGNvbnN0IEludFJlY3QmIHRhcmdldFIKICAgICAgICAgJiYg
IShieXRlc1BlckxpbmUgPT0gc3RhdGljX2Nhc3Q8aW50Pih0YXJnZXRSZWN0LndpZHRoKCkgKiBi
eXRlc1BlclBpeGVsKSAmJiBhZGp1c3RlZFNvdXJjZU9mZnNldCA9PSBJbnRQb2ludDo6emVybygp
KTsKIAogICAgIC8vIHByZXBhcmUgdGVtcG9yYXJ5RGF0YSBpZiBuZWNlc3NhcnkKLSAgICBpZiAo
KCFkcml2ZXJTdXBwb3J0c0V4dGVybmFsVGV4dHVyZUJHUkEobV9jb250ZXh0M0QuZ2V0KCkpICYm
IHVwZGF0ZUNvbnRlbnRzRmxhZyA9PSBVcGRhdGVDYW5ub3RNb2RpZnlPcmlnaW5hbEltYWdlRGF0
YSkgfHwgcmVxdWlyZVN1YkltYWdlQnVmZmVyKSB7CisgICAgaWYgKChtX2Zvcm1hdCA9PSBHcmFw
aGljc0NvbnRleHQzRDo6UkdCQSAmJiB1cGRhdGVDb250ZW50c0ZsYWcgPT0gVXBkYXRlQ2Fubm90
TW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpIHx8IHJlcXVpcmVTdWJJbWFnZUJ1ZmZlcikgewogICAg
ICAgICB0ZW1wb3JhcnlEYXRhLnJlc2l6ZSh0YXJnZXRSZWN0LndpZHRoKCkgKiB0YXJnZXRSZWN0
LmhlaWdodCgpICogYnl0ZXNQZXJQaXhlbCk7CiAgICAgICAgIGRhdGEgPSB0ZW1wb3JhcnlEYXRh
LmRhdGEoKTsKICAgICAgICAgY29uc3QgY2hhciogYml0cyA9IHN0YXRpY19jYXN0PGNvbnN0IGNo
YXIqPihzcmNEYXRhKTsKQEAgLTE5NywxMiArMTc4LDEwIEBAIHZvaWQgQml0bWFwVGV4dHVyZUdM
Ojp1cGRhdGVDb250ZW50cyhjb25zdCB2b2lkKiBzcmNEYXRhLCBjb25zdCBJbnRSZWN0JiB0YXJn
ZXRSCiAgICAgICAgIGFkanVzdGVkU291cmNlT2Zmc2V0ID0gSW50UG9pbnQoMCwgMCk7CiAgICAg
fQogCi0gICAgaWYgKGRyaXZlclN1cHBvcnRzRXh0ZXJuYWxUZXh0dXJlQkdSQShtX2NvbnRleHQz
RC5nZXQoKSkpCi0gICAgICAgIGdsRm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OkJHUkE7Ci0g
ICAgZWxzZQorICAgIGlmIChtX2Zvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSkKICAg
ICAgICAgc3dpenpsZUJHUkFUb1JHQkEocmVpbnRlcnByZXRfY2FzdF9wdHI8dWludDMyX3QqPihk
YXRhKSwgSW50UmVjdChhZGp1c3RlZFNvdXJjZU9mZnNldCwgdGFyZ2V0UmVjdC5zaXplKCkpLCBi
eXRlc1BlckxpbmUgLyBieXRlc1BlclBpeGVsKTsKIAotICAgIHVwZGF0ZUNvbnRlbnRzTm9Td2l6
emxlKGRhdGEsIHRhcmdldFJlY3QsIGFkanVzdGVkU291cmNlT2Zmc2V0LCBieXRlc1BlckxpbmUs
IGJ5dGVzUGVyUGl4ZWwsIGdsRm9ybWF0KTsKKyAgICB1cGRhdGVDb250ZW50c05vU3dpenpsZShk
YXRhLCB0YXJnZXRSZWN0LCBhZGp1c3RlZFNvdXJjZU9mZnNldCwgYnl0ZXNQZXJMaW5lLCBieXRl
c1BlclBpeGVsLCBtX2Zvcm1hdCk7CiB9CiAKIHZvaWQgQml0bWFwVGV4dHVyZUdMOjp1cGRhdGVD
b250ZW50cyhJbWFnZSogaW1hZ2UsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IElu
dFBvaW50JiBvZmZzZXQsIFVwZGF0ZUNvbnRlbnRzRmxhZyB1cGRhdGVDb250ZW50c0ZsYWcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFw
VGV4dHVyZUdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0
bWFwVGV4dHVyZUdMLmgKaW5kZXggZDUxMzc5YjY1NTU3YTU1ODE2Yjc4NzhhMmVmODZlNTkzZDRm
ZjAyMS4uZWIyMGEwZjIwZWNiNmM0N2Q1ZmUwYjJjNTE1OTk4MmQ4N2JkNjRmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVH
TC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBU
ZXh0dXJlR0wuaApAQCAtNDIsNyArNDIsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEludFNp
emUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGNhblJldXNlV2l0aChjb25zdCBJbnRTaXpl
JiBjb250ZW50c1NpemUsIEZsYWdzID0gMCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlc2V0KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBiaW5kQXNTdXJmYWNlKEdyYXBoaWNzQ29udGV4
dDNEKik7CiAgICAgdm9pZCBpbml0aWFsaXplU3RlbmNpbCgpOwpAQCAtODgsNiArODcsMTAgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZUZib0lmTmVlZGVkKCk7CiAKICAgICBGaWx0ZXJJbmZv
IG1fZmlsdGVySW5mbzsKKworICAgIEdDM0RpbnQgbV9pbnRlcm5hbEZvcm1hdDsKKyAgICBHQzNE
ZW51bSBtX2Zvcm1hdDsKKyAgICBHQzNEZW51bSBtX3R5cGU7CiB9OwogCiBCaXRtYXBUZXh0dXJl
R0wqIHRvQml0bWFwVGV4dHVyZUdMKEJpdG1hcFRleHR1cmUqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlUG9vbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZVBv
b2wuY3BwCmluZGV4IDZkYzUxYThlY2JlZTE4MTUzODExMmQxZThmYjA1YjVmMDAxYjMwZmIuLjA5
YmVmZTQxMWE5ZmEzMzI5MTVjYWRjMzgwNDdiMWU5YmYwZTcyOGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlUG9vbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1
cmVQb29sLmNwcApAQCAtODMsNyArODMsNyBAQCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IEJp
dG1hcFRleHR1cmVQb29sOjphY3F1aXJlVGV4dHVyZShjb25zdCBJbnRTaXplJiBzaXplKQogICAg
ICAgICBpZiAoZW50cnkubV90ZXh0dXJlLT5yZWZDb3VudCgpID4gMSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgIGlmIChlbnRyeS5tX3RleHR1cmUtPmNhblJldXNlV2l0aChzaXpl
KSkgeworICAgICAgICBpZiAoZW50cnkubV90ZXh0dXJlLT5zaXplKCkgPT0gc2l6ZSkgewogICAg
ICAgICAgICAgc2VsZWN0ZWRFbnRyeSA9ICZlbnRyeTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>