Added workshop

Added workshop

--
-- Copyright (C) 2017 DBot
--
-- 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.
--

resource.AddWorkshop('933203381')

Files = {
    'materials/gui/pped_icon.png'
    'materials/gui/ppm2/emotes/anger.png'
    'materials/gui/ppm2/emotes/angry_tongue.png'
    'materials/gui/ppm2/emotes/big_grin.png'
    'materials/gui/ppm2/emotes/cat.png'
    'materials/gui/ppm2/emotes/sad.png'
    'materials/gui/ppm2/emotes/scrunch.png'
    'materials/gui/ppm2/emotes/sorry.png'
    'materials/gui/ppm2/emotes/tongue.png'
    'materials/gui/ppm2/emotes/wink_left.png'
    'materials/gui/ppm2/emotes/wink_right.png'
    'materials/models/ppm/base/body.vmt'
    'materials/models/ppm/base/body.vtf'
    'materials/models/ppm/base/bodyf.vmt'
    'materials/models/ppm/base/bodym.vmt'
    'materials/models/ppm/base/bodym.vtf'
    'materials/models/ppm/base/cmark.vmt'
    'materials/models/ppm/base/eyeball_l.vtf'
    'materials/models/ppm/base/eyeball_r.vtf'
    'materials/models/ppm/base/eyelashes.vmt'
    'materials/models/ppm/base/eyelashes.vtf'
    'materials/models/ppm/base/eye_l.vmt'
    'materials/models/ppm/base/eye_r.vmt'
    'materials/models/ppm/base/face/black.vtf'
    'materials/models/ppm/base/face/gray.vtf'
    'materials/models/ppm/base/face/p_base.vtf'
    'materials/models/ppm/base/face/p_base_r.vtf'
    'materials/models/ppm/base/face/p_bnbn.vtf'
    'materials/models/ppm/base/face/p_bnbn_r.vtf'
    'materials/models/ppm/base/face/p_drp.vtf'
    'materials/models/ppm/base/face/p_gold.vtf'
    'materials/models/ppm/base/face/p_green.vtf'
    'materials/models/ppm/base/face/p_green_r.vtf'
    'materials/models/ppm/base/face/p_luna.vtf'
    'materials/models/ppm/base/face/p_luna_r.vtf'
    'materials/models/ppm/base/face/p_purple.vtf'
    'materials/models/ppm/base/face/p_purple2.vtf'
    'materials/models/ppm/base/face/p_purple2_r.vtf'
    'materials/models/ppm/base/face/p_purple_r.vtf'
    'materials/models/ppm/base/face/p_rd.vtf'
    'materials/models/ppm/base/face/p_rd_r.vtf'
    'materials/models/ppm/base/face/p_tangelo.vtf'
    'materials/models/ppm/base/face/p_tangelo_r.vtf'
    'materials/models/ppm/base/face/tc00.vmt'
    'materials/models/ppm/base/face/tc01.vmt'
    'materials/models/ppm/base/face/tc02.vmt'
    'materials/models/ppm/base/face/tc03.vmt'
    'materials/models/ppm/base/face/tc04.vmt'
    'materials/models/ppm/base/face/tc05.vmt'
    'materials/models/ppm/base/face/tc06.vmt'
    'materials/models/ppm/base/face/tc07.vmt'
    'materials/models/ppm/base/face/tc08.vmt'
    'materials/models/ppm/base/face/tc09.vmt'
    'materials/models/ppm/base/face/white.vtf'
    'materials/models/ppm/base/hair_color_1.vmt'
    'materials/models/ppm/base/hair_color_2.vmt'
    'materials/models/ppm/base/horn.vmt'
    'materials/models/ppm/base/horn.vtf'
    'materials/models/ppm/base/mouth.vmt'
    'materials/models/ppm/base/mouth.vtf'
    'materials/models/ppm/base/pupil_l.vtf'
    'materials/models/ppm/base/pupil_r.vtf'
    'materials/models/ppm/base/render/bodyf.vmt'
    'materials/models/ppm/base/render/bodym.vmt'
    'materials/models/ppm/base/render/body_alpha_vsm.vtf'
    'materials/models/ppm/base/render/body_n.vtf'
    'materials/models/ppm/base/render/clothes_sbs_full.vmt'
    'materials/models/ppm/base/render/clothes_sbs_full.vtf'
    'materials/models/ppm/base/render/clothes_wbs.vmt'
    'materials/models/ppm/base/render/clothes_wbs.vtf'
    'materials/models/ppm/base/render/clothes_wbs_full.vmt'
    'materials/models/ppm/base/render/clothes_wbs_full.vtf'
    'materials/models/ppm/base/render/clothes_wbs_full_n.vtf'
    'materials/models/ppm/base/render/clothes_wbs_light.vtf'
    'materials/models/ppm/base/render/clothes_wbs_light_n.vtf'
    'materials/models/ppm/base/render/cmark.vmt'
    'materials/models/ppm/base/render/horn.vmt'
    'materials/models/ppm/base/render/leg_grad1.vmt'
    'materials/models/ppm/base/render/leg_grad1.vtf'
    'materials/models/ppm/base/render/wings.vmt'
    'materials/models/ppm/base/tail_color_1.vmt'
    'materials/models/ppm/base/tail_color_2.vmt'
    'materials/models/ppm/base/teeth.vmt'
    'materials/models/ppm/base/teeth.vtf'
    'materials/models/ppm/base/tongue.vmt'
    'materials/models/ppm/base/tongue.vtf'
    'materials/models/ppm/base/wings.vmt'
    'materials/models/ppm/base/wings.vtf'
    'materials/models/ppm/base/wing_bat.vmt'
    'materials/models/ppm/base/wing_bat.vtf'
    'materials/models/ppm/base/wing_bat_skin.vmt'
    'materials/models/ppm/base/wing_bat_skin.vtf'
    'materials/models/ppm/cmarks/8ball.vmt'
    'materials/models/ppm/cmarks/8ball.vtf'
    'materials/models/ppm/cmarks/alarm.vmt'
    'materials/models/ppm/cmarks/alarm.vtf'
    'materials/models/ppm/cmarks/anarchy.vmt'
    'materials/models/ppm/cmarks/anarchy.vtf'
    'materials/models/ppm/cmarks/applej.vmt'
    'materials/models/ppm/cmarks/applej.vtf'
    'materials/models/ppm/cmarks/applem.vmt'
    'materials/models/ppm/cmarks/applem.vtf'
    'materials/models/ppm/cmarks/battery.vmt'
    'materials/models/ppm/cmarks/battery.vtf'
    'materials/models/ppm/cmarks/beer.vmt'
    'materials/models/ppm/cmarks/beer.vtf'
    'materials/models/ppm/cmarks/berryglass.vmt'
    'materials/models/ppm/cmarks/berryglass.vtf'
    'materials/models/ppm/cmarks/binaryfile.vmt'
    'materials/models/ppm/cmarks/binaryfile.vtf'
    'materials/models/ppm/cmarks/bits.vmt'
    'materials/models/ppm/cmarks/bits.vtf'
    'materials/models/ppm/cmarks/bon_bon.vmt'
    'materials/models/ppm/cmarks/bon_bon.vtf'
    'materials/models/ppm/cmarks/bulb.vmt'
    'materials/models/ppm/cmarks/bulb.vtf'
    'materials/models/ppm/cmarks/camera.vmt'
    'materials/models/ppm/cmarks/camera.vtf'
    'materials/models/ppm/cmarks/carrots.vmt'
    'materials/models/ppm/cmarks/carrots.vtf'
    'materials/models/ppm/cmarks/celestia.vmt'
    'materials/models/ppm/cmarks/celestia.vtf'
    'materials/models/ppm/cmarks/checkered.vmt'
    'materials/models/ppm/cmarks/checkered.vtf'
    'materials/models/ppm/cmarks/cloudy.vmt'
    'materials/models/ppm/cmarks/cloudy.vtf'
    'materials/models/ppm/cmarks/cube.vmt'
    'materials/models/ppm/cmarks/cube.vtf'
    'materials/models/ppm/cmarks/custom01.vmt'
    'materials/models/ppm/cmarks/custom01.vtf'
    'materials/models/ppm/cmarks/custom02.vmt'
    'materials/models/ppm/cmarks/custom02.vtf'
    'materials/models/ppm/cmarks/dawsome.vmt'
    'materials/models/ppm/cmarks/dawsome.vtf'
    'materials/models/ppm/cmarks/deathscythe.vmt'
    'materials/models/ppm/cmarks/deathscythe.vtf'
    'materials/models/ppm/cmarks/derpy.vmt'
    'materials/models/ppm/cmarks/derpy.vtf'
    'materials/models/ppm/cmarks/deskfan.vmt'
    'materials/models/ppm/cmarks/deskfan.vtf'
    'materials/models/ppm/cmarks/dice.vmt'
    'materials/models/ppm/cmarks/dice.vtf'
    'materials/models/ppm/cmarks/firezap.vmt'
    'materials/models/ppm/cmarks/firezap.vtf'
    'materials/models/ppm/cmarks/flames.vmt'
    'materials/models/ppm/cmarks/flames.vtf'
    'materials/models/ppm/cmarks/floppydisk.vmt'
    'materials/models/ppm/cmarks/floppydisk.vtf'
    'materials/models/ppm/cmarks/fluttershy.vmt'
    'materials/models/ppm/cmarks/fluttershy.vtf'
    'materials/models/ppm/cmarks/fruits.vmt'
    'materials/models/ppm/cmarks/fruits.vtf'
    'materials/models/ppm/cmarks/greentree.vmt'
    'materials/models/ppm/cmarks/greentree.vtf'
    'materials/models/ppm/cmarks/island.vmt'
    'materials/models/ppm/cmarks/island.vtf'
    'materials/models/ppm/cmarks/lightningstone.vmt'
    'materials/models/ppm/cmarks/lightningstone.vtf'
    'materials/models/ppm/cmarks/lumps.vmt'
    'materials/models/ppm/cmarks/lumps.vtf'
    'materials/models/ppm/cmarks/lyra.vmt'
    'materials/models/ppm/cmarks/lyra.vtf'
    'materials/models/ppm/cmarks/magichat.vmt'
    'materials/models/ppm/cmarks/magichat.vtf'
    'materials/models/ppm/cmarks/magichat02.vmt'
    'materials/models/ppm/cmarks/magichat02.vtf'
    'materials/models/ppm/cmarks/magnifier.vmt'
    'materials/models/ppm/cmarks/magnifier.vtf'
    'materials/models/ppm/cmarks/microphone.vmt'
    'materials/models/ppm/cmarks/microphone.vtf'
    'materials/models/ppm/cmarks/mine.vmt'
    'materials/models/ppm/cmarks/mine.vtf'
    'materials/models/ppm/cmarks/mirror.vmt'
    'materials/models/ppm/cmarks/mirror.vtf'
    'materials/models/ppm/cmarks/myon.vmt'
    'materials/models/ppm/cmarks/myon.vtf'
    'materials/models/ppm/cmarks/note.vmt'
    'materials/models/ppm/cmarks/note.vtf'
    'materials/models/ppm/cmarks/octavia.vmt'
    'materials/models/ppm/cmarks/octavia.vtf'
    'materials/models/ppm/cmarks/padlock.vmt'
    'materials/models/ppm/cmarks/padlock.vtf'
    'materials/models/ppm/cmarks/palette.vmt'
    'materials/models/ppm/cmarks/palette.vtf'
    'materials/models/ppm/cmarks/palette02.vmt'
    'materials/models/ppm/cmarks/palette02.vtf'
    'materials/models/ppm/cmarks/palette03.vmt'
    'materials/models/ppm/cmarks/palette03.vtf'
    'materials/models/ppm/cmarks/pankk.vmt'
    'materials/models/ppm/cmarks/pankk.vtf'
    'materials/models/ppm/cmarks/partiallycloudy.vmt'
    'materials/models/ppm/cmarks/partiallycloudy.vtf'
    'materials/models/ppm/cmarks/pinkie_pie.vmt'
    'materials/models/ppm/cmarks/pinkie_pie.vtf'
    'materials/models/ppm/cmarks/rainbow_dash.vmt'
    'materials/models/ppm/cmarks/rainbow_dash.vtf'
    'materials/models/ppm/cmarks/rarity.vmt'
    'materials/models/ppm/cmarks/rarity.vtf'
    'materials/models/ppm/cmarks/record.vmt'
    'materials/models/ppm/cmarks/record.vtf'
    'materials/models/ppm/cmarks/roadsign.vmt'
    'materials/models/ppm/cmarks/roadsign.vtf'
    'materials/models/ppm/cmarks/rosen.vmt'
    'materials/models/ppm/cmarks/rosen.vtf'
    'materials/models/ppm/cmarks/seasons.vmt'
    'materials/models/ppm/cmarks/seasons.vtf'
    'materials/models/ppm/cmarks/sflowers.vmt'
    'materials/models/ppm/cmarks/sflowers.vtf'
    'materials/models/ppm/cmarks/shoop.vmt'
    'materials/models/ppm/cmarks/shoop.vtf'
    'materials/models/ppm/cmarks/smiley.vmt'
    'materials/models/ppm/cmarks/smiley.vtf'
    'materials/models/ppm/cmarks/star.vmt'
    'materials/models/ppm/cmarks/star.vtf'
    'materials/models/ppm/cmarks/stoppedwatch.vmt'
    'materials/models/ppm/cmarks/stoppedwatch.vtf'
    'materials/models/ppm/cmarks/storm.vmt'
    'materials/models/ppm/cmarks/storm.vtf'
    'materials/models/ppm/cmarks/suit.vmt'
    'materials/models/ppm/cmarks/suit.vtf'
    'materials/models/ppm/cmarks/surfboard.vmt'
    'materials/models/ppm/cmarks/surfboard.vtf'
    'materials/models/ppm/cmarks/surfboard02.vmt'
    'materials/models/ppm/cmarks/surfboard02.vtf'
    'materials/models/ppm/cmarks/thunderstorm.vmt'
    'materials/models/ppm/cmarks/thunderstorm.vtf'
    'materials/models/ppm/cmarks/time.vmt'
    'materials/models/ppm/cmarks/time.vtf'
    'materials/models/ppm/cmarks/time2.vmt'
    'materials/models/ppm/cmarks/time2.vtf'
    'materials/models/ppm/cmarks/trixie.vmt'
    'materials/models/ppm/cmarks/trixie.vtf'
    'materials/models/ppm/cmarks/twilight.vmt'
    'materials/models/ppm/cmarks/twilight.vtf'
    'materials/models/ppm/cmarks/twistedclock.vmt'
    'materials/models/ppm/cmarks/twistedclock.vtf'
    'materials/models/ppm/cmarks/ussr.vmt'
    'materials/models/ppm/cmarks/ussr.vtf'
    'materials/models/ppm/cmarks/vault.vmt'
    'materials/models/ppm/cmarks/vault.vtf'
    'materials/models/ppm/cmarks/waters.vmt'
    'materials/models/ppm/cmarks/waters.vtf'
    'materials/models/ppm/cmarks/weegee.vmt'
    'materials/models/ppm/cmarks/weegee.vtf'
    'materials/models/ppm/cmarks/weer.vmt'
    'materials/models/ppm/cmarks/weer.vtf'
    'materials/models/ppm/cmarks/zecora.vmt'
    'materials/models/ppm/cmarks/zecora.vtf'
    'materials/models/ppm/partrender/body_freckles.png'
    'materials/models/ppm/partrender/body_headmask1.png'
    'materials/models/ppm/partrender/body_headstripes1.png'
    'materials/models/ppm/partrender/body_hooves1.png'
    'materials/models/ppm/partrender/body_hooves1_crit.png'
    'materials/models/ppm/partrender/body_hooves2.png'
    'materials/models/ppm/partrender/body_hooves2_crit.png'
    'materials/models/ppm/partrender/body_leggrad1.png'
    'materials/models/ppm/partrender/body_lines1.png'
    'materials/models/ppm/partrender/body_spots1.png'
    'materials/models/ppm/partrender/body_stripes1.png'
    'materials/models/ppm/partrender/dnmane_10_mask0.png'
    'materials/models/ppm/partrender/dnmane_10_mask1.png'
    'materials/models/ppm/partrender/dnmane_10_mask2.png'
    'materials/models/ppm/partrender/dnmane_11_mask0.png'
    'materials/models/ppm/partrender/dnmane_11_mask1.png'
    'materials/models/ppm/partrender/dnmane_12_mask0.png'
    'materials/models/ppm/partrender/dnmane_5_mask0.png'
    'materials/models/ppm/partrender/dnmane_8_mask0.png'
    'materials/models/ppm/partrender/dnmane_8_mask1.png'
    'materials/models/ppm/partrender/dnmane_9_mask0.png'
    'materials/models/ppm/partrender/dnmane_9_mask1.png'
    'materials/models/ppm/partrender/eye_effect.png'
    'materials/models/ppm/partrender/eye_grad.png'
    'materials/models/ppm/partrender/eye_line_l1.png'
    'materials/models/ppm/partrender/eye_line_l2.png'
    'materials/models/ppm/partrender/eye_line_r1.png'
    'materials/models/ppm/partrender/eye_line_r2.png'
    'materials/models/ppm/partrender/eye_oval.png'
    'materials/models/ppm/partrender/eye_oval_aperture.png'
    'materials/models/ppm/partrender/eye_reflection.png'
    'materials/models/ppm/partrender/null.png'
    'materials/models/ppm/partrender/null.vtf'
    'materials/models/ppm/partrender/tail_10_mask0.png'
    'materials/models/ppm/partrender/tail_11_mask0.png'
    'materials/models/ppm/partrender/tail_11_mask1.png'
    'materials/models/ppm/partrender/tail_11_mask2.png'
    'materials/models/ppm/partrender/tail_12_mask0.png'
    'materials/models/ppm/partrender/tail_12_mask1.png'
    'materials/models/ppm/partrender/tail_13_mask0.png'
    'materials/models/ppm/partrender/tail_14_mask0.png'
    'materials/models/ppm/partrender/tail_5_mask0.png'
    'materials/models/ppm/partrender/tail_8_mask0.png'
    'materials/models/ppm/partrender/tail_8_mask1.png'
    'materials/models/ppm/partrender/tail_8_mask2.png'
    'materials/models/ppm/partrender/tail_8_mask3.png'
    'materials/models/ppm/partrender/tail_8_mask4.png'
    'materials/models/ppm/partrender/upmane_10_mask0.png'
    'materials/models/ppm/partrender/upmane_11_mask0.png'
    'materials/models/ppm/partrender/upmane_11_mask1.png'
    'materials/models/ppm/partrender/upmane_11_mask2.png'
    'materials/models/ppm/partrender/upmane_12_mask0.png'
    'materials/models/ppm/partrender/upmane_13_mask0.png'
    'materials/models/ppm/partrender/upmane_14_mask0.png'
    'materials/models/ppm/partrender/upmane_15_mask0.png'
    'materials/models/ppm/partrender/upmane_5_mask0.png'
    'materials/models/ppm/partrender/upmane_6_mask0.png'
    'materials/models/ppm/partrender/upmane_8_mask0.png'
    'materials/models/ppm/partrender/upmane_8_mask1.png'
    'materials/models/ppm/partrender/upmane_9_mask0.png'
    'materials/models/ppm/partrender/upmane_9_mask1.png'
    'materials/models/ppm/partrender/upmane_9_mask2.png'
    'materials/models/ppm/texclothes/clothes_royalguard.png'
    'materials/models/ppm/texclothes/clothes_sbs_full.png'
    'materials/models/ppm/texclothes/clothes_sbs_light.png'
    'materials/models/ppm/texclothes/clothes_wbs_full.png'
    'materials/models/ppm/texclothes/clothes_wbs_light.png'
    'materials/models/ppm/texclothes/pony_socks.png'
    'materials/models/props_pony/ppm/ppm_socks/socks_lightwarp.vtf'
    'materials/models/props_pony/ppm/ppm_socks/socks_striped.vmt'
    'materials/models/props_pony/ppm/ppm_socks/socks_striped.vtf'
    'models/cppm/player_default_base.dx80.vtx'
    'models/cppm/player_default_base.dx90.vtx'
    'models/cppm/player_default_base.mdl'
    'models/cppm/player_default_base.phy'
    'models/cppm/player_default_base.sw.vtx'
    'models/cppm/player_default_base.vvd'
    'models/cppm/player_default_base_nj.dx80.vtx'
    'models/cppm/player_default_base_nj.dx90.vtx'
    'models/cppm/player_default_base_nj.mdl'
    'models/cppm/player_default_base_nj.phy'
    'models/cppm/player_default_base_nj.sw.vtx'
    'models/cppm/player_default_base_nj.vvd'
    'models/cppm/player_default_base_ragdoll.dx80.vtx'
    'models/cppm/player_default_base_ragdoll.dx90.vtx'
    'models/cppm/player_default_base_ragdoll.mdl'
    'models/cppm/player_default_base_ragdoll.phy'
    'models/cppm/player_default_base_ragdoll.sw.vtx'
    'models/cppm/player_default_base_ragdoll.vvd'
    'models/cppm/pony_anims.mdl'
    'models/cppm/pony_arms.dx80.vtx'
    'models/cppm/pony_arms.dx90.vtx'
    'models/cppm/pony_arms.mdl'
    'models/cppm/pony_arms.sw.vtx'
    'models/cppm/pony_arms.vvd'
    'models/ppm/hair/ppm_manesetlower01.dx80.vtx'
    'models/ppm/hair/ppm_manesetlower01.dx90.vtx'
    'models/ppm/hair/ppm_manesetlower01.mdl'
    'models/ppm/hair/ppm_manesetlower01.sw.vtx'
    'models/ppm/hair/ppm_manesetlower01.vvd'
    'models/ppm/hair/ppm_manesetupper01.dx80.vtx'
    'models/ppm/hair/ppm_manesetupper01.dx90.vtx'
    'models/ppm/hair/ppm_manesetupper01.mdl'
    'models/ppm/hair/ppm_manesetupper01.sw.vtx'
    'models/ppm/hair/ppm_manesetupper01.vvd'
    'models/ppm/hair/ppm_tailset01.dx80.vtx'
    'models/ppm/hair/ppm_tailset01.dx90.vtx'
    'models/ppm/hair/ppm_tailset01.mdl'
    'models/ppm/hair/ppm_tailset01.sw.vtx'
    'models/ppm/hair/ppm_tailset01.vvd'
    'models/ppm/player_default_base.dx80.vtx'
    'models/ppm/player_default_base.dx90.vtx'
    'models/ppm/player_default_base.mdl'
    'models/ppm/player_default_base.phy'
    'models/ppm/player_default_base.sw.vtx'
    'models/ppm/player_default_base.vvd'
    'models/ppm/player_default_base_new.dx80.vtx'
    'models/ppm/player_default_base_new.dx90.vtx'
    'models/ppm/player_default_base_new.mdl'
    'models/ppm/player_default_base_new.phy'
    'models/ppm/player_default_base_new.sw.vtx'
    'models/ppm/player_default_base_new.vvd'
    'models/ppm/player_default_base_nj.dx80.vtx'
    'models/ppm/player_default_base_nj.dx90.vtx'
    'models/ppm/player_default_base_nj.mdl'
    'models/ppm/player_default_base_nj.phy'
    'models/ppm/player_default_base_nj.sw.vtx'
    'models/ppm/player_default_base_nj.vvd'
    'models/ppm/player_default_base_ragdoll.dx80.vtx'
    'models/ppm/player_default_base_ragdoll.dx90.vtx'
    'models/ppm/player_default_base_ragdoll.mdl'
    'models/ppm/player_default_base_ragdoll.phy'
    'models/ppm/player_default_base_ragdoll.sw.vtx'
    'models/ppm/player_default_base_ragdoll.vvd'
    'models/ppm/pony_anims.mdl'
    'models/ppm/pony_high_anims.mdl'
    'models/ppm/pony_high_anims.phy'
    'models/props_pony/ppm/cosmetics/ppm_socks.dx80.vtx'
    'models/props_pony/ppm/cosmetics/ppm_socks.dx90.vtx'
    'models/props_pony/ppm/cosmetics/ppm_socks.mdl'
    'models/props_pony/ppm/cosmetics/ppm_socks.sw.vtx'
    'models/props_pony/ppm/cosmetics/ppm_socks.vvd'
}

