• Register
    • Help

    striker  0 Items
    Currently Supporting
    • Home
    • News
    • Forum
    • Wiki
    • Support
      • Manage Subscriptions
      • FAQ
      • Support For
        • VaultWiki 4.x Series
        • VaultWiki.org Site
    • What's New?
    • Buy Now
    • Manual
    • 
    • Support
    • VaultWiki 4.x Series
    • Bug
    • vwCCScript is not defined when upgrading VW 4.1.0 to VW 4.1.1 while deactivated

    1. Welcome to VaultWiki.org, home of the wiki add-on for vBulletin and XenForo!

      VaultWiki allows your existing forum users to collaborate on creating and managing a site's content pages. VaultWiki is a fully-featured and fully-supported wiki solution for vBulletin and XenForo.

      The VaultWiki Team encourages you to join our community of forum administrators and check out VaultWiki for yourself.

    Issue: vwCCScript is not defined when upgrading VW 4.1.0 to VW 4.1.1 while deactivated

    • Issue Tools
      • View Changes
    1. issueid=6139 December 14, 2020 1:38 PM
      SeToY SeToY is offline
      Junior Member
      vwCCScript is not defined when upgrading VW 4.1.0 to VW 4.1.1 while deactivated
      vwCCScript is not defined when upgrading VW 4.1.0 to VW 4.1.1 while deactivated

      When upgrading VW 4.1.0 to 4.1.1 while it is disabled the following error occurs in the JavaScript console and the upgrade stops:
      Code:
      Uncaught ReferenceError: vwCCScript is not defined
          at vwCrossTabCallback (cookie-cutter.js?v=f37eb3be:23)
          at Object.XF.CrossTab.trigger (cookie-cutter.js?v=f37eb3be:35)
          at Object.initialize (core-compiled.js?_v=f30fe76a:97)
          at HTMLDocument.onPageLoad (core-compiled.js?_v=f30fe76a:25)
          at e (jquery-3.4.1.min.js?_v=f30fe76a:2)
          at t (jquery-3.4.1.min.js?_v=f30fe76a:2)
      Update 1:
      It now even happens when trying to enable the add-on.

      Update 2:
      And now it even destroys interacting with other add-ons as this message is thrown even when simply browsing the admin panel.
      This is on XF 2.1, even though your issue tracker shows it otherwise (the correct software is selected on the issue details, but the issue change history here is apparently broken, too)

      Update 3:
      Code:
      ErrorException: [E_WARNING] file_exists(): open_basedir restriction in effect. File(/db/create/usercount/xf2.php) is not within the allowed path(s): (D:\inetpub\wwwroot;D:\inetpub\php\upload;C:\Windows\TEMP) src\addons\vw\vw\_hard\core.php:748
      Code:
      Stack trace
      #0 [internal function]: XF::handlePhpError(2, '[E_WARNING] fil...', 'D:\\inetpub\\wwwr...', 748, Array)
      #1 src\addons\vw\vw\_hard\core.php(748): file_exists('/db/create/user...')
      #2 src\addons\vw\vw\_hard\core.php(672): vw_Hard_Core::file_exists('/db/create/user...')
      #3 src\addons\vw\vw\_hard\core.php(388): vw_Hard_Core::locate_class('Controller', 'Install/DB/Crea...', '/db/create/user...', Array)
      #4 src\addons\vw\vw\_hard\core.php(794): vw_Hard_Core::fetch_object('Install', 'DB/Create/UserC...', '')
      #5 src\addons\vw\vw\Entity\Entity.php(25): vw_Hard_Core::install('DB/Create/UserC...')
      #6 src\addons\vw\vw\Entity\UserCount.php(23): vw\vw\Entity\Entity::getStructure(Object(XF\Mvc\Entity\Structure))
      #7 src\XF\Mvc\Entity\Manager.php(70): vw\vw\Entity\UserCount::getStructure(Object(XF\Mvc\Entity\Structure))
      #8 src\XF\Mvc\Entity\Finder.php(759): XF\Mvc\Entity\Manager->getEntityStructure('vw\\vw:UserCount')
      #9 src\XF\Mvc\Entity\Finder.php(644): XF\Mvc\Entity\Finder->join('vwUserCount', true, false, false)
      #10 src\XF\Mvc\Entity\Manager.php(236): XF\Mvc\Entity\Finder->with(Array)
      #11 src\XF\Mvc\Entity\Manager.php(131): XF\Mvc\Entity\Manager->getFinder('XF:User')
      #12 src\XF\Repository\User.php(24): XF\Mvc\Entity\Manager->find('XF:User', 1, Array)
      #13 src\XF\App.php(1780): XF\Repository\User->getVisitor(1, Array)
      #14 src\XF\Pub\App.php(154): XF\App->getVisitorFromSession(Object(DBTech\Security\XF\Session\Session))
      #15 src\XF\App.php(2187): XF\Pub\App->start(true)
      #16 src\XF.php(391): XF\App->run()
      #17 index.php(20): XF::runApp('XF\\Pub\\App')
      #18 {main}
      Update 4:
      I rolled back to 4.1.0 PL1 from a backup and tried to upgrade to 4.1.0 PL3 before trying to upgrade to 4.1.1, which has now completely bricked my site. No navigation items visible. 40 errors in admin cp.

      Code:
      XF\Db\InvalidQueryException: Error rendering template admin:vw_cp.less: MySQL statement prepare error [1064]: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '*,`pageid`,`index`.`title` AS `title` FROM `vw_` LEFT JOIN `vw_page` `page` ...' at line 1 src\XF\Db\AbstractStatement.php:228
      Generated by: Unknown account 14 Dec 2020 at 21:05
      Code:
      Stack trace
      SELECT `di`.*,`l`.*,`ch`.*,`c`.*,`i`.*,`r`.*,`page`.*,`iplog2`.`ip` AS `ipaddress`,`iplog`.`ip` AS `creatorip`,`likes`.`reactions`,`likes`.`reaction_users`,`di`.`userid` AS `disambig_userid`,`l`.`userid` AS `translate_userid`,`ch`.`userid` AS `chapter_userid`,`t`.`discussionid` AS `discussionid`,`t`.`comments` AS `commentcount`,`r`.`dateline` AS `edit_dateline`,`r`.`flags` + 0 AS `flags`,`r`.`parentid` AS `edit_parentid`,*,`pageid`,`index`.`title` AS `title` FROM `vw_`  LEFT JOIN `vw_page` `page` ON (`page`.`pageid` = `pageid`) 
       LEFT JOIN `vw_route` `i` ON (`page`.`pageid` = `i`.`itemid` AND `i`.`itemtypeid` = 1) 
       LEFT JOIN `vw_counter` `c` ON (`c`.`routeid` = `i`.`routeid`) 
       LEFT JOIN `vw_revision` `r` ON (`r`.`revisionid` = `page`.`revisionid`) 
       LEFT JOIN `vw_chapter` `ch` ON (`page`.`pageid` = `ch`.`pageid`) 
       LEFT JOIN `vw_langitem` `l` ON (`page`.`pageid` = `l`.`pageid`) 
       LEFT JOIN `vw_disambigitem` `di` ON (`page`.`pageid` = `di`.`contentid` AND `di`.`contenttypeid` = 1) 
       LEFT JOIN `vw_discussion` `t` ON (`t`.`contentid` = `page`.`pageid` AND `t`.`displayorder` = 0 AND `t`.`contenttypeid` = 1) 
       LEFT JOIN `vw_reactions` `likes` ON (`likes`.`itemtypeid` = 1 AND `likes`.`itemid` = `page`.`pageid`) 
       LEFT JOIN `xf_ip` `iplog` ON (`iplog`.`ip_id` = `page`.`creator_ip_id`) 
       LEFT JOIN `xf_ip` `iplog2` ON (`iplog2`.`ip_id` = `r`.`ip_id`)   WHERE 0 < `` LIMIT 1
      ------------
      
      #0 src\XF\Db\Mysqli\Statement.php(196): XF\Db\AbstractStatement->getException('MySQL statement...', 1064, '42000')
      #1 src\XF\Db\Mysqli\Statement.php(39): XF\Db\Mysqli\Statement->getException('MySQL statement...', 1064, '42000')
      #2 src\XF\Db\Mysqli\Statement.php(54): XF\Db\Mysqli\Statement->prepare()
      #3 src\XF\Db\AbstractAdapter.php(94): XF\Db\Mysqli\Statement->execute()
      #4 src\addons\vw\vw\_core\controller\db\xf2.php(170): XF\Db\AbstractAdapter->query('SELECT `di`.*,`...')
      #5 src\addons\vw\vw\_core\model\db\mysql\vw.php(25): vw_DB_Controller_XF2->query_read('SELECT `di`.*,`...')
      #6 src\addons\vw\vw\_core\controller\fetch\vw.php(405): vw_DB_MySQL_Model->select(Array)
      #7 src\addons\vw\vw\_core\controller\fetch\index\vw.php(78): vw_Fetch_Controller->get('Index', 0)
      #8 src\addons\vw\vw\_core\controller\fetch\vw.php(285): vw_Fetch_Index_Controller->cached(Array)
      #9 src\addons\vw\vw\Listener.php(478): vw_Fetch_Controller->cached('Index', 0)
      #10 [internal function]: vw\vw\Listener::templater_template_pre_render(Object(vw\vw\XF\Template\Templater2), 'admin', 'vw_cp.less', Array)
      #11 src\XF\Extension.php(35): call_user_func_array(Array, Array)
      #12 src\XF\App.php(2661): XF\Extension->fire('templater_templ...', Array, 'admin:vw_cp.les...')
      #13 src\XF\Template\Templater.php(1297): XF\App->fire('templater_templ...', Array, 'admin:vw_cp.les...')
      #14 src\addons\vw\vw\XF\Template\Templater2.php(32): XF\Template\Templater->renderTemplate('vw_cp.less', Array, false)
      #15 src\XF\CssRenderer.php(323): vw\vw\XF\Template\Templater2->renderTemplate('admin:vw_cp.les...', Array, false)
      #16 src\addons\vw\vw\XF\CssRenderer.php(39): XF\CssRenderer->renderTemplate('admin:vw_cp.les...', NULL, true)
      #17 src\XF\CssRenderer.php(250): vw\vw\XF\CssRenderer->renderTemplate('admin:vw_cp.les...', NULL)
      #18 src\addons\ThemeHouse\UIX\XF\CssRenderer.php(40): XF\CssRenderer->renderTemplates(Array, Array, Array)
      #19 src\XF\CssRenderer.php(116): ThemeHouse\UIX\XF\CssRenderer->renderTemplates(Array, Array, Array)
      #20 src\XF\CssWriter.php(53): XF\CssRenderer->render(Array)
      #21 css.php(30): XF\CssWriter->run(Array, 0, 1, 'a3f0e6b913330f5...')
      #22 {main}
      Code:
      XF\Db\InvalidQueryException: Error rendering navigation: MySQL statement prepare error [1064]: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '*,`pageid`,`index`.`title` AS `title` FROM `vw_` LEFT JOIN `vw_page` `page` ...' at line 1 src\XF\Db\AbstractStatement.php:228
      Generated by: SeToY 14 Dec 2020 at 21:05
      Stack trace
      SELECT `liked`.*,`di`.*,`l`.*,`ch`.*,`c`.*,`i`.*,`r`.*,`page`.*,`liked`.`reaction_content_id` AS `like_id`,`iplog2`.`ip` AS `ipaddress`,`iplog`.`ip` AS `creatorip`,`likes`.`reactions`,`likes`.`reaction_users`,`rv`.`vote` AS `myrating`,`rv`.`reason` AS `myratingreason`,`nk`.`readtime` AS `cascadetime`,`sub`.`subscribeid` AS `issubscribed`,`sub`.`notifytype` AS `subscribetype`,`sub`.`options` AS `subscribeoptions`,`mk`.`readtime`,`di`.`userid` AS `disambig_userid`,`l`.`userid` AS `translate_userid`,`ch`.`userid` AS `chapter_userid`,`t`.`discussionid` AS `discussionid`,`t`.`comments` AS `commentcount`,`r`.`dateline` AS `edit_dateline`,`r`.`flags` + 0 AS `flags`,`r`.`parentid` AS `edit_parentid`,*,`pageid`,`index`.`title` AS `title` FROM `vw_`  LEFT JOIN `vw_page` `page` ON (`page`.`pageid` = `pageid`) 
       LEFT JOIN `vw_route` `i` ON (`page`.`pageid` = `i`.`itemid` AND `i`.`itemtypeid` = 1) 
       LEFT JOIN `vw_counter` `c` ON (`c`.`routeid` = `i`.`routeid`) 
       LEFT JOIN `vw_revision` `r` ON (`r`.`revisionid` = `page`.`revisionid`) 
       LEFT JOIN `vw_chapter` `ch` ON (`page`.`pageid` = `ch`.`pageid`) 
       LEFT JOIN `vw_langitem` `l` ON (`page`.`pageid` = `l`.`pageid`) 
       LEFT JOIN `vw_disambigitem` `di` ON (`page`.`pageid` = `di`.`contentid` AND `di`.`contenttypeid` = 1) 
       LEFT JOIN `vw_discussion` `t` ON (`t`.`contentid` = `page`.`pageid` AND `t`.`displayorder` = 0 AND `t`.`contenttypeid` = 1) 
       LEFT JOIN `vw_markread` `mk` ON (`mk`.`itemtypeid` = 1 AND `mk`.`itemid` = `page`.`pageid` AND `mk`.`userid` = 1) 
       LEFT JOIN `vw_subscribe` `sub` ON (`sub`.`nodetypeid` = 1 AND `sub`.`nodeid` = `page`.`pageid` AND `sub`.`userid` = 1) 
       LEFT JOIN `vw_noderead` `nk` ON (`nk`.`nodeid` = `page`.`pageid` AND `nk`.`nodetypeid` = 1 AND `nk`.`userid` = 1) 
       LEFT JOIN `vw_rate` `rv` ON (`rv`.`contenttypeid` = 7 AND `rv`.`contentid` = `page`.`revisionid` AND `rv`.`userid` = 1) 
       LEFT JOIN `vw_reactions` `likes` ON (`likes`.`itemtypeid` = 1 AND `likes`.`itemid` = `page`.`pageid`) 
       LEFT JOIN `xf_ip` `iplog` ON (`iplog`.`ip_id` = `page`.`creator_ip_id`) 
       LEFT JOIN `xf_ip` `iplog2` ON (`iplog2`.`ip_id` = `r`.`ip_id`) 
       LEFT JOIN `xf_reaction_content` `liked` ON (`liked`.`content_type` = 'vwpage' AND `liked`.`content_id` = `page`.`pageid` AND `liked`.`reaction_user_id` = 1)   WHERE 0 < `` LIMIT 1
      ------------
      
      #0 src\XF\Db\Mysqli\Statement.php(196): XF\Db\AbstractStatement->getException('MySQL statement...', 1064, '42000')
      #1 src\XF\Db\Mysqli\Statement.php(39): XF\Db\Mysqli\Statement->getException('MySQL statement...', 1064, '42000')
      #2 src\XF\Db\Mysqli\Statement.php(54): XF\Db\Mysqli\Statement->prepare()
      #3 src\XF\Db\AbstractAdapter.php(94): XF\Db\Mysqli\Statement->execute()
      #4 src\addons\vw\vw\_core\controller\db\xf2.php(170): XF\Db\AbstractAdapter->query('SELECT `liked`....')
      #5 src\addons\vw\vw\_core\model\db\mysql\vw.php(25): vw_DB_Controller_XF2->query_read('SELECT `liked`....')
      #6 src\addons\vw\vw\_core\controller\fetch\vw.php(405): vw_DB_MySQL_Model->select(Array)
      #7 src\addons\vw\vw\_core\controller\fetch\index\vw.php(78): vw_Fetch_Controller->get('Index', 0)
      #8 src\addons\vw\vw\_core\controller\fetch\vw.php(285): vw_Fetch_Index_Controller->cached(Array)
      #9 src\addons\vw\vw\_core\model\ui\tab\index\vw.php(30): vw_Fetch_Controller->cached('Index', 0)
      #10 src\addons\vw\vw\_core\model\ui\tab\vw.php(55): vw_UI_Tab_Index_Model->can_main_tab(Array, Array)
      #11 src\addons\vw\vw\_core\model\plugins\general\vw.php(336): vw_UI_Tab_Model->check('can_main_tab', Array)
      #12 src\addons\vw\vw\_core\model\plugins\general\xf2.php(152): vw_Plugins_General_Model->get_raw_links(1)
      #13 src\addons\vw\vw\_core\model\plugins\general\vw.php(185): vw_Plugins_General_Model_XF2->get_raw_links(1)
      #14 src\addons\vw\vw\Helper\Model\Navigation.php(26): vw_Plugins_General_Model->get_nav_links(1)
      #15 internal_data\code_cache\navigation_cache.php(318): vw\vw\Helper\Model\Navigation::canViewNav(Array, 'main', 'forums')
      #16 src\XF\Template\Templater.php(6660): XF\Pub\App->{closure}(Object(vw\vw\XF\Template\Templater2), 'forums', Array)
      #17 src\XF\Pub\App.php(560): XF\Template\Templater->renderNavigationClosure(Object(Closure), 'forums', Array)
      #18 src\XF\Pub\App.php(513): XF\Pub\App->getNavigation(Array, 'forums')
      #19 src\XF\App.php(2002): XF\Pub\App->renderPageHtml('
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      ...', Array, Object(XF\Mvc\Reply\View), Object(XF\Mvc\Renderer\Html))
      #20 src\XF\Mvc\Dispatcher.php(402): XF\App->renderPage('
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      ...', Object(XF\Mvc\Reply\View), Object(XF\Mvc\Renderer\Html))
      #21 src\XF\Mvc\Dispatcher.php(58): XF\Mvc\Dispatcher->render(Object(XF\Mvc\Reply\View), 'html')
      #22 src\XF\App.php(2191): XF\Mvc\Dispatcher->run()
      #23 src\XF.php(391): XF\App->run()
      #24 index.php(20): XF::runApp('XF\\Pub\\App')
      #25 {main}
    Issue Details
    Issue Number 6139
    Issue Type Bug
    Project VaultWiki 4.x Series
    Category Install / Upgrade
    Status Fixed
    Priority 2 - Fatal / Database Errors
    Affected Version 4.1.0
    Fixed Version 4.1.2
    Milestone (none)
    Software DependencyXenForo 2.x
    License TypePaid
    Users able to reproduce bug 0
    Users unable to reproduce bug 0
    Attachments 0
    Assigned Users (none)
    Tags (none)




    1. December 14, 2020 7:33 PM
      pegasus pegasus is offline
      VaultWiki Team
      After rolling back, you are experiencing database errors due to a damaged cache record. Run the following MySQL query to remove the damaged record, which will hopefully cause it to regenerate correctly:
      Code:
      DELETE FROM xf_data_registry WHERE data_key = 'vw_nodetypes';
      A lot of this might be caused by the open_basedir/file_exists errors which show that the paths for your VaultWiki installation are being treated as blank, possibly due to a file system structure/location change that is not reflected in your config files.

      Please review your src/addons/vw/vw/config.php[.xf2] file, specifically the definition of VW_DEPOT_PATH (or any other *_PATH directives that you may have added manually). If a path is entered, make sure it is correct and within the allowed base directory. If a path is not entered, you may need to set one manually, since the automatic path detection is either failing or resolving outside the base directory (symlink?).

      If, for example, your src/addons folder is symlinked at another location, you may find that you may need to manually set a number of VW_*_PATH directives in your config file. You can find a list by reviewing src/addons/vw/vw/Helper/Paths.php. In that file $path is assumed to be the location of:
      Code:
      \XF::getSourceDirectory() . '/addons/vw/vw'
      After resolving symlinks.

      As for the Javascript error, I believe this will occur if your wiki base URL is at a different domain/sub-domain from the forum base URL and an upgrade is being processed. In src/addons/vw/vw/Listener.php, find (2x):
      Code:
      $domains = \vw_Hard_Core::model('Cookie')->domains(true);
      Replace with (2x):
      Code:
      $domains = $append ? \vw_Hard_Core::model('Cookie')->domains(true) : false;
      Reply Reply  
    2. December 14, 2020 7:41 PM
      SeToY SeToY is offline
      Junior Member
      Thank you for your swift response. A few errors could very well be because of invalid paths since I did not change the VW config file to my test installation directory. But:
      Quote Originally Posted by pegasus
      After rolling back, you are experiencing database errors due to a damaged cache record.
      I don't think this is applicable as I did not only rollback the database but the filesystem structure as well. But if there to be paths or domains in the generated cache records, this might be the problem as my test installation is, of course, on a different domain and a different directory on the file system.

      Quote Originally Posted by pegasus
      A lot of this might be caused by the open_basedir/file_exists errors which show that the paths for your VaultWiki installation are being treated as blank, possibly due to a file system structure/location change that is not reflected in your config files.

      Please review your src/addons/vw/vw/config.php[.xf2] file, specifically the definition of VW_DEPOT_PATH (or any other *_PATH directives that you may have added manually). If a path is entered, make sure it is correct and within the allowed base directory. If a path is not entered, you may need to set one manually, since the automatic path detection is either failing or resolving outside the base directory (symlink?).
      I have not symlinked the directories and have not specified any custom path variable in the vw config - is there a setting in vw's options that I might have missed during creation of the test installation?

      I now updated from XF 2.1 to XF 2.2 while keeping VW 4.1.0 PL1. Is it advisable to try the upgrade to 4.1.1 again coming from these versions?

      Update:
      Just tried it on a my test install again. If there were to be any paths to change, I am unable to do so because I cannot enable 4.1.0 on 2.2 (wrong XF version message) because it results in "Uncaught ReferenceError: vwCCScript is not defined". This was fixed after changing the code you mentioned, though.
      Reply Reply  
    3. December 14, 2020 9:58 PM
      pegasus pegasus is offline
      VaultWiki Team
      You need to use a different VaultWiki ZIP depending on whether you are using XF 2.1 vs 2.2. You should be able to use either with 4.1.0 PL 1, as long as you downloaded the appropriate VW package for that XF version from us.

      The vwCCScript error message is a side effect of the wrong version number when the domains are different between wiki and forum, as I mentioned above (possibly due to the test installation being on a subdomain). I gave a file edit above which should resolve this issue.

      For the open_basedir error, after lengthy analysis, the only way I can see this happening with the error combinations you have and to have gotten the database in that state, is if the directory src/addons/vw/vw/_install/lib was missing or had incorrect file permissions at the time (the trace shows that path resolved to false while looking for a file in it, while other VaultWiki paths were functioning normally). Possibly you attempted to run the upgrade script while the files were still uploading, or perhaps the file transfer was not complete. Since you said you reverted the file system, this would be hard to check now.

      However, we can add back protection against this, by modifying src/addons/vw/vw/Setup.php. Find:
      Code:
      $json = file_get_contents($this->addOn->getAddOnDirectory() . '/addon.json');
      BEFORE it, add:
      Code:
      		if (!\vw_Hard_Core::get_dir('install') OR !file_exists(\vw_Hard_Core::get_dir('install')))
      		{
      			$errors[] = $this->vwView('install')->sprintf(
      				$this->vwView('install')->get_phrase('install_dir_missing_error'),
      				'/src/addons/vw/vw/_install/lib'
      			);
      		}
      Now if that were to happen again, you would be warned before starting the upgrade. If deeper files were missing next time, but the directory existed, you should receive a more helpful error message when it encounters the problem (such as stating that a specific file doesn't exist).
      Reply Reply  
    4. December 15, 2020 6:28 AM
      SeToY SeToY is offline
      Junior Member
      Thank you for your thorough response. I applied both code changes (Listener and Setup) on my production system and the upgrade went through successfully. So at least this issue is fixed for me now

      Thanks again!
      Reply Reply  
    + Reply

    Assigned Users
    Loading Please Wait
    Tags
    Loading Please Wait
    • Contact Us
    • License Agreement
    • Privacy
    • Terms
    • Top
    All times are GMT -4. The time now is 2:58 PM.
    This site uses cookies to help personalize content, to tailor your experience, and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Learn more… Accept Remind me later
  • striker
    Powered by vBulletin® Version 4.2.5 Beta 2
    Copyright © 2025 vBulletin Solutions Inc. All rights reserved.
    Search Engine Optimisation provided by DragonByte SEO (Pro) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
    Copyright © 2008 - 2024 VaultWiki Team, Cracked Egg Studios, LLC.