<?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>61993</bug_id>
          
          <creation_ts>2011-06-02 23:24:15 -0700</creation_ts>
          <short_desc>[EFL][WK2] add WebKit2 EFL port&apos;s NativeWebMouseEvent, NativeWebWheelEvent and NativeWebKeyboardEvent</short_desc>
          <delta_ts>2011-06-18 20:44:21 -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>WebKit2</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>
          <dependson>62451</dependson>
          <blocked>61838</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Eunmi Lee">enmi.lee</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>antognolli+webkit</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>leandro</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sangseok.lim</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>youngtaeck.song</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>414667</commentid>
    <comment_count>0</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-02 23:24:15 -0700</bug_when>
    <thetext>I have added NativeWebMouseEvent and NativeWebWheelEvent for WebKit2 EFL port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414668</commentid>
    <comment_count>1</comment_count>
      <attachid>95856</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-02 23:36:55 -0700</bug_when>
    <thetext>Created attachment 95856
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414979</commentid>
    <comment_count>2</comment_count>
      <attachid>95856</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2011-06-03 10:14:03 -0700</bug_when>
    <thetext>Comment on attachment 95856
Patch

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

I know nothing about WebKit2, but I can comment about some style issues.

&gt; Source/WebKit2/Shared/efl/NativeWebMouseEventEfl.cpp:37
&gt; +NativeWebMouseEvent::NativeWebMouseEvent(const Evas_Event_Mouse_Down* event, const Evas_Point* position)
&gt; +    : WebMouseEvent(WebEventFactory::createWebMouseEvent(event, position))
&gt; +    , m_nativeEvent(event)
&gt; +{
&gt; +}

notImplemented();

&gt; Source/WebKit2/Shared/efl/NativeWebMouseEventEfl.cpp:43
&gt; +NativeWebMouseEvent::NativeWebMouseEvent(const Evas_Event_Mouse_Up* event, const Evas_Point* position)
&gt; +    : WebMouseEvent(WebEventFactory::createWebMouseEvent(event, position))
&gt; +    , m_nativeEvent(event)
&gt; +{
&gt; +}

notImplemented();

&gt; Source/WebKit2/Shared/efl/NativeWebMouseEventEfl.cpp:49
&gt; +NativeWebMouseEvent::NativeWebMouseEvent(const Evas_Event_Mouse_Move* event, const Evas_Point* position)
&gt; +    : WebMouseEvent(WebEventFactory::createWebMouseEvent(event, position))
&gt; +    , m_nativeEvent(event)
&gt; +{
&gt; +}

notImplemented();

&gt; Source/WebKit2/Shared/efl/NativeWebWheelEventEfl.cpp:37
&gt; +NativeWebWheelEvent::NativeWebWheelEvent(const Evas_Event_Mouse_Wheel* event, const Evas_Point* position)
&gt; +    : WebWheelEvent(WebEventFactory::createWebWheelEvent(event, position))
&gt; +    , m_nativeEvent(event)
&gt; +{
&gt; +}

notImplemented();

&gt; Source/WebKit2/Shared/efl/WebEventFactory.cpp:52
&gt; +    return (WebEvent::Modifiers)result;

Use C++-style cast.

&gt; Source/WebKit2/Shared/efl/WebEventFactory.h:43
&gt; +

Whereis the #endif?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416227</commentid>
    <comment_count>3</comment_count>
      <attachid>96178</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-06 19:14:00 -0700</bug_when>
    <thetext>Created attachment 96178
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416229</commentid>
    <comment_count>4</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-06 19:19:34 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 95856 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=95856&amp;action=review
&gt; 
&gt; I know nothing about WebKit2, but I can comment about some style issues.
&gt; 
&gt; &gt; Source/WebKit2/Shared/efl/NativeWebMouseEventEfl.cpp:37
&gt; &gt; +NativeWebMouseEvent::NativeWebMouseEvent(const Evas_Event_Mouse_Down* event, const Evas_Point* position)
&gt; &gt; +    : WebMouseEvent(WebEventFactory::createWebMouseEvent(event, position))
&gt; &gt; +    , m_nativeEvent(event)
&gt; &gt; +{
&gt; &gt; +}
&gt; 
&gt; notImplemented();
&gt; 
Those are all codes for NativeWebMouseEvent::NativeWebMouseEvent.
There is nothing to implement more.

&gt; &gt; Source/WebKit2/Shared/efl/NativeWebMouseEventEfl.cpp:43
&gt; &gt; +NativeWebMouseEvent::NativeWebMouseEvent(const Evas_Event_Mouse_Up* event, const Evas_Point* position)
&gt; &gt; +    : WebMouseEvent(WebEventFactory::createWebMouseEvent(event, position))
&gt; &gt; +    , m_nativeEvent(event)
&gt; &gt; +{
&gt; &gt; +}
&gt; 
&gt; notImplemented();
&gt; 
Ditto.

&gt; &gt; Source/WebKit2/Shared/efl/NativeWebMouseEventEfl.cpp:49
&gt; &gt; +NativeWebMouseEvent::NativeWebMouseEvent(const Evas_Event_Mouse_Move* event, const Evas_Point* position)
&gt; &gt; +    : WebMouseEvent(WebEventFactory::createWebMouseEvent(event, position))
&gt; &gt; +    , m_nativeEvent(event)
&gt; &gt; +{
&gt; &gt; +}
&gt; 
&gt; notImplemented();
&gt;
Ditto.
 
&gt; &gt; Source/WebKit2/Shared/efl/NativeWebWheelEventEfl.cpp:37
&gt; &gt; +NativeWebWheelEvent::NativeWebWheelEvent(const Evas_Event_Mouse_Wheel* event, const Evas_Point* position)
&gt; &gt; +    : WebWheelEvent(WebEventFactory::createWebWheelEvent(event, position))
&gt; &gt; +    , m_nativeEvent(event)
&gt; &gt; +{
&gt; &gt; +}
&gt; 
&gt; notImplemented();
&gt; 
Ditto.

&gt; &gt; Source/WebKit2/Shared/efl/WebEventFactory.cpp:52
&gt; &gt; +    return (WebEvent::Modifiers)result;
&gt; 
&gt; Use C++-style cast.
&gt; 
I&apos;ve changed code to use C++ style cast.

&gt; &gt; Source/WebKit2/Shared/efl/WebEventFactory.h:43
&gt; &gt; +
&gt; 
&gt; Whereis the #endif?

The #endif exists in the line 44 :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416490</commentid>
    <comment_count>5</comment_count>
      <attachid>96178</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2011-06-07 07:34:48 -0700</bug_when>
    <thetext>Comment on attachment 96178
Patch

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

Patch looks OK, but I don&apos;t know much about WebKit2 to properly review it.

&gt; Source/WebKit2/ChangeLog:8
&gt; +        [EFL][WK2] add WebKit2 EFL port&apos;s NativeWebMouseEvent and NativeWebWheelEvent
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=61993
&gt; +
&gt; +        Add WebKit2 EFL port&apos;s NativeWebMouseEvent and NativeWebWheelEvent

ChangeLog entry says the same thing twice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416967</commentid>
    <comment_count>6</comment_count>
      <attachid>96343</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-07 17:42:48 -0700</bug_when>
    <thetext>Created attachment 96343
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416971</commentid>
    <comment_count>7</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-07 17:46:25 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 96178 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=96178&amp;action=review
&gt; 
&gt; Patch looks OK, but I don&apos;t know much about WebKit2 to properly review it.
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:8
&gt; &gt; +        [EFL][WK2] add WebKit2 EFL port&apos;s NativeWebMouseEvent and NativeWebWheelEvent
&gt; &gt; +        https://bugs.webkit.org/show_bug.cgi?id=61993
&gt; &gt; +
&gt; &gt; +        Add WebKit2 EFL port&apos;s NativeWebMouseEvent and NativeWebWheelEvent
&gt; 
&gt; ChangeLog entry says the same thing twice.

I&apos;ve changed the ChangeLog.
I&apos;m always thankful for your review :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417005</commentid>
    <comment_count>8</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-06-07 18:50:29 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 96178 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=96178&amp;action=review
&gt; 
&gt; Patch looks OK, but I don&apos;t know much about WebKit2 to properly review it.

LGTM. However, I don&apos;t know who can review this patch as well. Let&apos;s find proper reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417073</commentid>
    <comment_count>9</comment_count>
      <attachid>96376</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-07 21:50:04 -0700</bug_when>
    <thetext>Created attachment 96376
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418655</commentid>
    <comment_count>10</comment_count>
      <attachid>96732</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-10 04:39:37 -0700</bug_when>
    <thetext>Created attachment 96732
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418657</commentid>
    <comment_count>11</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-10 04:40:16 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=96732) [details]
&gt; Patch

I&apos;ve added NativeWebKeyboardEvent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420172</commentid>
    <comment_count>12</comment_count>
      <attachid>96732</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-06-13 20:06:52 -0700</bug_when>
    <thetext>Comment on attachment 96732
Patch

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

&gt; Source/WebKit2/ChangeLog:7
&gt; +

Missing summary for Patch

&gt; Source/WebKit2/Shared/efl/WebEventFactory.cpp:60
&gt; +    if (button == 1)

I think it is better to use constant instead of &quot;1&quot;

&gt; Source/WebKit2/Shared/efl/WebEventFactory.cpp:62
&gt; +    if (button == 2)

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420363</commentid>
    <comment_count>13</comment_count>
      <attachid>97105</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-14 06:23:19 -0700</bug_when>
    <thetext>Created attachment 97105
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420365</commentid>
    <comment_count>14</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-14 06:31:00 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 96732 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=96732&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:7
&gt; &gt; +
&gt; 
&gt; Missing summary for Patch

Done.

&gt; 
&gt; &gt; Source/WebKit2/Shared/efl/WebEventFactory.cpp:60
&gt; &gt; +    if (button == 1)
&gt; 
&gt; I think it is better to use constant instead of &quot;1&quot;
&gt; 
&gt; &gt; Source/WebKit2/Shared/efl/WebEventFactory.cpp:62
&gt; &gt; +    if (button == 2)
&gt; 
&gt; ditto.

Done. I added enum for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420450</commentid>
    <comment_count>15</comment_count>
      <attachid>97105</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2011-06-14 08:51:35 -0700</bug_when>
    <thetext>Comment on attachment 97105
Patch

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

Informal R+.

&gt; Source/WebKit2/ChangeLog:8
&gt; +        [EFL][WK2] add WebKit2 EFL port&apos;s NativeWebMouseEvent, NativeWebWheelEvent and NativeWebKeyboardEvent
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=61993
&gt; +
&gt; +        add native mouse and keyboard event classes to convert EFL&apos;s events to NativeWebEvent.

Start sentences with uppercase letters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420767</commentid>
    <comment_count>16</comment_count>
      <attachid>97105</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-06-14 15:26:00 -0700</bug_when>
    <thetext>Comment on attachment 97105
Patch

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

&gt;&gt; Source/WebKit2/ChangeLog:8
&gt;&gt; +        add native mouse and keyboard event classes to convert EFL&apos;s events to NativeWebEvent.
&gt; 
&gt; Start sentences with uppercase letters.

Add*

&gt; Source/WebKit2/Shared/efl/WebEventFactory.cpp:46
&gt; +enum {
&gt; +    LeftButton = 1,
&gt; +    MiddleButton = 2,
&gt; +    RightButton = 3
&gt; +};

Is this always the case for all mouse types?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420944</commentid>
    <comment_count>17</comment_count>
      <attachid>97217</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-14 18:51:10 -0700</bug_when>
    <thetext>Created attachment 97217
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420951</commentid>
    <comment_count>18</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2011-06-14 18:56:11 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 97105 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=97105&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/ChangeLog:8
&gt; &gt;&gt; +        add native mouse and keyboard event classes to convert EFL&apos;s events to NativeWebEvent.
&gt; &gt; 
&gt; &gt; Start sentences with uppercase letters.
&gt; 
&gt; Add*
&gt; 
Done.

&gt; &gt; Source/WebKit2/Shared/efl/WebEventFactory.cpp:46
&gt; &gt; +enum {
&gt; &gt; +    LeftButton = 1,
&gt; &gt; +    MiddleButton = 2,
&gt; &gt; +    RightButton = 3
&gt; &gt; +};
&gt; 
&gt; Is this always the case for all mouse types?

I am not sure about that,
but I think I can&apos;t support more because WebMouseEvent supports only those three buttons now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423323</commentid>
    <comment_count>19</comment_count>
      <attachid>97217</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-18 20:44:15 -0700</bug_when>
    <thetext>Comment on attachment 97217
Patch

Clearing flags on attachment: 97217

Committed r89211: &lt;http://trac.webkit.org/changeset/89211&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423324</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-18 20:44:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95856</attachid>
            <date>2011-06-02 23:36:55 -0700</date>
            <delta_ts>2011-06-06 19:13:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61993-20110603153642.patch</filename>
            <type>text/plain</type>
            <size>17291</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODc5ODcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA4OTVkMzQwMTYxODFmMWE0
