able_id][j] = table.sparse_value_name(j);
    }
    sparse_grad_names_[table_id].resize(table.sparse_grad_name_size());
    for (int j = 0; j < table.sparse_grad_name_size(); ++j) {
      sparse_grad_names_[table_id][j] = table.sparse_grad_name(j);
    }
    label_var_name_[table_id] = table.label_var_name();
    sparse_push_keys_[table_id] = std::vector<uint64_t>();
  }

  for (int i = 0; i < param_.dense_table_size(); ++i) {
    uint64_t table_id = static_cast<uint64_t>(param_.dense_table(i).table_id());
    auto table = param_.dense_table(i);
    dense_value_names_[table_id].resize(table.dense_value_name_size());
    for (int j = 0; j < table.dense_value_name_size(); ++j) {
      dense_value_names_[table_id][j] = table.dense_value_name(j);
    }
    dense_grad_names_[table_id].resize(table.dense_grad_name_size());
    for (int j = 0; j < table.dense_grad_name_size(); ++j) {
      dense_grad_names_[table_id][j] = table.dense_grad_name(j);
    }
  }

  skip_ops_.resize(param_.skip_ops_size());
  for (int i = 0; i < param_.skip_ops_size(); ++i) {
    skip_ops_[i] = param_.skip_ops(i);
  }
  for (int i = 0; i < param_.stat_var_names_size(); ++i) {
    stat_var_name_map_[param_.stat_var_names(i)] = 1;
  }

  need_to_push_sparse_ = param_.push_sparse();
  need_to_push_dense_ = param_.push_dense();

  fleet_ptr_ = FleetWrapper::GetInstance();
  heter_ptr_ = HeterWrapper::GetInstance();
  fetch_config_ = desc.fetch_config();
  use_cvm_ = desc.use_cvm();
  // for sparse value accessor, embedding only
  no_cvm_ = desc.no_cvm();
  scale_datanorm_ = desc.scale_datanorm();
  dump_slot_ = desc.dump_slot();
  dump_fields_.resize(desc.dump_fields_size());
  for (int i = 0; i < desc.dump_fields_size(); ++i) {
    dump_fields_[i] = desc.dump_fields(i);
  }
  adjust_ins_weight_config_ = desc.adjust_ins_weight_config();
  need_dump_param_ = false;
  dump_param_.resize(desc.dump_param_size());
  for (int i = 0; i < desc.dump_param_size(); ++i) {
    dump_param_[i] = desc.dump_param(i);
  }
  if (desc.dump_param_size() != 0) {
    need_dump_param_ = true;
  }
  for (int i = 0; i < desc.check_nan_var_names_size(); ++i) {
    check_nan_var_names_.push_back(desc.check_nan_var_names(i));
  }
  copy_table_config_ = desc.copy_table_config();
  for (int i = 0; i < copy_table_config_.src_sparse_tables_size(); ++i) {
    uint64_t src_table = copy_table_config_.src_sparse_tables(i);
    uint64_t dest_table = copy_table_config_.dest_sparse_tables(i);
    VLOG(3) << "copy_sparse_tables_ push back " << src_table << "->"
            << dest_table;
    copy_sparse_tables_.push_


#if defined(CONFIG_W7OLMC)
	andi.   r4, r4, 0x00ff		/* lmc has 8 bits */
#else
	andi.   r4, r4, 0xffff		/* lmg has 16 bits */
#endif
	beq     LED2			/* next test */
	addi    r3, 0, ERR_LED		/* error code = 1 */
	bl	log_err			/* display error and halt */
LED2:	addi    r3, 0, ERR_00		/* 2nd test value is 0000 */
	addi	r4, r3, 0		/* save copy of pattern */
	bl	set_led			/* store first test value */
	bl	get_led			/* read it back */
	xor.	r4, r4, r3		/* compare to original */
#if defined(CONFIG_W7OLMC)
	andi.   r4, r4, 0x00ff		/* lmc has 8 bits */
#else
	andi.   r4, r4, 0xffff		/* lmg has 16 bits */
#endif
	beq     LED3			/* next test */
	addi    r3, 0, ERR_LED		/* error code = 1 */
	bl	log_err			/* display error and halt */

LED3:	/* restore stack and return */
	lwz	r0, +16(r1)		/* Get saved link register */
	mtlr	r0			/* Restore link register */
	lwz	r4, +8(r1)		/* restore r4 */
	addi	r1, r1, +12		/* Remove frame from stack */
	blr				/* Return to calling function */

/****************************************
 ****************************************
 ********     SDRAM TESTS        ********
 ****************************************
 ***************************************/
test_sdram:
	/* called with mem size in r3 */
	/* save the return info on stack */
	mflr	r0			/* Get link register */
	stwu	r1, -16(r1)		/* Save back chain and move SP */
	stw	r0, +20(r1)		/* Save link register */
	stmw	r30, +8(r1)		/* save R30,R31 */
					/* r30 is log2(mem size) */
					/* r31 is mem size */

	/* take log2 of total mem size */
	addi	r31, r3, 0		/* save total mem size */
	addi	r30, 0, 0		/* clear r30 */
l2_loop:
	srwi.	r31, r31, 1		/* shift right 1 */
	addi	r30, r30, 1		/* count shifts */
	bne	l2_loop			/* loop till done */
	addi	r30, r30, -1		/* correct for over count */
	addi	r31, r3, 0		/* save original size */

	/* now kick the dog and test the mem */
	WATCHDOG_RESET			/* Reset the watchdog */
	bl	Data_Buster		/* test crossed/shorted data lines */
	addi	r3, r30, 0		/* get log2(memsize) */
	addi	r4, r31, 0		/* get memsize */
	bl	Ghost_Buster		/* test crossed/shorted addr lines */
	addi	r3, r31, 0		/* get mem size */
	bl	Bit_Buster		/* check for bad internal bits */

	/* restore stack and return */
	lmw	r30, +8(r1)		/* Restore r30, r31 */
	lwz	r0, +20(r1)		/* Get saved link register */
	mtlr	r0			/* Restore link register */
	addi	r1, r1, +16		/* Remove frame from stack */
	blr				/* Return to calling function */

/****************************************
 ********  sdram data bus test   ********
 ***************************************/
Data_Buster:
	/* save the return info on stack */
	mflr	r0			/* Get link register */
	stwu	r1, -24(r1)		/* Save back chain and move SP */
	stw	r0, +28(r1)		/* Save link register */
	stmw	r28, 8(r1)		/* save r28 - r31


Open)++openCellCount;}
if(cellCount<=1)return;const mostlyOpen=openCellCount>(cellCount/2);this.$.open_histograms.style.display=mostlyOpen?'none':'block';this.$.close_histograms.style.display=mostlyOpen?'block':'none';}});return{NAME_COLUMN_WIDTH_PX,};});'use strict';tr.exportTo('tr.v.ui',function(){class HistogramSetTableRow{constructor(hierarchy,baseTable,rootViewState){this.hierarchy_=hierarchy;this.baseTable_=baseTable;this.rootViewState_=rootViewState;this.viewState_=new tr.v.ui.HistogramSetTableRowState();this.viewState_.addUpdateListener(this.onViewStateUpdate_.bind(this));this.overviewDataRange_=undefined;this.nameCell_=undefined;this.cells_=new Map();this.subRows_=[];for(const subHierarchy of hierarchy.subRows){const subRow=new HistogramSetTableRow(subHierarchy,baseTable,rootViewState);this.subRows_.push(subRow);this.viewState.subRows.set(subRow.name,subRow.viewState);}
for(const columnName of this.columns.keys()){this.viewState.cells.set(columnName,new tr.v.ui.HistogramSetTableCellState());}}
get name(){return this.hierarchy_.name;}
get depth(){return this.hierarchy_.depth;}
get description(){return this.hierarchy_.description;}
get columns(){return this.hierarchy_.columns;}*sortedColumns(){for(const col of this.baseTable_.tableColumns){yield[col.displayLabel,this.hierarchy_.columns.get(col.displayLabel),];}}
get overviewDataRange(){if(this.overviewDataRange_===undefined){this.overviewDataRange_=new tr.b.math.Range();const displayStatisticName=this.rootViewState.displayStatisticName;const referenceDisplayLabel=this.rootViewState.referenceDisplayLabel;for(const[displayLabel,hist]of this.columns){if(hist instanceof tr.v.Histogram){const statName=hist.getAvailableStatisticName(displayStatisticName);const statScalar=hist.getStatisticScalar(statName);if(statScalar!==undefined){this.overviewDataRange_.addValue(statScalar.value);}}
for(const subRow of this.subRows){const subHist=subRow.columns.get(displayLabel);if(!(subHist instanceof tr.v.Histogram))continue;const refHist=subRow.columns.get(referenceDisplayLabel);const statName=subHist.getAvailableStatisticName(displayStatisticName,refHist);const statScalar=subHist.getStatisticScalar(statName,refHist);if(statScalar!==undefined){this.overviewDataRange_.addValue(statScalar.value);}}}}
return this.overviewDataRange_;}
resetOverviewDataRange(){this.overviewDataRange_=undefined;}
get rootViewState(){return this.rootViewState_;}
get cells(){return this.cells_;}
get subRows(){return this.subRows_;}
get viewState(){return this.viewState_;}*walk(){yield this;for(const row of this.subRows)yield*row.walk();}
static*walkAll(rootRows){for(const rootRow of rootRows)yield*rootRow.walk();}
get nameCell(){if(this.nameCell_===undefined){this.nameCell_=document.createElement('tr-v-ui-histogram-set-table-name-cell');this.nameCell_.build(this);}
return this.nameCell_;}
getCell(columnName){if(this.cells.has(columnName))return this.cells.get(columnName);const cell=document.createElement('tr-v-ui-histogram-set-table-cell');cell.build(this,columnName,this.viewState.cells.get(columnName));this.cells.set(columnName,cell);return cell;}
compareNames(other){return this.name.localeCompare(other.name);}
compareCells(other,displayLabel){const reference


        file.write(str(contPram[3]) + "\n")
        for i in range(0,contPram[3]) :
            for j in range(0,3) :
                file.write(str(palSt[i][j]) + " ")
            file.write("\n")
        file.close()
    root.withdraw()

def terminate(): # close down the program
    knobL.cancel() ; knobR.cancel()
    pygame.quit() # close pygame
    os._exit(1)

def checkForEvent(): # see if we need to quit
    event = pygame.event.poll()
    if event.type == pygame.QUIT :
         terminate()
    if event.type == pygame.KEYDOWN :
       if event.key == pygame.K_ESCAPE :
          terminate()
    if event.type == pygame.MOUSEBUTTONDOWN :
        handleMouse(pygame.mouse.get_pos())

if __name__ == '__main__':
    main()


    text-shadow: 1px 1px 4px #000000,
        1px 1px 4px #000000,
        1px 1px 4px #000000,
        1px 1px 4px #000000;
    text-align: right;
    font-weight: bold;
    font-size: 16px;
    display: block;
    position: relative;
}

.quest_drop-percent {
    color: lightsalmon;
    margin-right: 4px;
    position: relative;
    top: 28px;
}

.quest_drop-percent:after {
    content: '\0025';
}

.quest_required-amount {
    color: white;
    margin-right: 5px;
    top: 9px;
}

/* SCREEN RESIZING - ADJUST ELEMENTS TO LOOK BETTER */
@media only screen and (max-width: 1000px) {
    .quest_line {
        display: block;
    }
    .quest {
        text-align: left !important;
        min-width: 0;
        margin-left: 0;
        margin-right: 0;
    }
    .quest_header {
        float: none;
    }
    .quest.odd,
    .quest.even {
        background-color: rgba(0, 0, 0, 0.40);
    }

    .quest_inline-crate {
        left: 15px !important;
        z-index: 1;
    }

    .quest_item.quest-item-edit .quest_item-img {
        position: relative;
        left: 12px;
    }
}

@media only screen and (max-width: 625px) {
    .quest_line-2 {
        display: block;
    }
}

/* QUEST DROP PERCENT / QUEST AMOUNT SWAP */
.quest_item:not(:hover):not(.quest-item-edit) .quest_display-bottom,
.quest_item:hover:not(.quest-item-edit) .quest_display-top {
    opacity: 0;
}

.quest_item.quest-item-edit .quest_drop-percent {
    visibility: hidden;
}
.quest_item.quest-item-edit .quest_required-amount {
    visibility: visible;
}

/* QUEST ELEMENT HIDE (REMOVE) */
.remove {
    /* APPLY THIS CLASS TO REMOVE THE ELEMENT COMPLETELY */
    /* APPLICABLE TO:
        .quest_item
        .quest_score
        .quest_memory-piece
    */
}

.quest_item.remove,
.quest_score.remove
{
    display: none;
}
.quest_memory-piece.remove
{
    opacity: 0;
}

/* QUEST ELEMENT DISABLE (GRAYSCALE OR HIDE) */
.disabled {
    /* APPLY THIS CLASS TO GRAYSCALE THE ELEMENT AND HIDE SOME INFORMATION */
    /* APPLICABLE TO:
        .quest_memory-piece
        .quest_item
    */
}
.quest_memory-piece.disabled .quest_memory-piece-img {
    -webkit-filter: grayscale(100%); /* Safari 6.0 - 9.0 */
    filter: grayscale(100%);
}
.quest_memory-piece.disabled .quest_memory-piece-percent {
    visibility: hidden;
}

.quest_item.disabled {
    -webkit-filter: grayscale(100%) opacity(30%); /* Safari 6.0 - 9.0 */
    filter: grayscale(100%) opacity(30%);
    transition: all 0.4s ease-out;
}
.quest_item.disabled:hover {
    -webkit-filter: grayscale(50%) opacity(75%); /* Safari 6.0 - 9.0 */
    filter: grayscale(50%) opacity(75%);
}
.quest_item.disabled .quest_drop-percent,
.quest_item.disabled .quest_required-amount {
    visibility: hidden;
}

.quest_item.quest-item-edit .


�等效声级Ldn","噪声","dB","N3.1"),
    _Leq("30秒等效声级Leq","噪声","dB","N3.1"),
    _LMn("最小的瞬时声级","噪声","dB","N3.1"),
    _LMx("最大的瞬时声级","噪声","dB","N3.1"),
    _Ln("昼间等效声级Ln","噪声","dB","N3.1"),
    _S01("O2 含量","废气","％","N3.1"),
    _S02("烟气流速","废气","m3/h","N5.2"),
    _S03("烟气温度","废气","℃","N3.1"),
    _S04("烟气动压","废气","MPa","N4.2"),
    _S05("烟气湿度","废气","%","N3.1"),
    _S06("制冷温度","废气","℃","N3.1"),
    _S07("烟道截面积","废气","M2","N4.2"),
    _S08("烟气压力","废气","MPa","N4.2"),
    _B02("废气"),
    _01("烟尘","废气","mg/m3","N5.2"),
    _02("二氧化硫","废气","mg/m3","N5.2"),
    _03("氮氧化物","废气","mg/m3","N5.3"),
    _04("一氧化碳","废气","mg/m3","N2.3"),
    _05("硫化氢","废气","mg/m3","N3.2"),
    _06("氟化物","废气","mg/m3","N2.3"),
    _07("氰化物(含氰化氢)","废气","mg/m3","N3.3"),
    _08("氯化氢","废气","mg/m3","N4.3"),
    _09("沥青烟","废气","mg/m3","N4.3"),
    _10("氨","废气","mg/m3","N4.3"),
    _11("氯气","废气","mg/m3","N4.3"),
    _12("二硫化碳","废气","mg/m3","N4.3"),
    _13("硫醇","废气","mg/m3","N4.3"),
    _14("硫酸雾","废气","mg/m3","N4.3"),
    _15("铬酸雾","废气","mg/m3","N2.4"),
    _16("苯系物","废气","mg/m3","N4.2"),
    _17("甲苯","废气","mg/m3","N4.2"),
    _18("二甲苯","废气","mg/m3","N4.2"),
    _19("甲醛","废气","mg/m3","N3.3"),
    _20("苯并(a)芘","废气","mg/m3","N3.6"),
    _21("苯胺类","废气","mg/m3","N4.3"),
    _22("硝基苯类","废气","mg/m3","N3.4"),
    _23("氯苯类","废气","mg/m3","N4.3"),
    _24("光气","废气","mg/m3","N3.3"),
    _25("碳氢化合物(含非甲烷总烃)","废气","mg


fr-image-deleting::after {
  position: absolute;
  -webkit-opacity: 0.5;
  -moz-opacity: 0.5;
  opacity: 0.5;
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
  -webkit-transition: opacity 0.2s ease 0s;
  -moz-transition: opacity 0.2s ease 0s;
  -ms-transition: opacity 0.2s ease 0s;
  -o-transition: opacity 0.2s ease 0s;
  background: #000;
  content: "";
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  z-index: 2;
}

.amis-scope div.fr-modal-body div.fr-image-list div.fr-image-container.fr-image-deleting::before {
  content: attr(data-deleting);
  color: #FFF;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  margin: auto;
  position: absolute;
  z-index: 3;
  font-size: 15px;
  height: 20px;
}

.amis-scope div.fr-modal-body div.fr-image-list div.fr-image-container.fr-empty {
  height: 95px;
  background: #CCCCCC;
  z-index: 1;
}

.amis-scope div.fr-modal-body div.fr-image-list div.fr-image-container.fr-empty::after {
  position: absolute;
  margin: auto;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  content: attr(data-loading);
  display: inline-block;
  height: 20px;
}

.amis-scope div.fr-modal-body div.fr-image-list div.fr-image-container img {
  width: 100%;
  vertical-align: middle;
  position: relative;
  z-index: 2;
  -webkit-opacity: 1;
  -moz-opacity: 1;
  opacity: 1;
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
  -webkit-transition: opacity 0.2s ease 0s, filter 0.2s ease 0s;
  -moz-transition: opacity 0.2s ease 0s, filter 0.2s ease 0s;
  -ms-transition: opacity 0.2s ease 0s, filter 0.2s ease 0s;
  -o-transition: opacity 0.2s ease 0s, filter 0.2s ease 0s;
  -webkit-transform: translateZ(0);
  -moz-transform: translateZ(0);
  -ms-transform: translateZ(0);
  -o-transform: translateZ(0);
}

.amis-scope div.fr-modal-body div.fr-image-list div.fr-image-container.fr-mobile-selected img {
  -webkit-opacity: 0.75;
  -moz-opacity: 0.75;
  opacity: 0.75;
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
}

.amis-scope div.fr-modal-body div.fr-image-list div.fr-image-container.fr-mobile-selected .fr-delete-img,
.amis-scope div.fr-modal-body div.fr-image-list div.fr-image-container.fr-mobile-selected .fr-insert-img {
  display: inline-block;
}

.amis-scope div.fr-modal-body div.fr-image-list div.fr-image-container .fr-delete-img,
.amis-scope div.fr-modal-body div.fr-image-list div.fr-image-container .fr-insert-img {
  display: none;
  top: 50%;
  border-radius: 100%;
  -moz-border-radius: 100%;
  -webkit-border-radius: 100%;
  -moz-background-clip: padd


f (wide_mode != VOIDmode)
	return wide_mode;
    }

  return mode;
}

/* Save all variables describing the current status into the structure *P.
   This is used before starting a nested function.  */

void
save_storage_status (p)
     struct function *p;
{
#if 0  /* Need not save, since always 0 and non0 (resp.) within a function.  */
  p->pending_sizes = pending_sizes;
  p->immediate_size_expand = immediate_size_expand;
#endif /* 0 */
}

/* Restore all variables describing the current status from the structure *P.
   This is used after a nested function.  */

void
restore_storage_status (p)
     struct function *p;
{
#if 0
  pending_sizes = p->pending_sizes;
  immediate_size_expand = p->immediate_size_expand;
#endif /* 0 */
}


nt = address % typeSize;
  if( misalignment != 0 )
  {
    buffer += typeSize - misalignment;
  }
  unpackSize += typeSize - 1;
  unpackSize += UnpackDataByIndexDevice( buffer, var, indices, events, op );
  return unpackSize;
}

