text:
Bistam fou usurpador de l'Imperi Sassànida entre 591 i 592.

Biografia
Oncle matern de Cosroes II, militar i home d'estat persa, serví sota Ormazd IV i sota Cosroes II. El seu pare es deia Sapor i era net de Korbondad. Pertanyia a la família dels Spahbad, comandants militars i una de les grans nissagues de l'imperi i suposats descendents dels arsàcides.

Usurpació de Bahram Txobin
Ormazd IV va empresonar i executar a alguns magnats entre els quals el pare de Bistam, Sapor. Bistam i el seu germà Bendoy foren empresonats. La paga de l'exèrcit fou retallada un 10% i les unitats de cavalleria reduïdes. El principal cap dels nobles, Bahram Txobin, un victoriós general, es va aixecar i es va dirigir a Ctesifont; els magnats es van revoltar en aquesta ciutat i van alliberar als presoners; en la confusió de la revolució i l'arribada imminent de Txobin, el poder va quedar en mans de Bistam i Bendoy (grec Bindoes), que van donar suport a Cosroes, fill d'Ormazd IV, com a rei i Ormazd fou detingut i cegat i finalment executat; Txobin ja estava a la vora de la ciutat i Bistam i Bendoy van fugir cap a l'Azerbaidjan (estiu del 590).

Oposició a Bahram
Mentre Bahram Txobin regnava, Bistam es va quedar a l'Azerbaidjan per reclutar fidels i Bendoy i Cosroes anaven cap a l'Imperi Romà d'Orient i a començaments del 591 Cosroes II va tornar amb un exèrcit de romans d'Orient (obtingut a canvi d'un tractat amb concessions territorials als romans) i Bistam se li va unir amb vuit mil reialistes; Bendoy es va escapar i se'ls va unir també. La batalla contra les forces de Txobin va acabar amb la victòria de Cosroes. Aquest va conservar per un temps una guàrdia romans de mil soldats. Els seus fidels foren recompensats: Bendoy fou nomenat tresorer i gran ministre i Bistam governador del Tabaristan, Gurgan, Kumesh i Gran Khorasan, però la mort d'Ormazd assenyalava Cosroes i aquest va decidir desfer-se dels seus oncles sobre els que havia de recaure tota la culpa. Bendoy fou arrestat, mutilat i executat.

Consecució del tron
Cosroes va convidar a Bistam a anar a la cort per consultes, però va conèixer els fets a temps i es va revoltar, reclamat la reialesa per raó de la seva ascendència arsàcida, declarant els sassànides usurpadors i tornà a dir que Sassan, l'ancestre sassànida, només era un pastor. Instal·lat a Rayy, va rebre el suport de la resta de les forces de Bahram Txobin que havia estat assassinat al seu exili al país dels Turcs Occidentals (aquestes tropes es van establir al Daylam i anaven dirigides pel seu fill Sapor) i de molts magnats.

Bistam es va casar amb Gordiya, germana de Bahram Txobin, i va emetre moneda a Rayy amb la llegenda Peroz Bistam (Bistam el Victoriós). Lluità fins al 596 amb l'ajut de cavallers de l'Iraq i mercenaris de Rayy i Qazwin, i va obtenir l'adhesió dels magnats locals a Gilan, Babr (regió d'Ardebil) i Talishan.

Bistam va rebutjar diversos exèrcits enviats contra ell i encara va poder estendre el seu poder cap al país dels heftalites on dos prínceps de noms Saug i Pariowk se li van sotmetre. Bistam va fixar la seva capital a Dashtaba o Dastabi, prop de Ray i va fer diverses expedicions a Mèdia; el darrer dels exèrcits que va marxar contra ell fou dirigit pel mateix Cosroes; Bistam va guarnir els principals passos de muntanya i va aturar l'exèrcit de Cosroes en una gran batalla prop de Hamadan; però després de tres dies de lluita, Cosroes va recórrer a la traïció i va aconseguir que Bistam fos mort pel príncep Pariowk, que va portar el cap de Bistam a Cosroes. L'exèrcit de Bistam es va desbandar sense líder; una altra versió diu que Bistam fou mort per la seva dona Gordiya que havia rebut la promesa de matrimoni de Cosroes.

Uns seixanta fidels foren executats entre els quals Sapor fill de Bahram Txobin. L'armeni Sembat Bagratuní fou enviat per Cosroes per recuperar el control de les províncies revoltades. Cosroes va acabar acusat jutjat i executat per la mort del seu pare i dels seus oncles. Els seus fills Tiroya i Bendoya van continuar la casa dels Spahbad i van lluitar contra els àrabs el 634; una germana de Bistam va tenir un fill de nom Narsès que també va combatre els àrabs.

Referències

Reis sassànides
Rebels

redpajama_set_name: RedPajamaWikipedia


Entertainment Weekly have revealed the first official photos from the final season of Game of Thrones.
The season 8 premiere of the HBO hit is now only 67 days away, and is one of the most anticipated seasons of television ever!
There is not much hints of any upcoming storylines being given in the new images, but they do highlight the main players still alive as we enter into the final phase of the game to claim the Iron Throne, alongside the war against the Night King and the Army of the Dead.
While not offering much plot wise, the images do give us a look at some of the stunning costumes that the series has become known for over the years.
You can check out the rest of the images HERE.
I'm a huge Thrones fan, and can't wait for the new season to drop (while also not being quite ready for it to end). If we really want to get into it, I'm even more eager for George RR Martin to release the next book in the series, The Winds of Winter, but alas it looks like that won't be coming our way any time soon unfortunately.


We're a different kind of landscaping company, so our process looks different from most other companies. Since it's different, we think it's important to make every potential client aware of it before contacting us.
The main difference is in the way we operate from start to finish. We focus most of our interactions on you, our client. We use this process because it allows us to always be serving you in the best ways possible. This includes quicker response times, the highest quality of work and our thorough commitment to creating a delightful experience.
We're confident in our skills, but it doesn't mean much if we're not meeting or exceeding the expectations of our clients.
Now, every company out there likes to claim they're "different." As we say this too, we have to prove it by differentiating ourselves from other landscaping companies.
The most customer-focused aspect of our company is our transparency. Nobody likes to be "sold" or get nickel and dimed. As such, we don't leave anyone in the dark, and we always proceed to the next step with clear communication between ourselves and our clients.
When potential clients first reach out to us through the contact form, they will notice the form allows them to quickly upload photos of their yard and inspirational photos they would like to recreate. Photos can easily be uploaded from a computer, tablet or cell phone.
With photos in hand, we can proceed to have an informative conversation to determine if we're the right contractor for their project. Since everyone has different life experiences, one person's "small job" could be a significant project for someone else. The pictures help us to see what our clients are seeing so we can be on the same page and speak the same language.
Life's complicated enough, so we try to keep the conversation with potential clients as simple as possible. The path to a beautiful yard is paved with clear expectations, so we're going to be asking a lot of questions to determine their needs.
The phone call typically takes about 15-20 minutes, and we'll review the photos that have been submitted to discuss goals for the project. We'll even talk about their expectations for our company. If a client has a hard timeline or any other specifics, we want to know about them!
While it may seem unnecessary, we want to ensure that we'll make good partners for your project. Our goal is to make sure we represent our industry well, and if we aren't a good fit, we understand. We'll do our best to make sure you find a company that is a good fit for you and your project.
Once we've had our discussion and explored all the variables of the project, we can provide a verbal estimate during the call.
We understand that you may not know what landscape projects cost, and you aren't alone. Pricing is indeed not readily available like prices for vehicles are. This is why we like to give price ranges over the phone.
We're people too, so we don't like to guess when it comes to spending money or time. Nobody wants to go get something like tires for $500 only to find out when you get to the shop the cheapest set is $1,000 plus HST.
By discussing the budget and addressing the elephant in the room, we can ensure that our proposal is tailored to both our client's budget and project needs.
If we determine that we're the right contractor for them and that the budget discussed makes sense, the next step is a site visit. We'll come out to the home, complete a visual inspection to ensure nothing was missed during the phone consultation and finalize the work contract.
While it's certainly not going to be a high-pressure sales situation, our goal at this point is to get the project scheduled. If we need any additional information from our side or want to consult some other contractors, we recommend that happens before the site visit.
A consultation fee of $200 applies to all on-site visits, payable at the time of the visit. This includes 60 minutes to thoroughly discuss your project and create an actionable scope of work outlining our suggested course of action for the project.
The fee is waived in lieu of a deposit check for the project. Candidly, this happens most of the time. The reason the phone consultation is so in-depth is to make sure that the site visit truly is that low-pressure situation. We focus on the recommended advice you need to execute on your project regardless of whether we are hired for the project or not.
In this aspect we are very different as we won't compromise on sub-par solutions just to make a sale. We've heard many horror stories from our clients of their previous experiences. At the end of the day you're paying for our professional recommendations and we don't treat that trust lightly.