resource.AddSingleFile(fil) for fil in *Files

--
-- Copyright (C) 2017 DBot
--
-- 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.
--

Files = {
    'materials/gui/pped_icon.png'
    'materials/gui/ppm2/emotes/anger.png'
    'materials/gui/ppm2/emotes/angry_tongue.png'
    'materials/gui/ppm2/emotes/big_grin.png'
    'materials/gui/ppm2/emotes/cat.png'
    'materials/gui/ppm2/emotes/sad.png'
    'materials/gui/ppm2/emotes/scrunch.png'
    'materials/gui/ppm2/emotes/sorry.png'
    'materials/gui/ppm2/emotes/tongue.png'
    'materials/gui/ppm2/emotes/wink_left.png'
    'materials/gui/ppm2/emotes/wink_right.png'
    'materials/models/ppm/base/body.vmt'
    'materials/models/ppm/base/body.vtf'
    'materials/models/ppm/base/bodyf.vmt'
    'materials/models/ppm/base/bodym.vmt'
    'materials/models/ppm/base/bodym.vtf'
    'materials/models/ppm/base/cmark.vmt'
    'materials/models/ppm/base/eyeball_l.vtf'
    'materials/models/ppm/base/eyeball_r.vtf'
    'materials/models/ppm/base/eyelashes.vmt'
    'materials/models/ppm/base/eyelashes.vtf'
    'materials/models/ppm/base/eye_l.vmt'
    'materials/models/ppm/base/eye_r.vmt'
    'materials/models/ppm/base/face/black.vtf'
    'materials/models/ppm/base/face/gray.vtf'
    'materials/models/ppm/base/face/p_base.vtf'
    'materials/models/ppm/base/face/p_base_r.vtf'
    'materials/models/ppm/base/face/p_bnbn.vtf'
    'materials/models/ppm/base/face/p_bnbn_r.vtf'
    'materials/models/ppm/base/face/p_drp.vtf'
    'materials/models/ppm/base/face/p_gold.vtf'
    'materials/models/ppm/base/face/p_green.vtf'
    'materials/models/ppm/base/face/p_green_r.vtf'
    'materials/models/ppm/base/face/p_luna.vtf'
    'materials/models/ppm/base/face/p_luna_r.vtf'
    'materials/models/ppm/base/face/p_purple.vtf'
    'materials/models/ppm/base/face/p_purple2.vtf'
    'materials/models/ppm/base/face/p_purple2_r.vtf'
    'materials/models/ppm/base/face/p_purple_r.vtf'
    'materials/models/ppm/base/face/p_rd.vtf'
    'materials/models/ppm/base/face/p_rd_r.vtf'
    'materials/models/ppm/base/face/p_tangelo.vtf'
    'materials/models/ppm/base/face/p_tangelo_r.vtf'
    'materials/models/ppm/base/face/tc00.vmt'
    'materials/models/ppm/base/face/tc01.vmt'
    'materials/models/ppm/base/face/tc02.vmt'
    'materials/models/ppm/base/face/tc03.vmt'
    'materials/models/ppm/base/face/tc04.vmt'
    'materials/models/ppm/base/face/tc05.vmt'
    'materials/models/ppm/base/face/tc06.vmt'
    'materials/models/ppm/base/face/tc07.vmt'
    'materials/models/ppm/base/face/tc08.vmt'
    'materials/models/ppm/base/face/tc09.vmt'
    'materials/models/ppm/base/face/white.vtf'
    'materials/models/ppm/base/hair_color_1.vmt'
    'materials/models/ppm/base/hair_color_2.vmt'
    'materials/models/ppm/base/horn.vmt'
    'materials/models/ppm/base/horn.vtf'
    'materials/models/ppm/base/mouth.vmt'
    'materials/models/ppm/base/mouth.vtf'
    'materials/models/ppm/base/pupil_l.vtf'
    'materials/models/ppm/base/pupil_r.vtf'
    'materials/models/ppm/base/render/bodyf.vmt'
    'materials/models/ppm/base/render/bodym.vmt'
    'materials/models/ppm/base/render/body_alpha_vsm.vtf'
    'materials/models/ppm/base/render/body_n.vtf'
    'materials/models/ppm/base/render/clothes_sbs_full.vmt'
    'materials/models/ppm/base/render/clothes_sbs_full.vtf'
    'materials/models/ppm/base/render/clothes_wbs.vmt'
    'materials/models/ppm/base/render/clothes_wbs.vtf'
    'materials/models/ppm/base/render/clothes_wbs_full.vmt'
    'materials/models/ppm/base/render/clothes_wbs_full.vtf'
    'materials/models/ppm/base/render/clothes_wbs_full_n.vtf'
    'materials/models/ppm/base/render/clothes_wbs_light.vtf'
    'materials/models/ppm/base/render/clothes_wbs_light_n.vtf'
    'materials/models/ppm/base/render/cmark.vmt'
    'materials/models/ppm/base/render/horn.vmt'
    'materials/models/ppm/base/render/leg_grad1.vmt'
    'materials/models/ppm/base/render/leg_grad1.vtf'
    'materials/models/ppm/base/render/wings.vmt'
    'materials/models/ppm/base/tail_color_1.vmt'
    'materials/models/ppm/base/tail_color_2.vmt'
    'materials/models/ppm/base/teeth.vmt'
    'materials/models/ppm/base/teeth.vtf'
    'materials/models/ppm/base/tongue.vmt'
    'materials/models/ppm/base/tongue.vtf'
    'materials/models/ppm/base/wings.vmt'
    'materials/models/ppm/base/wings.vtf'
    'materials/models/ppm/base/wing_bat.vmt'
    'materials/models/ppm/base/wing_bat.vtf'
    'materials/models/ppm/base/wing_bat_skin.vmt'
    'materials/models/ppm/base/wing_bat_skin.vtf'
    'materials/models/ppm/cmarks/8ball.vmt'
    'materials/models/ppm/cmarks/8ball.vtf'
    'materials/models/ppm/cmarks/alarm.vmt'
    'materials/models/ppm/cmarks/alarm.vtf'
    'materials/models/ppm/cmarks/anarchy.vmt'
    'materials/models/ppm/cmarks/anarchy.vtf'
    'materials/models/ppm/cmarks/applej.vmt'
    'materials/models/ppm/cmarks/applej.vtf'
    'materials/models/ppm/cmarks/applem.vmt'
    'materials/models/ppm/cmarks/applem.vtf'
    'materials/models/ppm/cmarks/battery.vmt'
    'materials/models/ppm/cmarks/battery.vtf'
    'materials/models/ppm/cmarks/beer.vmt'
    'materials/models/ppm/cmarks/beer.vtf'
    'materials/models/ppm/cmarks/berryglass.vmt'
    'materials/models/ppm/cmarks/berryglass.vtf'
    'materials/models/ppm/cmarks/binaryfile.vmt'
    'materials/models/ppm/cmarks/binaryfile.vtf'
    'materials/models/ppm/cmarks/bits.vmt'
    'materials/models/ppm/cmarks/bits.vtf'
    'materials/models/ppm/cmarks/bon_bon.vmt'
    'materials/models/ppm/cmarks/bon_bon.vtf'
    'materials/models/ppm/cmarks/bulb.vmt'
    'materials/models/ppm/cmarks/bulb.vtf'
    'materials/models/ppm/cmarks/camera.vmt'
    'materials/models/ppm/cmarks/camera.vtf'
    'materials/models/ppm/cmarks/carrots.vmt'
    'materials/models/ppm/cmarks/carrots.vtf'
    'materials/models/ppm/cmarks/celestia.vmt'
    'materials/models/ppm/cmarks/celestia.vtf'
    'materials/models/ppm/cmarks/checkered.vmt'
    'materials/models/ppm/cmarks/checkered.vtf'
    'materials/models/ppm/cmarks/cloudy.vmt'
    'materials/models/ppm/cmarks/cloudy.vtf'
    'materials/models/ppm/cmarks/cube.vmt'
    'materials/models/ppm/cmarks/cube.vtf'
    'materials/models/ppm/cmarks/custom01.vmt'
    'materials/models/ppm/cmarks/custom01.vtf'
    'materials/models/ppm/cmarks/custom02.vmt'
    'materials/models/ppm/cmarks/custom02.vtf'
    'materials/models/ppm/cmarks/dawsome.vmt'
    'materials/models/ppm/cmarks/dawsome.vtf'
    'materials/models/ppm/cmarks/deathscythe.vmt'
    'materials/models/ppm/cmarks/deathscythe.vtf'
    'materials/models/ppm/cmarks/derpy.vmt'
    'materials/models/ppm/cmarks/derpy.vtf'
    'materials/models/ppm/cmarks/deskfan.vmt'
    'materials/models/ppm/cmarks/deskfan.vtf'
    'materials/models/ppm/cmarks/dice.vmt'
    'materials/models/ppm/cmarks/dice.vtf'
    'materials/models/ppm/cmarks/firezap.vmt'
    'materials/models/ppm/cmarks/firezap.vtf'
    'materials/models/ppm/cmarks/flames.vmt'
    'materials/models/ppm/cmarks/flames.vtf'
    'materials/models/ppm/cmarks/floppydisk.vmt'
    'materials/models/ppm/cmarks/floppydisk.vtf'
    'materials/models/ppm/cmarks/fluttershy.vmt'
    'materials/models/ppm/cmarks/fluttershy.vtf'
    'materials/models/ppm/cmarks/fruits.vmt'
    'materials/models/ppm/cmarks/fruits.vtf'
    'materials/models/ppm/cmarks/greentree.vmt'
    'materials/models/ppm/cmarks/greentree.vtf'
    'materials/models/ppm/cmarks/island.vmt'
    'materials/models/ppm/cmarks/island.vtf'
    'materials/models/ppm/cmarks/lightningstone.vmt'
    'materials/models/ppm/cmarks/lightningstone.vtf'
    'materials/models/ppm/cmarks/lumps.vmt'
    'materials/models/ppm/cmarks/lumps.vtf'
    'materials/models/ppm/cmarks/lyra.vmt'
    'materials/models/ppm/cmarks/lyra.vtf'
    'materials/models/ppm/cmarks/magichat.vmt'
    'materials/models/ppm/cmarks/magichat.vtf'
    'materials/models/ppm/cmarks/magichat02.vmt'
    'materials/models/ppm/cmarks/magichat02.vtf'
    'materials/models/ppm/cmarks/magnifier.vmt'
    'materials/models/ppm/cmarks/magnifier.vtf'
    'materials/models/ppm/cmarks/microphone.vmt'
    'materials/models/ppm/cmarks/microphone.vtf'
    'materials/models/ppm/cmarks/mine.vmt'
    'materials/models/ppm/cmarks/mine.vtf'
    'materials/models/ppm/cmarks/mirror.vmt'
    'materials/models/ppm/cmarks/mirror.vtf'
    'materials/models/ppm/cmarks/myon.vmt'
    'materials/models/ppm/cmarks/myon.vtf'
    'materials/models/ppm/cmarks/note.vmt'
    'materials/models/ppm/cmarks/note.vtf'
    'materials/models/ppm/cmarks/octavia.vmt'
    'materials/models/ppm/cmarks/octavia.vtf'
    'materials/models/ppm/cmarks/padlock.vmt'
    'materials/models/ppm/cmarks/padlock.vtf'
    'materials/models/ppm/cmarks/palette.vmt'
    'materials/models/ppm/cmarks/palette.vtf'
    'materials/models/ppm/cmarks/palette02.vmt'
    'materials/models/ppm/cmarks/palette02.vtf'
    'materials/models/ppm/cmarks/palette03.vmt'
    'materials/models/ppm/cmarks/palette03.vtf'
    'materials/models/ppm/cmarks/pankk.vmt'
    'materials/models/ppm/cmarks/pankk.vtf'
    'materials/models/ppm/cmarks/partiallycloudy.vmt'
    'materials/models/ppm/cmarks/partiallycloudy.vtf'
    'materials/models/ppm/cmarks/pinkie_pie.vmt'
    'materials/models/ppm/cmarks/pinkie_pie.vtf'
    'materials/models/ppm/cmarks/rainbow_dash.vmt'
    'materials/models/ppm/cmarks/rainbow_dash.vtf'
    'materials/models/ppm/cmarks/rarity.vmt'
    'materials/models/ppm/cmarks/rarity.vtf'
    'materials/models/ppm/cmarks/record.vmt'
    'materials/models/ppm/cmarks/record.vtf'
    'materials/models/ppm/cmarks/roadsign.vmt'
    'materials/models/ppm/cmarks/roadsign.vtf'
    'materials/models/ppm/cmarks/rosen.vmt'
    'materials/models/ppm/cmarks/rosen.vtf'
    'materials/models/ppm/cmarks/seasons.vmt'
    'materials/models/ppm/cmarks/seasons.vtf'
    'materials/models/ppm/cmarks/sflowers.vmt'
    'materials/models/ppm/cmarks/sflowers.vtf'
    'materials/models/ppm/cmarks/shoop.vmt'
    'materials/models/ppm/cmarks/shoop.vtf'
    'materials/models/ppm/cmarks/smiley.vmt'
    'materials/models/ppm/cmarks/smiley.vtf'
    'materials/models/ppm/cmarks/star.vmt'
    'materials/models/ppm/cmarks/star.vtf'
    'materials/models/ppm/cmarks/stoppedwatch.vmt'
    'materials/models/ppm/cmarks/stoppedwatch.vtf'
    'materials/models/ppm/cmarks/storm.vmt'
    'materials/models/ppm/cmarks/storm.vtf'
    'materials/models/ppm/cmarks/suit.vmt'
    'materials/models/ppm/cmarks/suit.vtf'
    'materials/models/ppm/cmarks/surfboard.vmt'
    'materials/models/ppm/cmarks/surfboard.vtf'
    'materials/models/ppm/cmarks/surfboard02.vmt'
    'materials/models/ppm/cmarks/surfboard02.vtf'
    'materials/models/ppm/cmarks/thunderstorm.vmt'
    'materials/models/ppm/cmarks/thunderstorm.vtf'
    'materials/models/ppm/cmarks/time.vmt'
    'materials/models/ppm/cmarks/time.vtf'
    'materials/models/ppm/cmarks/time2.vmt'
    'materials/models/ppm/cmarks/time2.vtf'
    'materials/models/ppm/cmarks/trixie.vmt'
    'materials/models/ppm/cmarks/trixie.vtf'
    'materials/models/ppm/cmarks/twilight.vmt'
    'materials/models/ppm/cmarks/twilight.vtf'
    'materials/models/ppm/cmarks/twistedclock.vmt'
    'materials/models/ppm/cmarks/twistedclock.vtf'
    'materials/models/ppm/cmarks/ussr.vmt'
    'materials/models/ppm/cmarks/ussr.vtf'
    'materials/models/ppm/cmarks/vault.vmt'
    'materials/models/ppm/cmarks/vault.vtf'
    'materials/models/ppm/cmarks/waters.vmt'
    'materials/models/ppm/cmarks/waters.vtf'
    'materials/models/ppm/cmarks/weegee.vmt'
    'materials/models/ppm/cmarks/weegee.vtf'
    'materials/models/ppm/cmarks/weer.vmt'
    'materials/models/ppm/cmarks/weer.vtf'
    'materials/models/ppm/cmarks/zecora.vmt'
    'materials/models/ppm/cmarks/zecora.vtf'
    'materials/models/ppm/partrender/body_freckles.png'
    'materials/models/ppm/partrender/body_headmask1.png'
    'materials/models/ppm/partrender/body_headstripes1.png'
    'materials/models/ppm/partrender/body_hooves1.png'
    'materials/models/ppm/partrender/body_hooves1_crit.png'
    'materials/models/ppm/partrender/body_hooves2.png'
    'materials/models/ppm/partrender/body_hooves2_crit.png'
    'materials/models/ppm/partrender/body_leggrad1.png'
    'materials/models/ppm/partrender/body_lines1.png'
    'materials/models/ppm/partrender/body_spots1.png'
    'materials/models/ppm/partrender/body_stripes1.png'
    'materials/models/ppm/partrender/dnmane_10_mask0.png'
    'materials/models/ppm/partrender/dnmane_10_mask1.png'
    'materials/models/ppm/partrender/dnmane_10_mask2.png'
    'materials/models/ppm/partrender/dnmane_11_mask0.png'
    'materials/models/ppm/partrender/dnmane_11_mask1.png'
    'materials/models/ppm/partrender/dnmane_12_mask0.png'
    'materials/models/ppm/partrender/dnmane_5_mask0.png'
    'materials/models/ppm/partrender/dnmane_8_mask0.png'
    'materials/models/ppm/partrender/dnmane_8_mask1.png'
    'materials/models/ppm/partrender/dnmane_9_mask0.png'
    'materials/models/ppm/partrender/dnmane_9_mask1.png'
    'materials/models/ppm/partrender/eye_effect.png'
    'materials/models/ppm/partrender/eye_grad.png'
    'materials/models/ppm/partrender/eye_line_l1.png'
    'materials/models/ppm/partrender/eye_line_l2.png'
    'materials/models/ppm/partrender/eye_line_r1.png'
    'materials/models/ppm/partrender/eye_line_r2.png'
    'materials/models/ppm/partrender/eye_oval.png'
    'materials/models/ppm/partrender/eye_oval_aperture.png'
    'materials/models/ppm/partrender/eye_reflection.png'
    'materials/models/ppm/partrender/null.png'
    'materials/models/ppm/partrender/null.vtf'
    'materials/models/ppm/partrender/tail_10_mask0.png'
    'materials/models/ppm/partrender/tail_11_mask0.png'
    'materials/models/ppm/partrender/tail_11_mask1.png'
    'materials/models/ppm/partrender/tail_11_mask2.png'
    'materials/models/ppm/partrender/tail_12_mask0.png'
    'materials/models/ppm/partrender/tail_12_mask1.png'
    'materials/models/ppm/partrender/tail_13_mask0.png'
    'materials/models/ppm/partrender/tail_14_mask0.png'
    'materials/models/ppm/partrender/tail_5_mask0.png'
    'materials/models/ppm/partrender/tail_8_mask0.png'
    'materials/models/ppm/partrender/tail_8_mask1.png'
    'materials/models/ppm/partrender/tail_8_mask2.png'
    'materials/models/ppm/partrender/tail_8_mask3.png'
    'materials/models/ppm/partrender/tail_8_mask4.png'
    'materials/models/ppm/partrender/upmane_10_mask0.png'
    'materials/models/ppm/partrender/upmane_11_mask0.png'
    'materials/models/ppm/partrender/upmane_11_mask1.png'
    'materials/models/ppm/partrender/upmane_11_mask2.png'
    'materials/models/ppm/partrender/upmane_12_mask0.png'
    'materials/models/ppm/partrender/upmane_13_mask0.png'
    'materials/models/ppm/partrender/upmane_14_mask0.png'
    'materials/models/ppm/partrender/upmane_15_mask0.png'
    'materials/models/ppm/partrender/upmane_5_mask0.png'
    'materials/models/ppm/partrender/upmane_6_mask0.png'
    'materials/models/ppm/partrender/upmane_8_mask0.png'
    'materials/models/ppm/partrender/upmane_8_mask1.png'
    'materials/models/ppm/partrender/upmane_9_mask0.png'
    'materials/models/ppm/partrender/upmane_9_mask1.png'
    'materials/models/ppm/partrender/upmane_9_mask2.png'
    'materials/models/ppm/texclothes/clothes_royalguard.png'
    'materials/models/ppm/texclothes/clothes_sbs_full.png'
    'materials/models/ppm/texclothes/clothes_sbs_light.png'
    'materials/models/ppm/texclothes/clothes_wbs_full.png'
    'materials/models/ppm/texclothes/clothes_wbs_light.png'
    'materials/models/ppm/texclothes/pony_socks.png'
    'materials/models/props_pony/ppm/ppm_socks/socks_lightwarp.vtf'
    'materials/models/props_pony/ppm/ppm_socks/socks_striped.vmt'
    'materials/models/props_pony/ppm/ppm_socks/socks_striped.vtf'
    'models/cppm/player_default_base.dx80.vtx'
    'models/cppm/player_default_base.dx90.vtx'
    'models/cppm/player_default_base.mdl'
    'models/cppm/player_default_base.phy'
    'models/cppm/player_default_base.sw.vtx'
    'models/cppm/player_default_base.vvd'
    'models/cppm/player_default_base_nj.dx80.vtx'
    'models/cppm/player_default_base_nj.dx90.vtx'
    'models/cppm/player_default_base_nj.mdl'
    'models/cppm/player_default_base_nj.phy'
    'models/cppm/player_default_base_nj.sw.vtx'
    'models/cppm/player_default_base_nj.vvd'
    'models/cppm/player_default_base_ragdoll.dx80.vtx'
    'models/cppm/player_default_base_ragdoll.dx90.vtx'
    'models/cppm/player_default_base_ragdoll.mdl'
    'models/cppm/player_default_base_ragdoll.phy'
    'models/cppm/player_default_base_ragdoll.sw.vtx'
    'models/cppm/player_default_base_ragdoll.vvd'
    'models/cppm/pony_anims.mdl'
    'models/cppm/pony_arms.dx80.vtx'
    'models/cppm/pony_arms.dx90.vtx'
    'models/cppm/pony_arms.mdl'
    'models/cppm/pony_arms.sw.vtx'
    'models/cppm/pony_arms.vvd'
    'models/ppm/hair/ppm_manesetlower01.dx80.vtx'
    'models/ppm/hair/ppm_manesetlower01.dx90.vtx'
    'models/ppm/hair/ppm_manesetlower01.mdl'
    'models/ppm/hair/ppm_manesetlower01.sw.vtx'
    'models/ppm/hair/ppm_manesetlower01.vvd'
    'models/ppm/hair/ppm_manesetupper01.dx80.vtx'
    'models/ppm/hair/ppm_manesetupper01.dx90.vtx'
    'models/ppm/hair/ppm_manesetupper01.mdl'
    'models/ppm/hair/ppm_manesetupper01.sw.vtx'
    'models/ppm/hair/ppm_manesetupper01.vvd'
    'models/ppm/hair/ppm_tailset01.dx80.vtx'
    'models/ppm/hair/ppm_tailset01.dx90.vtx'
    'models/ppm/hair/ppm_tailset01.mdl'
    'models/ppm/hair/ppm_tailset01.sw.vtx'
    'models/ppm/hair/ppm_tailset01.vvd'
    'models/ppm/player_default_base.dx80.vtx'
    'models/ppm/player_default_base.dx90.vtx'
    'models/ppm/player_default_base.mdl'
    'models/ppm/player_default_base.phy'
    'models/ppm/player_default_base.sw.vtx'
    'models/ppm/player_default_base.vvd'
    'models/ppm/player_default_base_new.dx80.vtx'
    'models/ppm/player_default_base_new.dx90.vtx'
    'models/ppm/player_default_base_new.mdl'
    'models/ppm/player_default_base_new.phy'
    'models/ppm/player_default_base_new.sw.vtx'
    'models/ppm/player_default_base_new.vvd'
    'models/ppm/player_default_base_nj.dx80.vtx'
    'models/ppm/player_default_base_nj.dx90.vtx'
    'models/ppm/player_default_base_nj.mdl'
    'models/ppm/player_default_base_nj.phy'
    'models/ppm/player_default_base_nj.sw.vtx'
    'models/ppm/player_default_base_nj.vvd'
    'models/ppm/player_default_base_ragdoll.dx80.vtx'
    'models/ppm/player_default_base_ragdoll.dx90.vtx'
    'models/ppm/player_default_base_ragdoll.mdl'
    'models/ppm/player_default_base_ragdoll.phy'
    'models/ppm/player_default_base_ragdoll.sw.vtx'
    'models/ppm/player_default_base_ragdoll.vvd'
    'models/ppm/pony_anims.mdl'
    'models/ppm/pony_high_anims.mdl'
    'models/ppm/pony_high_anims.phy'
    'models/props_pony/ppm/cosmetics/ppm_socks.dx80.vtx'
    'models/props_pony/ppm/cosmetics/ppm_socks.dx90.vtx'
    'models/props_pony/ppm/cosmetics/ppm_socks.mdl'
    'models/props_pony/ppm/cosmetics/ppm_socks.sw.vtx'
    'models/props_pony/ppm/cosmetics/ppm_socks.vvd'
}