#define DECLARE_PACK_UNPACK( TYPE, NDIM, USD ) \
  template localIndex PackDevice< true, TYPE, NDIM, USD > \
    ( buffer_unit_type * &buffer, \
    ArrayView< TYPE const, NDIM, USD > const & var, \
    parallelDeviceEvents & events ); \
  template localIndex PackDevice< false, TYPE, NDIM, USD > \
    ( buffer_unit_type * &buffer, \
    ArrayView< TYPE const, NDIM, USD > const & var, \
    parallelDeviceEvents & events ); \
  template localIndex UnpackDevice< TYPE, NDIM, USD > \
    ( buffer_unit_type const * & buffer, \
    ArrayView< TYPE, NDIM, USD > const & var, \
    parallelDeviceEvents & events ); \
  template localIndex PackByIndexDevice< true, TYPE, NDIM, USD > \
    ( buffer_unit_type * &buffer, \
    ArrayView< TYPE const, NDIM, USD > const & var, \
    arrayView1d< const localIndex > const & indices, \
    parallelDeviceEvents & events ); \
  template localIndex PackByIndexDevice< false, TYPE, NDIM, USD > \
    ( buffer_unit_type * &buffer, \
    ArrayView< TYPE const, NDIM, USD > const & var, \
    arrayView1d< const localIndex > const & indices, \
    parallelDeviceEvents & events ); \
  template localIndex UnpackByIndexDevice< TYPE, NDIM, USD > \
    ( buffer_unit_type const * & buffer, \
    ArrayView< TYPE, NDIM, USD > const & var, \
    arrayView1d< const localIndex > const & indices, \
    parallelDeviceEvents & events, \
    MPI_Op op ); \
    \
  template localIndex PackDataDevice< true, TYPE, NDIM, USD > \
    ( buffer_unit_type * &buffer, \
    ArrayView< TYPE const, NDIM, USD > const & var, \
    parallelDeviceEvents & events ); \
  template localIndex PackDataDevice< false, TYPE, NDIM, USD > \
    ( buffer_unit_type * &buffer, \
    ArrayView< TYPE const, NDIM, USD > const & var, \
    parallelDeviceEvents & events ); \
  template localIndex UnpackDataDevice< TYPE, NDIM, USD > \
    ( buffer_unit_type const * & buffer, \
    ArrayView< TYPE, NDIM, USD > const & var, \
    parallelDeviceEvents & events ); \
  template localIndex PackDataByIndexDevice< true, TYPE, NDIM, USD > \
    ( buffer_unit_type * &buffer, \
    ArrayView< TYPE const, NDIM, USD > const & var, \
    arrayView1d< const localIndex > const & indices, \
    parallelDeviceEvents & events ); \
  template localIndex PackDataByIndexDevice< false, TYPE, NDIM, USD > \
    ( buffer_unit_type * &buffer, \
    ArrayView< TYPE const, NDIM, USD > const & var, \
    arrayView1d< const localIndex > const & indices, \
    parallelDeviceEvents & events ); \
  template localIndex UnpackDataByIndexDevice< TYPE, NDIM, USD > \
    ( buffer_unit_type const * & buffer, \
    ArrayView< TYPE, NDIM, USD > const & var, \
    arrayView1d< const localIndex > const & indices, \
    parallelDeviceEvents & events, \
    MPI_Op op )

#define DECLARE_PACK_UNPACK_UP_TO_2D( TYPE ) \
  DECLARE_PACK_UNPACK( TYPE, 1, 0 ); \
  DECLARE_PACK_UNPACK( TYPE, 2, 0 ); \
  DECLARE_PACK_UNPACK( TYPE, 2, 1 )

#define DECLARE_PACK_UNPACK_UP_TO_3D( TYPE ) \
  DECLARE_PACK_UNPACK_UP_


