<?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>135606</bug_id>
          
          <creation_ts>2014-08-05 06:34:07 -0700</creation_ts>
          <short_desc>[EFL] Prevent the client from creating ewk_view when EWebkit is not initialized</short_desc>
          <delta_ts>2014-09-15 07:08:00 -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>WebKit EFL</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>136822</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Grzegorz Czajkowski">g.czajkowski</reporter>
          <assigned_to name="Grzegorz Czajkowski">g.czajkowski</assigned_to>
          <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jinwoo7.song</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1026839</commentid>
    <comment_count>0</comment_count>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2014-08-05 06:34:07 -0700</bug_when>
    <thetext>Similarly to EFL modules (eina, evas etc.), application using EWebKit has to initialize it using ewk_init(). Do not allow the client to create ewk_view if ewk_init has not been called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026840</commentid>
    <comment_count>1</comment_count>
      <attachid>236028</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2014-08-05 06:38:13 -0700</bug_when>
    <thetext>Created attachment 236028
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027042</commentid>
    <comment_count>2</comment_count>
      <attachid>236028</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-08-05 18:59:11 -0700</bug_when>
    <thetext>Comment on attachment 236028
Patch

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

Thank you for nice fix !

&gt; Source/WebKit2/UIProcess/efl/EwkMain.cpp:3
&gt; +    Copyright (C) 2009-2011 Samsung Electronics

Please update 2011 -&gt; 2014.

&gt; Source/WebKit2/UIProcess/efl/EwkMain.cpp:73
&gt; +        EINA_LOG_CRIT(&quot;could not register log domain &apos;ewebkit2&apos;&quot;);

I hope to use same macro as below. CRITICAL()

&gt; Source/WebKit2/UIProcess/efl/EwkMain.cpp:80
&gt; +        eina_log_domain_unregister(m_ewkLogDomainId);

How about adding a function to process shutdown ? For example,

if (!evas_init()) {
    CRITICAL(&quot;could not init evas.&quot;);
    shutdownEFLLibraries(EVAS_INIT);
}

if (!ecore_init()) {
    CRITICAL(&quot;could not init ecore.&quot;);
    shutdownEFLLibraries(EVAS_INIT);
}