resource.AddSingleFile(fil) for fil in *Files


chopra: use util

chopra: use util

Former-commit-id: 0324fcced9f10e48db63e697e4e3ebd1e0e3f836 [formerly 209f1c54cecefff6c3c56eb1eedae3ac0151a979]
Former-commit-id: 9fd03b50af09e58c7da0d45fdd6512a6ec412460

PRIVMSG:
  '^%pchopra$': =>
    ivar2.util.simplehttp 'http://www.wisdomofchopra.com/iframe.php', (html) ->
       quote = html\match [[<meta property="og:description" content="'(.+)' www.wisdomofchopra.com" />]]
       if quote
         say quote

simplehttp = require 'simplehttp'

PRIVMSG:
  '^%pchopra$': (source, destination) =>
    simplehttp 'http://www.wisdomofchopra.com/iframe.php', (html) ->
       quote = html\match [[<meta property="og:description" content="'(.+)' www.wisdomofchopra.com" />]]
       if quote
         say quote


Inspector: attach frames to output times by default.

-- This library is unlicensed under CC0
local requireffi, ffi, looseVersionCompare
versionRecord = '0.7.0'

haveDepCtrl, DependencyControl = pcall require, 'l0.DependencyControl'

if haveDepCtrl
	versionRecord = DependencyControl( {
		name: "SubInspector",
		version: versionRecord,
		description: "Provides low level inspection and analysis of subtitles post-rasterization.",
		author: "torque",
		url: "https://github.com/TypesettingTools/SubInspector",
		moduleName: "SubInspector.Inspector",
		feed: "https://raw.githubusercontent.com/TypesettingTools/SubInspector/master/DependencyControl.json",
		{
			{ "ffi" }
			{ "requireffi.requireffi", version: "0.1.1" }
		}
	} )

	SIVersionCompat = DependencyControl( {
		moduleName: "SubInspector.Compat",
		version: "0.5.1",
		virtual: true
	} )

	looseVersionCompare = ( ASSIVersion ) ->
		siVer = DependencyControl( { moduleName: "SubInspector.Lib", version: ASSIVersion, virtual: true } )
		unless SIVersionCompat\checkVersion siVer, "major"
			return nil, ("Inspector.moon library is too old. Must be v%s.")\format siVer\getVersionString nil, "major"
		unless siVer\checkVersion SIVersionCompat, "minor"
			return nil, ("libSubInspector library is too old. Must be v%s compatible.")\format SIVersionCompat\getVersionString nil, "minor"

		return true

	ffi, requireffi = versionRecord\requireModules!

