position:relative;
  padding:0;
  .border-radius-top(@border-radius-input);
  background: rgb(252,243,212);
  background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZjZjNkNCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjQlIiBzdG9wLWNvbG9yPSIjZTZkMDk1IiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iOTUlIiBzdG9wLWNvbG9yPSIjYzQ5MDRhIiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iOTclIiBzdG9wLWNvbG9yPSIjYmI4NjQ1IiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iOTklIiBzdG9wLWNvbG9yPSIjYzdhNjdmIiBzdG9wLW9wYWNpdHk9IjEiLz4KICAgIDxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2U4ZTNkOCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgPC9saW5lYXJHcmFkaWVudD4KICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSJ1cmwoI2dyYWQtdWNnZy1nZW5lcmF0ZWQpIiAvPgo8L3N2Zz4=);
  background: -moz-linear-gradient(top,  rgba(252,243,212,1) 0%, rgba(230,208,149,1) 4%, rgba(196,144,74,1) 95%, rgba(187,134,69,1) 97%, rgba(199,166,127,1) 99%, rgba(232,227,216,1) 100%);
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(252,243,212,1)), color-stop(4%,rgba(230,208,149,1)), color-stop(95%,rgba(196,144,74,1)), color-stop(97%,rgba(187,134,69,1)), color-stop(99%,rgba(199,166,127,1)), color-stop(100%,rgba(232,227,216,1)));
  background: -webkit-linear-gradient(top,  rgba(252,243,212,1) 0%,rgba(230,208,149,1) 4%,rgba(196,144,74,1) 95%,rgba(187,134,69,1) 97%,rgba(199,166,127,1) 99%,rgba(232,227,216,1) 100%);
  background: -o-linear-gradient(top,  rgba(252,243,212,1) 0%,rgba(230,208,149,1) 4%,rgba(196,144,74,1) 95%,rgba(187,134,69,1) 97%,rgba(199,166,127,1) 99%,rgba(232,227,216,1) 100%);
  background: -ms-linear-gradient(top,  rgba(252,243,212,1) 0%,rgba(230,208,149,1) 4%,rgba(196,144,74,1) 95%,rgba(187,134,69,1) 97%,rgba(199


52]
	str	r2, [r3, #564]
	ldr	r2, [ip, #2680]
	ldr	r2, [r2, #84]
	sub	r2, r2, #1
	cmp	r2, #2
	ldrls	lr, .L399
	movhi	r2, #0
	addls	r2, lr, r2, lsl #2
	ldrls	r2, [r2, #148]
	str	r2, [r3, #568]
	mov	r2, #0
	str	r2, [r3, #572]
	str	r2, [r3, #576]
	ldr	lr, [r1, #72]
	str	r2, [r3, #584]
	str	lr, [r3, #580]
	ldr	ip, [ip, #1392]
	sub	ip, ip, #1
	clz	ip, ip
	mov	ip, ip, lsr #5
	str	ip, [r3, #588]
	ldr	ip, [r1, #40]
	str	ip, [r3, #592]
	ldr	r1, [r1, #44]
	str	r1, [r3, #596]
	ldr	r1, [r0, #4084]
	str	r1, [r3, #600]
	ldr	ip, [r0, #4084]
	ldr	r1, [r0, #4088]
	cmp	ip, r1
	rsbge	r2, r1, ip
	str	r2, [r3, #604]
	ldmfd	sp, {fp, sp, pc}
.L400:
	.align	2
.L399:
	.word	.LANCHOR0
	UNWIND(.fnend)
	.size	MP2_RecordVFMWState, .-MP2_RecordVFMWState
	.align	2
	.global	MP2_GetUsrData
	.type	MP2_GetUsrData, %function
MP2_GetUsrData:
	UNWIND(.fnstart)
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	UNWIND(.movsp ip)
	mov	ip, sp
	stmfd	sp!, {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
	UNWIND(.pad #4)
	UNWIND(.save {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr})
	UNWIND(.setfp fp, ip, #-4)
	sub	fp, ip, #4
	UNWIND(.pad #12)
	sub	sp, sp, #12
	add	r7, r0, #78848
	add	r4, r7, #576
	mov	r6, r0
	mov	r0, r4
	bl	BsToNextByte
	mov	r0, r4
	bl	BsResidBits
	add	r9, r0, #7
	cmp	r0, #0
	movlt	r0, r9
	mov	r9, r0, asr #3
	cmp	r9, #0
	ble	.L421
	mov	r5, #0
	ldr	r10, .L439
	mov	r8, r5
	b	.L406
.L436:
	bl	BsGet
	add	r8, r8, #1
	cmp	r8, r9
	strb	r0, [r10, r5]
	add	r5, r5, #1
	beq	.L402
.L406:
	mov	r1, #24
	mov	r0, r4
	bl	BsShow
	mov	r1, #8
	bic	r3, r0,


LibLambert forward(double lon0, double lat, double lon) {
    if (lon - lon0 >= 180) {
      lon -= lon0 + 360;
    } else if (lon - lon0 < -180) {
      lon -= lon0 - 360;
    } else {
      lon -= lon0;
    }

    lat *= _sign;
    // From Snyder, we have
    //
    // theta = n * lambda
    // x = rho * sin(theta)
    //   = (nrho0 + n * drho) * sin(theta)/n
    // y = rho0 - rho * cos(theta)
    //   = nrho0 * (1-cos(theta))/n - drho * cos(theta)
    //
    // where nrho0 = n * rho0, drho = rho - rho0
    // and drho is evaluated with divided differences
    double lam = lon * _GeoMath.degree(),
        phi = lat * _GeoMath.degree(),
        sphi = sin(phi),
        cphi = lat.abs() != 90 ? cos(phi) : epsx_,
        tphi = sphi / cphi,
        tbet = _fm * tphi,
        scbet = _hyp(tbet),
        scphi = 1 / cphi,
        shxi = _sinh(_eatanhe(sphi)),
        tchi = _hyp(shxi) * tphi - shxi * scphi,
        scchi = _hyp(tchi),
        psi = _GeoMath.asinh(tchi),
        theta = _n * lam,
        stheta = sin(theta),
        ctheta = cos(theta),
        dpsi = _Dasinh(tchi, _tchi0, scchi, _scchi0) * (tchi - _tchi0),
        drho = -_scale *
            (2 * _nc < 1 && dpsi != 0
                ? (exp(_GeoMath.sq(_nc) / (1 + _n) * psi) * (tchi > 0 ? 1 / (scchi + tchi) : (scchi - tchi)) -
                        (_t0nm1 + 1)) /
                    (-_n)
                : _Dexp(-_n * psi, -_n * _psi0) * dpsi);

    var x = (_nrho0 + _n * drho) * (_n != 0 ? stheta / _n : lam);
    var y =
        _nrho0 * (_n != 0 ? (ctheta < 0 ? 1 - ctheta : _GeoMath.sq(stheta) / (1 + ctheta)) / _n : 0) - drho * ctheta;
    var k = _k0 *
        (scbet / _scbet0) /
        (exp(-(_GeoMath.sq(_nc) / (1 + _n)) * dpsi) *
            (tchi >= 0 ? scchi + tchi : 1 / (scchi - tchi)) /
            (_scchi0 + _tchi0));
    y *= _sign;
    var gamma = _sign * theta / _GeoMath.degree();

    return GeographicLibLambert(x, y, gamma, k);
  }

  /*
   * Reverse projection, from Lambert conformal conic to geographic.
   *
   * @param[in] lon0 central meridian longitude (degrees).
   * @param[in] x easting of point (meters).
   * @param[in] y northing of point (meters).
   * @param[out] lat latitude of point (degrees).
   * @param[out] lon longitude of point (degrees).
   * @param[out] gamma meridian convergence at point (degrees).
   * @param[out] k scale of projection at point.
   *
   * The latitude origin is given by LambertConformalConic::LatitudeOrigin().
   * No false easting or northing is added.  \e lon0 s


>
Computes an array of integers made of all currently opened units.
On output, nbunits is the number of opened units and
units ( iunit ) is the unit number for the opened unit #iunit
with 1<= iunit <= nbunits.

fileunit_displayopen ( reportunitnumber )

integer, intent ( in ) :: reportunitnumber

Writes on unit unitnumber the full list of opened units and their associated
filenames.

fileunit_report ( reportunitnumber iunit)

integer, intent ( in ) :: reportunitnumber

integer, intent ( in ) :: iunit

Compute report about logical unit iunit and write it on
unit unitnumber. Note : All possible features of the "inquire" intrinsic are used.

fileunit_closeallopen ( )

Close all currently opened units.

fileunit_getfreeunit ( ) result ( freeunit )

integer :: freeunit

Returns a free fortran unit freeunit as an integer between 1 and FILEUNIT_MAX_UNIT_NUMBER,
representing a free FORTRAN logical unit.
If no free unit can be found, generates an error.
Note that fileunit_getfreeunit assumes that units 5 and 6
are special, and will never return those values.
Original Author : John Burkardt

fileunit_set_stoponerror ( stoponerror)

integer :: freeunit

Configure the behaviour of the component whenever an
error is met.
If stoponerror is true, then the execution stops if an error is encountered.
If stoponerror is false, then the execution continues if an error is encountered.
In both cases, a message is displayed on standard output.

TODO

 allow to "lock" a collection of logical units, so that an
 external library which may use constant units can be linked.

 allow to "unlock" one unit, or all units at once.

COPYRIGHT

Copyright © 2008 Michael Baudin michael.baudin@gmail.com

<! -- -*- flibs -*- doctools manpage
   -->

<title>libdate - flibs </title>


 " should be positive";

//       NTA_ASSERT(0 <= new_ncols) << "SparseMatrix resize: "
//                                  << "New number of columns: " << new_ncols
//                                  << " should be positive";
//     } // End pre-conditions

//     const size_type nrows = nRows();

//     if (new_nrows > nrows_max_ - 1)
//       reserve_(new_nrows);

//     if (new_nrows < nrows) {

//       if (isCompact())
//         decompact();

//       for (size_type row = new_nrows; row != nrows; ++row) {
//         delete[] ind_[row];
//         delete[] nz_[row];
//         ind_[row] = nullptr;
//         nz_[row] = nullptr;
//         nnzr_[row] = 0;
//       }
//     }

//     if (new_ncols < nCols()) {
//       ITERATE_ON_ALL_ROWS {
//         size_type k = 0, *ind = ind_[row];
//         while (k < nnzr_[row] && ind[k] < new_ncols)
//           ++k;
//         nnzr_[row] = k;
//       }
//     }

//     // Avoid re-allocating the buffers as much as possible,
//     // but also shrink them if the matrix really shrinks
//     if (new_ncols > ncols_ || new_ncols < ncols_ / 2)
//       reAllocateBuffers_(new_ncols);

//     nrows_ = new_nrows;
//     ncols_ = new_ncols;

//     if (setToZero)
//       this->setToZero();
//   }

//   /**
//    * Reshapes this matrix to the new number of rows and columns specified.
//    * The new number of elements in the matrix must be the same as the old
//    * number of elements:
//    * new_nrows * new_ncols = nrows * ncols.
//    *
//    * @param new_nrows [size_type] the new number of rows
//    * @param new_ncols [size_type] the new number of columns
//    */
//   inline void reshape(size_type new_nrows, size_type new_ncols) {
//     { // Pre-conditions
//       NTA_ASSERT(0 <= new_nrows) << "SparseMatrix reshape: "
//                                  << "New number of rows: " << new_nrows
//                                  << " should be positive";

//       NTA_ASSERT(0 <= new_ncols) << "SparseMatrix reshape: "
//                                  << "New number of columns: " << new_ncols
//                                  << " should be positive";

//       NTA_ASSERT((double)new_nrows * new_ncols == (double)nRows() * nCols())
//           << "SparseMatrix reshape: "
//           << "New number of elements must be equal to "
//           << "old number of elements";
//     } // End pre-conditions

//     if (!isCompact())
//       compact();

//     const size_type old_nrows = nRows();
//     const size_type old_ncols = nCols();

//     size_type *ind_it = ind_mem_;
//     value_type *nz_it = nz_mem_;
//     size_type count = 0, last_row = 0;

//     auto old_nnzr = new size_type[old_nrows];
//     std::copy(nnzr_, nnzr_ + old_nrows, old_nnzr);

//     nrows_max_ = std::max<size_type>(8, new_nrows);

//     d


te) Test_torDetect_detects(c *C) {
	origTor := ournet.Tor
	defer func() {
		ournet.Tor = origTor
	}()

	ournet.Tor = mockTorState("127.0.0.1:9999", true)

	c.Assert(torDetect(), Equals, true)
}

func (s *ConnectionPolicySuite) Test_buildInOutLogs_createsLogger(c *C) {
	raw := bytes.Buffer{}
	in, out := buildInOutLogs(&raw)

	inr := in.(*rawLogger)
	outr := out.(*rawLogger)

	c.Assert(inr.out, Equals, &raw)
	c.Assert(outr.out, Equals, &raw)

	c.Assert(inr.prefix, DeepEquals, []byte("<- "))
	c.Assert(outr.prefix, DeepEquals, []byte("-> "))

	c.Assert(inr.lock, Equals, outr.lock)

	c.Assert(inr.other, Equals, outr)
	c.Assert(outr.other, Equals, inr)
}

func (s *ConnectionPolicySuite) Test_ConnectionPolicy_Connect_failsIfBuildingDialerFails(c *C) {
	origBuildDialerForFunc := buildDialerFor
	defer func() {
		buildDialerFor = origBuildDialerForFunc
	}()

	buildDialerFor = func(p *ConnectionPolicy, conf *Account, verifier ourtls.Verifier) (interfaces.Dialer, error) {
		return nil, errors.New("foooo")
	}

	cp := &ConnectionPolicy{}
	conn, e := cp.Connect("", "", nil, nil)
	c.Assert(e, ErrorMatches, "foooo")
	c.Assert(conn, IsNil)
}

type mockDialer struct {
	argPassword         string
	argResource         string
	argShouldConnectTLS bool
	argShouldSendALPN   bool

	returnDialConn interfaces.Conn
	returnDialErr  error

	returnRegisterConn interfaces.Conn
	returnRegisterErr  error
}

func (md *mockDialer) Config() data.Config { return data.Config{} }
func (md *mockDialer) Dial() (interfaces.Conn, error) {
	return md.returnDialConn, md.returnDialErr
}
func (md *mockDialer) GetServer() string { return "" }
func (md *mockDialer) RegisterAccount(data.FormCallback) (interfaces.Conn, error) {
	return md.returnRegisterConn, md.returnRegisterErr
}
func (md *mockDialer) ServerAddress() string { return "" }
func (md *mockDialer) SetConfig(data.Config) {}
func (md *mockDialer) SetJID(string)         {}
func (md *mockDialer) SetPassword(v string) {
	md.argPassword = v
}
func (md *mockDialer) SetProxy(proxy.Dialer) {}
func (md *mockDialer) SetResource(v string) {
	md.argResource = v
}
func (md *mockDialer) SetServerAddress(string) {}
func (md *mockDialer) SetShouldConnectTLS(v bool) {
	md.argShouldConnectTLS = v
}
func (md *mockDialer) SetShouldSendALPN(v bool) {
	md.argShouldSendALPN = v
}
func (md *mockDialer) SetLogger(coylog.Logger)  {}
func (md *mockDialer) SetKnown(*servers.Server) {}

func (s *ConnectionPolicySuite) Test_ConnectionPolicy_Connect_succeedsAndDials(c *C) {
	origBuildDialerForFunc := buildDialerFor
	defer func() {
		buildDialerFor = origBuildDialerForFunc
	}()

	expConn := xmpp.NewConn(nil, nil, "")

	dialer


y.svg") // 16x16

        @JvmField val FROWN = load("/icons/misc/frown.svg") // 16x16

        @JvmField val LEARN = load("/icons/misc/learn.svg") // 16x16

        @JvmField val JAVA = load("/icons/misc/java.svg") // 16x16

        @JvmField val PYTHON = load("/icons/misc/python.svg") // 16x16

        @JvmField val JAVASCRIPT = load("/icons/misc/javaScript.svg") // 16x16

        @JvmField val TYPESCRIPT = load("/icons/misc/typeScript.svg") // 16x16

        @JvmField val CSHARP = load("/icons/misc/csharp.svg") // 16x16

        @JvmField val NEW = load("/icons/misc/new.svg") // 16x16
    }

    object Resources {
        @JvmField val APPRUNNER_SERVICE = load("/icons/resources/AppRunnerService.svg") // 16x16

        @JvmField val CLOUDFORMATION_STACK = load("/icons/resources/CloudFormationStack.svg") // 16x16

        object CloudWatch {
            @JvmField val LOGS = load("/icons/resources/cloudwatchlogs/CloudWatchLogs.svg") // 16x16

            @JvmField val LOGS_TOOL_WINDOW = load("/icons/resources/cloudwatchlogs/CloudWatchLogsToolWindow.svg") // 13x13

            @JvmField val LOG_GROUP = load("/icons/resources/cloudwatchlogs/CloudWatchLogsGroup.svg") // 16x16
        }

        @JvmField val ECR_REPOSITORY = load("/icons/resources/ECRRepository.svg") // 16x16

        @JvmField val LAMBDA_FUNCTION = load("/icons/resources/LambdaFunction.svg") // 16x16

        @JvmField val SCHEMA_REGISTRY = load("/icons/resources/SchemaRegistry.svg") // 16x16

        @JvmField val SCHEMA = load("/icons/resources/Schema.svg") // 16x16

        @JvmField val SERVERLESS_APP = load("/icons/resources/ServerlessApp.svg") // 16x16

        @JvmField val S3_BUCKET = load("/icons/resources/S3Bucket.svg") // 16x16

        @JvmField val REDSHIFT = load("/icons/resources/Redshift.svg") // 16x16

        object DynamoDb {
            @JvmField val TABLE = load("/icons/resources/dynamodb/DynamoDbTable.svg")
        }

        object Ecs {
            @JvmField val ECS_CLUSTER = load("/icons/resources/ecs/EcsCluster.svg")

            @JvmField val ECS_SERVICE = load("/icons/resources/ecs/EcsService.svg")

            @JvmField val ECS_TASK_DEFINITION = load("/icons/resources/ecs/EcsTaskDefinition.svg")
        }

        object Rds {
            @JvmField val MYSQL = load("/icons/resources/rds/Mysql.svg") // 16x16

            @JvmField val POSTGRES = load("/icons/resources/rds/Postgres.svg") // 16x16
        }

        object Sqs {
            @JvmField val SQS_QUEUE = load("/icons/resources/sqs/SqsQueue.svg") // 16x16

            @JvmField val SQS_TOOL_WINDOW = load("/icons/resources/sqs/SqsToolWindow.svg") // 13x13
        }

        object CodeWhisperer {
            @JvmField val CUSTOM = load("icons/resources/CodewhispererCustom.svg") // 16 * 16

            // Icons with full severity string

            @JvmField val SEVERITY_INFO = load("/icons/resources/codewhisperer/severity-info.svg")

            @JvmField val SEVERITY_LOW = load("/icons/resources/codewhisperer/severity-low.svg")

            @JvmField val SEVERITY_MEDIUM = load("/icons/


s.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2FHDVinnie%2FTrackerHub%2FHEAD%2Fapi%2Fpass-the-popcorn%2Fuptime-day.json">

|  Redacted | 🟩 Up | [redacted.yml](https://github.com/HDVinnie/TrackerHub/commits/HEAD/history/redacted.yml) |  4684ms

 | <


 activity: Activity? = null

  @Before
  fun before() {
    instrumentation = InstrumentationRegistry.getInstrumentation()
    context = instrumentation.context
    uiDevice = UiDevice.getInstance(instrumentation)

    activity = instrumentation.startActivitySync(
      createTestAppIntent(TEST_APP_PKG_NAME, TEST_ACTIVITY_NAME)
    )
  }

  @After
  fun after() {
    activity?.finish()
  }

  @Test
  fun testSingleton_inMemoryLocalActivity() {
    // Configure handle options.
    clickOnTextIfPresent(SINGLETON_BTN_TEXT)
    clickOnTextIfPresent(IN_MEMORY_BTN_TEXT)
    clickOnTextIfPresent(LOCAL_ACTIVITY_BTN_TEXT)

    // Create a handle first.
    clickOnTextIfPresent(CREATE_BTN_TEXT)
    waitForSequencedTextsToAppear(WAITING_FOR_RESULT, ON_READY_NULL)

    // Set value to the handle.
    clickOnTextIfPresent(SET_BTN_TEXT)
    waitForSequencedTextsToAppear(ON_READY_NULL, SINGLETON_ON_UPDATE_TEST_RESULT)

    // Clear the handle.
    clickOnTextIfPresent(CLEAR_BTN_TEXT)
    waitForSequencedTextsToAppear(SINGLETON_ON_UPDATE_TEST_RESULT, ON_UPDATE_NULL)
  }

  @Test
  fun testSingleton_inMemoryRemoteService() {
    // Configure handle options.
    clickOnTextIfPresent(SINGLETON_BTN_TEXT)
    clickOnTextIfPresent(IN_MEMORY_BTN_TEXT)
    clickOnTextIfPresent(REMOTE_SERVICE_BTN_TEXT)

    // Create a handle first.
    clickOnTextIfPresent(CREATE_BTN_TEXT)
    waitForSequencedTextsToAppear(WAITING_FOR_RESULT, ON_READY_NULL)

    // Set value to the handle.
    clickOnTextIfPresent(SET_BTN_TEXT)
    waitForSequencedTextsToAppear(ON_READY_NULL, SINGLETON_ON_UPDATE_TEST_RESULT)

    // Clear the handle.
    clickOnTextIfPresent(CLEAR_BTN_TEXT)
    waitForSequencedTextsToAppear(SINGLETON_ON_UPDATE_TEST_RESULT, ON_UPDATE_NULL)
  }

  @Test
  fun testSingleton_persistentLocalActivity() {
    // Configure handle options.
    clickOnTextIfPresent(SINGLETON_BTN_TEXT)
    clickOnTextIfPresent(PERSISTENT_BTN_TEXT)
    clickOnTextIfPresent(LOCAL_ACTIVITY_BTN_TEXT)

    // Create a handle first.
    clickOnTextIfPresent(CREATE_BTN_TEXT)
    waitForSequencedTextsToAppear(WAITING_FOR_RESULT, ON_READY_NULL)

    // Set value to the handle.
    clickOnTextIfPresent(SET_BTN_TEXT)
    waitForSequencedTextsToAppear(ON_READY_NULL, SINGLETON_ON_UPDATE_TEST_RESULT)

    // Restart the activity.
    instrumentation.runOnMainSync {
      activity?.finish()
    }
    activity = instrumentation.startActivitySync(
      createTestAppIntent(TEST_APP_PKG_NAME, TEST_ACTIVITY_NAME)
    )

    // Configure handle options.
    clickOnTextIfPresent(SINGLETON_BTN_TEXT)
    clickOnTextIfPresent(PERSISTENT_BTN_TEXT)
    clickOnTextIfPresent(LOCAL_ACTIVITY_BTN_TEXT)

    // Create a handle first.
    clickOnTextIfPresent(CREATE_BTN_TEXT)
    waitForSequencedTextsToAppear(WAITING_FOR_RESULT, SINGLETON_ON_READY_TEST_RESULT)

    // Clear the handle.
    clickOnTextIfPresent(CLEAR_BTN_TEXT)


 trace and mutex set at the beginning of
  // trace part, and then replaying the trace till the given epoch.
  Trace* trace = ThreadTrace(tid);
  ReadLock l(&trace->mtx);
  const int partidx = (epoch / kTracePartSize) % TraceParts();
  TraceHeader* hdr = &trace->headers[partidx];
  if (epoch < hdr->epoch0 || epoch >= hdr->epoch0 + kTracePartSize)
    return;
  CHECK_EQ(RoundDown(epoch, kTracePartSize), hdr->epoch0);
  const u64 epoch0 = RoundDown(epoch, TraceSize());
  const u64 eend = epoch % TraceSize();
  const u64 ebegin = RoundDown(eend, kTracePartSize);
  DPrintf("#%d: RestoreStack epoch=%zu ebegin=%zu eend=%zu partidx=%d\n",
          tid, (uptr)epoch, (uptr)ebegin, (uptr)eend, partidx);
  Vector<uptr> stack(MBlockReportStack);
  stack.Resize(hdr->stack0.size + 64);
  for (uptr i = 0; i < hdr->stack0.size; i++) {
    stack[i] = hdr->stack0.trace[i];
    DPrintf2("  #%02zu: pc=%zx\n", i, stack[i]);
  }
  if (mset)
    *mset = hdr->mset0;
  uptr pos = hdr->stack0.size;
  Event *events = (Event*)GetThreadTrace(tid);
  for (uptr i = ebegin; i <= eend; i++) {
    Event ev = events[i];
    EventType typ = (EventType)(ev >> 61);
    uptr pc = (uptr)(ev & ((1ull << 61) - 1));
    DPrintf2("  %zu typ=%d pc=%zx\n", i, typ, pc);
    if (typ == EventTypeMop) {
      stack[pos] = pc;
    } else if (typ == EventTypeFuncEnter) {
      if (stack.Size() < pos + 2)
        stack.Resize(pos + 2);
      stack[pos++] = pc;
    } else if (typ == EventTypeFuncExit) {
      if (pos > 0)
        pos--;
    }
    if (mset) {
      if (typ == EventTypeLock) {
        mset->Add(pc, true, epoch0 + i);
      } else if (typ == EventTypeUnlock) {
        mset->Del(pc, true);
      } else if (typ == EventTypeRLock) {
        mset->Add(pc, false, epoch0 + i);
      } else if (typ == EventTypeRUnlock) {
        mset->Del(pc, false);
      }
    }
    for (uptr j = 0; j <= pos; j++)
      DPrintf2("      #%zu: %zx\n", j, stack[j]);
  }
  if (pos == 0 && stack[0] == 0)
    return;
  pos++;
  stk->Init(&stack[0], pos);
}

static bool HandleRacyStacks(ThreadState *thr, VarSizeStackTrace traces[2],
                             uptr addr_min, uptr addr_max) {
  bool equal_stack = false;
  RacyStacks hash;
  bool equal_address = false;
  RacyAddress ra0 = {addr_min, addr_max};
  {
    ReadLock lock(&ctx->racy_mtx);
    if (flags()->suppress_equal_stacks) {
      hash.hash[0] = md5_hash(traces[0].trace, traces[0].size * sizeof(uptr));
      hash.hash[1] = md5_hash(traces[1].trace, traces[1].size * sizeof(uptr));
      for (uptr i = 0; i < ctx->racy_stacks.Size(); i++) {
        if (hash == ctx->racy_stacks[i]) {
          VPri


x)
        // and lower (b and y) bits of unsigned big-endian integers:
        //   ab * xy
        // =  b *  y
        // +  b * x0
        // + a0 *  y
        // + a0 * x0
        // = b * y
        // + b * x * 2^32
        // + a * y * 2^32
        // + a * x * 2^64
        //
        // Summation using a character for each byte:
        //
        //             byby byby
        // +      bxbx bxbx 0000
        // +      ayay ayay 0000
        // + axax axax 0000 0000
        //
        // The summation can be rearranged to ensure no overflow given
        // that the result of two unsigned 32-bit integers multiplied together
        // plus two full 32-bit integers cannot overflow 64 bits:
        // > long x = (1L << 32) - 1
        // > x * x + x + x == -1 (all bits set, no overflow)
        //
        // The carry is a composed intermediate which will never overflow:
        //
        //             byby byby
        // +           bxbx 0000
        // +      ayay ayay 0000
        //
        // +      bxbx 0000 0000
        // + axax axax 0000 0000

        final long a = value1 >>> 32;
        final long b = value1 & MASK32;
        final long x = value2 >>> 32;
        final long y = value2 & MASK32;

        final long by = b * y;
        final long bx = b * x;
        final long ay = a * y;
        final long ax = a * x;

        // Cannot overflow
        final long carry = (by >>> 32) +
                           (bx & MASK32) +
                            ay;
        // Note:
        // low = (carry << 32) | (by & INT_TO_UNSIGNED_BYTE_MASK)
        // Benchmarking shows outputting low to a long[] output argument
        // has no benefit over computing 'low = value1 * value2' separately.

        return (bx >>> 32) + (carry >>> 32) + ax;
    }

    /**
     * Multiply the arguments as if unsigned integers to a {@code double} result.
     *
     * @param a Value.
     * @param b Value.
     * @return the double
     */
    static double unsignedMultiplyToDoubleBigInteger(long a, long b) {
        final long lo = a * b;

        // Fast case: check the arguments cannot overflow a long.
        // This is true if neither has the upper 33-bits set.
        if (((a | b) >>> 31) == 0) {
            // Implicit conversion to a double
            return lo;
        }

        final long hi = unsignedMultiplyHigh(a, b);

        // Convert to a double using BigInteger
        return new BigInteger(1, ByteBuffer.allocate(Long.BYTES * 2)
            .putLong(hi)
            .putLong(lo)
            .array()).doubleValue();
    }

    /**
     * Multiply the arguments as if unsigned integers to a {@code double} result.
     *
     * @param x Value.
     * @param y Value.
     * @return the double
     */
    static double unsignedMultiplyToDouble(long x, long y) {
        final long lo = x * y;
        // Fast case: check the arguments cannot overflow a long.
        // This is true if neither has the upper 33-bits set.
        if (((x | y) >>> 31) == 0) {
            // Implicit conversion to a double.
            return lo;
        }
        return uin128ToDouble(unsignedMultiplyHigh(x, y), lo);
    }

    /**
     * Convert an unsigned 128-bit integer to a {@code double}.
     *
     * @param hi High 64-bits.
     * @param lo Low 64-bits.
     * @return the double
     */
    static double uin128ToDouble(long hi, long lo) {
        // Require the representation:
        // 2^exp * mantissa


/*
+-----------------------------------------------------------------------------------+
|  nanomsg extension for PHP                                                        |
|  Copyright (c) 2014, Mikko Koppanen <mkoppanen@php.net>                           |
|  All rights reserved.                                                             |
+-----------------------------------------------------------------------------------+
|  Redistribution and use in source and binary forms, with or without               |
|  modification, are permitted provided that the following conditions are met:      |
|     * Redistributions of source code must retain the above copyright              |
|       notice, this list of conditions and the following disclaimer.               |
|     * Redistributions in binary form must reproduce the above copyright           |
|       notice, this list of conditions and the following disclaimer in the         |
|       documentation and/or other materials provided with the distribution.        |
|     * Neither the name of the copyright holder nor the                            |
|       names of its contributors may be used to endorse or promote products        |
|       derived from this software without specific prior written permission.       |
+-----------------------------------------------------------------------------------+
|  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND  |
|  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED    |
|  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE           |
|  DISCLAIMED. IN NO EVENT SHALL MIKKO KOPPANEN OR CONTRIBUTORS BE LIABLE FOR       |
|  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES   |
|  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;     |
|  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND      |
|  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT       |
|  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS    |
|  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                     |
+-----------------------------------------------------------------------------------+
*/

#ifndef _PHP_NANO_H_
# define _PHP_NANO_H_

#define PHP_NANO_EXTNAME "nano"
#define PHP_NANO_EXTVER "@PACKAGE_VERSION@"

#ifdef HAVE_CONFIG_H
# include "config.h"
#endif

#ifdef ZTS
# include "TSRM.h"
#endif

#include "php.h"

extern zend_module_entry nano_module_entry;
#define phpext_nano_ptr &nano_module_entry

#endif /* _PHP_NANO_H_ */


紧张感一齐迸出似得。我却只是哑然。倒是还存着些感知能力，能模模糊糊地觉察到自己将呕出什么东西。虽这么说，我的肺……不，该说是横膈膜吗……顾不上那么多了，就是那个平时意识不到且负责吞吐气息的那个器官，定是死死地梗住了。我无法整备自己的气息……。我是在逼迫自己。即使我并未确诊过惊恐障碍，但也曾数次幻想过自己的病发。这想象现如今也派上用场了。慢着来、不要着急、深吸气以至底端、缓缓吐出……若有丝毫焦躁可是会被瘴疠夺舍的哦。话虽如此，我的肺却并不愿一如往常地复还我的呼吸。死的概念从我心中孕育，那死的韵味也渐渐在我眼前明晰了模样……绝命将至……我已摆脱常理化的思考。我将死去，这进程明明已跃于我的眼前，为何我不愿反抗呢……我又为何没有丝毫畏惧呢。我对着那恐惧迈开步伐。
# 南条彩

> **声明**
> 该条目涉及现实中的人物，其影响具有一定争议，请理性看待。
> 该条目中出现自杀、自残行为的描写，请勿模仿。

主角妹妹的名字叫做「あや（Aya）」，而爱丽丝的全名为「南条ありす」。这两个名字 neta 了一位日本心理健康系网络红人，**南条彩**。

## 个人介绍

**南条彩**（日语：南条 あや，罗马音：Nanjou Aya），生于 1980 年 8 月 13 日，于 1999 年 3 月 30 日去世。她出身东京都世田谷区，本名是**铃木纯**。

南条彩童年时父母离婚，有一段时间与母亲和再婚的继父生活，而后由亲生父亲抚养。小学时就遭到校园霸凌，曾长期不上学。为躲避小学同学的霸凌，就读于外地的私立初中，依然遭到霸凌。

初一开始割腕，一直持续至其暮年。高三时（1998 年 7 月 27 日至 1998 年 10 月 2 日）入院
大学附属医院精神科的封闭病房。

高三时向医疗撰稿人**町田あかね**（町田茜）的网站「町田あかねのおクスリ研究所（町田茜的药物研究所）」上就「征集关于精神病和精神药物的体验谈募集」发送了电子邮件。因其写作才能受到赞赏，自 1998 年 5 月 28 日至 1999 年 3 月 17 日，每日都在网站上发布日记。

在自己的日记中透露了自己抑


using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

// The User Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234236

namespace PowerToysUX.Controls
{
    public sealed partial class PowerLaunch : UserControl
    {
        List<SearchApp> SearchResults;
        public PowerLaunch()
        {
            this.InitializeComponent();
            ShellBarShadow.Receivers.Add(ShadowReceiverGrid);
            SearchResults = new List<SearchApp>
            {
                new SearchApp() { Title = "Calendar", Icon = "ms-appx:///Assets/Images/Calendar.png" },
                new SearchApp() { Title = "Camera", Icon = "ms-appx:///Assets/Images/Camera.png" },
                new SearchApp() { Title = "Excel", Icon = "ms-appx:///Assets/Images/Excel.png" },
                new SearchApp() { Title = "Feedback", Icon = "ms-appx:///Assets/Images/Feedback.png" },
                new SearchApp() { Title = "File Explorer", Icon = "ms-appx:///Assets/Images/FileExplorer.png" },
                new SearchApp() { Title = "Groove", Icon = "ms-appx:///Assets/Images/Groove.png" },
                new SearchApp() { Title = "Mail", Icon = "ms-appx:///Assets/Images/Mail.png" },
                new SearchApp() { Title = "Mobile", Icon = "ms-appx:///Assets/Images/Mobile.png" },
                new SearchApp() { Title = "Movies", Icon = "ms-appx:///Assets/Images/Movies.png" },
                new SearchApp() { Title = "OneDrive", Icon = "ms-appx:///Assets/Images/OneDrive.png" },
                new SearchApp() { Title = "OneNote", Icon = "ms-appx:///Assets/Images/OneNote.png" },
                new SearchApp() { Title = "Outlook", Icon = "ms-appx:///Assets/Images/Ou


1 .208V2.5a1 1 0 0 1 1-1h8zM5 12.25v3.25a.25.25 0 0 0 .4.2l1.45-1.087a.25.25 0 0 1 .3 0L8.6 15.7a.25.25 0 0 0 .4-.2v-3.25a.25.25 0 0 0-.25-.25h-3.5a.25.25 0 0 0-.25.25z"/></svg>');--md-source-stars-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.75.75 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694v.001z"/></svg>');--md-source-version-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M2.5 7.775V2.75a.25.25 0 0 1 .25-.25h5.025a.25.25 0 0 1 .177.073l6.25 6.25a.25.25 0 0 1 0 .354l-5.025 5.025a.25.25 0 0 1-.354 0l-6.25-6.25a.25.25 0 0 1-.073-.177zm-1.5 0V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.75 1.75 0 0 1 1 7.775zM6 5a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/></svg>')}.md-source{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:block;font-size:.65rem;line-height:1.2;outline-color:var(--md-accent-fg-color);transition:opacity .25s;white-space:nowrap}.md-source:hover{opacity:.7}.md-source__icon{display:inline-block;height:2.4rem;vertical-align:middle;width:2rem}[dir=ltr] .md-source__icon svg{margin-left:.6rem}[dir=rtl] .md-source__icon svg{margin-right:.6rem}.md-source__icon svg{margin-top:.6rem}[dir=ltr] .md-source__icon+.md-source__repository{margin-left:-2rem}[dir=rtl] .md-source__icon+.md-source__repository{margin-right:-2rem}[dir=ltr] .md-source__icon+.md-source__repository{padding-left:2rem}[dir=rtl] .md-source__icon+.md-source__repository{padding-right:2rem}[dir=ltr] .md-source__repository{margin-left:.6rem}[dir=rtl] .md-source__repository{margin-right:.6rem}.md-source__repository{display:inline-block;max-width:calc(100% - 1.2rem);overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.md-source__facts{display:flex;font-size:.55rem;gap:.4rem;list-style-type:n


离开事故现场水域或者逃逸。

第七十四条 遇险的船舶、海上设施及其所有人、经营人或者管理人应当采取有效措施防止、减少生命财产损失和海洋环境污染。

船舶遇险时，乘客应当服从船长指挥，配合采取相关应急措施。乘客有权获知必要的险情信息。

船长决定弃船时，应当组织乘客、船员依次离船，并尽力抢救法定航行资料。船长应当最后离船。

第七十五条 船舶、海上设施、航空器收到求救信号或者发现有人遭遇生命危险的，在不严重危及自身安全的情况下，应当尽力救助遇险人员。

第七十六条 海上搜救中心接到险情报告后，应当立即进行核实，及时组织、协调、指挥政府有关部门、专业搜救队伍、社会有关单位等各方力量参加搜救，并指定现场指挥。参加搜救的船舶、海上设施、航空器及人员应当服从现场指挥，及时报告搜救动态和搜救结果。

搜救行动的中止、恢复、终止决定由海上搜救中心作出。未经海上搜救中心同意，参加搜救的船舶、海上设施、航空器及人员不得擅自退出搜救行动。

军队参加海上搜救，依照有关法律、行政法规的规定执行。

第七十七条 遇险船舶、海上设施、航空器或者遇险人员应当服从海上搜救中心和现场指挥的指令，及时接受救助。

遇险船舶、海上设施、航空器不配合救助的，现场指挥根据险情危急情况，可以采取相应救助措施。

第七十八条 海上事故或者险情发生后，有关地方人民政府应当及时组织医疗机构为遇险人员提供紧急医疗救助，为获救人员提供必要的生活保障，并组织有关方面采取善后措施。

第七十九条 在中华人民共和国缔结或者参加的国际条约规定由我国承担搜救义务的海域内开展搜救，依照本章规定执行。

中国籍船舶在中华人民共和国管辖海域以及海上搜救责任区域以外的其他海域发生险情的，中国海上


To(_Entry other) {
    return name.compareTo(other.name);
  }
}
// Copyright (c) 2023, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import '../ir/ir.dart' as ir;

export 'data_segments.dart' show DataSegmentsBuilder;
export 'data_segment.dart' show DataSegmentBuilder;
export 'exports.dart' show ExportsBuilder;
export 'globals.dart' show GlobalsBuilder;
export 'global.dart' show GlobalBuilder;
export 'functions.dart' show FunctionsBuilder;
export 'function.dart' show FunctionBuilder;
export 'memories.dart' show MemoriesBuilder;
export 'module.dart' show ModuleBuilder;
export 'tables.dart' show TablesBuilder;
export 'table.dart' show TableBuilder;
export 'tags.dart' show TagsBuilder;
export 'types.dart' show TypesBuilder;
export 'instructions.dart'
    show
        InstructionsBuilder,
        Label,
        ValidationError,
        TryTableCatch,
        Catch,
        CatchAll,
        CatchRef,
        CatchAllRef;

mixin Builder<T> {
  T? _built;

  T build() => _built ??= forceBuild();

  T forceBuild();
}

// TODO(joshualitt): Share code when we have mixin composition.
mixin IndexableBuilder<T> implements Builder<T>, ir.Indexable {
  @override
  T? _built;

  @override
  T build() => _built ??= forceBuild();

  @override
  T forceBuild();
}
// Copyright (c) 2023, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'dart:typed_data';

import '../ir/ir.dart' as ir;
import 'builder.dart';

/// The interface for building data segments in a module.
class DataSegmentsBuilder with Builder<ir.DataSegments> {
  final _dataSegmentBuilders = <DataSegmentBuilder>[];

  static const int memoryBlockSize = 0x10000;

  /// Defines a new data segment in this module.
  ///
  /// Either [memory] and [offset] must be both specified or both omitted. If
  /// they are specified, the segment becomes an *active* segment, otherwise it
  /// becomes a *passive* segment.
  ///
  /// If [initialContent] is specified, it defines the initial content of the
  /// segment. The content can be extended later.
  DataSegmentBuilder define(
      [Uint8List? initialContent, ir.Memory? memory, int? offset]) {
    initialContent ??= Uint8List(0);
    assert((memory != null) == (offset != null));
    assert(memory == null ||
        offset! >= 0 &&
            offset + initialContent.length <= memory.minSize * memoryBlockSize);
    final builder = DataSegmentBuilder(
        _dataSegmentBuilders.length, initialContent, memory, offset);
    _dataSegmentBuilders.add(builder);
    return builder;
  }

  @override
  ir.DataSegments forceBuild() =>
      ir.DataSegments(_dataSegmentBuilders.map((b) => b.build()).toList());
}
// Copyright (c) 2023, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import '../ir/ir.dart' as ir;
import 'builder.dart';
import 'util.dart';

/// The interface for the tags in a module.
class TagsBuilder with Builder<ir.Tags> {
  final ir.Module _module;
  final List<ir.DefinedTag> _defined = [];
  final List<


core.bool.fromEnvironment('protobuf.omit_message_names')
          ? ''
          : 'PlayerDanmakuEnableblocklist',
      package: const $pb.PackageName(
          const $core.bool.fromEnvironment('protobuf.omit_message_names')
              ? ''
              : 'bilibili.community.service.dm.v1'),
      createEmptyInstance: create)
    ..aOB(
        1,
        const $core.bool.fromEnvironment('protobuf.omit_field_names')
            ? ''
            : 'value')
    ..hasRequiredFields = false;

  PlayerDanmakuEnableblocklist._() : super();
  factory PlayerDanmakuEnableblocklist({
    $core.bool? value,
  }) {
    final _result = create();
    if (value != null) {
      _result.value = value;
    }
    return _result;
  }
  factory PlayerDanmakuEnableblocklist.fromBuffer($core.List<$core.int> i,
          [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromBuffer(i, r);
  factory PlayerDanmakuEnableblocklist.fromJson($core.String i,
          [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromJson(i, r);
  @$core.Deprecated('Using this can add significant overhead to your binary. '
      'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
      'Will be removed in next major version')
  PlayerDanmakuEnableblocklist clone() =>
      PlayerDanmakuEnableblocklist()..mergeFromMessage(this);
  @$core.Deprecated('Using this can add significant overhead to your binary. '
      'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
      'Will be removed in next major version')
  PlayerDanmakuEnableblocklist copyWith(
          void Function(PlayerDanmakuEnableblocklist) updates) =>
      super.copyWith(
              (message) => updates(message as PlayerDanmakuEnableblocklist))
          as PlayerDanmakuEnableblocklist; // ignore: deprecated_member_use
  $pb.BuilderInfo get info_ => _i;
  @$core.pragma('dart2js:noInline')
  static PlayerDanmakuEnableblocklist create() =>
      PlayerDanmakuEnableblocklist._();
  PlayerDanmakuEnableblocklist createEmptyInstance() => create();
  static $pb.PbList<PlayerDanmakuEnableblocklist> createRepeated() =>
      $pb.PbList<PlayerDanmakuEnableblocklist>();
  @$core.pragma('dart2js:noInline')
  static PlayerDanmakuEnableblocklist getDefault() => _defaultInstance ??=
      $pb.GeneratedMessage.$_defaultFor<PlayerDanmakuEnableblocklist>(create);
  static PlayerDanmakuEnableblocklist? _defaultInstance;

  @$pb.TagNumber(1)
  $core.bool get value => $_getBF(0);
  @$pb.TagNumber(1)
  set value($core.bool v) {
    $_setBool(0, v);
  }

  @$pb.TagNumber(1)
  $core.bool hasValue() => $_has(0);
  @$pb.TagNumber(1)
  void clearValue() => clearField(1);
}

class PlayerDanmakuOpacity extends $pb.GeneratedMessage {
  static final $pb.BuilderInfo _i = $pb.BuilderInfo(
      const $core.bool.fromEnvironment('protobuf.omit_message_names')
          ? ''
          : 'PlayerDanmakuOpacity',
      package: const $pb.PackageName(
          const $core.bool.fromEnvironment('protobuf.omit_message_names')
              ? ''
              : 'bilibili.community.service.dm.v1'),
      createEmptyInstance: create)
    ..a<$core.double>(
        1,
        const $core.bool.fromEnvironment('protobuf.omit_field_names')
            ? ''


   /// Expects one of `__WASI_STDIN_FILENO`, `__WASI_STDOUT_FILENO`, `__WASI_STDERR_FILENO`.
    fn std_dev_get<'a>(
        &'a self,
        fd_map: &RwLock<HashMap<u32, Fd>>,
        fd: __wasi_fd_t,
    ) -> Result<InodeValFileReadGuard<'a>, FsError> {
        if let Some(fd) = fd_map.read().unwrap().get(&fd) {
            let guard = self.arena[fd.inode].read();
            if let Kind::File { .. } = guard.deref() {
                Ok(InodeValFileReadGuard { guard })
            } else {
                // Our public API should ensure that this is not possible
                Err(FsError::NotAFile)
            }
        } else {
            // this should only trigger if we made a mistake in this crate
            Err(FsError::NoDevice)
        }
    }
    /// Internal helper function to mutably get a standard device handle.
    /// Expects one of `__WASI_STDIN_FILENO`, `__WASI_STDOUT_FILENO`, `__WASI_STDERR_FILENO`.
    fn std_dev_get_mut<'a>(
        &'a self,
        fd_map: &RwLock<HashMap<u32, Fd>>,
        fd: __wasi_fd_t,
    ) -> Result<InodeValFileWriteGuard<'a>, FsError> {
        if let Some(fd) = fd_map.read().unwrap().get(&fd) {
            let guard = self.arena[fd.inode].write();
            if let Kind::File { .. } = guard.deref() {
                Ok(InodeValFileWriteGuard { guard })
            } else {
                // Our public API should ensure that this is not possible
                Err(FsError::NotAFile)
            }
        } else {
            // this should only trigger if we made a mistake in this crate
            Err(FsError::NoDevice)
        }
    }
}

/// Warning, modifying these fields directly may cause invariants to break and
/// should be considered unsafe.  These fields may be made private in a future release
#[derive(Debug)]
#[cfg_attr(feature = "enable-serde", derive(Serialize, Deserialize))]
pub struct WasiFs {
    //pub repo: Repo,
    pub preopen_fds: RwLock<Vec<u32>>,
    pub name_map: HashMap<String, Inode>,
    pub fd_map: RwLock<HashMap<u32, Fd>>,
    pub next_fd: AtomicU32,
    inode_counter: AtomicU64,
    pub current_dir: Mutex<String>,
    pub is_wasix: AtomicBool,
    #[cfg_attr(feature = "enable-serde", serde(skip, default = "default_fs_backing"))]
    pub fs_backing: Box<dyn FileSystem>,
}

/// Returns the default filesystem backing
pub(crate) fn default_fs_backing() -> Box<dyn wasmer_vfs::FileSystem> {
    cfg_if::cfg_if! {
        if #[cfg(feature = "host-fs")] {
            Box::new(wasmer_vfs::host_fs::FileSystem::default())
        } else if #[cfg(feature = "mem-fs")] {
            Box::new(wasmer_vfs::mem_fs::FileSystem::default())
        } else {
            Box::new(FallbackFileSystem::default())
        }
    }
}

#[derive(Debug, Default)]
pub struct FallbackFileSystem;

impl FallbackFileSystem {
    fn fail() -> ! {
        panic!("No filesystem set for wasmer-wasi, please enable either the `


from conexionBD import *

try:
    micursor=conexion.cursor()

    sql="select * from clintes"
    micursor.execute(sql)

    #Crear un objeto para enviar el resultado de la ejecion del esecute para posteriormente mostrar con ciclo
    resultado=micursor.fetchall()
except:
    print("Occurio un Error Por Favor Verifica...")
else:
    for x in resultado:
        print(x)


ranking/0","title":"bilibili 排行榜-全站","description":"bilibili 排行榜-全站 - Powered by RSSHub","image":null}]}' :test='{"code":1,"message":"AssertionError: expected 503 to be 200 // Object.is equality\n    at /home/runner/work/RSSHub/RSSHub/lib/routes.test.ts:79:41\n    at file:///home/runner/work/RSSHub/RSSHub/node_modules/.pnpm/@vitest+runner@2.1.9/node_modules/@vitest/runner/dist/index.js:533:5\n    at runTest (file:///home/runner/work/RSSHub/RSSHub/node_modules/.pnpm/@vitest+runner@2.1.9/node_modules/@vitest/runner/dist/index.js:1056:11)\n    at async Promise.all (index 281)\n    at runSuite (file:///home/runner/work/RSSHub/RSSHub/node_modules/.pnpm/@vitest+runner@2.1.9/node_modules/@vitest/runner/dist/index.js:1191:13)\n    at runSuite (file:///home/runner/work/RSSHub/RSSHub/node_modules/.pnpm/@vitest+runner@2.1.9/node_modules/@vitest/runner/dist/index.js:1205:15)\n    at runFiles (file:///home/runner/work/RSSHub/RSSHub/node_modules/.pnpm/@vitest+runner@2.1.9/node_modules/@vitest/runner/dist/index.js:1262:5)\n    at startTests (file:///home/runner/work/RSSHub/RSSHub/node_modules/.pnpm/@vitest+runner@2.1.9/node_modules/@vitest/runner/dist/index.js:1271:3)\n    at file:///home/runner/work/RSSHub/RSSHub/node_modules/.pnpm/vitest@2.1.9_@types+node@24.7.0_jsdom@27.0.0_bufferutil@4.0.9_postcss@8.5.6_utf-8-valid_7a9f9ab30ae2494ce58bc7fcf1b9ad61/node_modules/vitest/dist/chunks/runBaseTests.3qpJUEJM.js:126:11\n    at withEnv (file:///home/runner/work/RSSHub/RSSHub/node_modules/.pnpm/vitest@2.1.9_@types+node@24.7.0_jsdom@27.0.0_bufferutil@4.0.9_postcss@8.5.6_utf-8-valid_7a9f9ab30ae2494ce58bc7fcf1b9ad61/node_modules/vitest/dist/chunks/runBaseTests.3qpJUEJM.js:90:5)\n    at run (file:///home/runner/work/RSSHub/RSSHub/node_modules/.pnpm/vitest@2.1.9_@types+node@24.7.0_jsdom@27.0.0_bufferutil@4.0.9_postcss@8.5.6_utf-8-valid_7a9f9ab30ae2494ce58bc7fcf1b9ad61/node_modules/vitest/dist/chunks/runBaseTests.3qpJUEJM.js:112:3)\n    at runBaseTests (file:///home/runner/work/RSSHub/RSSHub/node_modules/.pnpm/vitest@2.1.9_@types+node@24.7.0_jsdom@27.0.0_bufferutil@4.0.9_postcss@8.5.6_utf-8-valid_7a9f9ab30ae2494ce58bc7fcf1b9ad61/node_modules/vitest/dist/chunks/base.BZZh4cSm.js:29:3)\n    at ForksBaseWorker.executeTests (file:///home/runner/work/RSSHub/RSSHu


he paper size ('letterpaper' or 'a4paper').
    #
    # 'papersize': 'letterpaper',

    # The font size ('10pt', '11pt' or '12pt').
    #
    # 'pointsize': '10pt',

    # Additional stuff for the LaTeX preamble.
    #
    # 'preamble': '',

    # Latex figure (float) alignment
    #
    # 'figure_align': 'htbp',
}

# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
#  author, documentclass [howto, manual, or own class]).
latex_documents = [
    (master_doc, 'HiPlot.tex', 'HiPlot Documentation',
     'Daniel Haziza', 'manual'),
]

# -- Options for manual page output ---------------------------------------

# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
    (master_doc, 'hiplot', 'HiPlot Documentation',
     [author], 1)
]

# -- Options for Texinfo output -------------------------------------------

# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
#  dir menu entry, description, category)
texinfo_documents = [
    (master_doc, 'HiPlot', 'HiPlot Documentation',
     author, 'HiPlot', 'One line description of project.',
     'Miscellaneous'),
]


odule_error_counts),
            "top_issues": [],
            "recent_issues": [],
            "error_patterns": {},
            "error_frequency": {},
        }

        # 獲取前 10 個最常見的問題
        top_issues = sorted(
            self.issues.values(), key=lambda x: x["count"], reverse=True
        )[:10]
        result["top_issues"] = top_issues

        # 獲取前 10 個最近的問題
        recent_issues = sorted(
            self.issues.values(), key=lambda x: x["last_seen"], reverse=True
        )[:10]
        result["recent_issues"] = recent_issues

        # 分析錯誤模式
        for error_type, messages in self.error_patterns.items():
            # 獲取前 5 個最常見的錯誤消息
            counter = Counter(messages)
            result["error_patterns"][error_type] = [
                {"message": msg, "count": count}
                for msg, count in counter.most_common(5)
            ]

        # 分析錯誤頻率
        for error_type, timestamps in self.error_timestamps.items():
            if not timestamps:
                continue

            # 按小時分組
            hour_counts = defaultdict(int)
            for ts in timestamps:
                dt = datetime.datetime.fromtimestamp(ts)
                hour = dt.strftime("%Y-%m-%d %H:00")
                hour_counts[hour] += 1

            # 獲取前 24 小時的錯誤頻率
            sorted_hours = sorted(
                hour_counts.items(), key=lambda x: x[0], reverse=True
            )[:24]
            result["error_frequency"][error_type] = [
                {"hour": hour, "count": count}
                for hour, count in sorted(sorted_hours, key=lambda x: x[0])
            ]

        logger.info("問題分析完成")
        return result

    def generate_report(self, format: str = "json") -> str:
        """
        生成報告

        Args:
            format: 報告格式，支持 "json" 和 "markdown"

        Returns:
            str: 報告文件路徑
        """
        logger.info(f"開始生成 {format} 格式的報告")

        # 分析問題
        analysis = self.analyze_issues()

        # 生成報告文件名
        timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
        report_file = os.path.join(
            self.reports_dir, f"issue_report_{timestamp}.{format}"
        )

        # 生成報告
        if format == "json":
            with open(report_file, "w", encoding="utf-8") as f:
                json.dump(
                    {
                        "issues": list(self.issues.values()),
                        "analysis": analysis,
                        "generated_at": datetime.datetime.now().isoformat(),
                    },
                    f,
                    indent=2,
                    ensure_ascii=False,
                )
        elif format == "markdown":
            with open(report_file, "w", encoding="utf-8") as f:
                f.write("# 系統問題報告\n\n")
                f.write(f"生成時間: {datetime.datetime.now().isoformat()}\n\n")

                f.write("## 問題概述\n\n")
                f.write(f"- 總問題數: {analysis['total_issues']}\n")
                f.write(f"- 總錯誤數: {analysis['total_errors']}\n\n")

                f.write("### 錯誤類型分佈\n\n")
                f.write("| 錯誤類型 | 數量 |\n")
                f.write("|---------|------|\n")
                for error_type, count in analysis["error_types"].items():
                    f.write(f"| {error_type} | {count} |\n")
                f.write("\n")

                f.write("### 模組錯誤分佈\n\n")
                f.write("| 模組 | 錯誤數 |\n")
                f.write("|------|--------|\n")
                for module, count in analysis["module_errors"].items():
                    f.write(f"| {module} | {count} |\n")
                f.write("\n")

                f.write("## 常見問題\n\n")
                for i, issue in enumerate(analysis["top_issues"], 1):
                    f.write(f"### {i}. {issue['type']} in {issue['module']}\n\n")
                    f.write(f"- ID: {issue['id']}\n")
                    f.write(f"- 消息: {issue['message']}\n")
                    f.write(f"- 出現次數: {issue['count']}\n")
                    f.write(f"- 首次出現: {issue['first_seen']}\n")
                    f.write(f"- 最後出現: {issue['last_seen']}\n\n")

                f.write("## 最近問題\n\n")
                for i, issue in enumerate(analysis["recent_issues"], 1):
                    f.write(f"### {i}. {issue['type']} in {issue['module']}\n\n")
                    f.write(f"- ID: {issue['id']}\n")
                    f.write(f"- 消息: {issue['message']}\n")
                    f.write(f"- 出現次數: {issue['count']}\n")
                    f


.
     */
    public static void loadLdif(String ldifFileName) {
        String classMethod = "UpgradeUtils:loadLdif : ";
        try (Connection conn = getLDAPConnection()) {
            System.out.println(bundle.getString("upg-load-ldif-file")
                + " :" + ldifFileName);
            LDIFChangeRecordReader ldifChangeRecordReader = new LDIFChangeRecordReader(ldifFileName);
            LdifUtils.createSchemaFromLDIF(ldifChangeRecordReader, conn);
        } catch (IOException ioe) {
            debug.error("{} Cannot find file . Error loading ldif {}", classMethod, ldifFileName, ioe);
        }
    }

    /**
     * Helper method to return Ldap connection
     *
     * @return Ldap connection
     */
    private static Connection getLDAPConnection() {
        String classMethod = "UpgradeUtils:getLDAPConnection : ";
        if (debug.messageEnabled()) {
            debug.message(classMethod + "Directory Server Host: " + dsHostName);
            debug.message(classMethod + "Directory Server Port: " + dsPort);
            debug.message(classMethod + "Direcotry Server DN: " + dsManager);
        }
        try {
            // All connections will use authentication.
            Options options = Options.defaultOptions()
                    .set(AUTHN_BIND_REQUEST, LDAPRequests.newSimpleBindRequest(dsManager, dsAdminPwd.toCharArray()))
                    .set(CONNECT_TIMEOUT, new Duration((long) 3, TimeUnit.SECONDS));

            return getLDAPConnectionFactory(dsHostName, dsPort, options).getConnection();
        } catch (LdapException e) {
            debug.error(classMethod + " Error getting LDAP Connection");
        }
        return null;
    }

    private static ConnectionFactory getLDAPConnectionFactory(String hostname, int port, Options options) {
        if (factory == null) {
            factory = new LDAPConnectionFactory(hostname, port, options);
            ShutdownManager.getInstance().addShutdownListener(new ShutdownListener() {
                @Override
                public void shutdown() {
                    if (factory != null) {
                        factory.close();
                    }
                }
            });
        }
        return factory;
    }

// Legacy code to support older upgrade data based on amAdmin dtd.
// These should not be used for the new data since these will be
// deprecated along with amAdmin.
// therefore not adding public javadocs for these.
    /**
     * Imports service data.
     * @param fileName the file containing the data in xml format.
     * @throws UpgradeException on error
     */
    public static void importServiceData(
            String fileName)
            throws UpgradeException {
        System.out.println(bundle.getString("upg-import-service-data")
            + ": " + fileName);
        String[] args = new String[8];
        args[0] = "--runasdn";
        args[1] = bindDN;
        args[2] = "-w";
        args[3] = bindPasswd;
        args[4] = "-c";
        args[5] = "-v";
        args[6] = "-t";
        args[7] = fileName;
        invokeAdminCLI(args);
    }

    /**
     * Imports service data
     *
     * @param fileList list of files to be imported.
     * @throws UpgradeException on error.
     */
    public static void importServiceData(
            String[] fileList) throws UpgradeException {
        System.out.println(bundle.getString("upg-import-service-data")
                           + fileLis


String,
    /** If the next item is a directory, it should be prefixed with this */
    val nextPrefix: String,
) {
    companion object {
        /** Prefix pair for a non-last directory entry */
        val INTERMEDIATE = PrefixPair("├── ", "│   ")

        /** Prefix pair for the last directory entry */
        val LAST_ENTRY = PrefixPair("└── ", "    ")
    }
}
package imgui.api

import glm_.max
import glm_.vec2.Vec2
import glm_.vec4.Vec4
import imgui.Col
import imgui.Flag
import imgui.ImGui.calcItemWidth
import imgui.ImGui.calcTextSize
import imgui.ImGui.currentWindow
import imgui.ImGui.findRenderedTextEnd
import imgui.ImGui.itemAdd
import imgui.ImGui.itemSize
import imgui.ImGui.popStyleColor
import imgui.ImGui.popTextWrapPos
import imgui.ImGui.pushStyleColor
import imgui.ImGui.pushTextWrapPos
import imgui.ImGui.renderBullet
import imgui.ImGui.renderText
import imgui.ImGui.renderTextClipped
import imgui.ImGui.separatorTextEx
import imgui.ImGui.style
import imgui.ImGui.textEx
import imgui.dsl
import imgui.get
import imgui.internal.classes.Rect
import imgui.internal.formatStringToTempBuffer
import imgui.internal.sections.TextFlag

/** Widgets: Text */
interface widgetsText {

    /** raw text without formatting. Roughly equivalent to Text("%s", text) but:
     *  A) doesn't require null terminated string if 'text_end' is specified,
     *  B) it's faster, no memory copy is done, no buffer size limits, recommended for long chunks of text. */
    fun textUnformatted(text: String, textEnd: Int = -1) = textEx(text, textEnd, TextFlag.NoWidthForLargeClippedText)
    fun textUnformatted(text: ByteArray, textEnd: Int = -1) = textEx(text, textEnd, TextFlag.NoWidthForLargeClippedText)

    /** formatted text */
    fun text(fmt: String, vararg args: Any) {

        val window = currentWindow
        if (window.skipItems) return

        val textEnd = formatStringToTempBuffer(fmt, *args)
        textEx(g.tempBuffer, textEnd, TextFlag.NoWidthForLargeClippedText)
    }

    /** shortcut for
     *      PushStyleColor(ImGuiCol_Text, col);
     *      Text(fmt, ...);
     *      PopStyleColor();   */
    fun textColored(col: Vec4, fmt: String, vararg args: Any) {
        pushStyleColor(Col.Text, col)
        text(fmt, *args)
        popStyleColor()
    }

    /** shortcut for:
     *      pushStyleColor(Col.Text, style.colors[Col.TextDisabled])
     *      text(fmt, ...)
     *      popStyleColor() */
    fun textDisabled(fmt: String, vararg args: Any) =
            dsl.withStyleColor(Col.Text, style.colors[Col.TextDisabled]) {
                text(fmt, *args)
            }

    /** shortcut for PushTextWrapPos(0.0f); Text(fmt, ...); PopTextWrapPos();. Note that this won't work on an
     *  auto-resizing window if there's no other widgets to extend the window width, yoy may need to set a size using
     *  SetNextWindowSize().    */
    fun textWrapped(fmt: String, vararg args: Any) {
        val needBackup = g.currentWindow!!.dc.textWrapPos < 0f  // Keep existing wrap position is one ia already set
        if (needBackup)
            pushTextWrapPos(0f)
        text(fmt, *args)
        if (needBackup)
            popTextWrapPos()
    }

    //    IMGUI_API void          TextWrappedV(const char* fmt, va_list args)                     IM_FMTLIST(1);

    /** Display text+label aligned the same way as value+label widgets  */


\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(3(b){3 J(a,d,e){8 c=12;9 12.2x("1n.2",a,3(a){8 f=b.1m({},m(d,e));f.o||(f.o=b(12).10("11-2")||c);A(a,f)})}3 A(a,d,e){e=m(d,e);d=a.2l;6("A"!==d.2e.1g())1y"$.1H.2 2T $.2.1n 2r 3r 3p 1W";6(!(1<a.3R||a.37||a.38||a.2K||a.3Y||19.2u!==d.2u||19.2f!==d.2f||-1<d.Y.3I("#")&&d.Y.17(/#.*/,"")==19.Y.17(/#.*/,"")||a.1P())){8 c={5:d.Y,o:b(d).10("11-2"),1O:d};e=b.1m({},c,e);c=b.1w("2:1n");b(d).1c(c,[e]);c.1P()||(f(e),a.22(),b(d).1c("2:3a",[e]))}}3 K(a,d,e){e=m(d,e);d=a.2l;8 c=b(d);6("3W"!==d.2e.1g())1y"$.2.1z 2r a 2g 1W";c={Z:(c.10("2i")||"16").1g(),5:c.10("2z"),o:c.10("11-2"),1O:d};6("16"!==c.Z&&3O 0!==R.21)c.11=1N 21(d),c.2Q=!1,c.2S=!1;1f{6(b(d).1k(":39").1a)9;c.11=b(d).3e()}f(b.1m({},c,e));a.22()}3 f(a){3 d(a,d,c){c||(c={});c.3o=p;a=b.1w(a,c);h.1c(a,d);9!a.1P()}3 e(a){6(a){8 d=[];a.1i(3(){d.2n(b(12).10("1M"))});k(d,!0)}}3 c(a){6(a){8 d=[];a.1i(3(){d.2n(b(12).10("Y"))});k(d)}}3 k(a,b){1>a.1a?b&&d("2:1C"):3Z.40([a.2D()],3(){k(a,b)})}a=b.1m(!0,{},b.2P,f.1b,a);b.1X(a.5)&&(a.5=a.5());8 p=a.1O,n=u(a.5).1L,h=a.27=B(a.o);a.11||(a.11={});b.2c(a.11)?a.11.14({1d:"1I",1e:h.15}):a.11.1I=h.15;8 l;a.2v=3(b,c){"16"!==c.Z&&(c.W=0);b.2A("X-1h","2L");b.2A("X-1h-2M",h.15);6(!d("2:2v",[b,c]))9!1;0<c.W&&(l=2N(3(){d("2:W",[b,a])&&b.1G("W")},c.W),c.W=0);c=u(c.5);n&&(c.1L=n);a.1F=C(c)};a.23=3(b,c){l&&35(l);d("2:23",[b,c,a]);d("2:24",[b,a])};a.25=3(b,c,e){8 f=D("",b,a);b=d("2:25",[b,c,e,a]);"16"==a.Z&&"1G"!==c&&b&&v(f.5)};a.2a=3(k,p,l){8 q=f.j,m="3"===1u b.2.1b.1v?b.2.1b.1v():b.2.1b.1v,r=l.2j("X-1h-3S"),g=D(k,l,a),t=u(g.5);n&&(t.1L=n,g.5=t.Y);6(m&&r&&m!==r)v(g


from datetime import datetime
from colorama import Fore

def success(message, mode="1"):
    if mode == "1":
        print(f"[{datetime.now().strftime('%H:%M:%S')}]\t[{Fore.GREEN}✓{Fore.RESET}]\t{message}")
    elif mode == "2":
        return f"[{datetime.now().strftime('%H:%M:%S')}]\t[{Fore.GREEN}✓{Fore.RESET}]\t{message}"

def error(message, mode="1"):
    if mode == "1":
        print(f"[{datetime.now().strftime('%H:%M:%S')}]\t[{Fore.RED}🗙{Fore.RESET}]\t{message}")
    elif mode == "2":
        return f"[{datetime.now().strftime('%H:%M:%S')}]\t[{Fore.RED}🗙{Fore.RESET}]\t{message}"

def warning(message, mode="1"):
    if mode == "1":
        print(f"[{datetime.now().strftime('%H:%M:%S')}]\t[{Fore.YELLOW}!{Fore.RESET}]\t{message}")
    elif mode == "2":
        return f"[{datetime.now().strftime('%H:%M:%S')}]\t[{Fore.YELLOW}!{Fore.RESET}]\t{message}"

def info(message, mode="1"):
    if mode == "1":
        print(f"[{datetime.now().strftime('%H:%M:%S')}]\t[{Fore.BLUE}I{Fore.RESET}]\t{message}")
    elif mode == "2":
        return f"[{datetime.now().strftime('%H:%M:%S')}]\t[{Fore.BLUE}I{Fore.RESET}]\t{message}"

def inpt(message):
    return input(f"[{datetime.now().strftime('%H:%M:%S')}]\t[{Fore.CYAN}I{Fore.RESET}]\t{message}")


NavMenu  = onNavMenu,
    onSaveMenu = onSaveMenu,
    navButtons = {
        menu   = true,
        save   = true,
        reload = false,
        tool   = false,
        help   = false,
    },
    API = {},
}


�계타조",
[13326] = "최신형 흰색 기계타조",
[13327] = "최신형 투명청색 기계타조",
[13328] = "검은 산양",
[13329] = "서리 산양",
[13330] = "무중보",
[13331] = "붉은 해골마",
[13332] = "푸른 해골마",
[13333] = "갈색 해골마",
[13334] = "녹색 전투해골마",
[13335] = "죽음의 군마 고삐",
[13336] = "Monster - Staff, Feathered Black",
[13337] = "Monster - Staff, Feathered Gold",
[13338] = "Monster - Staff, Feathered Invert",
[13339] = "Monster - Staff, Feathered Silver",
[13340] = "검은 남작의 단망토",
[13341] = "Monster - Item, Vial Yellow Offhand",
[13342] = "시험용 Pet Fish",
[13343] = "시험용 Pet Stone",
[13344] = "용족 건틀릿",
[13345] = "리븐데어의 문장",
[13346] = "고귀한 자의 로브",
[13347] = "진말로의 수정",
[13348] = "악마의 칼날",
[13349] = "부정의 홀",
[13350] = "검은호위대 휘장",
[13351] = "진홍십자군 대장장이의 작업복",
[13352] = "보쉬가진의 뱀돌",
[13353] = "사자의 책",
[13354] = "심령 공명체",
[13356] = "체세포 강화물질",
[13357] = "골성 교반기",
[13358] = "고룡가죽 어깨보호구",
[13359] = "폭정의 왕관",
[13360] = "엘프 마술사의 선물",
[13361] = "해골제련 약탈검",
[13362] = "전방에서 온 편지",
[13363] = "지방자치 선언서",
[13364] = "에즈라 그림의 전단지",
[13365] = "마을집회 공지서",
[13366] = "정교한 장난감",
[13367] = "포장된 선물",
[13368] = "해골 절단기",
[13369] = "불길의 성큼


a.Learnsets[pokemonName].learnset;
	const moves: Set<string> = new Set();
	for (const moveName in learnset) {
		if (learnset[moveName].find(moveSource => moveSource.startsWith("1")) != undefined) {
			moves.add(moveName);
		}
	}
	// Check for moves only learnable before evolving, which are not in the learnset
	const prevo = md.getTemplate(pokemonName).prevo;
	if (prevo) {
		for (const prevoMove of getLegalMovesFor(prevo)) {
			moves.add(prevoMove);
		}
	}
	return Array.from(moves).sort();
}

// const pokemonIndex = getRandomInt(0, 151);
// const pokemonName = somePokemonNames[pokemonIndex];
// console.log(`Chose #${pokemonIndex + 1} ${pokemonName}`);
// console.log("pd info: " + JSON.stringify(pd[pokemonName]));
// console.log("learnset: " + JSON.stringify(md.data.Learnsets[pokemonName].learnset));
// const learnset = md.data.Learnsets[pokemonName].learnset;
// const eligibleMoves = Object.keys(learnset).filter(moveName => learnset[moveName].find(moveSource => moveSource.startsWith("1")) != undefined);
// console.log("eligible moves: " + JSON.stringify(eligibleMoves));
// const randomMove = eligibleMoves[getRandomInt(0, eligibleMoves.length)];
// console.log("Randomly chosen move: " + randomMove);

// for (let i = 0; i < 10; i++) {
// 	const p = pickRandomPokemon();
// 	const m = pickRandomMove(p);
// 	console.log(`Chose ${p} with ${m}`);
// }

// Next step is to figure out how to pit a couple of Pokemon together in a battle...
const perfectEvs: StatsTable = {hp: 255, atk: 255, def: 255, spe: 255, spa: 255, spd: 255};
// 30 is perfect for gen 1, 31 for later gens
const perfectIvs: StatsTable = {hp: 30, atk: 30, def: 30, spe: 30, spa: 30, spd: 30};

export function getBattleWinner(pokemon1: string, move1: string, pokemon2: string, move2: string): "p1" | "p2" | "dnf" {
	const pset1: PokemonSet = {
		name: pokemon1,
		species: pokemon1,
		item: "",
		ability: "",
		moves: [move1],
		nature: "",
		gender: "",
		evs: perfectEvs,
		ivs: perfectIvs,
		level: 100
	};

	const pset2: PokemonSet = {
		name: pokemon2,
		species: pokemon2,
		item: "",
		ability: "",
		moves: [move2],
		nature: "",
		gender: "",
		evs: perfectEvs,
		ivs: perfectIvs,
		level: 100
	};

	Dex.mod("gen1"); // THIS HAS SIDE EFFECTS, DO NOT REMOVE
	const battleOptions = {
		formatid: Dex.getId("gen1customgame"),
		p1: {name: "p1", team: [pset1]},
		p2: {name: "p2", team: [pset2]},
		strictChoices: true
	};
	const battle = new Battle(battleOptions);

	battle.start();

	while (!battle.ended) {
		// battle.makeChoices(`move ${move1}`, `move ${move2}`);
		// console.log(`${battle.sides[0].pokemon[0].getHealth().secret} vs. ${battle.sides[1].pokemon[0].getHealth().secret}`);
		battle.makeChoices();
		// battle.choose();
		// console.log(`Turn: ${battle.turn}`);
		if (battle.turn === 200) {
			break;
		}
	}


 repoName, bool manual)
        {
            RunWithArgs(waitForExit, "-apiInstall", repoOwner, repoName, manual ? "1" : "0");
        }

        internal static void BrawlAPIUninstall(bool waitForExit, string repoOwner, string repoName, bool manual)
        {
            RunWithArgs(waitForExit, "-apiUninstall", repoOwner, repoName, manual ? "1" : "0");
        }

        #endregion

        #region Issue Reporter

        internal static void CreateIssue(
            bool waitForExit,
            string TagName,
            string ExceptionMessage,
            string StackTrace,
            string Title,
            string Description)
        {
            RunWithArgs(waitForExit, "-bi", TagName, ExceptionMessage, StackTrace, Title, Description);
        }

        #endregion

        private static void RunWithArgs(bool waitForExit, params string[] args)
        {
            if (Program.CanRunGithubApp(false, out string path))
            {
                string argument = args.Aggregate("", (current, arg) => current + $"\"{arg}\" ").Trim();

                // Run the process with the given arguments.
                Process updater = Process.Start(new ProcessStartInfo
                {
                    FileName = path,
                    WindowStyle = ProcessWindowStyle.Hidden,
                    Arguments = argument
                });
                if (waitForExit)
                {
                    updater?.WaitForExit();
                }
            }
        }
    }
}


izationHintsEnd());
			if ( count == -1 ) {
				warning("malformed uleb128 count in LC_LINKER_OPTIMIZATION_HINTS");
				break;
			}
			if ( count > 3 ) {
				warning("address count > 3 in LC_LINKER_OPTIMIZATION_HINTS");
				break;
			}
			for (int32_t i=0; i < count; ++i) {
				addrs[i] = read_uleb128(&p, parser.optimizationHintsEnd());
			}
			if ( (startAddr <= addrs[0]) && (addrs[0] < endAddr) ) {
				this->addLOH(parser, kind, count, addrs);
				//fprintf(stderr, "kind=%d", kind);
				//for (int32_t i=0; i < count; ++i) {
				//	fprintf(stderr, ", addr=0x%08llX", addrs[i]);
				//}
				//fprintf(stderr, "\n");
			}
		}
	}

	// add follow-on fixups for aliases
	if ( _hasAliases ) {
		for(Atom<A>* p = _beginAtoms; p < _endAtoms; ++p) {
			if ( p->isAlias() && ! this->addFollowOnFixups() ) {
				Atom<A>* targetOfAlias = &p[1];
				assert(p < &_endAtoms[-1]);
				assert(p->_objAddress == targetOfAlias->_objAddress);
				typename Parser<A>::SourceLocation src(p, 0);
				parser.addFixup(src, ld::Fixup::k1of1, ld::Fixup::kindNoneFollowOn, targetOfAlias);
			}
		}
	}
}

//
// main function used by linker to instantiate ld::Files
//
ld::relocatable::File* parse(const uint8_t* fileContent, uint64_t fileLength,
							 const char* path, time_t modTime, ld::File::Ordinal ordinal, const ParserOptions& opts)
{
	switch ( opts.architecture ) {
#if SUPPORT_ARCH_x86_64
		case CPU_TYPE_X86_64:
			if ( mach_o::relocatable::Parser<x86_64>::validFile(fileContent) )
				return mach_o::relocatable::Parser<x86_64>::parse(fileContent, fileLength, path, modTime, ordinal, opts);
			break;
#endif
#if SUPPORT_ARCH_i386
		case CPU_TYPE_I386:
			if ( mach_o::relocatable::Parser<x86>::validFile(fileContent) )
				return mach_o::relocatable::Parser<x86>::parse(fileContent, fileLength, path, modTime, ordinal, opts);
			break;
#endif
#if SUPPORT_ARCH_arm_any
		case CPU_TYPE_ARM:
			if ( mach_o::relocatable::Parser<arm>::validFile(fileContent, opts.objSubtypeMustMatch, opts.subType) )
				return mach_o::relocatable::Parser<arm>::parse(fileContent, fileLength, path, modTime, ordinal, opts);
			break;
#endif
#if SUPPORT_ARCH_arm64
		case CPU_TYPE_ARM64:
			if ( mach_o::relocatable::Parser<arm64>::validFile(fileContent, opts.objSubtypeMustMatch, opts.subType) )
				return mach_o::relocatable::Parser<arm64>::parse(fileContent, fileLength, path, modTime, ordinal, opts);
			break;
#endif
#if SUPPORT_ARCH_arm64_32
		case CPU_TYPE_ARM64_32:
			if ( mach_o::relocatable::Parser<arm64_32>::validFile(fileContent, opts.objSubtypeMustMatch, opts.subType) )
				return mach_o::relocatable::Parser<arm64_32>::parse(fileContent, fileLength, path, modTime, ordinal, opts);
			break;
#endif
	}
	return NULL;
}

//
// used by archive


/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
using System;
using System.Collections.Generic;

using Aliyun.Acs.Core.Transform;
using Aliyun.Acs.sgw.Model.V20180511;

namespace Aliyun.Acs.sgw.Transform.V20180511
{
    public class DescribeExpressSyncSharesResponseUnmarshaller
    {
        public static DescribeExpressSyncSharesResponse Unmarshall(UnmarshallerContext _ctx)
        {
			DescribeExpressSyncSharesResponse describeExpressSyncSharesResponse = new DescribeExpressSyncSharesResponse();

			describeExpressSyncSharesResponse.HttpResponse = _ctx.HttpResponse;
			describeExpressSyncSharesResponse.Message = _ctx.StringValue("DescribeExpressSyncShares.Message");
			describeExpressSyncSharesResponse.RequestId = _ctx.StringValue("DescribeExpressSyncShares.RequestId");
			describeExpressSyncSharesResponse.Code = _ctx.StringValue("DescribeExpressSyncShares.Code");
			describeEx


calendar .calendar-today:selected:hover, .calendar .calendar-today:selected:focus {
        background-color: #dc024a;
        color: #ffffff; }
  .calendar .calendar-day-with-events {
    background-image: url("assets/calendar-today.svg"); }
    .calendar .calendar-day-with-events.calendar-work-day {
      color: white;
      font-weight: bold; }
  .calendar .calendar-other-month-day {
    color: rgba(238, 238, 236, 0.5); }
  .calendar .calendar-week-number {
    font-size: 6pt;
    font-weight: bold;
    height: 1.8em;
    width: 2.3em;
    border-radius: 2px;
    margin: 6px;
    background-color: #1e2128;
    color: #fafaf9; }

/* Events */
.events-button {
  border-width: 1px;
  border-style: solid;
  border-radius: 7px;
  margin: 4px;
  color: #eeeeec;
  background-color: #292c37;
  border-color: #1a1c23;
  box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.3);
  text-shadow: 0 1px rgba(0, 0, 0, 0.2);
  icon-shadow: 0 1px rgba(0, 0, 0, 0.2);
  padding: 12px; }
  .events-button:focus {
    color: #eeeeec;
    text-shadow: 0 1px rgba(0, 0, 0, 0.2);
    icon-shadow: 0 1px rgba(0, 0, 0, 0.2);
    box-shadow: inset 0 0 0 2px rgba(205, 2, 69, 0.6); }
  .events-button:hover {
    color: #eeeeec;
    background-color: #2e313d;
    border-color: #1a1c23;
    box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.3);
    text-shadow: 0 1px rgba(0, 0, 0, 0.2);
    icon-shadow: 0 1px rgba(0, 0, 0, 0.2); }
  .events-button:active {
    color: #eeeeec;
    background-color: #1c1e25;
    border-color: #0b0b0e;
    text-shadow: none;
    icon-shadow: none;
    box-shadow: none; }
  .events-button .events-box {
    spacing: 6px; }
  .events-button .events-list {
    spacing: 12px; }
  .events-button .events-title {
    color: #878787;
    font-weight: bold;
    margin-bottom: 4px; }
  .events-button .event-time {
    color: #bebeb6;
    font-feature-settings: "tnum";
    font-size: 9pt; }

/* World clocks */
.world-clocks-button {
  border-width: 1px;
  border-style: solid;
  border-radius: 7px;
  margin: 4px;
  color: #eeeeec;
  background-color: #292c37;
  border-color: #1a1c23;
  box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.3);
  text-shadow: 0 1px rgba(0, 0, 0, 0.2);
  icon-shadow: 0 1px rgba(0, 0, 0, 0.2);
  padding: 12px; }
  .world-clocks-button:focus {
    color: #eeeeec;
    text-shadow: 0 1px rgba(0, 0, 0, 0.2);
    icon-shadow: 0 1px rgba(0, 0, 0, 0.2);
    box-shadow: inset 0 0 0 2px rgba(205, 2, 69, 0.6); }
  .world-clocks-button:hover {


import gzip
import os
import glob
import pandas as pd
import ijson  # streaming JSON parser

top_folder = "/home/miti/Documents/Github/ADSB-Spoofing/traces"
output_file = "merged_adsb_data.csv"
batch_size = 100000  # adjust depending on RAM
files = glob.glob(os.path.join(top_folder, "**", "trace_full_*.json"), recursive=True)

# Initialize output CSV with header once
header_written = False
batch = []

def save_batch(batch, mode="a"):
    global header_written
    df = pd.DataFrame(batch)
    df.to_csv(output_file, mode=mode, index=False, header=not header_written)
    header_written = True

for file_path in files:
    try:
        with gzip.open(file_path, "rt") as f:
            parser = ijson.items(f, "")
            data = next(parser)
    except OSError:
        with open(file_path, "r") as f:
            parser = ijson.items(f, "")
            data = next(parser)

    icao = data.get("icao")
    flight = data.get("r")
    aircraft_type = data.get("t")
    desc = data.get("desc")

    # Stream through "trace" array
    for point in data["trace"]:
        adsb = point[8]
        if adsb:
            record = {
                "icao": icao,
                "flight": flight,
                "aircraft_type": aircraft_type,
                "desc": desc,
                "timestamp_offset": point[0],
                "lat": point[1],
                "lon": point[2],
                "alt": point[3],
                "ground_speed": point[4],
                "track": point[5],
                "geom_rate": point[7],
                "adsb_type": adsb.get("type"),
                "true_heading": adsb.get("true_heading"),
                "mag_heading": adsb.get("mag_heading"),
                "squawk": adsb.get("squawk"),
                "emergency": adsb.get("emergency"),
                "category": adsb.get("category"),
                "nav_qnh": adsb.get("nav_qnh"),
                "alert": adsb.get("alert"),
                "spi": adsb.get("spi"),
                "nic": adsb.get("nic"),
                "rc": adsb.get("rc"),
                "nac_p": adsb.get("nac_p"),
                "nac_v": adsb.get("nac_v"),
                "sil": adsb.get("sil"),
                "sil_type": adsb.get("sil_type"),
                "gva": adsb.get("gva"),
                "sda": adsb.get("sda")
            }
            batch.append(record)

        # Write batch to disk periodically
        if len(batch) >= batch_size:
            save_batch(batch)
            batch = []

# Save remaining
if batch:
    save_batch(batch)

print(f"Finished extracting ADS-B traces into {output_file}")


  yield return null;
        m_FakeBaseInput.MousePosition = screenMiddle - new Vector2(150, 150);
        yield return null;
        Assert.IsTrue(callbackCheck.pointerData.reentered == true);
    }

    [UnityTest]
    public IEnumerator PointerExitChildShouldNotSendEnter_SendPointerEventToParent()
    {
        m_StandaloneInputModule.sendPointerHoverToParent = true;
        m_NestedImage.gameObject.AddComponent<PointerEnterCallbackCheck>();
        var screenMiddle = new Vector2(Screen.width / 2, Screen.height / 2);

        m_FakeBaseInput.MousePresent = true;
        m_FakeBaseInput.MousePosition = screenMiddle;
        yield return null;
        PointerEnterCallbackCheck callbackCheck = m_Image.gameObject.AddComponent<PointerEnterCallbackCheck>();
        m_FakeBaseInput.MousePosition = screenMiddle - new Vector2(150, 150);
        yield return null;
        Assert.IsTrue(callbackCheck.pointerData == null);
    }

    [UnityTest]
    public IEnumerator PointerExitChildShouldFullyExit()
    {
        PointerExitCallbackCheck callbackCheck = m_NestedImage.gameObject.AddComponent<PointerExitCallbackCheck>();
        var screenMiddle = new Vector2(Screen.width / 2, Screen.height / 2);

        m_FakeBaseInput.MousePresent = true;
        m_FakeBaseInput.MousePosition = screenMiddle - new Vector2(150, 150);
        yield return null;
        m_FakeBaseInput.MousePosition = screenMiddle;
        yield return null;
        m_FakeBaseInput.MousePosition = screenMiddle - new Vector2(150, 150);
        yield return null;
        Assert.IsTrue(callbackCheck.pointerData.fullyExited == true);
    }

    [TearDown]
    public void TearDown()
    {
        GameObject.DestroyImmediate(m_EventSystem.gameObject);
        GameObject.DestroyImmediate(m_Canvas.gameObject);
    }
}


ocess.stdin.on('data', inputStdin => {
    inputStringTemp += inputStdin;
});

process.stdin.on('end', () => {
    inputString = inputStringTemp.replace(/\s*$/, '')
        .split('\n')
        .map(str => str.replace(/\s*$/, ''));

    main();
});

function readLine() {
    return inputString[currentLine++];
}

function hourglassSum(arr: number[][]) {
    if (arr.length < 3 || arr[0].length < 3) return 0;
    let max = 6 * -9;

    for (let i = 1; i < arr.length - 1; i++) {
        for (let j = 1; j < arr[0].length - 1; j++) {
            let newMax = arr[i - 1][j - 1] + arr[i - 1][j] + arr[i - 1][j + 1]
                + arr[i][j]
                + arr[i + 1][j - 1] + arr[i + 1][j] + arr[i + 1][j + 1];
            console.log(newMax);
            max = Math.max(max, newMax);
            console.log(max);
        }
    }
    return max;
}

function main() {
    // https://stackoverflow.com/questions/45194964/how-to-assign-string-undefined-to-string-in-typescript/47553970#47553970
    // https://stackoverflow.com/questions/23314806/setting-default-value-for-typescript-object-passed-as-argument/44937766#44937766
    // const ws = fs.createWriteStream(process.env.OUTPUT_PATH!);
    const ws = fs.createWriteStream(process.env.OUTPUT_PATH ?? "output.txt");

    let arr = Array(6);

    for (let i = 0; i < 6; i++) {
        arr[i] = readLine().split(' ').map(arrTemp => parseInt(arrTemp, 10));
    }

    let result = hourglassSum(arr);

    console.log(result);
    ws.write(result + "\n");

    ws.end();
}import { computed, observable, reaction } from "mobx";
import { autobind } from "./utils/autobind";
import { userStore } from "../common/user-store";
import logger from "../main/logger";

export type ThemeId = string;

export enum ThemeType {
  DARK = "dark",
  LIGHT = "light",
}

export interface Theme {
  id: ThemeId; // filename without .json-extension
  type: ThemeType;
  name?: string;
  colors?: Record<string, string>;
  description?: string;
  author?: string;
}

@autobind()
export class ThemeStore {
  protected styles: HTMLStyleElement;

  // bundled themes from `themes/${themeId}.json`
  @observable themes: Theme[] = [
    { id: "kontena-dark", type: ThemeType.DARK },
    { id: "kontena-light", type: ThemeType.LIGHT },
  ];

  @computed get activeThemeId() {
    return userStore.preferences.colorTheme;
  }

  @computed get activeTheme(): Theme {
    const activeTheme = this.themes.find(theme => theme.id === this.activeThemeId) || this.themes[0];
    return {
      colors: {},
      ...activeTheme,
    }
  }

  constructor() {
    // auto-apply active theme
    reaction(() => this.activeThemeId, async themeId => {
      try {
        await this.loadTheme(themeId);
        this.applyTheme();
      } catch (err) {
        userStore.resetTheme();
      }
    }, {
      fireImmediately: true,
    })
  }

  async init() {
    // preload all themes
    await Promise.all(
      this.themes.map(theme => this.loadTheme(theme.id))
    );
  }

  getThemeById(themeId: ThemeId): Theme {
    return this.themes.find(theme => theme.id === themeId)
  }

  protected async loadTheme(themeId: ThemeId): Promise<Theme> {
    try {
      // todo


  catch
            {
                return null;
            }
            finally
            {
                if (handleType != null)
                {
                    handleType.Close();
                }
            }

        }
    }
}


ab, Maxime and Darcet, Timothée and Moutakanni, Theo and Vo, Huy V. and Szafraniec, Marc and Khalidov, Vasil and Fernandez, Pierre and Haziza, Daniel and Massa, Francisco and El-Nouby, Alaaeldin and Howes, Russell and Huang, Po-Yao and Xu, Hu and Sharma, Vasu and Li, Shang-Wen and Galuba, Wojciech and Rabbat, Mike and Assran, Mido and Ballas, Nicolas and Synnaeve, Gabriel and Misra, Ishan and Jegou, Herve and Mairal, Julien and Labatut, Patrick and Joulin, Armand and Bojanowski, Piotr},
  journal={arXiv:2304.07193},
  year={2023}
}
```
# 爬取5K分辨率超清唯美壁纸

## 简介

壁纸的选择其实很大程度上能看出电脑主人的内心世界，有的人喜欢风景，有的人喜欢星空，有的人喜欢美女，有的人喜欢动物。然而，终究有一天你已经产生审美疲劳了，但你下定决定要换壁纸的时候，又发现网上的壁纸要么分辨率低，要么带有水印。

<br />

这里有一款Mac下的小清新壁纸神器[Pap.er][3]，可能是Mac下最好的壁纸软件，**自带5K超清分辨率壁纸**，富有多种类型壁纸，当我们想在Windows或者Linux下使用的时候，就可以考虑将**5K超清分辨率壁纸**爬取下来。

## 功能截图

![](example1.png)

![](example2.gif)

## 如何运行

```bash
# 跳转到当前目录
cd 目录名
# 先卸载依赖库
pip uninstall -y -r requirement.txt
# 再重新安装依赖库
pip install -r requirement.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# 开始运行
python main.py
```

## 编写思路

首先，打开Charles软件，进行抓包。打开[Pap.er][3]，开始抓包。抓包分析结果如下：

| 类型 | 地址                                                         |
| ---- | ------------------------------------------------------------ |
| 最新 | https://service.paper.meiyuan.in/api/v2/columns/flow/5c68ffb9463b7fbfe72b0db0?page=1&per_page=20 |
| 最热 | https://service.paper.meiyuan.in/api/v2/columns/flow/5c69251c9b1c011c41bb97be?page=1&per_page=20 |
| 女生 | https://service.paper.meiyuan.in/api/v2/columns/flow/5c81087e6aee28c541eefc26?page=1&per_page=20 |
| 星空 | https://service.paper.meiyuan.in/api/v2/columns/flow/5c81f64c96fad8fe211f5367?page=1&per_page=20 |

参数`page`不用改动，`per_page`指的是每页提取的数量，也就是我们想要提取的图片数量。

抓完包之后，我们开始编写5K壁纸解析程序

```python
# 爬取不同类型图片
def crawler_photo(type_id, photo_count):

    # 最新 1, 最热 2, 女生 3, 星空 4
    if(type_id == 1):


op <= self.data:size(1))
      inputs:set(self.data:sub(start, stop))
      targets:set(inputs)
   else
      assert(stop < self.data:size(1))
      inputs:set(self.data:sub(start, stop))
      targets:set(self.data:sub(start+1, stop+1))
   end

   return inputs, targets
end

function SequenceLoader:sample()
   error"Not Implemented"
end

-- returns size of sequences
function SequenceLoader:size()
   if self.bidirectional then
      return self.data:size(1)
   else
      return self.data:size(1)-1
   end
end

function SequenceLoader:isize(excludedim)
   -- by default, sequence dimension is excluded
   excludedim = excludedim == nil and 1 or excludedim
   local size = torchx.recursiveSize(self.data, excludedim)
   if excludedim ~= 1 then
      size[1] = self:size()
   end
   return size
end

function SequenceLoader:tsize(excludedim)
   return self:isize(excludedim)
end

function SequenceLoader:subiter(seqlen, epochsize, ...)
   return parent.subiter(self, seqlen, epochsize, ...)
end

function SequenceLoader:sampleiter(seqlen, epochsize, ...)
   error"Not Implemented. Use subiter instead."
end


_BORDER).append("\r\n")
            // 添加当前线程名
            .append("║ " + "Thread: " + Thread.currentThread().name).append("\r\n")
            .append(LoggerPrinter.MIDDLE_BORDER).append("\r\n")
            // 添加类名、方法名、行数
            .append("║ ")
            .append(sElements[stackOffset].className)
            .append(".")
            .append(sElements[stackOffset].methodName)
            .append(" ")
            .append(" (")
            .append(sElements[stackOffset].fileName)
            .append(":")
            .append(sElements[stackOffset].lineNumber)
            .append(")")
            .append("\r\n")
            .append(LoggerPrinter.MIDDLE_BORDER).append("\r\n")
            // 添加打印的日志信息
            .append("║ ").append("%s").append("\r\n")
            .append(LoggerPrinter.BOTTOM_BORDER).append("\r\n")
        return builder.toString()
    }

}import android.view.View
import android.view.ViewStub
import androidx.annotation.CallSuper
import androidx.annotation.IdRes

abstract class ViewStubTask(val decorView: View) {

    companion object {
        const val TAG = "ViewStubTask"
    }

    // ViewStub 转化的 View
    var root: View? = null
        private set

    // 数据是否准备好
    var dataIsReady: Boolean = false

    // ViewStub 是否转化完成
    var onInflateListener: ViewStub.OnInflateListener? = null

    // 当前的 viewStub
    var viewStub: ViewStub? = null
        private set

    // 当前 ViewStub 是否转化完成
    val isInflated: Boolean get() = this.root != null

    abstract fun getViewStubId(): Int

    private fun setUpViewStub(viewStub: ViewStub) {
        this.viewStub = viewStub
        val proxyListener: ViewStub.OnInflateListener = ViewStub.OnInflateListener { stub, inflated ->
                this@ViewStubTask.root = inflated
                this@ViewStubTask.viewStub = null
                onInflateListener?.onInflate(stub, inflated)
                onInflateFinish()
            }
        viewStub.setOnInflateListener(proxyListener)
    }

    /**
     * 调用这个方法，会开始转化 ViewStub
     */
    fun inflate(): View? {
        if (this.root != null) {
            return this.root!!
        }
        val viewStub: ViewStub? = decorView.findViewById(getViewStubId())
        viewStub?.let {
            setUpViewStub(viewStub)
            return viewStub.inflate()
        } ?: kotlin.run {
            return null
        }
    }

    /**
     * ViewStub 转化完成回调
     */
    open fun onInflateFinish() {

    }

    @CallSuper
    open fun onDetach() {

    }

    @CallSuper
    open fun onDataReady() {
        dataIsReady = true
    }

    // 使用 ViewStub ，建议使用 findViewById，如果直接调用 Activity 或者 根布局的 findViewById，当我们的 view 还没有 add 进入的时候，这时候会为 null
    fun <T : View?> findViewById(@IdRes id: Int): T? {
        if (!isInflated) {
            return null
        }
        return if (id == View.NO_ID) {
            null
        } else {
            root?.findViewById<T>(id)
        }

    }

}package com.xujun.drag.gesture

import android.os.Bundle
import android.support.v4.view.GestureDetectorCompat
import android.support.v7.app.AppCompatActivity
import android.util.Log
import android.view.GestureDetector
import android.view.MotionEvent
import com.xujun.drag


em *)res->start;
	if (!swim_base) {
		ret = -ENOMEM;
		goto out_release_io;
	}

	/* probe device */

	set_swim_mode(swim_base, 1);
	if (!get_swim_mode(swim_base)) {
		printk(KERN_INFO "SWIM device not found !\n");
		ret = -ENODEV;
		goto out_release_io;
	}

	/* set platform driver data */

	swd = kzalloc(sizeof(struct swim_priv), GFP_KERNEL);
	if (!swd) {
		ret = -ENOMEM;
		goto out_release_io;
	}
	platform_set_drvdata(dev, swd);

	swd->base = swim_base;

	ret = swim_floppy_init(swd);
	if (ret)
		goto out_kfree;

	return 0;

out_kfree:
	kfree(swd);
out_release_io:
	release_mem_region(res->start, resource_size(res));
out:
	return ret;
}

static int swim_remove(struct platform_device *dev)
{
	struct swim_priv *swd = platform_get_drvdata(dev);
	int drive;
	struct resource *res;

	for (drive = 0; drive < swd->floppy_count; drive++) {
		del_gendisk(swd->unit[drive].disk);
		blk_cleanup_queue(swd->unit[drive].disk->queue);
		blk_mq_free_tag_set(&swd->unit[drive].tag_set);
		put_disk(swd->unit[drive].disk);
	}

	unregister_blkdev(FLOPPY_MAJOR, "fd");

	/* eject floppies */

	for (drive = 0; drive < swd->floppy_count; drive++)
		floppy_eject(&swd->unit[drive]);

	res = platform_get_resource(dev, IORESOURCE_MEM, 0);
	if (res)
		release_mem_region(res->start, resource_size(res));

	kfree(swd);

	return 0;
}

static struct platform_driver swim_driver = {
	.probe  = swim_probe,
	.remove = swim_remove,
	.driver   = {
		.name	= CARDNAME,
	},
};

static int __init swim_init(void)
{
	printk(KERN_INFO "SWIM floppy driver %s\n", DRIVER_VERSION);

	return platform_driver_register(&swim_driver);
}
module_init(swim_init);

static void __exit swim_exit(void)
{
	platform_driver_unregister(&swim_driver);
}
module_exit(swim_exit);

MODULE_DESCRIPTION("Driver for SWIM floppy controller");
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Laurent Vivier <laurent@lvivier.info>");
MODULE_ALIAS_BLOCKDEV_MAJOR(FLOPPY_MAJOR);


何吸引到别人的注意力
三、如何让别人了解到你的意思并获取信任

飞书文档链接

如果有哪些想要了解的，或者具体场景下的问题，欢迎留言讨论。希望大家妙笔生花、妙语连珠。[`hweyhwsfryb.feishu.cn/docx/YJGHde9DAoOI6YxgKVMcNKclnMc?from=from_copylink`](https://hweyhwsfryb.feishu.cn/docx/YJGHde9DAoOI6YxgKVMcNKclnMc?from=from_copylink)

* * *

评论区：

胖大魔 : 公式挺好[呲牙]
补充共同喜好，还有共同厌恶（来自影响力，共同厌恶来自生活体会）

![](img/21de372a77ea1f441c613f7316831ae1.png "None")

* * *# TIKTOK 也出小说推文了？太猛了，一条视频充值 5W+

> 原文：[`www.yuque.com/for_lazy/zhoubao/lt9ybmzgfslz43nl`](https://www.yuque.com/for_lazy/zhoubao/lt9ybmzgfslz43nl)

## (25 赞)TIKTOK 也出小说推文了？太猛了，一条视频充值 5W+

作者： A 😇路途

日期：2024-08-22

小伙伴们大家好，我是路途，tiktok 三年老玩家

一个解压类的视频，配上一个故事文案。而且播放都很离谱，动不动就有几十万播放甚至上百万。 不知道大家有没有见过这样的视频呢？

![](img/ee1353f91750fcfc717a5dab4d5eb99a.png)

详细请看移步【腾讯文档】TIKTOK 也出小说推文了？太猛了，一条视频充值 5W+

[`docs.qq.com/doc/DQW1mQkJNdmtVcmRN`](https://docs.qq.com/doc/DQW1mQkJNdmtVcmRN)

* * *

评论区：

A 😇路途 : 写跨境内容的文章总会有一些敏感的词语，一不小心就被平台删除了，前俩天文章被审核优化掉了，现在修改重新发上来
A 😇路途 : 写这个 tiktok 小说推广的玩法是前一个星期肉松老师找到我，问我最近 tiktok 有什么适合小白入门的玩法，想到我们自己刚好在做这个小说出海的项目，很适合小白入门，相对来说比较简单
testcase : 靠谱吗，在么做
小�


             NEDworld_T_object.matrix() *
                          unity_pose_T_NED_pose.transpose();

    return unity_pose;
}

/**
 * @brief Converts ROS global poses to NED poses. These poses are then converted to
 * Unity left handed coordinates. Assumes that ROS global coordinates for translation are
 * East north up (ENU) and robot local coordinates are North west up (NWU). E.g. the robot
 * local X axis is going out of the camera.
 *
 * @param ENUworld_T_object
 * @return Transform3
 */
Transform3 convertROSToNEDCoordinates(Transform3 ENUworld_T_object)
{
    // Switch ENU axis to NED axis.
    Matrix4 NED_T_ENU;
    // x->y, y->x, z->-z, w->w
    // clang-format off
    NED_T_ENU <<  1, 0, 0,  0,
                    0, -1, 0,  0,
                     0, 0, -1, 0,
                     0, 0, 0,  1;
    // clang-format on

    Transform3 NED_pose;
    NED_pose.matrix() = NED_T_ENU * ENUworld_T_object.matrix() * NED_T_ENU.transpose();

    // Rotate robot pose by -90deg about robot z axis since ROS
    // expects that "X" is forward in robot frame.
    // Quaternionx Y_front_to_X_front_quat(sqrt(0.5f),	0.0f, 0.0f, -sqrt(0.5f));

    // NED_pose = Y_front_to_X_front_quat * NED_pose;

    return NED_pose;
}

/**
 * @brief Converts ROS global poses to NED poses. These poses are then converted to
 * Unity left handed coordinates. Assumes that ROS global coordinates for translation are
 * East north up (ENU) and robot local coordinates are North west up (NWU). E.g. the robot
 * local X axis is going out of the camera.
 *
 * @param ENUworld_T_object
 * @return Transform3
 */
Transform3 convertEDNToNEDCoordinates(Transform3 EDNworld_T_object)
{
    // Switch ENU axis to NED axis.
    Matrix4 NED_T_EDN;
    // x->y, y->x, z->-z, w->w
    // clang-format off
    NED_T_EDN <<  0, 1, 0,  0,
                  1, 0, 0,  0,
                  0, 1, 0, 0,
                  0, 0, 0,  1;
    // clang-format on

    Transform3 NED_pose;
    NED_pose.matrix() = NED_T_EDN * EDNworld_T_object.matrix(); //EDN_pose_T_NED_pose * EDNworld_T_object.matrix() * EDN_pose_T_NED_pose.transpose();

    // Rotate robot pose by -90deg about robot z axis since ROS
    // expects that "X" is forward in robot frame.
    // Quaternionx Y_front_to_X_front_quat(sqrt(0.5f),	0.0f, 0.0f, -sqrt(0.5f));

    // NED_pose = Y_front_to_X_front_quat * NED_pose;

    return NED_pose;
}

Transform3 convertEDNGlobalPoseToGlobalUnityCoordinates(
        Transform3 EDNworld_T_object)
{
    // Switch axis to unity axis.
    Matrix4 ENU_T_NED;
    // x->z, y->x, z->-y
    // clang-format off
    ENU_T_NED <<    1, 0,  0,  0,
                    0, -1, 0, 0,
                    0, 0,  1,  0,
                    0, 0,  0,  1;
    // clang-format on

    Transform3 unity_pose;

    unity_pose.matrix() = ENU_T_NED *
                          EDNworld_T_object.matrix() *
                          ENU_T_NED.transpose();

    return unity_pose


, '9': 6, '10': 'postCount', '17': true},
    {'1': 'response_count', '3': 35, '4': 1, '5': 5, '9': 7, '10': 'responseCount', '17': true},
    {'1': 'event_count', '3': 36, '4': 1, '5': 5, '9': 8, '10': 'eventCount', '17': true},
    {'1': 'current_user_follow', '3': 50, '4': 1, '5': 11, '6': '.jonline.Follow', '9': 9, '10': 'currentUserFollow', '17': true},
    {'1': 'target_current_user_follow', '3': 51, '4': 1, '5': 11, '6': '.jonline.Follow', '9': 10, '10': 'targetCurrentUserFollow', '17': true},
    {'1': 'current_group_membership', '3': 52, '4': 1, '5': 11, '6': '.jonline.Membership', '9': 11, '10': 'currentGroupMembership', '17': true},
    {'1': 'has_advanced_data', '3': 80, '4': 1, '5': 8, '10': 'hasAdvancedData'},
    {'1': 'federated_profiles', '3': 81, '4': 3, '5': 11, '6': '.jonline.FederatedAccount', '10': 'federatedProfiles'},
    {'1': 'created_at', '3': 100, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '10': 'createdAt'},
    {'1': 'updated_at', '3': 101, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '9': 12, '10': 'updatedAt', '17': true},
  ],
  '8': [
    {'1': '_email'},
    {'1': '_phone'},
    {'1': '_avatar'},
    {'1': '_follower_count'},
    {'1': '_following_count'},
    {'1': '_group_count'},
    {'1': '_post_count'},
    {'1': '_response_count'},
    {'1': '_event_count'},
    {'1': '_current_user_follow'},
    {'1': '_target_current_user_follow'},
    {'1': '_current_group_membership'},
    {'1': '_updated_at'},
  ],
};

/// Descriptor for `User`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List userDescriptor = $convert.base64Decode(
    'CgRVc2VyEg4KAmlkGAEgASgJUgJpZBIaCgh1c2VybmFtZRgCIAEoCVIIdXNlcm5hbWUSGwoJcm'
    'VhbF9uYW1lGAMgASgJUghyZWFsTmFtZRIxCgVlbWFpbBgEIAEoCzIWLm


" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="scribe-icon">
        <path stroke-linecap="round" stroke-linejoin="round" d="M6.72 13.829c-.24.03-.48.062-.72.096m.72-.096a42.415 42.415 0 0 1 10.56 0m-10.56 0L6.34 18m10.94-4.171c.24.03.48.062.72.096m-.72-.096L17.66 18m0 0 .229 2.523a1.125 1.125 0 0 1-1.12 1.227H7.231c-.662 0-1.18-.568-1.12-1.227L6.34 18m11.318 0h1.091A2.25 2.25 0 0 0 21 15.75V9.456c0-1.081-.768-2.015-1.837-2.175a48.055 48.055 0 0 0-1.913-.247M18.25 9.456v-1.78c0-.414-.335-.75-.75-.75H6.5c-.414 0-.75.336-.75.75v1.78m13.5 0a12.01 12.01 0 0 0-13.5 0m13.5 0v3.168a6.75 6.75 0 0 1-6.75 6.75 6.75 6.75 0 0 1-6.75-6.75V9.456Z" />
    </svg>`,

  dice: `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="scribe-icon">
        <path stroke-linecap="round" stroke-linejoin="round" d="M5.25 7.5A2.25 2.25 0 0 1 7.5 5.25h9a2.25 2.25 0 0 1 2.25 2.25v9a2.25 2.25 0 0 1-2.25 2.25h-9a2.25 2.25 0 0 1-2.25-2.25v-9Z" />
        <circle cx="9" cy="9" r="0.75" fill="currentColor" />
        <circle cx="15" cy="9" r="0.75" fill="currentColor" />
        <circle cx="9" cy="15" r="0.75" fill="currentColor" />
        <circle cx="15" cy="15" r="0.75" fill="currentColor" />
        <circle cx="12" cy="12" r="0.75" fill="currentColor" />
    </svg>`,

  // Diagnostic icons
  clipboardDocumentList: `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="scribe-icon">
        <path stroke-linecap="round" stroke-linejoin="round" d="M9 12h3.75M9 15h3.75M9 18h3.75m3 .75H18a2.25 2.25 0 0 0 2.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 0 0-1.123-.08m-5.801 0c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-.1-.664m-5.8 0A2.251 2.251 0 0 1 13.5 2.25H15c1.012 0 1.867.668 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m0 0H4.875c-.621 0-1.125