EwkMain::shutdownEFLLibraries(int failed) {
    switch(failed) {
    case ecore_init:
        break;
    case ecore_evas_init:
        break;
    case ecore_imf_init:
        ecore_evas_shutdown();
        ecore_shutdown();
        evas_shutdown();
        break;
    case efreet_init:
        break;
    }

    eina_log_domain_unregister(m_ewkLogDomainId);
    m_ewkLogDomainId = -1;
    eina_shutdown();
    return 0;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027093</commentid>
    <comment_count>3</comment_count>
      <attachid>236028</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-08-05 22:39:55 -0700</bug_when>
    <thetext>Comment on attachment 236028
Patch

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

IMHO, EwkMain in ewk_main_private.h looks fine (without WK).

&gt; Source/WebKit2/UIProcess/API/C/efl/WKMain.cpp:33
&gt; +int WKMainInitialize()

Why WKxxx ?

It looks not quite related to WK APIs to me.

&gt; Source/WebKit2/UIProcess/efl/EwkMain.cpp:34
&gt; +#include &lt;glib-object.h&gt;
&gt; +#include &lt;glib.h&gt;

Should we still include this?

&gt; Source/WebKit2/UIProcess/efl/EwkMain.cpp:64
&gt; +    if (isInitialized())
&gt; +        return ++m_ewkInitCount;

Nit,
Just for me,
if (m_ewkInitCount) looks readable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027136</commentid>
    <comment_count>4</comment_count>
      <attachid>236094</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2014-08-06 05:40:18 -0700</bug_when>
    <thetext>Created attachment 236094
Apply Gyuyoung and Ryuan comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027137</commentid>
    <comment_count>5</comment_count>
      <attachid>236028</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2014-08-06 05:53:09 -0700</bug_when>
    <thetext>Comment on attachment 236028
Patch

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

Thank you guys for the review!

&gt;&gt; Source/WebKit2/UIProcess/API/C/efl/WKMain.cpp:33
&gt;&gt; +int WKMainInitialize()
&gt; 
&gt; Why WKxxx ?
&gt; 
&gt; It looks not quite related to WK APIs to me.

Yeahh, that was overkill a bit. What I wanted to achieve was to use WK C API (WKMainIsInitialized) in ewk_view.cpp. It seems that the style in ewk is completely mixed.

&gt;&gt; Source/WebKit2/UIProcess/efl/EwkMain.cpp:3
&gt;&gt; +    Copyright (C) 2009-2011 Samsung Electronics
&gt; 
&gt; Please update 2011 -&gt; 2014.

Done.

&gt;&gt; Source/WebKit2/UIProcess/efl/EwkMain.cpp:34
&gt;&gt; +#include &lt;glib.h&gt;
&gt; 
&gt; Should we still include this?

Good catch! Indeed they are not needed any longer.

&gt;&gt; Source/WebKit2/UIProcess/efl/EwkMain.cpp:64
&gt;&gt; +        return ++m_ewkInitCount;
&gt; 
&gt; Nit,
&gt; Just for me,
&gt; if (m_ewkInitCount) looks readable.

Restored.

&gt;&gt; Source/WebKit2/UIProcess/efl/EwkMain.cpp:73
&gt;&gt; +        EINA_LOG_CRIT(&quot;could not register log domain &apos;ewebkit2&apos;&quot;);
&gt; 
&gt; I hope to use same macro as below. CRITICAL()

Unfortunately we ca not use CRITICAL() macro here as the registration of new log domain (which CRITICAL uses) has failed. Similarly to !eina_init() - fixed in patch #2.

&gt;&gt; Source/WebKit2/UIProcess/efl/EwkMain.cpp:80
&gt;&gt; +        eina_log_domain_unregister(m_ewkLogDomainId);
&gt; 
&gt; How about adding a function to process shutdown ? For example,
&gt; 
&gt; if (!evas_init()) {
&gt;     CRITICAL(&quot;could not init evas.&quot;);
&gt;     shutdownEFLLibraries(EVAS_INIT);
&gt; }
&gt; 
&gt; if (!ecore_init()) {
&gt;     CRITICAL(&quot;could not init ecore.&quot;);
&gt;     shutdownEFLLibraries(EVAS_INIT);
&gt; }
&gt; 
&gt; EwkMain::shutdownEFLLibraries(int failed) {
&gt;     switch(failed) {
&gt;     case ecore_init:
&gt;         break;
&gt;     case ecore_evas_init:
&gt;         break;
&gt;     case ecore_imf_init:
&gt;         ecore_evas_shutdown();
&gt;         ecore_shutdown();
&gt;         evas_shutdown();
&gt;         break;
&gt;     case efreet_init:
&gt;         break;
&gt;     }
&gt; 
&gt;     eina_log_domain_unregister(m_ewkLogDomainId);
&gt;     m_ewkLogDomainId = -1;
&gt;     eina_shutdown();
&gt;     return 0;
&gt; }

That&apos;s is cool! Added. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027839</commentid>
    <comment_count>6</comment_count>
      <attachid>236094</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-08-08 05:19:04 -0700</bug_when>
    <thetext>Comment on attachment 236094
Apply Gyuyoung and Ryuan comments

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_main_private.h:31
&gt; +typedef unsigned EFLLibraryInitFailure;

How about using enum class or exposing enum ?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_main_private.h:48
&gt; +    int m_ewkInitCount;
&gt; +    int m_ewkLogDomainId;

ewk looks meaningless.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_private.h:29
&gt; +#include &quot;ewk_main_private.h&quot;

Hmm. should we keep ewk_private.h?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028041</commentid>
    <comment_count>7</comment_count>
      <attachid>236094</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-08-08 20:04:42 -0700</bug_when>
    <thetext>Comment on attachment 236094
Apply Gyuyoung and Ryuan comments

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_main.cpp:189
&gt; +int ewk_init(void)

IIRC, we decided that void parameter is only used for webkit-efl&apos;s public header.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_main.cpp:194
&gt; +int ewk_shutdown(void)

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028105</commentid>
    <comment_count>8</comment_count>
      <attachid>236094</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2014-08-10 11:40:42 -0700</bug_when>
    <thetext>Comment on attachment 236094
Apply Gyuyoung and Ryuan comments

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

Thanks for the review. I will take it into consideration in patch #3.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_private.h:29
&gt;&gt; +#include &quot;ewk_main_private.h&quot;
&gt; 
&gt; Hmm. should we keep ewk_private.h?

It seems that ewk_private.h is responsible for defining debug macros. How about renaming it to EwkDebug,h and moving out of API/ directory?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028117</commentid>
    <comment_count>9</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-08-10 16:33:22 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 236094 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=236094&amp;action=review
&gt; 
&gt; Thanks for the review. I will take it into consideration in patch #3.
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_private.h:29
&gt; &gt;&gt; +#include &quot;ewk_main_private.h&quot;
&gt; &gt; 
&gt; &gt; Hmm. should we keep ewk_private.h?
&gt; 
&gt; It seems that ewk_private.h is responsible for defining debug macros. How about renaming it to EwkDebug,h and moving out of API/ directory?

+1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028170</commentid>
    <comment_count>10</comment_count>
      <attachid>236364</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2014-08-11 05:18:48 -0700</bug_when>
    <thetext>Created attachment 236364
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028172</commentid>
    <comment_count>11</comment_count>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2014-08-11 05:26:32 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (From update of attachment 236094 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=236094&amp;action=review
&gt; &gt; 
&gt; &gt; Thanks for the review. I will take it into consideration in patch #3.
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_private.h:29
&gt; &gt; &gt;&gt; +#include &quot;ewk_main_private.h&quot;
&gt; &gt; &gt; 
&gt; &gt; &gt; Hmm. should we keep ewk_private.h?
&gt; &gt; 
&gt; &gt; It seems that ewk_private.h is responsible for defining debug macros. How about renaming it to EwkDebug,h and moving out of API/ directory?
&gt; 
&gt; +1

I&apos;ll do it separately at bug 135797.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028410</commentid>
    <comment_count>12</comment_count>
      <attachid>236364</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-08-11 21:09:54 -0700</bug_when>
    <thetext>Comment on attachment 236364
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028445</commentid>
    <comment_count>13</comment_count>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2014-08-12 00:44:04 -0700</bug_when>
    <thetext>Committed r172430: &lt;http://trac.webkit.org/changeset/172430&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236028</attachid>
            <date>2014-08-05 06:38:13 -0700</date>
            <delta_ts>2014-08-06 05:53:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Prevent-creating-ewk_view-without-ewk_init.patch</filename>
            <type>text/plain</type>
            <size>20189</size>
            <attacher name="Grzegorz Czajkowski">g.czajkowski</attacher>
            
              <data encoding="base64">RnJvbSBmOGFmYTk4MjNiNGYyNTgzNTRiM2RmZjQxZjYzMzdhNDQxN2U3YzU2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHcnplZ29yeiBDemFqa293c2tpIDxnLmN6YWprb3dza2lAc2Ft
c3VuZy5jb20+CkRhdGU6IFR1ZSwgNSBBdWcgMjAxNCAxNDowNToyNCArMDIwMApTdWJqZWN0OiBb
UEFUQ0hdIFByZXZlbnQgY3JlYXRpbmcgZXdrX3ZpZXcgd2l0aG91dCBld2tfaW5pdCgpCgotLS0K
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQ1ICsr
KysrKwogU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgICAgICAgICAgICAgICB8ICAg
IDIgKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS01haW4uY3BwICB8ICAg
NDYgKysrKysrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLTWFpbi5oICAg
IHwgICA0OCArKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWlu
LmNwcCAgfCAgMTIwICstLS0tLS0tLS0tLS0tLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ByaXZhdGUuaCB8ICAgMTIgKy0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmNwcCAgfCAgICA4ICstCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL0V3a01haW4uY3BwICAgICAgIHwgIDE4OCArKysrKysrKysrKysrKysrKysrKysrKysKIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRXdrTWFpbi5oICAgICAgICAgfCAgIDQ5ICsrKysr
KwogOSBmaWxlcyBjaGFuZ2VkLCAzOTQgaW5zZXJ0aW9ucygrKSwgMTI0IGRlbGV0aW9ucygtKQog
Y3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tN
YWluLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9lZmwvV0tNYWluLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL0V3a01haW4uY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9Fd2tNYWluLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTY0ZDg4Yy4uYTc0YzFlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE0LTA4LTA1ICBHcnplZ29yeiBDemFqa293c2tp
ICA8Zy5jemFqa293c2tpQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtXSzJdW0VGTF0gUHJldmVu
dCB0aGUgY2xpZW50IGZyb20gY3JlYXRpbmcgZXdrX3ZpZXcgd2hlbiBFV2Via2l0IGlzIG5vdCBp
bml0aWFsaXplZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTM1NjA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgU2ltaWxhcmx5IHRvIEVGTCBtb2R1bGVzIChlaW5hLCBldmFzIGV0Yy4pLCBhcHBsaWNhdGlv
biB1c2luZyBFV2ViS2l0CisgICAgICAgIGhhcyB0byBpbml0aWFsaXplIGl0IHVzaW5nIGV3a19p
bml0KCkuCisKKyAgICAgICAgRG8gbm90IGFsbG93IHRoZSBjbGllbnQgdG8gY3JlYXRlIGV3a192
aWV3IGlmIGV3a19pbml0IGhhcyBub3QgYmVlbiBjYWxsZWQuCisgICAgICAgIEFkZCBhbiBhcHBy
b3ByaWF0ZSBsb2dzIHdhcm5pbmcgdGhlIGNsaWVudCBhYm91dCB3cm9uZyBBUElzIHVzYWdlLgor
CisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgIEFkZCBXS01haW4uY3BwIGFu
ZCBFd2tNYWluLmNwcCB0byB0aGUgY29tcGlsYXRpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvZWZsL1dLTWFpbi5jcHA6IEFkZGVkLiBSZXByZXNlbnRzIFdLIEMgQVBJLgorICAgICAg
ICAoV0tNYWluSW5pdGlhbGl6ZSk6CisgICAgICAgIChXS01haW5TaHV0ZG93bik6CisgICAgICAg
IChXS01haW5Jc0luaXRpYWxpemVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dL
TWFpbi5oOiBBZGRlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmNw
cDogU3RhcnRlZCB1c2luZyBXSyBDIEFQSS4KKyAgICAgICAgKGV3a19pbml0KToKKyAgICAgICAg
KGV3a19zaHV0ZG93bik6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcHJpdmF0
ZS5oOgorICAgICAgICBHZXQgcmlkIG9mIGFuIGV4dGVybmFsIF9ld2tfbG9nX2RvbSB2YXJpYWJs
ZS4KKyAgICAgICAgTm93IGl0J3MgYSBtZW1iZXIgb2YgRXdrTWFpbiBjbGFzcy4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKEVXS1ZpZXdDcmVh
dGUpOgorICAgICAgICBQcmV2ZW50IHRoZSBjbGllbnQgZnJvbSBjcmVhdGluZyBld2tfdmlldyB3
aGVuIGV3a19pbml0KCkgaGFzIG5vdCBiZWVuIGNhbGxlZC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9lZmwvRXdrTWFpbi5jcHA6IEFkZGVkLiBSZXdyaXRlIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19t
YWluLmNwcCAoNzAlKS4KKyAgICAgICAgKEV3a01haW46OkV3a01haW4pOgorICAgICAgICAoRXdr
TWFpbjo6c2hhcmVkKToKKyAgICAgICAgKEV3a01haW46On5Fd2tNYWluKToKKyAgICAgICAgTG9n
cyB3aGVuIHRoZSBjbGllbnQgZm9yZ290IHRvIGRlc3Ryb3kgRVdlYmtpdC4KKyAgICAgICAgKEV3
a01haW46OmluaXRpYWxpemUpOgorICAgICAgICAoRXdrTWFpbjo6aXNJbml0aWFsaXplZCk6Cisg
ICAgICAgIChFd2tNYWluOjpsb2dEb21haW5JZCk6CisgICAgICAgIChFd2tNYWluOjpmaW5hbGl6
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9Fd2tNYWluLmg6IEFkZGVkLgorCiAyMDE0LTA3
LTMxICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZM
XVtXSzJdIE1pbmlCcm93ZXIgY29tZXMgdG8gY3Jhc2ggd2hlbiBjb21ibyBib3ggaXMgcHJlc3Nl
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBmZGQ3NjA0Li4zOTU3MjU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNjIsNiArNjIsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQy
X1NPVVJDRVMKIAogICAgIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tDb2xvclBpY2tlclJlc3VsdExp
c3RlbmVyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tFdmVudEVmbC5jcHAKKyAgICBV
SVByb2Nlc3MvQVBJL0MvZWZsL1dLTWFpbi5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvZWZsL1dL
UGFnZUVmbC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLUG9wdXBJdGVtLmNwcAogICAg
IFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQb3B1cE1lbnVMaXN0ZW5lci5jcHAKQEAgLTEzNyw2ICsx
MzgsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvZWZsL0Nv
bnRleHRNZW51Q2xpZW50RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvRG93bmxvYWRNYW5hZ2Vy
RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvRWFzaW5nQ3VydmVzLmNwcAorICAgIFVJUHJvY2Vz
cy9lZmwvRXdrTWFpbi5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0V3a1RvdWNoRXZlbnQuY3BwCiAg
ICAgVUlQcm9jZXNzL2VmbC9Fd2tUb3VjaFBvaW50LmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvRmlu
ZENsaWVudEVmbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9lZmwvV0tNYWluLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tN
YWluLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjk0NDQwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS01haW4u
Y3BwCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBF
bGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV0tNYWluLmgiCisKKyNpbmNsdWRlICJFd2tNYWluLmgiCisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CisKK2ludCBXS01haW5Jbml0aWFsaXplKCkKK3sKKyAgICByZXR1cm4gRXdr
TWFpbjo6c2hhcmVkKCkuaW5pdGlhbGl6ZSgpOworfQorCitpbnQgV0tNYWluU2h1dGRvd24oKQor
eworICAgIHJldHVybiBFd2tNYWluOjpzaGFyZWQoKS5maW5hbGl6ZSgpOworfQorCitib29sIFdL
TWFpbklzSW5pdGlhbGl6ZWQoKQoreworICAgIHJldHVybiBFd2tNYWluOjpzaGFyZWQoKS5pc0lu
aXRpYWxpemVkKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvZWZsL1dLTWFpbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS01h
aW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzQ0YTQ0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS01haW4uaApA
QCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ry
b25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcK
KyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS01haW5faAorI2RlZmluZSBX
S01haW5faAorCisjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorCisjaWZuZGVmIF9fY3BsdXNw
bHVzCisjaW5jbHVkZSA8c3RkYm9vbC5oPgorI2VuZGlmCisKKyNpZmRlZiBfX2NwbHVzcGx1cwor
ZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIGludCBXS01haW5Jbml0aWFsaXplKCk7
CitXS19FWFBPUlQgaW50IFdLTWFpblNodXRkb3duKCk7CisKK1dLX0VYUE9SVCBib29sIFdLTWFp
bklzSW5pdGlhbGl6ZWQoKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2Vu
ZGlmIC8qIFdLTWFpbl9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfbWFpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfbWFpbi5jcHAKaW5kZXggZjE0OTUwZS4uNThjNzQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX21haW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmNwcApAQCAtMjIsMTI4ICsyMiwxNCBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgImV3a19tYWluLmgiCiAKLSNpbmNsdWRlICJld2tf
cHJpdmF0ZS5oIgotI2luY2x1ZGUgPEVjb3JlLmg+Ci0jaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgot
I2luY2x1ZGUgPEVjb3JlX0lNRi5oPgotI2luY2x1ZGUgPEVkamUuaD4KLSNpbmNsdWRlIDxFZnJl
ZXQuaD4KLSNpbmNsdWRlIDxFaW5hLmg+Ci0jaW5jbHVkZSA8RXZhcy5oPgotI2luY2x1ZGUgPGds
aWItb2JqZWN0Lmg+Ci0jaW5jbHVkZSA8Z2xpYi5oPgotCi0jaWZkZWYgSEFWRV9FQ09SRV9YCi0j
aW5jbHVkZSA8RWNvcmVfWC5oPgotI2VuZGlmCi0KLXN0YXRpYyBpbnQgX2V3a0luaXRDb3VudCA9
IDA7Ci0KLS8qKgotICogXHZhciAgICAgX2V3a19sb2dfZG9tCi0gKiBAYnJpZWYgICB0aGUgbG9n
IGRvbWFpbiBpZGVudGlmaWVyIHRoYXQgaXMgdXNlZCB3aXRoIEVJTkEncyBtYWNyb3MKLSAqLwot
aW50IF9ld2tfbG9nX2RvbSA9IC0xOworI2luY2x1ZGUgIldLTWFpbi5oIgogCiBpbnQgZXdrX2lu
aXQodm9pZCkKIHsKLSAgICBpZiAoX2V3a0luaXRDb3VudCkKLSAgICAgICAgcmV0dXJuICsrX2V3
a0luaXRDb3VudDsKLQotICAgIGlmICghZWluYV9pbml0KCkpCi0gICAgICAgIGdvdG8gZXJyb3Jf
ZWluYTsKLQotICAgIF9ld2tfbG9nX2RvbSA9IGVpbmFfbG9nX2RvbWFpbl9yZWdpc3RlcigiZXdl
YmtpdDIiLCBFSU5BX0NPTE9SX09SQU5HRSk7Ci0gICAgaWYgKF9ld2tfbG9nX2RvbSA8IDApIHsK
LSAgICAgICAgRUlOQV9MT0dfQ1JJVCgiY291bGQgbm90IHJlZ2lzdGVyIGxvZyBkb21haW4gJ2V3
ZWJraXQyJyIpOwotICAgICAgICBnb3RvIGVycm9yX2xvZ19kb21haW47Ci0gICAgfQotCi0gICAg
aWYgKCFldmFzX2luaXQoKSkgewotICAgICAgICBDUklUSUNBTCgiY291bGQgbm90IGluaXQgZXZh
cy4iKTsKLSAgICAgICAgZ290byBlcnJvcl9ldmFzOwotICAgIH0KLQotICAgIGlmICghZWNvcmVf
aW5pdCgpKSB7Ci0gICAgICAgIENSSVRJQ0FMKCJjb3VsZCBub3QgaW5pdCBlY29yZS4iKTsKLSAg
ICAgICAgZ290byBlcnJvcl9lY29yZTsKLSAgICB9Ci0KLSAgICBpZiAoIWVjb3JlX2V2YXNfaW5p
dCgpKSB7Ci0gICAgICAgIENSSVRJQ0FMKCJjb3VsZCBub3QgaW5pdCBlY29yZV9ldmFzLiIpOwot
ICAgICAgICBnb3RvIGVycm9yX2Vjb3JlX2V2YXM7Ci0gICAgfQotCi0gICAgaWYgKCFlY29yZV9p
bWZfaW5pdCgpKSB7Ci0gICAgICAgIENSSVRJQ0FMKCJjb3VsZCBub3QgaW5pdCBlY29yZV9pbWYu
Iik7Ci0gICAgICAgIGdvdG8gZXJyb3JfZWNvcmVfaW1mOwotICAgIH0KLQotICAgIGlmICghZWZy
ZWV0X2luaXQoKSkgewotICAgICAgICBDUklUSUNBTCgiY291bGQgbm90IGluaXQgZWZyZWV0LiIp
OwotICAgICAgICBnb3RvIGVycm9yX2VmcmVldDsKLSAgICB9Ci0KLSNpZmRlZiBIQVZFX0VDT1JF
X1gKLSAgICBpZiAoIWVjb3JlX3hfaW5pdCgwKSkgewotICAgICAgICBDUklUSUNBTCgiY291bGQg
bm90IGluaXQgZWNvcmVfeC4iKTsKLSAgICAgICAgZ290byBlcnJvcl9lY29yZV94OwotICAgIH0K
LSNlbmRpZgotCi0gICAgaWYgKCFlZGplX2luaXQoKSkgewotICAgICAgICBDUklUSUNBTCgiQ291
bGQgbm90IGluaXQgZWRqZS4iKTsKLSAgICAgICAgZ290byBlcnJvcl9lZGplOwotICAgIH0KLQot
ICAgIGlmICghZWNvcmVfbWFpbl9sb29wX2dsaWJfaW50ZWdyYXRlKCkpIHsKLSAgICAgICAgV0FS
TigiRWNvcmUgd2FzIG5vdCBjb21waWxlZCB3aXRoIEdMaWIgc3VwcG9ydCwgc29tZSBwbHVnaW5z
IHdpbGwgbm90ICIKLSAgICAgICAgICAgICJ3b3JrIChpZTogQWRvYmUgRmxhc2gpIik7Ci0gICAg
fQotCi0gICAgcmV0dXJuICsrX2V3a0luaXRDb3VudDsKLQotZXJyb3JfZWRqZToKLSNpZmRlZiBI
QVZFX0VDT1JFX1gKLSAgICBlY29yZV94X3NodXRkb3duKCk7Ci1lcnJvcl9lY29yZV94OgotI2Vs
c2UKLSAgICBlZnJlZXRfc2h1dGRvd24oKTsKLSNlbmRpZgotZXJyb3JfZWZyZWV0OgotICAgIGVj
b3JlX2ltZl9zaHV0ZG93bigpOwotZXJyb3JfZWNvcmVfaW1mOgotICAgIGVjb3JlX2V2YXNfc2h1
dGRvd24oKTsKLWVycm9yX2Vjb3JlX2V2YXM6Ci0gICAgZWNvcmVfc2h1dGRvd24oKTsKLWVycm9y
X2Vjb3JlOgotICAgIGV2YXNfc2h1dGRvd24oKTsKLWVycm9yX2V2YXM6Ci0gICAgZWluYV9sb2df
ZG9tYWluX3VucmVnaXN0ZXIoX2V3a19sb2dfZG9tKTsKLSAgICBfZXdrX2xvZ19kb20gPSAtMTsK
LWVycm9yX2xvZ19kb21haW46Ci0gICAgZWluYV9zaHV0ZG93bigpOwotZXJyb3JfZWluYToKLSAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gV0tNYWluSW5pdGlhbGl6ZSgpOwogfQogCiBpbnQgZXdr
X3NodXRkb3duKHZvaWQpCiB7Ci0gICAgaWYgKC0tX2V3a0luaXRDb3VudCkKLSAgICAgICAgcmV0
dXJuIF9ld2tJbml0Q291bnQ7Ci0KLSAgICBlZGplX3NodXRkb3duKCk7Ci0jaWZkZWYgSEFWRV9F
Q09SRV9YCi0gICAgZWNvcmVfeF9zaHV0ZG93bigpOwotI2VuZGlmCi0gICAgZWZyZWV0X3NodXRk
b3duKCk7Ci0gICAgZWNvcmVfaW1mX3NodXRkb3duKCk7Ci0gICAgZWNvcmVfZXZhc19zaHV0ZG93
bigpOwotICAgIGVjb3JlX3NodXRkb3duKCk7Ci0gICAgZXZhc19zaHV0ZG93bigpOwotICAgIGVp
bmFfbG9nX2RvbWFpbl91bnJlZ2lzdGVyKF9ld2tfbG9nX2RvbSk7Ci0gICAgX2V3a19sb2dfZG9t
ID0gLTE7Ci0gICAgZWluYV9zaHV0ZG93bigpOwotCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJu
IFdLTWFpblNodXRkb3duKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ByaXZhdGUuaAppbmRleCBmZDM5NGFhLi4zYmRhYzU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wcml2YXRlLmgKQEAgLTI2LDEyICsyNiwxMiBA
QAogI2lmbmRlZiBld2tfcHJpdmF0ZV9oCiAjZGVmaW5lIGV3a19wcml2YXRlX2gKIAotZXh0ZXJu
IGludCBfZXdrX2xvZ19kb207CisjaW5jbHVkZSAiRXdrTWFpbi5oIgogCi0jZGVmaW5lIENSSVRJ
Q0FMKC4uLikgRUlOQV9MT0dfRE9NX0NSSVQoX2V3a19sb2dfZG9tLCBfX1ZBX0FSR1NfXykKLSNk
ZWZpbmUgRVJSKC4uLikgRUlOQV9MT0dfRE9NX0VSUihfZXdrX2xvZ19kb20sIF9fVkFfQVJHU19f
KQotI2RlZmluZSBXQVJOKC4uLikgRUlOQV9MT0dfRE9NX1dBUk4oX2V3a19sb2dfZG9tLCBfX1ZB
X0FSR1NfXykKLSNkZWZpbmUgSU5GTyguLi4pIEVJTkFfTE9HX0RPTV9JTkZPKF9ld2tfbG9nX2Rv
bSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIERCRyguLi4pIEVJTkFfTE9HX0RPTV9EQkcoX2V3a19s
b2dfZG9tLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgQ1JJVElDQUwoLi4uKSBFSU5BX0xPR19ET01f
Q1JJVChFd2tNYWluOjpzaGFyZWQoKS5sb2dEb21haW5JZCgpLCBfX1ZBX0FSR1NfXykKKyNkZWZp
bmUgRVJSKC4uLikgRUlOQV9MT0dfRE9NX0VSUihFd2tNYWluOjpzaGFyZWQoKS5sb2dEb21haW5J
ZCgpLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgV0FSTiguLi4pIEVJTkFfTE9HX0RPTV9XQVJOKEV3
a01haW46OnNoYXJlZCgpLmxvZ0RvbWFpbklkKCksIF9fVkFfQVJHU19fKQorI2RlZmluZSBJTkZP
KC4uLikgRUlOQV9MT0dfRE9NX0lORk8oRXdrTWFpbjo6c2hhcmVkKCkubG9nRG9tYWluSWQoKSwg
X19WQV9BUkdTX18pCisjZGVmaW5lIERCRyguLi4pIEVJTkFfTE9HX0RPTV9EQkcoRXdrTWFpbjo6
c2hhcmVkKCkubG9nRG9tYWluSWQoKSwgX19WQV9BUkdTX18pCiAKICNlbmRpZiAvLyBld2tfcHJp
dmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAK
aW5kZXggNjNhZDA2Mi4uZDE1MzVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPFdlYktpdC9X
S0VpbmFTaGFyZWRTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tGaW5kT3B0aW9ucy5oPgog
I2luY2x1ZGUgPFdlYktpdC9XS0luc3BlY3Rvci5oPgorI2luY2x1ZGUgPFdlYktpdC9XS01haW4u
aD4KICNpbmNsdWRlIDxXZWJLaXQvV0tQYWdlR3JvdXAuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tS
ZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4K
QEAgLTc5LDExICs4MCwxNiBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc21hcnRfY2xhc3Nfc2V0KEV3
a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkpCiAKIEV2YXNfT2JqZWN0KiBFV0tWaWV3Q3JlYXRlKFdL
Q29udGV4dFJlZiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXAsIEV2YXMqIGNhbnZh
cywgRXZhc19TbWFydCogc21hcnQpCiB7CisgICAgaWYgKCFXS01haW5Jc0luaXRpYWxpemVkKCkp
IHsKKyAgICAgICAgRUlOQV9MT0dfQ1JJVCgiRVdlYktpdCBoYXMgbm90IGJlZW4gaW5pdGlhbGl6
ZWQuIFlvdSBtdXN0IGNhbGwgZXdrX2luaXQoKSBiZWZvcmUgY3JlYXRpbmcgdmlldy4iKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCiAgICAgV0tSZXRhaW5QdHI8V0tWaWV3UmVm
PiB3a1ZpZXcgPSBhZG9wdFdLKFdLVmlld0NyZWF0ZShjb250ZXh0LCBwYWdlR3JvdXApKTsKICAg
ICBpZiAoRXdrVmlldyogZXdrVmlldyA9IEV3a1ZpZXc6OmNyZWF0ZSh3a1ZpZXcuZ2V0KCksIGNh
bnZhcywgc21hcnQpKQogICAgICAgICByZXR1cm4gZXdrVmlldy0+ZXZhc09iamVjdCgpOwogCi0g
ICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFdLVmlld1JlZiBFV0tWaWV3
R2V0V0tWaWV3KEV2YXNfT2JqZWN0KiBld2tWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9Fd2tNYWluLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvRXdrTWFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGUxNzdj
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRXdrTWFp
bi5jcHAKQEAgLTAsMCArMSwxODggQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAg
UHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMSBT
YW1zdW5nIEVsZWN0cm9uaWNzCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0
aW9uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkV3a01haW4uaCIKKworI2lu
Y2x1ZGUgImV3a19wcml2YXRlLmgiCisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNsdWRlIDxFY29y
ZV9FdmFzLmg+CisjaW5jbHVkZSA8RWNvcmVfSU1GLmg+CisjaW5jbHVkZSA8RWRqZS5oPgorI2lu
Y2x1ZGUgPEVmcmVldC5oPgorI2luY2x1ZGUgPEVpbmEuaD4KKyNpbmNsdWRlIDxFdmFzLmg+Cisj
aW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CisKKyNpZmRlZiBIQVZFX0VDT1JFX1gKKyNpbmNsdWRlIDxFY29y
ZV9YLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0V3a01haW46OkV3a01haW4o
KQorICAgIDogbV9ld2tJbml0Q291bnQoMCkKKyAgICAsIG1fZXdrTG9nRG9tYWluSWQoLTEpCit7
Cit9CisKK0V3a01haW4mIEV3a01haW46OnNoYXJlZCgpCit7CisgICAgc3RhdGljIEV3a01haW4g
aW5zdGFuY2U7CisgICAgcmV0dXJuIGluc3RhbmNlOworfQorCitFd2tNYWluOjp+RXdrTWFpbigp
Cit7CisgICAgaWYgKG1fZXdrSW5pdENvdW50ID4gMCkKKyAgICAgICAgV0FSTigiRVdlYmtpdCBo
YXMgbm90IGJlZW4gZGVzdHJveWVkLiBZb3Ugc2hvdWxkIGNhbGwgZXdrX3NodXRkb3duKCkuIik7
Cit9CisKK2ludCBFd2tNYWluOjppbml0aWFsaXplKCkKK3sKKyAgICBpZiAoaXNJbml0aWFsaXpl
ZCgpKQorICAgICAgICByZXR1cm4gKyttX2V3a0luaXRDb3VudDsKKworICAgIGlmICghZWluYV9p
bml0KCkpIHsKKyAgICAgICAgQ1JJVElDQUwoImNvdWxkIG5vdCBpbml0IGV2YXMuIik7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKworICAgIG1fZXdrTG9nRG9tYWluSWQgPSBlaW5hX2xvZ19k
b21haW5fcmVnaXN0ZXIoImV3ZWJraXQyIiwgRUlOQV9DT0xPUl9PUkFOR0UpOworICAgIGlmICht
X2V3a0xvZ0RvbWFpbklkIDwgMCkgeworICAgICAgICBFSU5BX0xPR19DUklUKCJjb3VsZCBub3Qg
cmVnaXN0ZXIgbG9nIGRvbWFpbiAnZXdlYmtpdDInIik7CisgICAgICAgIGVpbmFfc2h1dGRvd24o
KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKCFldmFzX2luaXQoKSkgewor
ICAgICAgICBDUklUSUNBTCgiY291bGQgbm90IGluaXQgZXZhcy4iKTsKKyAgICAgICAgZWluYV9s
b2dfZG9tYWluX3VucmVnaXN0ZXIobV9ld2tMb2dEb21haW5JZCk7CisgICAgICAgIG1fZXdrTG9n
RG9tYWluSWQgPSAtMTsKKyAgICAgICAgZWluYV9zaHV0ZG93bigpOworICAgICAgICByZXR1cm4g
MDsKKyAgICB9CisKKyAgICBpZiAoIWVjb3JlX2luaXQoKSkgeworICAgICAgICBDUklUSUNBTCgi
Y291bGQgbm90IGluaXQgZWNvcmUuIik7CisgICAgICAgIGV2YXNfc2h1dGRvd24oKTsKKyAgICAg
ICAgZWluYV9sb2dfZG9tYWluX3VucmVnaXN0ZXIobV9ld2tMb2dEb21haW5JZCk7CisgICAgICAg
IG1fZXdrTG9nRG9tYWluSWQgPSAtMTsKKyAgICAgICAgZWluYV9zaHV0ZG93bigpOworICAgICAg
ICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoIWVjb3JlX2V2YXNfaW5pdCgpKSB7CisgICAg
ICAgIENSSVRJQ0FMKCJjb3VsZCBub3QgaW5pdCBlY29yZV9ldmFzLiIpOworICAgICAgICBlY29y
ZV9zaHV0ZG93bigpOworICAgICAgICBldmFzX3NodXRkb3duKCk7CisgICAgICAgIGVpbmFfbG9n
X2RvbWFpbl91bnJlZ2lzdGVyKG1fZXdrTG9nRG9tYWluSWQpOworICAgICAgICBtX2V3a0xvZ0Rv
bWFpbklkID0gLTE7CisgICAgICAgIGVpbmFfc2h1dGRvd24oKTsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorCisgICAgaWYgKCFlY29yZV9pbWZfaW5pdCgpKSB7CisgICAgICAgIENSSVRJQ0FM
KCJjb3VsZCBub3QgaW5pdCBlY29yZV9pbWYuIik7CisgICAgICAgIGVjb3JlX2V2YXNfc2h1dGRv
d24oKTsKKyAgICAgICAgZWNvcmVfc2h1dGRvd24oKTsKKyAgICAgICAgZXZhc19zaHV0ZG93bigp
OworICAgICAgICBlaW5hX2xvZ19kb21haW5fdW5yZWdpc3RlcihtX2V3a0xvZ0RvbWFpbklkKTsK
KyAgICAgICAgbV9ld2tMb2dEb21haW5JZCA9IC0xOworICAgICAgICBlaW5hX3NodXRkb3duKCk7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmICghZWZyZWV0X2luaXQoKSkgewor
ICAgICAgICBDUklUSUNBTCgiY291bGQgbm90IGluaXQgZWZyZWV0LiIpOworICAgICAgICBlY29y
ZV9pbWZfc2h1dGRvd24oKTsKKyAgICAgICAgZWNvcmVfZXZhc19zaHV0ZG93bigpOworICAgICAg
ICBlY29yZV9zaHV0ZG93bigpOworICAgICAgICBldmFzX3NodXRkb3duKCk7CisgICAgICAgIGVp
bmFfbG9nX2RvbWFpbl91bnJlZ2lzdGVyKG1fZXdrTG9nRG9tYWluSWQpOworICAgICAgICBtX2V3
a0xvZ0RvbWFpbklkID0gLTE7CisgICAgICAgIGVpbmFfc2h1dGRvd24oKTsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorCisjaWZkZWYgSEFWRV9FQ09SRV9YCisgICAgaWYgKCFlY29yZV94X2lu
aXQoMCkpIHsKKyAgICAgICAgQ1JJVElDQUwoImNvdWxkIG5vdCBpbml0IGVjb3JlX3guIik7Cisg
ICAgICAgIGVmcmVldF9zaHV0ZG93bigpOworICAgICAgICBlY29yZV9pbWZfc2h1dGRvd24oKTsK
KyAgICAgICAgZWNvcmVfZXZhc19zaHV0ZG93bigpOworICAgICAgICBlY29yZV9zaHV0ZG93bigp
OworICAgICAgICBldmFzX3NodXRkb3duKCk7CisgICAgICAgIGVpbmFfbG9nX2RvbWFpbl91bnJl
Z2lzdGVyKG1fZXdrTG9nRG9tYWluSWQpOworICAgICAgICBtX2V3a0xvZ0RvbWFpbklkID0gLTE7
CisgICAgICAgIGVpbmFfc2h1dGRvd24oKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorI2Vu
ZGlmCisKKyAgICBpZiAoIWVkamVfaW5pdCgpKSB7CisgICAgICAgIENSSVRJQ0FMKCJDb3VsZCBu
b3QgaW5pdCBlZGplLiIpOworI2lmZGVmIEhBVkVfRUNPUkVfWAorICAgICAgICBlY29yZV94X3No
dXRkb3duKCk7CisjZW5kaWYKKyAgICAgICAgZWZyZWV0X3NodXRkb3duKCk7CisgICAgICAgIGVj
b3JlX2ltZl9zaHV0ZG93bigpOworICAgICAgICBlY29yZV9ldmFzX3NodXRkb3duKCk7CisgICAg
ICAgIGVjb3JlX3NodXRkb3duKCk7CisgICAgICAgIGV2YXNfc2h1dGRvd24oKTsKKyAgICAgICAg
ZWluYV9sb2dfZG9tYWluX3VucmVnaXN0ZXIobV9ld2tMb2dEb21haW5JZCk7CisgICAgICAgIG1f
ZXdrTG9nRG9tYWluSWQgPSAtMTsKKyAgICAgICAgZWluYV9zaHV0ZG93bigpOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoIWVjb3JlX21haW5fbG9vcF9nbGliX2ludGVncmF0
ZSgpKSB7CisgICAgICAgIFdBUk4oIkVjb3JlIHdhcyBub3QgY29tcGlsZWQgd2l0aCBHTGliIHN1
cHBvcnQsIHNvbWUgcGx1Z2lucyB3aWxsIG5vdCAiCisgICAgICAgICAgICAid29yayAoaWU6IEFk
b2JlIEZsYXNoKSIpOworICAgIH0KKworICAgIHJldHVybiArK21fZXdrSW5pdENvdW50OworfQor
CitpbnQgRXdrTWFpbjo6ZmluYWxpemUoKQoreworICAgIGlmICgtLW1fZXdrSW5pdENvdW50KQor
ICAgICAgICByZXR1cm4gbV9ld2tJbml0Q291bnQ7CisKKyAgICBlZGplX3NodXRkb3duKCk7Cisj
aWZkZWYgSEFWRV9FQ09SRV9YCisgICAgZWNvcmVfeF9zaHV0ZG93bigpOworI2VuZGlmCisgICAg
ZWZyZWV0X3NodXRkb3duKCk7CisgICAgZWNvcmVfaW1mX3NodXRkb3duKCk7CisgICAgZWNvcmVf
ZXZhc19zaHV0ZG93bigpOworICAgIGVjb3JlX3NodXRkb3duKCk7CisgICAgZXZhc19zaHV0ZG93
bigpOworICAgIGVpbmFfbG9nX2RvbWFpbl91bnJlZ2lzdGVyKG1fZXdrTG9nRG9tYWluSWQpOwor
ICAgIG1fZXdrTG9nRG9tYWluSWQgPSAtMTsKKyAgICBlaW5hX3NodXRkb3duKCk7CisKKyAgICBy
ZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0V3a01haW4uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvRXdrTWFpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjNGQw
OTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0V3a01h
aW4uaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcg
RWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBFd2tNYWluX2gKKyNk
ZWZpbmUgRXdrTWFpbl9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBFd2tNYWluIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgRXdrTWFpbiYgc2hhcmVkKCk7CisgICAgfkV3a01haW4oKTsK
KyAgICBpbnQgaW5pdGlhbGl6ZSgpOworICAgIGludCBmaW5hbGl6ZSgpOworICAgIGJvb2wgaXNJ
bml0aWFsaXplZCgpIHsgcmV0dXJuIG1fZXdrSW5pdENvdW50OyB9CisgICAgaW50IGxvZ0RvbWFp
bklkKCkgeyByZXR1cm4gbV9ld2tMb2dEb21haW5JZDsgfQorCitwcml2YXRlOgorICAgIEV3a01h
aW4oKTsKKworICAgIGludCBtX2V3a0luaXRDb3VudDsKKyAgICBpbnQgbV9ld2tMb2dEb21haW5J
ZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRXdrTWFpbl9oCi0t
IAoxLjcuOS41Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236094</attachid>
            <date>2014-08-06 05:40:18 -0700</date>
            <delta_ts>2014-08-11 05:18:38 -0700</delta_ts>
            <desc>Apply Gyuyoung and Ryuan comments</desc>
            <filename>bug-135606-20140806144005.patch</filename>
            <type>text/plain</type>
            <size>12445</size>
            <attacher name="Grzegorz Czajkowski">g.czajkowski</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyMTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYWVmOGY4MTE0YTBmYTkw
ODM3MTJjYTY3NmE3MTNkY2YzYTFmMmU0Yy4uNjUxOGIwMGQ1YzllNTE3ZDEyODA5NWMwZWQ2NDgx
Mjk1NjliMTE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE0LTA4LTA1ICBHcnpl
Z29yeiBDemFqa293c2tpICA8Zy5jemFqa293c2tpQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtX
SzJdW0VGTF0gUHJldmVudCB0aGUgY2xpZW50IGZyb20gY3JlYXRpbmcgZXdrX3ZpZXcgd2hlbiBF
V2Via2l0IGlzIG5vdCBpbml0aWFsaXplZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM1NjA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgU2ltaWxhcmx5IHRvIEVGTCBtb2R1bGVzIChlaW5hLCBldmFzIGV0
Yy4pLCBhcHBsaWNhdGlvbiB1c2luZyBFV2ViS2l0CisgICAgICAgIGhhcyB0byBpbml0aWFsaXpl
IGl0IHVzaW5nIGV3a19pbml0KCkuCisKKyAgICAgICAgRG8gbm90IGFsbG93IHRoZSBjbGllbnQg
dG8gY3JlYXRlIGV3a192aWV3IGlmIGV3a19pbml0IGhhcyBub3QgYmVlbiBjYWxsZWQuCisgICAg
ICAgIEFkZCBhbiBhcHByb3ByaWF0ZSBsb2dzIHdhcm5pbmcgdGhlIGNsaWVudCBhYm91dCB3cm9u
ZyBBUElzIHVzYWdlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX21haW4uY3Bw
OiBBZGQgRXdrTWFpbiBjbGFzcyB0byBjb250cm9sIGV3ayBsaWZldGltZS4KKyAgICAgICAgKFdl
YktpdDo6RXdrTWFpbjo6RXdrTWFpbik6CisgICAgICAgIChXZWJLaXQ6OkV3a01haW46OnNoYXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6OkV3a01haW46On5Fd2tNYWluKToKKyAgICAgICAgTG9ncyB3
aGVuIHRoZSBjbGllbnQgZm9yZ290IHRvIGRlc3Ryb3kgRVdlYmtpdC4KKworICAgICAgICAoV2Vi
S2l0OjpFd2tNYWluOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6RXdrTWFpbjo6Zmlu
YWxpemUpOgorICAgICAgICAoV2ViS2l0OjpFd2tNYWluOjpzaHV0ZG93bkluaXRpYWxpemVkRUZM
TGlicmFyaWVzKToKKyAgICAgICAgKGV3a19pbml0KToKKyAgICAgICAgKGV3a19zaHV0ZG93bik6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX21haW5fcHJpdmF0ZS5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6RXdrTWFpbjo6aXNJbml0aWFsaXplZCk6CisgICAgICAgIChXZWJL
aXQ6OkV3a01haW46OmxvZ0RvbWFpbklkKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19wcml2YXRlLmg6CisgICAgICAgIEdldCByaWQgb2YgYW4gZXh0ZXJuYWwgX2V3a19sb2df
ZG9tIHZhcmlhYmxlLgorICAgICAgICBOb3cgaXQncyBhIG1lbWJlciBvZiBFd2tNYWluIGNsYXNz
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAo
RVdLVmlld0NyZWF0ZSk6CisgICAgICAgIFByZXZlbnQgdGhlIGNsaWVudCBmcm9tIGNyZWF0aW5n
IGV3a192aWV3IHdoZW4gZXdrX2luaXQoKSBoYXMgbm90IGJlZW4gY2FsbGVkLgorCiAyMDE0LTA4
LTA1ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJF
R1JFU1NJT04gKHIxNjQzMzcpOiBQYWdlcyBhcmUgc29tZXRpbWVzIGN1dCBvZmYvb3JpZW50ZWQg
aW5jb3JyZWN0bHkgYWZ0ZXIgdXNpbmcgV0tUaHVtYm5haWxWaWV3CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbWFpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbWFpbi5jcHAKaW5kZXggZjE0OTUwZTBkM2QwN2JjNWJi
OGRlMWU2OTY0NWU5ZTg5ZTQyMDQ4NS4uOTliNmU5NGI0NThjNzQ3NmFlNWE1ZTIwN2QxMjIwZmU3
N2MxZTIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X21haW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWlu
LmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJv
RlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMSBTYW1z
dW5nIEVsZWN0cm9uaWNzCisgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTQgU2Ftc3VuZyBFbGVj
dHJvbmljcwogICAgIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgogCiAgICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgImV3
a19tYWluLmgiCiAKKyNpbmNsdWRlICJld2tfbWFpbl9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdr
X3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFY29yZS5oPgogI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4K
QEAgLTMwLDcwICszMSwxMDEgQEAKICNpbmNsdWRlIDxFZnJlZXQuaD4KICNpbmNsdWRlIDxFaW5h
Lmg+CiAjaW5jbHVkZSA8RXZhcy5oPgotI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Ci0jaW5jbHVk
ZSA8Z2xpYi5oPgogCiAjaWZkZWYgSEFWRV9FQ09SRV9YCiAjaW5jbHVkZSA8RWNvcmVfWC5oPgog
I2VuZGlmCiAKLXN0YXRpYyBpbnQgX2V3a0luaXRDb3VudCA9IDA7CituYW1lc3BhY2UgV2ViS2l0
IHsKKworZW51bSB7CisgICAgRWluYUxvZ0luaXRGYWlsZWQsCisgICAgRXZhc0luaXRGYWlsZWQs
CisgICAgRWNvcmVJbml0RmFpbGVkLAorICAgIEVjb3JlRXZhc0luaXRGYWlsZWQsCisgICAgRWNv
cmVJbWZJbml0RmFpbGVkLAorICAgIEVmcmVldEluaXRGYWlsZWQsCisgICAgRWNvcmVYSW5pdEZh
aWxlZCwKKyAgICBFZGplSW5pdEZhaWxlZAorfTsKKworRXdrTWFpbjo6RXdrTWFpbigpCisgICAg
OiBtX2V3a0luaXRDb3VudCgwKQorICAgICwgbV9ld2tMb2dEb21haW5JZCgtMSkKK3sKK30KIAot
LyoqCi0gKiBcdmFyICAgICBfZXdrX2xvZ19kb20KLSAqIEBicmllZiAgIHRoZSBsb2cgZG9tYWlu
IGlkZW50aWZpZXIgdGhhdCBpcyB1c2VkIHdpdGggRUlOQSdzIG1hY3JvcwotICovCi1pbnQgX2V3
a19sb2dfZG9tID0gLTE7CitFd2tNYWluJiBFd2tNYWluOjpzaGFyZWQoKQoreworICAgIHN0YXRp
YyBFd2tNYWluIGluc3RhbmNlOworICAgIHJldHVybiBpbnN0YW5jZTsKK30KIAotaW50IGV3a19p
bml0KHZvaWQpCitFd2tNYWluOjp+RXdrTWFpbigpCiB7Ci0gICAgaWYgKF9ld2tJbml0Q291bnQp
Ci0gICAgICAgIHJldHVybiArK19ld2tJbml0Q291bnQ7CisgICAgaWYgKG1fZXdrSW5pdENvdW50
ID4gMCkKKyAgICAgICAgV0FSTigiRVdlYmtpdCBoYXMgbm90IGJlZW4gZGVzdHJveWVkLiBZb3Ug
c2hvdWxkIGNhbGwgZXdrX3NodXRkb3duKCkuIik7Cit9CiAKLSAgICBpZiAoIWVpbmFfaW5pdCgp
KQotICAgICAgICBnb3RvIGVycm9yX2VpbmE7CitpbnQgRXdrTWFpbjo6aW5pdGlhbGl6ZSgpCit7
CisgICAgaWYgKG1fZXdrSW5pdENvdW50KQorICAgICAgICByZXR1cm4gKyttX2V3a0luaXRDb3Vu
dDsKIAotICAgIF9ld2tfbG9nX2RvbSA9IGVpbmFfbG9nX2RvbWFpbl9yZWdpc3RlcigiZXdlYmtp
dDIiLCBFSU5BX0NPTE9SX09SQU5HRSk7Ci0gICAgaWYgKF9ld2tfbG9nX2RvbSA8IDApIHsKKyAg
ICBpZiAoIWVpbmFfaW5pdCgpKSB7CisgICAgICAgIEVJTkFfTE9HX0NSSVQoImNvdWxkIG5vdCBp
bml0IGVpbmEuIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG1fZXdrTG9nRG9t
YWluSWQgPSBlaW5hX2xvZ19kb21haW5fcmVnaXN0ZXIoImV3ZWJraXQyIiwgRUlOQV9DT0xPUl9P
UkFOR0UpOworICAgIGlmIChtX2V3a0xvZ0RvbWFpbklkIDwgMCkgewogICAgICAgICBFSU5BX0xP
R19DUklUKCJjb3VsZCBub3QgcmVnaXN0ZXIgbG9nIGRvbWFpbiAnZXdlYmtpdDInIik7Ci0gICAg
ICAgIGdvdG8gZXJyb3JfbG9nX2RvbWFpbjsKKyAgICAgICAgc2h1dGRvd25Jbml0aWFsaXplZEVG
TExpYnJhcmllcyhFaW5hTG9nSW5pdEZhaWxlZCk7CisgICAgICAgIHJldHVybiAwOwogICAgIH0K
IAogICAgIGlmICghZXZhc19pbml0KCkpIHsKICAgICAgICAgQ1JJVElDQUwoImNvdWxkIG5vdCBp
bml0IGV2YXMuIik7Ci0gICAgICAgIGdvdG8gZXJyb3JfZXZhczsKKyAgICAgICAgc2h1dGRvd25J
bml0aWFsaXplZEVGTExpYnJhcmllcyhFdmFzSW5pdEZhaWxlZCk7CisgICAgICAgIHJldHVybiAw
OwogICAgIH0KIAogICAgIGlmICghZWNvcmVfaW5pdCgpKSB7CiAgICAgICAgIENSSVRJQ0FMKCJj
b3VsZCBub3QgaW5pdCBlY29yZS4iKTsKLSAgICAgICAgZ290byBlcnJvcl9lY29yZTsKKyAgICAg
ICAgc2h1dGRvd25Jbml0aWFsaXplZEVGTExpYnJhcmllcyhFY29yZUluaXRGYWlsZWQpOworICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICBpZiAoIWVjb3JlX2V2YXNfaW5pdCgpKSB7CiAg
ICAgICAgIENSSVRJQ0FMKCJjb3VsZCBub3QgaW5pdCBlY29yZV9ldmFzLiIpOwotICAgICAgICBn
b3RvIGVycm9yX2Vjb3JlX2V2YXM7CisgICAgICAgIHNodXRkb3duSW5pdGlhbGl6ZWRFRkxMaWJy
YXJpZXMoRWNvcmVFdmFzSW5pdEZhaWxlZCk7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KIAog
ICAgIGlmICghZWNvcmVfaW1mX2luaXQoKSkgewogICAgICAgICBDUklUSUNBTCgiY291bGQgbm90
IGluaXQgZWNvcmVfaW1mLiIpOwotICAgICAgICBnb3RvIGVycm9yX2Vjb3JlX2ltZjsKKyAgICAg
ICAgc2h1dGRvd25Jbml0aWFsaXplZEVGTExpYnJhcmllcyhFY29yZUltZkluaXRGYWlsZWQpOwor
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICBpZiAoIWVmcmVldF9pbml0KCkpIHsKICAg
ICAgICAgQ1JJVElDQUwoImNvdWxkIG5vdCBpbml0IGVmcmVldC4iKTsKLSAgICAgICAgZ290byBl
cnJvcl9lZnJlZXQ7CisgICAgICAgIHNodXRkb3duSW5pdGlhbGl6ZWRFRkxMaWJyYXJpZXMoRWZy
ZWV0SW5pdEZhaWxlZCk7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogI2lmZGVmIEhBVkVf
RUNPUkVfWAogICAgIGlmICghZWNvcmVfeF9pbml0KDApKSB7CiAgICAgICAgIENSSVRJQ0FMKCJj
b3VsZCBub3QgaW5pdCBlY29yZV94LiIpOwotICAgICAgICBnb3RvIGVycm9yX2Vjb3JlX3g7Cisg
ICAgICAgIHNodXRkb3duSW5pdGlhbGl6ZWRFRkxMaWJyYXJpZXMoRWNvcmVYSW5pdEZhaWxlZCk7
CisgICAgICAgIHJldHVybiAwOwogICAgIH0KICNlbmRpZgogCiAgICAgaWYgKCFlZGplX2luaXQo
KSkgewogICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGluaXQgZWRqZS4iKTsKLSAgICAgICAg
Z290byBlcnJvcl9lZGplOworICAgICAgICBzaHV0ZG93bkluaXRpYWxpemVkRUZMTGlicmFyaWVz
KEVkamVJbml0RmFpbGVkKTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAgaWYgKCFl
Y29yZV9tYWluX2xvb3BfZ2xpYl9pbnRlZ3JhdGUoKSkgewpAQCAtMTAxLDM2ICsxMzMsMTMgQEAg
aW50IGV3a19pbml0KHZvaWQpCiAgICAgICAgICAgICAid29yayAoaWU6IEFkb2JlIEZsYXNoKSIp
OwogICAgIH0KIAotICAgIHJldHVybiArK19ld2tJbml0Q291bnQ7Ci0KLWVycm9yX2VkamU6Ci0j
aWZkZWYgSEFWRV9FQ09SRV9YCi0gICAgZWNvcmVfeF9zaHV0ZG93bigpOwotZXJyb3JfZWNvcmVf
eDoKLSNlbHNlCi0gICAgZWZyZWV0X3NodXRkb3duKCk7Ci0jZW5kaWYKLWVycm9yX2VmcmVldDoK
LSAgICBlY29yZV9pbWZfc2h1dGRvd24oKTsKLWVycm9yX2Vjb3JlX2ltZjoKLSAgICBlY29yZV9l
dmFzX3NodXRkb3duKCk7Ci1lcnJvcl9lY29yZV9ldmFzOgotICAgIGVjb3JlX3NodXRkb3duKCk7
Ci1lcnJvcl9lY29yZToKLSAgICBldmFzX3NodXRkb3duKCk7Ci1lcnJvcl9ldmFzOgotICAgIGVp
bmFfbG9nX2RvbWFpbl91bnJlZ2lzdGVyKF9ld2tfbG9nX2RvbSk7Ci0gICAgX2V3a19sb2dfZG9t
ID0gLTE7Ci1lcnJvcl9sb2dfZG9tYWluOgotICAgIGVpbmFfc2h1dGRvd24oKTsKLWVycm9yX2Vp
bmE6Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuICsrbV9ld2tJbml0Q291bnQ7CiB9CiAKLWlu
dCBld2tfc2h1dGRvd24odm9pZCkKK2ludCBFd2tNYWluOjpmaW5hbGl6ZSgpCiB7Ci0gICAgaWYg
KC0tX2V3a0luaXRDb3VudCkKLSAgICAgICAgcmV0dXJuIF9ld2tJbml0Q291bnQ7CisgICAgaWYg
KC0tbV9ld2tJbml0Q291bnQpCisgICAgICAgIHJldHVybiBtX2V3a0luaXRDb3VudDsKIAogICAg
IGVkamVfc2h1dGRvd24oKTsKICNpZmRlZiBIQVZFX0VDT1JFX1gKQEAgLTE0MSw5ICsxNTAsNDgg
QEAgaW50IGV3a19zaHV0ZG93bih2b2lkKQogICAgIGVjb3JlX2V2YXNfc2h1dGRvd24oKTsKICAg
ICBlY29yZV9zaHV0ZG93bigpOwogICAgIGV2YXNfc2h1dGRvd24oKTsKLSAgICBlaW5hX2xvZ19k
b21haW5fdW5yZWdpc3RlcihfZXdrX2xvZ19kb20pOwotICAgIF9ld2tfbG9nX2RvbSA9IC0xOwor
ICAgIGVpbmFfbG9nX2RvbWFpbl91bnJlZ2lzdGVyKG1fZXdrTG9nRG9tYWluSWQpOworICAgIG1f
ZXdrTG9nRG9tYWluSWQgPSAtMTsKICAgICBlaW5hX3NodXRkb3duKCk7CiAKICAgICByZXR1cm4g
MDsKIH0KKwordm9pZCBFd2tNYWluOjpzaHV0ZG93bkluaXRpYWxpemVkRUZMTGlicmFyaWVzKEVG
TExpYnJhcnlJbml0RmFpbHVyZSBmYWlsdXJlKQoreworICAgIHN3aXRjaCAoZmFpbHVyZSkgewor
ICAgIGNhc2UgRWRqZUluaXRGYWlsZWQ6CisjaWZkZWYgSEFWRV9FQ09SRV9YCisgICAgICAgIGVj
b3JlX3hfc2h1dGRvd24oKTsKKyNlbmRpZgorICAgIGNhc2UgRWNvcmVYSW5pdEZhaWxlZDoKKyAg
ICAgICAgZWZyZWV0X3NodXRkb3duKCk7CisgICAgY2FzZSBFZnJlZXRJbml0RmFpbGVkOgorICAg
ICAgICBlY29yZV9pbWZfc2h1dGRvd24oKTsKKyAgICBjYXNlIEVjb3JlSW1mSW5pdEZhaWxlZDoK
KyAgICAgICAgZWNvcmVfZXZhc19zaHV0ZG93bigpOworICAgIGNhc2UgRWNvcmVFdmFzSW5pdEZh
aWxlZDoKKyAgICAgICAgZWNvcmVfc2h1dGRvd24oKTsKKyAgICBjYXNlIEVjb3JlSW5pdEZhaWxl
ZDoKKyAgICAgICAgZXZhc19zaHV0ZG93bigpOworICAgIGNhc2UgRXZhc0luaXRGYWlsZWQ6Cisg
ICAgICAgIGVpbmFfbG9nX2RvbWFpbl91bnJlZ2lzdGVyKG1fZXdrTG9nRG9tYWluSWQpOworICAg
ICAgICBtX2V3a0xvZ0RvbWFpbklkID0gLTE7CisgICAgY2FzZSBFaW5hTG9nSW5pdEZhaWxlZDoK
KyAgICAgICAgZWluYV9zaHV0ZG93bigpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK2ludCBld2tfaW5pdCh2b2lkKQorewor
ICAgIHJldHVybiBFd2tNYWluOjpzaGFyZWQoKS5pbml0aWFsaXplKCk7Cit9CisKK2ludCBld2tf
c2h1dGRvd24odm9pZCkKK3sKKyAgICByZXR1cm4gRXdrTWFpbjo6c2hhcmVkKCkuZmluYWxpemUo
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19t
YWluX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWlu
X3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NWE5ZTYwY2IzZDI0MTQwMGQxODlmMGIzMTAzZWJiZjVj
NDk3NGFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX21haW5fcHJpdmF0ZS5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIGV3a19tYWluX3ByaXZhdGVfaAorI2RlZmluZSBld2tfbWFpbl9wcml2YXRlX2gKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK3R5cGVkZWYgdW5zaWduZWQgRUZMTGlicmFyeUluaXRGYWlsdXJl
OworCitjbGFzcyBFd2tNYWluIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgRXdrTWFpbiYgc2hhcmVk
KCk7CisgICAgfkV3a01haW4oKTsKKyAgICBpbnQgaW5pdGlhbGl6ZSgpOworICAgIGludCBmaW5h
bGl6ZSgpOworCisgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgeyByZXR1cm4gbV9ld2tJbml0Q291
bnQ7IH0KKyAgICBpbnQgbG9nRG9tYWluSWQoKSB7IHJldHVybiBtX2V3a0xvZ0RvbWFpbklkOyB9
CisKK3ByaXZhdGU6CisgICAgRXdrTWFpbigpOworICAgIHZvaWQgc2h1dGRvd25Jbml0aWFsaXpl
ZEVGTExpYnJhcmllcyhFRkxMaWJyYXJ5SW5pdEZhaWx1cmUpOworCisgICAgaW50IG1fZXdrSW5p
dENvdW50OworICAgIGludCBtX2V3a0xvZ0RvbWFpbklkOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBld2tfbWFpbl9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcHJpdmF0ZS5oCmluZGV4IGZkMzk0YWFlNmJkMTUyYWZi
YjM5YzA0N2U3YzQ3YmU0MDFhYjBhMmUuLmUyNWJkNjlkNjc1YTI4MzVhM2VkMDUwMjUwZWQyMzQw
MTFhYjc3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3By
aXZhdGUuaApAQCAtMjYsMTIgKzI2LDEyIEBACiAjaWZuZGVmIGV3a19wcml2YXRlX2gKICNkZWZp
bmUgZXdrX3ByaXZhdGVfaAogCi1leHRlcm4gaW50IF9ld2tfbG9nX2RvbTsKKyNpbmNsdWRlICJl
d2tfbWFpbl9wcml2YXRlLmgiCiAKLSNkZWZpbmUgQ1JJVElDQUwoLi4uKSBFSU5BX0xPR19ET01f
Q1JJVChfZXdrX2xvZ19kb20sIF9fVkFfQVJHU19fKQotI2RlZmluZSBFUlIoLi4uKSBFSU5BX0xP
R19ET01fRVJSKF9ld2tfbG9nX2RvbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIFdBUk4oLi4uKSBF
SU5BX0xPR19ET01fV0FSTihfZXdrX2xvZ19kb20sIF9fVkFfQVJHU19fKQotI2RlZmluZSBJTkZP
KC4uLikgRUlOQV9MT0dfRE9NX0lORk8oX2V3a19sb2dfZG9tLCBfX1ZBX0FSR1NfXykKLSNkZWZp
bmUgREJHKC4uLikgRUlOQV9MT0dfRE9NX0RCRyhfZXdrX2xvZ19kb20sIF9fVkFfQVJHU19fKQor
I2RlZmluZSBDUklUSUNBTCguLi4pIEVJTkFfTE9HX0RPTV9DUklUKEV3a01haW46OnNoYXJlZCgp
LmxvZ0RvbWFpbklkKCksIF9fVkFfQVJHU19fKQorI2RlZmluZSBFUlIoLi4uKSBFSU5BX0xPR19E
T01fRVJSKEV3a01haW46OnNoYXJlZCgpLmxvZ0RvbWFpbklkKCksIF9fVkFfQVJHU19fKQorI2Rl
ZmluZSBXQVJOKC4uLikgRUlOQV9MT0dfRE9NX1dBUk4oRXdrTWFpbjo6c2hhcmVkKCkubG9nRG9t
YWluSWQoKSwgX19WQV9BUkdTX18pCisjZGVmaW5lIElORk8oLi4uKSBFSU5BX0xPR19ET01fSU5G
TyhFd2tNYWluOjpzaGFyZWQoKS5sb2dEb21haW5JZCgpLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUg
REJHKC4uLikgRUlOQV9MT0dfRE9NX0RCRyhFd2tNYWluOjpzaGFyZWQoKS5sb2dEb21haW5JZCgp
LCBfX1ZBX0FSR1NfXykKIAogI2VuZGlmIC8vIGV3a19wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCA2M2FkMDYyMjgyYjQyMDE0
NDA1Y2Q3ZTdmODM0ZGIyYjQ5M2U4N2IyLi5iNjkyNzFiMGU2YzAyZTk1MjA0NTJkYjliMjcxNTkz
MmU2YTBlZmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuY3BwCkBAIC0yMCwxMyArMjAsMTQgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgImV3a192aWV3LmgiCi0jaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgogCiAjaW5jbHVk
ZSAiRXdrVmlldy5oIgogI2luY2x1ZGUgImV3a19iYWNrX2ZvcndhcmRfbGlzdF9wcml2YXRlLmgi
CiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19tYWluX3By
aXZhdGUuaCIKICNpbmNsdWRlICJld2tfcGFnZV9ncm91cF9wcml2YXRlLmgiCiAjaW5jbHVkZSAi
ZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tBUElDYXN0
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLRGF0YS5oPgpAQCAtNzksMTEgKzgwLDE2IEBAIEVpbmFf
Qm9vbCBld2tfdmlld19zbWFydF9jbGFzc19zZXQoRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSkK
IAogRXZhc19PYmplY3QqIEVXS1ZpZXdDcmVhdGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLUGFn
ZUdyb3VwUmVmIHBhZ2VHcm91cCwgRXZhcyogY2FudmFzLCBFdmFzX1NtYXJ0KiBzbWFydCkKIHsK
KyAgICBpZiAoIUV3a01haW46OnNoYXJlZCgpLmlzSW5pdGlhbGl6ZWQoKSkgeworICAgICAgICBF
SU5BX0xPR19DUklUKCJFV2ViS2l0IGhhcyBub3QgYmVlbiBpbml0aWFsaXplZC4gWW91IG11c3Qg
Y2FsbCBld2tfaW5pdCgpIGJlZm9yZSBjcmVhdGluZyB2aWV3LiIpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisKICAgICBXS1JldGFpblB0cjxXS1ZpZXdSZWY+IHdrVmlldyA9IGFk
b3B0V0soV0tWaWV3Q3JlYXRlKGNvbnRleHQsIHBhZ2VHcm91cCkpOwogICAgIGlmIChFd2tWaWV3
KiBld2tWaWV3ID0gRXdrVmlldzo6Y3JlYXRlKHdrVmlldy5nZXQoKSwgY2FudmFzLCBzbWFydCkp
CiAgICAgICAgIHJldHVybiBld2tWaWV3LT5ldmFzT2JqZWN0KCk7CiAKLSAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogV0tWaWV3UmVmIEVXS1ZpZXdHZXRXS1ZpZXcoRXZh
c19PYmplY3QqIGV3a1ZpZXcpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236364</attachid>
            <date>2014-08-11 05:18:48 -0700</date>
            <delta_ts>2014-08-11 23:42:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135606-20140811141836.patch</filename>
            <type>text/plain</type>
            <size>15091</size>
            <attacher name="Grzegorz Czajkowski">g.czajkowski</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyMzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjdiNDI3MTdjZGM3MTA0
NDExZjEwMWI4ODZiZDQ5ZjI5NzQyNzBjMi4uZTMyZjI4NDIyZDVhZDVmMmIzZTNjMTMyYzMwMjVl
OTRkNjcwYTEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE0LTA4LTExICBHcnpl
Z29yeiBDemFqa293c2tpICA8Zy5jemFqa293c2tpQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtF
RkxdIFByZXZlbnQgdGhlIGNsaWVudCBmcm9tIGNyZWF0aW5nIGV3a192aWV3IHdoZW4gRVdlYmtp
dCBpcyBub3QgaW5pdGlhbGl6ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNTYwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFNpbWlsYXJseSB0byBFRkwgbW9kdWxlcyAoZWluYSwgZXZhcyBldGMuKSwg
YXBwbGljYXRpb24gdXNpbmcgRVdlYktpdAorICAgICAgICBoYXMgdG8gaW5pdGlhbGl6ZSBpdCB1
c2luZyBld2tfaW5pdCgpLgorCisgICAgICAgIERvIG5vdCBhbGxvdyB0aGUgY2xpZW50IHRvIGNy
ZWF0ZSBld2tfdmlldyBpZiBld2tfaW5pdCBoYXMgbm90IGJlZW4gY2FsbGVkLgorICAgICAgICBB
ZGQgYW4gYXBwcm9wcmlhdGUgbG9ncyB3YXJuaW5nIHRoZSBjbGllbnQgYWJvdXQgd3JvbmcgQVBJ
cyB1c2FnZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmNwcDogQWRk
IEV3a01haW4gY2xhc3MgdG8gY29udHJvbCBld2sgbGlmZXRpbWUuCisgICAgICAgIChXZWJLaXQ6
OkV3a01haW46OkV3a01haW4pOgorICAgICAgICAoV2ViS2l0OjpFd2tNYWluOjpzaGFyZWQpOgor
ICAgICAgICAoV2ViS2l0OjpFd2tNYWluOjp+RXdrTWFpbik6IEFkZCBsb2dzIHdoZW4gdGhlIGNs
aWVudCBmb3Jnb3QgdG8gZGVzdHJveSBFV2Via2l0LgorICAgICAgICAoV2ViS2l0OjpFd2tNYWlu
Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6RXdrTWFpbjo6ZmluYWxpemUpOgorICAg
ICAgICAoV2ViS2l0OjpFd2tNYWluOjpzaHV0ZG93bkluaXRpYWxpemVkRUZMTW9kdWxlcyk6Cisg
ICAgICAgIChld2tfaW5pdCk6CisgICAgICAgIChld2tfc2h1dGRvd24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluX3ByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OkV3a01haW46OmlzSW5pdGlhbGl6ZWQpOgorICAgICAgICAoV2ViS2l0OjpFd2tNYWluOjps
b2dEb21haW5JZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ByaXZhdGUuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChFV0tW
aWV3Q3JlYXRlKToKKyAgICAgICAgUHJldmVudCB0aGUgY2xpZW50IGZyb20gY3JlYXRpbmcgZXdr
X3ZpZXcgd2hlbiBld2tfaW5pdCgpIGhhcyBub3QgYmVlbiBjYWxsZWQuCisKIDIwMTQtMDgtMTAg
IFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgWWVscCBw
aG9uZSBudW1iZXIgaGlnaGxpZ2h0cyBvZnRlbiBkaXNhcHBlYXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmNwcAppbmRleCBmMTQ5NTBlMGQzZDA3YmM1YmI4
ZGUxZTY5NjQ1ZTllODllNDIwNDg1Li5lYjg5YmFmNTZhOTJiZTgyMWNiOGNlMTNmZWFhZWFkNDE4
M2MzMzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
bWFpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX21haW4u
Y3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9G
VVNJT04gZW1iZWRkZWQgc3lzdGVtcwotICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDExIFNhbXN1
bmcgRWxlY3Ryb25pY3MKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMSwgMjAxNCBTYW1zdW5n
IEVsZWN0cm9uaWNzCiAgICAgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uCiAK
ICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiZXdrX21haW4uaCIKIAorI2luY2x1ZGUgImV3a19tYWluX3ByaXZhdGUuaCIKICNpbmNsdWRl
ICJld2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPEVjb3JlLmg+CiAjaW5jbHVkZSA8RWNvcmVfRXZh
cy5oPgpAQCAtMzAsNzAgKzMxLDEwMSBAQAogI2luY2x1ZGUgPEVmcmVldC5oPgogI2luY2x1ZGUg
PEVpbmEuaD4KICNpbmNsdWRlIDxFdmFzLmg+Ci0jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KLSNp
bmNsdWRlIDxnbGliLmg+CiAKICNpZmRlZiBIQVZFX0VDT1JFX1gKICNpbmNsdWRlIDxFY29yZV9Y
Lmg+CiAjZW5kaWYKIAotc3RhdGljIGludCBfZXdrSW5pdENvdW50ID0gMDsKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitlbnVtIGNsYXNzIEVGTE1vZHVsZUluaXRGYWlsdXJlIHsKKyAgICBFaW5hTG9n
LAorICAgIEV2YXMsCisgICAgRWNvcmUsCisgICAgRWNvcmVFdmFzLAorICAgIEVjb3JlSW1mLAor
ICAgIEVmcmVldCwKKyAgICBFY29yZVgsCisgICAgRWRqZQorfTsKKworRXdrTWFpbjo6RXdrTWFp
bigpCisgICAgOiBtX2luaXRDb3VudCgwKQorICAgICwgbV9sb2dEb21haW5JZCgtMSkKK3sKK30K
IAotLyoqCi0gKiBcdmFyICAgICBfZXdrX2xvZ19kb20KLSAqIEBicmllZiAgIHRoZSBsb2cgZG9t
YWluIGlkZW50aWZpZXIgdGhhdCBpcyB1c2VkIHdpdGggRUlOQSdzIG1hY3JvcwotICovCi1pbnQg
X2V3a19sb2dfZG9tID0gLTE7CitFd2tNYWluJiBFd2tNYWluOjpzaGFyZWQoKQoreworICAgIHN0
YXRpYyBFd2tNYWluIGluc3RhbmNlOworICAgIHJldHVybiBpbnN0YW5jZTsKK30KIAotaW50IGV3
a19pbml0KHZvaWQpCitFd2tNYWluOjp+RXdrTWFpbigpCiB7Ci0gICAgaWYgKF9ld2tJbml0Q291
bnQpCi0gICAgICAgIHJldHVybiArK19ld2tJbml0Q291bnQ7CisgICAgaWYgKG1faW5pdENvdW50
ID4gMCkKKyAgICAgICAgV0FSTigiRVdlYmtpdCBoYXMgbm90IGJlZW4gZGVzdHJveWVkLiBZb3Ug
c2hvdWxkIGNhbGwgZXdrX3NodXRkb3duKCkuIik7Cit9CiAKLSAgICBpZiAoIWVpbmFfaW5pdCgp
KQotICAgICAgICBnb3RvIGVycm9yX2VpbmE7CitpbnQgRXdrTWFpbjo6aW5pdGlhbGl6ZSgpCit7
CisgICAgaWYgKG1faW5pdENvdW50KQorICAgICAgICByZXR1cm4gKyttX2luaXRDb3VudDsKKwor
ICAgIGlmICghZWluYV9pbml0KCkpIHsKKyAgICAgICAgRUlOQV9MT0dfQ1JJVCgiY291bGQgbm90
IGluaXQgZWluYS4iKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogCi0gICAgX2V3a19sb2df
ZG9tID0gZWluYV9sb2dfZG9tYWluX3JlZ2lzdGVyKCJld2Via2l0MiIsIEVJTkFfQ09MT1JfT1JB
TkdFKTsKLSAgICBpZiAoX2V3a19sb2dfZG9tIDwgMCkgeworICAgIG1fbG9nRG9tYWluSWQgPSBl
aW5hX2xvZ19kb21haW5fcmVnaXN0ZXIoImV3ZWJraXQyIiwgRUlOQV9DT0xPUl9PUkFOR0UpOwor
ICAgIGlmIChtX2xvZ0RvbWFpbklkIDwgMCkgewogICAgICAgICBFSU5BX0xPR19DUklUKCJjb3Vs
ZCBub3QgcmVnaXN0ZXIgbG9nIGRvbWFpbiAnZXdlYmtpdDInIik7Ci0gICAgICAgIGdvdG8gZXJy
b3JfbG9nX2RvbWFpbjsKKyAgICAgICAgc2h1dGRvd25Jbml0aWFsaXplZEVGTE1vZHVsZXMoRUZM
TW9kdWxlSW5pdEZhaWx1cmU6OkVpbmFMb2cpOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAK
ICAgICBpZiAoIWV2YXNfaW5pdCgpKSB7CiAgICAgICAgIENSSVRJQ0FMKCJjb3VsZCBub3QgaW5p
dCBldmFzLiIpOwotICAgICAgICBnb3RvIGVycm9yX2V2YXM7CisgICAgICAgIHNodXRkb3duSW5p
dGlhbGl6ZWRFRkxNb2R1bGVzKEVGTE1vZHVsZUluaXRGYWlsdXJlOjpFdmFzKTsKKyAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQogCiAgICAgaWYgKCFlY29yZV9pbml0KCkpIHsKICAgICAgICAgQ1JJ
VElDQUwoImNvdWxkIG5vdCBpbml0IGVjb3JlLiIpOwotICAgICAgICBnb3RvIGVycm9yX2Vjb3Jl
OworICAgICAgICBzaHV0ZG93bkluaXRpYWxpemVkRUZMTW9kdWxlcyhFRkxNb2R1bGVJbml0RmFp
bHVyZTo6RWNvcmUpOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICBpZiAoIWVjb3Jl
X2V2YXNfaW5pdCgpKSB7CiAgICAgICAgIENSSVRJQ0FMKCJjb3VsZCBub3QgaW5pdCBlY29yZV9l
dmFzLiIpOwotICAgICAgICBnb3RvIGVycm9yX2Vjb3JlX2V2YXM7CisgICAgICAgIHNodXRkb3du
SW5pdGlhbGl6ZWRFRkxNb2R1bGVzKEVGTE1vZHVsZUluaXRGYWlsdXJlOjpFY29yZUV2YXMpOwor
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICBpZiAoIWVjb3JlX2ltZl9pbml0KCkpIHsK
ICAgICAgICAgQ1JJVElDQUwoImNvdWxkIG5vdCBpbml0IGVjb3JlX2ltZi4iKTsKLSAgICAgICAg
Z290byBlcnJvcl9lY29yZV9pbWY7CisgICAgICAgIHNodXRkb3duSW5pdGlhbGl6ZWRFRkxNb2R1
bGVzKEVGTE1vZHVsZUluaXRGYWlsdXJlOjpFY29yZUltZik7CisgICAgICAgIHJldHVybiAwOwog
ICAgIH0KIAogICAgIGlmICghZWZyZWV0X2luaXQoKSkgewogICAgICAgICBDUklUSUNBTCgiY291
bGQgbm90IGluaXQgZWZyZWV0LiIpOwotICAgICAgICBnb3RvIGVycm9yX2VmcmVldDsKKyAgICAg
ICAgc2h1dGRvd25Jbml0aWFsaXplZEVGTE1vZHVsZXMoRUZMTW9kdWxlSW5pdEZhaWx1cmU6OkVm
cmVldCk7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogI2lmZGVmIEhBVkVfRUNPUkVfWAog
ICAgIGlmICghZWNvcmVfeF9pbml0KDApKSB7CiAgICAgICAgIENSSVRJQ0FMKCJjb3VsZCBub3Qg
aW5pdCBlY29yZV94LiIpOwotICAgICAgICBnb3RvIGVycm9yX2Vjb3JlX3g7CisgICAgICAgIHNo
dXRkb3duSW5pdGlhbGl6ZWRFRkxNb2R1bGVzKEVGTE1vZHVsZUluaXRGYWlsdXJlOjpFY29yZVgp
OworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAjZW5kaWYKIAogICAgIGlmICghZWRqZV9pbml0
KCkpIHsKICAgICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBpbml0IGVkamUuIik7Ci0gICAgICAg
IGdvdG8gZXJyb3JfZWRqZTsKKyAgICAgICAgc2h1dGRvd25Jbml0aWFsaXplZEVGTE1vZHVsZXMo
RUZMTW9kdWxlSW5pdEZhaWx1cmU6OkVkamUpOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAK
ICAgICBpZiAoIWVjb3JlX21haW5fbG9vcF9nbGliX2ludGVncmF0ZSgpKSB7CkBAIC0xMDEsMzYg
KzEzMywxMyBAQCBpbnQgZXdrX2luaXQodm9pZCkKICAgICAgICAgICAgICJ3b3JrIChpZTogQWRv
YmUgRmxhc2gpIik7CiAgICAgfQogCi0gICAgcmV0dXJuICsrX2V3a0luaXRDb3VudDsKLQotZXJy
b3JfZWRqZToKLSNpZmRlZiBIQVZFX0VDT1JFX1gKLSAgICBlY29yZV94X3NodXRkb3duKCk7Ci1l
cnJvcl9lY29yZV94OgotI2Vsc2UKLSAgICBlZnJlZXRfc2h1dGRvd24oKTsKLSNlbmRpZgotZXJy
b3JfZWZyZWV0OgotICAgIGVjb3JlX2ltZl9zaHV0ZG93bigpOwotZXJyb3JfZWNvcmVfaW1mOgot
ICAgIGVjb3JlX2V2YXNfc2h1dGRvd24oKTsKLWVycm9yX2Vjb3JlX2V2YXM6Ci0gICAgZWNvcmVf
c2h1dGRvd24oKTsKLWVycm9yX2Vjb3JlOgotICAgIGV2YXNfc2h1dGRvd24oKTsKLWVycm9yX2V2
YXM6Ci0gICAgZWluYV9sb2dfZG9tYWluX3VucmVnaXN0ZXIoX2V3a19sb2dfZG9tKTsKLSAgICBf
ZXdrX2xvZ19kb20gPSAtMTsKLWVycm9yX2xvZ19kb21haW46Ci0gICAgZWluYV9zaHV0ZG93bigp
OwotZXJyb3JfZWluYToKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gKyttX2luaXRDb3VudDsK
IH0KIAotaW50IGV3a19zaHV0ZG93bih2b2lkKQoraW50IEV3a01haW46OmZpbmFsaXplKCkKIHsK
LSAgICBpZiAoLS1fZXdrSW5pdENvdW50KQotICAgICAgICByZXR1cm4gX2V3a0luaXRDb3VudDsK
KyAgICBpZiAoLS1tX2luaXRDb3VudCkKKyAgICAgICAgcmV0dXJuIG1faW5pdENvdW50OwogCiAg
ICAgZWRqZV9zaHV0ZG93bigpOwogI2lmZGVmIEhBVkVfRUNPUkVfWApAQCAtMTQxLDkgKzE1MCw0
OCBAQCBpbnQgZXdrX3NodXRkb3duKHZvaWQpCiAgICAgZWNvcmVfZXZhc19zaHV0ZG93bigpOwog
ICAgIGVjb3JlX3NodXRkb3duKCk7CiAgICAgZXZhc19zaHV0ZG93bigpOwotICAgIGVpbmFfbG9n
X2RvbWFpbl91bnJlZ2lzdGVyKF9ld2tfbG9nX2RvbSk7Ci0gICAgX2V3a19sb2dfZG9tID0gLTE7
CisgICAgZWluYV9sb2dfZG9tYWluX3VucmVnaXN0ZXIobV9sb2dEb21haW5JZCk7CisgICAgbV9s
b2dEb21haW5JZCA9IC0xOwogICAgIGVpbmFfc2h1dGRvd24oKTsKIAogICAgIHJldHVybiAwOwog
fQorCit2b2lkIEV3a01haW46OnNodXRkb3duSW5pdGlhbGl6ZWRFRkxNb2R1bGVzKEVGTE1vZHVs
ZUluaXRGYWlsdXJlIG1vZHVsZSkKK3sKKyAgICBzd2l0Y2ggKG1vZHVsZSkgeworICAgIGNhc2Ug
RUZMTW9kdWxlSW5pdEZhaWx1cmU6OkVkamU6CisjaWZkZWYgSEFWRV9FQ09SRV9YCisgICAgICAg
IGVjb3JlX3hfc2h1dGRvd24oKTsKKyNlbmRpZgorICAgIGNhc2UgRUZMTW9kdWxlSW5pdEZhaWx1
cmU6OkVjb3JlWDoKKyAgICAgICAgZWZyZWV0X3NodXRkb3duKCk7CisgICAgY2FzZSBFRkxNb2R1
bGVJbml0RmFpbHVyZTo6RWZyZWV0OgorICAgICAgICBlY29yZV9pbWZfc2h1dGRvd24oKTsKKyAg
ICBjYXNlIEVGTE1vZHVsZUluaXRGYWlsdXJlOjpFY29yZUltZjoKKyAgICAgICAgZWNvcmVfZXZh
c19zaHV0ZG93bigpOworICAgIGNhc2UgRUZMTW9kdWxlSW5pdEZhaWx1cmU6OkVjb3JlRXZhczoK
KyAgICAgICAgZWNvcmVfc2h1dGRvd24oKTsKKyAgICBjYXNlIEVGTE1vZHVsZUluaXRGYWlsdXJl
OjpFY29yZToKKyAgICAgICAgZXZhc19zaHV0ZG93bigpOworICAgIGNhc2UgRUZMTW9kdWxlSW5p
dEZhaWx1cmU6OkV2YXM6CisgICAgICAgIGVpbmFfbG9nX2RvbWFpbl91bnJlZ2lzdGVyKG1fbG9n
RG9tYWluSWQpOworICAgICAgICBtX2xvZ0RvbWFpbklkID0gLTE7CisgICAgY2FzZSBFRkxNb2R1
bGVJbml0RmFpbHVyZTo6RWluYUxvZzoKKyAgICAgICAgZWluYV9zaHV0ZG93bigpOworICAgIH0K
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisK
K2ludCBld2tfaW5pdCgpCit7CisgICAgcmV0dXJuIEV3a01haW46OnNoYXJlZCgpLmluaXRpYWxp
emUoKTsKK30KKworaW50IGV3a19zaHV0ZG93bigpCit7CisgICAgcmV0dXJuIEV3a01haW46OnNo
YXJlZCgpLmZpbmFsaXplKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfbWFpbl9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfbWFpbl9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzgwMjNjNjE4ODQzODhhY2I0
MjAwZDAwZjQwNTUyNWQ0NDAxODY4NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluX3ByaXZhdGUuaApAQCAtMCwwICsxLDUzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBld2tfbWFpbl9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX21haW5f
cHJpdmF0ZV9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIGNsYXNzIEVGTE1vZHVsZUlu
aXRGYWlsdXJlOworCitjbGFzcyBFd2tNYWluIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgRXdrTWFp
biYgc2hhcmVkKCk7CisgICAgfkV3a01haW4oKTsKKyAgICBpbnQgaW5pdGlhbGl6ZSgpOworICAg
IGludCBmaW5hbGl6ZSgpOworCisgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgeyByZXR1cm4gbV9p
bml0Q291bnQ7IH0KKyAgICBpbnQgbG9nRG9tYWluSWQoKSB7IHJldHVybiBtX2xvZ0RvbWFpbklk
OyB9CisKK3ByaXZhdGU6CisgICAgRXdrTWFpbigpOworICAgIHZvaWQgc2h1dGRvd25Jbml0aWFs
aXplZEVGTE1vZHVsZXMoRUZMTW9kdWxlSW5pdEZhaWx1cmUpOworCisgICAgaW50IG1faW5pdENv
dW50OworICAgIGludCBtX2xvZ0RvbWFpbklkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBld2tfbWFpbl9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfcHJpdmF0ZS5oCmluZGV4IGZkMzk0YWFlNmJkMTUyYWZiYjM5YzA0
N2U3YzQ3YmU0MDFhYjBhMmUuLmUyNWJkNjlkNjc1YTI4MzVhM2VkMDUwMjUwZWQyMzQwMTFhYjc3
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ByaXZhdGUu
aApAQCAtMjYsMTIgKzI2LDEyIEBACiAjaWZuZGVmIGV3a19wcml2YXRlX2gKICNkZWZpbmUgZXdr
X3ByaXZhdGVfaAogCi1leHRlcm4gaW50IF9ld2tfbG9nX2RvbTsKKyNpbmNsdWRlICJld2tfbWFp
bl9wcml2YXRlLmgiCiAKLSNkZWZpbmUgQ1JJVElDQUwoLi4uKSBFSU5BX0xPR19ET01fQ1JJVChf
ZXdrX2xvZ19kb20sIF9fVkFfQVJHU19fKQotI2RlZmluZSBFUlIoLi4uKSBFSU5BX0xPR19ET01f
RVJSKF9ld2tfbG9nX2RvbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIFdBUk4oLi4uKSBFSU5BX0xP
R19ET01fV0FSTihfZXdrX2xvZ19kb20sIF9fVkFfQVJHU19fKQotI2RlZmluZSBJTkZPKC4uLikg
RUlOQV9MT0dfRE9NX0lORk8oX2V3a19sb2dfZG9tLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgREJH
KC4uLikgRUlOQV9MT0dfRE9NX0RCRyhfZXdrX2xvZ19kb20sIF9fVkFfQVJHU19fKQorI2RlZmlu
ZSBDUklUSUNBTCguLi4pIEVJTkFfTE9HX0RPTV9DUklUKEV3a01haW46OnNoYXJlZCgpLmxvZ0Rv
bWFpbklkKCksIF9fVkFfQVJHU19fKQorI2RlZmluZSBFUlIoLi4uKSBFSU5BX0xPR19ET01fRVJS
KEV3a01haW46OnNoYXJlZCgpLmxvZ0RvbWFpbklkKCksIF9fVkFfQVJHU19fKQorI2RlZmluZSBX
QVJOKC4uLikgRUlOQV9MT0dfRE9NX1dBUk4oRXdrTWFpbjo6c2hhcmVkKCkubG9nRG9tYWluSWQo
KSwgX19WQV9BUkdTX18pCisjZGVmaW5lIElORk8oLi4uKSBFSU5BX0xPR19ET01fSU5GTyhFd2tN
YWluOjpzaGFyZWQoKS5sb2dEb21haW5JZCgpLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgREJHKC4u
LikgRUlOQV9MT0dfRE9NX0RCRyhFd2tNYWluOjpzaGFyZWQoKS5sb2dEb21haW5JZCgpLCBfX1ZB
X0FSR1NfXykKIAogI2VuZGlmIC8vIGV3a19wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCA2ODU4NWE2ZmRiNDViMDhmNzdmODcx
NWRmMmJmOTA2OGY4ZWNhMjYwLi45YWQwMDNmZWNmNGZkMzk3MjVkYzIwMmM3NzBiMTM3MTQzZGE3
MGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3Bw
CkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiRXdrVmlldy5oIgogI2luY2x1ZGUgImV3a19i
YWNrX2ZvcndhcmRfbGlzdF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0
ZS5oIgorI2luY2x1ZGUgImV3a19tYWluX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfcGFnZV9n
cm91cF9wcml2YXRlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4K
ICNpbmNsdWRlIDxXZWJLaXQvV0tBUElDYXN0Lmg+CkBAIC03OCwxMSArNzksMTYgQEAgRWluYV9C
b29sIGV3a192aWV3X3NtYXJ0X2NsYXNzX3NldChFd2tfVmlld19TbWFydF9DbGFzcyogYXBpKQog
CiBFdmFzX09iamVjdCogRVdLVmlld0NyZWF0ZShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tQYWdl
R3JvdXBSZWYgcGFnZUdyb3VwLCBFdmFzKiBjYW52YXMsIEV2YXNfU21hcnQqIHNtYXJ0KQogewor
ICAgIGlmICghRXdrTWFpbjo6c2hhcmVkKCkuaXNJbml0aWFsaXplZCgpKSB7CisgICAgICAgIEVJ
TkFfTE9HX0NSSVQoIkVXZWJLaXQgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkLiBZb3UgbXVzdCBj
YWxsIGV3a19pbml0KCkgYmVmb3JlIGNyZWF0aW5nIHZpZXcuIik7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKwogICAgIFdLUmV0YWluUHRyPFdLVmlld1JlZj4gd2tWaWV3ID0gYWRv
cHRXSyhXS1ZpZXdDcmVhdGUoY29udGV4dCwgcGFnZUdyb3VwKSk7CiAgICAgaWYgKEV3a1ZpZXcq
IGV3a1ZpZXcgPSBFd2tWaWV3OjpjcmVhdGUod2tWaWV3LmdldCgpLCBjYW52YXMsIHNtYXJ0KSkK
ICAgICAgICAgcmV0dXJuIGV3a1ZpZXctPmV2YXNPYmplY3QoKTsKIAotICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBudWxscHRyOwogfQogCiBXS1ZpZXdSZWYgRVdLVmlld0dldFdLVmlldyhFdmFz
X09iamVjdCogZXdrVmlldykKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCAxNTFiMmNjM2JjODY0ZTAyMzY2NjRkYTYyYmJlNWUyOGMzYmU4NzRlLi42
N2JiODRkOWVmNzc0N2MyNDhiMzU3MmI2OGM1ZjJhYzkwNGU5OGJlIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTQt
MDgtMTEgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWprb3dza2lAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF0gUHJldmVudCB0aGUgY2xpZW50IGZyb20gY3JlYXRpbmcgZXdrX3ZpZXcg
d2hlbiBFV2Via2l0IGlzIG5vdCBpbml0aWFsaXplZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1NjA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdFdlYktpdEFQSSBkb2VzIG5vdCBpbml0aWFsaXpl
IEVXZWJraXQgdXNpbmcgZXdrX2luaXQoKQorICAgICAgICB3aGljaCBpcyBub3QgcmVjb21tZW5k
ZWQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2VmbC9QbGF0Zm9ybVdlYlZpZXcuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlRWNvcmVFdmFzKToKKyAgICAgICAgUmVuYW1l
ZCBmcm9tIGluaXRFY29yZUV2YXMoKSBzaW5jZSBpdCBkb2Vzbid0IG5vdCBpbml0aWFsaXplCisg
ICAgICAgIGVjb3JlIGV2YXMuCisKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlBsYXRmb3JtV2Vi
Vmlldzo6UGxhdGZvcm1XZWJWaWV3KToKKyAgICAgICAgQ2FsbCBld2tfaW5pdCgpIHRoYXQgaW5p
dGFsaXplcyBhbGwgRUZMIG1vZHVsZXMgbmVlZGVkIGJ5IEVXZWJLaXQKKyAgICAgICAgaW5zdGVh
ZCBvZiBlY29yZV9ldmFzX2luaXQoKSBvbmx5LgorCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQ
bGF0Zm9ybVdlYlZpZXc6On5QbGF0Zm9ybVdlYlZpZXcpOgorICAgICAgICBDYWxsIGV3a19zaHV0
ZG93bigpIHRvIGZpbmFsaXplIEVXZWJraXQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjppbml0
RWNvcmVFdmFzKTogRGVsZXRlZC4KKwogMjAxNC0wOC0wOCAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBVbmJyZWFrIHdlYmtpdHB5IHVuaXQgdGVzdHMg
YnkgY2hlY2tpbmcgZm9yIHRoZSBleGlzdGVuY2Ugb2YgdGhlIGltYWdlIGRpZmYgdGVtcGxhdGUK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZWZsL1BsYXRmb3JtV2ViVmlldy5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL2VmbC9QbGF0Zm9ybVdlYlZpZXcuY3BwCmluZGV4IGM3NWNk
MWVjMzJjYzNkNTVkMzM3NDc4NmYwYTk4YmM0YWUyMDQzNzguLmNiZWM0MmRhN2FhZWZmYjU4YzFk
NGUzY2RhNjEzZWFiMTNmODkwMzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZWZs
L1BsYXRmb3JtV2ViVmlldy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9lZmwvUGxhdGZv
cm1XZWJWaWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIg
U2Ftc3VuZyBFbGVjdHJvbmljcworICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE0IFNhbXN1bmcg
RWxlY3Ryb25pY3MKICAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI1LDkgKzI1LDEwIEBACiAg
Ki8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiZXdrX21haW4uaCIKICNpbmNs
dWRlICJld2tfdmlld19wcml2YXRlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCi0K
ICNpbmNsdWRlICJFV2ViS2l0Mi5oIgogI2luY2x1ZGUgPFdlYktpdC9XS0FQSUNhc3QuaD4KICNp
bmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KQEAgLTQwLDExICs0MSw4IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotc3RhdGljIEVj
b3JlX0V2YXMqIGluaXRFY29yZUV2YXMoKQorc3RhdGljIEVjb3JlX0V2YXMqIGNyZWF0ZUVjb3Jl
RXZhcygpCiB7Ci0gICAgaWYgKCFlY29yZV9ldmFzX2luaXQoKSkKLSAgICAgICAgcmV0dXJuIDA7
Ci0KICAgICBFY29yZV9FdmFzKiBlY29yZUV2YXM7CiAjaWYgZGVmaW5lZChIQVZFX0VDT1JFX1gp
CiAgICAgZWNvcmVFdmFzID0gZWNvcmVfZXZhc19uZXcoIm9wZW5nbF94MTEiLCAwLCAwLCA4MDAs
IDYwMCwgMCk7CkBAIC02OCw3ICs2Niw4IEBAIHN0YXRpYyB2b2lkIG9uV2ViUHJvY2Vzc0NyYXNo
ZWQodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCogZXZlbnRJbmZvKQogCiBQbGF0Zm9ybVdlYlZp
ZXc6OlBsYXRmb3JtV2ViVmlldyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBS
ZWYgcGFnZUdyb3VwUmVmKQogewotICAgIG1fd2luZG93ID0gaW5pdEVjb3JlRXZhcygpOworICAg
IGV3a19pbml0KCk7CisgICAgbV93aW5kb3cgPSBjcmVhdGVFY29yZUV2YXMoKTsKIAogICAgIG1f
dmlldyA9IEVXS1ZpZXdDcmVhdGUoY29udGV4dFJlZiwgcGFnZUdyb3VwUmVmLCBlY29yZV9ldmFz
X2dldChtX3dpbmRvdyksIC8qIHNtYXJ0ICovIDApOwogCkBAIC04NCw3ICs4Myw3IEBAIFBsYXRm
b3JtV2ViVmlldzo6flBsYXRmb3JtV2ViVmlldygpCiAgICAgZXZhc19vYmplY3RfZGVsKG1fdmll
dyk7CiAKICAgICBlY29yZV9ldmFzX2ZyZWUobV93aW5kb3cpOwotICAgIGVjb3JlX2V2YXNfc2h1
dGRvd24oKTsKKyAgICBld2tfc2h1dGRvd24oKTsKIH0KIAogdm9pZCBQbGF0Zm9ybVdlYlZpZXc6
OnJlc2l6ZVRvKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCg==
</data>
<flag name="review"
          id="260975"
          type_id="1"
          status="+"
          setter="gyuyoung.kim"
    />
    <flag name="commit-queue"
          id="261047"
          type_id="3"
          status="+"
          setter="g.czajkowski"
    />
          </attachment>
      

    </bug>

</bugzilla>