else
	ffi  = require 'ffi'
	requireffi = require 'requireffi.requireffi'
	SIVersionCompat = 0x000501

	versionComponents = ( version ) ->
		return (version / 65536) % 256, (version / 256) % 256, version % 256

	looseVersionCompare = ( ASSIVersion ) ->
		lmajor, lminor, lpatch = versionComponents ASSIVersion
		smajor, sminor, spatch = versionComponents SIVersionCompat
		if smajor != lmajor
			return nil, ("Major version mismatch. Got %d, wanted %d.")\format lmajor, smajor
		if sminor > lminor
			return nil, ("libSubInspector library is too old. Must be v%d.%d.%d compatible.")\format smajor, sminor, spatch

		return true

ffi.cdef( [[
typedef struct {
	int x, y;
	unsigned int w, h;
	uint32_t hash;
	uint8_t solid;
} SI_Rect;

uint32_t    si_getVersion( void );
const char* si_getErrorString( void* );
void*       si_init( int, int, const char*, const char* );
void        si_changeResolution( void*, int, int );
void        si_reloadFonts( void*, const char*, const char* );
int         si_setHeader( void*, const char*, size_t );
int         si_setScript( void*, const char*, size_t );
int         si_calculateBounds( void*, SI_Rect*, const int32_t*, const uint32_t );
void        si_cleanup( void* );
]] )