OGM1Y2Q1NGQzZmUwNTdiOGFkMmE3YmIzLi5mYzc5MzdkNDAzYjM4MmNmZDUyNTEyNDlmNGY4ZDQ1
OWI1ZGVmMzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDYtMDIgIEV1bm1p
IExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtFRkxdW1dLMl0gYWRkIFdlYktpdDIgRUZMIHBvcnQn
cyBOYXRpdmVXZWJNb3VzZUV2ZW50IGFuZCBOYXRpdmVXZWJXaGVlbEV2ZW50CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTk5MworCisgICAgICAgIEFk
ZCBXZWJLaXQyIEVGTCBwb3J0J3MgTmF0aXZlV2ViTW91c2VFdmVudCBhbmQgTmF0aXZlV2ViV2hl
ZWxFdmVudAorCisgICAgICAgICogU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaDoKKyAgICAg
ICAgKFdlYktpdDo6TmF0aXZlV2ViTW91c2VFdmVudDo6bmF0aXZlRXZlbnQpOgorICAgICAgICAq
IFNoYXJlZC9OYXRpdmVXZWJXaGVlbEV2ZW50Lmg6CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdl
YldoZWVsRXZlbnQ6Om5hdGl2ZUV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvZWZsL05hdGl2ZVdl
Yk1vdXNlRXZlbnRFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViTW91
c2VFdmVudDo6TmF0aXZlV2ViTW91c2VFdmVudCk6CisgICAgICAgICogU2hhcmVkL2VmbC9OYXRp
dmVXZWJXaGVlbEV2ZW50RWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdl
YldoZWVsRXZlbnQ6Ok5hdGl2ZVdlYldoZWVsRXZlbnQpOgorICAgICAgICAqIFNoYXJlZC9lZmwv
V2ViRXZlbnRGYWN0b3J5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Om1vZGlmaWVyc0Zv
ckV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6YnV0dG9uRm9yRXZlbnQpOgorICAgICAgICAoV2Vi
S2l0OjpjbGlja0NvdW50Rm9yRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJFdmVudEZhY3Rv
cnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJFdmVudEZhY3Rv
cnk6OmNyZWF0ZVdlYldoZWVsRXZlbnQpOgorICAgICAgICAqIFNoYXJlZC9lZmwvV2ViRXZlbnRG
YWN0b3J5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJXaGVl
bEV2ZW50LmguCisKIDIwMTEtMDYtMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJrIFJvd2UuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaAppbmRleCA4NGFmMWQ0NWFlZDZiNGI2YmI0OTAx
OWJlOTA5YWEwNGJlYjI0ODg5Li43YTlmMGFmNTY5ZjgxZjliYjJkY2ZmOGIxNTEyYTM5NGU3Y2Yw
MDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50LmgKQEAg
LTM2LDYgKzM2LDggQEAgT0JKQ19DTEFTUyBOU1ZpZXc7CiAjZWxpZiBQTEFURk9STShHVEspCiAj
aW5jbHVkZSA8R093blB0ckd0ay5oPgogdHlwZWRlZiB1bmlvbiBfR2RrRXZlbnQgR2RrRXZlbnQ7
CisjZWxpZiBQTEFURk9STShFRkwpCisjaW5jbHVkZSA8RXZhcy5oPgogI2VuZGlmCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtNTEsNiArNTMsMTAgQEAgcHVibGljOgogI2VsaWYgUExBVEZPUk0o
R1RLKQogICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoY29uc3QgTmF0aXZlV2ViTW91c2VFdmVudCYp
OwogICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoR2RrRXZlbnQqLCBpbnQpOworI2VsaWYgUExBVEZP
Uk0oRUZMKQorICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9E
b3duKiwgY29uc3QgRXZhc19Qb2ludCopOworICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoY29uc3Qg
RXZhc19FdmVudF9Nb3VzZV9VcCosIGNvbnN0IEV2YXNfUG9pbnQqKTsKKyAgICBOYXRpdmVXZWJN
b3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZSosIGNvbnN0IEV2YXNfUG9pbnQq
KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNjEsNiArNjcsOCBAQCBwdWJsaWM6
CiAgICAgY29uc3QgUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50KiBuYXRpdmVFdmVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fbmF0aXZlRXZlbnQ7IH0KICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICBjb25z
dCBHZGtFdmVudCogbmF0aXZlRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUV2ZW50Lmdl
dCgpOyB9CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgY29uc3Qgdm9pZCogbmF0aXZlRXZlbnQo
KSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUV2ZW50OyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAg
LTcyLDYgKzgwLDggQEAgcHJpdmF0ZToKICAgICBRR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQqIG1f
bmF0aXZlRXZlbnQ7CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgR093blB0cjxHZGtFdmVudD4g
bV9uYXRpdmVFdmVudDsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICBjb25zdCB2b2lkKiBtX25h
dGl2ZUV2ZW50OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvTmF0aXZlV2ViV2hlZWxFdmVudC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdl
YldoZWVsRXZlbnQuaAppbmRleCA1OTMwMmQwNDM3NzM0OGY2Y2E4YTE3MzQwMTQ1YzBmNmY2MzY5
NDQxLi40NDgxMmZiYTMzNmI5MWZjM2U0N2I0MWU2YTdlZjk0ZTcwMzU0ODJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViV2hlZWxFdmVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJXaGVlbEV2ZW50LmgKQEAgLTM2LDYgKzM2LDggQEAg
T0JKQ19DTEFTUyBOU1ZpZXc7CiAjZWxpZiBQTEFURk9STShHVEspCiAjaW5jbHVkZSA8R093blB0
ckd0ay5oPgogdHlwZWRlZiB1bmlvbiBfR2RrRXZlbnQgR2RrRXZlbnQ7CisjZWxpZiBQTEFURk9S
TShFRkwpCisjaW5jbHVkZSA8RXZhcy5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtNTEsNiArNTMsOCBAQCBwdWJsaWM6CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgTmF0aXZl
V2ViV2hlZWxFdmVudChjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50Jik7CiAgICAgTmF0aXZlV2Vi
V2hlZWxFdmVudChHZGtFdmVudCopOworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIE5hdGl2ZVdl
YldoZWVsRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCosIGNvbnN0IEV2YXNfUG9p
bnQqKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNjEsNiArNjUsOCBAQCBwdWJs
aWM6CiAgICAgY29uc3QgUUdyYXBoaWNzU2NlbmVXaGVlbEV2ZW50KiBuYXRpdmVFdmVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fbmF0aXZlRXZlbnQ7IH0KICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICBj
b25zdCBHZGtFdmVudCogbmF0aXZlRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUV2ZW50
LmdldCgpOyB9CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgY29uc3QgRXZhc19FdmVudF9Nb3Vz
ZV9XaGVlbCogbmF0aXZlRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUV2ZW50OyB9CiAj
ZW5kaWYKIAogcHJpdmF0ZToKQEAgLTcyLDYgKzc4LDggQEAgcHJpdmF0ZToKICAgICBRR3JhcGhp
Y3NTY2VuZVdoZWVsRXZlbnQqIG1fbmF0aXZlRXZlbnQ7CiAjZWxpZiBQTEFURk9STShHVEspCiAg
ICAgR093blB0cjxHZGtFdmVudD4gbV9uYXRpdmVFdmVudDsKKyNlbGlmIFBMQVRGT1JNKEVGTCkK
KyAgICBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiBtX25hdGl2ZUV2ZW50OwogI2VuZGlm
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYk1v
dXNlRXZlbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJNb3Vz
ZUV2ZW50RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTRkNjAxNGRiOTVlYjM3YmUxNTBlNjBlMDczMWEy
YzA4MDk4MGRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9O
YXRpdmVXZWJNb3VzZUV2ZW50RWZsLmNwcApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIk5hdGl2ZVdlYk1vdXNlRXZlbnQuaCIKKworI2luY2x1ZGUgIldl
YkV2ZW50RmFjdG9yeS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworTmF0aXZlV2ViTW91c2VF
dmVudDo6TmF0aXZlV2ViTW91c2VFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2
ZW50LCBjb25zdCBFdmFzX1BvaW50KiBwb3NpdGlvbikKKyAgICA6IFdlYk1vdXNlRXZlbnQoV2Vi
RXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGV2ZW50LCBwb3NpdGlvbikpCisgICAg
LCBtX25hdGl2ZUV2ZW50KGV2ZW50KQoreworfQorCitOYXRpdmVXZWJNb3VzZUV2ZW50OjpOYXRp
dmVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfVXAqIGV2ZW50LCBjb25zdCBF
dmFzX1BvaW50KiBwb3NpdGlvbikKKyAgICA6IFdlYk1vdXNlRXZlbnQoV2ViRXZlbnRGYWN0b3J5
OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGV2ZW50LCBwb3NpdGlvbikpCisgICAgLCBtX25hdGl2ZUV2
ZW50KGV2ZW50KQoreworfQorCitOYXRpdmVXZWJNb3VzZUV2ZW50OjpOYXRpdmVXZWJNb3VzZUV2
ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZSogZXZlbnQsIGNvbnN0IEV2YXNfUG9pbnQq
IHBvc2l0aW9uKQorICAgIDogV2ViTW91c2VFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdl
Yk1vdXNlRXZlbnQoZXZlbnQsIHBvc2l0aW9uKSkKKyAgICAsIG1fbmF0aXZlRXZlbnQoZXZlbnQp
Cit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJXaGVlbEV2ZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9lZmwvTmF0aXZlV2ViV2hlZWxFdmVudEVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjY1ZDdk
MmI1MjM2MTZmNzM2NWZjOTJmNjM1N2I4NWIzMzYzZDA3MgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViV2hlZWxFdmVudEVmbC5jcHAKQEAgLTAs
MCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNz
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOYXRpdmVXZWJXaGVl
bEV2ZW50LmgiCisKKyNpbmNsdWRlICJXZWJFdmVudEZhY3RvcnkuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK05hdGl2ZVdlYldoZWVsRXZlbnQ6Ok5hdGl2ZVdlYldoZWVsRXZlbnQoY29uc3Qg
RXZhc19FdmVudF9Nb3VzZV9XaGVlbCogZXZlbnQsIGNvbnN0IEV2YXNfUG9pbnQqIHBvc2l0aW9u
KQorICAgIDogV2ViV2hlZWxFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYldoZWVsRXZl
bnQoZXZlbnQsIHBvc2l0aW9uKSkKKyAgICAsIG1fbmF0aXZlRXZlbnQoZXZlbnQpCit7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L2VmbC9XZWJFdmVudEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJF
dmVudEZhY3RvcnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmMmM2OWY4MGNkMjRkN2Q5OTczYjFlNzExOTg1
NDI2ZWMzZjdlN2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZs
L1dlYkV2ZW50RmFjdG9yeS5jcHAKQEAgLTAsMCArMSwxNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViRXZlbnRGYWN0b3J5LmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL05v
dEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxiYXIuaD4KKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIHsKKyAgICBW
ZXJ0aWNhbFNjcm9sbERpcmVjdGlvbiA9IDAsCisgICAgSG9yaXpvbnRhbFNjcm9sbERpcmVjdGlv
biA9IDEKK307CisKK3N0YXRpYyBpbmxpbmUgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnNG
b3JFdmVudChjb25zdCBFdmFzX01vZGlmaWVyKiBtb2RpZmllcnMpCit7CisgICAgdW5zaWduZWQg
cmVzdWx0ID0gMDsKKyAgICBpZiAoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KG1vZGlmaWVycywg
IlNoaWZ0IikpCisgICAgICAgIHJlc3VsdCB8PSBXZWJFdmVudDo6U2hpZnRLZXk7CisgICAgaWYg
KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChtb2RpZmllcnMsICJDb250cm9sIikpCisgICAgICAg
IHJlc3VsdCB8PSBXZWJFdmVudDo6Q29udHJvbEtleTsKKyAgICBpZiAoZXZhc19rZXlfbW9kaWZp
ZXJfaXNfc2V0KG1vZGlmaWVycywgIkFsdCIpKQorICAgICAgICByZXN1bHQgfD0gV2ViRXZlbnQ6
OkFsdEtleTsKKyAgICBpZiAoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KG1vZGlmaWVycywgIk1l
dGEiKSkKKyAgICAgICAgcmVzdWx0IHw9IFdlYkV2ZW50OjpNZXRhS2V5OworICAgIHJldHVybiAo
V2ViRXZlbnQ6Ok1vZGlmaWVycylyZXN1bHQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgV2ViTW91c2VF
dmVudDo6QnV0dG9uIGJ1dHRvbkZvckV2ZW50KGludCBidXR0b24pCit7CisgICAgaWYgKGJ1dHRv
biA9PSAxKQorICAgICAgICByZXR1cm4gV2ViTW91c2VFdmVudDo6TGVmdEJ1dHRvbjsKKyAgICBp
ZiAoYnV0dG9uID09IDIpCisgICAgICAgIHJldHVybiBXZWJNb3VzZUV2ZW50OjpNaWRkbGVCdXR0
b247CisgICAgaWYgKGJ1dHRvbiA9PSAzKQorICAgICAgICByZXR1cm4gV2ViTW91c2VFdmVudDo6
UmlnaHRCdXR0b247CisKKyAgICByZXR1cm4gV2ViTW91c2VFdmVudDo6Tm9CdXR0b247Cit9CisK
K3N0YXRpYyBpbmxpbmUgaW50IGNsaWNrQ291bnRGb3JFdmVudChjb25zdCBFdmFzX0J1dHRvbl9G
bGFncyBmbGFncykKK3sKKyAgICBpZiAoZmxhZ3MgJiBFVkFTX0JVVFRPTl9UUklQTEVfQ0xJQ0sp
CisgICAgICAgIHJldHVybiAzOworICAgIGlmIChmbGFncyAmIEVWQVNfQlVUVE9OX0RPVUJMRV9D
TElDSykKKyAgICAgICAgcmV0dXJuIDI7CisKKyAgICByZXR1cm4gMTsKK30KKworV2ViTW91c2VF
dmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgRXZhc19FdmVu
dF9Nb3VzZV9Eb3duKiBldmVudCwgY29uc3QgRXZhc19Qb2ludCogcG9zaXRpb24pCit7CisgICAg
cmV0dXJuIFdlYk1vdXNlRXZlbnQoV2ViRXZlbnQ6Ok1vdXNlRG93biwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBidXR0b25Gb3JFdmVudChldmVudC0+YnV0dG9uKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBJbnRQb2ludChldmVudC0+Y2FudmFzLnggLSBwb3NpdGlvbi0+eCwgZXZlbnQt
PmNhbnZhcy55IC0gcG9zaXRpb24tPnkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIEludFBv
aW50KGV2ZW50LT5jYW52YXMueCwgZXZlbnQtPmNhbnZhcy55KSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAwIC8qIGRlbHRhWCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAwIC8qIGRl
bHRhWSAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAwIC8qIGRlbHRhWiAqLywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBjbGlja0NvdW50Rm9yRXZlbnQoZXZlbnQtPmZsYWdzKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnNGb3JFdmVudChldmVudC0+bW9kaWZpZXJz
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC0+dGltZXN0YW1wKTsKK30KKworV2Vi
TW91c2VFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgRXZh
c19FdmVudF9Nb3VzZV9VcCogZXZlbnQsIGNvbnN0IEV2YXNfUG9pbnQqIHBvc2l0aW9uKQorewor
ICAgIHJldHVybiBXZWJNb3VzZUV2ZW50KFdlYkV2ZW50OjpNb3VzZVVwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIGJ1dHRvbkZvckV2ZW50KGV2ZW50LT5idXR0b24pLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIEludFBvaW50KGV2ZW50LT5jYW52YXMueCAtIHBvc2l0aW9uLT54LCBldmVu
dC0+Y2FudmFzLnkgLSBwb3NpdGlvbi0+eSksCisgICAgICAgICAgICAgICAgICAgICAgICAgSW50
UG9pbnQoZXZlbnQtPmNhbnZhcy54LCBldmVudC0+Y2FudmFzLnkpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIDAgLyogZGVsdGFYICovLAorICAgICAgICAgICAgICAgICAgICAgICAgIDAgLyog
ZGVsdGFZICovLAorICAgICAgICAgICAgICAgICAgICAgICAgIDAgLyogZGVsdGFaICovLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIGNsaWNrQ291bnRGb3JFdmVudChldmVudC0+ZmxhZ3MpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyc0ZvckV2ZW50KGV2ZW50LT5tb2RpZmll
cnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LT50aW1lc3RhbXApOworfQorCitX
ZWJNb3VzZUV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudChjb25zdCBF
dmFzX0V2ZW50X01vdXNlX01vdmUqIGV2ZW50LCBjb25zdCBFdmFzX1BvaW50KiBwb3NpdGlvbikK
K3sKKyAgICByZXR1cm4gV2ViTW91c2VFdmVudChXZWJFdmVudDo6TW91c2VNb3ZlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIGJ1dHRvbkZvckV2ZW50KGV2ZW50LT5idXR0b25zKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChldmVudC0+Y3VyLmNhbnZhcy54IC0gcG9zaXRp
b24tPngsIGV2ZW50LT5jdXIuY2FudmFzLnkgLSBwb3NpdGlvbi0+eSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgSW50UG9pbnQoZXZlbnQtPmN1ci5jYW52YXMueCwgZXZlbnQtPmN1ci5jYW52
YXMueSksCisgICAgICAgICAgICAgICAgICAgICAgICAgMCAvKiBkZWx0YVggKi8sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgMCAvKiBkZWx0YVkgKi8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgMCAvKiBkZWx0YVogKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgMCAvKiBjbGlja0Nv
dW50ICovLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyc0ZvckV2ZW50KGV2ZW50
LT5tb2RpZmllcnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LT50aW1lc3RhbXAp
OworfQorCitXZWJXaGVlbEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVu
dChjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiBldmVudCwgY29uc3QgRXZhc19Qb2ludCog
cG9zaXRpb24pCit7CisgICAgZmxvYXQgZGVsdGFYID0gMDsKKyAgICBmbG9hdCBkZWx0YVkgPSAw
OworICAgIGZsb2F0IHdoZWVsVGlja3NYID0gMDsKKyAgICBmbG9hdCB3aGVlbFRpY2tzWSA9IDA7
CisKKyAgICAvLyBBIG5lZ2F0aXZlIHogdmFsdWUgbWVhbnMgKGluIEVGTCkgdGhhdCB3ZSBhcmUg
c2Nyb2xsaW5nIGRvd24sIHNvIHdlIG5lZWQKKyAgICAvLyB0byBpbnZlcnQgdGhlIHZhbHVlLgor
ICAgIGlmIChldmVudC0+ZGlyZWN0aW9uID09IFZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9uKSB7Cisg
ICAgICAgIGRlbHRhWCA9IDA7CisgICAgICAgIGRlbHRhWSA9IC0gZXZlbnQtPno7CisgICAgfSBl
bHNlIGlmIChldmVudC0+ZGlyZWN0aW9uID09IEhvcml6b250YWxTY3JvbGxEaXJlY3Rpb24pIHsK
KyAgICAgICAgZGVsdGFYID0gLSBldmVudC0+ejsKKyAgICAgICAgZGVsdGFZID0gMDsKKyAgICB9
CisKKyAgICB3aGVlbFRpY2tzWCA9IGRlbHRhWDsKKyAgICB3aGVlbFRpY2tzWSA9IGRlbHRhWTsK
KyAgICBkZWx0YVggKj0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGlu
ZVN0ZXAoKSk7CisgICAgZGVsdGFZICo9IHN0YXRpY19jYXN0PGZsb2F0PihTY3JvbGxiYXI6OnBp
eGVsc1BlckxpbmVTdGVwKCkpOworCisgICAgcmV0dXJuIFdlYldoZWVsRXZlbnQoV2ViRXZlbnQ6
OldoZWVsLAorICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KGV2ZW50LT5jYW52YXMu
eCAtIHBvc2l0aW9uLT54LCBldmVudC0+Y2FudmFzLnkgLSBwb3NpdGlvbi0+eSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgSW50UG9pbnQoZXZlbnQtPmNhbnZhcy54LCBldmVudC0+Y2FudmFz
LnkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0U2l6ZShkZWx0YVgsIGRlbHRhWSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRTaXplKHdoZWVsVGlja3NYLCB3aGVlbFRp
Y2tzWSksCisgICAgICAgICAgICAgICAgICAgICAgICAgV2ViV2hlZWxFdmVudDo6U2Nyb2xsQnlQ
aXhlbFdoZWVsRXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzRm9yRXZl
bnQoZXZlbnQtPm1vZGlmaWVycyksCisgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQtPnRp
bWVzdGFtcCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ZkMjExMDI4ZjU5MDA0YmE5
ZjM4MDhhN2EwMjg3MzAxNGFmMmY4YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViRXZlbnRGYWN0b3J5X2gKKyNkZWZpbmUgV2ViRXZlbnRGYWN0b3J5X2gKKworI2luY2x1ZGUg
IldlYkV2ZW50LmgiCisjaW5jbHVkZSA8RXZhcy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgV2ViRXZlbnRGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgV2ViTW91c2VFdmVu
dCBjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biosIGNvbnN0
IEV2YXNfUG9pbnQqKTsKKyAgICBzdGF0aWMgV2ViTW91c2VFdmVudCBjcmVhdGVXZWJNb3VzZUV2
ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfVXAqLCBjb25zdCBFdmFzX1BvaW50Kik7CisgICAg
c3RhdGljIFdlYk1vdXNlRXZlbnQgY3JlYXRlV2ViTW91c2VFdmVudChjb25zdCBFdmFzX0V2ZW50
X01vdXNlX01vdmUqLCBjb25zdCBFdmFzX1BvaW50Kik7CisgICAgc3RhdGljIFdlYldoZWVsRXZl
bnQgY3JlYXRlV2ViV2hlZWxFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiwgY29u
c3QgRXZhc19Qb2ludCopOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBXZWJFdmVudEZhY3RvcnlfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96178</attachid>
            <date>2011-06-06 19:14:00 -0700</date>
            <delta_ts>2011-06-07 17:42:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61993-20110607111358.patch</filename>
            <type>text/plain</type>
            <size>17260</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgyMTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0N2Q0NDVlZjZiNTA1NDdj
NThmNTVkNzhlNTQyMzhmNTVlNmVlZTBhLi4yMGMzMDA0MGQwNWQ4MGFmNzJjNDU2MzI1YTYwNGEw
NzdhZWRkODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDYtMDYgIEV1bm1p
IExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtFRkxdW1dLMl0gYWRkIFdlYktpdDIgRUZMIHBvcnQn
cyBOYXRpdmVXZWJNb3VzZUV2ZW50IGFuZCBOYXRpdmVXZWJXaGVlbEV2ZW50CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTk5MworCisgICAgICAgIEFk
ZCBXZWJLaXQyIEVGTCBwb3J0J3MgTmF0aXZlV2ViTW91c2VFdmVudCBhbmQgTmF0aXZlV2ViV2hl
ZWxFdmVudAorCisgICAgICAgICogU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaDoKKyAgICAg
ICAgKFdlYktpdDo6TmF0aXZlV2ViTW91c2VFdmVudDo6bmF0aXZlRXZlbnQpOgorICAgICAgICAq
IFNoYXJlZC9OYXRpdmVXZWJXaGVlbEV2ZW50Lmg6CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdl
YldoZWVsRXZlbnQ6Om5hdGl2ZUV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvZWZsL05hdGl2ZVdl
Yk1vdXNlRXZlbnRFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViTW91
c2VFdmVudDo6TmF0aXZlV2ViTW91c2VFdmVudCk6CisgICAgICAgICogU2hhcmVkL2VmbC9OYXRp
dmVXZWJXaGVlbEV2ZW50RWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdl
YldoZWVsRXZlbnQ6Ok5hdGl2ZVdlYldoZWVsRXZlbnQpOgorICAgICAgICAqIFNoYXJlZC9lZmwv
V2ViRXZlbnRGYWN0b3J5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Om1vZGlmaWVyc0Zv
ckV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6YnV0dG9uRm9yRXZlbnQpOgorICAgICAgICAoV2Vi
S2l0OjpjbGlja0NvdW50Rm9yRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJFdmVudEZhY3Rv
cnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJFdmVudEZhY3Rv
cnk6OmNyZWF0ZVdlYldoZWVsRXZlbnQpOgorICAgICAgICAqIFNoYXJlZC9lZmwvV2ViRXZlbnRG
YWN0b3J5Lmg6IEFkZGVkLgorCiAyMDExLTA2LTA2ICBKb2huIFN1bGxpdmFuICA8c3VsbGl2YW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaAppbmRleCA4NGFmMWQ0NWFlZDZi
NGI2YmI0OTAxOWJlOTA5YWEwNGJlYjI0ODg5Li43YTlmMGFmNTY5ZjgxZjliYjJkY2ZmOGIxNTEy
YTM5NGU3Y2YwMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2Vi
TW91c2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJNb3VzZUV2
ZW50LmgKQEAgLTM2LDYgKzM2LDggQEAgT0JKQ19DTEFTUyBOU1ZpZXc7CiAjZWxpZiBQTEFURk9S
TShHVEspCiAjaW5jbHVkZSA8R093blB0ckd0ay5oPgogdHlwZWRlZiB1bmlvbiBfR2RrRXZlbnQg
R2RrRXZlbnQ7CisjZWxpZiBQTEFURk9STShFRkwpCisjaW5jbHVkZSA8RXZhcy5oPgogI2VuZGlm
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTEsNiArNTMsMTAgQEAgcHVibGljOgogI2VsaWYg
UExBVEZPUk0oR1RLKQogICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoY29uc3QgTmF0aXZlV2ViTW91
c2VFdmVudCYpOwogICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoR2RrRXZlbnQqLCBpbnQpOworI2Vs
aWYgUExBVEZPUk0oRUZMKQorICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoY29uc3QgRXZhc19FdmVu
dF9Nb3VzZV9Eb3duKiwgY29uc3QgRXZhc19Qb2ludCopOworICAgIE5hdGl2ZVdlYk1vdXNlRXZl
bnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9VcCosIGNvbnN0IEV2YXNfUG9pbnQqKTsKKyAgICBO
YXRpdmVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZSosIGNvbnN0IEV2
YXNfUG9pbnQqKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNjEsNiArNjcsOCBA
QCBwdWJsaWM6CiAgICAgY29uc3QgUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50KiBuYXRpdmVFdmVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlRXZlbnQ7IH0KICNlbGlmIFBMQVRGT1JNKEdUSykK
ICAgICBjb25zdCBHZGtFdmVudCogbmF0aXZlRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX25hdGl2
ZUV2ZW50LmdldCgpOyB9CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgY29uc3Qgdm9pZCogbmF0
aXZlRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUV2ZW50OyB9CiAjZW5kaWYKIAogcHJp
dmF0ZToKQEAgLTcyLDYgKzgwLDggQEAgcHJpdmF0ZToKICAgICBRR3JhcGhpY3NTY2VuZU1vdXNl
RXZlbnQqIG1fbmF0aXZlRXZlbnQ7CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgR093blB0cjxH
ZGtFdmVudD4gbV9uYXRpdmVFdmVudDsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICBjb25zdCB2
b2lkKiBtX25hdGl2ZUV2ZW50OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvTmF0aXZlV2ViV2hlZWxFdmVudC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L05hdGl2ZVdlYldoZWVsRXZlbnQuaAppbmRleCA1OTMwMmQwNDM3NzM0OGY2Y2E4YTE3MzQwMTQ1
YzBmNmY2MzY5NDQxLi40NDgxMmZiYTMzNmI5MWZjM2U0N2I0MWU2YTdlZjk0ZTcwMzU0ODJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViV2hlZWxFdmVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJXaGVlbEV2ZW50LmgKQEAgLTM2LDYg
KzM2LDggQEAgT0JKQ19DTEFTUyBOU1ZpZXc7CiAjZWxpZiBQTEFURk9STShHVEspCiAjaW5jbHVk
ZSA8R093blB0ckd0ay5oPgogdHlwZWRlZiB1bmlvbiBfR2RrRXZlbnQgR2RrRXZlbnQ7CisjZWxp
ZiBQTEFURk9STShFRkwpCisjaW5jbHVkZSA8RXZhcy5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtNTEsNiArNTMsOCBAQCBwdWJsaWM6CiAjZWxpZiBQTEFURk9STShHVEspCiAg
ICAgTmF0aXZlV2ViV2hlZWxFdmVudChjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50Jik7CiAgICAg
TmF0aXZlV2ViV2hlZWxFdmVudChHZGtFdmVudCopOworI2VsaWYgUExBVEZPUk0oRUZMKQorICAg
IE5hdGl2ZVdlYldoZWVsRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCosIGNvbnN0
IEV2YXNfUG9pbnQqKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNjEsNiArNjUs
OCBAQCBwdWJsaWM6CiAgICAgY29uc3QgUUdyYXBoaWNzU2NlbmVXaGVlbEV2ZW50KiBuYXRpdmVF
dmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlRXZlbnQ7IH0KICNlbGlmIFBMQVRGT1JNKEdU
SykKICAgICBjb25zdCBHZGtFdmVudCogbmF0aXZlRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX25h
dGl2ZUV2ZW50LmdldCgpOyB9CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgY29uc3QgRXZhc19F
dmVudF9Nb3VzZV9XaGVlbCogbmF0aXZlRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUV2
ZW50OyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTcyLDYgKzc4LDggQEAgcHJpdmF0ZToKICAg
ICBRR3JhcGhpY3NTY2VuZVdoZWVsRXZlbnQqIG1fbmF0aXZlRXZlbnQ7CiAjZWxpZiBQTEFURk9S
TShHVEspCiAgICAgR093blB0cjxHZGtFdmVudD4gbV9uYXRpdmVFdmVudDsKKyNlbGlmIFBMQVRG
T1JNKEVGTCkKKyAgICBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiBtX25hdGl2ZUV2ZW50
OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05h
dGl2ZVdlYk1vdXNlRXZlbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRp
dmVXZWJNb3VzZUV2ZW50RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTRkNjAxNGRiOTVlYjM3YmUxNTBl
NjBlMDczMWEyYzA4MDk4MGRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL2VmbC9OYXRpdmVXZWJNb3VzZUV2ZW50RWZsLmNwcApAQCAtMCwwICsxLDUxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5hdGl2ZVdlYk1vdXNlRXZlbnQuaCIKKworI2lu
Y2x1ZGUgIldlYkV2ZW50RmFjdG9yeS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworTmF0aXZl
V2ViTW91c2VFdmVudDo6TmF0aXZlV2ViTW91c2VFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNl
X0Rvd24qIGV2ZW50LCBjb25zdCBFdmFzX1BvaW50KiBwb3NpdGlvbikKKyAgICA6IFdlYk1vdXNl
RXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGV2ZW50LCBwb3NpdGlv
bikpCisgICAgLCBtX25hdGl2ZUV2ZW50KGV2ZW50KQoreworfQorCitOYXRpdmVXZWJNb3VzZUV2
ZW50OjpOYXRpdmVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfVXAqIGV2ZW50
LCBjb25zdCBFdmFzX1BvaW50KiBwb3NpdGlvbikKKyAgICA6IFdlYk1vdXNlRXZlbnQoV2ViRXZl
bnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGV2ZW50LCBwb3NpdGlvbikpCisgICAgLCBt
X25hdGl2ZUV2ZW50KGV2ZW50KQoreworfQorCitOYXRpdmVXZWJNb3VzZUV2ZW50OjpOYXRpdmVX
ZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZSogZXZlbnQsIGNvbnN0IEV2
YXNfUG9pbnQqIHBvc2l0aW9uKQorICAgIDogV2ViTW91c2VFdmVudChXZWJFdmVudEZhY3Rvcnk6
OmNyZWF0ZVdlYk1vdXNlRXZlbnQoZXZlbnQsIHBvc2l0aW9uKSkKKyAgICAsIG1fbmF0aXZlRXZl
bnQoZXZlbnQpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJXaGVlbEV2ZW50RWZsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViV2hlZWxFdmVudEVmbC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjY1ZDdkMmI1MjM2MTZmNzM2NWZjOTJmNjM1N2I4NWIzMzYzZDA3MgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViV2hlZWxFdmVudEVmbC5j
cHAKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVs
ZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOYXRp
dmVXZWJXaGVlbEV2ZW50LmgiCisKKyNpbmNsdWRlICJXZWJFdmVudEZhY3RvcnkuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK05hdGl2ZVdlYldoZWVsRXZlbnQ6Ok5hdGl2ZVdlYldoZWVsRXZl
bnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogZXZlbnQsIGNvbnN0IEV2YXNfUG9pbnQq
IHBvc2l0aW9uKQorICAgIDogV2ViV2hlZWxFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdl
YldoZWVsRXZlbnQoZXZlbnQsIHBvc2l0aW9uKSkKKyAgICAsIG1fbmF0aXZlRXZlbnQoZXZlbnQp
Cit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L2VmbC9XZWJFdmVudEZhY3RvcnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2ZWVmYWY2ZTU2YzI3YjgyYmRj
ZThkMzNiZDQyZDY1NmYyODFiODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5jcHAKQEAgLTAsMCArMSwxNTMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViRXZlbnRGYWN0b3J5LmgiCisKKyNpbmNsdWRlIDxX
ZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxiYXIuaD4K
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVt
IHsKKyAgICBWZXJ0aWNhbFNjcm9sbERpcmVjdGlvbiA9IDAsCisgICAgSG9yaXpvbnRhbFNjcm9s
bERpcmVjdGlvbiA9IDEKK307CisKK3N0YXRpYyBpbmxpbmUgV2ViRXZlbnQ6Ok1vZGlmaWVycyBt
b2RpZmllcnNGb3JFdmVudChjb25zdCBFdmFzX01vZGlmaWVyKiBtb2RpZmllcnMpCit7CisgICAg
dW5zaWduZWQgcmVzdWx0ID0gMDsKKworICAgIGlmIChldmFzX2tleV9tb2RpZmllcl9pc19zZXQo
bW9kaWZpZXJzLCAiU2hpZnQiKSkKKyAgICAgICAgcmVzdWx0IHw9IFdlYkV2ZW50OjpTaGlmdEtl
eTsKKyAgICBpZiAoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KG1vZGlmaWVycywgIkNvbnRyb2wi
KSkKKyAgICAgICAgcmVzdWx0IHw9IFdlYkV2ZW50OjpDb250cm9sS2V5OworICAgIGlmIChldmFz
X2tleV9tb2RpZmllcl9pc19zZXQobW9kaWZpZXJzLCAiQWx0IikpCisgICAgICAgIHJlc3VsdCB8
PSBXZWJFdmVudDo6QWx0S2V5OworICAgIGlmIChldmFzX2tleV9tb2RpZmllcl9pc19zZXQobW9k
aWZpZXJzLCAiTWV0YSIpKQorICAgICAgICByZXN1bHQgfD0gV2ViRXZlbnQ6Ok1ldGFLZXk7CisK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViRXZlbnQ6Ok1vZGlmaWVycz4ocmVzdWx0KTsKK30K
Kworc3RhdGljIGlubGluZSBXZWJNb3VzZUV2ZW50OjpCdXR0b24gYnV0dG9uRm9yRXZlbnQoaW50
IGJ1dHRvbikKK3sKKyAgICBpZiAoYnV0dG9uID09IDEpCisgICAgICAgIHJldHVybiBXZWJNb3Vz
ZUV2ZW50OjpMZWZ0QnV0dG9uOworICAgIGlmIChidXR0b24gPT0gMikKKyAgICAgICAgcmV0dXJu
IFdlYk1vdXNlRXZlbnQ6Ok1pZGRsZUJ1dHRvbjsKKyAgICBpZiAoYnV0dG9uID09IDMpCisgICAg
ICAgIHJldHVybiBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbjsKKworICAgIHJldHVybiBXZWJN
b3VzZUV2ZW50OjpOb0J1dHRvbjsKK30KKworc3RhdGljIGlubGluZSBpbnQgY2xpY2tDb3VudEZv
ckV2ZW50KGNvbnN0IEV2YXNfQnV0dG9uX0ZsYWdzIGZsYWdzKQoreworICAgIGlmIChmbGFncyAm
IEVWQVNfQlVUVE9OX1RSSVBMRV9DTElDSykKKyAgICAgICAgcmV0dXJuIDM7CisgICAgaWYgKGZs
YWdzICYgRVZBU19CVVRUT05fRE9VQkxFX0NMSUNLKQorICAgICAgICByZXR1cm4gMjsKKworICAg
IHJldHVybiAxOworfQorCitXZWJNb3VzZUV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2Vi
TW91c2VFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2ZW50LCBjb25zdCBFdmFz
X1BvaW50KiBwb3NpdGlvbikKK3sKKyAgICByZXR1cm4gV2ViTW91c2VFdmVudChXZWJFdmVudDo6
TW91c2VEb3duLAorICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbkZvckV2ZW50KGV2ZW50
LT5idXR0b24pLAorICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KGV2ZW50LT5jYW52
YXMueCAtIHBvc2l0aW9uLT54LCBldmVudC0+Y2FudmFzLnkgLSBwb3NpdGlvbi0+eSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgSW50UG9pbnQoZXZlbnQtPmNhbnZhcy54LCBldmVudC0+Y2Fu
dmFzLnkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIDAgLyogZGVsdGFYICovLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIDAgLyogZGVsdGFZICovLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIDAgLyogZGVsdGFaICovLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrQ291bnRG
b3JFdmVudChldmVudC0+ZmxhZ3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVy
c0ZvckV2ZW50KGV2ZW50LT5tb2RpZmllcnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGV2
ZW50LT50aW1lc3RhbXApOworfQorCitXZWJNb3VzZUV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3Jl
YXRlV2ViTW91c2VFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNlX1VwKiBldmVudCwgY29uc3Qg
RXZhc19Qb2ludCogcG9zaXRpb24pCit7CisgICAgcmV0dXJuIFdlYk1vdXNlRXZlbnQoV2ViRXZl
bnQ6Ok1vdXNlVXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uRm9yRXZlbnQoZXZl
bnQtPmJ1dHRvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgSW50UG9pbnQoZXZlbnQtPmNh
bnZhcy54IC0gcG9zaXRpb24tPngsIGV2ZW50LT5jYW52YXMueSAtIHBvc2l0aW9uLT55KSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChldmVudC0+Y2FudmFzLngsIGV2ZW50LT5j
YW52YXMueSksCisgICAgICAgICAgICAgICAgICAgICAgICAgMCAvKiBkZWx0YVggKi8sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgMCAvKiBkZWx0YVkgKi8sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgMCAvKiBkZWx0YVogKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2tDb3Vu
dEZvckV2ZW50KGV2ZW50LT5mbGFncyksCisgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZp
ZXJzRm9yRXZlbnQoZXZlbnQtPm1vZGlmaWVycyksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ZXZlbnQtPnRpbWVzdGFtcCk7Cit9CisKK1dlYk1vdXNlRXZlbnQgV2ViRXZlbnRGYWN0b3J5Ojpj
cmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZSogZXZlbnQsIGNv
bnN0IEV2YXNfUG9pbnQqIHBvc2l0aW9uKQoreworICAgIHJldHVybiBXZWJNb3VzZUV2ZW50KFdl
YkV2ZW50OjpNb3VzZU1vdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uRm9yRXZl
bnQoZXZlbnQtPmJ1dHRvbnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KGV2
ZW50LT5jdXIuY2FudmFzLnggLSBwb3NpdGlvbi0+eCwgZXZlbnQtPmN1ci5jYW52YXMueSAtIHBv
c2l0aW9uLT55KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChldmVudC0+Y3Vy
LmNhbnZhcy54LCBldmVudC0+Y3VyLmNhbnZhcy55KSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAwIC8qIGRlbHRhWCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAwIC8qIGRlbHRhWSAq
LywKKyAgICAgICAgICAgICAgICAgICAgICAgICAwIC8qIGRlbHRhWiAqLywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAwIC8qIGNsaWNrQ291bnQgKi8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgbW9kaWZpZXJzRm9yRXZlbnQoZXZlbnQtPm1vZGlmaWVycyksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgZXZlbnQtPnRpbWVzdGFtcCk7Cit9CisKK1dlYldoZWVsRXZlbnQgV2ViRXZlbnRG
YWN0b3J5OjpjcmVhdGVXZWJXaGVlbEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwq
IGV2ZW50LCBjb25zdCBFdmFzX1BvaW50KiBwb3NpdGlvbikKK3sKKyAgICBmbG9hdCBkZWx0YVgg
PSAwOworICAgIGZsb2F0IGRlbHRhWSA9IDA7CisgICAgZmxvYXQgd2hlZWxUaWNrc1ggPSAwOwor
ICAgIGZsb2F0IHdoZWVsVGlja3NZID0gMDsKKworICAgIC8vIEEgbmVnYXRpdmUgeiB2YWx1ZSBt
ZWFucyAoaW4gRUZMKSB0aGF0IHdlIGFyZSBzY3JvbGxpbmcgZG93biwgc28gd2UgbmVlZAorICAg
IC8vIHRvIGludmVydCB0aGUgdmFsdWUuCisgICAgaWYgKGV2ZW50LT5kaXJlY3Rpb24gPT0gVmVy
dGljYWxTY3JvbGxEaXJlY3Rpb24pIHsKKyAgICAgICAgZGVsdGFYID0gMDsKKyAgICAgICAgZGVs
dGFZID0gLSBldmVudC0+ejsKKyAgICB9IGVsc2UgaWYgKGV2ZW50LT5kaXJlY3Rpb24gPT0gSG9y
aXpvbnRhbFNjcm9sbERpcmVjdGlvbikgeworICAgICAgICBkZWx0YVggPSAtIGV2ZW50LT56Owor
ICAgICAgICBkZWx0YVkgPSAwOworICAgIH0KKworICAgIHdoZWVsVGlja3NYID0gZGVsdGFYOwor
ICAgIHdoZWVsVGlja3NZID0gZGVsdGFZOworICAgIGRlbHRhWCAqPSBzdGF0aWNfY2FzdDxmbG9h
dD4oU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpKTsKKyAgICBkZWx0YVkgKj0gc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7CisKKyAgICByZXR1
cm4gV2ViV2hlZWxFdmVudChXZWJFdmVudDo6V2hlZWwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgSW50UG9pbnQoZXZlbnQtPmNhbnZhcy54IC0gcG9zaXRpb24tPngsIGV2ZW50LT5jYW52YXMu
eSAtIHBvc2l0aW9uLT55KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChldmVu
dC0+Y2FudmFzLngsIGV2ZW50LT5jYW52YXMueSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
RmxvYXRTaXplKGRlbHRhWCwgZGVsdGFZKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGbG9h
dFNpemUod2hlZWxUaWNrc1gsIHdoZWVsVGlja3NZKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJXaGVlbEV2ZW50OjpTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBtb2RpZmllcnNGb3JFdmVudChldmVudC0+bW9kaWZpZXJzKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBldmVudC0+dGltZXN0YW1wKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2ZW50RmFj
dG9yeS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zZmQyMTEwMjhmNTkwMDRiYTlmMzgwOGE3YTAyODczMDE0YWYyZjhiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuaApA
QCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ry
b25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJFdmVudEZhY3RvcnlfaAorI2RlZmluZSBXZWJF
dmVudEZhY3RvcnlfaAorCisjaW5jbHVkZSAiV2ViRXZlbnQuaCIKKyNpbmNsdWRlIDxFdmFzLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJFdmVudEZhY3RvcnkgeworcHVibGlj
OgorICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgRXZh
c19FdmVudF9Nb3VzZV9Eb3duKiwgY29uc3QgRXZhc19Qb2ludCopOworICAgIHN0YXRpYyBXZWJN
b3VzZUV2ZW50IGNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9VcCos
IGNvbnN0IEV2YXNfUG9pbnQqKTsKKyAgICBzdGF0aWMgV2ViTW91c2VFdmVudCBjcmVhdGVXZWJN
b3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZSosIGNvbnN0IEV2YXNfUG9pbnQq
KTsKKyAgICBzdGF0aWMgV2ViV2hlZWxFdmVudCBjcmVhdGVXZWJXaGVlbEV2ZW50KGNvbnN0IEV2
YXNfRXZlbnRfTW91c2VfV2hlZWwqLCBjb25zdCBFdmFzX1BvaW50Kik7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkV2ZW50RmFjdG9yeV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96343</attachid>
            <date>2011-06-07 17:42:48 -0700</date>
            <delta_ts>2011-06-07 21:49:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61993-20110608094246.patch</filename>
            <type>text/plain</type>
            <size>17178</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgyOTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlYTFiN2U0YjE3NTcwYjlk