text:
local require           = require

local log               = require "hs.logger".new "MediaFolder"

local fs                = require "hs.fs"
local http              = require "hs.http"
local notify            = require "hs.notify"
local pasteboard        = require "hs.pasteboard"
local pathwatcher       = require "hs.pathwatcher"

local dialog            = require "cp.dialog"
local fcp               = require "cp.apple.finalcutpro"
local go                = require "cp.rx.go"
local i18n              = require "cp.i18n"
local Queue             = require "cp.collect.Queue"
local tools             = require "cp.tools"

local Do                = go.Do
local If                = go.If
local Throw             = go.Throw
local unpack            = table.unpack
local WaitUntil         = go.WaitUntil

local fileExists        = tools.doesFileExist
local insert            = table.insert
local urlFromPath       = fs.urlFromPath

-- the FCP copy/leave in place preference
local copyMedia = fcp.app.preferences:prop("FFImportCopyToMediaFolder", true)

local MediaFolder = {}
MediaFolder.mt = {}
MediaFolder.mt.__index = MediaFolder.mt

--- plugins.finalcutpro.watchfolders.media.MediaFolder.new() -> MediaFolder
--- Constructor
--- Creates a new Media Folder.
---
--- Parameters:
---  * mod - The module.
---  * path - Path to the Media Folder.
---  * videoTag - Video Tag as String
---  * audioTag - Audio Tag as String
---  * imageTag - Image Tag as String
---
--- Returns:
---  * A new MediaFolder object.
function MediaFolder.new(mod, path, videoTag, audioTag, imageTag)
    return setmetatable({
        mod = mod,
        path = path,
        tags = {
            video = videoTag,
            audio = audioTag,
            image = imageTag,
        },
        incoming = Queue(),
        ready = Queue(),
        importing = Queue(),
    }, MediaFolder.mt)
end

--- plugins.finalcutpro.watchfolders.media.MediaFolder.thaw(details) -> MediaFolder
--- Constructor
--- Creates a new MediaFolder based on the details provided.
--- The details have typically come from a call to `MediaFolder.freeze(...)`
---
--- Parameters:
---  * details   - The table with details of the media folder when it was frozen.
---
--- Returns:
---  * A new MediaFolder instance with the specified details.
function MediaFolder.thaw(mod, details)
    local mf = MediaFolder.new(mod, details.path)
    mf.tags = details.tags
    mf.incoming:pushRight(unpack(details.incoming))
    mf.ready:pushRight(unpack(details.ready))
    mf.importing:pushRight(unpack(details.importing))
    return mf
end

--- plugins.finalcutpro.watchfolders.media.MediaFolder.freeze(mediaFolder) -> table
--- Function
--- Returns a table with the details of the `MediaFolder`, ready to be stored.
--- It can be brought back via the `MediaFolder.thaw(...)` function.
---
--- Parameters:
---  * mediaFolder   - The `MediaFolder` to freeze.
---
--- Returns:
---  * A table of details.
function MediaFolder.freeze(mediaFolder)
    return {
        path = mediaFolder.path,
        tags = mediaFolder.tags,
        incoming = {unpack(mediaFolder.incoming)},
        ready = {unpack(mediaFolder.ready)},
        importing = {unpack(mediaFolder.importing)},
    }
end
MediaFolder.mt.freeze = MediaFolder.freeze

--- plugins.finalcutpro.watchfolders.media.MediaFolder:init() -> nil
--- Method
--- Initialises the folder, getting any watchers, notifications, etc. running.
---
---- Parameters:
---  * None
---
--- Returns:
---  * None
function MediaFolder.mt:init()
    local path = self.path
    if path then
        self.volumeFormat = tools.volumeFormat(path)
        if not self.pathWatcher then
            self.pathWatcher = pathwatcher.new(path, function(files, flags)
                self:processFiles(files, flags)
            end):start()
        end

        -- register the import notification handler
        notify.register(self:importTag(), function(notification)
            self:handleImport(notification)
        end)

        -- clear old notifications
        local importTag = self:importTag()
        for _,n in ipairs(notify.deliveredNotifications()) do
            local tag = n:getFunctionTag()
            if tag == importTag then
                n:withdraw()
            end
        end

        self:updateIncomingNotification()

        self:doImportNext():After(0)
    end
    return self
end

--- plugins.finalcutpro.watchfolders.media.MediaFolder:doTagFiles(files) -> nil
--- Method
--- Tags a table of files.
---
---- Parameters:
---  * None
---
--- Returns:
---  * None
function MediaFolder.mt:doTagFiles(files)
    return Do(function()
        --------------------------------------------------------------------------------
        -- Add Tags:
        --------------------------------------------------------------------------------
        local videoExtensions = fcp.ALLOWED_IMPORT_VIDEO_EXTENSIONS
        local audioExtensions = fcp.ALLOWED_IMPORT_AUDIO_EXTENSIONS
        local imageExtensions = fcp.ALLOWED_IMPORT_IMAGE_EXTENSIONS

        local videoTag = self.tags.video
        local audioTag = self.tags.audio
        local imageTag = self.tags.image

        for _, file in pairs(files) do
            local ext = file:match("%.([^%.]+)$")
            if ext then
                ext = ext:lower()
                if videoTag and videoExtensions:has(ext) and fileExists(file) then
                    if not fs.tagsAdd(file, {videoTag}) then
                        log.ef("Failed to add Finder Tag (%s) to: %s", videoTag, file)
                    end
                end
                if audioTag and audioExtensions:has(ext) and fileExists(file) then
                    if not fs.tagsAdd(file, {audioTag}) then
                        log.ef("Failed to add Finder Tag (%s) to: %s", audioTag, file)
                    end
                end
                if imageTag and imageExtensions:has(ext) and fileExists(file) then
                    if not fs.tagsAdd(file, {imageTag}) then
                        log.ef("Failed to add Finder Tag (%s) to: %s", imageTag, file)
                    end
                end
            end
        end
    end)
    :Label("plugins.finalcutpro.watchfolders.media.MediaFolder:doTagFiles(files)")
end

local function isFile(flags)
    return flags and flags.itemIsFile
end

local function isSupported(file, flags)
    if isFile(flags) then
        local supported = fcp.ALLOWED_IMPORT_ALL_EXTENSIONS
        local ext = file:match("%.([^%.]+)$")
        if ext then
            return supported:has(ext:lower())
        end
    end
    return false
end

local function isRemoved(file, flags)
    return isFile(flags) and flags.isRemoved or (flags.itemRenamed and not fileExists(file))
end

local function isRenamed(file, flags)
    return isFile(flags) and not flags.itemXattrMod and flags.itemRenamed and fileExists(file)
end

local function isCopying(file, flags)
    return isFile(flags) and flags.itemCreated and not flags.itemChangeOwner and fileExists(file)
end

local function isCopied(file, flags)
    return isFile(flags) and not flags.itemXattrMod and flags.itemCreated and flags.itemChangeOwner and fileExists(file)
end

local function notificationDelivered(notification)
    if notification then
        for _,delivered in ipairs(notify.deliveredNotifications()) do
            if delivered == notification then
                return true
            end
        end
    end
    return false
end