nvitePrefix);

    //  trying until we get a unique short link
    while (await _shortLinkExists(session, shortLink)) {
      shortLink = _generateShortLink(prefix: shortInvitePrefix);
    }

    final insert = await ShortLinkInviteData.db.insertRow(
      session,
      ShortLinkInviteData(
        shortLink: shortLink,
        createdAt: DateTime.now(),
        invitedByNpub: invitedByNpub,
        listName: listName,
        listNpub: listNpub,
      ),
    );

    return insert.shortLink;
  }

  // Helper method to generate a random short link
  String _generateShortLink({int length = 8, String prefix = ""}) {
    const chars =
        'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    final random = Random();
    final myValues = String.fromCharCodes(Iterable.generate(
        length, (_) => chars.codeUnitAt(random.nextInt(chars.length))));
    return "$prefix$myValues";
  }

  //  method to check if short link already exists
  Future<bool> _shortLinkExists(Session session, String shortLink) async {
    final existing = await ShortLinkInviteData.db.findFirstRow(
      session,
      where: (t) => t.shortLink.equals(shortLink),
    );
    return existing != null;
  }

  /// get short link and track usage
  Future<ShortLinkInviteData?> getInviteByShortLink(
    Session session, {
    required String shortLink,
  }) async {
    final foundData = await session.caches.local.get(
      "shortLinkInvite-$shortLink",
      CacheMissHandler(
        () async => await ShortLinkInviteData.db.findFirstRow(
          session,
          where: (t) => t.shortLink.equals(shortLink),
        ),
        lifetime: Duration(minutes: 10),
      ),
    );

    // statistics tracking
    if (foundData != null) {
      _trackUsageAsync(session, shortLink);
    }

    if (foundData == null) {
      return null;
    }

    // dont return everything
    return foundData.copyWith(
      usageCount: 0,
      createdAt: null,
      lastUsed: null,
      id: null,
    );
  }

  void _trackUsageAsync(Session session, String shortLink) async {
    try {
      session.serverpod
          .createSession(enableLogging: false)
          .then((newSession) async {
        try {
          await _incrementUsageCount(newSession, shortLink);
        } finally {
          await newSession.close();
        }
      });
    } catch (e) {
      // Log to server logger instead of session logger
      print('Failed to track usage for $shortLink: $e');
    }
  }

  Future<void> _incrementUsageCount(Session session, String shortLink,
      [int increment = 1]) async {
    try {
      await session.db.transaction((transaction) async {
        // find existing record within the transaction
        final existing = await ShortLinkInviteData.db.findFirstRow(
          session,
          where: (t) => t.shortLink.equals(shortLink),
          transaction: transaction,
        );

        if (existing != null) {
          // Update existing record
          final updated = existing.copyWith(
            usageCount: existing.usageCount + increment,
            lastUsed: DateTime.now(),
          );

          await ShortLinkInviteData.db.updateRow(
            session,
            updated,
            transaction: transaction,
          );
        }
      });
    } catch (e) {
      session.log('Failed to increment usage count for $shortLink: $e',


, complete
           cds, without stop codon, in Flexi system
          Length = 1592

 Score = 99.6 bits (50), Expect = 1e-18
 Identities = 50/50 (100%)
 Strand = Plus / Plus

Query: 1   agtaacaggagcaaatactgggaaaatatttgccatgaaggtgcttaaaa 50
           ||||||||||||||||||||||||||||||||||||||||||||||||||
Sbjct: 339 agtaacaggagcaaatactgggaaaatatttgccatgaaggtgcttaaaa 388

>dbj|AK312875.1| Homo sapiens cDNA, FLJ93319, highly similar to Homo sapiens
           ribosomal protein S6 kinase, 70kDa, polypeptide
           1(RPS6KB1), mRNA
          Length = 1623

 Score = 99.6 bits (50), Expect = 1e-18
 Identities = 50/50 (100%)
 Strand = Plus / Plus

Query: 1   agtaacaggagcaaatactgggaaaatatttgccatgaaggtgcttaaaa 50
           ||||||||||||||||||||||||||||||||||||||||||||||||||
Sbjct: 375 agtaacaggagcaaatactgggaaaatatttgccatgaaggtgcttaaaa 424

>ref|XM_001503753.1| PREDICTED: Equus caballus ribosomal protein S6 kinase, 70kDa,
           polypeptide 1 (RPS6KB1), mRNA
          Length = 5317

 Score = 99.6 bits (50), Expect = 1e-18
 Identities = 50/50 (100%)
 Strand = Plus / Plus

Query: 1   agtaacaggagcaaatactgggaaaatatttgccatgaaggtgcttaaaa 50
           ||||||||||||||||||||||||||||||||||||||||||||||||||
Sbjct: 433 agtaacaggagcaaatactgggaaaatatttgccatgaaggtgcttaaaa 482

>ref|XR_030192.1| PREDICTED: Monodelphis domestica similar to G3 serine/threonine
           kinase (LOC100011566), mRNA
          Length = 2111

 Score = 99.6 bits (50), Expect = 1e-18
 Identities = 50/50 (100%)
 Strand = Plus / Plus

Query: 1   agtaacaggagcaaatactgggaaaatatttgccatgaaggtgcttaaaa 50
           ||||||||||||||||||||||||||||||||||||||||||||||||||
Sbjct: 351 agtaacaggagcaaatactgggaaaatatttgccatgaaggtgcttaaaa 400

>ref|XM_001362395.1| PREDICTED: Monodelphis domestica similar to G3 serine/threonine
           kinase (LOC100010269), mRNA
          Length = 2087

 Score = 99.6 bits (50), Expect = 1e-18
 Identities = 50/50 (100%)
 Strand = Plus / Plus

Query: 1   agtaacaggagcaaatactgggaaaatatttgccatgaaggtgcttaaaa 50
           ||||||||||||||||||||||||||||||||||||||||||||||||||
Sbjct: 330 agtaacaggagcaaatactgggaaaatatttgccatgaaggtgcttaaaa 379

>ref|XR_030394.1| PREDICTED: Monodelphis domestica hypothetical protein LOC100023530
           (LOC100023530), mRNA
          Length = 2231

 Score = 99.6 bits (50), Expect = 1e-18
 Identities = 50/50 (100%)
 Strand = Plus / Plus

Query: 1   agtaacaggagcaaatactgggaaaatatttgccatgaaggtgcttaaaa 50
           ||||||||||||||||


i-listview>li>a.ui-btn.ui-btn-icon-left:focus:after{background-position:6px center}html .ckf-contextmenu>.ui-listview>li>a.ui-btn.ui-btn-icon-right:focus:after{background-position:8px center}html .ckf-contextmenu>.ui-listview>li>a.ui-btn:hover:after,html .ckf-contextmenu>.ui-listview>li>a.ui-btn:focus:after{background-color:#d8dad8}html .ckf-contextmenu>.ui-listview>li>a.ui-btn.ui-btn-icon-left:focus:after{left:2px}html .ckf-contextmenu>.ui-listview>li>a.ui-btn.ui-btn-icon-right:focus:after{right:2px}.ckf-dialog{border-radius:3px;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.15);box-shadow:0 0 3px rgba(0,0,0,0.15);overflow:hidden}.ckf-dialog label{font-size:inherit}.ckf-dialog .ui-header{height:15px;padding:6px 10px;background:#f5f5f5;background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2Y1ZjVmNSIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNjZmQxY2YiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);background:-webkit-gradient(linear, left top, left bottom, color-stop(0, #f5f5f5), to(#cfd1cf));background:linear-gradient(to bottom, #f5f5f5 0, #cfd1cf 100%)}.ckf-dialog .ui-header h1{font-size:13px;text-align:left;margin:0;padding:0;line-height:16px}.ckf-rtl .ui-header h1{text-align:right}.ckf-dialog .ckf-dialog-buttons{padding:0 2px;outline:1px solid #bfbfbf;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#ebebeb;background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyY


pdate a site address if there is an order in progress. You must
  /// wait for the order to complete or cancel the order.
  ///
  /// You can update the operating address before you place an order at the
  /// site, or after all Outposts that belong to the site have been deactivated.
  ///
  /// May throw [ValidationException].
  /// May throw [AccessDeniedException].
  /// May throw [NotFoundException].
  /// May throw [ConflictException].
  /// May throw [InternalServerException].
  ///
  /// Parameter [address] :
  /// The address for the site.
  ///
  /// Parameter [addressType] :
  /// The type of the address.
  ///
  /// Parameter [siteId] :
  /// The ID or the Amazon Resource Name (ARN) of the site.
  Future<UpdateSiteAddressOutput> updateSiteAddress({
    required Address address,
    required AddressType addressType,
    required String siteId,
  }) async {
    final $payload = <String, dynamic>{
      'Address': address,
      'AddressType': addressType.value,
    };
    final response = await _protocol.send(
      payload: $payload,
      method: 'PUT',
      requestUri: '/sites/${Uri.encodeComponent(siteId)}/address',
      exceptionFnMap: _exceptionFns,
    );
    return UpdateSiteAddressOutput.fromJson(response);
  }

  /// Update the physical and logistical details for a rack at a site. For more
  /// information about hardware requirements for racks, see Network
  /// readiness checklist in the Amazon Web Services Outposts User Guide.
  ///
  /// To update a rack at a site with an order of IN_PROGRESS, you
  /// must wait for the order to complete or cancel the order.
  ///
  /// May throw [ValidationException].
  /// May throw [ConflictException].
  /// May throw [NotFoundException].
  /// May throw [AccessDeniedException].
  /// May throw [InternalServerException].
  ///
  /// Parameter [siteId] :
  /// The ID or the Amazon Resource Name (ARN) of the site.
  ///
  /// Parameter [fiberOpticCableType] :
  /// The type of fiber that you will use to attach the Outpost to your network.
  ///
  /// Parameter [maximumSupportedWeightLbs] :
  /// The maximum rack weight that this site can support. NO_LIMIT
  /// is over 2000lbs.
  ///
  /// Parameter [opticalStandard] :
  /// The type of optical standard that you will use to attach the Outpost to
  /// your network. This field is dependent on uplink speed, fiber type, and
  /// distance to the upstream device. For more information about networking
  /// requirements for racks, see Network
  /// in the Amazon Web Services Outposts User Guide.
  ///
  ///

  ///

  /// OPTIC_10GBASE_SR: 10GBASE-SR
  ///

  ///

  /// OPTIC_10GBASE_IR: 10GBASE-IR
  ///

  ///

  /// OPTIC_10GBASE_LR: 10GBASE-LR
  ///

  ///

  /// OPTIC_40GBASE_SR: 40GBASE-SR
  ///

  ///

  /// OPTIC_40GBASE_ESR: 40GBASE-ESR
  ///

  ///

  /// OPTIC_40GBASE_IR4_LR4L: 40GBASE-IR (LR4L)
  ///

  ///

  /// OPTIC_40GBASE_LR4: 40GBASE-LR4
  ///

  ///

  /// OPTIC_


 pageListParse(response: Response): List<Page> {
        val obj = json.parseToJsonElement(response.body.string())
            .jsonObject["response"]!!
            .jsonObject

        return obj["pages"]!!.jsonObject["list"]!!.jsonArray
            .mapIndexed { i, jsonEl ->
                Page(i, "", jsonEl.jsonObject["img"]!!.jsonPrimitive.content)
            }
    }

    override fun imageUrlParse(response: Response) =
        throw UnsupportedOperationException()

    private fun searchMangaByIdRequest(id: String): Request {
        return GET("$baseUrl$API_URL/$id", headers)
    }

    override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable<MangasPage> {
        return if (query.startsWith(PREFIX_SLUG_SEARCH)) {
            val realQuery = query.removePrefix(PREFIX_SLUG_SEARCH)
            client.newCall(searchMangaByIdRequest(realQuery))
                .asObservableSuccess()
                .map { response ->
                    val details = mangaDetailsParse(response)
                    details.url = "/$realQuery"
                    MangasPage(listOf(details), false)
                }
        } else {
            client.newCall(searchMangaRequest(page, query, filters))
                .asObservableSuccess()
                .map { response ->
                    searchMangaParse(response)
                }
        }
    }

    private class OrderBy : Filter.Select<String>(
        "Сортировка",
        arrayOf("Популярность", "Дата", "Имя"),
    )

    private class GenreList(genres: List<Genre>) : Filter.Group<Genre>("Жанр", genres)

    private class TypeList(types: List<Type>) : Filter.Group<Type>("Тип", types)

    private class Type(name: String, val id: String) : Filter.CheckBox(name)

    private class Genre(name: String, val id: String) : Filter.CheckBox(name)

    override fun getFilterList() = FilterList(
        OrderBy(),
        TypeList(getTypeList()),
        GenreList(getGenreList()),
    )

    private fun getTypeList() = listOf(
        Type("Манга", "manga"),
        Type("Манхва", "manhwa"),
        Type("Маньхуа", "manhua"),
        Type("Ваншот", "one_shot"),
        Type("Комикс", "comics"),
    )

    private fun getGenreList() = listOf(
        Genre("Безумие", "Dementia"),
        Genre("Боевые искусства", "Martial Arts"),
        Genre("Вампиры", "Vampire"),
        Genre("Военное", "Military"),
        Genre("Гарем", "Harem"),
        Genre("Демоны", "Demons"),
        Genre("Детектив", "Mystery"),
        Genre("Детское", "Kids"),
        Genre("Дзёсей", "Josei"),
        Genre("Додзинси", "Doujinshi"),
        Genre("Драма", "Drama"),
        Genre("Игры", "Game"),
        Genre("Исторический", "Historical"),
        Genre("Комедия", "Comedy"),
        Genre("Космос", "Space"),
        Genre("Магия", "Magic"),
        Genre("Машины", "Cars"),
        Genre("Меха", "Mecha"),
        Genre("Музыка", "Music"),
        Genre("Пародия", "Parody"),
        Genre("Повседневность", "Slice of Life"),
        Genre("Полиция", "P


                if (event != null) {
                    try {
                        // id参数
                        int[] values = event.value();
                        int[] parentIds = event.parentId();
                        int parentIdsLen = parentIds == null ? 0 : parentIds.length;
                        //循环所有id，生成ViewInfo并添加代理反射
                        for (int i = 0; i < values.length; i++) {
                            int value = values[i];
                            if (value > 0) {
                                ViewInfo info = new ViewInfo();
                                info.value = value;
                                info.parentId = parentIdsLen > i ? parentIds[i] : 0;
                                method.setAccessible(true);
                                EventListenerManager.addEventMethod(finder, info, event, handler, method);
                            }
                        }
                    } catch (Throwable ex) {
                        LogUtil.e(ex.getMessage(), ex);
                    }
                }
            }
        } // end inject event

    }

}
/*
 * Copyright (c) 2013. wyouflf (wyouflf@gmail.com)
 *
 * Licensed 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.
 */

package org.xutils.common.util;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

/**
 * Created with IntelliJ IDEA.
 * User: wyouflf
 * Date: 13-6-19
 * Time: PM 1:18
 */
public class DoubleKeyValueMap<K1, K2, V> {

    private final ConcurrentHashMap<K1, ConcurrentHashMap<K2, V>> k1_k2V_map;

    public DoubleKeyValueMap() {
        this.k1_k2V_map = new ConcurrentHashMap<K1, ConcurrentHashMap<K2, V>>();
    }

    public void put(K1 key1, K2 key2, V value) {
        if (key1 == null || key2 == null || value == null) return;
        if (k1_k2V_map.containsKey(key1)) {
            ConcurrentHashMap<K2, V> k2V_map = k1_k2V_map.get(key1);
            if (k2V_map != null) {
                k2V_map.put(key2, value);
            } else {
                k2V_map = new ConcurrentHashMap<K2, V>();
                k2V_map.put(key2, value);
                k1_k2V_map.put(key1, k2V_map);
            }
        } else {
            ConcurrentHashMap<K2, V> k2V_map = new ConcurrentHashMap<K2, V>();
            k2V_map.put(key2, value);
            k1_k2V_map.put(key1, k2V_map);
        }
    }

    public Set<K1> getFirstKeys() {
        return k1_k2V_map.keySet();
    }

    public ConcurrentHashMap<K2, V> get(K1 key1) {
        return k1_k2V_map.get(key1);
    }

    public V get(K1 key1, K2 key2) {
        ConcurrentHashMap<K2, V> k2_v = k1_k2V_map.get(key1);
        return k2_v == null ? null : k2_v.get(key2);
    }

    public Collection<V> getAllValues(K1 key1) {
        ConcurrentHashMap<K2, V> k2_v = k1_k2V_map.get(key1);
        return k2_v == null ? null : k2_v.values();
    }

    public Collection<V> getAllValues() {
        Collection<V> result = null;
        Set<K1> k1Set = k


命，是锻炼改造我们队伍千载一时的大好机会。

   工农业重点建设地区，是披荆斩棘、改天换地、轰轰烈烈、热气腾腾的地方，也是锻炼队伍的好地方，应该作为文化工作的重点地区，作为锻炼队伍，进行创作的基地之一。

   组织文化工作队下乡下厂下商店下连队，应作为一项固定的制度坚持下来，和参加四清运动一样，下去一批，接着就要准备下一批。

   坚持组织文化工作人员深入工农兵的制度，要同全盘工作的统筹安排一致起来，做到城市与乡村兼顾，工作和锻炼结合。今年要认真总结经验（拟开一些蹲点会），做到更有目的、更有计划地下去，争取在锻炼队伍、促进艺术生产和指导工作等方面，收到更好的效果。

   对于参加四清工作队、演出队、文化工作队和蹲点调查研究等下乡、下厂、下商店、下连队的人员，要注意他们的劳逸安排。既要鼓足干劲，又要劳逸结合。

   （三）认真抓创作

   在大搞突出政治，大抓学习毛主席著作，和大抓组织队伍深入工农兵的前提下，认真地抓创作，是十分重要的。抓创作是贯彻方向的具体措施。文化革命的成果，要落实到社会主义文化艺术的发展和繁荣上来。

   我们要用文艺的武器，大力宣传毛泽东思想，大写社会主义，努力塑造工农兵的英雄形象，积极反映三大革命运动，认真为无产阶级政治、为工农兵、为社会主义经济基础服务，为我国人民和世界人民的革命斗争服务。

   在题材规划上，写社会主义革命和建设题材的作品，是主流。在伟大的社会主义革命和社会主义建设的进程中，在阶级斗争、生产斗争和科学实验三大革命运动中，各条战线都英雄辈出，涌现无数的新人、新事、新风尚。形势逼人，我们的


/*	$NetBSD: microtime.S,v 1.3 2003/08/07 16:27:55 agc Exp $	*/

/*-
 * Copyright (c) 1993 The Regents of the University of California.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. 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.
 * 3. Neither the name of the University 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 REGENTS 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 THE REGENTS 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.
 */

#include <machine/asm.h>
#include <dev/isa/isareg.h>
#include <dev/ic/i8253reg.h>

#include "assym.h"

/* LINTSTUB: include <sys/time.h> */

#define	IRQ_BIT(irq_num)	(1 << ((irq_num) % 8))
#define	IRQ_BYTE(irq_num)	((irq_num) >> 3)

/* LINTSTUB: Func: void i8254_microtime(struct timeval *tv) */
ENTRY(i8254_microtime)
	# clear registers and do whatever we can up front
	pushl	%edi
	pushl	%ebx
	xorl	%edx,%edx
	movl	$(TIMER_SEL0|TIMER_LATCH),%eax

	cli				# disable interrupts

	# select timer 0 and latch its counter
	outb	%al,$IO_TIMER1+TIMER_MODE
	inb	$IO_ICU1,%al		# as close


ddr + MMC_RX_VLAN_FRAMES_GB);
	mmc->mmc_rx_watchdog_error += readl(ioaddr + MMC_RX_WATCHDOG_ERROR);
	/* IPC */
	mmc->mmc_rx_ipc_intr_mask += readl(ioaddr + MMC_RX_IPC_INTR_MASK);
	mmc->mmc_rx_ipc_intr += readl(ioaddr + MMC_RX_IPC_INTR);
	/* IPv4 */
	mmc->mmc_rx_ipv4_gd += readl(ioaddr + MMC_RX_IPV4_GD);
	mmc->mmc_rx_ipv4_hderr += readl(ioaddr + MMC_RX_IPV4_HDERR);
	mmc->mmc_rx_ipv4_nopay += readl(ioaddr + MMC_RX_IPV4_NOPAY);
	mmc->mmc_rx_ipv4_frag += readl(ioaddr + MMC_RX_IPV4_FRAG);
	mmc->mmc_rx_ipv4_udsbl += readl(ioaddr + MMC_RX_IPV4_UDSBL);

	mmc->mmc_rx_ipv4_gd_octets += readl(ioaddr + MMC_RX_IPV4_GD_OCTETS);
	mmc->mmc_rx_ipv4_hderr_octets +=
	    readl(ioaddr + MMC_RX_IPV4_HDERR_OCTETS);
	mmc->mmc_rx_ipv4_nopay_octets +=
	    readl(ioaddr + MMC_RX_IPV4_NOPAY_OCTETS);
	mmc->mmc_rx_ipv4_frag_octets += readl(ioaddr + MMC_RX_IPV4_FRAG_OCTETS);
	mmc->mmc_rx_ipv4_udsbl_octets +=
	    readl(ioaddr + MMC_RX_IPV4_UDSBL_OCTETS);

	/* IPV6 */
	mmc->mmc_rx_ipv6_gd_octets += readl(ioaddr + MMC_RX_IPV6_GD_OCTETS);
	mmc->mmc_rx_ipv6_hderr_octets +=
	    readl(ioaddr + MMC_RX_IPV6_HDERR_OCTETS);
	mmc->mmc_rx_ipv6_nopay_octets +=
	    readl(ioaddr + MMC_RX_IPV6_NOPAY_OCTETS);

	mmc->mmc_rx_ipv6_gd += readl(ioaddr + MMC_RX_IPV6_GD);
	mmc->mmc_rx_ipv6_hderr += readl(ioaddr + MMC_RX_IPV6_HDERR);
	mmc->mmc_rx_ipv6_nopay += readl(ioaddr + MMC_RX_IPV6_NOPAY);

	/* Protocols */
	mmc->mmc_rx_udp_gd += readl(ioaddr + MMC_RX_UDP_GD);
	mmc->mmc_rx_udp_err += readl(ioaddr + MMC_RX_UDP_ERR);
	mmc->mmc_rx_tcp_gd += readl(ioaddr + MMC_RX_TCP_GD);
	mmc->mmc_rx_tcp_err += readl(ioaddr + MMC_RX_TCP_ERR);
	mmc->mmc_rx_icmp_gd += readl(ioaddr + MMC_RX_ICMP_GD);
	mmc->mmc_rx_icmp_err += readl(ioaddr + MMC_RX_ICMP_ERR);

	mmc->mmc_rx_udp_gd_octets += readl(ioaddr + MMC_RX_UDP_GD_OCTETS);
	mmc->mmc_rx_udp_err_octets += readl(ioaddr + MMC_RX_UDP_ERR_OCTETS);
	mmc->mmc_rx_tcp_gd_octets += readl(ioaddr + MMC_RX_TCP_GD_OCTETS);
	mmc->mmc_rx_tcp_err_octets += readl(ioaddr + MMC_RX_TCP_ERR_OCTETS);
	mmc->mmc_rx_icmp_gd_octets += readl(ioaddr + MMC_RX_ICMP_GD_OCTETS);
	mmc->mmc_rx_icmp_err_octets += readl(ioaddr + MMC_RX_ICMP_ERR_OCTETS);
}


blur filter.

The filter accepts the following options:

<samp>sizeX</samp>

Set horizontal radius size.

<samp>planes</samp>

Set which planes to filter. By default all planes are filtered.

<samp>sizeY</samp>

Set vertical radius size, if zero it will be same as sizeX.
Default is 0.

30.7.1 Commands# TOC

This filter supports same commands as options.
The command accepts the same syntax of the corresponding option.

If the specified expression is not valid, it is kept at its current
value.

30.8 bbox# TOC

Compute the bounding box for the non-black pixels in the input frame
luminance plane.

This filter computes the bounding box containing all the pixels with a
luminance value greater than the minimum allowed value.
The parameters describing the bounding box are printed on the filter
log.

The filter accepts the following option:

<samp>min_val</samp>

Set the minimal luminance value. Default is 16.

30.8.1 Commands# TOC

This filter supports the all above options as commands.

30.9 bilateral# TOC

Apply bilateral filter, spatial smoothing while preserving edges.

The filter accepts the following options:

<samp>sigmaS</samp>

Set sigma of gaussian function to calculate spatial weight.
Allowed range is 0 to 512. Default is 0.1.

<samp>sigmaR</samp>

Set sigma of gaussian function to calculate range weight.
Allowed range is 0 to 1. Default is 0.1.

<samp>planes</samp>

Set planes to filter. Default is first only.

30.9.1 Commands<a class="anchor hidden-xs" href="#


V6_2292HOPLIMIT: u32 = 8;
pub const IPV6_NEXTHOP: u32 = 9;
pub const IPV6_AUTHHDR: u32 = 10;
pub const IPV6_UNICAST_HOPS: u32 = 16;
pub const IPV6_MULTICAST_IF: u32 = 17;
pub const IPV6_MULTICAST_HOPS: u32 = 18;
pub const IPV6_MULTICAST_LOOP: u32 = 19;
pub const IPV6_JOIN_GROUP: u32 = 20;
pub const IPV6_LEAVE_GROUP: u32 = 21;
pub const IPV6_ROUTER_ALERT: u32 = 22;
pub const IPV6_MTU_DISCOVER: u32 = 23;
pub const IPV6_MTU: u32 = 24;
pub const IPV6_RECVERR: u32 = 25;
pub const IPV6_V6ONLY: u32 = 26;
pub const IPV6_JOIN_ANYCAST: u32 = 27;
pub const IPV6_LEAVE_ANYCAST: u32 = 28;
pub const IPV6_IPSEC_POLICY: u32 = 34;
pub const IPV6_XFRM_POLICY: u32 = 35;
pub const IPV6_HDRINCL: u32 = 36;
pub const IPV6_RECVPKTINFO: u32 = 49;
pub const IPV6_PKTINFO: u32 = 50;
pub const IPV6_RECVHOPLIMIT: u32 = 51;
pub const IPV6_HOPLIMIT: u32 = 52;
pub const IPV6_RECVHOPOPTS: u32 = 53;
pub const IPV6_HOPOPTS: u32 = 54;
pub const IPV6_RTHDRDSTOPTS: u32 = 55;
pub const IPV6_RECVRTHDR: u32 = 56;
pub const IPV6_RTHDR: u32 = 57;
pub const IPV6_RECVDSTOPTS: u32 = 58;
pub const IPV6_DSTOPTS: u32 = 59;
pub const IPV6_RECVPATHMTU: u32 = 60;
pub const IPV6_PATHMTU: u32 = 61;
pub const IPV6_DONTFRAG: u32 = 62;
pub const IPV6_RECVTCLASS: u32 = 66;
pub const IPV6_TCLASS: u32 = 67;
pub const IPV6_AUTOFLOWLABEL: u32 = 70;
pub const IPV6_ADDR_PREFERENCES: u32 = 72;
pub const IPV6_MINHOPCOUNT: u32 = 73;
pub const IPV6_ORIGDSTADDR: u32 = 74;
pub const IPV6_RECVORIGDSTADDR: u32 = 74;
pub const IPV6_TRANSPARENT: u32 = 75;
pub const IPV6_UNICAST_IF: u32 = 76;
pub const IPV6_RECVFRAGSIZE: u32 = 77;
pub const IPV6_ADD_MEMBERSHIP: u32 = 20;
pub const IPV6_DROP_MEMBERSHIP: u32 = 21;
pub const IPV6_RXHOPOPTS: u32 = 54;
pub const IPV6_RXDSTOPTS: u32 = 59;
pub const IPV6_PMTUDISC_DONT: u32 = 0;
pub const IPV6_PMTUDISC_WANT: u32 = 1;
pub const IPV6_PMTUDISC_DO: u32 = 2;
pub const IPV6_PMTUDISC_PROBE: u32 = 3;
pub const IPV6_PMTUDISC_INTERFACE: u32 = 4;
pub const IPV6_PMTUDISC_OMIT: u32 = 5;
pub const IPV6_RTHDR_LOOSE: u32 = 0;
pub const IPV6_RTHDR_STRICT: u32 = 1;
pub const IPV6_RTHDR_TYPE_


//
//  FmdbMigrationManager.h
//  FmdbMigrationManager
//
//  Created by Dr Nic Williams on 2008-09-06.
//  Copyright 2008 Mocra and Dr Nic Williams. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "FMDatabase.h"

@interface FmdbMigrationManager : NSObject {
	FMDatabase *db_;
	NSArray *migrations_;
	NSInteger currentVersion_;
	NSString *schemaMigrationsTableName_;
}
@property (retain) FMDatabase *db;
@property (retain) NSArray *migrations;
@property (assign,readonly) NSInteger currentVersion;
@property (readonly) NSString *schemaMigrationsTableName;

+ (id)executeForDatabasePath:(NSString *)aPath withMigrations:(NSArray *)migrations;

- (id)initWithDatabasePath:(NSString *)aPath;
- (void)executeMigrations;

#pragma mark -
#pragma mark Internal methods

- (void)initializeSchemaMigrationsTable;
- (void)performMigrations;
- (void)recordVersionStateAfterMigrating:(NSInteger)version;

#pragma mark -
#pragma mark Migration up to a defined version
+ (id)executeForDatabasePath:(NSString *)aPath withMigrations:(NSArray *)migrations andMatchVersion:(NSInteger)aVersion;
- (void)executeMigrationsAndMatchVersion:(NSInteger)aVersion;
- (void)performMigrationsAndMatchVersion:(NSInteger)aVersion;
@end


)
			Error ("bad planenum");
		if (num == planenum)
			return PSIDE_BACK|PSIDE_FACING;
		if (num == (planenum ^ 1) )
			return PSIDE_FRONT|PSIDE_FACING;
	}

	// box on plane side
	plane = &g_MainMap->mapplanes[planenum];
	s = BrushBspBoxOnPlaneSide (brush->mins, brush->maxs, plane);

	// if both sides, count the visible faces split
	if (s == PSIDE_BOTH)
	{
		*numsplits += 3;
	}

	return s;
}