MDRiMjJhZTNmNTNhY2Q2NTVjNjU3Njc5Li4xZDMyMTRhNjExNDJlNDRhZTNkZTI0MzA1ZWZhY2Zl
NTA4OTA4ZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDYtMDcgIEV1bm1p
IExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtFRkxdW1dLMl0gYWRkIFdlYktpdDIgRUZMIHBvcnQn
cyBOYXRpdmVXZWJNb3VzZUV2ZW50IGFuZCBOYXRpdmVXZWJXaGVlbEV2ZW50CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTk5MworCisgICAgICAgICog
U2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaDoKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2Vi
TW91c2VFdmVudDo6bmF0aXZlRXZlbnQpOgorICAgICAgICAqIFNoYXJlZC9OYXRpdmVXZWJXaGVl
bEV2ZW50Lmg6CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYldoZWVsRXZlbnQ6Om5hdGl2ZUV2
ZW50KToKKyAgICAgICAgKiBTaGFyZWQvZWZsL05hdGl2ZVdlYk1vdXNlRXZlbnRFZmwuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViTW91c2VFdmVudDo6TmF0aXZlV2ViTW91
c2VFdmVudCk6CisgICAgICAgICogU2hhcmVkL2VmbC9OYXRpdmVXZWJXaGVlbEV2ZW50RWZsLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYldoZWVsRXZlbnQ6Ok5hdGl2ZVdl
YldoZWVsRXZlbnQpOgorICAgICAgICAqIFNoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6Om1vZGlmaWVyc0ZvckV2ZW50KToKKyAgICAgICAgKFdl
YktpdDo6YnV0dG9uRm9yRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpjbGlja0NvdW50Rm9yRXZl
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZl
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYldoZWVsRXZl
bnQpOgorICAgICAgICAqIFNoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5Lmg6IEFkZGVkLiAKKwog
MjAxMS0wNi0wNyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9OYXRpdmVXZWJNb3VzZUV2ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2Vi
TW91c2VFdmVudC5oCmluZGV4IDg0YWYxZDQ1YWVkNmI0YjZiYjQ5MDE5YmU5MDlhYTA0YmViMjQ4
ODkuLjdhOWYwYWY1NjlmODFmOWJiMmRjZmY4YjE1MTJhMzk0ZTdjZjAwOTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50LmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaApAQCAtMzYsNiArMzYsOCBAQCBP
QkpDX0NMQVNTIE5TVmlldzsKICNlbGlmIFBMQVRGT1JNKEdUSykKICNpbmNsdWRlIDxHT3duUHRy
R3RrLmg+CiB0eXBlZGVmIHVuaW9uIF9HZGtFdmVudCBHZGtFdmVudDsKKyNlbGlmIFBMQVRGT1JN
KEVGTCkKKyNpbmNsdWRlIDxFdmFzLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC01MSw2ICs1MywxMCBAQCBwdWJsaWM6CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgTmF0aXZl
V2ViTW91c2VFdmVudChjb25zdCBOYXRpdmVXZWJNb3VzZUV2ZW50Jik7CiAgICAgTmF0aXZlV2Vi
TW91c2VFdmVudChHZGtFdmVudCosIGludCk7CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgTmF0
aXZlV2ViTW91c2VFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24qLCBjb25zdCBFdmFz
X1BvaW50Kik7CisgICAgTmF0aXZlV2ViTW91c2VFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNl
X1VwKiwgY29uc3QgRXZhc19Qb2ludCopOworICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoY29uc3Qg
RXZhc19FdmVudF9Nb3VzZV9Nb3ZlKiwgY29uc3QgRXZhc19Qb2ludCopOwogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShNQUMpCkBAIC02MSw2ICs2Nyw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBRR3Jh
cGhpY3NTY2VuZU1vdXNlRXZlbnQqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9uYXRp
dmVFdmVudDsgfQogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIGNvbnN0IEdka0V2ZW50KiBuYXRp
dmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlRXZlbnQuZ2V0KCk7IH0KKyNlbGlmIFBM
QVRGT1JNKEVGTCkKKyAgICBjb25zdCB2b2lkKiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fbmF0aXZlRXZlbnQ7IH0KICNlbmRpZgogCiBwcml2YXRlOgpAQCAtNzIsNiArODAsOCBAQCBw
cml2YXRlOgogICAgIFFHcmFwaGljc1NjZW5lTW91c2VFdmVudCogbV9uYXRpdmVFdmVudDsKICNl
bGlmIFBMQVRGT1JNKEdUSykKICAgICBHT3duUHRyPEdka0V2ZW50PiBtX25hdGl2ZUV2ZW50Owor
I2VsaWYgUExBVEZPUk0oRUZMKQorICAgIGNvbnN0IHZvaWQqIG1fbmF0aXZlRXZlbnQ7CiAjZW5k
aWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJXaGVl
bEV2ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViV2hlZWxFdmVudC5oCmlu
ZGV4IDU5MzAyZDA0Mzc3MzQ4ZjZjYThhMTczNDAxNDVjMGY2ZjYzNjk0NDEuLjQ0ODEyZmJhMzM2
YjkxZmMzZTQ3YjQxZTZhN2VmOTRlNzAzNTQ4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OYXRpdmVXZWJXaGVlbEV2ZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L05hdGl2ZVdlYldoZWVsRXZlbnQuaApAQCAtMzYsNiArMzYsOCBAQCBPQkpDX0NMQVNTIE5TVmll
dzsKICNlbGlmIFBMQVRGT1JNKEdUSykKICNpbmNsdWRlIDxHT3duUHRyR3RrLmg+CiB0eXBlZGVm
IHVuaW9uIF9HZGtFdmVudCBHZGtFdmVudDsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyNpbmNsdWRl
IDxFdmFzLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01MSw2ICs1Myw4IEBA
IHB1YmxpYzoKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICBOYXRpdmVXZWJXaGVlbEV2ZW50KGNv
bnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmKTsKICAgICBOYXRpdmVXZWJXaGVlbEV2ZW50KEdka0V2
ZW50Kik7CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgTmF0aXZlV2ViV2hlZWxFdmVudChjb25z
dCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiwgY29uc3QgRXZhc19Qb2ludCopOwogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShNQUMpCkBAIC02MSw2ICs2NSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBR
R3JhcGhpY3NTY2VuZVdoZWVsRXZlbnQqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9u
YXRpdmVFdmVudDsgfQogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIGNvbnN0IEdka0V2ZW50KiBu
YXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlRXZlbnQuZ2V0KCk7IH0KKyNlbGlm
IFBMQVRGT1JNKEVGTCkKKyAgICBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiBuYXRpdmVF
dmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlRXZlbnQ7IH0KICNlbmRpZgogCiBwcml2YXRl
OgpAQCAtNzIsNiArNzgsOCBAQCBwcml2YXRlOgogICAgIFFHcmFwaGljc1NjZW5lV2hlZWxFdmVu
dCogbV9uYXRpdmVFdmVudDsKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICBHT3duUHRyPEdka0V2
ZW50PiBtX25hdGl2ZUV2ZW50OworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIGNvbnN0IEV2YXNf
RXZlbnRfTW91c2VfV2hlZWwqIG1fbmF0aXZlRXZlbnQ7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViTW91c2VFdmVudEVmbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYk1vdXNlRXZlbnRFZmwuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJhNGQ2MDE0ZGI5NWViMzdiZTE1MGU2MGUwNzMxYTJjMDgwOTgwZGMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYk1vdXNlRXZl
bnRFZmwuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ft
c3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiTmF0aXZlV2ViTW91c2VFdmVudC5oIgorCisjaW5jbHVkZSAiV2ViRXZlbnRGYWN0b3J5Lmgi
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitOYXRpdmVXZWJNb3VzZUV2ZW50OjpOYXRpdmVXZWJN
b3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biogZXZlbnQsIGNvbnN0IEV2YXNf
UG9pbnQqIHBvc2l0aW9uKQorICAgIDogV2ViTW91c2VFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNy
ZWF0ZVdlYk1vdXNlRXZlbnQoZXZlbnQsIHBvc2l0aW9uKSkKKyAgICAsIG1fbmF0aXZlRXZlbnQo
ZXZlbnQpCit7Cit9CisKK05hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQo
Y29uc3QgRXZhc19FdmVudF9Nb3VzZV9VcCogZXZlbnQsIGNvbnN0IEV2YXNfUG9pbnQqIHBvc2l0
aW9uKQorICAgIDogV2ViTW91c2VFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNl
RXZlbnQoZXZlbnQsIHBvc2l0aW9uKSkKKyAgICAsIG1fbmF0aXZlRXZlbnQoZXZlbnQpCit7Cit9
CisKK05hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQoY29uc3QgRXZhc19F
dmVudF9Nb3VzZV9Nb3ZlKiBldmVudCwgY29uc3QgRXZhc19Qb2ludCogcG9zaXRpb24pCisgICAg
OiBXZWJNb3VzZUV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudChldmVu
dCwgcG9zaXRpb24pKQorICAgICwgbV9uYXRpdmVFdmVudChldmVudCkKK3sKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05h
dGl2ZVdlYldoZWVsRXZlbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRp
dmVXZWJXaGVlbEV2ZW50RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjVkN2QyYjUyMzYxNmY3MzY1ZmM5
MmY2MzU3Yjg1YjMzNjNkMDcyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL2VmbC9OYXRpdmVXZWJXaGVlbEV2ZW50RWZsLmNwcApAQCAtMCwwICsxLDM5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5hdGl2ZVdlYldoZWVsRXZlbnQuaCIKKworI2lu
Y2x1ZGUgIldlYkV2ZW50RmFjdG9yeS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworTmF0aXZl
V2ViV2hlZWxFdmVudDo6TmF0aXZlV2ViV2hlZWxFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNl
X1doZWVsKiBldmVudCwgY29uc3QgRXZhc19Qb2ludCogcG9zaXRpb24pCisgICAgOiBXZWJXaGVl
bEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudChldmVudCwgcG9zaXRp
b24pKQorICAgICwgbV9uYXRpdmVFdmVudChldmVudCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2ZW50RmFj
dG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTZlZWZhZjZlNTZjMjdiODJiZGNlOGQzM2JkNDJkNjU2ZjI4MWI4NgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5
LmNwcApAQCAtMCwwICsxLDE1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5n
IEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
ZWJFdmVudEZhY3RvcnkuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGJhci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0geworICAgIFZlcnRpY2FsU2Nyb2xsRGly
ZWN0aW9uID0gMCwKKyAgICBIb3Jpem9udGFsU2Nyb2xsRGlyZWN0aW9uID0gMQorfTsKKworc3Rh
dGljIGlubGluZSBXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVyc0ZvckV2ZW50KGNvbnN0IEV2
YXNfTW9kaWZpZXIqIG1vZGlmaWVycykKK3sKKyAgICB1bnNpZ25lZCByZXN1bHQgPSAwOworCisg
ICAgaWYgKGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChtb2RpZmllcnMsICJTaGlmdCIpKQorICAg
ICAgICByZXN1bHQgfD0gV2ViRXZlbnQ6OlNoaWZ0S2V5OworICAgIGlmIChldmFzX2tleV9tb2Rp
Zmllcl9pc19zZXQobW9kaWZpZXJzLCAiQ29udHJvbCIpKQorICAgICAgICByZXN1bHQgfD0gV2Vi
RXZlbnQ6OkNvbnRyb2xLZXk7CisgICAgaWYgKGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChtb2Rp
ZmllcnMsICJBbHQiKSkKKyAgICAgICAgcmVzdWx0IHw9IFdlYkV2ZW50OjpBbHRLZXk7CisgICAg
aWYgKGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChtb2RpZmllcnMsICJNZXRhIikpCisgICAgICAg
IHJlc3VsdCB8PSBXZWJFdmVudDo6TWV0YUtleTsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxX
ZWJFdmVudDo6TW9kaWZpZXJzPihyZXN1bHQpOworfQorCitzdGF0aWMgaW5saW5lIFdlYk1vdXNl
RXZlbnQ6OkJ1dHRvbiBidXR0b25Gb3JFdmVudChpbnQgYnV0dG9uKQoreworICAgIGlmIChidXR0
b24gPT0gMSkKKyAgICAgICAgcmV0dXJuIFdlYk1vdXNlRXZlbnQ6OkxlZnRCdXR0b247CisgICAg
aWYgKGJ1dHRvbiA9PSAyKQorICAgICAgICByZXR1cm4gV2ViTW91c2VFdmVudDo6TWlkZGxlQnV0
dG9uOworICAgIGlmIChidXR0b24gPT0gMykKKyAgICAgICAgcmV0dXJuIFdlYk1vdXNlRXZlbnQ6
OlJpZ2h0QnV0dG9uOworCisgICAgcmV0dXJuIFdlYk1vdXNlRXZlbnQ6Ok5vQnV0dG9uOworfQor
CitzdGF0aWMgaW5saW5lIGludCBjbGlja0NvdW50Rm9yRXZlbnQoY29uc3QgRXZhc19CdXR0b25f
RmxhZ3MgZmxhZ3MpCit7CisgICAgaWYgKGZsYWdzICYgRVZBU19CVVRUT05fVFJJUExFX0NMSUNL
KQorICAgICAgICByZXR1cm4gMzsKKyAgICBpZiAoZmxhZ3MgJiBFVkFTX0JVVFRPTl9ET1VCTEVf
Q0xJQ0spCisgICAgICAgIHJldHVybiAyOworCisgICAgcmV0dXJuIDE7Cit9CisKK1dlYk1vdXNl
RXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZl
bnRfTW91c2VfRG93biogZXZlbnQsIGNvbnN0IEV2YXNfUG9pbnQqIHBvc2l0aW9uKQoreworICAg
IHJldHVybiBXZWJNb3VzZUV2ZW50KFdlYkV2ZW50OjpNb3VzZURvd24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgYnV0dG9uRm9yRXZlbnQoZXZlbnQtPmJ1dHRvbiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgSW50UG9pbnQoZXZlbnQtPmNhbnZhcy54IC0gcG9zaXRpb24tPngsIGV2ZW50
LT5jYW52YXMueSAtIHBvc2l0aW9uLT55KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQ
b2ludChldmVudC0+Y2FudmFzLngsIGV2ZW50LT5jYW52YXMueSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgMCAvKiBkZWx0YVggKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgMCAvKiBk
ZWx0YVkgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgMCAvKiBkZWx0YVogKi8sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgY2xpY2tDb3VudEZvckV2ZW50KGV2ZW50LT5mbGFncyksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzRm9yRXZlbnQoZXZlbnQtPm1vZGlmaWVy
cyksCisgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQtPnRpbWVzdGFtcCk7Cit9CisKK1dl
Yk1vdXNlRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2
YXNfRXZlbnRfTW91c2VfVXAqIGV2ZW50LCBjb25zdCBFdmFzX1BvaW50KiBwb3NpdGlvbikKK3sK
KyAgICByZXR1cm4gV2ViTW91c2VFdmVudChXZWJFdmVudDo6TW91c2VVcCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBidXR0b25Gb3JFdmVudChldmVudC0+YnV0dG9uKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBJbnRQb2ludChldmVudC0+Y2FudmFzLnggLSBwb3NpdGlvbi0+eCwgZXZl
bnQtPmNhbnZhcy55IC0gcG9zaXRpb24tPnkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIElu
dFBvaW50KGV2ZW50LT5jYW52YXMueCwgZXZlbnQtPmNhbnZhcy55KSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAwIC8qIGRlbHRhWCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAwIC8q
IGRlbHRhWSAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAwIC8qIGRlbHRhWiAqLywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBjbGlja0NvdW50Rm9yRXZlbnQoZXZlbnQtPmZsYWdzKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnNGb3JFdmVudChldmVudC0+bW9kaWZp
ZXJzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC0+dGltZXN0YW1wKTsKK30KKwor
V2ViTW91c2VFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3Qg
RXZhc19FdmVudF9Nb3VzZV9Nb3ZlKiBldmVudCwgY29uc3QgRXZhc19Qb2ludCogcG9zaXRpb24p
Cit7CisgICAgcmV0dXJuIFdlYk1vdXNlRXZlbnQoV2ViRXZlbnQ6Ok1vdXNlTW92ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBidXR0b25Gb3JFdmVudChldmVudC0+YnV0dG9ucyksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgSW50UG9pbnQoZXZlbnQtPmN1ci5jYW52YXMueCAtIHBvc2l0
aW9uLT54LCBldmVudC0+Y3VyLmNhbnZhcy55IC0gcG9zaXRpb24tPnkpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIEludFBvaW50KGV2ZW50LT5jdXIuY2FudmFzLngsIGV2ZW50LT5jdXIuY2Fu
dmFzLnkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIDAgLyogZGVsdGFYICovLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIDAgLyogZGVsdGFZICovLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIDAgLyogZGVsdGFaICovLAorICAgICAgICAgICAgICAgICAgICAgICAgIDAgLyogY2xpY2tD
b3VudCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnNGb3JFdmVudChldmVu
dC0+bW9kaWZpZXJzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC0+dGltZXN0YW1w
KTsKK30KKworV2ViV2hlZWxFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYldoZWVsRXZl
bnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogZXZlbnQsIGNvbnN0IEV2YXNfUG9pbnQq
IHBvc2l0aW9uKQoreworICAgIGZsb2F0IGRlbHRhWCA9IDA7CisgICAgZmxvYXQgZGVsdGFZID0g
MDsKKyAgICBmbG9hdCB3aGVlbFRpY2tzWCA9IDA7CisgICAgZmxvYXQgd2hlZWxUaWNrc1kgPSAw
OworCisgICAgLy8gQSBuZWdhdGl2ZSB6IHZhbHVlIG1lYW5zIChpbiBFRkwpIHRoYXQgd2UgYXJl
IHNjcm9sbGluZyBkb3duLCBzbyB3ZSBuZWVkCisgICAgLy8gdG8gaW52ZXJ0IHRoZSB2YWx1ZS4K
KyAgICBpZiAoZXZlbnQtPmRpcmVjdGlvbiA9PSBWZXJ0aWNhbFNjcm9sbERpcmVjdGlvbikgewor
ICAgICAgICBkZWx0YVggPSAwOworICAgICAgICBkZWx0YVkgPSAtIGV2ZW50LT56OworICAgIH0g
ZWxzZSBpZiAoZXZlbnQtPmRpcmVjdGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xsRGlyZWN0aW9uKSB7
CisgICAgICAgIGRlbHRhWCA9IC0gZXZlbnQtPno7CisgICAgICAgIGRlbHRhWSA9IDA7CisgICAg
fQorCisgICAgd2hlZWxUaWNrc1ggPSBkZWx0YVg7CisgICAgd2hlZWxUaWNrc1kgPSBkZWx0YVk7
CisgICAgZGVsdGFYICo9IHN0YXRpY19jYXN0PGZsb2F0PihTY3JvbGxiYXI6OnBpeGVsc1Blckxp
bmVTdGVwKCkpOworICAgIGRlbHRhWSAqPSBzdGF0aWNfY2FzdDxmbG9hdD4oU2Nyb2xsYmFyOjpw
aXhlbHNQZXJMaW5lU3RlcCgpKTsKKworICAgIHJldHVybiBXZWJXaGVlbEV2ZW50KFdlYkV2ZW50
OjpXaGVlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChldmVudC0+Y2FudmFz
LnggLSBwb3NpdGlvbi0+eCwgZXZlbnQtPmNhbnZhcy55IC0gcG9zaXRpb24tPnkpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIEludFBvaW50KGV2ZW50LT5jYW52YXMueCwgZXZlbnQtPmNhbnZh
cy55KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdFNpemUoZGVsdGFYLCBkZWx0YVkp
LAorICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0U2l6ZSh3aGVlbFRpY2tzWCwgd2hlZWxU
aWNrc1kpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFdlYldoZWVsRXZlbnQ6OlNjcm9sbEJ5
UGl4ZWxXaGVlbEV2ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyc0ZvckV2
ZW50KGV2ZW50LT5tb2RpZmllcnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LT50
aW1lc3RhbXApOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmZDIxMTAyOGY1OTAwNGJh
OWYzODA4YTdhMDI4NzMwMTRhZjJmOGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYkV2ZW50RmFjdG9yeV9oCisjZGVmaW5lIFdlYkV2ZW50RmFjdG9yeV9oCisKKyNpbmNsdWRl
ICJXZWJFdmVudC5oIgorI2luY2x1ZGUgPEV2YXMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYkV2ZW50RmFjdG9yeSB7CitwdWJsaWM6CisgICAgc3RhdGljIFdlYk1vdXNlRXZl
bnQgY3JlYXRlV2ViTW91c2VFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24qLCBjb25z
dCBFdmFzX1BvaW50Kik7CisgICAgc3RhdGljIFdlYk1vdXNlRXZlbnQgY3JlYXRlV2ViTW91c2VF
dmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNlX1VwKiwgY29uc3QgRXZhc19Qb2ludCopOworICAg
IHN0YXRpYyBXZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgRXZhc19FdmVu
dF9Nb3VzZV9Nb3ZlKiwgY29uc3QgRXZhc19Qb2ludCopOworICAgIHN0YXRpYyBXZWJXaGVlbEV2
ZW50IGNyZWF0ZVdlYldoZWVsRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCosIGNv
bnN0IEV2YXNfUG9pbnQqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gV2ViRXZlbnRGYWN0b3J5X2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96376</attachid>
            <date>2011-06-07 21:50:04 -0700</date>
            <delta_ts>2011-06-10 04:39:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61993-20110608135003.patch</filename>
            <type>text/plain</type>
            <size>17177</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgyOTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlYTFiN2U0YjE3NTcwYjlk