--- plugins.finalcutpro.watchfolders.media.MediaFolder:checkNotifications() -> none
--- Method
--- Checks Notifications.
---
---- Parameters:
---  * None
---
--- Returns:
---  * None
function MediaFolder.mt:checkNotifications()
    if self.readyNotification and not notificationDelivered(self.readyNotification) then
        -- it's been closed
        self.ready = Queue()
        self:save()
    end
end

--- plugins.finalcutpro.watchfolders.media.MediaFolder:processFiles() -> none
--- Method
--- Process files.
---
--- Parameters:
---  * files - A table of files to process.
---  * fileFlags - A table of file flags.
---
--- Returns:
---  * None
function MediaFolder.mt:processFiles(files, fileFlags)
    self:checkNotifications()
    for i = 1, #files do
        local file = files[i]
        local flags = fileFlags[i]

        if isSupported(file, flags) then
            if isRemoved(file, flags) then
                self:removeFile(file)
            elseif isCopying(file, flags) then
                self:addIncoming(file)
            elseif isCopied(file, flags) or isRenamed(file, flags) then
                self:addReady(file)
            end
        end
    end
end

--- plugins.finalcutpro.watchfolders.media.MediaFolder:removeFile(file) -> MediaFolder
--- Method
--- Removes the file from any queues it might be in, updating relevant notifications.
---
--- Parameters:
---  * file  - the full path to the file.
---
--- Returns:
---  * The MediaFolder instance
function MediaFolder.mt:removeFile(file)
    if self.incoming:removeItem(file) then
        self:updateIncomingNotification()
    end
    if self.ready:removeItem(file) then
        self:updateReadyNotification()
    end
    self.importing:removeItem(file)

    self:save()
    return self
end

--- plugins.finalcutpro.watchfolders.media.MediaFolder:addIncoming(file) -> nil
--- Method
--- Adds the file to the 'incoming' list and updates the notification.
---
--- Parameters:
---  * file - The file to add.
---
--- Returns:
---  * nil
function MediaFolder.mt:addIncoming(file)
    self.incoming:pushRight(file)
    self:save()
    self:updateIncomingNotification()
end

--- plugins.finalcutpro.watchfolders.media.MediaFolder:addReady(file) -> nil
--- Method
--- Adds the file to the 'ready' list and updates the notifications.
---
--- Parameters:
---  * file      - The file to add.
---
--- Returns:
---  * nil
function MediaFolder.mt:addReady(file)
    if self.incoming:removeItem(file) then
        self:updateIncomingNotification()
    end
    if not self.ready:contains(file) then
        self.ready:pushRight(file)
        self:save()
        self:updateReadyNotification()
    end
end

--- plugins.finalcutpro.watchfolders.media.MediaFolder:updateIncomingNotification() -> nil
--- Method
--- Updates the 'incoming' notification based on the current set of files in the `incoming` queue.
---
--- Parameters:
---  * None
---
--- Returns:
---  * None
function MediaFolder.mt:updateIncomingNotification()
    if self.incomingNotification then
        self.incomingNotification:withdraw()
        self.incomingNotification = nil
    end
    -------------------------------------------------------------------------------
    -- Show Notification:
    -------------------------------------------------------------------------------
    if #self.incoming > 0 then
        local subTitle = i18n("fcpMediaFolderIncomingSubTitle", {
            file=tools.getFilenameFromPath(self.incoming:peekLeft()),
            count=#self.incoming - 1,
        })

        self.incomingNotification = notify.new()
            :title(i18n("fcpMediaWatchFolderTitle"))
            :subTitle(subTitle)
            :hasActionButton(false)
            :withdrawAfter(0)
            :send()
    end
end

--- plugins.finalcutpro.watchfolders.media.MediaFolder:importTag() -> string
--- Method
--- Returns the import tag.
---
--- Parameters:
---  * None
---
--- Returns:
---  * The import tag as a string.
function MediaFolder.mt:importTag()
    return "import:"..self.path
end

--- plugins.finalcutpro.watchfolders.media.MediaFolder:updateReadyNotification() -> nil
--- Method
--- Updates the 'ready' notification based on the current set of files in the `ready` queue.
---
--- Parameters:
---  * None
---
--- Returns:
---  * None
function MediaFolder.mt:updateReadyNotification()
    if self.readyNotification then
        self.readyNotification:withdraw()
        self.readyNotification = nil
    end

    local count = #self.ready
    if count > 0 then
        if self.mod.automaticallyImport() then
            self:importAll()
        else
            local actions
            local subTitle = i18n("fcpMediaFolderReadySubTitle", {
                count=count,
            })
            if count > 1 then
                actions = {
                    i18n("fcpMediaFolderRevealInFinder"),
                    i18n("fcpMediaFolderImportAll", {count = count}),
                }

                for _,file in ipairs(self.ready) do
                    insert(actions, tools.getFilenameFromPath(file))
                end
            else
                actions = {
                    i18n("fcpMediaFolderRevealInFinder"),
                    tools.getFilenameFromPath(self.ready:peekLeft()),
                }
            end

            self.readyNotification = notify.new(self:importTag())
                :title(i18n("appName"))
                :subTitle(subTitle)
                :hasActionButton(true)
                :otherButtonTitle(i18n("fcpMediaFolderCancel"))
                :actionButtonTitle(i18n("fcpMediaFolderImport"))
                :additionalActions(actions)
                :alwaysShowAdditionalActions(true)
                :withdrawAfter(0)

            self.readyNotification:send()
        end
    end
end

--- plugins.finalcutpro.watchfolders.media.MediaFolder:handleImport(notification) -> nil
--- Method
--- Handles the importing of a file.
---
--- Parameters:
---  * notification - The notification object.
---
--- Returns:
---  * None
function MediaFolder.mt:handleImport(notification)
    -- notification cleared
    if self.readyNotification and not notificationDelivered(self.readyNotification) then
        self.readyNotification = nil
    end

    -- process it.
    local count = #self.ready
    if count > 0 then
        local activation = notification:activationType()
        if activation == notify.activationTypes.actionButtonClicked then
            self:importFirst()
        elseif activation == notify.activationTypes.additionalActionClicked then
            local action = notification:additionalActivationAction()
            if action == i18n("fcpMediaFolderImportAll", {count = count}) then
                self:importAll()
            elseif action == i18n("fcpMediaFolderRevealInFinder") then
                self:doRevealInFinder():After(0)
            else
                for _,filePath in ipairs(self.ready) do
                    local fileName = tools.getFilenameFromPath(filePath)
                    if action == fileName then
                        self:importFiles({filePath})
                        self.ready:removeItem(filePath)
                        self:save()
                        return
                    end
                end
                log.ef("%s: unrecognised notification action: %s", self, action)
            end
        else
            log.ef("%s: unexpected notification activation type: %s", self, activation)
        end
    else
        log.ef("%s: import requested when no files are ready to be imported. ", self)
    end
end

--- plugins.finalcutpro.watchfolders.media.MediaFolder:importAll() -> nil
--- Method
--- Begins importing all `ready` files, removing them from the `ready` queue.
---
--- Parameters:
---  * None
---
--- Returns:
---  * None
function MediaFolder.mt:importAll()
    if #self.ready > 0 then
        self:importFiles({unpack(self.ready)})
        self.ready = Queue()
        self:save()
    end
    self:updateReadyNotification()
end

--- plugins.finalcutpro.watchfolders.media.MediaFolder:importFirst() -> nil
--- Method
--- Begins importing the first `ready` file, removing it from the `ready` queue.
---
--- Parameters:
---  * None
---
--- Returns:
---  * None
function MediaFolder.mt:importFirst()
    if #self.ready > 0 then
        self:importFiles({self.ready:peekLeft()})
        self.ready:popLeft()
        self:save()
    end
    self:updateReadyNotification()
end

--- plugins.finalcutpro.watchfolders.media.MediaFolder:skipAll() -> nil
--- Method
--- Skip all files in the Media Folder.
---
--- Parameters:
---  * None
---
--- Returns:
---  * None
function MediaFolder.mt:skipAll()
    self.ready = Queue()
    self:save()
    self:updateReadyNotification()