SubInspector, libraryPath = requireffi( 'SubInspector.Inspector.SubInspector' )

log = ( message, ... ) ->
	aegisub.log 2, message .. '\n', ...

collectHeader = ( subtitles ) =>
	scriptHeader = {
		"[Script Info]"
	}

	-- These are the only header fields that actually affect the way ASS
	-- is rendered. I don't actually know if ScriptType matters.
	infoFields = {
		PlayResX:   true
		PlayResY:   true
		WrapStyle:  true
		ScriptType: true
		ScaledBorderAndShadow: true
	}

	styles = { }

	seenStyles = false
	resX = 640
	resY = 480

	-- This loop assumes the subtitle script is nicely organized in the
	-- order [Script Info] -> [V4+ Styles] -> [Events]. This isn't
	-- guaranteed for scripts floating around in the wild, but fortunately
	-- Aegisub 3.2 seems to do a very good job of ensuring this order when
	-- a script is loaded. In other words, this loop is probably only safe
	-- to do from within automation.
	for index = 1, #subtitles
		with line = subtitles[index]
			if "info" == .class
				if infoFields[.key]
					table.insert scriptHeader, .raw

				if "PlayResX" == .key
					resX = tonumber .value
				elseif "PlayResY" == .key
					resY = tonumber .value

			elseif "style" == .class
				unless seenStyles
					table.insert scriptHeader, "[V4+ Styles]\n"
					seenStyles = true

				styles[.name] = .raw

			elseif "dialogue" == .class
				break

	-- If a video is loaded, use its resolution instead of the script's
	-- resolution. Don't use low-resolution workraws for typesetting!
	vidResX, vidResY = aegisub.video_size!
	if vidResX and (vidResX != resX or vidResY != resY)
		@logFunc "Script and loaded video resolution mismatch, preferring video."

	@resX = vidResX or resX
	@resY = vidResY or resY

	@header = table.concat scriptHeader, '\n'
	@styles = styles