MDRiMjJhZTNmNTNhY2Q2NTVjNjU3Njc5Li5jNGVmNTgxYmFkZWVmMGY1NTg3YzAxMjM4OGI4NGVj
YmQ1MDc2NGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDYtMDcgIEV1bm1p
IExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtFRkxdW1dLMl0gYWRkIFdlYktpdDIgRUZMIHBvcnQn
cyBOYXRpdmVXZWJNb3VzZUV2ZW50IGFuZCBOYXRpdmVXZWJXaGVlbEV2ZW50CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTk5MworCisgICAgICAgICog
U2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaDoKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2Vi
TW91c2VFdmVudDo6bmF0aXZlRXZlbnQpOgorICAgICAgICAqIFNoYXJlZC9OYXRpdmVXZWJXaGVl
bEV2ZW50Lmg6CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYldoZWVsRXZlbnQ6Om5hdGl2ZUV2
ZW50KToKKyAgICAgICAgKiBTaGFyZWQvZWZsL05hdGl2ZVdlYk1vdXNlRXZlbnRFZmwuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViTW91c2VFdmVudDo6TmF0aXZlV2ViTW91
c2VFdmVudCk6CisgICAgICAgICogU2hhcmVkL2VmbC9OYXRpdmVXZWJXaGVlbEV2ZW50RWZsLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYldoZWVsRXZlbnQ6Ok5hdGl2ZVdl
YldoZWVsRXZlbnQpOgorICAgICAgICAqIFNoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6Om1vZGlmaWVyc0ZvckV2ZW50KToKKyAgICAgICAgKFdl
YktpdDo6YnV0dG9uRm9yRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpjbGlja0NvdW50Rm9yRXZl
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZl
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYldoZWVsRXZl
bnQpOgorICAgICAgICAqIFNoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5Lmg6IEFkZGVkLgorCiAy
MDExLTA2LTA3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L05hdGl2ZVdlYk1vdXNlRXZlbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJN
b3VzZUV2ZW50LmgKaW5kZXggODRhZjFkNDVhZWQ2YjRiNmJiNDkwMTliZTkwOWFhMDRiZWIyNDg4
OS4uN2E5ZjBhZjU2OWY4MWY5YmIyZGNmZjhiMTUxMmEzOTRlN2NmMDA5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oCkBAIC0zNiw2ICszNiw4IEBAIE9C
SkNfQ0xBU1MgTlNWaWV3OwogI2VsaWYgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgPEdPd25QdHJH
dGsuaD4KIHR5cGVkZWYgdW5pb24gX0dka0V2ZW50IEdka0V2ZW50OworI2VsaWYgUExBVEZPUk0o
RUZMKQorI2luY2x1ZGUgPEV2YXMuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTUxLDYgKzUzLDEwIEBAIHB1YmxpYzoKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICBOYXRpdmVX
ZWJNb3VzZUV2ZW50KGNvbnN0IE5hdGl2ZVdlYk1vdXNlRXZlbnQmKTsKICAgICBOYXRpdmVXZWJN
b3VzZUV2ZW50KEdka0V2ZW50KiwgaW50KTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICBOYXRp
dmVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biosIGNvbnN0IEV2YXNf
UG9pbnQqKTsKKyAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2Vf
VXAqLCBjb25zdCBFdmFzX1BvaW50Kik7CisgICAgTmF0aXZlV2ViTW91c2VFdmVudChjb25zdCBF
dmFzX0V2ZW50X01vdXNlX01vdmUqLCBjb25zdCBFdmFzX1BvaW50Kik7CiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKE1BQykKQEAgLTYxLDYgKzY3LDggQEAgcHVibGljOgogICAgIGNvbnN0IFFHcmFw
aGljc1NjZW5lTW91c2VFdmVudCogbmF0aXZlRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX25hdGl2
ZUV2ZW50OyB9CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgY29uc3QgR2RrRXZlbnQqIG5hdGl2
ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVFdmVudC5nZXQoKTsgfQorI2VsaWYgUExB
VEZPUk0oRUZMKQorICAgIGNvbnN0IHZvaWQqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4g
bV9uYXRpdmVFdmVudDsgfQogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC03Miw2ICs4MCw4IEBAIHBy
aXZhdGU6CiAgICAgUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50KiBtX25hdGl2ZUV2ZW50OwogI2Vs
aWYgUExBVEZPUk0oR1RLKQogICAgIEdPd25QdHI8R2RrRXZlbnQ+IG1fbmF0aXZlRXZlbnQ7Cisj
ZWxpZiBQTEFURk9STShFRkwpCisgICAgY29uc3Qgdm9pZCogbV9uYXRpdmVFdmVudDsKICNlbmRp
ZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYldoZWVs
RXZlbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJXaGVlbEV2ZW50LmgKaW5k
ZXggNTkzMDJkMDQzNzczNDhmNmNhOGExNzM0MDE0NWMwZjZmNjM2OTQ0MS4uNDQ4MTJmYmEzMzZi
OTFmYzNlNDdiNDFlNmE3ZWY5NGU3MDM1NDgyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL05hdGl2ZVdlYldoZWVsRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
TmF0aXZlV2ViV2hlZWxFdmVudC5oCkBAIC0zNiw2ICszNiw4IEBAIE9CSkNfQ0xBU1MgTlNWaWV3
OwogI2VsaWYgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgPEdPd25QdHJHdGsuaD4KIHR5cGVkZWYg
dW5pb24gX0dka0V2ZW50IEdka0V2ZW50OworI2VsaWYgUExBVEZPUk0oRUZMKQorI2luY2x1ZGUg
PEV2YXMuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTUxLDYgKzUzLDggQEAg
cHVibGljOgogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIE5hdGl2ZVdlYldoZWVsRXZlbnQoY29u
c3QgTmF0aXZlV2ViV2hlZWxFdmVudCYpOwogICAgIE5hdGl2ZVdlYldoZWVsRXZlbnQoR2RrRXZl
bnQqKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICBOYXRpdmVXZWJXaGVlbEV2ZW50KGNvbnN0
IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqLCBjb25zdCBFdmFzX1BvaW50Kik7CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKE1BQykKQEAgLTYxLDYgKzY1LDggQEAgcHVibGljOgogICAgIGNvbnN0IFFH
cmFwaGljc1NjZW5lV2hlZWxFdmVudCogbmF0aXZlRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX25h
dGl2ZUV2ZW50OyB9CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgY29uc3QgR2RrRXZlbnQqIG5h
dGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVFdmVudC5nZXQoKTsgfQorI2VsaWYg
UExBVEZPUk0oRUZMKQorICAgIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqIG5hdGl2ZUV2
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVFdmVudDsgfQogI2VuZGlmCiAKIHByaXZhdGU6
CkBAIC03Miw2ICs3OCw4IEBAIHByaXZhdGU6CiAgICAgUUdyYXBoaWNzU2NlbmVXaGVlbEV2ZW50
KiBtX25hdGl2ZUV2ZW50OwogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIEdPd25QdHI8R2RrRXZl
bnQ+IG1fbmF0aXZlRXZlbnQ7CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgY29uc3QgRXZhc19F
dmVudF9Nb3VzZV9XaGVlbCogbV9uYXRpdmVFdmVudDsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJNb3VzZUV2ZW50RWZsLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViTW91c2VFdmVudEVmbC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMmE0ZDYwMTRkYjk1ZWIzN2JlMTUwZTYwZTA3MzFhMmMwODA5ODBkYwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViTW91c2VFdmVu
dEVmbC5jcHAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBTYW1z
dW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJOYXRpdmVXZWJNb3VzZUV2ZW50LmgiCisKKyNpbmNsdWRlICJXZWJFdmVudEZhY3RvcnkuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK05hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1v
dXNlRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiBldmVudCwgY29uc3QgRXZhc19Q
b2ludCogcG9zaXRpb24pCisgICAgOiBXZWJNb3VzZUV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3Jl
YXRlV2ViTW91c2VFdmVudChldmVudCwgcG9zaXRpb24pKQorICAgICwgbV9uYXRpdmVFdmVudChl
dmVudCkKK3sKK30KKworTmF0aXZlV2ViTW91c2VFdmVudDo6TmF0aXZlV2ViTW91c2VFdmVudChj
b25zdCBFdmFzX0V2ZW50X01vdXNlX1VwKiBldmVudCwgY29uc3QgRXZhc19Qb2ludCogcG9zaXRp
b24pCisgICAgOiBXZWJNb3VzZUV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VF
dmVudChldmVudCwgcG9zaXRpb24pKQorICAgICwgbV9uYXRpdmVFdmVudChldmVudCkKK3sKK30K
KworTmF0aXZlV2ViTW91c2VFdmVudDo6TmF0aXZlV2ViTW91c2VFdmVudChjb25zdCBFdmFzX0V2
ZW50X01vdXNlX01vdmUqIGV2ZW50LCBjb25zdCBFdmFzX1BvaW50KiBwb3NpdGlvbikKKyAgICA6
IFdlYk1vdXNlRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGV2ZW50
LCBwb3NpdGlvbikpCisgICAgLCBtX25hdGl2ZUV2ZW50KGV2ZW50KQoreworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0
aXZlV2ViV2hlZWxFdmVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2
ZVdlYldoZWVsRXZlbnRFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2NWQ3ZDJiNTIzNjE2ZjczNjVmYzky
ZjYzNTdiODViMzM2M2QwNzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZWZsL05hdGl2ZVdlYldoZWVsRXZlbnRFZmwuY3BwCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgorCisjaW5j
bHVkZSAiV2ViRXZlbnRGYWN0b3J5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitOYXRpdmVX
ZWJXaGVlbEV2ZW50OjpOYXRpdmVXZWJXaGVlbEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2Vf
V2hlZWwqIGV2ZW50LCBjb25zdCBFdmFzX1BvaW50KiBwb3NpdGlvbikKKyAgICA6IFdlYldoZWVs
RXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJXaGVlbEV2ZW50KGV2ZW50LCBwb3NpdGlv
bikpCisgICAgLCBtX25hdGl2ZUV2ZW50KGV2ZW50KQoreworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0
b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45NmVlZmFmNmU1NmMyN2I4MmJkY2U4ZDMzYmQ0MmQ2NTZmMjgxYjg2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3Rvcnku
Y3BwCkBAIC0wLDAgKzEsMTUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcg
RWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldl
YkV2ZW50RmFjdG9yeS5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsYmFyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSB7CisgICAgVmVydGljYWxTY3JvbGxEaXJl
Y3Rpb24gPSAwLAorICAgIEhvcml6b250YWxTY3JvbGxEaXJlY3Rpb24gPSAxCit9OworCitzdGF0
aWMgaW5saW5lIFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzRm9yRXZlbnQoY29uc3QgRXZh
c19Nb2RpZmllciogbW9kaWZpZXJzKQoreworICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CisKKyAg
ICBpZiAoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KG1vZGlmaWVycywgIlNoaWZ0IikpCisgICAg
ICAgIHJlc3VsdCB8PSBXZWJFdmVudDo6U2hpZnRLZXk7CisgICAgaWYgKGV2YXNfa2V5X21vZGlm
aWVyX2lzX3NldChtb2RpZmllcnMsICJDb250cm9sIikpCisgICAgICAgIHJlc3VsdCB8PSBXZWJF
dmVudDo6Q29udHJvbEtleTsKKyAgICBpZiAoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KG1vZGlm
aWVycywgIkFsdCIpKQorICAgICAgICByZXN1bHQgfD0gV2ViRXZlbnQ6OkFsdEtleTsKKyAgICBp
ZiAoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KG1vZGlmaWVycywgIk1ldGEiKSkKKyAgICAgICAg
cmVzdWx0IHw9IFdlYkV2ZW50OjpNZXRhS2V5OworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdl
YkV2ZW50OjpNb2RpZmllcnM+KHJlc3VsdCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgV2ViTW91c2VF
dmVudDo6QnV0dG9uIGJ1dHRvbkZvckV2ZW50KGludCBidXR0b24pCit7CisgICAgaWYgKGJ1dHRv
biA9PSAxKQorICAgICAgICByZXR1cm4gV2ViTW91c2VFdmVudDo6TGVmdEJ1dHRvbjsKKyAgICBp
ZiAoYnV0dG9uID09IDIpCisgICAgICAgIHJldHVybiBXZWJNb3VzZUV2ZW50OjpNaWRkbGVCdXR0
b247CisgICAgaWYgKGJ1dHRvbiA9PSAzKQorICAgICAgICByZXR1cm4gV2ViTW91c2VFdmVudDo6
UmlnaHRCdXR0b247CisKKyAgICByZXR1cm4gV2ViTW91c2VFdmVudDo6Tm9CdXR0b247Cit9CisK
K3N0YXRpYyBpbmxpbmUgaW50IGNsaWNrQ291bnRGb3JFdmVudChjb25zdCBFdmFzX0J1dHRvbl9G
bGFncyBmbGFncykKK3sKKyAgICBpZiAoZmxhZ3MgJiBFVkFTX0JVVFRPTl9UUklQTEVfQ0xJQ0sp
CisgICAgICAgIHJldHVybiAzOworICAgIGlmIChmbGFncyAmIEVWQVNfQlVUVE9OX0RPVUJMRV9D
TElDSykKKyAgICAgICAgcmV0dXJuIDI7CisKKyAgICByZXR1cm4gMTsKK30KKworV2ViTW91c2VF
dmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgRXZhc19FdmVu
dF9Nb3VzZV9Eb3duKiBldmVudCwgY29uc3QgRXZhc19Qb2ludCogcG9zaXRpb24pCit7CisgICAg
cmV0dXJuIFdlYk1vdXNlRXZlbnQoV2ViRXZlbnQ6Ok1vdXNlRG93biwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBidXR0b25Gb3JFdmVudChldmVudC0+YnV0dG9uKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBJbnRQb2ludChldmVudC0+Y2FudmFzLnggLSBwb3NpdGlvbi0+eCwgZXZlbnQt
PmNhbnZhcy55IC0gcG9zaXRpb24tPnkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIEludFBv
aW50KGV2ZW50LT5jYW52YXMueCwgZXZlbnQtPmNhbnZhcy55KSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAwIC8qIGRlbHRhWCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAwIC8qIGRl
bHRhWSAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAwIC8qIGRlbHRhWiAqLywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBjbGlja0NvdW50Rm9yRXZlbnQoZXZlbnQtPmZsYWdzKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnNGb3JFdmVudChldmVudC0+bW9kaWZpZXJz
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC0+dGltZXN0YW1wKTsKK30KKworV2Vi
TW91c2VFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgRXZh
c19FdmVudF9Nb3VzZV9VcCogZXZlbnQsIGNvbnN0IEV2YXNfUG9pbnQqIHBvc2l0aW9uKQorewor
ICAgIHJldHVybiBXZWJNb3VzZUV2ZW50KFdlYkV2ZW50OjpNb3VzZVVwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIGJ1dHRvbkZvckV2ZW50KGV2ZW50LT5idXR0b24pLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIEludFBvaW50KGV2ZW50LT5jYW52YXMueCAtIHBvc2l0aW9uLT54LCBldmVu
dC0+Y2FudmFzLnkgLSBwb3NpdGlvbi0+eSksCisgICAgICAgICAgICAgICAgICAgICAgICAgSW50
UG9pbnQoZXZlbnQtPmNhbnZhcy54LCBldmVudC0+Y2FudmFzLnkpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIDAgLyogZGVsdGFYICovLAorICAgICAgICAgICAgICAgICAgICAgICAgIDAgLyog
ZGVsdGFZICovLAorICAgICAgICAgICAgICAgICAgICAgICAgIDAgLyogZGVsdGFaICovLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIGNsaWNrQ291bnRGb3JFdmVudChldmVudC0+ZmxhZ3MpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyc0ZvckV2ZW50KGV2ZW50LT5tb2RpZmll
cnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LT50aW1lc3RhbXApOworfQorCitX
ZWJNb3VzZUV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudChjb25zdCBF
dmFzX0V2ZW50X01vdXNlX01vdmUqIGV2ZW50LCBjb25zdCBFdmFzX1BvaW50KiBwb3NpdGlvbikK
K3sKKyAgICByZXR1cm4gV2ViTW91c2VFdmVudChXZWJFdmVudDo6TW91c2VNb3ZlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIGJ1dHRvbkZvckV2ZW50KGV2ZW50LT5idXR0b25zKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChldmVudC0+Y3VyLmNhbnZhcy54IC0gcG9zaXRp
b24tPngsIGV2ZW50LT5jdXIuY2FudmFzLnkgLSBwb3NpdGlvbi0+eSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgSW50UG9pbnQoZXZlbnQtPmN1ci5jYW52YXMueCwgZXZlbnQtPmN1ci5jYW52
YXMueSksCisgICAgICAgICAgICAgICAgICAgICAgICAgMCAvKiBkZWx0YVggKi8sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgMCAvKiBkZWx0YVkgKi8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgMCAvKiBkZWx0YVogKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgMCAvKiBjbGlja0Nv
dW50ICovLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyc0ZvckV2ZW50KGV2ZW50
LT5tb2RpZmllcnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LT50aW1lc3RhbXAp
OworfQorCitXZWJXaGVlbEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVu
dChjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiBldmVudCwgY29uc3QgRXZhc19Qb2ludCog
cG9zaXRpb24pCit7CisgICAgZmxvYXQgZGVsdGFYID0gMDsKKyAgICBmbG9hdCBkZWx0YVkgPSAw
OworICAgIGZsb2F0IHdoZWVsVGlja3NYID0gMDsKKyAgICBmbG9hdCB3aGVlbFRpY2tzWSA9IDA7
CisKKyAgICAvLyBBIG5lZ2F0aXZlIHogdmFsdWUgbWVhbnMgKGluIEVGTCkgdGhhdCB3ZSBhcmUg
c2Nyb2xsaW5nIGRvd24sIHNvIHdlIG5lZWQKKyAgICAvLyB0byBpbnZlcnQgdGhlIHZhbHVlLgor
ICAgIGlmIChldmVudC0+ZGlyZWN0aW9uID09IFZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9uKSB7Cisg
ICAgICAgIGRlbHRhWCA9IDA7CisgICAgICAgIGRlbHRhWSA9IC0gZXZlbnQtPno7CisgICAgfSBl
bHNlIGlmIChldmVudC0+ZGlyZWN0aW9uID09IEhvcml6b250YWxTY3JvbGxEaXJlY3Rpb24pIHsK
KyAgICAgICAgZGVsdGFYID0gLSBldmVudC0+ejsKKyAgICAgICAgZGVsdGFZID0gMDsKKyAgICB9
CisKKyAgICB3aGVlbFRpY2tzWCA9IGRlbHRhWDsKKyAgICB3aGVlbFRpY2tzWSA9IGRlbHRhWTsK
KyAgICBkZWx0YVggKj0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGlu
ZVN0ZXAoKSk7CisgICAgZGVsdGFZICo9IHN0YXRpY19jYXN0PGZsb2F0PihTY3JvbGxiYXI6OnBp
eGVsc1BlckxpbmVTdGVwKCkpOworCisgICAgcmV0dXJuIFdlYldoZWVsRXZlbnQoV2ViRXZlbnQ6
OldoZWVsLAorICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KGV2ZW50LT5jYW52YXMu
eCAtIHBvc2l0aW9uLT54LCBldmVudC0+Y2FudmFzLnkgLSBwb3NpdGlvbi0+eSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgSW50UG9pbnQoZXZlbnQtPmNhbnZhcy54LCBldmVudC0+Y2FudmFz
LnkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0U2l6ZShkZWx0YVgsIGRlbHRhWSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRTaXplKHdoZWVsVGlja3NYLCB3aGVlbFRp
Y2tzWSksCisgICAgICAgICAgICAgICAgICAgICAgICAgV2ViV2hlZWxFdmVudDo6U2Nyb2xsQnlQ
aXhlbFdoZWVsRXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzRm9yRXZl
bnQoZXZlbnQtPm1vZGlmaWVycyksCisgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQtPnRp
bWVzdGFtcCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ZkMjExMDI4ZjU5MDA0YmE5
ZjM4MDhhN2EwMjg3MzAxNGFmMmY4YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViRXZlbnRGYWN0b3J5X2gKKyNkZWZpbmUgV2ViRXZlbnRGYWN0b3J5X2gKKworI2luY2x1ZGUg
IldlYkV2ZW50LmgiCisjaW5jbHVkZSA8RXZhcy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgV2ViRXZlbnRGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgV2ViTW91c2VFdmVu
dCBjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biosIGNvbnN0
IEV2YXNfUG9pbnQqKTsKKyAgICBzdGF0aWMgV2ViTW91c2VFdmVudCBjcmVhdGVXZWJNb3VzZUV2
ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfVXAqLCBjb25zdCBFdmFzX1BvaW50Kik7CisgICAg
c3RhdGljIFdlYk1vdXNlRXZlbnQgY3JlYXRlV2ViTW91c2VFdmVudChjb25zdCBFdmFzX0V2ZW50
X01vdXNlX01vdmUqLCBjb25zdCBFdmFzX1BvaW50Kik7CisgICAgc3RhdGljIFdlYldoZWVsRXZl
bnQgY3JlYXRlV2ViV2hlZWxFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiwgY29u
c3QgRXZhc19Qb2ludCopOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBXZWJFdmVudEZhY3RvcnlfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96732</attachid>
            <date>2011-06-10 04:39:37 -0700</date>
            <delta_ts>2011-06-14 06:23:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61993-20110610203935.patch</filename>
            <type>text/plain</type>
            <size>22985</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODg1MjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjNWFjM2IxYTIxZGQ0YTNm