end

--- plugins.finalcutpro.watchfolders.media.MediaFolder:skipOne() -> nil
--- Method
--- Skip one file in the Media Folder.
---
--- Parameters:
---  * None
---
--- Returns:
---  * None
function MediaFolder.mt:skipOne()
    if #self.ready > 0 then
        self.ready:popLeft()
        self:save()
        self:updateReadyNotification()
    end
end

--- plugins.finalcutpro.watchfolders.media.MediaFolder:importFiles(files) -> nil
--- Method
--- Requests for the files to be imported.
---
--- Parameters:
---  * files - a table/list of files to be imported.
---
--- Returns:
---  * None
function MediaFolder.mt:importFiles(files)
    self.importing:pushRight(files)
    -- we save before importing so that we can pick up again later if CP restarts.
    self:save()
    self:doImportNext():TimeoutAfter(30000, "Import Next took too long"):Now()
end

--- plugins.finalcutpro.watchfolders.media.MediaFolder:doRestoreOriginalPasteboard(context) -> nil
--- Method
--- Restore original Pasteboard contents after 2 seconds.
---
--- Parameters:
---  * context - The context.
---
--- Returns:
---  * None
function MediaFolder.mt:doRestoreOriginalPasteboard(context)
    return Do(function()
        if context.originalPasteboard then
            pasteboard.writeAllData(context.originalPasteboard)
            if self.mod.pasteboardManager then
                self.mod.pasteboardManager.startWatching()
            end
            context.originalPasteboard = nil
        end
    end)
    :ThenYield()
    :Label("plugins.finalcutpro.watchfolders.media.MediaFolder:doRestoreOriginalPasteboard(context)")
end

--- plugins.finalcutpro.watchfolders.media.MediaFolder:doDeleteImportedFiles(context) -> nil
--- Method
--- Checks if we are deleting after import, and if so schedules them to be deleted.
---
--- Parameters:
---  * files - a table of file paths.
---
--- Returns:
---  * None
function MediaFolder.mt:doDeleteImportedFiles(files)
    return Do(function()
        --------------------------------------------------------------------------------
        -- Delete After Import:
        --------------------------------------------------------------------------------
        if self.mod.deleteAfterImport() then
            if copyMedia() then
                Do(function()
                    for _, file in pairs(files) do
                        os.remove(file)
                    end
                end)
                :After(self.mod.SECONDS_UNTIL_DELETE * 1000)
                return true
            else
                log.wf("Not automatically deleting imported files because FCP is set to 'Leave files in place' .")
            end
        end
        return false
    end)
    :Label("plugins.finalcutpro.watchfolders.media.MediaFolder:doDeleteImportedFiles(files)")
end

