From 2e9b503c59ca21c51c59b5fe5dd984e68bc43e9e Mon Sep 17 00:00:00 2001 From: Sarjuuk Date: Thu, 4 Jul 2024 21:18:10 +0200 Subject: [PATCH] Loot/LinkedLoot * rework npc <-> chest loot linking * difficulty is now directly stored * should fix multiple issues where loot tabs had wrong difficulty or null title --- pages/npc.php | 32 ++--- pages/object.php | 4 +- setup/db_structure.sql | 9 +- setup/updates/1720116490_01.sql | 217 ++++++++++++++++++++++++++++++++ 4 files changed, 241 insertions(+), 21 deletions(-) create mode 100644 setup/updates/1720116490_01.sql diff --git a/pages/npc.php b/pages/npc.php index d2f8dd76..0ee2fb77 100644 --- a/pages/npc.php +++ b/pages/npc.php @@ -108,6 +108,10 @@ class NpcPage extends GenericPage } } } + else if ($d = DB::Aowow()->selectCell('SELECT MAX(`difficulty`) FROM ?_loot_link WHERE `npcId` = ?d', $this->typeId)) + $mapType = $d > 2 ? 2 : 1; + else if ($mt = DB::Aowow()->selectCell('SELECT IF(`difficultyEntry1` = ?d, 1, 2) FROM ?_creature WHERE `difficultyEntry1` = ?d OR `difficultyEntry2` = ?d OR `difficultyEntry3` = ?d', $this->typeId, $this->typeId, $this->typeId, $this->typeId)) + $mapType = $mt; else if ($_altIds) // not spawned, but has difficultyDummies { if (count($_altIds) > 1) // 3 or more version -> definitly raid (10/25 + hc) @@ -117,9 +121,6 @@ class NpcPage extends GenericPage } - - - /***********/ /* Infobox */ /***********/ @@ -676,9 +677,9 @@ class NpcPage extends GenericPage */ $sourceFor = array( - [LOOT_CREATURE, $this->subject->getField('lootId'), '$LANG.tab_drops', 'drops', [] ], - [LOOT_PICKPOCKET, $this->subject->getField('pickpocketLootId'), '$LANG.tab_pickpocketing', 'pickpocketing', ['side', 'slot', 'reqlevel']], - [LOOT_SKINNING, $this->subject->getField('skinLootId'), '$LANG.'.$skinTab[0], $skinTab[1], ['side', 'slot', 'reqlevel']] + 0 => [LOOT_CREATURE, $this->subject->getField('lootId'), '$LANG.tab_drops', 'drops', [ ], ''], + 8 => [LOOT_PICKPOCKET, $this->subject->getField('pickpocketLootId'), '$LANG.tab_pickpocketing', 'pickpocketing', ['side', 'slot', 'reqlevel'], ''], + 9 => [LOOT_SKINNING, $this->subject->getField('skinLootId'), '$LANG.'.$skinTab[0], $skinTab[1], ['side', 'slot', 'reqlevel'], ''] ); // temp: manually add loot for difficulty-versions @@ -697,18 +698,19 @@ class NpcPage extends GenericPage foreach ($_altNPCs->iterate() as $id => $__) { $mode = ($_altIds[$id] + 1) * ($mapType == 1 ? -1 : 1); - if ($lootGO = DB::Aowow()->selectRow('SELECT o.id, o.lootId, o.name_loc0, o.name_loc2, o.name_loc3, o.name_loc6, o.name_loc8 FROM ?_loot_link l JOIN ?_objects o ON o.id = l.objectId WHERE l.npcId = ?d', $id)) - array_splice($sourceFor, 1, 0, [[LOOT_GAMEOBJECT, $lootGO['lootId'], $langref[$mode], 'drops-object-'.abs($mode), [], 'note' => '$$WH.sprintf(LANG.lvnote_npcobjectsource, '.$lootGO['id'].', "'.Util::localizedString($lootGO, 'name').'")']]); + foreach (DB::Aowow()->select('SELECT o.`id`, o.`lootId`, o.`name_loc0`, o.`name_loc2`, o.`name_loc3`, o.`name_loc4`, o.`name_loc6`, o.`name_loc8`, l.`difficulty` FROM ?_loot_link l JOIN ?_objects o ON o.`id` = l.`objectId` WHERE l.`npcId` = ?d', $id) as $l) + $sourceFor[(($l['difficulty'] - 1) * 2) + 1] = [LOOT_GAMEOBJECT, $l['lootId'], $langref[$l['difficulty'] * ($mapType == 1 ? -1 : 1)], 'drops-object-'.$l['difficulty'], [], '$$WH.sprintf(LANG.lvnote_npcobjectsource, '.$l['id'].', "'.Util::localizedString($l, 'name').'")']; if ($lootId = $_altNPCs->getField('lootId')) - array_splice($sourceFor, 1, 0, [[LOOT_CREATURE, $lootId, $langref[$mode], 'drops-'.abs($mode), []]]); + $sourceFor[($mode - 1) * 2] = [LOOT_CREATURE, $lootId, $langref[$mode], 'drops-'.abs($mode), []]; } } - if ($lootGOs = DB::Aowow()->select('SELECT o.id, IF(npcId < 0, 1, 0) AS modeDummy, o.lootId, o.name_loc0, o.name_loc2, o.name_loc3, o.name_loc6, o.name_loc8 FROM ?_loot_link l JOIN ?_objects o ON o.id = l.objectId WHERE ABS(l.npcId) = ?d', $this->typeId)) - foreach ($lootGOs as $idx => $lgo) - array_splice($sourceFor, 1, 0, [[LOOT_GAMEOBJECT, $lgo['lootId'], $mapType ? $langref[($mapType == 1 ? -1 : 1) + ($lgo['modeDummy'] ? 1 : 0)] : '$LANG.tab_drops', 'drops-object-'.$idx, [], 'note' => '$$WH.sprintf(LANG.lvnote_npcobjectsource, '.$lgo['id'].', "'.Util::localizedString($lgo, 'name').'")']]); + foreach (DB::Aowow()->select('SELECT l.`difficulty` AS ARRAY_KEY, o.`id`, o.`lootId`, o.`name_loc0`, o.`name_loc2`, o.`name_loc3`, o.`name_loc4`, o.`name_loc6`, o.`name_loc8` FROM ?_loot_link l JOIN ?_objects o ON o.`id` = l.`objectId` WHERE l.`npcId` = ?d', $this->typeId) as $difficulty => $lgo) + $sourceFor[(($difficulty - 1) * 2) + 1] = [LOOT_GAMEOBJECT, $lgo['lootId'], $mapType ? $langref[$difficulty * ($mapType == 1 ? -1 : 1)] : '$LANG.tab_drops', 'drops-object-'.$difficulty, [], '$$WH.sprintf(LANG.lvnote_npcobjectsource, '.$lgo['id'].', "'.Util::localizedString($lgo, 'name').'")']; - foreach ($sourceFor as [$lootTpl, $lootId, $tabName, $tabId, $hiddenCols]) + ksort($sourceFor); + + foreach ($sourceFor as $i => [$lootTpl, $lootId, $tabName, $tabId, $hiddenCols, $note]) { $creatureLoot = new Loot(); if ($creatureLoot->getByContainer($lootTpl, $lootId)) @@ -726,8 +728,8 @@ class NpcPage extends GenericPage 'sort' => ['-percent', 'name'] ); - if (!empty($sf['note'])) - $tabData['note'] = $sf['note']; + if ($note) + $tabData['note'] = $note; else if ($lootTpl == LOOT_SKINNING) $tabData['note'] = ''.Lang::formatSkillBreakpoints(Game::getBreakpointsForSkill($skinTab[2], $this->subject->getField('maxLevel')), Lang::FMT_HTML).''; diff --git a/pages/object.php b/pages/object.php index 9cb68f1b..735d6ffd 100644 --- a/pages/object.php +++ b/pages/object.php @@ -236,10 +236,10 @@ class ObjectPage extends GenericPage if ($ll['encounterId']) $relBoss = [$ll['npcId'], Lang::profiler('encounterNames', $ll['encounterId'])]; // difficulty dummy - else if ($c = DB::Aowow()->selectRow('SELECT id, name_loc0, name_loc2, name_loc3, name_loc6, name_loc8 FROM ?_creature WHERE difficultyEntry1 = ?d OR difficultyEntry2 = ?d OR difficultyEntry3 = ?d', abs($ll['npcId']), abs($ll['npcId']), abs($ll['npcId']))) + else if ($c = DB::Aowow()->selectRow('SELECT `id`, `name_loc0`, `name_loc2`, `name_loc3`, `name_loc6`, `name_loc8` FROM ?_creature WHERE `difficultyEntry1` = ?d OR `difficultyEntry2` = ?d OR `difficultyEntry3` = ?d', $ll['npcId'], $ll['npcId'], $ll['npcId'])) $relBoss = [$c['id'], Util::localizedString($c, 'name')]; // base creature - else if ($c = DB::Aowow()->selectRow('SELECT id, name_loc0, name_loc2, name_loc3, name_loc6, name_loc8 FROM ?_creature WHERE id = ?d', abs($ll['npcId']))) + else if ($c = DB::Aowow()->selectRow('SELECT `id`, `name_loc0`, `name_loc2`, `name_loc3`, `name_loc6`, `name_loc8` FROM ?_creature WHERE `id` = ?d', $ll['npcId'])) $relBoss = [$c['id'], Util::localizedString($c, 'name')]; } diff --git a/setup/db_structure.sql b/setup/db_structure.sql index 5f5e87ce..e79331ae 100644 --- a/setup/db_structure.sql +++ b/setup/db_structure.sql @@ -1651,11 +1651,12 @@ DROP TABLE IF EXISTS `aowow_loot_link`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8mb4 */; CREATE TABLE `aowow_loot_link` ( - `npcId` mediumint NOT NULL COMMENT 'id > 0 normal; id < 0 heroic', + `npcId` mediumint unsigned NOT NULL, `objectId` mediumint unsigned NOT NULL, + `difficulty` tinyint unsigned NOT NULL DEFAULT 1, `priority` tinyint unsigned NOT NULL COMMENT '1: use this npc from group encounter (others 0)', `encounterId` mediumint unsigned NOT NULL COMMENT 'as title reference', - UNIQUE KEY `npcId` (`npcId`), + UNIQUE KEY `npcId_difficulty` (`npcId`, `difficulty`), KEY `objectId` (`objectId`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; @@ -3225,7 +3226,7 @@ UNLOCK TABLES; LOCK TABLES `aowow_dbversion` WRITE; /*!40000 ALTER TABLE `aowow_dbversion` DISABLE KEYS */; -INSERT INTO `aowow_dbversion` VALUES (1720025032,0,NULL,NULL); +INSERT INTO `aowow_dbversion` VALUES (1720116491,0,NULL,NULL); /*!40000 ALTER TABLE `aowow_dbversion` ENABLE KEYS */; UNLOCK TABLES; @@ -3265,7 +3266,7 @@ UNLOCK TABLES; LOCK TABLES `aowow_loot_link` WRITE; /*!40000 ALTER TABLE `aowow_loot_link` DISABLE KEYS */; -INSERT INTO `aowow_loot_link` VALUES (17537,185168,1,0),(18434,185169,1,0),(17536,185168,0,0),(18432,185169,0,0),(19218,184465,1,0),(21525,184849,1,0),(19710,184465,0,0),(21526,184849,0,0),(28234,190586,0,0),(-28234,193996,0,0),(27656,191349,0,0),(31561,193603,0,0),(26533,190663,0,0),(31217,193597,0,0),(16064,181366,0,692),(30603,193426,0,692),(16065,181366,0,692),(30601,193426,0,692),(30549,181366,1,692),(30600,193426,1,692),(16063,181366,0,692),(30602,193426,0,692),(28859,193905,0,0),(31734,193967,0,0),(32930,195046,0,0),(33909,195047,0,0),(32865,194313,0,0),(33147,194315,0,0),(33350,194957,0,0),(-33350,194958,0,0),(32845,194200,0,0),(32846,194201,0,0),(32906,194324,0,0),(33360,194325,0,0),(32871,194821,0,0),(33070,194822,0,0),(35119,195374,0,0),(35518,195375,0,0),(34928,195323,0,0),(35517,195324,0,0),(34705,195709,0,334),(36088,195710,0,334),(34702,195709,0,334),(36082,195710,0,334),(34701,195709,0,334),(36083,195710,0,334),(34657,195709,0,334),(36086,195710,0,334),(34703,195709,0,334),(36087,195710,0,334),(35572,195709,0,334),(36089,195710,0,334),(35569,195709,1,334),(36085,195710,1,334),(35571,195709,0,334),(36090,195710,0,334),(35570,195709,0,334),(36091,195710,0,334),(35617,195709,0,334),(36084,195710,0,334),(34441,195631,1,637),(34442,195632,1,637),(34443,195633,1,637),(35749,195635,1,637),(34444,195631,0,637),(35740,195632,0,637),(35741,195633,0,637),(-35741,195635,0,637),(34445,195631,0,637),(35705,195632,0,637),(35706,195633,0,637),(-35706,195635,0,637),(34447,195631,0,637),(35683,195632,0,637),(35684,195633,0,637),(-35684,195635,0,637),(34448,195631,0,637),(35724,195632,0,637),(35725,195633,0,637),(-35725,195635,0,637),(34449,195631,0,637),(35689,195632,0,637),(35690,195633,0,637),(-35690,195635,0,637),(34450,195631,0,637),(35695,195632,0,637),(35696,195633,0,637),(-35696,195635,0,637),(34451,195631,0,637),(35671,195632,0,637),(35672,195633,0,637),(-35672,195635,0,637),(34453,195631,0,637),(35718,195632,0,637),(35719,195633,0,637),(-35719,195635,0,637),(34454,195631,0,637),(35711,195632,0,637),(35712,195633,0,637),(-35712,195635,0,637),(34455,195631,0,637),(35680,195632,0,637),(35681,195633,0,637),(-35681,195635,0,637),(34456,195631,0,637),(35708,195632,0,637),(35709,195633,0,637),(-35709,195635,0,637),(34458,195631,0,637),(35692,195632,0,637),(35693,195633,0,637),(-35693,195635,0,637),(34459,195631,0,637),(35686,195632,0,637),(35687,195633,0,637),(-35687,195635,0,637),(34460,195631,0,637),(35702,195632,0,637),(35703,195633,0,637),(-35703,195635,0,637),(34461,195631,0,637),(35743,195632,0,637),(35744,195633,0,637),(-35744,195635,0,637),(34463,195631,0,637),(35734,195632,0,637),(35735,195633,0,637),(-35735,195635,0,637),(34465,195631,0,637),(35746,195632,0,637),(35747,195633,0,637),(-35747,195635,0,637),(34466,195631,0,637),(35665,195632,0,637),(35666,195633,0,637),(-35666,195635,0,637),(34467,195631,0,637),(35662,195632,0,637),(35663,195633,0,637),(-35663,195635,0,637),(34468,195631,0,637),(35721,195632,0,637),(35722,195633,0,637),(-35722,195635,0,637),(34469,195631,0,637),(35714,195632,0,637),(35715,195633,0,637),(-35715,195635,0,637),(34470,195631,0,637),(35728,195632,0,637),(35729,195633,0,637),(-35729,195635,0,637),(34471,195631,0,637),(35668,195632,0,637),(35669,195633,0,637),(-35669,195635,0,637),(34472,195631,0,637),(35699,195632,0,637),(35700,195633,0,637),(-35700,195635,0,637),(34473,195631,0,637),(35674,195632,0,637),(35675,195633,0,637),(-35675,195635,0,637),(34474,195631,0,637),(35731,195632,0,637),(35732,195633,0,637),(-35732,195635,0,637),(34475,195631,0,637),(35737,195632,0,637),(35738,195633,0,637),(-35738,195635,0,637),(37226,201710,0,0),(-37226,202336,0,0),(36948,202178,0,847),(38157,202180,0,847),(38639,202177,0,847),(38640,202179,0,847),(36939,202178,0,847),(38156,202180,0,847),(38637,202177,0,847),(38638,202179,0,847),(9034,169243,0,243),(9035,169243,1,243),(9036,169243,0,243),(9037,169243,0,243),(9038,169243,0,243),(9039,169243,0,243),(9040,169243,0,243),(37813,202238,0,0),(38402,202239,0,0),(38582,202240,0,0),(38583,202241,0,0),(36789,201959,0,0),(-36789,202338,0,0),(38174,202339,0,0),(-38174,202340,0,0); +INSERT INTO `aowow_loot_link` VALUES (19710,184465,1,0,0),(19218,184465,1,1,0),(21526,184849,2,0,0),(21525,184849,2,1,0),(17537,185168,1,1,0),(17536,185168,1,0,0),(18434,185169,2,1,0),(18432,185169,2,0,0),(28234,190586,1,0,0),(28234,193996,2,0,0),(26533,190663,1,0,0),(31217,193597,2,0,0),(27656,191349,1,0,0),(31561,193603,2,0,0),(28859,193905,1,0,0),(31734,193967,2,0,0),(32845,194307,1,0,0),(32846,194308,2,0,0),(32845,194200,3,0,0),(32846,194201,4,0,0),(32865,194312,1,0,0),(33147,194314,2,0,0),(32865,194313,3,0,0),(33147,194315,4,0,0),(32906,194324,1,0,0),(33360,194328,2,0,0),(32906,194327,3,0,0),(33360,194331,4,0,0),(32871,194821,1,0,0),(33070,194822,2,0,0),(33350,194789,1,0,0),(33350,194956,2,0,0),(33350,194957,3,0,0),(33350,194958,4,0,0),(32930,195046,1,0,0),(33909,195047,2,0,0),(34928,195323,1,0,0),(35517,195324,2,0,0),(35119,195374,1,0,0),(35518,195375,2,0,0),(37226,201710,1,0,0),(37226,202336,2,0,0),(36789,201959,1,0,0),(38174,202339,2,0,0),(36789,202338,3,0,0),(38174,202340,4,0,0),(38402,202239,1,0,0),(38582,202240,2,0,0),(37813,202238,3,0,0),(38583,202241,4,0,0),(9034,169243,1,0,243),(9035,169243,1,1,243),(9039,169243,1,0,243),(9036,169243,1,0,243),(9037,169243,1,0,243),(9038,169243,1,0,243),(9040,169243,1,0,243),(34657,195709,1,0,334),(34701,195709,1,0,334),(34703,195709,1,0,334),(34702,195709,1,0,334),(34705,195709,1,0,334),(35571,195709,1,0,334),(35617,195709,1,0,334),(35572,195709,1,0,334),(35570,195709,1,0,334),(35569,195709,1,1,334),(36089,195710,2,0,334),(36086,195710,2,0,334),(36087,195710,2,0,334),(36082,195710,2,0,334),(36085,195710,2,1,334),(36088,195710,2,0,334),(36084,195710,2,0,334),(36083,195710,2,0,334),(36091,195710,2,0,334),(36090,195710,2,0,334),(34458,195631,1,0,637),(34465,195631,1,0,637),(34463,195631,1,0,637),(34460,195631,1,0,637),(34459,195631,1,0,637),(34456,195631,1,0,637),(34466,195631,1,0,637),(34467,195631,1,0,637),(34468,195631,1,0,637),(34469,195631,1,0,637),(34470,195631,1,0,637),(34472,195631,1,0,637),(34474,195631,1,0,637),(34473,195631,1,0,637),(34455,195631,1,0,637),(34454,195631,1,0,637),(34453,195631,1,0,637),(34441,195631,1,1,637),(34471,195631,1,0,637),(34475,195631,1,0,637),(34444,195631,1,0,637),(34445,195631,1,0,637),(34447,195631,1,0,637),(34461,195631,1,0,637),(34448,195631,1,0,637),(34449,195631,1,0,637),(34450,195631,1,0,637),(34451,195631,1,0,637),(35686,195632,2,0,637),(35671,195632,2,0,637),(35683,195632,2,0,637),(35680,195632,2,0,637),(35674,195632,2,0,637),(35689,195632,2,0,637),(35721,195632,2,0,637),(35718,195632,2,0,637),(35731,195632,2,0,637),(35714,195632,2,0,637),(35711,195632,2,0,637),(35734,195632,2,0,637),(35737,195632,2,0,637),(35740,195632,2,0,637),(35743,195632,2,0,637),(35746,195632,2,0,637),(35708,195632,2,0,637),(35705,195632,2,0,637),(35702,195632,2,0,637),(35699,195632,2,0,637),(35695,195632,2,0,637),(35692,195632,2,0,637),(35728,195632,2,0,637),(35724,195632,2,0,637),(35668,195632,2,0,637),(34442,195632,2,1,637),(35662,195632,2,0,637),(35665,195632,2,0,637),(35725,195633,3,0,637),(35722,195633,3,0,637),(35719,195633,3,0,637),(35715,195633,3,0,637),(35709,195633,3,0,637),(35706,195633,3,0,637),(35729,195633,3,0,637),(35744,195633,3,0,637),(35732,195633,3,0,637),(35735,195633,3,0,637),(35738,195633,3,0,637),(35741,195633,3,0,637),(35747,195633,3,0,637),(35712,195633,3,0,637),(35703,195633,3,0,637),(35700,195633,3,0,637),(35672,195633,3,0,637),(35690,195633,3,0,637),(35687,195633,3,0,637),(35669,195633,3,0,637),(35684,195633,3,0,637),(35693,195633,3,0,637),(34443,195633,3,1,637),(35681,195633,3,0,637),(35663,195633,3,0,637),(35666,195633,3,0,637),(35696,195633,3,0,637),(35675,195633,3,0,637),(35700,195635,4,0,637),(35749,195635,4,1,637),(35706,195635,4,0,637),(35703,195635,4,0,637),(35709,195635,4,0,637),(35744,195635,4,0,637),(35741,195635,4,0,637),(35735,195635,4,0,637),(35732,195635,4,0,637),(35729,195635,4,0,637),(35725,195635,4,0,637),(35722,195635,4,0,637),(35719,195635,4,0,637),(35715,195635,4,0,637),(35712,195635,4,0,637),(35747,195635,4,0,637),(35696,195635,4,0,637),(35675,195635,4,0,637),(35681,195635,4,0,637),(35663,195635,4,0,637),(35669,195635,4,0,637),(35666,195635,4,0,637),(35738,195635,4,0,637),(35672,195635,4,0,637),(35684,195635,4,0,637),(35687,195635,4,0,637),(35690,195635,4,0,637),(35693,195635,4,0,637),(16064,181366,1,0,692),(16065,181366,1,0,692),(16063,181366,1,0,692),(30549,181366,1,1,692),(30602,193426,2,0,692),(30603,193426,2,0,692),(30601,193426,2,0,692),(30600,193426,2,1,692),(36948,202178,1,0,847),(36939,202178,1,0,847),(38157,202180,2,0,847),(38156,202180,2,0,847),(38639,202177,3,0,847),(38637,202177,3,0,847),(38640,202179,4,0,847),(38638,202179,4,0,847); /*!40000 ALTER TABLE `aowow_loot_link` ENABLE KEYS */; UNLOCK TABLES; diff --git a/setup/updates/1720116490_01.sql b/setup/updates/1720116490_01.sql new file mode 100644 index 00000000..10c0988c --- /dev/null +++ b/setup/updates/1720116490_01.sql @@ -0,0 +1,217 @@ +DROP TABLE IF EXISTS `aowow_loot_link`; +CREATE TABLE `aowow_loot_link` ( + `npcId` mediumint(9) unsigned NOT NULL, + `objectId` mediumint(8) unsigned NOT NULL, + `difficulty` tinyint(3) unsigned NOT NULL DEFAULT 1, + `priority` tinyint(3) unsigned NOT NULL COMMENT '1: use this npc from group encounter (others 0)', + `encounterId` mediumint(8) unsigned NOT NULL COMMENT 'as title reference', + UNIQUE KEY `npcId_difficulty` (`npcId`, `difficulty`), + KEY `objectId` (`objectId`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +INSERT INTO `aowow_loot_link` VALUES + (19710,184465,1,0,0), + (19218,184465,1,1,0), + (21526,184849,2,0,0), + (21525,184849,2,1,0), + (17537,185168,1,1,0), + (17536,185168,1,0,0), + (18434,185169,2,1,0), + (18432,185169,2,0,0), + (28234,190586,1,0,0), + (28234,193996,2,0,0), + (26533,190663,1,0,0), + (31217,193597,2,0,0), + (27656,191349,1,0,0), + (31561,193603,2,0,0), + (28859,193905,1,0,0), + (31734,193967,2,0,0), + (32845,194307,1,0,0), + (32846,194308,2,0,0), + (32845,194200,3,0,0), + (32846,194201,4,0,0), + (32865,194312,1,0,0), + (33147,194314,2,0,0), + (32865,194313,3,0,0), + (33147,194315,4,0,0), + (32906,194324,1,0,0), + (33360,194328,2,0,0), + (32906,194327,3,0,0), + (33360,194331,4,0,0), + (32871,194821,1,0,0), + (33070,194822,2,0,0), + (33350,194789,1,0,0), + (33350,194956,2,0,0), + (33350,194957,3,0,0), + (33350,194958,4,0,0), + (32930,195046,1,0,0), + (33909,195047,2,0,0), + (34928,195323,1,0,0), + (35517,195324,2,0,0), + (35119,195374,1,0,0), + (35518,195375,2,0,0), + (37226,201710,1,0,0), + (37226,202336,2,0,0), + (36789,201959,1,0,0), + (38174,202339,2,0,0), + (36789,202338,3,0,0), + (38174,202340,4,0,0), + (38402,202239,1,0,0), + (38582,202240,2,0,0), + (37813,202238,3,0,0), + (38583,202241,4,0,0), + (9034,169243,1,0,243), + (9035,169243,1,1,243), + (9039,169243,1,0,243), + (9036,169243,1,0,243), + (9037,169243,1,0,243), + (9038,169243,1,0,243), + (9040,169243,1,0,243), + (34657,195709,1,0,334), + (34701,195709,1,0,334), + (34703,195709,1,0,334), + (34702,195709,1,0,334), + (34705,195709,1,0,334), + (35571,195709,1,0,334), + (35617,195709,1,0,334), + (35572,195709,1,0,334), + (35570,195709,1,0,334), + (35569,195709,1,1,334), + (36089,195710,2,0,334), + (36086,195710,2,0,334), + (36087,195710,2,0,334), + (36082,195710,2,0,334), + (36085,195710,2,1,334), + (36088,195710,2,0,334), + (36084,195710,2,0,334), + (36083,195710,2,0,334), + (36091,195710,2,0,334), + (36090,195710,2,0,334), + (34458,195631,1,0,637), + (34465,195631,1,0,637), + (34463,195631,1,0,637), + (34460,195631,1,0,637), + (34459,195631,1,0,637), + (34456,195631,1,0,637), + (34466,195631,1,0,637), + (34467,195631,1,0,637), + (34468,195631,1,0,637), + (34469,195631,1,0,637), + (34470,195631,1,0,637), + (34472,195631,1,0,637), + (34474,195631,1,0,637), + (34473,195631,1,0,637), + (34455,195631,1,0,637), + (34454,195631,1,0,637), + (34453,195631,1,0,637), + (34441,195631,1,1,637), + (34471,195631,1,0,637), + (34475,195631,1,0,637), + (34444,195631,1,0,637), + (34445,195631,1,0,637), + (34447,195631,1,0,637), + (34461,195631,1,0,637), + (34448,195631,1,0,637), + (34449,195631,1,0,637), + (34450,195631,1,0,637), + (34451,195631,1,0,637), + (35686,195632,2,0,637), + (35671,195632,2,0,637), + (35683,195632,2,0,637), + (35680,195632,2,0,637), + (35674,195632,2,0,637), + (35689,195632,2,0,637), + (35721,195632,2,0,637), + (35718,195632,2,0,637), + (35731,195632,2,0,637), + (35714,195632,2,0,637), + (35711,195632,2,0,637), + (35734,195632,2,0,637), + (35737,195632,2,0,637), + (35740,195632,2,0,637), + (35743,195632,2,0,637), + (35746,195632,2,0,637), + (35708,195632,2,0,637), + (35705,195632,2,0,637), + (35702,195632,2,0,637), + (35699,195632,2,0,637), + (35695,195632,2,0,637), + (35692,195632,2,0,637), + (35728,195632,2,0,637), + (35724,195632,2,0,637), + (35668,195632,2,0,637), + (34442,195632,2,1,637), + (35662,195632,2,0,637), + (35665,195632,2,0,637), + (35725,195633,3,0,637), + (35722,195633,3,0,637), + (35719,195633,3,0,637), + (35715,195633,3,0,637), + (35709,195633,3,0,637), + (35706,195633,3,0,637), + (35729,195633,3,0,637), + (35744,195633,3,0,637), + (35732,195633,3,0,637), + (35735,195633,3,0,637), + (35738,195633,3,0,637), + (35741,195633,3,0,637), + (35747,195633,3,0,637), + (35712,195633,3,0,637), + (35703,195633,3,0,637), + (35700,195633,3,0,637), + (35672,195633,3,0,637), + (35690,195633,3,0,637), + (35687,195633,3,0,637), + (35669,195633,3,0,637), + (35684,195633,3,0,637), + (35693,195633,3,0,637), + (34443,195633,3,1,637), + (35681,195633,3,0,637), + (35663,195633,3,0,637), + (35666,195633,3,0,637), + (35696,195633,3,0,637), + (35675,195633,3,0,637), + (35700,195635,4,0,637), + (35749,195635,4,1,637), + (35706,195635,4,0,637), + (35703,195635,4,0,637), + (35709,195635,4,0,637), + (35744,195635,4,0,637), + (35741,195635,4,0,637), + (35735,195635,4,0,637), + (35732,195635,4,0,637), + (35729,195635,4,0,637), + (35725,195635,4,0,637), + (35722,195635,4,0,637), + (35719,195635,4,0,637), + (35715,195635,4,0,637), + (35712,195635,4,0,637), + (35747,195635,4,0,637), + (35696,195635,4,0,637), + (35675,195635,4,0,637), + (35681,195635,4,0,637), + (35663,195635,4,0,637), + (35669,195635,4,0,637), + (35666,195635,4,0,637), + (35738,195635,4,0,637), + (35672,195635,4,0,637), + (35684,195635,4,0,637), + (35687,195635,4,0,637), + (35690,195635,4,0,637), + (35693,195635,4,0,637), + (16064,181366,1,0,692), + (16065,181366,1,0,692), + (16063,181366,1,0,692), + (30549,181366,1,1,692), + (30602,193426,2,0,692), + (30603,193426,2,0,692), + (30601,193426,2,0,692), + (30600,193426,2,1,692), + (36948,202178,1,0,847), + (36939,202178,1,0,847), + (38157,202180,2,0,847), + (38156,202180,2,0,847), + (38639,202177,3,0,847), + (38637,202177,3,0,847), + (38640,202179,4,0,847), + (38638,202179,4,0,847);