OGE0ZjNlYzc2YjQwYWQ3NzBmMzIwNDI2Li43Mjc3NmJiMTcyYjY3MzEwNDM2NGY1OGIyMjdhZjM0
YTY1MzZmYzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTEtMDYtMTAgIEV1bm1p
IExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtFRkxdW1dLMl0gYWRkIFdlYktpdDIgRUZMIHBvcnQn
cyBOYXRpdmVXZWJNb3VzZUV2ZW50LCBOYXRpdmVXZWJXaGVlbEV2ZW50IGFuZCBOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02MTk5MworCisgICAgICAgICogU2hhcmVkL05hdGl2ZVdlYktleWJvYXJkRXZlbnQuaDoK
KyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6bmF0aXZlRXZlbnQpOgor
ICAgICAgICAqIFNoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50Lmg6CisgICAgICAgIChXZWJLaXQ6
Ok5hdGl2ZVdlYk1vdXNlRXZlbnQ6Om5hdGl2ZUV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvTmF0
aXZlV2ViV2hlZWxFdmVudC5oOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJXaGVlbEV2ZW50
OjpuYXRpdmVFdmVudCk6CisgICAgICAgICogU2hhcmVkL2VmbC9OYXRpdmVXZWJLZXlib2FyZEV2
ZW50RWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZl
bnQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQpOgorICAgICAgICAqIFNoYXJlZC9lZmwvTmF0aXZl
V2ViTW91c2VFdmVudEVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJN
b3VzZUV2ZW50OjpOYXRpdmVXZWJNb3VzZUV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvZWZsL05h
dGl2ZVdlYldoZWVsRXZlbnRFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TmF0aXZl
V2ViV2hlZWxFdmVudDo6TmF0aXZlV2ViV2hlZWxFdmVudCk6CisgICAgICAgICogU2hhcmVkL2Vm
bC9XZWJFdmVudEZhY3RvcnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6bW9kaWZpZXJz
Rm9yRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpidXR0b25Gb3JFdmVudCk6CisgICAgICAgIChX
ZWJLaXQ6OmNsaWNrQ291bnRGb3JFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50RmFj
dG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50RmFj
dG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50RmFj
dG9yeTo6Y3JlYXRlV2ViS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogU2hhcmVkL2VmbC9XZWJF
dmVudEZhY3RvcnkuaDogQWRkZWQuCisKIDIwMTEtMDYtMDkgIEFuZHJlYXMgS2xpbmcgIDxrbGlu
Z0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgKaW5kZXggZDg4NDU1
Y2FkMzg3MTY1ZjBiYWYyYTBlOTAwM2I5ODVhYjJjZWY1Mi4uNmY2NjU2ZGVhZDRhODVhYzQ5Y2Yw
NGI2ODdmN2Y1N2VjZmViMzY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05h
dGl2ZVdlYktleWJvYXJkRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudC5oCkBAIC0zOCw2ICszOCw4IEBAIE9CSkNfQ0xBU1MgTlNWaWV3Owog
I2VsaWYgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgPEdPd25QdHJHdGsuaD4KIHR5cGVkZWYgdW5p
b24gX0dka0V2ZW50IEdka0V2ZW50OworI2VsaWYgUExBVEZPUk0oRUZMKQorI2luY2x1ZGUgPEV2
YXMuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTUzLDYgKzU1LDkgQEAgcHVi
bGljOgogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoY29u
c3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQo
R2RrRXZlbnQqKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICBOYXRpdmVXZWJLZXlib2FyZEV2
ZW50KGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24qKTsKKyAgICBOYXRpdmVXZWJLZXlib2FyZEV2
ZW50KGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwKik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1B
QykKQEAgLTYzLDYgKzY4LDggQEAgcHVibGljOgogICAgIGNvbnN0IFFLZXlFdmVudCogbmF0aXZl
RXZlbnQoKSBjb25zdCB7IHJldHVybiAmbV9uYXRpdmVFdmVudDsgfQogI2VsaWYgUExBVEZPUk0o
R1RLKQogICAgIGNvbnN0IEdka0V2ZW50KiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
bmF0aXZlRXZlbnQuZ2V0KCk7IH0KKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICBjb25zdCB2b2lk
KiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlRXZlbnQ7IH0KICNlbmRpZgog
CiBwcml2YXRlOgpAQCAtNzQsNiArODEsOCBAQCBwcml2YXRlOgogICAgIFFLZXlFdmVudCBtX25h
dGl2ZUV2ZW50OwogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIEdPd25QdHI8R2RrRXZlbnQ+IG1f
bmF0aXZlRXZlbnQ7CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgY29uc3Qgdm9pZCogbV9uYXRp
dmVFdmVudDsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L05hdGl2ZVdlYk1vdXNlRXZlbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJN
b3VzZUV2ZW50LmgKaW5kZXggODRhZjFkNDVhZWQ2YjRiNmJiNDkwMTliZTkwOWFhMDRiZWIyNDg4
OS4uN2E5ZjBhZjU2OWY4MWY5YmIyZGNmZjhiMTUxMmEzOTRlN2NmMDA5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oCkBAIC0zNiw2ICszNiw4IEBAIE9C
SkNfQ0xBU1MgTlNWaWV3OwogI2VsaWYgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgPEdPd25QdHJH
dGsuaD4KIHR5cGVkZWYgdW5pb24gX0dka0V2ZW50IEdka0V2ZW50OworI2VsaWYgUExBVEZPUk0o
RUZMKQorI2luY2x1ZGUgPEV2YXMuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTUxLDYgKzUzLDEwIEBAIHB1YmxpYzoKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICBOYXRpdmVX
ZWJNb3VzZUV2ZW50KGNvbnN0IE5hdGl2ZVdlYk1vdXNlRXZlbnQmKTsKICAgICBOYXRpdmVXZWJN
b3VzZUV2ZW50KEdka0V2ZW50KiwgaW50KTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICBOYXRp
dmVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biosIGNvbnN0IEV2YXNf
UG9pbnQqKTsKKyAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2Vf
VXAqLCBjb25zdCBFdmFzX1BvaW50Kik7CisgICAgTmF0aXZlV2ViTW91c2VFdmVudChjb25zdCBF
dmFzX0V2ZW50X01vdXNlX01vdmUqLCBjb25zdCBFdmFzX1BvaW50Kik7CiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKE1BQykKQEAgLTYxLDYgKzY3LDggQEAgcHVibGljOgogICAgIGNvbnN0IFFHcmFw
aGljc1NjZW5lTW91c2VFdmVudCogbmF0aXZlRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX25hdGl2
ZUV2ZW50OyB9CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgY29uc3QgR2RrRXZlbnQqIG5hdGl2
ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVFdmVudC5nZXQoKTsgfQorI2VsaWYgUExB
VEZPUk0oRUZMKQorICAgIGNvbnN0IHZvaWQqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4g
bV9uYXRpdmVFdmVudDsgfQogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC03Miw2ICs4MCw4IEBAIHBy
aXZhdGU6CiAgICAgUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50KiBtX25hdGl2ZUV2ZW50OwogI2Vs
aWYgUExBVEZPUk0oR1RLKQogICAgIEdPd25QdHI8R2RrRXZlbnQ+IG1fbmF0aXZlRXZlbnQ7Cisj
ZWxpZiBQTEFURk9STShFRkwpCisgICAgY29uc3Qgdm9pZCogbV9uYXRpdmVFdmVudDsKICNlbmRp
ZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYldoZWVs
RXZlbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJXaGVlbEV2ZW50LmgKaW5k
ZXggNTkzMDJkMDQzNzczNDhmNmNhOGExNzM0MDE0NWMwZjZmNjM2OTQ0MS4uNDQ4MTJmYmEzMzZi
OTFmYzNlNDdiNDFlNmE3ZWY5NGU3MDM1NDgyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL05hdGl2ZVdlYldoZWVsRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
TmF0aXZlV2ViV2hlZWxFdmVudC5oCkBAIC0zNiw2ICszNiw4IEBAIE9CSkNfQ0xBU1MgTlNWaWV3
OwogI2VsaWYgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgPEdPd25QdHJHdGsuaD4KIHR5cGVkZWYg
dW5pb24gX0dka0V2ZW50IEdka0V2ZW50OworI2VsaWYgUExBVEZPUk0oRUZMKQorI2luY2x1ZGUg
PEV2YXMuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTUxLDYgKzUzLDggQEAg
cHVibGljOgogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIE5hdGl2ZVdlYldoZWVsRXZlbnQoY29u
c3QgTmF0aXZlV2ViV2hlZWxFdmVudCYpOwogICAgIE5hdGl2ZVdlYldoZWVsRXZlbnQoR2RrRXZl
bnQqKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICBOYXRpdmVXZWJXaGVlbEV2ZW50KGNvbnN0
IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqLCBjb25zdCBFdmFzX1BvaW50Kik7CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKE1BQykKQEAgLTYxLDYgKzY1LDggQEAgcHVibGljOgogICAgIGNvbnN0IFFH
cmFwaGljc1NjZW5lV2hlZWxFdmVudCogbmF0aXZlRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX25h
dGl2ZUV2ZW50OyB9CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgY29uc3QgR2RrRXZlbnQqIG5h
dGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVFdmVudC5nZXQoKTsgfQorI2VsaWYg
UExBVEZPUk0oRUZMKQorICAgIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqIG5hdGl2ZUV2
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVFdmVudDsgfQogI2VuZGlmCiAKIHByaXZhdGU6
CkBAIC03Miw2ICs3OCw4IEBAIHByaXZhdGU6CiAgICAgUUdyYXBoaWNzU2NlbmVXaGVlbEV2ZW50
KiBtX25hdGl2ZUV2ZW50OwogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIEdPd25QdHI8R2RrRXZl
bnQ+IG1fbmF0aXZlRXZlbnQ7CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgY29uc3QgRXZhc19F
dmVudF9Nb3VzZV9XaGVlbCogbV9uYXRpdmVFdmVudDsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50RWZsLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudEVmbC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMWVmMDJiYTk5Y2VmMWFhZDc4ODJmZWM3NDkxMTU5NGU0OWJhOGY3Ygot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudEVmbC5jcHAKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCisKKyNpbmNsdWRlICJXZWJFdmVu
dEZhY3RvcnkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK05hdGl2ZVdlYktleWJvYXJkRXZl
bnQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgRXZhc19FdmVudF9LZXlfRG93biogZXZl
bnQpCisgICAgOiBXZWJLZXlib2FyZEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViS2V5
Ym9hcmRFdmVudChldmVudCkpCisgICAgLCBtX25hdGl2ZUV2ZW50KGV2ZW50KQoreworfQorCitO
YXRpdmVXZWJLZXlib2FyZEV2ZW50OjpOYXRpdmVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IEV2YXNf
RXZlbnRfS2V5X1VwKiBldmVudCkKKyAgICA6IFdlYktleWJvYXJkRXZlbnQoV2ViRXZlbnRGYWN0
b3J5OjpjcmVhdGVXZWJLZXlib2FyZEV2ZW50KGV2ZW50KSkKKyAgICAsIG1fbmF0aXZlRXZlbnQo
ZXZlbnQpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJNb3VzZUV2ZW50RWZsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViTW91c2VFdmVudEVmbC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmE0ZDYwMTRkYjk1ZWIzN2JlMTUwZTYwZTA3MzFhMmMwODA5ODBkYwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViTW91c2VFdmVudEVmbC5jcHAK
QEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0
cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOYXRpdmVX
ZWJNb3VzZUV2ZW50LmgiCisKKyNpbmNsdWRlICJXZWJFdmVudEZhY3RvcnkuaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK05hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQo
Y29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiBldmVudCwgY29uc3QgRXZhc19Qb2ludCogcG9z
aXRpb24pCisgICAgOiBXZWJNb3VzZUV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91
c2VFdmVudChldmVudCwgcG9zaXRpb24pKQorICAgICwgbV9uYXRpdmVFdmVudChldmVudCkKK3sK
K30KKworTmF0aXZlV2ViTW91c2VFdmVudDo6TmF0aXZlV2ViTW91c2VFdmVudChjb25zdCBFdmFz
X0V2ZW50X01vdXNlX1VwKiBldmVudCwgY29uc3QgRXZhc19Qb2ludCogcG9zaXRpb24pCisgICAg
OiBXZWJNb3VzZUV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudChldmVu
dCwgcG9zaXRpb24pKQorICAgICwgbV9uYXRpdmVFdmVudChldmVudCkKK3sKK30KKworTmF0aXZl
V2ViTW91c2VFdmVudDo6TmF0aXZlV2ViTW91c2VFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNl
X01vdmUqIGV2ZW50LCBjb25zdCBFdmFzX1BvaW50KiBwb3NpdGlvbikKKyAgICA6IFdlYk1vdXNl
RXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGV2ZW50LCBwb3NpdGlv
bikpCisgICAgLCBtX25hdGl2ZUV2ZW50KGV2ZW50KQoreworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViV2hl
ZWxFdmVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYldoZWVs
RXZlbnRFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2NWQ3ZDJiNTIzNjE2ZjczNjVmYzkyZjYzNTdiODVi
MzM2M2QwNzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05h
dGl2ZVdlYldoZWVsRXZlbnRFZmwuY3BwCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgorCisjaW5jbHVkZSAiV2Vi
RXZlbnRGYWN0b3J5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitOYXRpdmVXZWJXaGVlbEV2
ZW50OjpOYXRpdmVXZWJXaGVlbEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqIGV2
ZW50LCBjb25zdCBFdmFzX1BvaW50KiBwb3NpdGlvbikKKyAgICA6IFdlYldoZWVsRXZlbnQoV2Vi
RXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJXaGVlbEV2ZW50KGV2ZW50LCBwb3NpdGlvbikpCisgICAg
LCBtX25hdGl2ZUV2ZW50KGV2ZW50KQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iZTYxMzI5MjRmY2QwM2I0MmRjZTg4ZmFlMmMyYzgwYTEzYzg4OWU4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuY3BwCkBAIC0w
LDAgKzEsMTg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25p
Y3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkV2ZW50RmFj
dG9yeS5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3Jv
bGxiYXIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitlbnVtIHsKKyAgICBWZXJ0aWNhbFNjcm9sbERpcmVjdGlvbiA9IDAsCisgICAgSG9yaXpv
bnRhbFNjcm9sbERpcmVjdGlvbiA9IDEKK307CisKK3N0YXRpYyBpbmxpbmUgV2ViRXZlbnQ6Ok1v
ZGlmaWVycyBtb2RpZmllcnNGb3JFdmVudChjb25zdCBFdmFzX01vZGlmaWVyKiBtb2RpZmllcnMp
Cit7CisgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKworICAgIGlmIChldmFzX2tleV9tb2RpZmll
cl9pc19zZXQobW9kaWZpZXJzLCAiU2hpZnQiKSkKKyAgICAgICAgcmVzdWx0IHw9IFdlYkV2ZW50
OjpTaGlmdEtleTsKKyAgICBpZiAoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KG1vZGlmaWVycywg
IkNvbnRyb2wiKSkKKyAgICAgICAgcmVzdWx0IHw9IFdlYkV2ZW50OjpDb250cm9sS2V5OworICAg
IGlmIChldmFzX2tleV9tb2RpZmllcl9pc19zZXQobW9kaWZpZXJzLCAiQWx0IikpCisgICAgICAg
IHJlc3VsdCB8PSBXZWJFdmVudDo6QWx0S2V5OworICAgIGlmIChldmFzX2tleV9tb2RpZmllcl9p
c19zZXQobW9kaWZpZXJzLCAiTWV0YSIpKQorICAgICAgICByZXN1bHQgfD0gV2ViRXZlbnQ6Ok1l
dGFLZXk7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViRXZlbnQ6Ok1vZGlmaWVycz4ocmVz
dWx0KTsKK30KKworc3RhdGljIGlubGluZSBXZWJNb3VzZUV2ZW50OjpCdXR0b24gYnV0dG9uRm9y
RXZlbnQoaW50IGJ1dHRvbikKK3sKKyAgICBpZiAoYnV0dG9uID09IDEpCisgICAgICAgIHJldHVy
biBXZWJNb3VzZUV2ZW50OjpMZWZ0QnV0dG9uOworICAgIGlmIChidXR0b24gPT0gMikKKyAgICAg
ICAgcmV0dXJuIFdlYk1vdXNlRXZlbnQ6Ok1pZGRsZUJ1dHRvbjsKKyAgICBpZiAoYnV0dG9uID09
IDMpCisgICAgICAgIHJldHVybiBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbjsKKworICAgIHJl
dHVybiBXZWJNb3VzZUV2ZW50OjpOb0J1dHRvbjsKK30KKworc3RhdGljIGlubGluZSBpbnQgY2xp
Y2tDb3VudEZvckV2ZW50KGNvbnN0IEV2YXNfQnV0dG9uX0ZsYWdzIGZsYWdzKQoreworICAgIGlm
IChmbGFncyAmIEVWQVNfQlVUVE9OX1RSSVBMRV9DTElDSykKKyAgICAgICAgcmV0dXJuIDM7Cisg
ICAgaWYgKGZsYWdzICYgRVZBU19CVVRUT05fRE9VQkxFX0NMSUNLKQorICAgICAgICByZXR1cm4g
MjsKKworICAgIHJldHVybiAxOworfQorCitXZWJNb3VzZUV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6
Y3JlYXRlV2ViTW91c2VFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2ZW50LCBj
b25zdCBFdmFzX1BvaW50KiBwb3NpdGlvbikKK3sKKyAgICByZXR1cm4gV2ViTW91c2VFdmVudChX
ZWJFdmVudDo6TW91c2VEb3duLAorICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbkZvckV2
ZW50KGV2ZW50LT5idXR0b24pLAorICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KGV2
ZW50LT5jYW52YXMueCAtIHBvc2l0aW9uLT54LCBldmVudC0+Y2FudmFzLnkgLSBwb3NpdGlvbi0+
eSksCisgICAgICAgICAgICAgICAgICAgICAgICAgSW50UG9pbnQoZXZlbnQtPmNhbnZhcy54LCBl
dmVudC0+Y2FudmFzLnkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIDAgLyogZGVsdGFYICov
LAorICAgICAgICAgICAgICAgICAgICAgICAgIDAgLyogZGVsdGFZICovLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIDAgLyogZGVsdGFaICovLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNs
aWNrQ291bnRGb3JFdmVudChldmVudC0+ZmxhZ3MpLAorICAgICAgICAgICAgICAgICAgICAgICAg
IG1vZGlmaWVyc0ZvckV2ZW50KGV2ZW50LT5tb2RpZmllcnMpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIGV2ZW50LT50aW1lc3RhbXApOworfQorCitXZWJNb3VzZUV2ZW50IFdlYkV2ZW50RmFj
dG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNlX1VwKiBldmVu
dCwgY29uc3QgRXZhc19Qb2ludCogcG9zaXRpb24pCit7CisgICAgcmV0dXJuIFdlYk1vdXNlRXZl
bnQoV2ViRXZlbnQ6Ok1vdXNlVXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uRm9y
RXZlbnQoZXZlbnQtPmJ1dHRvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgSW50UG9pbnQo
ZXZlbnQtPmNhbnZhcy54IC0gcG9zaXRpb24tPngsIGV2ZW50LT5jYW52YXMueSAtIHBvc2l0aW9u
LT55KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChldmVudC0+Y2FudmFzLngs
IGV2ZW50LT5jYW52YXMueSksCisgICAgICAgICAgICAgICAgICAgICAgICAgMCAvKiBkZWx0YVgg
Ki8sCisgICAgICAgICAgICAgICAgICAgICAgICAgMCAvKiBkZWx0YVkgKi8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgMCAvKiBkZWx0YVogKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAg
Y2xpY2tDb3VudEZvckV2ZW50KGV2ZW50LT5mbGFncyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgbW9kaWZpZXJzRm9yRXZlbnQoZXZlbnQtPm1vZGlmaWVycyksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgZXZlbnQtPnRpbWVzdGFtcCk7Cit9CisKK1dlYk1vdXNlRXZlbnQgV2ViRXZlbnRG
YWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZSog
ZXZlbnQsIGNvbnN0IEV2YXNfUG9pbnQqIHBvc2l0aW9uKQoreworICAgIHJldHVybiBXZWJNb3Vz
ZUV2ZW50KFdlYkV2ZW50OjpNb3VzZU1vdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgYnV0
dG9uRm9yRXZlbnQoZXZlbnQtPmJ1dHRvbnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIElu
dFBvaW50KGV2ZW50LT5jdXIuY2FudmFzLnggLSBwb3NpdGlvbi0+eCwgZXZlbnQtPmN1ci5jYW52
YXMueSAtIHBvc2l0aW9uLT55KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChl
dmVudC0+Y3VyLmNhbnZhcy54LCBldmVudC0+Y3VyLmNhbnZhcy55KSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAwIC8qIGRlbHRhWCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAwIC8q
IGRlbHRhWSAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAwIC8qIGRlbHRhWiAqLywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAwIC8qIGNsaWNrQ291bnQgKi8sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgbW9kaWZpZXJzRm9yRXZlbnQoZXZlbnQtPm1vZGlmaWVycyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgZXZlbnQtPnRpbWVzdGFtcCk7Cit9CisKK1dlYldoZWVsRXZlbnQg
V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJXaGVlbEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91
c2VfV2hlZWwqIGV2ZW50LCBjb25zdCBFdmFzX1BvaW50KiBwb3NpdGlvbikKK3sKKyAgICBmbG9h
dCBkZWx0YVggPSAwOworICAgIGZsb2F0IGRlbHRhWSA9IDA7CisgICAgZmxvYXQgd2hlZWxUaWNr
c1ggPSAwOworICAgIGZsb2F0IHdoZWVsVGlja3NZID0gMDsKKworICAgIC8vIEEgbmVnYXRpdmUg
eiB2YWx1ZSBtZWFucyAoaW4gRUZMKSB0aGF0IHdlIGFyZSBzY3JvbGxpbmcgZG93biwgc28gd2Ug
bmVlZAorICAgIC8vIHRvIGludmVydCB0aGUgdmFsdWUuCisgICAgaWYgKGV2ZW50LT5kaXJlY3Rp
b24gPT0gVmVydGljYWxTY3JvbGxEaXJlY3Rpb24pIHsKKyAgICAgICAgZGVsdGFYID0gMDsKKyAg
ICAgICAgZGVsdGFZID0gLSBldmVudC0+ejsKKyAgICB9IGVsc2UgaWYgKGV2ZW50LT5kaXJlY3Rp
b24gPT0gSG9yaXpvbnRhbFNjcm9sbERpcmVjdGlvbikgeworICAgICAgICBkZWx0YVggPSAtIGV2
ZW50LT56OworICAgICAgICBkZWx0YVkgPSAwOworICAgIH0KKworICAgIHdoZWVsVGlja3NYID0g
ZGVsdGFYOworICAgIHdoZWVsVGlja3NZID0gZGVsdGFZOworICAgIGRlbHRhWCAqPSBzdGF0aWNf
Y2FzdDxmbG9hdD4oU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpKTsKKyAgICBkZWx0YVkg
Kj0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7CisK
KyAgICByZXR1cm4gV2ViV2hlZWxFdmVudChXZWJFdmVudDo6V2hlZWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgSW50UG9pbnQoZXZlbnQtPmNhbnZhcy54IC0gcG9zaXRpb24tPngsIGV2ZW50
LT5jYW52YXMueSAtIHBvc2l0aW9uLT55KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQ
b2ludChldmVudC0+Y2FudmFzLngsIGV2ZW50LT5jYW52YXMueSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgRmxvYXRTaXplKGRlbHRhWCwgZGVsdGFZKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBGbG9hdFNpemUod2hlZWxUaWNrc1gsIHdoZWVsVGlja3NZKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJXaGVlbEV2ZW50OjpTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnNGb3JFdmVudChldmVudC0+bW9kaWZpZXJzKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC0+dGltZXN0YW1wKTsKK30KKworV2ViS2V5
Ym9hcmRFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoY29uc3Qg
RXZhc19FdmVudF9LZXlfRG93biogZXZlbnQpCit7CisgICAgU3RyaW5nIGtleU5hbWUgPSBTdHJp
bmcoZXZlbnQtPmtleSk7CisgICAgcmV0dXJuIFdlYktleWJvYXJkRXZlbnQoV2ViRXZlbnQ6Oktl
eURvd24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nOjpmcm9tVVRGOChldmVu
dC0+c3RyaW5nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmc6OmZyb21VVEY4
KGV2ZW50LT5zdHJpbmcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBsYXRmb3JtS2V5
Ym9hcmRFdmVudDo6a2V5SWRlbnRpZmllckZvckV2YXNLZXlOYW1lKGtleU5hbWUpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6d2luZG93c0tleUNv
ZGVGb3JFdmFzS2V5TmFtZShrZXlOYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
IC8qIEZJWE1FOiBuYXRpdmVWaXJ0dWFsS2V5Q29kZSAqLywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwIC8qIG1hY0NoYXJDb2RlICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZhbHNlIC8qIEZJWE1FOiBpc0F1dG9SZXBlYXQgKi8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmFsc2UgLyogRklYTUU6IGlzS2V5cGFkICovLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZhbHNlIC8qIGlzU3lzdGVtS2V5ICovLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1vZGlmaWVyc0ZvckV2ZW50KGV2ZW50LT5tb2RpZmllcnMpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV2ZW50LT50aW1lc3RhbXApOworfQorCitXZWJLZXlib2FyZEV2ZW50IFdl
YkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tl
eV9VcCogZXZlbnQpCit7CisgICAgU3RyaW5nIGtleU5hbWUgPSBTdHJpbmcoZXZlbnQtPmtleSk7
CisgICAgcmV0dXJuIFdlYktleWJvYXJkRXZlbnQoV2ViRXZlbnQ6OktleVVwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFN0cmluZzo6ZnJvbVVURjgoZXZlbnQtPnN0cmluZyksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nOjpmcm9tVVRGOChldmVudC0+c3RyaW5nKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlk
ZW50aWZpZXJGb3JFdmFzS2V5TmFtZShrZXlOYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OndpbmRvd3NLZXlDb2RlRm9yRXZhc0tleU5hbWUo
a2V5TmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAvKiBGSVhNRTogbmF0aXZl
VmlydHVhbEtleUNvZGUgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAvKiBtYWND
aGFyQ29kZSAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSAvKiBGSVhNRTog
aXNBdXRvUmVwZWF0ICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlIC8qIEZJ
WE1FOiBpc0tleXBhZCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSAvKiBp
c1N5c3RlbUtleSAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnNGb3JF
dmVudChldmVudC0+bW9kaWZpZXJzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVu
dC0+dGltZXN0YW1wKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5oIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDdhM2NhZWRkNzhl
M2FkZTQ0NTcxM2RjYWE3OTAyYzFmMGQ0ODUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuaApAQCAtMCwwICsxLDQ2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJFdmVudEZhY3RvcnlfaAorI2RlZmluZSBXZWJFdmVudEZhY3RvcnlfaAorCisjaW5j
bHVkZSAiV2ViRXZlbnQuaCIKKyNpbmNsdWRlIDxFdmFzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBXZWJFdmVudEZhY3RvcnkgeworcHVibGljOgorICAgIHN0YXRpYyBXZWJNb3Vz
ZUV2ZW50IGNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiwg
Y29uc3QgRXZhc19Qb2ludCopOworICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1v
dXNlRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9VcCosIGNvbnN0IEV2YXNfUG9pbnQqKTsK
KyAgICBzdGF0aWMgV2ViTW91c2VFdmVudCBjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNf
RXZlbnRfTW91c2VfTW92ZSosIGNvbnN0IEV2YXNfUG9pbnQqKTsKKyAgICBzdGF0aWMgV2ViV2hl
ZWxFdmVudCBjcmVhdGVXZWJXaGVlbEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwq
LCBjb25zdCBFdmFzX1BvaW50Kik7CisgICAgc3RhdGljIFdlYktleWJvYXJkRXZlbnQgY3JlYXRl
V2ViS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duKik7CisgICAgc3RhdGlj
IFdlYktleWJvYXJkRXZlbnQgY3JlYXRlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50
X0tleV9VcCopOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJF
dmVudEZhY3RvcnlfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97105</attachid>
            <date>2011-06-14 06:23:19 -0700</date>
            <delta_ts>2011-06-14 18:50:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61993-20110614222320.patch</filename>
            <type>text/plain</type>
            <size>23195</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODg3OTIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlZjczZDBlZjVjZTk4ZmMx