--- plugins.finalcutpro.watchfolders.media.MediaFolder:doImportNext() -> nil
--- Method
--- Imports the next file in the Media Folder.
---
--- Parameters:
---  * None
---
--- Returns:
---  * None
function MediaFolder.mt:doImportNext()
    local timeline = fcp.timeline
    local context = {}

    return If(function() return self.importingNow ~= true and #self.importing > 0 end):Then(function()
        self.importingNow = true
        local files = self.importing:popLeft()
        self:save()

        --------------------------------------------------------------------------------
        -- Tag the files:
        --------------------------------------------------------------------------------
        return Do(self:doTagFiles(files))

        --------------------------------------------------------------------------------
        -- Make sure Final Cut Pro is Active:
        --------------------------------------------------------------------------------
        :Then(fcp:doLaunch())

        --------------------------------------------------------------------------------
        -- Check if Timeline can be enabled:
        --------------------------------------------------------------------------------
        :Then(
            timeline:doShow()
            :TimeoutAfter(1000, i18n("fcpMediaFolder_Error_ShowTimeline"))
        )

        :Then(
            WaitUntil(timeline.isLoaded)
            :TimeoutAfter(1000, i18n("fcpMediaFolder_Error_ProjectRequired"))
        )

        --------------------------------------------------------------------------------
        -- Put the media onto the pasteboard:
        --
        -- NOTE: This use to be it's own standalone Rx Statement, but for some
        --       strange reason it introduced a freeze. Maybe a timing issue
        --       or maybe related to having nested Rx Statements and the use of
        --       ThenYield? Chris wasn't able to work out what exactly was causing it.
        --------------------------------------------------------------------------------
        :Then(function()
            if files == nil or #files == 0 then
                return Throw(i18n("fcpMediaFolder_Error_NoFiles"))
            end
            --------------------------------------------------------------------------------
            -- Temporarily stop the Pasteboard Watcher:
            --------------------------------------------------------------------------------
            if self.mod.pasteboardManager then
                self.mod.pasteboardManager.stopWatching()
            end

            --------------------------------------------------------------------------------
            -- Save current Pasteboard Content:
            --------------------------------------------------------------------------------
            context.originalPasteboard = pasteboard.readAllData()

            --------------------------------------------------------------------------------
            -- Write URL to Pasteboard:
            --------------------------------------------------------------------------------
            local objects = {}
            for _, v in pairs(files) do
                objects[#objects + 1] = { url = urlFromPath(v) }
            end
            local result = pasteboard.writeObjects(objects)
            if not result then
                return Throw(i18n("fcpMediaFolder_Error_UnableToPaste", {file = files[1], count = #files}))
            end
        end)

        --------------------------------------------------------------------------------
        -- Perform Paste:
        --------------------------------------------------------------------------------
        :Then(fcp:doShortcut("PasteAsConnected"))

        --------------------------------------------------------------------------------
        -- Remove from Timeline if appropriate:
        --------------------------------------------------------------------------------
        :Then(
            If(self.mod.insertIntoTimeline):Is(false):Then(
                fcp:doShortcut("UndoChanges")
            )
        )

        --------------------------------------------------------------------------------
        -- Restore original Pasteboard Content:
        --------------------------------------------------------------------------------
        :Then(self:doRestoreOriginalPasteboard(context))

        --------------------------------------------------------------------------------
        -- Delete the imported files (if configured):
        --------------------------------------------------------------------------------
        :Then(self:doDeleteImportedFiles(files))

        --------------------------------------------------------------------------------
        -- Try importing the next set of files in the queue:
        --------------------------------------------------------------------------------
        :Then(function()
            self.importingNow = false
            return self:doImportNext()
        end)
        :Catch(function(message)
            self.importingNow = false
            log.ef("Error during `doImportNext`: %s", message)
            dialog.displayMessage(message)
            return self:doImportNext()
        end)
    end)
    :Otherwise(function()
        self.importingNow = false
        self:updateReadyNotification()
    end)
    :Label("plugins.finalcutpro.watchfolders.media.MediaFolder:doImportNext()")
end

--- plugins.finalcutpro.watchfolders.media.MediaFolder:save()
--- Method
--- Ensures the MediaFolder is saved.
---
--- Parameters:
---  * None
---
--- Returns:
---  * None
function MediaFolder.mt:save()
    self.mod.saveMediaFolders()
end

--- plugins.finalcutpro.watchfolders.media.MediaFolder:destroy()
--- Method
--- Destroys the MediaFolder. It should not be used after this is called.
---
--- Parameters:
---  * None
---
--- Returns:
---  * None
function MediaFolder.mt:destroy()
    if self.pathWatcher then
        self.pathWatcher:stop()
        self.pathWatcher = nil
    end

    if self.readyNotification then
        self.readyNotification:withdraw()
        self.readyNotification = nil
    end
    if self.incomingNotification then
        self.incomingNotification:withdraw()
        self.incomingNotification = nil
    end

    self.mod = nil
    self.path = nil
    self.tags = nil
    self.incoming = nil
    self.ready = nil
    self.importing = nil
end

--- plugins.finalcutpro.watchfolders.media.MediaFolder:doRevealInFinder() -> cp.rx.go.Statement
--- Method
--- Returns a `Statement` that will reveal the MediaFolder path in the Finder.
---
--- Parameters:
---  * None
---
--- Returns:
---  * Statement
function MediaFolder.mt:doRevealInFinder()
    return Do(
        self:doImportNext(),
        function()
            local path = self.ready:peekLeft() or self.path
            os.execute(string.format('open -R %q', path))
        end
    )
end

function MediaFolder.mt:__tostring()
    return "MediaFolder: "..self.path
end

function MediaFolder.mt:__gc()
    self:destroy()
end

return MediaFolder

redpajama_set_name: RedPajamaGithub


The Money Carer Foundation have been supporting a client with complex mental health issues for a number of years. 'Gloria' suffers with paranoid schizophrenia though when her condition is supported with a tailored care plan she can appear extremely able and this may lead others to underestimate her care needs.
Gloria was in receipt of the lower-rate of care component of Disability Living Allowance until December 2016 when she was invited to claim Personal Independence Payments. The Money Carer Foundation managed the initial claim however following an assessment with a Health Care Professional Gloria was awarded 0 points for mobility and daily living.
It became apparent that this score was not accurate and a mandatory reconsideration was raised with the DWP but the decision was upheld. The Money Carer Foundation furthered the appeal to an independent tribunal. Evidence was gathered by Money Carer Foundation from various professionals involved in Gloria's care and a written-submission was prepared for the tribunal indicating the areas in which we believed Gloria should have been awarded points under the PIP descriptors.
Within the submission to the tribunal we evidenced several daily-living areas totalling 18 points. The submission was supported with medical evidence from Gloria's CPN.
A tribunal date was then set by HMCTS and a best-interests decision was made by The Money Carer Foundation and Gloria's CPN that it would not be in her best interests to attend the tribunal due to the stress and anxiety that the tribunal would have caused her. On the day of the tribunal the Money Carer Foundation attended the tribunal and on entering the tribunal room the judge indicated that the written submission had been considered and invited the DWP representative to make a submission.
The DWP representative apologised for the original decision and agreed with the written submission and an award of the enhanced rate daily-living component of Personal Independence Payments was made. The tribunal judge awarded 17 points of the 18 Money Carer Foundation had originally presented in our submission.
The award was made for a five-year period until 2022. This was a great result for the client and translates to approximately £2000 in backdated arrears, £83.10 per week benefit and entitling Gloria to enhanced premiums on other benefits such as ESA and Housing Benefit.


Travel through four countries in just 17 days, taking in the cultural, historical and natural highlights of each.
Explore vibrant morning markets, bike through charming small towns, cook with local farmers and witness traditional performances.
See modern capitals, Bangkok and Hanoi, as well as historic royal capitals including Chiang Mai and Luang Prabang.
Arrive in Bangkok and transfer to hotel. Then free at leisure.
After breakfast at the hotel, The Royal Grand Palace is the nation's landmark and the most revered royal monument. See palaces that were used for different occasions – the Funeral Palace, the Reception Palace, the Throne Hall, the Coronation Hall, the Royal Guest House, and the mysterious Emerald Buddha which is the most revered Buddha image in Thailand. Appropriate dress is required. Continue the visit Wat Pho, the home of Thai massage and the Reclining Buddha.
After breakfast, transfer to airport for the flight to Sukhothai. Upon arrival, be met by the guide and be transferred to Sukhothai Historical Park which was once a walled city surrounded by a moat. Lunch possible in supplement if morning arrival. Sukhothai, a name meaning dawn of happiness, was founded in the 13th century and became the kingdom's first capital, overseeing a period known as the golden age of Thai history. The park contains almost 200 ruined chedis in remarkable condition. See the main sites of Wat Mahathat, Wat Si Chum, Wat Sri Sawai and War Sra Sri and Wat Trapang Ngoen and Ramkamhaeng Museum before checking into your hotel. Bike ride is possible in supplement in the historical park. A nice and easy way to stroll around the ruins!
After breakfast, drive north to Si Satchanalai Historical Park on the bank of the Yom River north of Sukhothai. The ancient town, formerly called ''Muang Chaliang,'' was named ''Si Satchanalai'' during the reign of Phra Ruang and 134 ruined monuments have been discovered within the park. Visit the main sites of Wat Phra Si Rattana Mahathat, Wat Khao Suwan Khiri, Wat Chang Lom, Wat Chedi Chet Thaeo, Wat Suan Kaeo Utthayan Yai, Wat Nang Phaya, Wat Suan Kaeo Utthayan Noi and Celadon Kiln Site Study and Conservation Center at Ban Ko Noi, some 4 kilometres to the north of Si Satchanalai. Drive to Chiang Mai via Lampang, with a stop to visit Wat Phra That Lampang Luang, and arrive in Chiang Mai in the late afternoon.
Travel thirty minutes by vehicle north of Chiang Mai city to a long-tail boat dock, where you will take a leisurely stroll around the grounds with a herbal garden. Then board a long-tail boat and enjoy a 30-minute cruise along the rural Mae Ping River. Along the river banks, you will see traditional wooden houses and modern residences. Arrive at a boat landing and walk for about 10 minutes from the landing to Waroros fresh food market for a visit, experiencing the Northern Thai way of life. From the market you take a trishaw ride along Tapae Road past City Walls and along Ratchadamnoen Road to Wat Phra Singh.
In the afternoon, explore ancient Chiang Mai, including its old city walls, gates, moat and markets. After visiting Wat Suan Dok, where the ashes of Chiang Mai's royal family are interred, you continue to Wat Phra That Doi Suthep, the temple on the mountain, and the most sacred in Northern Thailand. Your experienced guide will explain the story of the temple, the white elephant and lead you around its impressive chedi and show its beautiful murals. In the late afternoon, the tourist masses have already left the temple grounds and dusk will give a very special atmosphere. After your private blessing ceremony, witness the magical evening chanting of the monks. End with the spectacularly romantic evening view over Chiang Mai with its millions of glittering lights.
After breakfast, free at leisure until transfer to Chiang Mai airport for your flight to Luang Prabang.
On arrival in Luang Prabang, transfer to hotel.
Free time this afternoon at your leisure.
After your breakfast, your guide will pick you up at your hotel.
Your city tour begins with a visit to the former Royal Palace, now the National Museum, where you will explore the history of Laos. Continue on foot to Wat Mai, a temple renowned for its golden bas-relief, and Wat Sensoukarahm, which features a beautiful dazzling golden façade. Finish this morning with a visit to the beautiful Wat Xieng Thong, one of the most important temples in Laos.
Then transfer back to your hotel/restaurant (lunch at your convenience).
Be picked up by the guide at the hotel in Luang Prabang at 14:00 with the bicycles.
The first stop of the afternoon bike ride is the Traditional Arts & Ethnology Centre, a museum dedicated to exploring the rich diversity of Laos' ethnic minorities. Traditional costumes, tools, and artifacts are on display alongside in-depth descriptions and written histories. It is a great opportunity to gain insight in to the Lao people (Note: closed on Mondays).
Continue riding to the Phousi Market and join the locals and support vendors by buying fresh produces or fruits. Be encouraged to taste some of the exotic flavours of the local fruits and learn about new items not found in the grocery store back home!
Return to the hotel by bike.
Lao cuisine relies heavily on the freshest produce and incorporates a range of intriguing flavors, many unfamiliar to the western palate. A cooking class at 'Tamarind' restaurant starts with an introduction to these main ingredients and how they are used in Lao cuisine. Then you will start preparing and cooking an assortment of dishes under supervision- a cheerful chef who will teach you the traditional techniques as well as information about Lao culture. A cooking class is an ideal way to experience a culture from inside as Lao people take pride in sharing their love for their cuisine with some introduction to distinctive Lao dishes in a relaxed atmosphere.
Recipes are provided for you to take back home.
Board a traditional wooden boat, Nava Mekong, for a relaxing cruise on the mighty Mekong River. Enjoy stunning mountain scenery and witness the simple rural livelihoods on the river. Cruise upstream for 1.5 – 2 hours before arriving at Pak Ou caves at the confluence of the Mekong and Nam Ou Rivers. In these 2 caves are displayed hundreds of sacred centuries-old Buddha images which are the object of pilgrimages during the Lao New Year festivities around mid April. The boat then keeps cruising in the vicinity of the caves and will moor during lunch time at the foot of beautiful limestone cliffs. A selection of typical Lao dishes will be served onboard. Cruise back to Luang Prabang and return in the early afternoon.
This afternoon take a chance to participate in a unique, traditional Lao ceremony. The Baci is performed in celebration of an important event such as weddings, births, or for welcoming guests and is a means of expressing good will and good luck to others. During the Baci, special flower trays and food treats are prepared which are then touch by the participants while a Buddhist mantra is chanted. After the chanting is completed, cotton threads are tied around the participants' wrist whilst they receive an individual blessing.
Continue to climb the 328 steps to the top of Mount Phousi to enjoy a panoramic view of the city and the surrounding countryside. Stop at the evening hill tribe market.
Enjoy a delicious Lao set menu at the 3 Nagas Hotel.
After breakfast, free time at leisure before transferring to the airport.
Arrive in Hanoi and be met and transferred to the hotel.
Following breakfast leave Hanoi for a 4 hour drive to Halong Bay including a 20-minutes stop on the way. Arrive at the jetty in Halong City towards noon and proceed with check-in formalities. Be welcomed onboard and have lunch will be served while cruising towards the bay itself. In the afternoon, enjoy some visits and/or activities (depending on each boat's itinerary) or just spend some time relaxing on board. Towards the end of the day the boat sets anchor for the night among the karst formations. Dinner is served on board.
Arrive in Hanoi late in the afternoon, join a half-day city tour to discover charming and historic capital city of Vietnam. Hanoi is a unique city with more than 1000-year of rich culture and fascinating history. The tree-lined boulevards, French colonial architecture, peaceful lakes and oriental temples. The city tour includes a visit to the Temple of Literature, Hoan Kiem Lake and a walking tour of the Old Quarter.
This morning after breakfast, depart from your hotel to Noi Bai Airport for your Hue bound flight. Upon arrival in Hue, you will be welcomed by your guide and vehicle to start your Hue discovery tour at the Imperial Citadel where the Nguyen Dynasty ruled between 1802 and 1945. The ancient citadel reflects the pomp and ceremony of the dynastic rulers as well as the scars of many years of turmoil, both ancient and modern (the Royal Citadel was badly damaged in the latter stages of the war) but retains a sense of grace and majesty even today.
From here take a cyclo through dai noi 'Old City' to Tinh Tam Lake where the Emperors used to come to relax; full of lotus flowers in summer there are many local style coffee shops around the lake where university students come to study.
Continue to visit Thien Mu (Celestial Lady) Pagoda overlooking the Perfume River. Constructed in 1601, the 21-meter tall tower is the centerpiece of the pagoda and represents seven reincarnations of Buddha. In the grounds of the pagoda is the Austin car made famous in 1963, when a resident monk drove the vehicle to what was then Saigon to protest against the southern regime, the photo of his self immortalization was captured and is one of the most well known images of the war.
In the afternoon see the tomb of the former emperor Minh Mang located in a tranquil setting of gardens and ponds.
Journey on to Khai Dinh's Tomb which is traditional Vietnamese in design with a European touch making it unique from the other tombs in Hue.
End the day with a visit to the city's vibrant Dong Ba Market to see the abundance of fresh produce.
Leave Hue for Hoi An, a major Asian trading port in the 17th and 18th centuries whose architecture and relaxed lifestyle has changed little over the years. The scenic route passes through the wonderfully photogenic fishing village of Lang Co before climbing over the Pass of Ocean Clouds. Drive through Danang and visit the Cham Museum, which contains the finest collection of Cham sculptures in the world. In the afternoon take a walking tour of the ancient town centre to visit the former merchants' homes, the 400 year-old Japanese Covered Bridge and the colourful market.
Free at leisure. As a suggestion head down to Hoi An's Cua Dai Beach with its stunning stretch of long white sands, crystal clear waters and island views.
Pick up from hotel in Hoi An and transfer to the starting point of the bicycle ride. From here ride a bicycle to a local farm in Tra Que Village (depending on the location of your hotel you may be able to cycle directly). Take a trip around the vegetable garden and join the farmers in preparing the land and fertilising it with seaweed. Continue gardening activities such as raking, sowing, watering greens, picking greens etc. After farming activities you will be shown how to prepare tam huu, a local delicacy before sitting down for a home cooked meal including banh xeo a speciality savoury pancake wrapped in rice paper before transferring by vehicle back to your hotel.
Transfer to Danang Airport after breakfast for the short flight to dynamic Ho Chi Minh City, still called Saigon by the locals.
On arrival take a tour of vibrant Ho Chi Minh City. Your program includes the Reunification Hall, formerly known as the Presidential Palace it was towards this modern building that North Vietnamese tanks seized on the morning of April 30 1975, as Saigon fell. This fascinating building is filled with history still fresh in the minds of many.
From there stroll (your vehicle will be available at all times) to the major sights of colonial Ho Chi Minh City: the Old Saigon Post Office, Dong Khoi Street (formerly Rue Catinat), Continental Hotel, Opera House and City Hall.
After this historical visit continue to the War Remnants Museum where exhibition halls display imagery of both the French and 'American' wars.
Continue to the Jade Emperor Pagoda located on the fringes of district 1. Dating from 1909 and built by Cantonese Buddhists this quiet oasis was designed using feng shui principals showcasing ornate statues and effigies. Following your tour head back to your hotel.
This morning is free at leisure for last minute shopping or sightseeing before transferring to the airport for the flight to Siem Reap.
Arrive in Siem Reap by the morning flight and transfer to hotel. Siem Reap is the base for exploring the fabled temples of Angkor, the ancient capital of the Khmer empire.
This afternoon, visit the ancient city of Angkor Thom. This is the last capital of the Great Khmer Empire under the reign of Jayavarman VII and the city is surrounded by an 8m high wall, drawing a perfect square. Enter through the ancient South Gate, an impressive stone gate carved with Elephants and four giant faces.
Embark on an interesting boat trip on the Tonlé Sap Lake, where you will have the opportunity to learn about life on the lake. Tonlé Sap is South East Asia's largest freshwater lake with its size varying greatly depending on the season, as it is swelling to about four times it size during the wet season. Board a local boat and visit Kampong Phluck, a village where you will see houses on stilts that are submerged when Tonlé Sap Lake extends. On the way, you will pass floating houses and impressive flooded forests, portraying life on the water.
Take a break by disembarking for a tasty picnic packed lunch served in a floating house and enjoy the views as the local community goes about its daily life (Note: Due to low water levels during the dry season, the boat trip is only possible from June to March. However an alternative floating village at Chong Kneas can be arranged instead).
Return to Siem Reap for some time at leisure during the hottest time of the day.
Later today, hop on a local 'remok' (similar to the Thai 'tuk tuk') that will take you to a special sightseeing tour of the famous Angkor Wat. Built during the reign of King Suryavarman II in the early 12th century, Angkor Wat is constructed following the model of the temple mountain symbolizing Mount Meru, the home of the gods. Inside the temple, the walls are covered with stone carvings and bas-reliefs depicting Hindu mythology and the wars Suryavarman II fought during his reign. Angkor Wat is well known for the more than 2,000 Apsara dancers decorating the temple. Construction is thought to have taken around thirty years of intensive labor. Today, Angkor Wat is figured on Cambodia's national flag as the temple symbolizes the soul of the Khmer people. You will be there during sunset time, when Angkor Wat is less visited and the Apsaras will shine in the most beautiful light.
Today, explore the temples of the Small Circuit. The most illustrious of these is Ta Prohm, built in the mid 12th to early 13th centuries. Ta Prohm is unique in that it has been left largely as it was found: overgrown by jungle trees and vines, with many parts of the temple crumbling to the ground. This makes the 'Tomb Raider Temple' one of the most picturesque and memorable of the Angkor temples. Your visit will also include Banteay Kdei, a Buddhist monastery from the late 12th Century, and Srah Srang, also known as the "pool of ablutions".
Enjoy some time at leisure until it is time for your transfer to the airport for your departure flight.
All airfares, taxes and conditions are subject to change without prior notice.
Italian speaking guide is only available in Cambodia.
French speaking guide is not available in Vietnam.


text:
SSE Airtricity League Premier Division
Kelly scores and Rogers sets record as diligent Dundalk FC go top of the league table
Bohemians 0 Dundalk FC 2
Caoimhín Reilly, at Dalymount Park
Dundalk FC's Georgie Kelly is congratulated by his team-mates following Friday night's goal against Bohemians at Dalymount Park. (Pic: Sportsfile)
Bohemians 0-2 Dundalk FC
Dundalk FC are top of the SSE Airtricity League Premier Division table for the first time in the Vinny Perth era following tonight's victory over Bohemians at Dalymount Park.
In stretching their unbeaten run in Phibsborough to seven years, the Lilywhites shaded an entertaining, if scrappy affair which saw the popular Georgie Kelly strike for the contest's opening goal midway through the first half.
The striker - in for the suspended Patrick Hoban - finished superbly on 22 minutes, controlling a loose ball in the penalty area, swivelling in almost the same movement, and driving beneath Bohs 'keeper James Talbot - who was excellent on the night, and later saved a penalty from Chris Shields.
That came after Michael Duffy, who was integral to the move that resulted in the breakthrough, had been upended, but the midfielder was a strange choice of taker and his miss may well have been rued had Seán Hoare not risen to nod in a decisive second goal as full-time approached.
But Kelly's role in the victory was especially noteworthy. As the 22-year-old darted away in celebration, he was justifiably mobbed by team-mates, which alluded to the significance of the goal at a venue which is traditionally so difficult to win at. Yet it could also be a turning point for the Donegal man in his Dundalk career.
Chances have been sparse for him since his arrival from UCD - where he was the First Division's most deadly marksman - last summer, yet he's a proven goalscorer and his finish on Friday was typical of an able striker.
Patrick Hoban is undoubtedly Perth's preferred option in a Dundalk team that has built its success on a system that includes just the one frontman, and it's impossible to deny that the Galwegian - now the club's vice-captain - is the domestic division's most feared No.9. His goal record means that he just has to be the regular fixture, but it could well be that Dundalk possess the league's two best forwards.
Prior to a dominant Dundalk finish, Bohs, as one would expect with the scoreline as it was, built a head of steam. The Lilywhites had Kelly and Seán Murray in the team, players who hadn't played much football in the weeks and games prior and it was as much to do with fatigue setting in that Keith Long's men wrestled a foothold as anything else.
The hosts had chances to level, Gary Rogers - making his 544th League of Ireland career appearance, which is a record for a 'keeper - having to pull off a number of impressive stops, but once Hoare doubled the advantage the outcome was never in doubt.
Although, even during their spell camped in the Dundalk half, Bohs' testing of the opposing rear-guard was largely harmless, Brian Gartland and Hoare fulfiling their primary chores competently.
Indeed, Dundalk could have won by more and had they done so, it would hardly have been cause for flatter.
It was convincing, just like the Lilywhites of old. Top of the table, just….
Bohemians: James Talbot; Derek Pender (Andy Lyons 52), James Finnerty, Aaron Barry, Darragh Leahy; Keith Buckley, Conor Levingstone; Danny Grant (Luke Wade-Slater 75), Danny Mandriou, Kevin Devaney (Keith Ward 60); Dinny Corcoran
Subs not used: Seán Bohan (gk), Robbie McCourt, Michael Barket, Ryan Swan
Dundalk FC: Gary Rogers; Seán Gannon, Brian Gartland, Seán Hoare, Dean Jarvis; Chris Shields, Patrick McEleney; Daniel Kelly (Cameron Dummigan 88), Seán Murray (John Mountney 73), Michael Duffy; Georgie Kelly
Subs not used: Aaron McCarey (gk), Daniel Cleary, Dane Massey, Lido Lotefa
Referee: Ben Connolly (Dublin)

redpajama_set_name: RedPajamaCommonCrawl


The huge leak of HSBC bank accounts by whistle-blower Hervè Falciani has so far led to the prosecution of only one person in the UK. This is out of 1,000 HSBC clients in the UK suspected of committing tax evasion.
Britain's main opposition Labour Party stridently called for prime minister David Cameron's Conservative-led government to "explain" how much it knew about HSBC's Swiss banking operations helping Britons evade tax and called the Treasury a light touch.
The public is pretty annoyed too. According to a YouGov survey for t he Times Red Box, 62% of respondents wanted the UK chancellor to answer questions over Britons' hiding cash away from the taxman by using HSBC's Swiss subsidiary.
However, during a visit to London's Tate Gallery in London to talk about Britain's economy, the UK chancellor squashed any chance of the government getting directly involved with the HSBC scandal.
"I don't think it would be right and actually, when you pause to think about it, I think most people would agree [that] I don't think it would be right for a chancellor of the exchequer to direct prosecutions against individuals or individual companies," said George Osborne. "We resourced HMRC accordingly and as a result prosecutions are up fivefold."
Falciani handed over 100,000 HSBC client accounts to French authorities in 2008. In total, the accounts are worth £78 billion in assets.
France has managed to recover £188 million in taxes and fines so far, while Spain clawed back £220 million. Since 2010, Britain has regained only £135 million from the Falciani data leaks, and only one person has been prosecuted.
Meanwhile, police raided HSBC's Switzerland office in Geneva on Wednesday.
Switzerland's prosecution office in Geneva confirmed it was investigating "HSBC Private Bank (Suisse) SA and persons unknown for suspected aggravated money laundering."
An HSBC representative told Business Insider: "We have cooperated continuously with the Swiss authorities since first becoming aware of the data theft in 2008 and we continue to cooperate."


Adenipekun, Dr.Clementina Oyinkansola , Ipeaiyeda, Dr Ayodele R , Egbewale , Samson O. .
Biodegradation of Polycyclic Aromatic Hydrocarbons (PAHs) in spent and fresh cutting fluids polluted soils by a white-rot fungus Pleurotus ostreatus (Jacq.)Fr.Kumm.
In this study, the ability of  Pleurotus ostreatus in the degradation of Polycyclic Aromatic Hydrocarbons (PAHs) in soils contaminated with spent(SCF) and fresh cutting fluids (FCF) was investigated.A known weight of soil was contaminated with varying concentrations(10, 20,30 %) of  SCF and FCF was inoculated with P. ostreatus, incubated at 28 ± 2 â�°C for 2 months and analyzed in triplicates for 16  priority PAHs.The samples were analyzed using AP gas chromatogram model 6890 powered with HP chemstation Rev A. 09.01 (1206) software. Before inoculation (0 month), PAHs in the cutting fluids were mainly composed of 2 to 6 fused benzene rings. After 2 months of incubation, there were significant reductions in concentrations of PAHs in both SCF and FCF soils. The remaining total PAHs in  SCF soil  were 56.98%, 58.15% , 65.89%   and  1.56%, 1.32%, 51.01%  for FCF soil at 10 , 20  and 30 % respectively .The overall PAHs degradation of 98.44 %, 98.68%,48.99 % were obtained for FCF soils and 43.02 %, 41.85 % and 34.11 % for 10,20 and 30% SCF soils respectively. Also, among the individual PAHs, Benzo (a) pyrene in FCF soil contaminated soil had the highest PAHs reduction of 99.77% and 99.78% at 10 and 20% contamination. Conversely, highest PAHs reduction was observed in Benzo (g,h,i) perylene of SCF contaminated soil with 90.51%, 94.13% ,74.05% at 10, 20 and 30% concentrations .Thus, P. ostreatus is suitable as a potent agent for biodegradation of PAHs in contaminated soils. ACKNOWLEDGEMENTS. The authors wish acknowledge  the support of the University of Ibadan, Ibadan, Nigeria  Senate Research Grant SRG/FS/2010/19A for funding this Research.


MILAN – Brazil's domestic coffee consumption rose by 4.8% over the course of the 2018 commercial year from a downward revised figure for 2017, to reach the equivalent of 21 million 60-kg bags of green coffee, the industry group Abic said on Wednesday.
Abic cut its former estimate for 2017 of 22 million bags by 1.95 million bags due to a revision in its methodology, which excluded data from informal sale points such as on-farm shops and street markets.
"It was a number full of uncertainties," said Abic's executive director Nathan Herszkowicz, justifying the change in the way the group compiles its estimates.
According to Abic, per capita coffee consumption in Brazil reached 6.02 kg of green coffee equivalent in 2018, up from 5.81 kg in previous year.
Coffee consumption is expected to grow at a rate of 3.5% per year through 2021.


text:
'use strict';

var pkg = require('../package.json');
var fs = require('fs');
var mkdirp = require('mkdirp');
var sass = require('node-sass');
var includePaths = require('../index');

var file = 'seed-framework';

// Default .css compile
sass.render({
  file: './scss/pack/'+file+'/__index.scss',
  includePaths: includePaths
}, function(error, result) {
  if (error) {
    console.error(error);
    return process.exit(1);
  }
  else {
    mkdirp('./dist');
    fs.writeFile('./dist/'+file+'.css', result.css, function(err){
      if(!err){
        return console.log(file+'.css created.');
      }
    })
  }
});

// Minified .css compile
sass.render({
  file: './scss/pack/'+file+'/__index.scss',
  includePaths: includePaths,
  outputStyle: 'compressed'
}, function(error, result) {
  if (error) {
    console.error(error);
    return process.exit(1);
  }
  else {
    mkdirp('./dist');
    fs.writeFile('./dist/'+file+'.min.css', result.css, function(err){
      if(!err){
        return console.log(file+'.min.css created.');
      }
    })
  }
});


The idea of someday becoming a business owner formed in the back of Donald Keeney's mind when he was a college student.
Donald Keeney opened the doors to Forest City Footwear in February 2009. With his sales skills and attention to detail, business has improved continually since then.
Donald majored in marketing at Southeast Missouri State University in the early 1990s. When not attending business classes or studying, Donald spent much of his time working at Howard's Athletic Goods in downtown Cape Girardeau. While waiting on customers, he developed sales and management skills during his two years at the store. Howard's specialized in sporting equipment, shoes and apparel. During this time, Donald also gained experience with customizing apparel for patrons.
After graduation, Donald worked a few years for Champs Sporting Goods in Cape Girardeau, St. Louis and Joplin. Next he joined the management team at Voss Enterprises, which based him in south central Missouri near his hometown of St. James. Later he spent nine years — primarily in fundraising — with the Missouri University of Science & Technology in Rolla.
It was during his years at Missouri S&T that Donald began communicating with Tom Cox, the owner of a shoe store in St. James.
Darlene "Cookie" Humphrey is a part-time employee (and mother-in-law of Donald). Cookie, who previously owned and operated a dress shop for seven years, filled in for the Keeneys when they took their first family vacation since opening the store.
Tom Cox filed that thought. A few years later he told Donald he was ready to retire and sell the store. After discussing the pros and cons of business ownership with his wife, Melissa, Donald was ready to begin the process of transitioning from an employee to an employer.
Donald soon made appointments with his accountant and a loan officer at Phelps County Bank to start the business-buying process. Both had recommended he talk with Mick Gilliam, a Missouri Small Business Technology & Development Center specialist based at the MU Extension Center in Phelps County, before embarking on a quest for financial backing.
After about a dozen revisions on that plan, Donald was ready to apply for a business loan. The loan was approved, and after some negotiation with Tom Cox, Donald purchased the store.
He and Melissa formed Forest City Footwear, LLC in November 2008. After extensive remodeling and inventory updating, they opened the doors of the store in February 2009.
Forest City Footwear's business has continually increased month-over-month annually during each of its nearly three years in operation. The family-owned store specializes in lines not readily available at the big box stores — such as SAS, Keen, Merrell, Brooks, and Clarks. The Keeneys understand the importance of catering to comfort-seeking customers and happily take special orders for unusual sizes. It is a specialty niche they strive to fill in the always competitive shoe business.
Forest City Footwear also offers such services as shoe repair and a dry cleaning shuttle for local residents. However, the leading revenue generator for the store has been the addition of a screen printing and promotional products service. Customized products include embroidery, screen printing and heat transfer goods. Their clientele include local schools, community organizations, businesses, churches and individuals.
Melissa Keeney double checks the count on an inventory of tee shirts ready for delivery to a customer.
"We can print on virtually any surface that's printable," says Melissa. She regularly assists Donald in the artwork for the customized products, when she's not working full time as a middle school teacher in St. James.
With business constantly growing, Donald has hired an experienced full-time screen printing technician, John Neal, who previously worked for a large commercial screen printer in Bourbon, Mo.
Donald says this billboard posted along eastbound I-44 has attracted additional business to the store.
"I enjoy the shop because every day is different," says Donald, who left his development job about a year ago to devote full time to his business. "Small business ownership is all about building relationships with people in the community. Everywhere I go in town, I'm the owner of the shoe and screen printing store. It's not unheard of for me to pick up one or two orders while waiting in the checkout line at the grocery store.


There is also a little 'honour' prize for the number one in our Top3, we would like to invite you to be our GDT for Challenge 492 - 22nd of November.
Congratulations, please Contact us to let us know if you are happy to join us for Challenge 492, so we can send you the details for this challenge.
Contact us to claim your prize as we do not have time to chase after our winners due to our other commitments. Please put 'Winner Challenge 485' in your e-mail subject and mention which prize you have won in the body of your e-mail.
Bedankt dat ik ben gekozen als derde in de top 3!. Groeten van Sylvia.
Congrats to Aimeslee Winans and Nish !
Thank you for choosing me in top 3. But I am able to see only name and not my creation in the top 3.
strange, it's definitely there when I look. Also, you are first in the Top3 and therefore invited to join us for challenge 492.
I have refreshed the page twice, but I find Pam Sebring's card instead of my card under my name.


text:
Spitamenes (Old Persian Spitamana; Greek Σπιταμένης; 370 BC – 328 BC) was a Sogdian warlord and the leader of the uprising in Sogdiana and Bactria against Alexander the Great, King of Macedon, in 329 BC. He has been credited by modern historians as one of the most tenacious adversaries of Alexander.

Biography
Spitamenes was an ally of Bessus. In 329, Bessus stirred a revolt in the eastern satrapies, and the same year his allies began to be uncertain about supporting him. Alexander went with his army to Drapsaca, outflanked Bessus and sent him fleeing. Bessus was then removed from power by Spitamenes, and Ptolemy was sent to catch him.

While Alexander was founding the new city of Alexandria Eschate on the Jaxartes river, news came that Spitamenes had roused Sogdiana against him and was besieging the Macedonian garrison in Markanda. Too occupied at that time to personally lead an army against Spitamenes, Alexander sent an army under the command of Pharnuches which was promptly annihilated with a loss of no less than 2000 infantry and 300 cavalry.

The uprising now posed a direct threat to his army, and Alexander moved personally to relieve Markanda, only to learn that Spitamenes had left Sogdiana and was attacking Bactria, from where he was repulsed with great difficulty by the satrap of Bactria, Artabazos II (328 BC).

The decisive point came in December 328 BC when Spitamenes was defeated by Alexander's general Coenus at the Battle of Gabai. Spitamenes was killed by some treacherous nomadic tribes' leaders and they sent his head to Alexander, suing for peace.

Spitamenes had a daughter, Apama, who was married to one of Alexander's most important generals and an eventual Diadochi, Seleucus I Nicator (February 324 BC). The couple had a son, Antiochus I Soter, a future ruler of the Seleucid Empire. Several towns were named Apamea in her honour.

In fiction
Spitamenes is a character in Steven Pressfield's novel The Afghan Campaign.

References

Sources

Opponents of Alexander the Great
370 BC births
328 BC deaths
4th-century BC Iranian people
Sogdian rulers