/*
============
TestBrushToPlanenum

============
*/
int	TestBrushToPlanenum (bspbrush_t *brush, int planenum,
						 int *numsplits, qboolean *hintsplit, int *epsilonbrush)
{
	int			i, j, num;
	plane_t		*plane;
	int			s;
	winding_t	*w;
	vec_t		d, d_front, d_back;
	int			front, back;

	*numsplits = 0;
	*hintsplit = false;

	// if the brush actually uses the planenum,
	// we can tell the side for sure
	for (i=0 ; i<brush->numsides ; i++)
	{
		num = brush->sides[i].planenum;
		if (num >= 0x10000)
			Error ("bad planenum");
		if (num == planenum)
			return PSIDE_BACK|PSIDE_FACING;
		if (num == (planenum ^ 1) )
			return PSIDE_FRONT|PSIDE_FACING;
	}

	// box on plane side
	plane = &g_MainMap->mapplanes[planenum];
	s = BrushBspBoxOnPlaneSide (brush->mins, brush->maxs, plane);

	if (s != PSIDE_BOTH)
		return s;

// if both sides, count the visible faces split
	d_front = d_back = 0;

	for (i=0 ; i<brush->numsides ; i++)
	{
		if (brush->sides[i].texinfo == TEXINFO_NODE)
			continue;		// on node, don't worry about splits
		if (!brush->sides[i].visible)
			continue;		// we don't care about non-visible
		w = brush->sides[i].winding;
		if (!w)
			continue;

		front = back = 0;
		for (j=0 ; j<w->numpoints; j++)
		{
			d = DotProduct (w->p[j], plane->normal) - plane->dist;

			if (d > d_front)
				d_front = d;
			if (d < d_back)
				d_back = d;

			if (d > 0.1) // PLANESIDE_EPSILON)
				front = 1;
			if (d < -0.1) // PLANESIDE_EPSILON)
				back = 1;
		}

		if (front && back)
		{
			if ( !(brush->sides[i].surf & SURF_SKIP) )
			{
				(*numsplits)++;
				if (brush->sides[i].surf & SURF_HINT)
					*hintsplit = true;
			}
		}
	}

	if ( (d_front > 0.0 && d_front < 1.0)
		|| (d_back < 0.0 && d_back > -1.0) )
		(*epsilonbrush)++;

#if 0
	if (*numsplits == 0)
	{	//	didn't really need to be split
		if (front)
			s = PSIDE_FRONT;
		else if (back)
			s = PSIDE_BACK;
		else
			s = 0;
	}
#endif

	return s;
}