YWU4ODQ2MTA1YjY2ZWZjNTk5MWVhMjUyLi5mZTY1MzE5OGZiYjA5YmFjNmRkNjhkNzcxMTI2NjE0
MTQxNTFjN2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDYtMTQgIEV1bm1p
IExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtFRkxdW1dLMl0gYWRkIFdlYktpdDIgRUZMIHBvcnQn
cyBOYXRpdmVXZWJNb3VzZUV2ZW50LCBOYXRpdmVXZWJXaGVlbEV2ZW50IGFuZCBOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02MTk5MworCisgICAgICAgIGFkZCBuYXRpdmUgbW91c2UgYW5kIGtleWJvYXJkIGV2ZW50
IGNsYXNzZXMgdG8gY29udmVydCBFRkwncyBldmVudHMgdG8gTmF0aXZlV2ViRXZlbnQuCisKKyAg
ICAgICAgKiBTaGFyZWQvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oOgorICAgICAgICAoV2ViS2l0
OjpOYXRpdmVXZWJLZXlib2FyZEV2ZW50OjpuYXRpdmVFdmVudCk6CisgICAgICAgICogU2hhcmVk
L05hdGl2ZVdlYk1vdXNlRXZlbnQuaDoKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViTW91c2VF
dmVudDo6bmF0aXZlRXZlbnQpOgorICAgICAgICAqIFNoYXJlZC9OYXRpdmVXZWJXaGVlbEV2ZW50
Lmg6CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYldoZWVsRXZlbnQ6Om5hdGl2ZUV2ZW50KToK
KyAgICAgICAgKiBTaGFyZWQvZWZsL05hdGl2ZVdlYktleWJvYXJkRXZlbnRFZmwuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6TmF0aXZlV2ViS2V5
Ym9hcmRFdmVudCk6CisgICAgICAgICogU2hhcmVkL2VmbC9OYXRpdmVXZWJNb3VzZUV2ZW50RWZs
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2
ZVdlYk1vdXNlRXZlbnQpOgorICAgICAgICAqIFNoYXJlZC9lZmwvTmF0aXZlV2ViV2hlZWxFdmVu
dEVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJXaGVlbEV2ZW50OjpO
YXRpdmVXZWJXaGVlbEV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9y
eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0Ojptb2RpZmllcnNGb3JFdmVudCk6CisgICAg
ICAgIChXZWJLaXQ6OmJ1dHRvbkZvckV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6Y2xpY2tDb3Vu
dEZvckV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJN
b3VzZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJX
aGVlbEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJL
ZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5oOiBB
ZGRlZC4KKwogMjAxMS0wNi0xMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL05hdGl2ZVdlYktleWJvYXJkRXZlbnQuaAppbmRleCBkODg0NTVjYWQzODcxNjVmMGJh
ZjJhMGU5MDAzYjk4NWFiMmNlZjUyLi42ZjY2NTZkZWFkNGE4NWFjNDljZjA0YjY4N2Y3ZjU3ZWNm
ZWIzNjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJLZXlib2FyZEV2
ZW50LmgKQEAgLTM4LDYgKzM4LDggQEAgT0JKQ19DTEFTUyBOU1ZpZXc7CiAjZWxpZiBQTEFURk9S
TShHVEspCiAjaW5jbHVkZSA8R093blB0ckd0ay5oPgogdHlwZWRlZiB1bmlvbiBfR2RrRXZlbnQg
R2RrRXZlbnQ7CisjZWxpZiBQTEFURk9STShFRkwpCisjaW5jbHVkZSA8RXZhcy5oPgogI2VuZGlm
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTMsNiArNTUsOSBAQCBwdWJsaWM6CiAjZWxpZiBQ
TEFURk9STShHVEspCiAgICAgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50Jik7CiAgICAgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChHZGtFdmVudCopOwor
I2VsaWYgUExBVEZPUk0oRUZMKQorICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgRXZh
c19FdmVudF9LZXlfRG93biopOworICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgRXZh
c19FdmVudF9LZXlfVXAqKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNjMsNiAr
NjgsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgUUtleUV2ZW50KiBuYXRpdmVFdmVudCgpIGNvbnN0
IHsgcmV0dXJuICZtX25hdGl2ZUV2ZW50OyB9CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgY29u
c3QgR2RrRXZlbnQqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVFdmVudC5n
ZXQoKTsgfQorI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIGNvbnN0IHZvaWQqIG5hdGl2ZUV2ZW50
KCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVFdmVudDsgfQogI2VuZGlmCiAKIHByaXZhdGU6CkBA
IC03NCw2ICs4MSw4IEBAIHByaXZhdGU6CiAgICAgUUtleUV2ZW50IG1fbmF0aXZlRXZlbnQ7CiAj
ZWxpZiBQTEFURk9STShHVEspCiAgICAgR093blB0cjxHZGtFdmVudD4gbV9uYXRpdmVFdmVudDsK
KyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICBjb25zdCB2b2lkKiBtX25hdGl2ZUV2ZW50OwogI2Vu
ZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViTW91
c2VFdmVudC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaApp
bmRleCA4NGFmMWQ0NWFlZDZiNGI2YmI0OTAxOWJlOTA5YWEwNGJlYjI0ODg5Li43YTlmMGFmNTY5
ZjgxZjliYjJkY2ZmOGIxNTEyYTM5NGU3Y2YwMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9OYXRpdmVXZWJNb3VzZUV2ZW50LmgKQEAgLTM2LDYgKzM2LDggQEAgT0JKQ19DTEFTUyBOU1Zp
ZXc7CiAjZWxpZiBQTEFURk9STShHVEspCiAjaW5jbHVkZSA8R093blB0ckd0ay5oPgogdHlwZWRl
ZiB1bmlvbiBfR2RrRXZlbnQgR2RrRXZlbnQ7CisjZWxpZiBQTEFURk9STShFRkwpCisjaW5jbHVk
ZSA8RXZhcy5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTEsNiArNTMsMTAg
QEAgcHVibGljOgogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQo
Y29uc3QgTmF0aXZlV2ViTW91c2VFdmVudCYpOwogICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoR2Rr
RXZlbnQqLCBpbnQpOworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIE5hdGl2ZVdlYk1vdXNlRXZl
bnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiwgY29uc3QgRXZhc19Qb2ludCopOworICAg
IE5hdGl2ZVdlYk1vdXNlRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9VcCosIGNvbnN0IEV2
YXNfUG9pbnQqKTsKKyAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91
c2VfTW92ZSosIGNvbnN0IEV2YXNfUG9pbnQqKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFD
KQpAQCAtNjEsNiArNjcsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgUUdyYXBoaWNzU2NlbmVNb3Vz
ZUV2ZW50KiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlRXZlbnQ7IH0KICNl
bGlmIFBMQVRGT1JNKEdUSykKICAgICBjb25zdCBHZGtFdmVudCogbmF0aXZlRXZlbnQoKSBjb25z
dCB7IHJldHVybiBtX25hdGl2ZUV2ZW50LmdldCgpOyB9CisjZWxpZiBQTEFURk9STShFRkwpCisg
ICAgY29uc3Qgdm9pZCogbmF0aXZlRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUV2ZW50
OyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTcyLDYgKzgwLDggQEAgcHJpdmF0ZToKICAgICBR
R3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQqIG1fbmF0aXZlRXZlbnQ7CiAjZWxpZiBQTEFURk9STShH
VEspCiAgICAgR093blB0cjxHZGtFdmVudD4gbV9uYXRpdmVFdmVudDsKKyNlbGlmIFBMQVRGT1JN
KEVGTCkKKyAgICBjb25zdCB2b2lkKiBtX25hdGl2ZUV2ZW50OwogI2VuZGlmCiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViV2hlZWxFdmVudC5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYldoZWVsRXZlbnQuaAppbmRleCA1OTMwMmQwNDM3
NzM0OGY2Y2E4YTE3MzQwMTQ1YzBmNmY2MzY5NDQxLi40NDgxMmZiYTMzNmI5MWZjM2U0N2I0MWU2
YTdlZjk0ZTcwMzU0ODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZl
V2ViV2hlZWxFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJXaGVl
bEV2ZW50LmgKQEAgLTM2LDYgKzM2LDggQEAgT0JKQ19DTEFTUyBOU1ZpZXc7CiAjZWxpZiBQTEFU
Rk9STShHVEspCiAjaW5jbHVkZSA8R093blB0ckd0ay5oPgogdHlwZWRlZiB1bmlvbiBfR2RrRXZl
bnQgR2RrRXZlbnQ7CisjZWxpZiBQTEFURk9STShFRkwpCisjaW5jbHVkZSA8RXZhcy5oPgogI2Vu
ZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTEsNiArNTMsOCBAQCBwdWJsaWM6CiAjZWxp
ZiBQTEFURk9STShHVEspCiAgICAgTmF0aXZlV2ViV2hlZWxFdmVudChjb25zdCBOYXRpdmVXZWJX
aGVlbEV2ZW50Jik7CiAgICAgTmF0aXZlV2ViV2hlZWxFdmVudChHZGtFdmVudCopOworI2VsaWYg
UExBVEZPUk0oRUZMKQorICAgIE5hdGl2ZVdlYldoZWVsRXZlbnQoY29uc3QgRXZhc19FdmVudF9N
b3VzZV9XaGVlbCosIGNvbnN0IEV2YXNfUG9pbnQqKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
TUFDKQpAQCAtNjEsNiArNjUsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgUUdyYXBoaWNzU2NlbmVX
aGVlbEV2ZW50KiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlRXZlbnQ7IH0K
ICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICBjb25zdCBHZGtFdmVudCogbmF0aXZlRXZlbnQoKSBj
b25zdCB7IHJldHVybiBtX25hdGl2ZUV2ZW50LmdldCgpOyB9CisjZWxpZiBQTEFURk9STShFRkwp
CisgICAgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogbmF0aXZlRXZlbnQoKSBjb25zdCB7
IHJldHVybiBtX25hdGl2ZUV2ZW50OyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTcyLDYgKzc4
LDggQEAgcHJpdmF0ZToKICAgICBRR3JhcGhpY3NTY2VuZVdoZWVsRXZlbnQqIG1fbmF0aXZlRXZl
bnQ7CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgR093blB0cjxHZGtFdmVudD4gbV9uYXRpdmVF
dmVudDsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1do
ZWVsKiBtX25hdGl2ZUV2ZW50OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYktleWJvYXJkRXZlbnRFZmwuY3BwIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50RWZsLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xZWYwMmJhOTljZWYxYWFkNzg4MmZlYzc0OTExNTk0ZTQ5YmE4ZjdiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50RWZs
LmNwcApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcg
RWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5h
dGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKKworI2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeS5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6TmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duKiBldmVudCkKKyAgICA6IFdl
YktleWJvYXJkRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJLZXlib2FyZEV2ZW50KGV2
ZW50KSkKKyAgICAsIG1fbmF0aXZlRXZlbnQoZXZlbnQpCit7Cit9CisKK05hdGl2ZVdlYktleWJv
YXJkRXZlbnQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgRXZhc19FdmVudF9LZXlfVXAq
IGV2ZW50KQorICAgIDogV2ViS2V5Ym9hcmRFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdl
YktleWJvYXJkRXZlbnQoZXZlbnQpKQorICAgICwgbV9uYXRpdmVFdmVudChldmVudCkKK3sKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZWZsL05hdGl2ZVdlYk1vdXNlRXZlbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L2VmbC9OYXRpdmVXZWJNb3VzZUV2ZW50RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTRkNjAxNGRiOTVl
YjM3YmUxNTBlNjBlMDczMWEyYzA4MDk4MGRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJNb3VzZUV2ZW50RWZsLmNwcApAQCAtMCwwICsxLDUx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5hdGl2ZVdlYk1vdXNlRXZlbnQu
aCIKKworI2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworTmF0aXZlV2ViTW91c2VFdmVudDo6TmF0aXZlV2ViTW91c2VFdmVudChjb25zdCBFdmFzX0V2
ZW50X01vdXNlX0Rvd24qIGV2ZW50LCBjb25zdCBFdmFzX1BvaW50KiBwb3NpdGlvbikKKyAgICA6
IFdlYk1vdXNlRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGV2ZW50
LCBwb3NpdGlvbikpCisgICAgLCBtX25hdGl2ZUV2ZW50KGV2ZW50KQoreworfQorCitOYXRpdmVX
ZWJNb3VzZUV2ZW50OjpOYXRpdmVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2Vf
VXAqIGV2ZW50LCBjb25zdCBFdmFzX1BvaW50KiBwb3NpdGlvbikKKyAgICA6IFdlYk1vdXNlRXZl
bnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGV2ZW50LCBwb3NpdGlvbikp
CisgICAgLCBtX25hdGl2ZUV2ZW50KGV2ZW50KQoreworfQorCitOYXRpdmVXZWJNb3VzZUV2ZW50
OjpOYXRpdmVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZSogZXZlbnQs
IGNvbnN0IEV2YXNfUG9pbnQqIHBvc2l0aW9uKQorICAgIDogV2ViTW91c2VFdmVudChXZWJFdmVu
dEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQoZXZlbnQsIHBvc2l0aW9uKSkKKyAgICAsIG1f
bmF0aXZlRXZlbnQoZXZlbnQpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJXaGVlbEV2ZW50RWZsLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViV2hlZWxFdmVudEVmbC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjY1ZDdkMmI1MjM2MTZmNzM2NWZjOTJmNjM1N2I4NWIzMzYzZDA3MgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViV2hlZWxF
dmVudEVmbC5jcHAKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBT
YW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJOYXRpdmVXZWJXaGVlbEV2ZW50LmgiCisKKyNpbmNsdWRlICJXZWJFdmVudEZhY3Rvcnku
aCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK05hdGl2ZVdlYldoZWVsRXZlbnQ6Ok5hdGl2ZVdl
YldoZWVsRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogZXZlbnQsIGNvbnN0IEV2
YXNfUG9pbnQqIHBvc2l0aW9uKQorICAgIDogV2ViV2hlZWxFdmVudChXZWJFdmVudEZhY3Rvcnk6
OmNyZWF0ZVdlYldoZWVsRXZlbnQoZXZlbnQsIHBvc2l0aW9uKSkKKyAgICAsIG1fbmF0aXZlRXZl
bnQoZXZlbnQpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlY2RhNzRhNmYx
ODRmYjMzOWYzMzBkNTljODU5MDRkOGE0ZTMyNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5jcHAKQEAgLTAsMCArMSwxOTQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViRXZlbnRGYWN0b3J5LmgiCisKKyNp
bmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0
Zm9ybUtleWJvYXJkRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGJhci5oPgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gewor
ICAgIFZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9uID0gMCwKKyAgICBIb3Jpem9udGFsU2Nyb2xsRGly
ZWN0aW9uID0gMQorfTsKKworZW51bSB7CisgICAgTGVmdEJ1dHRvbiA9IDEsCisgICAgTWlkZGxl
QnV0dG9uID0gMiwKKyAgICBSaWdodEJ1dHRvbiA9IDMKK307CisKK3N0YXRpYyBpbmxpbmUgV2Vi
RXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnNGb3JFdmVudChjb25zdCBFdmFzX01vZGlmaWVyKiBt
b2RpZmllcnMpCit7CisgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKworICAgIGlmIChldmFzX2tl
eV9tb2RpZmllcl9pc19zZXQobW9kaWZpZXJzLCAiU2hpZnQiKSkKKyAgICAgICAgcmVzdWx0IHw9
IFdlYkV2ZW50OjpTaGlmdEtleTsKKyAgICBpZiAoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KG1v
ZGlmaWVycywgIkNvbnRyb2wiKSkKKyAgICAgICAgcmVzdWx0IHw9IFdlYkV2ZW50OjpDb250cm9s
S2V5OworICAgIGlmIChldmFzX2tleV9tb2RpZmllcl9pc19zZXQobW9kaWZpZXJzLCAiQWx0Iikp
CisgICAgICAgIHJlc3VsdCB8PSBXZWJFdmVudDo6QWx0S2V5OworICAgIGlmIChldmFzX2tleV9t
b2RpZmllcl9pc19zZXQobW9kaWZpZXJzLCAiTWV0YSIpKQorICAgICAgICByZXN1bHQgfD0gV2Vi
RXZlbnQ6Ok1ldGFLZXk7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViRXZlbnQ6Ok1vZGlm
aWVycz4ocmVzdWx0KTsKK30KKworc3RhdGljIGlubGluZSBXZWJNb3VzZUV2ZW50OjpCdXR0b24g
YnV0dG9uRm9yRXZlbnQoaW50IGJ1dHRvbikKK3sKKyAgICBpZiAoYnV0dG9uID09IExlZnRCdXR0
b24pCisgICAgICAgIHJldHVybiBXZWJNb3VzZUV2ZW50OjpMZWZ0QnV0dG9uOworICAgIGlmIChi
dXR0b24gPT0gTWlkZGxlQnV0dG9uKQorICAgICAgICByZXR1cm4gV2ViTW91c2VFdmVudDo6TWlk
ZGxlQnV0dG9uOworICAgIGlmIChidXR0b24gPT0gUmlnaHRCdXR0b24pCisgICAgICAgIHJldHVy
biBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbjsKKworICAgIHJldHVybiBXZWJNb3VzZUV2ZW50
OjpOb0J1dHRvbjsKK30KKworc3RhdGljIGlubGluZSBpbnQgY2xpY2tDb3VudEZvckV2ZW50KGNv
bnN0IEV2YXNfQnV0dG9uX0ZsYWdzIGZsYWdzKQoreworICAgIGlmIChmbGFncyAmIEVWQVNfQlVU
VE9OX1RSSVBMRV9DTElDSykKKyAgICAgICAgcmV0dXJuIDM7CisgICAgaWYgKGZsYWdzICYgRVZB
U19CVVRUT05fRE9VQkxFX0NMSUNLKQorICAgICAgICByZXR1cm4gMjsKKworICAgIHJldHVybiAx
OworfQorCitXZWJNb3VzZUV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVu
dChjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2ZW50LCBjb25zdCBFdmFzX1BvaW50KiBw
b3NpdGlvbikKK3sKKyAgICByZXR1cm4gV2ViTW91c2VFdmVudChXZWJFdmVudDo6TW91c2VEb3du
LAorICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbkZvckV2ZW50KGV2ZW50LT5idXR0b24p
LAorICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KGV2ZW50LT5jYW52YXMueCAtIHBv
c2l0aW9uLT54LCBldmVudC0+Y2FudmFzLnkgLSBwb3NpdGlvbi0+eSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgSW50UG9pbnQoZXZlbnQtPmNhbnZhcy54LCBldmVudC0+Y2FudmFzLnkpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIDAgLyogZGVsdGFYICovLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIDAgLyogZGVsdGFZICovLAorICAgICAgICAgICAgICAgICAgICAgICAgIDAgLyog
ZGVsdGFaICovLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrQ291bnRGb3JFdmVudChl
dmVudC0+ZmxhZ3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyc0ZvckV2ZW50
KGV2ZW50LT5tb2RpZmllcnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LT50aW1l
c3RhbXApOworfQorCitXZWJNb3VzZUV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91
c2VFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNlX1VwKiBldmVudCwgY29uc3QgRXZhc19Qb2lu
dCogcG9zaXRpb24pCit7CisgICAgcmV0dXJuIFdlYk1vdXNlRXZlbnQoV2ViRXZlbnQ6Ok1vdXNl
VXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uRm9yRXZlbnQoZXZlbnQtPmJ1dHRv
biksCisgICAgICAgICAgICAgICAgICAgICAgICAgSW50UG9pbnQoZXZlbnQtPmNhbnZhcy54IC0g
cG9zaXRpb24tPngsIGV2ZW50LT5jYW52YXMueSAtIHBvc2l0aW9uLT55KSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBJbnRQb2ludChldmVudC0+Y2FudmFzLngsIGV2ZW50LT5jYW52YXMueSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgMCAvKiBkZWx0YVggKi8sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgMCAvKiBkZWx0YVkgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgMCAv
KiBkZWx0YVogKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2tDb3VudEZvckV2ZW50
KGV2ZW50LT5mbGFncyksCisgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzRm9yRXZl
bnQoZXZlbnQtPm1vZGlmaWVycyksCisgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQtPnRp
bWVzdGFtcCk7Cit9CisKK1dlYk1vdXNlRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJN
b3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZSogZXZlbnQsIGNvbnN0IEV2YXNf
UG9pbnQqIHBvc2l0aW9uKQoreworICAgIHJldHVybiBXZWJNb3VzZUV2ZW50KFdlYkV2ZW50OjpN
b3VzZU1vdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uRm9yRXZlbnQoZXZlbnQt
PmJ1dHRvbnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KGV2ZW50LT5jdXIu
Y2FudmFzLnggLSBwb3NpdGlvbi0+eCwgZXZlbnQtPmN1ci5jYW52YXMueSAtIHBvc2l0aW9uLT55
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChldmVudC0+Y3VyLmNhbnZhcy54
LCBldmVudC0+Y3VyLmNhbnZhcy55KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAwIC8qIGRl
bHRhWCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAwIC8qIGRlbHRhWSAqLywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAwIC8qIGRlbHRhWiAqLywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAwIC8qIGNsaWNrQ291bnQgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZp
ZXJzRm9yRXZlbnQoZXZlbnQtPm1vZGlmaWVycyksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ZXZlbnQtPnRpbWVzdGFtcCk7Cit9CisKK1dlYldoZWVsRXZlbnQgV2ViRXZlbnRGYWN0b3J5Ojpj
cmVhdGVXZWJXaGVlbEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqIGV2ZW50LCBj
b25zdCBFdmFzX1BvaW50KiBwb3NpdGlvbikKK3sKKyAgICBmbG9hdCBkZWx0YVggPSAwOworICAg
IGZsb2F0IGRlbHRhWSA9IDA7CisgICAgZmxvYXQgd2hlZWxUaWNrc1ggPSAwOworICAgIGZsb2F0
IHdoZWVsVGlja3NZID0gMDsKKworICAgIC8vIEEgbmVnYXRpdmUgeiB2YWx1ZSBtZWFucyAoaW4g
RUZMKSB0aGF0IHdlIGFyZSBzY3JvbGxpbmcgZG93biwgc28gd2UgbmVlZAorICAgIC8vIHRvIGlu
dmVydCB0aGUgdmFsdWUuCisgICAgaWYgKGV2ZW50LT5kaXJlY3Rpb24gPT0gVmVydGljYWxTY3Jv
bGxEaXJlY3Rpb24pIHsKKyAgICAgICAgZGVsdGFYID0gMDsKKyAgICAgICAgZGVsdGFZID0gLSBl
dmVudC0+ejsKKyAgICB9IGVsc2UgaWYgKGV2ZW50LT5kaXJlY3Rpb24gPT0gSG9yaXpvbnRhbFNj
cm9sbERpcmVjdGlvbikgeworICAgICAgICBkZWx0YVggPSAtIGV2ZW50LT56OworICAgICAgICBk
ZWx0YVkgPSAwOworICAgIH0KKworICAgIHdoZWVsVGlja3NYID0gZGVsdGFYOworICAgIHdoZWVs
VGlja3NZID0gZGVsdGFZOworICAgIGRlbHRhWCAqPSBzdGF0aWNfY2FzdDxmbG9hdD4oU2Nyb2xs
YmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpKTsKKyAgICBkZWx0YVkgKj0gc3RhdGljX2Nhc3Q8Zmxv
YXQ+KFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7CisKKyAgICByZXR1cm4gV2ViV2hl
ZWxFdmVudChXZWJFdmVudDo6V2hlZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgSW50UG9p
bnQoZXZlbnQtPmNhbnZhcy54IC0gcG9zaXRpb24tPngsIGV2ZW50LT5jYW52YXMueSAtIHBvc2l0
aW9uLT55KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChldmVudC0+Y2FudmFz
LngsIGV2ZW50LT5jYW52YXMueSksCisgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRTaXpl
KGRlbHRhWCwgZGVsdGFZKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdFNpemUod2hl
ZWxUaWNrc1gsIHdoZWVsVGlja3NZKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBXZWJXaGVl
bEV2ZW50OjpTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBtb2RpZmllcnNGb3JFdmVudChldmVudC0+bW9kaWZpZXJzKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBldmVudC0+dGltZXN0YW1wKTsKK30KKworV2ViS2V5Ym9hcmRFdmVudCBXZWJFdmVu
dEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgRXZhc19FdmVudF9LZXlfRG93
biogZXZlbnQpCit7CisgICAgU3RyaW5nIGtleU5hbWUgPSBTdHJpbmcoZXZlbnQtPmtleSk7Cisg
ICAgcmV0dXJuIFdlYktleWJvYXJkRXZlbnQoV2ViRXZlbnQ6OktleURvd24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU3RyaW5nOjpmcm9tVVRGOChldmVudC0+c3RyaW5nKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmc6OmZyb21VVEY4KGV2ZW50LT5zdHJpbmcpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6a2V5SWRl
bnRpZmllckZvckV2YXNLZXlOYW1lKGtleU5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6d2luZG93c0tleUNvZGVGb3JFdmFzS2V5TmFtZShr
ZXlOYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIC8qIEZJWE1FOiBuYXRpdmVW
aXJ0dWFsS2V5Q29kZSAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIC8qIG1hY0No
YXJDb2RlICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlIC8qIEZJWE1FOiBp
c0F1dG9SZXBlYXQgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgLyogRklY
TUU6IGlzS2V5cGFkICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlIC8qIGlz
U3lzdGVtS2V5ICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyc0ZvckV2
ZW50KGV2ZW50LT5tb2RpZmllcnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50
LT50aW1lc3RhbXApOworfQorCitXZWJLZXlib2FyZEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3Jl
YXRlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9VcCogZXZlbnQpCit7Cisg
ICAgU3RyaW5nIGtleU5hbWUgPSBTdHJpbmcoZXZlbnQtPmtleSk7CisgICAgcmV0dXJuIFdlYktl
eWJvYXJkRXZlbnQoV2ViRXZlbnQ6OktleVVwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFN0cmluZzo6ZnJvbVVURjgoZXZlbnQtPnN0cmluZyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU3RyaW5nOjpmcm9tVVRGOChldmVudC0+c3RyaW5nKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JFdmFzS2V5
TmFtZShrZXlOYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OndpbmRvd3NLZXlDb2RlRm9yRXZhc0tleU5hbWUoa2V5TmFtZSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMCAvKiBGSVhNRTogbmF0aXZlVmlydHVhbEtleUNvZGUgKi8s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAvKiBtYWNDaGFyQ29kZSAqLywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSAvKiBGSVhNRTogaXNBdXRvUmVwZWF0ICovLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlIC8qIEZJWE1FOiBpc0tleXBhZCAqLywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSAvKiBpc1N5c3RlbUtleSAqLywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnNGb3JFdmVudChldmVudC0+bW9kaWZp
ZXJzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC0+dGltZXN0YW1wKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJF
dmVudEZhY3RvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDdhM2NhZWRkNzhlM2FkZTQ0NTcxM2RjYWE3OTAy
YzFmMGQ0ODUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9X
ZWJFdmVudEZhY3RvcnkuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJFdmVudEZhY3Rv
cnlfaAorI2RlZmluZSBXZWJFdmVudEZhY3RvcnlfaAorCisjaW5jbHVkZSAiV2ViRXZlbnQuaCIK
KyNpbmNsdWRlIDxFdmFzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJFdmVu
dEZhY3RvcnkgeworcHVibGljOgorICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1v
dXNlRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiwgY29uc3QgRXZhc19Qb2ludCop
OworICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgRXZh
c19FdmVudF9Nb3VzZV9VcCosIGNvbnN0IEV2YXNfUG9pbnQqKTsKKyAgICBzdGF0aWMgV2ViTW91
c2VFdmVudCBjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZSos
IGNvbnN0IEV2YXNfUG9pbnQqKTsKKyAgICBzdGF0aWMgV2ViV2hlZWxFdmVudCBjcmVhdGVXZWJX
aGVlbEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqLCBjb25zdCBFdmFzX1BvaW50
Kik7CisgICAgc3RhdGljIFdlYktleWJvYXJkRXZlbnQgY3JlYXRlV2ViS2V5Ym9hcmRFdmVudChj
b25zdCBFdmFzX0V2ZW50X0tleV9Eb3duKik7CisgICAgc3RhdGljIFdlYktleWJvYXJkRXZlbnQg
Y3JlYXRlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9VcCopOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJFdmVudEZhY3RvcnlfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97217</attachid>
            <date>2011-06-14 18:51:10 -0700</date>
            <delta_ts>2011-06-18 20:44:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61993-20110615105102.patch</filename>
            <type>text/plain</type>
            <size>23195</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODg3OTIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlZjczZDBlZjVjZTk4ZmMx
