<?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>35503</bug_id>
          
          <creation_ts>2010-02-28 15:05:48 -0800</creation_ts>
          <short_desc>[Qt] Implement Desktop Notifications API for QtWebKit</short_desc>
          <delta_ts>2010-04-11 09:27:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt</keywords>
          <priority>P3</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Laszlo Gombos">laszlo.gombos</reporter>
          <assigned_to name="Laszlo Gombos">laszlo.gombos</assigned_to>
          <cc>abarth</cc>
    
    <cc>chinmaya</cc>
    
    <cc>eric</cc>
    
    <cc>ossy</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>194608</commentid>
    <comment_count>0</comment_count>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2010-02-28 15:05:48 -0800</bug_when>
    <thetext>Hook up the code for QtWebKit for ENABLE_NOTIFICAITONS build option.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194611</commentid>
    <comment_count>1</comment_count>
      <attachid>49705</attachid>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2010-02-28 16:03:48 -0800</bug_when>
    <thetext>Created attachment 49705
proposed patch

Map WebKit notifications to Qt&apos;s SystemTray API and implement DRT tracing.

This patch does not implement the security part of WebKit notifications.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194613</commentid>
    <comment_count>2</comment_count>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2010-02-28 16:52:42 -0800</bug_when>
    <thetext>The first patch provides a very basic implementation and satisfies the build scripts. The complete solution (following additional patches) would need to address:
 - DRT tests for Qt port (make sure tests not executed for other ports as most ports do not implement this feature yet).
 - implement security
 - possible provide a Delegate API for QtWebKit to delegate the notification mechanism.

To keep the patch size low, I figured the patch is complete enough for a review round.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196722</commentid>
    <comment_count>3</comment_count>
      <attachid>49705</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-05 15:14:16 -0800</bug_when>
    <thetext>Comment on attachment 49705
proposed patch

Is this really supposed to return a new one?
#if ENABLE(NOTIFICATIONS)
 436 NotificationPresenter* ChromeClientQt::notificationPresenter() const
 437 {
 438     return new NotificationPresenterClientQt; 
 439 }
 440 #endif

based on that method signature, I woudl expect it to return a reference to one.  I expect you&apos;re leaking here.

Spacing:
void NotificationPresenterClientQt::notificationObjectDestroyed(Notification* notification)
 92 {
 93       notImplemented();
 94 
 95 }