//========================================================

/*
================
WindingIsTiny

Returns true if the winding


class KeyWordSettings(object):

    Doc_cID = "doc_cid"
    Doc_URL = "doc_ciurl"
    Doc_cLabel = "doc_clabel"
    Doc_wImages = "doc_wimages"
    Doc_wContent = "doc_wcontent"
    Relevant_Score = "relevant_score"

    Query_id = "qid"
    Query_TweetID = "qtweetid"
    Query_Images = "query_images"
    Ranked_Docs = "ranked_docs"
    Query_Content = "query_content"

    Query_lens = "query_lens"
    Doc_lens = "docs_lens"

    Query_Idf = "query_idf"

    QueryImagesIndices = "query_images_indices"
    DocImagesIndices = "doc_images_indices"
    NegDocImagesIndices = "neg_doc_images_indices"

    QueryIDs = "query_ids"
    DocIDs = "doc_ids"
    UseVisual = "use_visual"

    FullLeftImgTensor = "full_left_images_tensor"
    FullRightImgTensor = "full_right_images_tensor"
    ImageLoaderKey = "image_loader"

    OutputRankingKey = "output_ranking"
    Index2Query = "index2queries"
    Index2Doc = "index2docs"

    Test2Hard = "test2_hard"
    Test3Hard = "test3_hard"

    QueryCountVal = [1116, 1000, 187, 1159]
    QueryCountTest = [1001, 1164, 1118, 187, 156, 1160, 1500]

    UseCuda = "use_cuda"

    LOSS_FUNCTIONS = ('pointwise', 'bpr', 'hinge', 'adaptive_hinge', "single_pointwise_square_loss", "pce", "bce",
                      "cosine_max_margin_loss_dvsh", "cross_entropy", "vanilla_cross_entropy", "regression_loss",
                      "masked_cross_entropy")


�장 불안함을 느낀 다면 세가지의 방법이 있다.
  - 사회적 접근 : 나보다 뛰어난 전문가의 도움을 얻는것.
  - 도구적 접근 : 다른 도구의 도움을 받는 것. 내 능력을 확장시켜 줄 수있는 도구들을 찾아 사용.
  - 내관적 접근 : 비슷한 일을 했던 경험을 머릿속에서 되살려 보는 것.
                  보통 이런 과정을 거치면 자기 효용감이 증대하면서 스스로 인식하는 자기 실력이 향상
                  되기 싶고 결과적으로 몰입 영역에 들어가기 좋다.

### 불안함을 느끼는 경우 : b1 난이도 낮추기
난이도를 낮춰 몰입 영역으로 들어가는 전략.
자신이 맡은 일의 가장 간단함녀서 핵심적인 결과물을 첫번째 목표로 삼는 것.
쉬운 작업을 먼저 할 경우 수행 시간 차이는 없으나 정확도가 높아짐.

### 동적인 균형
지속적으로 자신의 감정 상태를 살피면서 지금 지루한지 불안한지를 알아채고 만약 지루함이나 불안함을 느낀다면
앞의 네가지 전략을 적절히 사용해야 한다는 점.

자기가 지금 어떤 상태인지 살피는 '알아차림'이 꼭 필요함.

### 팀장이 할 수 있는 일
팀원들이 현재 어떤 상태를 주로 경험하고 있는지 파악하고 적절한 전략을 구사하게 도와주는것.
팀원들이 몰입으로 가게 도와주는 것 자체가 고도의 의도적 수련이 될 수도 있다.

## 의도적 수련의 일상적 예시
학습 전이 : 한가지 영역에서의 교훈을 다른 영역에 적용하는 것.

### 실력 조정


73}",	-- U+F0973 om, aliases: religion-hindu, hinduism, tags: Religion
  Omega = "\u{f03c9}",	-- U+F03C9 omega, aliases: ohm, electrical-resistance
  OneUp = "\u{f0bad}",	-- U+F0BAD one-up, aliases: 1up, extra-life, tags: Gaming / RPG
  Onepassword = "\u{f0881}",	-- U+F0881 onepassword, aliases: 1password, tags: Brand / Logo
  Opacity = "\u{f05cc}",	-- U+F05CC opacity
  OpenInApp = "\u{f03cb}",	-- U+F03CB open-in-app, aliases: open-in-browser
  OpenInNew = "\u{f03cc}",	-- U+F03CC open-in-new, aliases: external-link
  OpenSourceInitiative = "\u{f0bae}",	-- U+F0BAE open-source-initiative, tags: Brand / Logo
  Openid = "\u{f03cd}",	-- U+F03CD openid, tags: Brand / Logo
  Opera = "\u{f03ce}",	-- U+F03CE opera, tags: Brand / Logo
  Orbit = "\u{f0018}",	-- U+F0018 orbit, tags: Science
  OrbitVariant = "\u{f15db}",	-- U+F15DB orbit-variant, aliases: camera-flip, tags: Photography
  OrderAlphabeticalAscending = "\u{f020d}",	-- U+F020D order-alphabetical-ascending, tags: Text / Content / Format
  OrderAlphabeticalDescending = "\u{f0d07}",	-- U+F0D07 order-alphabetical-descending, tags: Text / Content / Format
  OrderBoolAscending = "\u{f02be}",	-- U+F02BE order-bool-ascending, tags: Text / Content / Format
  OrderBoolAscendingVariant = "\u{f098f}",	-- U+F098F order-bool-ascending-variant, aliases: order-checkbox-ascending, tags: Text / Content / Format
  OrderBoolDescending = "\u{f1384}",	-- U+F1384 order-bool-descending, aliases: order-checkbox-descending, tags: Text / Content / Format
  OrderBoolDescendingVariant = "\u{f0990}",	-- U+F0990 order-bool-descending-variant, tags: Text / Content / Format
  OrderNumericAscending = "\u{f0545}",	-- U+F0545 order-numeric-ascending, tags: Text / Content / Format
  OrderNumericDescending = "\u{f0546}",	-- U+F0546 order-numeric-descending, tags: Text / Content / Format
  Origin = "\u{f0b43}",	-- U+F0B43 origin, tags: Brand / Logo
  Ornament = "\u{f03cf}",	-- U+F03CF ornament, tags: Holiday
  OrnamentVariant = "\u{f03d0}",	-- U+F03D0 ornament-variant, tags: Holiday
  OutdoorLamp = "\u{f1054}",	-- U+F1054 outdoor-lamp, aliases: outdoor-light, tags: Home Automation
  Overscan = "\u{f1005}",	-- U+F1005 overscan, aliases: fullscreen
  Owl = "\u{f03d2}",	-- U+F03D2 owl, tags: Animal, Holiday
  PacMan = "\u{f0baf}",	-- U+F0BAF pac-man, tags: Gaming / RPG
  Package = "\u{f03d3}",	-- U+F03D3 package, aliases: box
  PackageCheck = "\u{f1b51}",	-- U+F1B51 package-check, aliases: package-delivered
  PackageDown = "\u{f03d4}",	-- U+F03D4 package-down, aliases: archive, box-down, this-side-down
  PackageUp = "\u{


), vec2(5, 4), vec2(6, 4),
                vec2(0, 3), vec2(1, 3), vec2(2, 3), vec2(3, 3), vec2(4, 3), vec2(5, 3), vec2(6, 3),
                vec2(0, 2), vec2(1, 2), vec2(2, 2), vec2(3, 2), vec2(4, 2), vec2(5, 2), vec2(6, 2),
                vec2(0, 1), vec2(1, 1), vec2(2, 1), vec2(3, 1), vec2(4, 1), vec2(5, 1), vec2(6, 1),
                vec2(0, 0), vec2(1, 0), vec2(2, 0), vec2(3, 0), vec2(4, 0), vec2(5, 0), vec2(6, 0),
            ],
        ],
        /* eslint-enable */
    ])("with draworder %s", (drawOrder, expectedPositions) => {
        beforeEach(() => (map2d.drawOrder = drawOrder));

        it("yields the expected positions", () => expect([...map2d.positionIterator()]).toEqual(expectedPositions));

        it("yields the tiles in correct Z order with Z_LAST", () => {
            expect([...map2d.tiles()].map(({ z, position }) => ({ z, position }))).toEqual([
                ...expectedPositions.map(position => ({ z: 0, position })),
                ...expectedPositions.map(position => ({ z: 1, position })),
            ]);
        });

        it("yields the tiles in correct Z order with Z_FIRST", () => {
            expect([...map2d.tiles(IterationOrder.Z_FIRST)].map(({ z, position }) => ({ z, position }))).toEqual([
                ...expectedPositions.reduce(
                    (result, position) => [...result, { z: 0, position }, { z: 1, position }],
                    [] as any,
                ),
            ]);
        });
    });

    it("throws when accessing layer at unknown z index", () =>
        expect(() => map2d.at(vec2(0, 0), 100)).toThrowErrorMatchingInlineSnapshot(`"Unknown layer."`));

    it("throws when accessing layer at invalid position", () =>
        expect(() => map2d.at(vec2(100, 0))).toThrowErrorMatchingInlineSnapshot(`"Position out of range."`));

    it("returns a tilestack when accessing without layer", () => {
        expect(map2d.at(vec2(4, 4))).toEqual(
            new TileStack([
                {
                    tileType: {
                        id: 4,
                        spriteHandle: expect.anything(),
                        dimensions: vec2(16, 16),
                    },
                    objects: [{ shape: Map2dShape.POINT,  id: 1, name: "Object 1", type: "type-1", position: vec2(4, 4) }],
                    position: vec2(4, 4),
                    z: 0,
                },
                {
                    tileType: undefined,
                    objects: [],
                    position: vec2(4, 4),
                    z: 1,
                },


# Copyright (C) 2017 Beijing Didi Infinity Technology and Development Co.,Ltd.
# All rights reserved.
#
# Licensed 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.
# ==============================================================================
''' global CMVN functions '''
import numpy as np
import delta.compat as tf
#pylint: disable=no-name-in-module
from tensorflow.python.keras import backend as keras_backend

def create_cmvn_statis(feature_size, add_delta_deltas=True):
  ''' init sums, squares and cout of feature statistic '''
  sums = np.zeros([1, feature_size, 3 if add_delta_deltas else 1],
                  dtype=np.float64)
  square = np.zeros([1, feature_size, 3 if add_delta_deltas else 1],
                    dtype=np.float64)
  count = 0.0
  return sums, square, count

def update_cmvn_statis(feat, sums, square, count, axis=(0, 1)):
  ''' aggregate CMVN statistic '''
  # feat shape [ batch, frames, feat, channle]
  assert feat.ndim == 4
  sums += np.expand_dims(np.sum(feat, axis=axis), axis=0)
  square += np.expand_dims(np.sum(np.square(feat), axis=axis), axis=0)
  count += np.prod(feat.shape[:len(axis)])
  return sums, square, count

def compute_cmvn(sums, square, count):
  ''' compute global feature mean and variance
     vars = E(x^2) - (E(x))^2
  '''
  mean = sums / count
  var = (square / count) - np.square(mean)
  return mean, var

def load_cmvn(path):
  ''' load mean and variance from cmvn.npy,
      then convert to TF Tensor
  '''
  # [1, nbins, nchannels]
  mean, variance = np.load(path)
  # [1, 1, nbins, nchannels]
  mean = np.expand_dims(mean, axis=0)
  variance = np.expand_dims(variance, axis=0)
  mean = tf.convert_to_tensor(mean, dtype=tf.float32, name='cmvn_mean')
  variance = tf.convert_to_tensor(
      variance, dtype=tf.float32, name='cmvn_variance')
  return mean, variance

def apply_cmvn(feats, mean, variance, epsilon=1e-9):
  ''' TF: apply CMVN on feature'''
  return (feats - mean) * tf.rsqrt(variance + epsilon)

def apply_local_cmvn(feats, epsilon=1e-9):
  ''' feats: (NHWC) '''
  mean = tf.expand_dims(keras_backend.mean(feats, axis=1), axis=1)
  var = tf.expand_dims(keras_backend.var(feats, axis=1), axis=1)
  feats = (feats - mean) * tf.rsqrt(var + epsilon)
  return feats


>		✔		WINDIVERT_EVENT_SOCKET_LISTEN

OPEN					✔	WINDIVERT_EVENT_REFLECT_OPEN

CLOSE				✔	✔	WINDIVERT_EVENT_SOCKET_CLOSE
for the SOCKET layer, or
WINDIVERT_EVENT_REFLECT_CLOSE for the REFLECT
layer.

NETWORK					✔	WINDIVERT_LAYER_NETWORK

NETWORK_FORWARD					✔	WINDIVERT_LAYER_NETWORK_FORWARD

FLOW					✔	WINDIVERT_LAYER_FLOW

SOCKET					✔	WINDIVERT_LAYER_SOCKET

REFLECT					✔	WINDIVERT_LAYER_REFLECT

7.1 Filter Examples

Divert all outbound (non-local) web traffic:

HANDLE handle = WinDivertOpen(
        "outbound and !loopback and "
        "(tcp.DstPort == 80 or udp.DstPort == 53)",
        0, 0, 0
    );

Divert all inbound TCP SYNs:

HANDLE handle = WinDivertOpen(
        "inbound and "
        "tcp.Syn",
        0, 0, 0
    );

Divert all traffic:

HANDLE handle = WinDivertOpen("true", 0, 0, 0);

Divert no traffic:

HANDLE handle = WinDivertOpen("false", 0, 0, 0);

This is useful for packet injection.

7.2 Filter Usage

The purpose of the filter is to help applications select the subset of
all network traffic that the application is interested in.
Ideally the filter should be

 As short as possible; and

 As selective as possible.

For some applications these two objectives can conflict.
That is, a selective filter is not short, and a short filter is not selective.
For such applications the developer should experiment with different
filter configurations and carefully measure the performance impact to
find the optimal solution.

8. Performance

Using WinDivert to redirect network traffic to/from a user application incurs
performance overheads, such as copying packet data and user/kernel mode
context switching.
Under heavy load (≥1Gbps) these overheads can be significant.
The following techniques can be used to
reduce overheads (in order of importance):

Selective Filter: Only select the subset of network traffic
    the user application is interested in.
    Non-matching traffic will continue to use the default path without
    incurring additional overheads.

Batch Mode: The
    WinDivertRecvEx() and
    <a hr


         { ":woman_dancing:", "💃" },
                { ":man_dancing:", "🕺" },
                { ":business_suit_levitating:", "🕴" },
                { ":dancing_men:", "👯♂" },
                { ":dancing_women:", "👯♀" },
                { ":sauna_person:", "🧖" },
                { ":sauna_man:", "🧖♂" },
                { ":sauna_woman:", "🧖♀" },
                { ":climbing:", "🧗" },
                { ":climbing_man:", "🧗♂" },
                { ":climbing_woman:", "🧗♀" },
                { ":person_fencing:", "🤺" },
                { ":skier:", "⛷" },
                { ":golfing:", "🏌" },
                { ":golfing_man:", "🏌♂" },
                { ":golfing_woman:", "🏌♀" },
                { ":surfing_man:", "🏄♂" },
                { ":surfing_woman:", "🏄♀" },
                { ":rowing_man:", "🚣♂" },
                { ":rowing_woman:", "🚣♀" },
                { ":swimming_man:", "🏊♂" },
                { ":swimming_woman:", "🏊♀" },
                { ":bouncing_ball_person:", "⛹" },
                { ":bouncing_ball_man:", "⛹♂" },
                { ":bouncing_ball_woman:", "⛹♀" },
                { ":weight_lifting:", "🏋" },
                { ":weight_lifting_man:", "🏋♂" },
                { ":weight_lifting_woman:", "🏋♀" },
                { ":biking_man:", "🚴♂" },
                { ":biking_woman:", "🚴♀" },
                { ":mountain_biking_man:", "🚵♂" },
                { ":mountain_biking_woman:", "🚵♀" },
                { ":cartwheeling:", "🤸" },
                { ":man_cartwheeling:", "🤸♂" },
                { ":woman_cartwheeling:", "🤸♀" },
                { ":wrestling:", "🤼" },
                { ":men_wrestling:", "🤼♂" },
                { ":women_wrestling:", "🤼♀" },
                { ":water_polo:", "🤽" },
                { ":man_playing_water_polo:", "🤽♂" },
                { ":woman_playing_water_polo:", "🤽♀" },
                { ":handball_person:", "🤾" },
                { ":man_playing_handball:", "🤾♂" },
                { ":woman_playing_handball:", "🤾♀" },
                { ":juggling_person:", "🤹" },
                { ":man_juggling:", "🤹♂" },
                { ":woman_juggling:", "🤹♀" },
                { ":lotus_position:", "🧘" },


20.5c-8.4 2.8-12.9 11.9-10.1 20.2l53 159.4zm281 48.7L565 296c-2.8-8.4-11.9-12.9-20.2-10.1l-213.5 71.2c-17.2-22-43.6-36.4-73.5-37L158.4 21.9C154 8.8 141.8 0 128 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h88.9l92.2 276.7c-26.1 20.4-41.7 53.6-36 90.5 6.1 39.4 37.9 72.3 77.3 79.2 60.2 10.7 112.3-34.8 113.4-92.6l213.3-71.2c8.3-2.8 12.9-11.8 10.1-20.2zM256 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z"],"dolly-flatbed":[640,512,[],"f474","M208 320h384c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H448v128l-48-32-48 32V32H208c-8.8 0-16 7.2-16 16v256c0 8.8 7.2 16 16 16zm416 64H128V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h82.9c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H451c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H624c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z"],donate:[512,512,[],"f4b9","M256 416c114.9 0 208-93.1 208-208S370.9 0 256 0 48 93.1 48 208s93.1 208 208 208zM233.8 97.4V80.6c0-9.2 7.4-16.6 16.6-16.6h11.1c9.2 0 16.6 7.4 16.6 16.6v17c15.5.8 30.5 6.1 43 15.4 5.6 4.1 6.2 12.3 1.2 17.1L306 145.6c-3.8 3.7-9.5 3.8-14 1-5.4-3.4-11.4-5.1-17.8-5.1h-38.9c-9 0-16.3 8.2-16.3 18.3 0 8.2 5 15.5 12.1 17.6l62.3 18.7c25.7 7.7 43.7 32.4 43.7 60.1 0 34-26.4 61.5-59.1 62.4v16.8c0 9.2-7.4 16.6-16.6 16.6h-11.1c-9.2 0-16.6-7.4-16.6-16.6v-17c-15.5-.8-30.5-6.1-43-15.4-5.6-4.1-6.2-12.3-1.2-17.1l16.3-15.5c3.8-3.7 9.5-3.8 14-1 5.4 3.4 11.4 5.1 17.8 5.1h38.9c9 0 16.3-8.2 16.3-18.3 0-8.2-5-15


peName;
        }

        public class Win32
        {
            public const uint SHGFI_ICON = 0x000000100; // get icon
            public const uint SHGFI_USEFILEATTRIBUTES = 0x000000010; // use passed dwFileAttribute

            public const uint SHGFI_LARGEICON = 0x000000000;
            public const uint SHGFI_SMALLICON = 0x000000001;

            public const uint FILE_ATTRIBUTE_DIRECTORY = 0x00000010;
            public const uint FILE_ATTRIBUTE_NORMAL = 0x00000080;

            [DllImport("shell32.dll")]
            public static extern IntPtr SHGetFileInfo(
                string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi,
                uint cbSizeFileInfo, uint uFlags
            );

            [DllImport("User32.dll")]
            public static extern int DestroyIcon(IntPtr hIcon);
        }

        public static Icon DriveIcon { get; }
        public static Icon FolderIcon { get; }

        static ShellIcon()
        {
            uint flags = Win32.SHGFI_USEFILEATTRIBUTES;
            flags += Win32.SHGFI_LARGEICON;
            DriveIcon = GetIcon(null, Win32.FILE_ATTRIBUTE_DIRECTORY, flags);

            flags = Win32.SHGFI_LARGEICON;
            FolderIcon = GetIcon(null, Win32.FILE_ATTRIBUTE_DIRECTORY, flags);
        }

        public static Icon GetSmallIcon(string fileName)
        {
            return GetIcon(fileName, Win32.FILE_ATTRIBUTE_NORMAL, Win32.SHGFI_SMALLICON);
        }

        public static Icon GetLargeIcon(string fileName) => GetIcon(fileName, Win32.FILE_ATTRIBUTE_NORMAL, Win32.SHGFI_LARGEICON);

        private static Icon GetIcon(string fileName, uint dwAttributes, uint flags)
        {
            SHFILEINFO shinfo = new SHFILEINFO();
            IntPtr hImgSmall = Win32.SHGetFileInfo(fileName, dwAttributes,
                ref shinfo, (uint)Marshal.SizeOf(shinfo),
                Win32.SHGFI_ICON | flags);

            Icon icon = (Icon)Icon.FromHandle(shinfo.hIcon).Clone();
            Win32.DestroyIcon(shinfo.hIcon);
            return icon;
        }
    }
}


.com/IBM/kui/issues/4298)
- **packages/core:** restore CommandStringContent as one of FunctionThatProducesContent types ([1e32b93](https://github.com/IBM/kui/commit/1e32b93)), closes [#3687](https://github.com/IBM/kui/issues/3687)
- **plugin-sidecar:** React doesn't re-instantiate PaginatedTable for tabs located in the same LeftNav ([283a525](https://github.com/IBM/kui/commit/283a525)), closes [#3837](https://github.com/IBM/kui/issues/3837) [#3839](https://github.com/IBM/kui/issues/3839)
- **plugins/plugin-client-default:** cwd+w should close popup windows ([dfad325](https://github.com/IBM/kui/commit/dfad325)), closes [#3895](https://github.com/IBM/kui/issues/3895)
- **plugins/plugin-client-default:** load Popup.tsx via React.lazy ([f77c2a3](https://github.com/IBM/kui/commit/f77c2a3)), closes [#3908](https://github.com/IBM/kui/issues/3908)
- **plugins/plugin-client-default:** Popup LeftNav content has too much padding ([194f975](https://github.com/IBM/kui/commit/194f975)), closes [#3912](https://github.com/IBM/kui/issues/3912)
- **plugins/plugin-client-default:** Popup's placeholder text modification should only listen to commands from user ([5bf83fd](https://github.com/IBM/kui/commit/5bf83fd)), closes [#3910](https://github.com/IBM/kui/issues/3910)
- **plugins/plugin-client-default:** remove unused fields from name.json ([6f99959](https://github.com/IBM/kui/commit/6f99959)), closes [#4294](https://github.com/IBM/kui/issues/4294)
- **plugins/plugin-client-default:** remove unused tables.json ([56082b9](https://github.com/IBM/kui/commit/56082b9)), closes [#4290](https://github.com/IBM/kui/issues/4290)
- plugin-client-command/default are publishing tsbuildinfo ([0ad3f2a](https://github.com/IBM/kui/commit/0ad3f2a)), closes [#3846](https://github.com/IBM/kui/issues/3846)
- simplify handling of opengraph META ([ff3c0de](https://github.com/IBM/kui/commit/ff3c0de)), closes [#4288](https://github.com/IBM/kui/issues/4288)
- **plugins/plugin-kubectl:** watcher table disappears when kui is launched as kubectl plugin ([167eabc](https://github.com/IBM/kui/commit/167eabc)), closes [#4120](https://github.com/IBM/kui/issues/4120) [#4123](https://github.com/IBM/kui/issues/4123)
- some code is dependent on the existence of static config files ([cdc6487](https://github.com/IBM/kui/commit/cdc6487)), closes [#3813](https://github.com/IBM/kui/issues/3813)

### chore

- kui client cleanup ([b4c3984](https://github.com/IBM/kui/commit/b4c3984)), closes [#3974](https://github.com/IBM/kui/issues/3974)

### Features

- a new model NavResponse supporting side navigation menu ([41940eb](https://github.com/IBM/kui/commit/41940eb)), closes [#3659](https://github.com/IBM/kui/issues/3659)
- add a command to return the Card Component in Terminal ([d8d13ab](https://github.com/IBM/kui/commi


# Copyright 2018 The TensorFlow Authors. All Rights Reserved.
#
# Licensed 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.
# ==============================================================================
"""Tests for the UnbatchDataset serialization."""
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import numpy as np

from tensorflow.python.data.experimental.kernel_tests.serialization import dataset_serialization_test_base
from tensorflow.python.data.experimental.ops import batching
from tensorflow.python.data.ops import dataset_ops
from tensorflow.python.platform import test

class UnbatchDatasetSerializationTest(
    dataset_serialization_test_base.DatasetSerializationTestBase):

  def build_dataset(self, multiplier=15.0, tensor_slice_len=2, batch_size=2):
    components = (
        np.arange(tensor_slice_len),
        np.array([[1, 2, 3]]) * np.arange(tensor_slice_len)[:, np.newaxis],
        np.array(multiplier) * np.arange(tensor_slice_len))

    return dataset_ops.Dataset.from_tensor_slices(components).batch(
        batch_size).apply(batching.unbatch())

  def testCore(self):
    tensor_slice_len = 8
    batch_size = 2
    num_outputs = tensor_slice_len
    self.run_core_tests(
        lambda: self.build_dataset(15.0, tensor_slice_len, batch_size),
        num_outputs)

if __name__ == "__main__":
  test.main()


vide tools for building dynamic [Redux](http://redux.js.org/) stores.

## Usage

Make a `dynostore`, including the dynamic enhancers you need:

```javascript
import dynostore, { dynamicReducers }  from '@redux-dynostore/core'
import { dynamicSagas } from '@redux-dynostore/redux-saga'

const sagaMiddleware = createSagaMiddleware()

const store = createStore(reducer, compose(
  applyMiddleware(sagaMiddleware),
  dynostore(
    dynamicReducers(),
    dynamicSagas(sagaMiddleware)
  )
))
```

Make a dynamic component:

```javascript
import dynamic from '@redux-dynostore/react-redux'
import subspaced from '@redux-dynostore/react-redux-subspace'
import { attachReducer } from '@redux-dynostore/redux-subspace'
import runSaga from '@redux-dynostore/redux-subspace-saga'

export default dynamic('identifier', subspaced(), attachReducer(myReducer), runSaga(mySaga))(MyComponent)
```

## Packages

* [`@redux-dynostore/core`](./packages/redux-dynostore-core): The core package for redux-dynostore
* [`@redux-dynostore/react-redux`](./packages/redux-dynostore-react-redux): React bindings to simplify usage in react projects
* [`@redux-dynostore/redux-saga`](./packages/redux-dynostore-redux-saga): Dynamic enhancer to run sagas
* [`@redux-dynostore/redux-subspace`](./packages/redux-dynostore-redux-subspace): redux-subspace extensions
* [`@redux-dynostore/react-redux-subspace`](./packages/redux-dynostore-react-redux-subspace): react-redux-subspace extentions
* [`@redux-dynostore/redux-subspace-saga`](./packages/redux-dynostore-redux-subspace-saga): redux-subspace-saga extensions

## FAQ

_Whats with the name?_
> It's about adding dynamic features to redux stores… And it sounds like dinosaur. Raaaawwwwwrrrrrr!

## Media

* [From Monolith to Micro-Frontends](https://mpeyper.github.io/from-monolith-to-micro-frontends-wd42/) - [Web Developer 42˚](http://web.dev42.co/) (Michael Peyper)

## Contributors

Thanks goes to these wonderful people ([emojis](https://github.com/kentcdodds/all-contributors#emoji-key)):

Michael Peyper
💬 🐛 💻 📖 💡 🤔 🚇 <a href="https://github.com/ioof-


JvYXJk 100266
bGV5bw== 100267
IGRhZ2VnZW4= 100268
INmG2YLYt9ip 100269
4LKy4LOH 100270
INC00LXRgNC20LDQsg== 100271
IHNvc3lhbA== 100272
IOCouOCorg== 100273
IHN2w6ZydA== 100274
IHdlYmluYXJz 100275
Z2FyZA== 100276
0LPToQ== 100277
b3Jkbw== 100278
IGdob3N0cw== 100279
IEhlYXA= 100280
IFZNd2FyZQ== 100281
INin2K3Zhdiv 100282
IMOzbGVv 100283
IEJlaXRyw6RnZQ== 100284
X0dP 100285
INiq2LHZitiv 100286
amM= 100287
INmD2KrYqA== 100288
IFdL 100289
IExlc2Vy 100290
44O844OT 100291
b3Rvdg== 100292
IGRlc2N1ZW50bw== 100293
7Y+t 100294
5pel5LiK5Y2I 100295
IHNhYWQ= 100296
4KWL4KS4 100297
IHlhbnp1 100298
IFJvbw== 100299
IHJhc3Rlcg== 100300
LXdyaXR0ZW4= 100301
ICgoKCg= 100302
IE9sZGVy 100303
IGRuaWE= 100304
IGdlbmnFnw== 100305
SGFjZQ== 100306
IHJlc3RpdA== 100307
IHRhc2k= 100308
ID8+Ij48Pw== 100309
15nXnteV16o= 100310
IE5vdGVib29r 100311
INCR0LvQsNCz 100312
IFBvcsOpbQ== 100313
IFp1c2FtbWVuaGFuZw== 100314
X3NwZWNpYWw= 100315
X+WMl+S6rHBr 100316
IER1cA== 100317
INGN0LrQuA== 100318
aXp6bGluZw== 100319
Y2VwdG9ycw== 100320
IHN1cGVybWVyYw== 100321
IGNvbmdlbA== 100322
IEludGVycHJldA== 100323
IOCypuCzh+Cytg== 100324
X1dPUkxE 100325
2qrZhg== 100326
IHBvY2Fz 100327
IFRlY2huaXF1ZXM= 100328
IGJtcA== 100329
IFByZXY= 100330
YXRhYmxlcw== 100331
77y8KF4= 100332
ZXN0YWFu 100333
IOyekOuPmQ== 100334
IGVuZGVyZcOnbw== 100335
IGRlcGFu 100336
INGB0LvQvtCy0LDQvA== 100337
IOC4l+C4uOC4gQ== 100338
LnZhcmlhYmxl 100339
4Lir4Lih4Liy4Lii 100340
LS0tLS0tLS0tLS0tLTwv 100341
INGB0L3QsA== 100342
IEdyw6JjZQ== 100343
INmF2KfYsdiz 100344
KSk7CgoK 100345
INin2YTYtdit2YrYqQ== 100346
ZW1waW8= 100347
IGxha28= 100348
IEbDqQ== 100349
IHByb3N0aXR1dGFz 100350
0YLQsNGA0YvQvQ== 100351
2LPYp9i52K/YqQ== 100352
IGFzeWx1bQ== 100353
w6hjZXM= 100354
Z3Jpcw== 100355
IOCksuCkvuCksg== 100356
IGhlcm1hb


PropertiesEXT", mutable = false) {
    Expression("#STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT")..VkStructureType("sType").mutable()
    nullable..opaque_p("pNext").mutable()
    VkSampleCountFlags("sampleLocationSampleCounts")
    VkExtent2D("maxSampleLocationGridSize")
    float("sampleLocationCoordinateRange")[2]
    uint32_t("sampleLocationSubPixelBits")
    VkBool32("variableSampleLocations")
}

val VkMultisamplePropertiesEXT = struct(Module.VULKAN, "VkMultisamplePropertiesEXT", mutable = false) {
    Expression("#STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT")..VkStructureType("sType").mutable()
    nullable..opaque_p("pNext").mutable()
    VkExtent2D("maxSampleLocationGridSize")
}

val VkBufferMemoryRequirementsInfo2KHR = struct(Module.VULKAN, "VkBufferMemoryRequirementsInfo2KHR", alias = VkBufferMemoryRequirementsInfo2) {
    Expression("#STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2")..VkStructureType("sType")
    nullable..opaque_const_p("pNext")
    VkBuffer("buffer")
}

val VkImageMemoryRequirementsInfo2KHR = struct(Module.VULKAN, "VkImageMemoryRequirementsInfo2KHR", alias = VkImageMemoryRequirementsInfo2) {
    Expression("#STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2")..VkStructureType("sType")
    nullable..opaque_const_p("pNext")
    VkImage("image")
}

val VkImageSparseMemoryRequirementsInfo2KHR = struct(Module.VULKAN, "VkImageSparseMemoryRequirementsInfo2KHR", alias = VkImageSparseMemoryRequirementsInfo2) {
    Expression("#STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2")..VkStructureType("sType")
    nullable..opaque_const_p("pNext")
    VkImage("image")
}

val VkMemoryRequirements2KHR = struct(Module.VULKAN, "VkMemoryRequirements2KHR", mutable = false, alias = VkMemoryRequirements2) {
    Expression("#STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2")..VkStructureType("sType").mutable()
    nullable..opaque_p("pNext").mutable()
    VkMemoryRequirements("memoryRequirements")
}

val VkSparseImageMemoryRequirements2KHR = struct(Module.VULKAN, "VkSparseImageMemoryRequirements2KHR", mutable = false, alias = VkSparseImageMemoryRequirements2) {
    Expression("#STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2")..VkStructureType("sType").mutable()
    nullable..opaque_p("pNext").mutable()
    VkSparseImageMemoryRequirements("memoryRequirements")
}

val VkImageFormatListCreateInfoKHR = struct(Module.VULKAN, "VkImageFormatListCreateInfoKHR", alias = VkImageFormatListCreateInfo) {
    Expression("#STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO")..VkStructureType("sType")
    nullable..opaque_const_p("pNext")
    AutoSize("pViewFormats", optional = true)..uint32_t("viewFormatCount")
    VkFormat.const.p("pViewFormats")
}

val VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT = struct(Module.VULKAN, "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT") {
    Expression("#STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT")..VkStructureType("sType")


/web/20180331201625/https://twitter.com/timcast/status/894768951233728512): Be reasonable. If someone makes a mistake tell them not to do it again.
* [ 8 August 2017](https://web.archive.org/web/20180331201625/https://twitter.com/timcast/status/894768951233728512): Give someone a warning
* [ 8 August 2017](https://web.archive.org/web/20180331201632/https://twitter.com/timcast/status/894767819811954692): They are anti-racist anti-sexists who want free and open exchange of ideas.
* [ 8 August 2017](https://web.archive.org/web/20180331201624/https://twitter.com/timcast/status/894769483453263873): What did I say?
* [ 8 August 2017](https://web.archive.org/web/20180331201625/https://twitter.com/timcast/status/894768951233728512): I, for one, am not OK living in a world where people get fired without warning for speaking opinions. https://twitter.com/bcmerchant/status/894767909037162497
* [ 8 August 2017](https://web.archive.org/web/20180331201632/https://twitter.com/timcast/status/894767819811954692): Shit Lord is basically someone who opposes social justice dogma
* [ 8 August 2017](https://web.archive.org/web/20180331201632/https://twitter.com/timcast/status/894767819811954692): Except the liberal "shit Lords" are also complaining
* [ 7 August 2017](https://web.archive.org/web/20180331201655/https://twitter.com/timcast/status/894649507966664707): I like it except I dont like the idea of getting locked out permamnently from your account if you lose your password or get hacked
* [ 7 August 2017](https://web.archive.org/web/20180331201640/https://twitter.com/timcast/status/894664204430581761): lol I'll think about it
* [ 7 August 2017](https://web.archive.org/web/20180331201643/https://twitter.com/timcast/status/894662725137309696): we cant say a guy is harassing you for saying "how you doing" because other people said it too
* [ 7 August 2017](https://web.archive.org/web/20180331201644/https://twitter.com/timcast/status/894662113238671360): right but the point is you cant blame an individual because other people do it too
* [ 7 August 2017](https://web.archive.org/web/20180331201646/https://twitter.com/timcast/status/894661117833859072): What I mean is. When 500 people keep trying to come up to me to talk I dont consider it harassment.
* [ 7 August 2017](https://web.archive.org/web/20180331201647/https://twitter.com/timcast/status/894659616319180800): I should do a video called "10 hours of attending a political event." I bet it would make the average person cry.
* [ 7 August 2017](https://web.archive.org/web/20180331201650/https://twitter.com/timcast/status/894659199292116992): yea if its on purpose, not if its just random people saying hi
* [ 7 August 2017](https://web.archive.org/web/20180331201651/https://twitter.com/timcast/status/894658367335124992): agreed. but harassment is when one person wont leave you alone.
* [ 7 August 2017](https://web.archive.org/web/20180331201651/https://twitter.com/timcast/status/894658367335124992): Yeah gets annoying but how can you get mad at someone


if (this.session.get('access_token') !== undefined){
      url = this.addQueryParamUrl(url, 'access_token', this.session.get('access_token'));
      return url;
    }
  }
  addQueryParamUrl(url: URL, key: string, value: string){
    url.searchParams.append(key, value);
    return url;
  }
  getUrl(){
    return this.url;
  }
  get(segment: string){
    return this.http
      .get(this.addAccessToken(this.addSegmentUrl(segment)).toString())
      .then(this.returnData);
  }
  post(segment: string, data, config?){
    return this.http
      .post(this.addAccessToken(this.addSegmentUrl(segment)).toString(), data, config)
      .then(this.returnData);
  }
  put(segment: string, data, config?){
    return this.http
      .put(this.addAccessToken(this.addSegmentUrl(segment)).toString(), data, config)
      .then(this.returnData);
  }
}
import {n3on} from "../.."
import {VText} from "../basics"

/**
 * Horizontal category axis
 */
export class CategoryAxis{
    private readonly labels: VText[] = []
    private readonly length: number

    constructor(labels: string[], length: number){
        this.length = length
        this.labels = labels.map(
            label => new VText(
                label,
                {
                    fontSize: n3on.getStyle().text.size.xs,
                    fontColor: n3on.getStyle().text.color.secondary
                }
            )
        )
    }

    public render(): void{
        stroke(n3on.getStyle().color.front)
        line(0, 0, this.length, 0)
        this.renderTicks()
    }

    private renderTicks(){
        const tickLength = 5
        const numOfTicks = this.labels.length
        stroke(n3on.getStyle().color.front)
        push()
        textAlign(CENTER, TOP)
        for(let i = 0; i < numOfTicks; i++){
            line(0, tickLength / 2, 0, -tickLength / 2)
            translate(this.length  / (2 * numOfTicks), 0)
            push()
            this.labels[i].render()
            pop()
            translate(this.length  / (2 * numOfTicks), 0)
        }
        pop()
    }
}/*
 * Redux state
 */
export interface IState {
  forecast: IForecastState
}

export interface IForecastState {
  loading: boolean
  error: boolean
  errorMsg: string
  locations: IForecast[]
}

export interface IForecast {
  displayName: string
  list: IListItem[]
}

/*
 * https://openweathermap.org/forecast5 API RESPONSE
 */
export interface IApiResponse {
  cod: string
  message: number | string
  cnt: number
  list: IListItem[]
  city: ICity
}
export interface IListItem {
  dt: number
  main: IMain
  weather: IWeatherItem[]
  clouds: IClouds
  wind: IWind
  rain?: IRain
  sys: ISys
  dt_txt: string
}
export interface IMain {
  temp: number
  temp_min: number
  temp_max: number
  pressure: number
  sea_level: number
  grnd_level: number
  humidity: number
  temp_kf: number
}
export interface IWeatherItem {
  id: number
  main: string
  description: string
  icon: string
}
export interface IClouds {
  all: number
}
export interface IWind {
  speed: number
  deg: number
}
export interface IRain {
  '3h'?: number
}
export interface ISys {
  pod: string
}
export interface ICity {
  id: number
  name: string
  coord: ICoord
  country: string
  population: number
}
export interface ICoord {
  lat: number
  lon: number
}
import { City } from '@modules


	{xc, yc + R, zc - r, 1},
		// 4
		{xc - R, yc + R, zc - r, s},
		{xc - b, yc + b, zc - r, h},
		{xc - b, yc + b, zc + 0, s},
		{xc - b, yc + b, zc + r, h},
		{xc - R, yc + R, zc + r, s},
		{xc - a, yc + a, zc + r, h},
		{xc - a, yc + a, zc + 0, s},
		{xc - a, yc + a, zc - r, h},
		{xc - R, yc + R, zc - r, s},
		// 5
		{xc - R, yc, zc - r, 1},
		{xc - b, yc, zc - r, s},
		{xc - b, yc, zc + 0, 1},
		{xc - b, yc, zc + r, s},
		{xc - R, yc, zc + r, 1},
		{xc - a, yc, zc + r, s},
		{xc - a, yc, zc + 0, 1},
		{xc - a, yc, zc - r, s},
		{xc - R, yc, zc - r, 1},
		// 6
		{xc - R, yc - R, zc - r, s},
		{xc - b, yc - b, zc - r, h},
		{xc - b, yc - b, zc + 0, s},
		{xc - b, yc - b, zc + r, h},
		{xc - R, yc - R, zc + r, s},
		{xc - a, yc - a, zc + r, h},
		{xc - a, yc - a, zc + 0, s},
		{xc - a, yc - a, zc - r, h},
		{xc - R, yc - R, zc - r, s},
		// 7
		{xc, yc - R, zc - r, 1},
		{xc, yc - b, zc - r, s},
		{xc, yc - b, zc + 0, 1},
		{xc, yc - b, zc + r, s},
		{xc, yc - R, zc + r, 1},
		{xc, yc - a, zc + r, s},
		{xc, yc - a, zc + 0, 1},
		{xc, yc - a, zc - r, s},
		{xc, yc - R, zc - r, 1},
		// 8
		{xc + R, yc + -R, zc - r, s},
		{xc + b, yc + -b, zc - r, h},
		{xc + b, yc + -b, zc + 0, s},
		{xc + b, yc + -b, zc + r, h},
		{xc + R, yc + -R, zc + r, s},
		{xc + a, yc + -a, zc + r, h},
		{xc + a, yc + -a, zc + 0, s},
		{xc + a, yc + -a, zc - r, h},
		{xc + R, yc + -R, zc - r, s},
		// 9
		{xc + R, yc, zc - r, 1},
		{xc + b, yc, zc - r, s},
		{xc + b, yc, zc + 0, 1},
		{xc + b, yc, zc + r, s},
		{xc + R, yc, zc + r, 1},
		{xc + a, yc, zc + r, s},
		{xc + a, yc, zc + 0, 1},
		{xc + a, yc, zc - r, s},
		{xc + R, yc, zc - r, 1},
	}
	knots := [][]float64{
		{0


 of 9);

		.form-row-first {
			@include span(2 of 5);
		}

		.form-row-last {
			@include span(last 3 of 5);
		}

		.col-1,
		.col-2 {
			margin-bottom: ms(3);
		}

		& + #customer_details {
			display: none;
		}

		.woocommerce-billing-fields {
			@include clearfix;
		}

		&.addresses {
			@include span(full);

			.col-1 {
				@include span(4.5 of 9);
			}

			.col-2 {
				@include span(last 4.5 of 9)
			}
		}
	}

	#customer_details + #wc_checkout_add_ons {
		@include span( last 4 of 9 );
	}

	#wc_checkout_add_ons {
		input[type=radio] {
			float: left;
			margin-right: ms(-3);
			clear: left;
			margin-top: .35em;
		}
	}

	#order_review_heading,
	#order_review {
		@include span(last 4 of 9);
		clear: right;
	}

	#order_review {
		transition: box-shadow ease .4s;
	}

	#order_review_heading {
		margin-bottom: 0;
		padding-bottom: ms(-2);
	}

	// Payment forms in account
	.woocommerce-order-pay,
	.page-template-template-fullwidth-php.woocommerce-order-pay {
		#order_review {
			width: 100%;
			float: none;

			#payment {
				h3 {
					padding-left: 1em;
					padding-top: 1em;
				}

				.form-row {
					padding: 1em;
				}
			}

			.payment_methods + .form-row {
				padding: 1em;
			}

			.button#place_order {
				display: block;
				width: 100%;
				font-size: ms(2);
			}
		}
	}

	.page-template-template-fullwidth-php {
		.col2-set {
			@include span(6 of 12);

			.form-row-first {
				@include span(3 of 6);
			}

			.form-row-last {
				@include span(last 3 of 6);
			}

			&.addresses {
				.col-1 {
					@include span(6 of 12);
				}

				.col-2 {
					@include span(last 6 of 12)
				}
			}
		}

		#order_review_heading,
		#order_review {
			@include span(last 6 of 12);
		}

		#customer_details + #wc_checkout_add_ons {
			@include span( last 6 of 12 );
		}
	}

	#order_review {
		.shop_table {
			margin-bottom: ms(5);
		}
	}

	/**
	 * My Account
	 */
	table + .addresses {
		margin-top: ms(3);
	}

	.col2-set#customer_login,
	.col2-set.addresses {
		@include span( full );

		.col-1 {
			@include span( 4 of 9 );
		}

		.col-2 {
			@include span( 5 of 9 last );
		}
	}

	.woocommerce-MyAccount-navigation {
		@include span( 2 of 9 );
	}

	.woocommerce-MyAccount-content {
		@include span( last 7 of 9 );

		.form-row-first {
			@include span( 3 of 7 );
		}

		.form-row-last {
			@include span( last 4 of 7 );
		}
	}

	.left-sidebar:not(.page-template-template-fullwidth-php) {
		.woocommerce-MyAccount-navigation {
			@include span( last 2 of 9 );
		}

		.woocommerce-MyAccount-content {
			@include span( 7 of 9


nction drawSkeleton(img, preds, scores)
--    preds = preds:clone():add(1) -- Account for 1-indexing in lua
--    local pairRef = dataset.skeletonRef
--    local actThresh = 0.05
--    -- Loop through adjacent joint pairings
--    for i = 1,#pairRef do
--        if scores[pairRef[i][1]] > actThresh and scores[pairRef[i][2]] > actThresh then
--            -- Set appropriate line color
--            local color
--            if pairRef[i][3] == 1 then color = {0,.3,1}
--            elseif pairRef[i][3] == 2 then color = {1,.3,0}
--            elseif pairRef[i][3] == 3 then color = {0,0,1}
--            elseif pairRef[i][3] == 4 then color = {1,0,0}
--            else color = {.7,0,.7} end
--            -- Draw line
--            drawLine(img, preds[pairRef[i][1]], preds[pairRef[i][2]], 4, color, 0)
--        end
--    end
--    return img
--end

function drawSkeleton(input, hms, coords)

    local im = input:clone()
    --print(#im)
    local pairRef = {
        {1,2},      {2,3},      {3,7},
        {4,5},      {4,7},      {5,6},
        {7,9},      {9,10},
        {14,9},     {11,12},    {12,13},
        {13,9},     {14,15},    {15,16}
    }

    local partNames = {'RAnk','RKne','RHip','LHip','LKne','LAnk',
                       'Pelv','Thrx','Neck','Head',
                       'RWri','RElb','RSho','LSho','LElb','LWri'}
    local partColor = {1,1,1,2,2,2,0,0,0,0,3,3,3,4,4,4}

    local actThresh = 0.002
    --print(#im)
    -- Loop through adjacent joint pairings
    --print(coords)
    for i = 1,#pairRef do
        --print(#im)
        if hms[pairRef[i][1]]:mean() > actThresh and hms[pairRef[i][2]]:mean() > actThresh then
            -- Set appropriate line color
            local color
            if partColor[pairRef[i][1]] == 1 then color = {0,.3,1}
            elseif partColor[pairRef[i][1]] == 2 then color = {1,.3,0}
            elseif partColor[pairRef[i][1]] == 3 then color = {0,0,1}
            elseif partColor[pairRef[i][1]] == 4 then color = {1,0,0}
            else color = {.7,0,.7} end

            -- Draw line
            --print(#im)
            --print(i)
            --print(pairRef[i])
            im = drawLine(im, coords[pairRef[i][1]], coords[pairRef[i][2]], 4, color, 0)
        end
    end

    return im
end

function drawLandmarks_pts(input, coords)
    local im = input:clone()
    local partColor = {1,1,1,2,2,2,0,0,0,0,3,3,3,4,4,4}

    local actThresh = 0.002
    --print(#im)
    -- Loop through adjacent joint pairings
    --


ange, returning a structure that makes it easy to access
    /// information such as filename, line/column information and surrounding code snippets.
    ///
    /// # Panics
    ///
    /// Panics if `range` does not point into a file. Consider using
    /// [`Self::get_spelling_pos()`] or [`Self::get_replacement_range()`] first, as appropriate.
    pub fn get_interpreted_range(&self, range: SourceRange) -> InterpretedFileRange<'_> {
        let (source, local_range) = self.lookup_source_range(range);

        InterpretedFileRange {
            file: source
                .as_file()
                .expect("`get_interpreted_range` requires a file range"),
            range: local_range,
        }
    }

    fn get_replacement_pos_chain<'a, F>(
        &'a self,
        pos: SourcePos,
        extract_pos: F,
    ) -> impl Iterator<Item = (SourceId, SourcePos)> + 'a
    where
        F: Fn(SourceRange) -> SourcePos + 'a,
    {
        self.get_replacement_chain(pos.into())
            .map(move |(id, range)| (id, extract_pos(range)))
    }

    /// Walks up the expansion chain and attempts to find a contiguous range covering both endpoints
    /// of `range`.
    ///
    /// Effectively, this function searches for the lowest common ancestor of `range.start` and
    /// `range.end` in the expansion forest. If the two endpoints lie in different files, `None` is
    /// returned.
    ///
    /// # Example
    ///
    /// ```c
    /// #define A (2 + 3)
    /// int x = A + 1;
    /// ```
    ///
    /// Consider the fragmented range starting at the start of the expansion of `A` and ending at
    /// the `1`. Its corresponding unfragmented range is the range covering the `A + 1` as written
    /// on line 2.
    pub fn get_unfragmented_range(&self, range: FragmentedSourceRange) -> Option<SourceRange> {
        let start_sources: Vec<_> = self
            .get_replacement_pos_chain(range.start, SourceRange::start)
            .collect();

        let end_sources: Vec<_> = self
            .get_replacement_pos_chain(range.end, SourceRange::end)
            .collect();

        // Compute the LCA by walking down from the root to the farthest common file.
        let (start_pos, end_pos) = start_sources
            .iter()
            .rev()
            .zip(end_sources.iter().rev())
            .fold(None, |prev, ((start_id, start_pos), (end_id, end_pos))| {
                if start_id == end_id {
                    Some((*start_pos, *end_pos))
                } else {
                    prev
                }
            })?;

        let (start_pos, end_pos) = (cmp::min(start_pos, end_pos), cmp::max(start_pos, end_pos));
        Some(SourceRange::new(start_pos, end_pos.offset_from(start_pos)))
    }
}

/// Creates an iterator that repeatedly invokes `lookup_id` and `next` until `None` is returned.
fn get_location_chain<T, L, N>(
    init: T,
    lookup_id: L,
    next: N,
) -> impl Iterator<Item = (SourceId, T)>
where
    T: Copy,
    L: Fn(T) -> SourceId,
    N: Fn(SourceId, T) -> Option<T>,
{
    iter::successors(Some((lookup_id(init), init)), move |&(id, val)| {
        next(id, val).map(|next_val| (lookup_id(next_val), next_val))
    })
}
<reponame>CNife/leetcode-rust
use std::cmp::max;

pub fn rob(nums: Vec<i32>) -> i32 {
    fn simple_rob(slice: &[i32]) -> i32 {
        let mut prev = 0;
        let mut curr = 0;
        for &num in slice {
            let old_curr = curr;
            curr = max(curr, prev +


,	'1'},
{'92206',	'92206',	'男性通用3',	'92001',	'Dorm_Boy_Body',	'',	'',	'1',	'',	'',	''},
{'92207',	'92207',	'男性非通用1',	'92001',	'Dorm_Boy_Body',	'Dorm_20010_Hair',	'',	'1',	'2001,6001',	'',	''},
{'92208',	'92208',	'男性非通用2',	'92001',	'Dorm_Boy_Body',	'',	'Dorm_20010_Face',	'1',	'2001',	'',	''},
{'92209',	'92209',	'女性非通用1',	'92001',	'Dorm_Girl_b1_white_Body',	'',	'Dorm_10030_Face',	'2',	'1001,1002',	'',	''},
{'92210',	'92210',	'女性非通用2',	'92001',	'Dorm_Girl_m1_white_Body',	'',	'',	'2',	'',	'1001,1002',	''},
{'92211',	'92211',	'所有角色',	'92001',	'Dorm_Girl_m1_white_Body',	'',	'',	'',	'',	'',	'1'},
{'92212',	'92212',	'所有角色',	'92001',	'Dorm_Boy_Body',	'',	'',	'',	'',	'',	'1'},
},
}
--cfgCfgClothes = conf
return conf


	r.NoError(err)
	expected, err := os.ReadFile("./static/builtin-apply-component.cue")
	r.NoError(err)
	r.Equal(tmpl, string(expected))

	tmpl, err = loader.LoadTemplate(context.Background(), "apply-oam-component")
	r.NoError(err)
	r.Equal(tmpl, `import (
	"vela/op"
)

// apply components and traits
apply: op.#ApplyComponent & {
	component: parameter.component
}
parameter: {
	// +usage=Declare the name of the component
	component: string
}`)
}

var (
	stepDefYaml = `apiVersion: core.oam.dev/v1beta1
kind: WorkflowStepDefinition
metadata:
  annotations:
    definition.oam.dev/description: Apply components and traits for your workflow steps
  name: apply-oam-component
  namespace: vela-system
spec:
  schematic:
    cue:
      template: |
        import (
        	"vela/op"
        )

        // apply components and traits
        apply: op.#ApplyComponent & {
        	component: parameter.component
        }
        parameter: {
        	// +usage=Declare the name of the component
        	component: string
        }`
)
/*
Copyright 2022 The KubeVela Authors.

Licensed 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.
*/

package process

import "github.com/kubevela/workflow/pkg/cue/model"

// BaseHook defines function to be invoked before setting base to a
// process.Context
type BaseHook interface {
	Exec(Context, model.Instance) error
}

// BaseHookFn implements BaseHook interface
type BaseHookFn func(Context, model.Instance) error

// Exec will be invoked before settiing 'base' into ctx.Base
func (fn BaseHookFn) Exec(ctx Context, base model.Instance) error {
	return fn(ctx, base)
}

// AuxiliaryHook defines function to be invoked before appending auxiliaries to
// a process.Context
type AuxiliaryHook interface {
	Exec(Context, []Auxiliary) error
}

// AuxiliaryHookFn implements AuxiliaryHook interface
type AuxiliaryHookFn func(Context, []Auxiliary) error

// Exec will be invoked before appending 'auxs' into ctx.Auxiliaries
func (fn AuxiliaryHookFn) Exec(ctx Context, auxs []Auxiliary) error {
	return fn(ctx, auxs)
}
package process

import "github.com/kubevela/workflow/pkg/cue/model"

// DataManager is in charge of injecting and removing runtime context for ContextData
type DataManager interface {
	Fill(ctx Context, kvs []StepMetaKV)
	Remove(ctx Context, keys []string)
}

// StepRunTimeMeta manage step runtime metadata
type StepRunTimeMeta struct{}

// StepMetaKV store the key and value of step runtime metadata
type StepMetaKV struct {
	Key   string
	Value interface{}
}

// WithSessionID return stepSessionID of the step
func WithSessionID(id string) StepMetaKV {
	return StepMetaKV{
		Key:   model.ContextStepSessionID,
		Value: id,
	}
}

// WithName return stepName of the step
func WithName(name string) StepMetaKV {
	return StepMetaKV{
		Key:   model.Co