validateRect = ( rect ) ->
	bounds = {
		x: tonumber rect.x
		y: tonumber rect.y
		w: tonumber rect.w
		h: tonumber rect.h
		hash: tonumber rect.hash
		solid: (rect.solid == 1)
	}

	if bounds.w == 0 or bounds.h == 0
		return false
	else
		return bounds

defaultTimes = ( lines ) ->
	ffms = aegisub.frame_from_ms
	msff = aegisub.ms_from_frame

	seenTimes = { }
	times = { }
	hasFrames = ffms 0

	if hasFrames
		times.frames = { }
		for line in *lines
			with line
				for frame = ffms( .start_time ), .si_exhaustive == true and ffms( .end_time ) - 1 or ffms( .start_time )
					frameTime = math.floor 0.5*( msff( frame ) + msff( frame + 1 ) )
					unless seenTimes[frameTime]
						table.insert times.frames, frame
						table.insert times, frameTime
						seenTimes[frameTime] = true
	else
		for line in *lines
			with line
				unless seenTimes[.start_time]
					table.insert times, .start_time
					seenTimes[.start_time] = true

	-- This will only happen if all lines are displayed for 0 frames.
	unless 0 < #times
		return false
	else
		return times

addStyles = ( line, scriptText, seenStyles ) =>
	if @styles[line.style] and not seenStyles[line.style]
		table.insert scriptText, @styles[line.style]
		seenStyles[line.style] = true

	line.text\gsub "{(.-)}", ( tagBlock ) ->
		tagBlock\gsub "\\r([^\\}]*)", ( styleName ) ->
			if 0 < #styleName and @styles[styleName] and not seenStyles[styleName]
				table.insert scriptText, @styles[styleName]
				seenStyles[styleName] = true