YWU4ODQ2MTA1YjY2ZWZjNTk5MWVhMjUyLi42NmIyMTY0MmFmNGYxOWJmMDM2YTQ3NTNhMzkxM2Ey
ZmU0YzU0NjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDYtMTQgIEV1bm1p
IExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtFRkxdW1dLMl0gYWRkIFdlYktpdDIgRUZMIHBvcnQn
cyBOYXRpdmVXZWJNb3VzZUV2ZW50LCBOYXRpdmVXZWJXaGVlbEV2ZW50IGFuZCBOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02MTk5MworCisgICAgICAgIEFkZCBuYXRpdmUgbW91c2UgYW5kIGtleWJvYXJkIGV2ZW50
IGNsYXNzZXMgdG8gY29udmVydCBFRkwncyBldmVudHMgdG8gTmF0aXZlV2ViRXZlbnQuCisKKyAg
ICAgICAgKiBTaGFyZWQvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oOgorICAgICAgICAoV2ViS2l0
OjpOYXRpdmVXZWJLZXlib2FyZEV2ZW50OjpuYXRpdmVFdmVudCk6CisgICAgICAgICogU2hhcmVk
L05hdGl2ZVdlYk1vdXNlRXZlbnQuaDoKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViTW91c2VF
dmVudDo6bmF0aXZlRXZlbnQpOgorICAgICAgICAqIFNoYXJlZC9OYXRpdmVXZWJXaGVlbEV2ZW50
Lmg6CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYldoZWVsRXZlbnQ6Om5hdGl2ZUV2ZW50KToK
KyAgICAgICAgKiBTaGFyZWQvZWZsL05hdGl2ZVdlYktleWJvYXJkRXZlbnRFZmwuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6TmF0aXZlV2ViS2V5
Ym9hcmRFdmVudCk6CisgICAgICAgICogU2hhcmVkL2VmbC9OYXRpdmVXZWJNb3VzZUV2ZW50RWZs
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2
ZVdlYk1vdXNlRXZlbnQpOgorICAgICAgICAqIFNoYXJlZC9lZmwvTmF0aXZlV2ViV2hlZWxFdmVu
dEVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJXaGVlbEV2ZW50OjpO
YXRpdmVXZWJXaGVlbEV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9y
eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0Ojptb2RpZmllcnNGb3JFdmVudCk6CisgICAg
ICAgIChXZWJLaXQ6OmJ1dHRvbkZvckV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6Y2xpY2tDb3Vu
dEZvckV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJN
b3VzZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJX
aGVlbEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJL
ZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5oOiBB
ZGRlZC4KKwogMjAxMS0wNi0xMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL05hdGl2ZVdlYktleWJvYXJkRXZlbnQuaAppbmRleCBkODg0NTVjYWQzODcxNjVmMGJh
ZjJhMGU5MDAzYjk4NWFiMmNlZjUyLi42ZjY2NTZkZWFkNGE4NWFjNDljZjA0YjY4N2Y3ZjU3ZWNm
ZWIzNjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJLZXlib2FyZEV2
ZW50LmgKQEAgLTM4LDYgKzM4LDggQEAgT0JKQ19DTEFTUyBOU1ZpZXc7CiAjZWxpZiBQTEFURk9S
TShHVEspCiAjaW5jbHVkZSA8R093blB0ckd0ay5oPgogdHlwZWRlZiB1bmlvbiBfR2RrRXZlbnQg
R2RrRXZlbnQ7CisjZWxpZiBQTEFURk9STShFRkwpCisjaW5jbHVkZSA8RXZhcy5oPgogI2VuZGlm
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTMsNiArNTUsOSBAQCBwdWJsaWM6CiAjZWxpZiBQ
TEFURk9STShHVEspCiAgICAgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50Jik7CiAgICAgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChHZGtFdmVudCopOwor
I2VsaWYgUExBVEZPUk0oRUZMKQorICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgRXZh
c19FdmVudF9LZXlfRG93biopOworICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgRXZh
c19FdmVudF9LZXlfVXAqKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNjMsNiAr
NjgsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgUUtleUV2ZW50KiBuYXRpdmVFdmVudCgpIGNvbnN0
IHsgcmV0dXJuICZtX25hdGl2ZUV2ZW50OyB9CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgY29u
c3QgR2RrRXZlbnQqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVFdmVudC5n
ZXQoKTsgfQorI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIGNvbnN0IHZvaWQqIG5hdGl2ZUV2ZW50
KCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVFdmVudDsgfQogI2VuZGlmCiAKIHByaXZhdGU6CkBA
IC03NCw2ICs4MSw4IEBAIHByaXZhdGU6CiAgICAgUUtleUV2ZW50IG1fbmF0aXZlRXZlbnQ7CiAj
ZWxpZiBQTEFURk9STShHVEspCiAgICAgR093blB0cjxHZGtFdmVudD4gbV9uYXRpdmVFdmVudDsK
KyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICBjb25zdCB2b2lkKiBtX25hdGl2ZUV2ZW50OwogI2Vu
ZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViTW91
c2VFdmVudC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaApp
bmRleCA4NGFmMWQ0NWFlZDZiNGI2YmI0OTAxOWJlOTA5YWEwNGJlYjI0ODg5Li43YTlmMGFmNTY5
ZjgxZjliYjJkY2ZmOGIxNTEyYTM5NGU3Y2YwMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9OYXRpdmVXZWJNb3VzZUV2ZW50LmgKQEAgLTM2LDYgKzM2LDggQEAgT0JKQ19DTEFTUyBOU1Zp
ZXc7CiAjZWxpZiBQTEFURk9STShHVEspCiAjaW5jbHVkZSA8R093blB0ckd0ay5oPgogdHlwZWRl
ZiB1bmlvbiBfR2RrRXZlbnQgR2RrRXZlbnQ7CisjZWxpZiBQTEFURk9STShFRkwpCisjaW5jbHVk
ZSA8RXZhcy5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTEsNiArNTMsMTAg
QEAgcHVibGljOgogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQo
Y29uc3QgTmF0aXZlV2ViTW91c2VFdmVudCYpOwogICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQoR2Rr
RXZlbnQqLCBpbnQpOworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIE5hdGl2ZVdlYk1vdXNlRXZl
bnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiwgY29uc3QgRXZhc19Qb2ludCopOworICAg
IE5hdGl2ZVdlYk1vdXNlRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9VcCosIGNvbnN0IEV2
YXNfUG9pbnQqKTsKKyAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91
c2VfTW92ZSosIGNvbnN0IEV2YXNfUG9pbnQqKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFD
KQpAQCAtNjEsNiArNjcsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgUUdyYXBoaWNzU2NlbmVNb3Vz
ZUV2ZW50KiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlRXZlbnQ7IH0KICNl
bGlmIFBMQVRGT1JNKEdUSykKICAgICBjb25zdCBHZGtFdmVudCogbmF0aXZlRXZlbnQoKSBjb25z
dCB7IHJldHVybiBtX25hdGl2ZUV2ZW50LmdldCgpOyB9CisjZWxpZiBQTEFURk9STShFRkwpCisg
ICAgY29uc3Qgdm9pZCogbmF0aXZlRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUV2ZW50
OyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTcyLDYgKzgwLDggQEAgcHJpdmF0ZToKICAgICBR
R3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQqIG1fbmF0aXZlRXZlbnQ7CiAjZWxpZiBQTEFURk9STShH
VEspCiAgICAgR093blB0cjxHZGtFdmVudD4gbV9uYXRpdmVFdmVudDsKKyNlbGlmIFBMQVRGT1JN
KEVGTCkKKyAgICBjb25zdCB2b2lkKiBtX25hdGl2ZUV2ZW50OwogI2VuZGlmCiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViV2hlZWxFdmVudC5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYldoZWVsRXZlbnQuaAppbmRleCA1OTMwMmQwNDM3
NzM0OGY2Y2E4YTE3MzQwMTQ1YzBmNmY2MzY5NDQxLi40NDgxMmZiYTMzNmI5MWZjM2U0N2I0MWU2
YTdlZjk0ZTcwMzU0ODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZl
V2ViV2hlZWxFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJXaGVl
bEV2ZW50LmgKQEAgLTM2LDYgKzM2LDggQEAgT0JKQ19DTEFTUyBOU1ZpZXc7CiAjZWxpZiBQTEFU
Rk9STShHVEspCiAjaW5jbHVkZSA8R093blB0ckd0ay5oPgogdHlwZWRlZiB1bmlvbiBfR2RrRXZl
bnQgR2RrRXZlbnQ7CisjZWxpZiBQTEFURk9STShFRkwpCisjaW5jbHVkZSA8RXZhcy5oPgogI2Vu
ZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTEsNiArNTMsOCBAQCBwdWJsaWM6CiAjZWxp
ZiBQTEFURk9STShHVEspCiAgICAgTmF0aXZlV2ViV2hlZWxFdmVudChjb25zdCBOYXRpdmVXZWJX
aGVlbEV2ZW50Jik7CiAgICAgTmF0aXZlV2ViV2hlZWxFdmVudChHZGtFdmVudCopOworI2VsaWYg
UExBVEZPUk0oRUZMKQorICAgIE5hdGl2ZVdlYldoZWVsRXZlbnQoY29uc3QgRXZhc19FdmVudF9N
b3VzZV9XaGVlbCosIGNvbnN0IEV2YXNfUG9pbnQqKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
TUFDKQpAQCAtNjEsNiArNjUsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgUUdyYXBoaWNzU2NlbmVX
aGVlbEV2ZW50KiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlRXZlbnQ7IH0K
ICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICBjb25zdCBHZGtFdmVudCogbmF0aXZlRXZlbnQoKSBj
b25zdCB7IHJldHVybiBtX25hdGl2ZUV2ZW50LmdldCgpOyB9CisjZWxpZiBQTEFURk9STShFRkwp
CisgICAgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogbmF0aXZlRXZlbnQoKSBjb25zdCB7
IHJldHVybiBtX25hdGl2ZUV2ZW50OyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTcyLDYgKzc4
LDggQEAgcHJpdmF0ZToKICAgICBRR3JhcGhpY3NTY2VuZVdoZWVsRXZlbnQqIG1fbmF0aXZlRXZl
bnQ7CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgR093blB0cjxHZGtFdmVudD4gbV9uYXRpdmVF
dmVudDsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1do
ZWVsKiBtX25hdGl2ZUV2ZW50OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYktleWJvYXJkRXZlbnRFZmwuY3BwIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50RWZsLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xZWYwMmJhOTljZWYxYWFkNzg4MmZlYzc0OTExNTk0ZTQ5YmE4ZjdiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50RWZs
LmNwcApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcg
RWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5h
dGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKKworI2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeS5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6TmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duKiBldmVudCkKKyAgICA6IFdl
YktleWJvYXJkRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJLZXlib2FyZEV2ZW50KGV2
ZW50KSkKKyAgICAsIG1fbmF0aXZlRXZlbnQoZXZlbnQpCit7Cit9CisKK05hdGl2ZVdlYktleWJv
YXJkRXZlbnQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgRXZhc19FdmVudF9LZXlfVXAq
IGV2ZW50KQorICAgIDogV2ViS2V5Ym9hcmRFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdl
YktleWJvYXJkRXZlbnQoZXZlbnQpKQorICAgICwgbV9uYXRpdmVFdmVudChldmVudCkKK3sKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZWZsL05hdGl2ZVdlYk1vdXNlRXZlbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L2VmbC9OYXRpdmVXZWJNb3VzZUV2ZW50RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTRkNjAxNGRiOTVl
YjM3YmUxNTBlNjBlMDczMWEyYzA4MDk4MGRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJNb3VzZUV2ZW50RWZsLmNwcApAQCAtMCwwICsxLDUx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5hdGl2ZVdlYk1vdXNlRXZlbnQu
aCIKKworI2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworTmF0aXZlV2ViTW91c2VFdmVudDo6TmF0aXZlV2ViTW91c2VFdmVudChjb25zdCBFdmFzX0V2
ZW50X01vdXNlX0Rvd24qIGV2ZW50LCBjb25zdCBFdmFzX1BvaW50KiBwb3NpdGlvbikKKyAgICA6
IFdlYk1vdXNlRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGV2ZW50
LCBwb3NpdGlvbikpCisgICAgLCBtX25hdGl2ZUV2ZW50KGV2ZW50KQoreworfQorCitOYXRpdmVX
ZWJNb3VzZUV2ZW50OjpOYXRpdmVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2Vf
VXAqIGV2ZW50LCBjb25zdCBFdmFzX1BvaW50KiBwb3NpdGlvbikKKyAgICA6IFdlYk1vdXNlRXZl
bnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGV2ZW50LCBwb3NpdGlvbikp
CisgICAgLCBtX25hdGl2ZUV2ZW50KGV2ZW50KQoreworfQorCitOYXRpdmVXZWJNb3VzZUV2ZW50
OjpOYXRpdmVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZSogZXZlbnQs
IGNvbnN0IEV2YXNfUG9pbnQqIHBvc2l0aW9uKQorICAgIDogV2ViTW91c2VFdmVudChXZWJFdmVu
dEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQoZXZlbnQsIHBvc2l0aW9uKSkKKyAgICAsIG1f
bmF0aXZlRXZlbnQoZXZlbnQpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJXaGVlbEV2ZW50RWZsLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViV2hlZWxFdmVudEVmbC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjY1ZDdkMmI1MjM2MTZmNzM2NWZjOTJmNjM1N2I4NWIzMzYzZDA3MgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViV2hlZWxF
dmVudEVmbC5jcHAKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBT
YW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJOYXRpdmVXZWJXaGVlbEV2ZW50LmgiCisKKyNpbmNsdWRlICJXZWJFdmVudEZhY3Rvcnku
aCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK05hdGl2ZVdlYldoZWVsRXZlbnQ6Ok5hdGl2ZVdl
YldoZWVsRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogZXZlbnQsIGNvbnN0IEV2
YXNfUG9pbnQqIHBvc2l0aW9uKQorICAgIDogV2ViV2hlZWxFdmVudChXZWJFdmVudEZhY3Rvcnk6
OmNyZWF0ZVdlYldoZWVsRXZlbnQoZXZlbnQsIHBvc2l0aW9uKSkKKyAgICAsIG1fbmF0aXZlRXZl
bnQoZXZlbnQpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlY2RhNzRhNmYx
ODRmYjMzOWYzMzBkNTljODU5MDRkOGE0ZTMyNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5jcHAKQEAgLTAsMCArMSwxOTQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViRXZlbnRGYWN0b3J5LmgiCisKKyNp
bmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0
Zm9ybUtleWJvYXJkRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGJhci5oPgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gewor
ICAgIFZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9uID0gMCwKKyAgICBIb3Jpem9udGFsU2Nyb2xsRGly
ZWN0aW9uID0gMQorfTsKKworZW51bSB7CisgICAgTGVmdEJ1dHRvbiA9IDEsCisgICAgTWlkZGxl
QnV0dG9uID0gMiwKKyAgICBSaWdodEJ1dHRvbiA9IDMKK307CisKK3N0YXRpYyBpbmxpbmUgV2Vi
RXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnNGb3JFdmVudChjb25zdCBFdmFzX01vZGlmaWVyKiBt
b2RpZmllcnMpCit7CisgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKworICAgIGlmIChldmFzX2tl
eV9tb2RpZmllcl9pc19zZXQobW9kaWZpZXJzLCAiU2hpZnQiKSkKKyAgICAgICAgcmVzdWx0IHw9
IFdlYkV2ZW50OjpTaGlmdEtleTsKKyAgICBpZiAoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KG1v
ZGlmaWVycywgIkNvbnRyb2wiKSkKKyAgICAgICAgcmVzdWx0IHw9IFdlYkV2ZW50OjpDb250cm9s
S2V5OworICAgIGlmIChldmFzX2tleV9tb2RpZmllcl9pc19zZXQobW9kaWZpZXJzLCAiQWx0Iikp
CisgICAgICAgIHJlc3VsdCB8PSBXZWJFdmVudDo6QWx0S2V5OworICAgIGlmIChldmFzX2tleV9t
b2RpZmllcl9pc19zZXQobW9kaWZpZXJzLCAiTWV0YSIpKQorICAgICAgICByZXN1bHQgfD0gV2Vi
RXZlbnQ6Ok1ldGFLZXk7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViRXZlbnQ6Ok1vZGlm
aWVycz4ocmVzdWx0KTsKK30KKworc3RhdGljIGlubGluZSBXZWJNb3VzZUV2ZW50OjpCdXR0b24g
YnV0dG9uRm9yRXZlbnQoaW50IGJ1dHRvbikKK3sKKyAgICBpZiAoYnV0dG9uID09IExlZnRCdXR0
b24pCisgICAgICAgIHJldHVybiBXZWJNb3VzZUV2ZW50OjpMZWZ0QnV0dG9uOworICAgIGlmIChi
dXR0b24gPT0gTWlkZGxlQnV0dG9uKQorICAgICAgICByZXR1cm4gV2ViTW91c2VFdmVudDo6TWlk
ZGxlQnV0dG9uOworICAgIGlmIChidXR0b24gPT0gUmlnaHRCdXR0b24pCisgICAgICAgIHJldHVy
biBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbjsKKworICAgIHJldHVybiBXZWJNb3VzZUV2ZW50
OjpOb0J1dHRvbjsKK30KKworc3RhdGljIGlubGluZSBpbnQgY2xpY2tDb3VudEZvckV2ZW50KGNv
bnN0IEV2YXNfQnV0dG9uX0ZsYWdzIGZsYWdzKQoreworICAgIGlmIChmbGFncyAmIEVWQVNfQlVU
VE9OX1RSSVBMRV9DTElDSykKKyAgICAgICAgcmV0dXJuIDM7CisgICAgaWYgKGZsYWdzICYgRVZB
U19CVVRUT05fRE9VQkxFX0NMSUNLKQorICAgICAgICByZXR1cm4gMjsKKworICAgIHJldHVybiAx
OworfQorCitXZWJNb3VzZUV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVu
dChjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2ZW50LCBjb25zdCBFdmFzX1BvaW50KiBw
b3NpdGlvbikKK3sKKyAgICByZXR1cm4gV2ViTW91c2VFdmVudChXZWJFdmVudDo6TW91c2VEb3du
LAorICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbkZvckV2ZW50KGV2ZW50LT5idXR0b24p
LAorICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KGV2ZW50LT5jYW52YXMueCAtIHBv
c2l0aW9uLT54LCBldmVudC0+Y2FudmFzLnkgLSBwb3NpdGlvbi0+eSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgSW50UG9pbnQoZXZlbnQtPmNhbnZhcy54LCBldmVudC0+Y2FudmFzLnkpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIDAgLyogZGVsdGFYICovLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIDAgLyogZGVsdGFZICovLAorICAgICAgICAgICAgICAgICAgICAgICAgIDAgLyog
ZGVsdGFaICovLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrQ291bnRGb3JFdmVudChl
dmVudC0+ZmxhZ3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyc0ZvckV2ZW50
KGV2ZW50LT5tb2RpZmllcnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LT50aW1l
c3RhbXApOworfQorCitXZWJNb3VzZUV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91
c2VFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNlX1VwKiBldmVudCwgY29uc3QgRXZhc19Qb2lu
dCogcG9zaXRpb24pCit7CisgICAgcmV0dXJuIFdlYk1vdXNlRXZlbnQoV2ViRXZlbnQ6Ok1vdXNl
VXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uRm9yRXZlbnQoZXZlbnQtPmJ1dHRv
biksCisgICAgICAgICAgICAgICAgICAgICAgICAgSW50UG9pbnQoZXZlbnQtPmNhbnZhcy54IC0g
cG9zaXRpb24tPngsIGV2ZW50LT5jYW52YXMueSAtIHBvc2l0aW9uLT55KSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBJbnRQb2ludChldmVudC0+Y2FudmFzLngsIGV2ZW50LT5jYW52YXMueSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgMCAvKiBkZWx0YVggKi8sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgMCAvKiBkZWx0YVkgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgMCAv
KiBkZWx0YVogKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2tDb3VudEZvckV2ZW50
KGV2ZW50LT5mbGFncyksCisgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzRm9yRXZl
bnQoZXZlbnQtPm1vZGlmaWVycyksCisgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQtPnRp
bWVzdGFtcCk7Cit9CisKK1dlYk1vdXNlRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJN
b3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZSogZXZlbnQsIGNvbnN0IEV2YXNf
UG9pbnQqIHBvc2l0aW9uKQoreworICAgIHJldHVybiBXZWJNb3VzZUV2ZW50KFdlYkV2ZW50OjpN
b3VzZU1vdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uRm9yRXZlbnQoZXZlbnQt
PmJ1dHRvbnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KGV2ZW50LT5jdXIu
Y2FudmFzLnggLSBwb3NpdGlvbi0+eCwgZXZlbnQtPmN1ci5jYW52YXMueSAtIHBvc2l0aW9uLT55
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChldmVudC0+Y3VyLmNhbnZhcy54
LCBldmVudC0+Y3VyLmNhbnZhcy55KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAwIC8qIGRl
bHRhWCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAwIC8qIGRlbHRhWSAqLywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAwIC8qIGRlbHRhWiAqLywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAwIC8qIGNsaWNrQ291bnQgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZp
ZXJzRm9yRXZlbnQoZXZlbnQtPm1vZGlmaWVycyksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ZXZlbnQtPnRpbWVzdGFtcCk7Cit9CisKK1dlYldoZWVsRXZlbnQgV2ViRXZlbnRGYWN0b3J5Ojpj
cmVhdGVXZWJXaGVlbEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqIGV2ZW50LCBj
b25zdCBFdmFzX1BvaW50KiBwb3NpdGlvbikKK3sKKyAgICBmbG9hdCBkZWx0YVggPSAwOworICAg
IGZsb2F0IGRlbHRhWSA9IDA7CisgICAgZmxvYXQgd2hlZWxUaWNrc1ggPSAwOworICAgIGZsb2F0
IHdoZWVsVGlja3NZID0gMDsKKworICAgIC8vIEEgbmVnYXRpdmUgeiB2YWx1ZSBtZWFucyAoaW4g
RUZMKSB0aGF0IHdlIGFyZSBzY3JvbGxpbmcgZG93biwgc28gd2UgbmVlZAorICAgIC8vIHRvIGlu
dmVydCB0aGUgdmFsdWUuCisgICAgaWYgKGV2ZW50LT5kaXJlY3Rpb24gPT0gVmVydGljYWxTY3Jv
bGxEaXJlY3Rpb24pIHsKKyAgICAgICAgZGVsdGFYID0gMDsKKyAgICAgICAgZGVsdGFZID0gLSBl
dmVudC0+ejsKKyAgICB9IGVsc2UgaWYgKGV2ZW50LT5kaXJlY3Rpb24gPT0gSG9yaXpvbnRhbFNj
cm9sbERpcmVjdGlvbikgeworICAgICAgICBkZWx0YVggPSAtIGV2ZW50LT56OworICAgICAgICBk
ZWx0YVkgPSAwOworICAgIH0KKworICAgIHdoZWVsVGlja3NYID0gZGVsdGFYOworICAgIHdoZWVs
VGlja3NZID0gZGVsdGFZOworICAgIGRlbHRhWCAqPSBzdGF0aWNfY2FzdDxmbG9hdD4oU2Nyb2xs
YmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpKTsKKyAgICBkZWx0YVkgKj0gc3RhdGljX2Nhc3Q8Zmxv
YXQ+KFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSk7CisKKyAgICByZXR1cm4gV2ViV2hl
ZWxFdmVudChXZWJFdmVudDo6V2hlZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgSW50UG9p
bnQoZXZlbnQtPmNhbnZhcy54IC0gcG9zaXRpb24tPngsIGV2ZW50LT5jYW52YXMueSAtIHBvc2l0
aW9uLT55KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChldmVudC0+Y2FudmFz
LngsIGV2ZW50LT5jYW52YXMueSksCisgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRTaXpl
KGRlbHRhWCwgZGVsdGFZKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdFNpemUod2hl
ZWxUaWNrc1gsIHdoZWVsVGlja3NZKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBXZWJXaGVl
bEV2ZW50OjpTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBtb2RpZmllcnNGb3JFdmVudChldmVudC0+bW9kaWZpZXJzKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBldmVudC0+dGltZXN0YW1wKTsKK30KKworV2ViS2V5Ym9hcmRFdmVudCBXZWJFdmVu
dEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgRXZhc19FdmVudF9LZXlfRG93
biogZXZlbnQpCit7CisgICAgU3RyaW5nIGtleU5hbWUgPSBTdHJpbmcoZXZlbnQtPmtleSk7Cisg
ICAgcmV0dXJuIFdlYktleWJvYXJkRXZlbnQoV2ViRXZlbnQ6OktleURvd24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU3RyaW5nOjpmcm9tVVRGOChldmVudC0+c3RyaW5nKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmc6OmZyb21VVEY4KGV2ZW50LT5zdHJpbmcpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6a2V5SWRl
bnRpZmllckZvckV2YXNLZXlOYW1lKGtleU5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6d2luZG93c0tleUNvZGVGb3JFdmFzS2V5TmFtZShr
ZXlOYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIC8qIEZJWE1FOiBuYXRpdmVW
aXJ0dWFsS2V5Q29kZSAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIC8qIG1hY0No
YXJDb2RlICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlIC8qIEZJWE1FOiBp
c0F1dG9SZXBlYXQgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgLyogRklY
TUU6IGlzS2V5cGFkICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlIC8qIGlz
U3lzdGVtS2V5ICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyc0ZvckV2
ZW50KGV2ZW50LT5tb2RpZmllcnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50
LT50aW1lc3RhbXApOworfQorCitXZWJLZXlib2FyZEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3Jl
YXRlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9VcCogZXZlbnQpCit7Cisg
ICAgU3RyaW5nIGtleU5hbWUgPSBTdHJpbmcoZXZlbnQtPmtleSk7CisgICAgcmV0dXJuIFdlYktl
eWJvYXJkRXZlbnQoV2ViRXZlbnQ6OktleVVwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFN0cmluZzo6ZnJvbVVURjgoZXZlbnQtPnN0cmluZyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU3RyaW5nOjpmcm9tVVRGOChldmVudC0+c3RyaW5nKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JFdmFzS2V5
TmFtZShrZXlOYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OndpbmRvd3NLZXlDb2RlRm9yRXZhc0tleU5hbWUoa2V5TmFtZSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMCAvKiBGSVhNRTogbmF0aXZlVmlydHVhbEtleUNvZGUgKi8s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAvKiBtYWNDaGFyQ29kZSAqLywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSAvKiBGSVhNRTogaXNBdXRvUmVwZWF0ICovLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlIC8qIEZJWE1FOiBpc0tleXBhZCAqLywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSAvKiBpc1N5c3RlbUtleSAqLywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnNGb3JFdmVudChldmVudC0+bW9kaWZp
ZXJzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC0+dGltZXN0YW1wKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJF
dmVudEZhY3RvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDdhM2NhZWRkNzhlM2FkZTQ0NTcxM2RjYWE3OTAy
YzFmMGQ0ODUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9X
ZWJFdmVudEZhY3RvcnkuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJFdmVudEZhY3Rv
cnlfaAorI2RlZmluZSBXZWJFdmVudEZhY3RvcnlfaAorCisjaW5jbHVkZSAiV2ViRXZlbnQuaCIK
KyNpbmNsdWRlIDxFdmFzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJFdmVu
dEZhY3RvcnkgeworcHVibGljOgorICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1v
dXNlRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiwgY29uc3QgRXZhc19Qb2ludCop
OworICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgRXZh
c19FdmVudF9Nb3VzZV9VcCosIGNvbnN0IEV2YXNfUG9pbnQqKTsKKyAgICBzdGF0aWMgV2ViTW91
c2VFdmVudCBjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZSos
IGNvbnN0IEV2YXNfUG9pbnQqKTsKKyAgICBzdGF0aWMgV2ViV2hlZWxFdmVudCBjcmVhdGVXZWJX
aGVlbEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqLCBjb25zdCBFdmFzX1BvaW50
Kik7CisgICAgc3RhdGljIFdlYktleWJvYXJkRXZlbnQgY3JlYXRlV2ViS2V5Ym9hcmRFdmVudChj
b25zdCBFdmFzX0V2ZW50X0tleV9Eb3duKik7CisgICAgc3RhdGljIFdlYktleWJvYXJkRXZlbnQg
Y3JlYXRlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9VcCopOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJFdmVudEZhY3RvcnlfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>