Spacing:
void NotificationPresenterClientQt::requestPermission(SecurityOrigin* origin, PassRefPtr&lt;VoidCallback&gt; callback)
 98 {
 99   
 100     if (dumpNotification)

r- for what appears to be a leak (or at least would confuse other developers into causing a leak).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205426</commentid>
    <comment_count>4</comment_count>
      <attachid>51906</attachid>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2010-03-29 07:14:34 -0700</bug_when>
    <thetext>Created attachment 51906
2nd try

Thanks Eric for the review. 

Good catch on the leak. I changed the patch so that now each instance QWebPage of owns (creates and destroys) an instance of NotificationPresenterClientQt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210408</commentid>
    <comment_count>5</comment_count>
      <attachid>51906</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-04-08 15:03:27 -0700</bug_when>
    <thetext>Comment on attachment 51906
2nd try

Fine with me, but you have a spelling error in the ChangeLog &quot;notificationa DRT&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211119</commentid>
    <comment_count>6</comment_count>
      <attachid>51906</attachid>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2010-04-10 00:46:54 -0700</bug_when>
    <thetext>Comment on attachment 51906
2nd try

Committed as http://trac.webkit.org/changeset/57408 with the change in the ChangeLog suggested by Kenneth.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211122</commentid>
    <comment_count>7</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-04-10 01:23:53 -0700</bug_when>
    <thetext>Next time please keep your eyes on bots or don&apos;t commit before you go offline!

First I had to kick (make clean build) our bots because build system
modifications usually make all test crash. Makefiles can&apos;t handle
only build flag modifications.

Second I had to modify 3 expected files (which you forgot) to make 
our very sad bots happy: http://trac.webkit.org/changeset/57412</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211124</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-10 01:43:58 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/57412 might have broken SnowLeopard Intel Release (Tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211125</commentid>
    <comment_count>9</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-04-10 01:48:02 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; http://trac.webkit.org/changeset/57412 might have broken SnowLeopard Intel
&gt; Release (Tests)

false positive alarm, it was an absolutely unrelated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211126</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-10 01:54:25 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/57413 might have broken SnowLeopard Intel Release (Tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211366</commentid>
    <comment_count>11</comment_count>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2010-04-11 09:27:50 -0700</bug_when>
    <thetext>(In reply to comment #7)

Ossy, thanks for you help !

&gt; Next time please keep your eyes on bots or don&apos;t commit before you go offline!

I did just that but I obviously missed the issues with the Qt bot.
 
&gt; First I had to kick (make clean build) our bots because build system
&gt; modifications usually make all test crash. Makefiles can&apos;t handle
&gt; only build flag modifications.

First, the build should fail instead of creating an unusable binary. Had the build fail, I would have caught it before even committing. Any idea how to fix this ? 

Second, there should be a way for committees to kick the bot.

&gt; Second I had to modify 3 expected files (which you forgot) to make 
&gt; our very sad bots happy: http://trac.webkit.org/changeset/57412

Sorry I missed that, thanks for your help.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49705</attachid>
            <date>2010-02-28 16:03:48 -0800</date>
            <delta_ts>2010-03-29 07:14:34 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>35503.patch</filename>
            <type>text/plain</type>
            <size>19151</size>
            <attacher name="Laszlo Gombos">laszlo.gombos</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTM1OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTAtMDItMjggIExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5nb21i
b3NAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtRdF0gSW1wbGVtZW50IERlc2t0b3AgTm90aWZpY2F0aW9ucyBBUEkgZm9yIFF0V2Vi
S2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTUw
MworCisgICAgICAgIE5vIG5ldyB0ZXN0cyBlbmFibGVkIGFzIG5vdGlmaWNhdGlvbmEgRFJUIHRl
c3RzIGFyZQorICAgICAgICBkaXNhYmxlZCBhdCB0aGUgbW9tZW50LgorCisgICAgICAgICogV2Vi
Q29yZS5wcmk6IEFkZCBmaWxlcyB0byB0aGUgYnVpbGQgc3lzdGVtIGFuZCB0dXJuCisgICAgICAg
IG9uIHRoZSBmZWF0dXJlIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgKiBXZWJDb3JlLnBybzogQWRk
IGZpbGVzIHRvIHRoZSBidWlsZCBzeXN0ZW0KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGVz
a3RvcE5vdGlmaWNhdGlvbnNDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOb3RpZmlj
YXRpb25DZW50ZXI6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTm90
aWZpY2F0aW9uOjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTm90aWZp
Y2F0aW9uOjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgRml4IGJ1aWxkIHJlZ3Jlc3Nz
aW9uLgorCiAyMDEwLTAyLTI4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcmkJKHJldmlzaW9uIDU1MzMx
KQorKysgV2ViQ29yZS9XZWJDb3JlLnByaQkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBA
QCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfU0lOR0xFX1RIUkVBREVECiAhY29udGFpbnMoREVG
SU5FUywgRU5BQkxFX1ZJREVPPS4pOiBERUZJTkVTICs9IEVOQUJMRV9WSURFTz0xCiAhY29udGFp
bnMoREVGSU5FUywgRU5BQkxFX1JVQlk9Lik6IERFRklORVMgKz0gRU5BQkxFX1JVQlk9MQogIWNv
bnRhaW5zKERFRklORVMsIEVOQUJMRV9TQU5EQk9YPS4pOiBERUZJTkVTICs9IEVOQUJMRV9TQU5E
Qk9YPTEKKyFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfTk9USUZJQ0FUSU9OUz0uKTogREVGSU5F
UyArPSBFTkFCTEVfTk9USUZJQ0FUSU9OUz0xCiAKIGdyZWF0ZXJUaGFuKFFUX01JTk9SX1ZFUlNJ
T04sIDUpIHsKICAgICAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFXzNEX1JFTkRFUklORz0uKTog
REVGSU5FUyArPSBFTkFCTEVfM0RfUkVOREVSSU5HPTEKQEAgLTE0Nyw2ICsxNDgsNyBAQCBjb250
YWlucyhERUZJTkVTLCBFTkFCTEVfSkFWQVNDUklQVF9ERUJVCiBjb250YWlucyhERUZJTkVTLCBF
TkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TPTEpOiBGRUFUVVJFX0RFRklORVNfSkFWQVND
UklQVCArPSBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TPTEKIGNvbnRhaW5zKERFRklO
RVMsIEVOQUJMRV9XRUJfU09DS0VUUz0xKTogRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0g
RU5BQkxFX1dFQl9TT0NLRVRTPTEKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9UT1VDSF9FVkVO
VFM9MSk6IEZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9UT1VDSF9FVkVOVFM9
MQorY29udGFpbnMoREVGSU5FUywgRU5BQkxFX05PVElGSUNBVElPTlM9MSk6IEZFQVRVUkVfREVG
SU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9OT1RJRklDQVRJT05TPTEKIAogCiAjIyBEZXJpdmVk
IHNvdXJjZSBnZW5lcmF0b3JzCkBAIC0zODYsNiArMzg4LDggQEAgSURMX0JJTkRJTkdTICs9IFwK
ICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbCBcCiAgICAgaW5zcGVjdG9y
L0phdmFTY3JpcHRDYWxsRnJhbWUuaWRsIFwKICAgICBsb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGlj
YXRpb25DYWNoZS5pZGwgXAorICAgIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbCBcCisg
ICAgbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsIFwKICAgICBwYWdlL0Jhcklu
Zm8uaWRsIFwKICAgICBwYWdlL0NvbnNvbGUuaWRsIFwKICAgICBwYWdlL0Nvb3JkaW5hdGVzLmlk
bCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2Vi
Q29yZS5wcm8JKHJldmlzaW9uIDU1MzMxKQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2lu
ZyBjb3B5KQpAQCAtMjg1LDYgKzI4NSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGJpbmRpbmdzL2pz
L0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcCBcCiAgICAgYmluZGluZ3MvanMvSlNEYXRhR3Jp
ZENvbHVtbkxpc3RDdXN0b20uY3BwIFwKICAgICBiaW5kaW5ncy9qcy9KU0RhdGFHcmlkRGF0YVNv
dXJjZS5jcHAgXAorICAgIGJpbmRpbmdzL2pzL0pTRGVza3RvcE5vdGlmaWNhdGlvbnNDdXN0b20u
Y3BwIFwKICAgICBiaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcCBcCiAgICAgYmluZGlu
Z3MvanMvSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcCBcCiAgICAgYmluZGluZ3MvanMvSlNE
T01HbG9iYWxPYmplY3QuY3BwIFwKQEAgLTczOCw2ICs3MzksOCBAQCBTT1VSQ0VTICs9IFwKICAg
ICBsb2FkZXIvVGV4dERvY3VtZW50LmNwcCBcCiAgICAgbG9hZGVyL1RleHRSZXNvdXJjZURlY29k
ZXIuY3BwIFwKICAgICBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAgXAorICAgIG5vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmNwcCBcCisgICAgbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25D
ZW50ZXIuY3BwIFwKICAgICBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCBcCiAgICAg
cGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgXAogICAgIHBhZ2UvYW5pbWF0
aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAgXApAQCAtMTQ0MSw2ICsxNDQ0LDEwIEBAIEhFQURF
UlMgKz0gXAogICAgIGxvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmggXAogICAgIGxvYWRlci9U
aHJlYWRhYmxlTG9hZGVyLmggXAogICAgIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgg
XAorICAgIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmggXAorICAgIG5vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uQ2VudGVyLmggXAorICAgIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUHJl
c2VudGVyLmggXAorICAgIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udGVudHMuaCBcCiAg
ICAgcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5oIFwKICAgICBwYWdlL2FuaW1hdGlvbi9B
bmltYXRpb25Db250cm9sbGVyLmggXAogICAgIHBhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1h
dGlvbi5oIFwKQEAgLTE5NzUsNiArMTk4Miw3IEBAIEhFQURFUlMgKz0gXAogICAgICQkUFdELy4u
L1dlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFiYXNlX3AuaCBcCiAgICAgJCRQV0QvLi4vV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5oIFwKICAgICAkJFBXRC8u
Li9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oIFwKKyAgICAk
JFBXRC8uLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50UXQuaCBcCiAgICAgJCRQV0QvcGxhdGZvcm0vbmV0d29yay9xdC9EbnNQcmVmZXRjaEhlbHBl
ci5oCiAKIFNPVVJDRVMgKz0gXApAQCAtMjA2MCw2ICsyMDY4LDcgQEAgU09VUkNFUyArPSBcCiAg
ICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRDb21tYW5kUXQuY3BwIFwKICAgICAu
Li9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAgXAogICAg
IC4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAgXAorICAg
IC4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRR
dC5jcHAgXAogICAgIC4uL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBcCiAgICAgLi4vV2Vi
S2l0L3F0L0FwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcCBcCiAgICAgLi4vV2ViS2l0L3F0L0FwaS9x
d2VicGFnZS5jcHAgXApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rlc2t0b3BOb3RpZmlj
YXRpb25zQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVz
a3RvcE5vdGlmaWNhdGlvbnNDdXN0b20uY3BwCShyZXZpc2lvbiA1NTMzMSkKKysrIFdlYkNvcmUv
YmluZGluZ3MvanMvSlNEZXNrdG9wTm90aWZpY2F0aW9uc0N1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU1LDcgKzU1LDcgQEAgSlNWYWx1ZSBKU05vdGlmaWNhdGlvbkNlbnRlcjo6cmVxdWVz
dFBlcgogICAgIGlmICghYXJncy5hdCgwKS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gdGhy
b3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOwogCi0gICAgUGFzc1JlZlB0cjxKU0N1c3RvbVZvaWRD
YWxsYmFjaz4gY2FsbGJhY2sgPSBKU0N1c3RvbVZvaWRDYWxsYmFjazo6Y3JlYXRlKGFyZ3MuYXQo
MCkuZ2V0T2JqZWN0KCksIHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPmZyYW1lKCkp
OworICAgIFBhc3NSZWZQdHI8SlNDdXN0b21Wb2lkQ2FsbGJhY2s+IGNhbGxiYWNrID0gSlNDdXN0
b21Wb2lkQ2FsbGJhY2s6OmNyZWF0ZShhcmdzLmF0KDApLmdldE9iamVjdCgpLCB0b0pTRE9NR2xv
YmFsT2JqZWN0KHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCksIGV4ZWMpKTsKIAogICAg
IGltcGwoKS0+cmVxdWVzdFBlcm1pc3Npb24oY2FsbGJhY2spOwogICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwpAQCAtNjcsNyArNjcsNyBAQCBKU1ZhbHVlIEpTTm90aWZpY2F0aW9uOjphZGRFdmVu
dExpc3RlbmVyCiAgICAgaWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKIAotICAgIGltcGwoKS0+YWRkRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDAp
LnRvU3RyaW5nKGV4ZWMpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5l
cikpLCBmYWxzZSwgY3VycmVudFdvcmxkKGV4ZWMpKSwgYXJncy5hdCgyKS50b0Jvb2xlYW4oZXhl
YykpOworICAgIGltcGwoKS0+YWRkRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDApLnRvU3RyaW5nKGV4
ZWMpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIHRoaXMsIGZh
bHNlLCBjdXJyZW50V29ybGQoZXhlYykpLCBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKSk7CiAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKQEAgLTc3LDcgKzc3LDcgQEAgSlNWYWx1ZSBK
U05vdGlmaWNhdGlvbjo6cmVtb3ZlRXZlbnRMaXN0ZQogICAgIGlmICghbGlzdGVuZXIuaXNPYmpl
Y3QoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBpbXBsKCktPnJlbW92
ZUV2ZW50TGlzdGVuZXIoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSwgSlNFdmVudExpc3RlbmVy
OjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCBmYWxzZSwgY3VycmVudFdvcmxkKGV4ZWMpKS5n
ZXQoKSwgYXJncy5hdCgyKS50b0Jvb2xlYW4oZXhlYykpOworICAgIGltcGwoKS0+cmVtb3ZlRXZl
bnRMaXN0ZW5lcihhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLCBKU0V2ZW50TGlzdGVuZXI6OmNy
ZWF0ZShhc09iamVjdChsaXN0ZW5lciksIHRoaXMsIGZhbHNlLCBjdXJyZW50V29ybGQoZXhlYykp
LmdldCgpLCBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiB9CiAKSW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gNTUzNTkpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTAtMDItMjggIExhc3psbyBHb21i
b3MgIDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gSW1wbGVtZW50IERlc2t0b3AgTm90aWZpY2F0
aW9ucyBBUEkgZm9yIFF0V2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNTUwMworCisgICAgICAgIE1hcCBXZWJLaXQgbm90aWZpY2F0aW9ucyB0
byBRdCdzIFN5c3RlbVRyYXkgQVBJIGFuZCAKKyAgICAgICAgaW1wbGVtZW50IERSVCB0cmFjaW5n
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyBub3QgaW1wbGVtZW50IHRoZSBzZWN1cml0eSBw
YXJ0IG9mIAorICAgICAgICBXZWJLaXQgbm90aWZpY2F0aW9ucy4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNs
aWVudFF0Ojpub3RpZmljYXRpb25QcmVzZW50ZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudFF0Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9u
UHJlc2VudGVyQ2xpZW50UXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKHF0X2R1bXBfbm90aWZpY2F0
aW9uKToKKyAgICAgICAgKE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRRdCk6CisgICAgICAgIChOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRRdDo6c2hvdyk6CisgICAgICAgIChOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6Y2Fu
Y2VsKToKKyAgICAgICAgKE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0Ojpub3RpZmljYXRp
b25PYmplY3REZXN0cm95ZWQpOgorICAgICAgICAoTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
UXQ6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAgICAgICAgKE5vdGlmaWNhdGlvblByZXNlbnRlckNs
aWVudFF0OjpjaGVja1Blcm1pc3Npb24pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudFF0Lmg6IEFkZGVkLgorCiAyMDEwLTAyLTI2ICBEaWVnbyBH
b256YWxleiAgPGRpZWdvLmdvbnphbGV6QG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgU2ltb24gSGF1c21hbm4uCkluZGV4OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRRdC5jcHAJKHJldmlzaW9uIDU1MzMxKQorKysgV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBA
QAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50UXQuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcu
aCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50UXQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
IldpbmRvd0ZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCkBAIC00MzEs
NiArNDMyLDEzIEBAIHZvaWQgQ2hyb21lQ2xpZW50UXQ6OnJlYWNoZWRNYXhBcHBDYWNoZVMKIH0K
ICNlbmRpZgogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitOb3RpZmljYXRpb25QcmVzZW50
ZXIqIENocm9tZUNsaWVudFF0Ojpub3RpZmljYXRpb25QcmVzZW50ZXIoKSBjb25zdAoreworICAg
IHJldHVybiBuZXcgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ7IAorfQorI2VuZGlmCisK
IHZvaWQgQ2hyb21lQ2xpZW50UXQ6OnJ1bk9wZW5QYW5lbChGcmFtZSogZnJhbWUsIFBhc3NSZWZQ
dHI8RmlsZUNob29zZXI+IHBycEZpbGVDaG9vc2VyKQogewogICAgIFJlZlB0cjxGaWxlQ2hvb3Nl
cj4gZmlsZUNob29zZXIgPSBwcnBGaWxlQ2hvb3NlcjsKSW5kZXg6IFdlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCShyZXZpc2lvbiA1NTMzMSkKKysrIFdlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNiAr
MTI1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNo
ZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCk7CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQorICAgICAgICB2aXJ0dWFsIE5vdGlmaWNhdGlvblByZXNlbnRl
ciogbm90aWZpY2F0aW9uUHJlc2VudGVyKCkgY29uc3Q7CisjZW5kaWYKKwogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKICAgICAgICAgLy8gc2VlIENocm9tZUNsaWVudC5oCiAgICAg
ICAgIC8vIHRoaXMgaXMgYSBob29rIGZvciBXZWJDb3JlIHRvIHRlbGwgdXMgd2hhdCB3ZSBuZWVk
IHRvIGRvIHdpdGggdGhlIEdyYXBoaWNzTGF5ZXJzCkluZGV4OiBXZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5jcHAJ
KHJldmlzaW9uIDApCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50UXQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExMiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRRdC5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJLVVJMLmgiCisj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgor
CisjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgorCisjaW5jbHVkZSA8UXRHdWk+CisKKyNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0YXRp
YyBib29sIGR1bXBOb3RpZmljYXRpb24gPSBmYWxzZTsKKwordm9pZCBRV0VCS0lUX0VYUE9SVCBx
dF9kdW1wX25vdGlmaWNhdGlvbihib29sIGIpCit7CisgICAgZHVtcE5vdGlmaWNhdGlvbiA9IGI7
Cit9CisgICAgCitOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6Tm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50UXQoKQoreworfQorCitib29sIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dFF0OjpzaG93KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQoreworCisgICAgaWYgKGR1bXBO
b3RpZmljYXRpb24pIHsKKyAgICAgICAgaWYgKG5vdGlmaWNhdGlvbi0+aXNIVE1MKCkpCisgICAg
ICAgICAgICBwcmludGYoIkRFU0tUT1AgTk9USUZJQ0FUSU9OOiBjb250ZW50cyBhdCAlc1xuIiwg
UVN0cmluZyhub3RpZmljYXRpb24tPnVybCgpLnN0cmluZygpKS50b1V0ZjgoKS5jb25zdERhdGEo
KSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcHJpbnRmKCJERVNLVE9QIE5PVElGSUNB
VElPTjogaWNvbiAlcywgdGl0bGUgJXMsIHRleHQgJXNcbiIsIAorICAgICAgICAgICAgICAgIFFT
dHJpbmcobm90aWZpY2F0aW9uLT5jb250ZW50cygpLmljb24oKSkudG9VdGY4KCkuY29uc3REYXRh
KCksIFFTdHJpbmcobm90aWZpY2F0aW9uLT5jb250ZW50cygpLnRpdGxlKCkpLnRvVXRmOCgpLmNv
bnN0RGF0YSgpLCAKKyAgICAgICAgICAgICAgICBRU3RyaW5nKG5vdGlmaWNhdGlvbi0+Y29udGVu
dHMoKS5ib2R5KCkpLnRvVXRmOCgpLmNvbnN0RGF0YSgpKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAgICAgICAgIAorICAgIG1fdHJheS5zaG93KCk7CisgICAgbV90cmF5LnNob3dNZXNzYWdlKG5v
dGlmaWNhdGlvbi0+Y29udGVudHMoKS50aXRsZSgpLCBub3RpZmljYXRpb24tPmNvbnRlbnRzKCku
Ym9keSgpLCBRU3lzdGVtVHJheUljb246OkluZm9ybWF0aW9uKTsKKworICAgIHJldHVybiB0cnVl
OworfQorCit2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpjYW5jZWwoTm90aWZp
Y2F0aW9uKiBub3RpZmljYXRpb24pCit7CisgIAorICAgIGlmIChkdW1wTm90aWZpY2F0aW9uKSB7
CisgICAgICAgIGlmIChub3RpZmljYXRpb24tPmlzSFRNTCgpKQorICAgICAgICAgIHByaW50Zigi
REVTS1RPUCBOT1RJRklDQVRJT04gQ0xPU0VEOiAlc1xuIiwgUVN0cmluZyhub3RpZmljYXRpb24t
PnVybCgpLnN0cmluZygpKS50b1V0ZjgoKS5jb25zdERhdGEoKSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICBwcmludGYoIkRFU0tUT1AgTk9USUZJQ0FUSU9OIENMT1NFRDogJXNcbiIsIFFTdHJp
bmcobm90aWZpY2F0aW9uLT5jb250ZW50cygpLnRpdGxlKCkpLnRvVXRmOCgpLmNvbnN0RGF0YSgp
KTsKKyAgICB9CisKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE5vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudFF0Ojpub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQoTm90aWZpY2F0
aW9uKiBub3RpZmljYXRpb24pCit7CisgICAgICBub3RJbXBsZW1lbnRlZCgpOworCit9CisKK3Zv
aWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OnJlcXVlc3RQZXJtaXNzaW9uKFNlY3Vy
aXR5T3JpZ2luKiBvcmlnaW4sIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFjaykKK3sK
KyAgCisgICAgaWYgKGR1bXBOb3RpZmljYXRpb24pCisgICAgICBwcmludGYoIkRFU0tUT1AgTk9U
SUZJQ0FUSU9OIFBFUk1JU1NJT04gUkVRVUVTVEVEOiAlc1xuIiwgUVN0cmluZyhvcmlnaW4tPnRv
U3RyaW5nKCkpLnRvVXRmOCgpLmNvbnN0RGF0YSgpKTsKKworICAgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKworTm90aWZpY2F0aW9uUHJlc2VudGVyOjpQZXJtaXNzaW9uIE5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudFF0OjpjaGVja1Blcm1pc3Npb24oY29uc3QgS1VSTCYgdXJsLCBEb2N1bWVu
dCopCit7CisgICAgLy8gRklYTUUgSW1wbGVtZW50IHBlcm1pc3Npb24gcG9saWN5CisgICAgcmV0
dXJuIE5vdGlmaWNhdGlvblByZXNlbnRlcjo6UGVybWlzc2lvbkFsbG93ZWQ7Cit9CisKKyNlbmRp
ZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykKSW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5oCShyZXZpc2lv
biAwKQorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNs
aWVudFF0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiTm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyLmgiCisK
KyNpbmNsdWRlIDxRU3lzdGVtVHJheUljb24+CisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBLVVJMOworfQor
CitjbGFzcyBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdCA6IHB1YmxpYyBXZWJDb3JlOjpO
b3RpZmljYXRpb25QcmVzZW50ZXIgeworcHVibGljOgorICAgIE5vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudFF0KCk7CisKKyAgICAvKiBXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXIgaW50
ZXJmYWNlICovCisgICAgdmlydHVhbCBib29sIHNob3coV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiBv
YmplY3QpOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiBv
YmplY3QpOworICAgIHZpcnR1YWwgdm9pZCBub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQoV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uKiBvYmplY3QpOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVy
bWlzc2lvbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBQYXNzUmVmUHRyPFdlYkNv
cmU6OlZvaWRDYWxsYmFjaz4gY2FsbGJhY2spOworICAgIHZpcnR1YWwgV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uUHJlc2VudGVyOjpQZXJtaXNzaW9uIGNoZWNrUGVybWlzc2lvbihjb25zdCBXZWJDb3Jl
OjpLVVJMJiB1cmwsIFdlYkNvcmU6OkRvY3VtZW50KiBkb2N1bWVudCk7CisKK3ByaXZhdGU6IAor
ICAgIFFTeXN0ZW1UcmF5SWNvbiBtX3RyYXk7Cit9OworCisjZW5kaWYKSW5kZXg6IFdlYktpdFRv
b2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDU1MzU5KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMTAtMDItMjggIExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5nb21ib3NA
bm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFtRdF0gSW1wbGVtZW50IERlc2t0b3AgTm90aWZpY2F0aW9ucyBBUEkgZm9yIFF0V2ViS2l0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTUwMwor
CisgICAgICAgIERSVCBzdHVicyBmb3Igbm90aWZpY2F0aW9uLiBFbmFibGVzIHRvIHJ1biBhbmQg
cGFzcworICAgICAgICAzIChjdXJyZW50bHkgZGlzYWJsZWQpIHRlc3RzLgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmdyYW50RGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb24pOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNoZWNrRGVza3RvcE5vdGlmaWNhdGlvblBl
cm1pc3Npb24pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9s
bGVyUXQuaDoKKwogMjAxMC0wMi0yNyAgQ2hyaXMgSmVyZG9uZWsgIDxjamVyZG9uZWtAd2Via2l0
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KSW5kZXg6IFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVy
UXQuY3BwCShyZXZpc2lvbiA1NTMzMSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NiwxMiArNTYs
MTQgQEAgZXh0ZXJuIGludCBxdF9kcnRfbnVtYmVyT2ZQYWdlcyhRV2ViRnJhbQogZXh0ZXJuIHZv
aWQgcXRfZHJ0X3dlYmluc3BlY3Rvcl9leGVjdXRlU2NyaXB0KFFXZWJQYWdlKiBwYWdlLCBsb25n
IGNhbGxJZCwgY29uc3QgUVN0cmluZyYgc2NyaXB0KTsKIGV4dGVybiB2b2lkIHF0X2RydF93ZWJp
bnNwZWN0b3Jfc2hvdyhRV2ViUGFnZSAqcGFnZSk7CiBleHRlcm4gdm9pZCBxdF9kcnRfd2ViaW5z
cGVjdG9yX2Nsb3NlKFFXZWJQYWdlICpwYWdlKTsKK2V4dGVybiB2b2lkIHF0X2R1bXBfbm90aWZp
Y2F0aW9uKGJvb2wgYik7CiAKIExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJv
bGxlcihXZWJDb3JlOjpEdW1wUmVuZGVyVHJlZSogZHJ0KQogICAgIDogUU9iamVjdCgpCiAgICAg
LCBtX2RydChkcnQpCiB7CiAgICAgcmVzZXQoKTsKKyAgICBxdF9kdW1wX25vdGlmaWNhdGlvbih0
cnVlKTsKIH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVzZXQoKQpAQCAtMTg4LDYg
KzE5MCwxNyBAQCBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OndpbmRvd0NvdW50KCkKICAgICBy
ZXR1cm4gbV9kcnQtPndpbmRvd0NvdW50KCk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmdyYW50RGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgUVN0cmluZyYgb3Jp
Z2luKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIG5vdGlmaWNhdGlvbiBzZWN1cml0
eQorfQorCitib29sIExheW91dFRlc3RDb250cm9sbGVyOjpjaGVja0Rlc2t0b3BOb3RpZmljYXRp
b25QZXJtaXNzaW9uKGNvbnN0IFFTdHJpbmcmIG9yaWdpbikKK3sKKyAgICAvLyBGSVhNRTogSW1w
bGVtZW50IGZvciBub3RpZmljYXRpb24gc2VjdXJpdHkKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwog
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZGlzcGxheSgpCiB7CiAgICAgZW1pdCBzaG93UGFn
ZSgpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRy
b2xsZXJRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xh
eW91dFRlc3RDb250cm9sbGVyUXQuaAkocmV2aXNpb24gNTUzMzEpCisrKyBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTExMCw2ICsxMTAsOCBAQCBwdWJsaWMgc2xvdHM6CiAgICAgdm9pZCBwcm92aXNpb25hbExv
YWQoKTsKICAgICB2b2lkIHNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZShib29s
ID0gZmFsc2UpIHt9CiAgICAgaW50IHdpbmRvd0NvdW50KCk7CisgICAgdm9pZCBncmFudERlc2t0
b3BOb3RpZmljYXRpb25QZXJtaXNzaW9uKGNvbnN0IFFTdHJpbmcmIG9yaWdpbik7CisgICAgYm9v
bCBjaGVja0Rlc2t0b3BOb3RpZmljYXRpb25QZXJtaXNzaW9uKGNvbnN0IFFTdHJpbmcmIG9yaWdp
bik7CiAgICAgdm9pZCBkaXNwbGF5KCk7CiAgICAgdm9pZCBjbGVhckJhY2tGb3J3YXJkTGlzdCgp
OwogICAgIFFTdHJpbmcgcGF0aFRvTG9jYWxSZXNvdXJjZShjb25zdCBRU3RyaW5nJiB1cmwpOwo=
</data>
<flag name="review"
          id="32646"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51906</attachid>
            <date>2010-03-29 07:14:34 -0700</date>
            <delta_ts>2010-04-10 00:46:53 -0700</delta_ts>
            <desc>2nd try</desc>
            <filename>35503.patch</filename>
            <type>text/plain</type>
            <size>21583</size>
            <attacher name="Laszlo Gombos">laszlo.gombos</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NjcwNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTAtMDMtMjggIExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5nb21i
b3NAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtRdF0gSW1wbGVtZW50IERlc2t0b3AgTm90aWZpY2F0aW9ucyBBUEkgZm9yIFF0V2Vi
S2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTUw
MworCisgICAgICAgIE5vIG5ldyB0ZXN0cyBlbmFibGVkIGFzIG5vdGlmaWNhdGlvbmEgRFJUIHRl
c3RzIGFyZQorICAgICAgICBkaXNhYmxlZCBhdCB0aGUgbW9tZW50LgorCisgICAgICAgICogV2Vi
Q29yZS5wcmk6IEFkZCBmaWxlcyB0byB0aGUgYnVpbGQgc3lzdGVtIGFuZCB0dXJuCisgICAgICAg
IG9uIHRoZSBmZWF0dXJlIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgKiBXZWJDb3JlLnBybzogQWRk
IGZpbGVzIHRvIHRoZSBidWlsZCBzeXN0ZW0KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGVz
a3RvcE5vdGlmaWNhdGlvbnNDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOb3RpZmlj
YXRpb25DZW50ZXI6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTm90
aWZpY2F0aW9uOjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTm90aWZp
Y2F0aW9uOjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgRml4IGJ1aWxkIHJlZ3Jlc3Nz
aW9uLgorCiAyMDEwLTAzLTI4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUu
cHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcmkJKHJldmlzaW9uIDU2NzA2KQor
KysgV2ViQ29yZS9XZWJDb3JlLnByaQkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQCBj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfU0lOR0xFX1RIUkVBREVECiAhY29udGFpbnMoREVGSU5F
UywgRU5BQkxFX1NBTkRCT1g9Lik6IERFRklORVMgKz0gRU5BQkxFX1NBTkRCT1g9MQogIWNvbnRh
aW5zKERFRklORVMsIEVOQUJMRV9QUk9HUkVTU19UQUc9Lik6IERFRklORVMgKz0gRU5BQkxFX1BS
T0dSRVNTX1RBRz0xCiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0JMT0JfU0xJQ0U9Lik6IERF
RklORVMgKz0gRU5BQkxFX0JMT0JfU0xJQ0U9MAorIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9O
T1RJRklDQVRJT05TPS4pOiBERUZJTkVTICs9IEVOQUJMRV9OT1RJRklDQVRJT05TPTEKIAogZ3Jl
YXRlclRoYW4oUVRfTUlOT1JfVkVSU0lPTiwgNSkgewogICAgICFjb250YWlucyhERUZJTkVTLCBF
TkFCTEVfM0RfUkVOREVSSU5HPS4pOiBERUZJTkVTICs9IEVOQUJMRV8zRF9SRU5ERVJJTkc9MQpA
QCAtMTU3LDYgKzE1OCw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9PRkZMSU5FX1dFQl9B
UFAKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJfU09DS0VUUz0xKTogRkVBVFVSRV9ERUZJ
TkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX1dFQl9TT0NLRVRTPTEKIGNvbnRhaW5zKERFRklORVMs
IEVOQUJMRV9UT1VDSF9FVkVOVFM9MSk6IEZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVO
QUJMRV9UT1VDSF9FVkVOVFM9MQogY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1RJTEVEX0JBQ0tJ
TkdfU1RPUkU9MSk6IEZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9USUxFRF9C
QUNLSU5HX1NUT1JFPTEKK2NvbnRhaW5zKERFRklORVMsIEVOQUJMRV9OT1RJRklDQVRJT05TPTEp
OiBGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFCTEVfTk9USUZJQ0FUSU9OUz0xCiAK
IAogIyMgRGVyaXZlZCBzb3VyY2UgZ2VuZXJhdG9ycwpAQCAtNDA1LDYgKzQwNyw4IEBAIElETF9C
SU5ESU5HUyArPSBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwgXAog
ICAgIGluc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbCBcCiAgICAgbG9hZGVyL2FwcGNh
Y2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaWRsIFwKKyAgICBub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbi5pZGwgXAorICAgIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbCBcCiAg
ICAgcGFnZS9CYXJJbmZvLmlkbCBcCiAgICAgcGFnZS9Db25zb2xlLmlkbCBcCiAgICAgcGFnZS9D
b29yZGluYXRlcy5pZGwgXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA1NjcwNikKKysrIFdlYkNvcmUvV2ViQ29y
ZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTI5MCw2ICsyOTAsNyBAQCBTT1VSQ0VTICs9IFwKICAg
ICBiaW5kaW5ncy9qcy9KU0RhdGFHcmlkQ29sdW1uTGlzdEN1c3RvbS5jcHAgXAogICAgIGJpbmRp
bmdzL2pzL0pTRGF0YUdyaWREYXRhU291cmNlLmNwcCBcCiAgICAgYmluZGluZ3MvanMvSlNEZWJ1
Z1dyYXBwZXJTZXQuY3BwIFwKKyAgICBiaW5kaW5ncy9qcy9KU0Rlc2t0b3BOb3RpZmljYXRpb25z
Q3VzdG9tLmNwcCBcCiAgICAgYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAgXAogICAg
IGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAgXAogICAgIGJpbmRpbmdz
L2pzL0pTRE9NRm9ybURhdGFDdXN0b20uY3BwIFwKQEAgLTc1MCw2ICs3NTEsOCBAQCBTT1VSQ0VT
ICs9IFwKICAgICBsb2FkZXIvVGV4dERvY3VtZW50LmNwcCBcCiAgICAgbG9hZGVyL1RleHRSZXNv
dXJjZURlY29kZXIuY3BwIFwKICAgICBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAgXAorICAg
IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCBcCisgICAgbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25DZW50ZXIuY3BwIFwKICAgICBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNw
cCBcCiAgICAgcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgXAogICAgIHBh
Z2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAgXApAQCAtMTQ2OCw2ICsxNDcxLDEw
IEBAIEhFQURFUlMgKz0gXAogICAgIGxvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmggXAogICAg
IGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmggXAogICAgIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxl
TG9hZGVyLmggXAorICAgIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmggXAorICAgIG5vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmggXAorICAgIG5vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uUHJlc2VudGVyLmggXAorICAgIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udGVu
dHMuaCBcCiAgICAgcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5oIFwKICAgICBwYWdlL2Fu
aW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmggXAogICAgIHBhZ2UvYW5pbWF0aW9uL0NvbXBv
c2l0ZUFuaW1hdGlvbi5oIFwKQEAgLTIwMTEsNiArMjAxOCw3IEBAIEhFQURFUlMgKz0gXAogICAg
ICQkUFdELy4uL1dlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmRhdGFiYXNlX3AuaCBcCiAgICAgJCRQ
V0QvLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0RmFsbGJhY2tXZWJQb3B1cC5oIFwKICAg
ICAkJFBXRC8uLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5o
IFwKKyAgICAkJFBXRC8uLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50UXQuaCBcCiAgICAgJCRQV0QvcGxhdGZvcm0vbmV0d29yay9xdC9EbnNQcmVm
ZXRjaEhlbHBlci5oCiAKIFNPVVJDRVMgKz0gXApAQCAtMjA5Nyw2ICsyMTA1LDcgQEAgU09VUkNF
UyArPSBcCiAgICAgLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRDb21tYW5kUXQuY3Bw
IFwKICAgICAuLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5j
cHAgXAogICAgIC4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5j
cHAgXAorICAgIC4uL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRRdC5jcHAgXAogICAgIC4uL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBcCiAg
ICAgLi4vV2ViS2l0L3F0L0FwaS9xZ3JhcGhpY3N3ZWJ2aWV3LmNwcCBcCiAgICAgLi4vV2ViS2l0
L3F0L0FwaS9xd2VicGFnZS5jcHAgXApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rlc2t0
b3BOb3RpZmljYXRpb25zQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRGVza3RvcE5vdGlmaWNhdGlvbnNDdXN0b20uY3BwCShyZXZpc2lvbiA1NjcwNikKKysr
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNEZXNrdG9wTm90aWZpY2F0aW9uc0N1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgSlNWYWx1ZSBKU05vdGlmaWNhdGlvbkNlbnRl
cjo6cmVxdWVzdFBlcgogICAgIGlmICghYXJncy5hdCgwKS5pc09iamVjdCgpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOwogCi0gICAgUGFzc1JlZlB0cjxKU0N1
c3RvbVZvaWRDYWxsYmFjaz4gY2FsbGJhY2sgPSBKU0N1c3RvbVZvaWRDYWxsYmFjazo6Y3JlYXRl
KGFyZ3MuYXQoMCkuZ2V0T2JqZWN0KCksIHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCkt
PmZyYW1lKCkpOworICAgIFBhc3NSZWZQdHI8SlNDdXN0b21Wb2lkQ2FsbGJhY2s+IGNhbGxiYWNr
ID0gSlNDdXN0b21Wb2lkQ2FsbGJhY2s6OmNyZWF0ZShhcmdzLmF0KDApLmdldE9iamVjdCgpLCB0
b0pTRE9NR2xvYmFsT2JqZWN0KHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCksIGV4ZWMp
KTsKIAogICAgIGltcGwoKS0+cmVxdWVzdFBlcm1pc3Npb24oY2FsbGJhY2spOwogICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwpAQCAtNjcsNyArNjcsNyBAQCBKU1ZhbHVlIEpTTm90aWZpY2F0aW9u
OjphZGRFdmVudExpc3RlbmVyCiAgICAgaWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQogICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIGltcGwoKS0+YWRkRXZlbnRMaXN0ZW5lcihh
cmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVj
dChsaXN0ZW5lcikpLCBmYWxzZSwgY3VycmVudFdvcmxkKGV4ZWMpKSwgYXJncy5hdCgyKS50b0Jv
b2xlYW4oZXhlYykpOworICAgIGltcGwoKS0+YWRkRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDApLnRv
U3RyaW5nKGV4ZWMpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciks
IHRoaXMsIGZhbHNlLCBjdXJyZW50V29ybGQoZXhlYykpLCBhcmdzLmF0KDIpLnRvQm9vbGVhbihl
eGVjKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKQEAgLTc3LDcgKzc3LDcgQEAg
SlNWYWx1ZSBKU05vdGlmaWNhdGlvbjo6cmVtb3ZlRXZlbnRMaXN0ZQogICAgIGlmICghbGlzdGVu
ZXIuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBpbXBs
KCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSwgSlNFdmVu
dExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCBmYWxzZSwgY3VycmVudFdvcmxk
KGV4ZWMpKS5nZXQoKSwgYXJncy5hdCgyKS50b0Jvb2xlYW4oZXhlYykpOworICAgIGltcGwoKS0+
cmVtb3ZlRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLCBKU0V2ZW50TGlz
dGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIHRoaXMsIGZhbHNlLCBjdXJyZW50V29y
bGQoZXhlYykpLmdldCgpLCBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKSk7CiAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiB9CiAKSW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gNTY3MTcpCisrKyBXZWJLaXQvcXQv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTAtMDMtMjkgIExh
c3psbyBHb21ib3MgIDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gSW1wbGVtZW50IERlc2t0b3Ag
Tm90aWZpY2F0aW9ucyBBUEkgZm9yIFF0V2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTUwMworCisgICAgICAgIE1hcCBXZWJLaXQgbm90aWZp
Y2F0aW9ucyB0byBRdCdzIFN5c3RlbVRyYXkgQVBJIGFuZAorICAgICAgICBpbXBsZW1lbnQgRFJU
IHRyYWNpbmcuCisKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIHNl
Y3VyaXR5IHBhcnQgb2YKKyAgICAgICAgV2ViS2l0IG5vdGlmaWNhdGlvbnMuCisKKyAgICAgICAg
KiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVBy
aXZhdGUpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIEFwaS9xd2VicGFn
ZV9wLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6Om5vdGlmaWNhdGlvblByZXNlbnRlcik6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5jcHA6IEFkZGVkLgorICAg
ICAgICAocXRfZHVtcF9ub3RpZmljYXRpb24pOgorICAgICAgICAoTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50UXQ6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0KToKKyAgICAgICAgKE5v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpzaG93KToKKyAgICAgICAgKE5vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudFF0OjpjYW5jZWwpOgorICAgICAgICAoTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50UXQ6Om5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZCk6CisgICAgICAgIChOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAo
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OmNoZWNrUGVybWlzc2lvbik6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQuaDogQWRkZWQu
CisKIDIwMTAtMDMtMjggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAg
ICAgICAgQnVpbGQgZml4LiBJbmNsdWRlIFdpbmRvd3NLZXlib2FyZENvZGVzLmggaW5zdGVhZCBv
ZiBLZXlib2FyZENvZGVzLmguCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkocmV2aXNpb24gNTY3MDYpCisr
KyBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAs
NyBAQAogI2luY2x1ZGUgIkNhY2hlLmgiCiAjaW5jbHVkZSAicnVudGltZS9Jbml0aWFsaXplVGhy
ZWFkaW5nLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9u
UHJlc2VudGVyQ2xpZW50UXQuaCIKICNpbmNsdWRlICJRV2ViUGFnZUNsaWVudC5oIgogI2luY2x1
ZGUgIldvcmtlclRocmVhZC5oIgogCkBAIC00ODAsNiArNDgxLDEwIEBAIFFXZWJQYWdlUHJpdmF0
ZTo6UVdlYlBhZ2VQcml2YXRlKFFXZWJQYWcKICAgICBtZW1zZXQoYWN0aW9ucywgMCwgc2l6ZW9m
KGFjdGlvbnMpKTsKIAogICAgIFBhZ2VHcm91cDo6c2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3Mo
dHJ1ZSk7CisgICAgCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpICAgIAorICAgIG5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudCA9IG5ldyBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdCgp
OworI2VuZGlmCiB9CiAKIFFXZWJQYWdlUHJpdmF0ZTo6flFXZWJQYWdlUHJpdmF0ZSgpCkBAIC00
OTIsNiArNDk3LDEwIEBAIFFXZWJQYWdlUHJpdmF0ZTo6flFXZWJQYWdlUHJpdmF0ZSgpCiAjZW5k
aWYKICAgICBkZWxldGUgc2V0dGluZ3M7CiAgICAgZGVsZXRlIHBhZ2U7CisgICAgCisjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCisgICAgZGVsZXRlIG5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dDsKKyNlbmRpZgogfQogCiBXZWJDb3JlOjpQYWdlKiBRV2ViUGFnZVByaXZhdGU6OmNvcmUoUVdl
YlBhZ2UqIHBhZ2UpCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oCShyZXZpc2lvbiA1NjcwNikKKysrIFdlYktpdC9x
dC9BcGkvcXdlYnBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRRdDsKICAgICBjbGFzcyBJ
bnNwZWN0b3JDbGllbnRRdDsKICAgICBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0Owor
ICAgIGNsYXNzIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OwogICAgIGNsYXNzIFJlc291
cmNlSGFuZGxlOwogICAgIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiAgICAgY2xhc3MgUU5ldHdvcmtS
ZXBseUhhbmRsZXI7CkBAIC0zNjUsNiArMzY2LDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDsKICAgICBmcmllbmQgY2xhc3MgV2ViQ29y
ZTo6SW5zcGVjdG9yQ2xpZW50UXQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6Okluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50UXQ7CisgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6Ok5vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudFF0OwogICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTsKICAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRsZXI7CiB9
OwpJbmRleDogV2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L3F0L0FwaS9xd2VicGFnZV9wLmgJKHJldmlzaW9uIDU2NzA2KQorKysgV2ViS2l0L3F0L0FwaS9x
d2VicGFnZV9wLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIGNsYXNzIEVkaXRvckNsaWVudFF0OwogICAgIGNsYXNzIEVsZW1lbnQ7CiAg
ICAgY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKKyAgICBjbGFzcyBOb3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRRdDsKICAgICBjbGFzcyBOb2RlOwogICAgIGNsYXNzIFBhZ2U7CiAgICAgY2xh
c3MgRnJhbWU7CkBAIC0xODQsNiArMTg1LDggQEAgcHVibGljOgogICAgIFFXZWJJbnNwZWN0b3Iq
IGluc3BlY3RvcjsKICAgICBib29sIGluc3BlY3RvcklzSW50ZXJuYWxPbmx5OyAvLyBUcnVlIGlm
IGNyZWF0ZWQgdGhyb3VnaCB0aGUgSW5zcGVjdCBjb250ZXh0IG1lbnUgYWN0aW9uCiAgICAgUXQ6
OkRyb3BBY3Rpb24gbV9sYXN0RHJvcEFjdGlvbjsKKyAgICAKKyAgICBXZWJDb3JlOjpOb3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRRdCogbm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50OwogCiAg
ICAgc3RhdGljIGJvb2wgZHJ0UnVuOwogfTsKSW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudFF0LmNwcAkocmV2aXNpb24gNTY3MDYpCisrKyBXZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5o
IgogI2luY2x1ZGUgIkljb24uaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRRdC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFy
VGhlbWUuaCIKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgpAQCAtNDY5LDYgKzQ3MCwxMyBA
QCB2b2lkIENocm9tZUNsaWVudFF0OjpyZWFjaGVkTWF4QXBwQ2FjaGVTCiB9CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorTm90aWZpY2F0aW9uUHJlc2VudGVyKiBDaHJvbWVD
bGllbnRRdDo6bm90aWZpY2F0aW9uUHJlc2VudGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93
ZWJQYWdlLT5kLT5ub3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnQ7Cit9CisjZW5kaWYKKwogdm9p
ZCBDaHJvbWVDbGllbnRRdDo6cnVuT3BlblBhbmVsKEZyYW1lKiBmcmFtZSwgUGFzc1JlZlB0cjxG
aWxlQ2hvb3Nlcj4gcHJwRmlsZUNob29zZXIpCiB7CiAgICAgUmVmUHRyPEZpbGVDaG9vc2VyPiBm
aWxlQ2hvb3NlciA9IHBycEZpbGVDaG9vc2VyOwpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudFF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudFF0LmgJKHJldmlzaW9uIDU2NzA2KQorKysgV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw2ICsxMjgs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1h
eEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKTsKICNlbmRpZgogCisjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpCisgICAgICAgIHZpcnR1YWwgTm90aWZpY2F0aW9uUHJlc2VudGVyKiBu
b3RpZmljYXRpb25QcmVzZW50ZXIoKSBjb25zdDsKKyNlbmRpZgorCiAjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQogICAgICAgICAvLyBzZWUgQ2hyb21lQ2xpZW50LmgKICAgICAgICAg
Ly8gdGhpcyBpcyBhIGhvb2sgZm9yIFdlYkNvcmUgdG8gdGVsbCB1cyB3aGF0IHdlIG5lZWQgdG8g
ZG8gd2l0aCB0aGUgR3JhcGhpY3NMYXllcnMKSW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0LmNwcAkocmV2
aXNpb24gMCkKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRRdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dFF0LmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisKKyNp
bmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCisKKyNpbmNsdWRlIDxRdEd1aT4KKworc3RhdGljIGJv
b2wgZHVtcE5vdGlmaWNhdGlvbiA9IGZhbHNlOworCit2b2lkIFFXRUJLSVRfRVhQT1JUIHF0X2R1
bXBfbm90aWZpY2F0aW9uKGJvb2wgYikKK3sKKyAgICBkdW1wTm90aWZpY2F0aW9uID0gYjsKK30K
KworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNs
aWVudFF0KCkKK3sKK30KKworYm9vbCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6c2hv
dyhOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK3sKKyAgICBpZiAoZHVtcE5vdGlmaWNhdGlv
bikgeworICAgICAgICBpZiAobm90aWZpY2F0aW9uLT5pc0hUTUwoKSkKKyAgICAgICAgICAgIHBy
aW50ZigiREVTS1RPUCBOT1RJRklDQVRJT046IGNvbnRlbnRzIGF0ICVzXG4iLCBRU3RyaW5nKG5v
dGlmaWNhdGlvbi0+dXJsKCkuc3RyaW5nKCkpLnRvVXRmOCgpLmNvbnN0RGF0YSgpKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBwcmludGYoIkRFU0tUT1AgTk9USUZJQ0FUSU9OOiBpY29u
ICVzLCB0aXRsZSAlcywgdGV4dCAlc1xuIiwgCisgICAgICAgICAgICAgICAgUVN0cmluZyhub3Rp
ZmljYXRpb24tPmNvbnRlbnRzKCkuaWNvbigpKS50b1V0ZjgoKS5jb25zdERhdGEoKSwgUVN0cmlu
Zyhub3RpZmljYXRpb24tPmNvbnRlbnRzKCkudGl0bGUoKSkudG9VdGY4KCkuY29uc3REYXRhKCks
IAorICAgICAgICAgICAgICAgIFFTdHJpbmcobm90aWZpY2F0aW9uLT5jb250ZW50cygpLmJvZHko
KSkudG9VdGY4KCkuY29uc3REYXRhKCkpOworICAgICAgICB9CisgICAgfQorICAgICAgICAgICAg
CisgICAgbV90cmF5LnNob3coKTsKKyAgICBtX3RyYXkuc2hvd01lc3NhZ2Uobm90aWZpY2F0aW9u
LT5jb250ZW50cygpLnRpdGxlKCksIG5vdGlmaWNhdGlvbi0+Y29udGVudHMoKS5ib2R5KCksIFFT
eXN0ZW1UcmF5SWNvbjo6SW5mb3JtYXRpb24pOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Zv
aWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OmNhbmNlbChOb3RpZmljYXRpb24qIG5v
dGlmaWNhdGlvbikKK3sgIAorICAgIGlmIChkdW1wTm90aWZpY2F0aW9uKSB7CisgICAgICAgIGlm
IChub3RpZmljYXRpb24tPmlzSFRNTCgpKQorICAgICAgICAgICAgcHJpbnRmKCJERVNLVE9QIE5P
VElGSUNBVElPTiBDTE9TRUQ6ICVzXG4iLCBRU3RyaW5nKG5vdGlmaWNhdGlvbi0+dXJsKCkuc3Ry
aW5nKCkpLnRvVXRmOCgpLmNvbnN0RGF0YSgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
cHJpbnRmKCJERVNLVE9QIE5PVElGSUNBVElPTiBDTE9TRUQ6ICVzXG4iLCBRU3RyaW5nKG5vdGlm
aWNhdGlvbi0+Y29udGVudHMoKS50aXRsZSgpKS50b1V0ZjgoKS5jb25zdERhdGEoKSk7CisgICAg
fQorCisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBOb3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRRdDo6bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKE5vdGlmaWNhdGlvbiogbm90
aWZpY2F0aW9uKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgTm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50UXQ6OnJlcXVlc3RQZXJtaXNzaW9uKFNlY3VyaXR5T3JpZ2luKiBv
cmlnaW4sIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFjaykKK3sgIAorICAgIGlmIChk
dW1wTm90aWZpY2F0aW9uKQorICAgICAgcHJpbnRmKCJERVNLVE9QIE5PVElGSUNBVElPTiBQRVJN
SVNTSU9OIFJFUVVFU1RFRDogJXNcbiIsIFFTdHJpbmcob3JpZ2luLT50b1N0cmluZygpKS50b1V0
ZjgoKS5jb25zdERhdGEoKSk7CisKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitOb3RpZmlj
YXRpb25QcmVzZW50ZXI6OlBlcm1pc3Npb24gTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6
OmNoZWNrUGVybWlzc2lvbihTZWN1cml0eU9yaWdpbiopCit7CisgICAgLy8gRklYTUUgSW1wbGVt
ZW50IHBlcm1pc3Npb24gcG9saWN5CisgICAgcmV0dXJuIE5vdGlmaWNhdGlvblByZXNlbnRlcjo6
UGVybWlzc2lvbkFsbG93ZWQ7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykK
SW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRRdC5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0LmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCisjaW5jbHVk
ZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyLmgiCisKKyNpbmNsdWRlIDxRU3lzdGVtVHJheUljb24+
CisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgRG9jdW1lbnQ7CitjbGFzcyBLVVJMOworCitjbGFzcyBOb3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRRdCA6IHB1YmxpYyBOb3RpZmljYXRpb25QcmVzZW50ZXIgeworcHVibGljOgorICAgIE5v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0KCk7CisKKyAgICAvKiBXZWJDb3JlOjpOb3RpZmlj
YXRpb25QcmVzZW50ZXIgaW50ZXJmYWNlICovCisgICAgdmlydHVhbCBib29sIHNob3coTm90aWZp
Y2F0aW9uKik7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbChOb3RpZmljYXRpb24qKTsKKyAgICB2
aXJ0dWFsIHZvaWQgbm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKE5vdGlmaWNhdGlvbiopOwor
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihTZWN1cml0eU9yaWdpbiosIFBhc3NS
ZWZQdHI8Vm9pZENhbGxiYWNrPik7CisgICAgdmlydHVhbCBOb3RpZmljYXRpb25QcmVzZW50ZXI6
OlBlcm1pc3Npb24gY2hlY2tQZXJtaXNzaW9uKFNlY3VyaXR5T3JpZ2luKik7CisKK3ByaXZhdGU6
IAorICAgIFFTeXN0ZW1UcmF5SWNvbiBtX3RyYXk7Cit9OworfQorCisjZW5kaWYKSW5kZXg6IFdl
YktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDU2NzA2KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDMtMjggIExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5n
b21ib3NAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFtRdF0gSW1wbGVtZW50IERlc2t0b3AgTm90aWZpY2F0aW9ucyBBUEkgZm9yIFF0
V2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
NTUwMworCisgICAgICAgIERSVCBzdHVicyBmb3Igbm90aWZpY2F0aW9uLiBFbmFibGVzIHRvIHJ1
biBhbmQgcGFzcworICAgICAgICAzIChjdXJyZW50bHkgZGlzYWJsZWQpIHRlc3RzLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmdyYW50RGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Np
b24pOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNoZWNrRGVza3RvcE5vdGlmaWNh
dGlvblBlcm1pc3Npb24pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuaDoKKwogMjAxMC0wMy0yOCAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25z
QGdub21lLm9yZz4KIAogICAgICAgICBObyByZXZpZXcsIHJvbGxpbmcgb3V0IHI1NjY3OS4KSW5k
ZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRl
c3RDb250cm9sbGVyUXQuY3BwCShyZXZpc2lvbiA1NjcwNikKKysrIFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01OCwxMiArNTgsMTQgQEAgZXh0ZXJuIHZvaWQgcXRfZHJ0X3dlYmluc3BlY3Rvcl9leGVjdXRl
UwogZXh0ZXJuIHZvaWQgcXRfZHJ0X3dlYmluc3BlY3Rvcl9zaG93KFFXZWJQYWdlICpwYWdlKTsK
IGV4dGVybiB2b2lkIHF0X2RydF93ZWJpbnNwZWN0b3JfY2xvc2UoUVdlYlBhZ2UgKnBhZ2UpOwog
ZXh0ZXJuIHZvaWQgcXRfZHJ0X2VuYWJsZUNhcmV0QnJvd3NpbmcoUVdlYlBhZ2UqIHBhZ2UsIGJv
b2wgdmFsdWUpOworZXh0ZXJuIHZvaWQgcXRfZHVtcF9ub3RpZmljYXRpb24oYm9vbCBiKTsKIAog
TGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKFdlYkNvcmU6OkR1bXBS
ZW5kZXJUcmVlKiBkcnQpCiAgICAgOiBRT2JqZWN0KCkKICAgICAsIG1fZHJ0KGRydCkKIHsKICAg
ICByZXNldCgpOworICAgIHF0X2R1bXBfbm90aWZpY2F0aW9uKHRydWUpOwogfQogCiB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpyZXNldCgpCkBAIC0xOTAsNiArMTkyLDE3IEBAIGludCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6d2luZG93Q291bnQoKQogICAgIHJldHVybiBtX2RydC0+d2luZG93
Q291bnQoKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Z3JhbnREZXNrdG9wTm90
aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBRU3RyaW5nJiBvcmlnaW4pCit7CisgICAgLy8gRklY
TUU6IEltcGxlbWVudCBmb3Igbm90aWZpY2F0aW9uIHNlY3VyaXR5Cit9CisKK2Jvb2wgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OmNoZWNrRGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3Qg
UVN0cmluZyYgb3JpZ2luKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIG5vdGlmaWNh
dGlvbiBzZWN1cml0eQorICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpkaXNwbGF5KCkKIHsKICAgICBlbWl0IHNob3dQYWdlKCk7CkluZGV4OiBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJR
dC5oCShyZXZpc2lvbiA1NjcwNikKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xh
eW91dFRlc3RDb250cm9sbGVyUXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDYgKzExMCw4IEBA
IHB1YmxpYyBzbG90czoKICAgICB2b2lkIHByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZvaWQgc2V0
Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlKGJvb2wgPSBmYWxzZSkge30KICAgICBp
bnQgd2luZG93Q291bnQoKTsKKyAgICB2b2lkIGdyYW50RGVza3RvcE5vdGlmaWNhdGlvblBlcm1p
c3Npb24oY29uc3QgUVN0cmluZyYgb3JpZ2luKTsKKyAgICBib29sIGNoZWNrRGVza3RvcE5vdGlm
aWNhdGlvblBlcm1pc3Npb24oY29uc3QgUVN0cmluZyYgb3JpZ2luKTsKICAgICB2b2lkIGRpc3Bs
YXkoKTsKICAgICB2b2lkIGNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CiAgICAgUVN0cmluZyBwYXRo
VG9Mb2NhbFJlc291cmNlKGNvbnN0IFFTdHJpbmcmIHVybCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>