class Inspector
	@version = versionRecord

	new: ( subtitles = error( "You must provide the subtitles object." ), fcConfig = libraryPath .. "fonts.conf", fontDir = aegisub.decode_path( '?script/fonts' ), logFunc = log ) =>

		success, message = looseVersionCompare SubInspector.si_getVersion!
		unless success
			return nil, message

		inspectorFree = ( inspector ) -> SubInspector.si_cleanup inspector

		@inspector = ffi.gc SubInspector.si_init( 1, 1, fcConfig, fontDir ), inspectorFree

		assert @inspector, "SubInspector C initialization failed."

		@fontDir = fontDir
		@fcConfig = fcConfig
		@logFunc = logFunc

		success, message = @updateHeader subtitles
		assert success, message

	updateHeader: ( subtitles ) =>
		if nil == subtitles
			return nil, "You must provide the subtitles object."

		collectHeader @, subtitles
		SubInspector.si_changeResolution @inspector, @resX, @resY

		if SubInspector.si_setHeader( @inspector, @header, #@header ) != 0
			return nil, "Failed to set header.\n" .. ffi.string SubInspector.si_getErrorString @inspector

		return true

	reloadFonts: ( fcConfig = @fcConfig, fontDir = @fontDir ) =>
		SubInspector.si_reloadFonts @inspector, fcConfig, fontDir
		@fontDir = fontDir
		@fcConfig = fcConfig

	-- Arguments:
	-- subtitles: the subtitles object that Aegisub passes to the macro.

	-- line: an array-like table of line tables that have at least the
	--       fields `start_time`, `text`, `end_time` and `raw`. `raw` is
	--       mandatory in all cases. `start_time` and `end_time` are only
	--       necessary if a table of times to render the line is not
	--       provided and a video is loaded. Allows rendering 1 or more
	--       lines simultaneously.

	-- times: a table of times (in milliseconds) to render the line at.
	--        Defaults to the start time of the line unless there is a video
	--        loaded and the line contains the field line.si_exhaustive =
	--        true, in which case it defaults to every single frame that the
	--        line is displayed.

	-- Returns:
	-- An array-like table of bounding boxes, and an array-like table of
	-- render times. The two tables are the same length. If multiple lines
	-- are passed, the bounding box for a given time is the combined
	-- bounding boxes of all the lines rendered at that time.

	-- Error Handling:
	-- If an error is encountered, getBounds returns nil and an error string,
	-- which is typical for lua error reporting. In order to distinguish
	-- between an error and a valid false return, users should make sure
	-- they actually compare result to nil and false, rather than just
	-- checking that the result is not falsy.

	getBounds: ( lines, times = defaultTimes lines ) =>
		unless times
			return nil, "The render times table was empty."

		for i = 1,#lines
			line = lines[i]
			if nil == line.raw
				if line.createRaw
					line\createRaw!
				else
					return nil, "line.raw is missing from line #{i}."

		scriptText = { }
		seenStyles = { }
		if @styles.Default
			seenStyles.Default = true
			table.insert scriptText, @styles.Default

		for line in *lines
			addStyles @, line, scriptText, seenStyles

		table.insert scriptText, '[Events]'

		for line in *lines
			table.insert scriptText, line.raw

		scriptString = table.concat scriptText, '\n'
		if 0 < SubInspector.si_setScript @inspector, scriptString, #scriptString
			return nil, "Could not set script" .. ffi.string SubInspector.si_getErrorString @inspector

		renderCount = #times
		cTimes = ffi.new 'int32_t[?]', renderCount
		cRects = ffi.new 'SI_Rect[?]', renderCount

		for i = 0, renderCount - 1
			cTimes[i] = times[i + 1]

		if 0 < SubInspector.si_calculateBounds @inspector, cRects, cTimes, renderCount
			return nil, "Error calculating bounds" .. ffi.string SubInspector.si_getErrorString @inspector

		rects = { }
		for i = 0, renderCount - 1
			table.insert rects, validateRect cRects[i]

		return rects, times

if haveDepCtrl
	return versionRecord\register Inspector
else
	return Inspector

-- This library is unlicensed under CC0
local requireffi, ffi, looseVersionCompare
versionRecord = '0.7.0'

haveDepCtrl, DependencyControl = pcall require, 'l0.DependencyControl'

if haveDepCtrl
	versionRecord = DependencyControl( {
		name: "SubInspector",
		version: versionRecord,
		description: "Provides low level inspection and analysis of subtitles post-rasterization.",
		author: "torque",
		url: "https://github.com/TypesettingTools/SubInspector",
		moduleName: "SubInspector.Inspector",
		feed: "https://raw.githubusercontent.com/TypesettingTools/SubInspector/master/DependencyControl.json",
		{
			{ "ffi" }
			{ "requireffi.requireffi", version: "0.1.1" }
		}
	} )

	SIVersionCompat = DependencyControl( {
		moduleName: "SubInspector.Compat",
		version: "0.5.1",
		virtual: true
	} )

	looseVersionCompare = ( ASSIVersion ) ->
		siVer = DependencyControl( { moduleName: "SubInspector.Lib", version: ASSIVersion, virtual: true } )
		unless SIVersionCompat\checkVersion siVer, "major"
			return nil, ("Inspector.moon library is too old. Must be v%s.")\format siVer\getVersionString nil, "major"
		unless siVer\checkVersion SIVersionCompat, "minor"
			return nil, ("libSubInspector library is too old. Must be v%s compatible.")\format SIVersionCompat\getVersionString nil, "minor"

		return true

	ffi, requireffi = versionRecord\requireModules!

else
	ffi  = require 'ffi'
	requireffi = require 'requireffi.requireffi'
	SIVersionCompat = 0x000501

	versionComponents = ( version ) ->
		return (version / 65536) % 256, (version / 256) % 256, version % 256

	looseVersionCompare = ( ASSIVersion ) ->
		lmajor, lminor, lpatch = versionComponents ASSIVersion
		smajor, sminor, spatch = versionComponents SIVersionCompat
		if smajor != lmajor
			return nil, ("Major version mismatch. Got %d, wanted %d.")\format lmajor, smajor
		if sminor > lminor
			return nil, ("libSubInspector library is too old. Must be v%d.%d.%d compatible.")\format smajor, sminor, spatch

		return true

ffi.cdef( [[
typedef struct {
	int x, y;
	unsigned int w, h;
	uint32_t hash;
	uint8_t solid;
} SI_Rect;

uint32_t    si_getVersion( void );
const char* si_getErrorString( void* );
void*       si_init( int, int, const char*, const char* );
void        si_changeResolution( void*, int, int );
void        si_reloadFonts( void*, const char*, const char* );
int         si_setHeader( void*, const char*, size_t );
int         si_setScript( void*, const char*, size_t );
int         si_calculateBounds( void*, SI_Rect*, const int32_t*, const uint32_t );
void        si_cleanup( void* );
]] )

SubInspector, libraryPath = requireffi( 'SubInspector.Inspector.SubInspector' )

log = ( message, ... ) ->
	aegisub.log 2, message .. '\n', ...

collectHeader = ( subtitles ) =>
	scriptHeader = {
		"[Script Info]"
	}

	-- These are the only header fields that actually affect the way ASS
	-- is rendered. I don't actually know if ScriptType matters.
	infoFields = {
		PlayResX:   true
		PlayResY:   true
		WrapStyle:  true
		ScriptType: true
		ScaledBorderAndShadow: true
	}

	styles = { }

	seenStyles = false
	resX = 640
	resY = 480

	-- This loop assumes the subtitle script is nicely organized in the
	-- order [Script Info] -> [V4+ Styles] -> [Events]. This isn't
	-- guaranteed for scripts floating around in the wild, but fortunately
	-- Aegisub 3.2 seems to do a very good job of ensuring this order when
	-- a script is loaded. In other words, this loop is probably only safe
	-- to do from within automation.
	for index = 1, #subtitles
		with line = subtitles[index]
			if "info" == .class
				if infoFields[.key]
					table.insert scriptHeader, .raw

				if "PlayResX" == .key
					resX = tonumber .value
				elseif "PlayResY" == .key
					resY = tonumber .value

			elseif "style" == .class
				unless seenStyles
					table.insert scriptHeader, "[V4+ Styles]\n"
					seenStyles = true

				styles[.name] = .raw

			elseif "dialogue" == .class
				break

	-- If a video is loaded, use its resolution instead of the script's
	-- resolution. Don't use low-resolution workraws for typesetting!
	vidResX, vidResY = aegisub.video_size!
	if vidResX and (vidResX != resX or vidResY != resY)
		@logFunc "Script and loaded video resolution mismatch, preferring video."

	@resX = vidResX or resX
	@resY = vidResY or resY

	@header = table.concat scriptHeader, '\n'
	@styles = styles

validateRect = ( rect ) ->
	bounds = {
		x: tonumber rect.x
		y: tonumber rect.y
		w: tonumber rect.w
		h: tonumber rect.h
		hash: tonumber rect.hash
		solid: (rect.solid == 1)
	}

	if bounds.w == 0 or bounds.h == 0
		return false
	else
		return bounds

defaultTimes = ( lines ) ->
	ffms = aegisub.frame_from_ms
	msff = aegisub.ms_from_frame

	seenTimes = { }
	times = { }
	hasFrames = ffms 0

	if hasFrames
		for line in *lines
			with line
				for frame = ffms( .start_time ), true == .si_exhaustive and ffms( .end_time ) - 1 or ffms( .start_time )
					frameTime = math.floor 0.5*( msff( frame ) + msff( frame + 1 ) )
					unless seenTimes[frameTime]
						table.insert times, frameTime
						seenTimes[frameTime] = true
	else
		for line in *lines
			with line
				unless seenTimes[.start_time]
					table.insert times, .start_time
					seenTimes[.start_time] = true

	-- This will only happen if all lines are displayed for 0 frames.
	unless 0 < #times
		return false
	else
		return times

addStyles = ( line, scriptText, seenStyles ) =>
	if @styles[line.style] and not seenStyles[line.style]
		table.insert scriptText, @styles[line.style]
		seenStyles[line.style] = true

	line.text\gsub "{(.-)}", ( tagBlock ) ->
		tagBlock\gsub "\\r([^\\}]*)", ( styleName ) ->
			if 0 < #styleName and @styles[styleName] and not seenStyles[styleName]
				table.insert scriptText, @styles[styleName]
				seenStyles[styleName] = true

class Inspector
	@version = versionRecord

	new: ( subtitles = error( "You must provide the subtitles object." ), fcConfig = libraryPath .. "fonts.conf", fontDir = aegisub.decode_path( '?script/fonts' ), logFunc = log ) =>

		success, message = looseVersionCompare SubInspector.si_getVersion!
		unless success
			return nil, message

		inspectorFree = ( inspector ) -> SubInspector.si_cleanup inspector

		@inspector = ffi.gc SubInspector.si_init( 1, 1, fcConfig, fontDir ), inspectorFree

		assert @inspector, "SubInspector C initialization failed."

		@fontDir = fontDir
		@fcConfig = fcConfig
		@logFunc = logFunc

		success, message = @updateHeader subtitles
		assert success, message

	updateHeader: ( subtitles ) =>
		if nil == subtitles
			return nil, "You must provide the subtitles object."

		collectHeader @, subtitles
		SubInspector.si_changeResolution @inspector, @resX, @resY

		if SubInspector.si_setHeader( @inspector, @header, #@header ) != 0
			return nil, "Failed to set header.\n" .. ffi.string SubInspector.si_getErrorString @inspector

		return true

	reloadFonts: ( fcConfig = @fcConfig, fontDir = @fontDir ) =>
		SubInspector.si_reloadFonts @inspector, fcConfig, fontDir
		@fontDir = fontDir
		@fcConfig = fcConfig

	-- Arguments:
	-- subtitles: the subtitles object that Aegisub passes to the macro.

	-- line: an array-like table of line tables that have at least the
	--       fields `start_time`, `text`, `end_time` and `raw`. `raw` is
	--       mandatory in all cases. `start_time` and `end_time` are only
	--       necessary if a table of times to render the line is not
	--       provided and a video is loaded. Allows rendering 1 or more
	--       lines simultaneously.

	-- times: a table of times (in milliseconds) to render the line at.
	--        Defaults to the start time of the line unless there is a video
	--        loaded and the line contains the field line.si_exhaustive =
	--        true, in which case it defaults to every single frame that the
	--        line is displayed.

	-- Returns:
	-- An array-like table of bounding boxes, and an array-like table of
	-- render times. The two tables are the same length. If multiple lines
	-- are passed, the bounding box for a given time is the combined
	-- bounding boxes of all the lines rendered at that time.

	-- Error Handling:
	-- If an error is encountered, getBounds returns nil and an error string,
	-- which is typical for lua error reporting. In order to distinguish
	-- between an error and a valid false return, users should make sure
	-- they actually compare result to nil and false, rather than just
	-- checking that the result is not falsy.

	getBounds: ( lines, times = defaultTimes lines ) =>
		unless times
			return nil, "The render times table was empty."

		for i = 1,#lines
			line = lines[i]
			if nil == line.raw
				if line.createRaw
					line\createRaw!
				else
					return nil, "line.raw is missing from line #{i}."

		scriptText = { }
		seenStyles = { }
		if @styles.Default
			seenStyles.Default = true
			table.insert scriptText, @styles.Default

		for line in *lines
			addStyles @, line, scriptText, seenStyles

		table.insert scriptText, '[Events]'

		for line in *lines
			table.insert scriptText, line.raw

		scriptString = table.concat scriptText, '\n'
		if 0 < SubInspector.si_setScript @inspector, scriptString, #scriptString
			return nil, "Could not set script" .. ffi.string SubInspector.si_getErrorString @inspector

		renderCount = #times
		cTimes = ffi.new 'int32_t[?]', renderCount
		cRects = ffi.new 'SI_Rect[?]', renderCount

		for i = 0, renderCount - 1
			cTimes[i] = times[i + 1]

		if 0 < SubInspector.si_calculateBounds @inspector, cRects, cTimes, renderCount
			return nil, "Error calculating bounds" .. ffi.string SubInspector.si_getErrorString @inspector

		rects = { }
		for i = 0, renderCount - 1
			table.insert rects, validateRect cRects[i]

		return rects, times

if haveDepCtrl
	return versionRecord\register Inspector
else
	return Inspector